@rayu-dev/rayu-cli 1.2.16 → 1.2.17

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/rayu.js +335 -404
  2. package/package.json +1 -1
package/dist/rayu.js CHANGED
@@ -147971,7 +147971,7 @@ var init_auth = __esm(() => {
147971
147971
 
147972
147972
  // src/utils/userAgent.ts
147973
147973
  function getRayuUserAgent() {
147974
- return `rayu/${"1.2.16"}`;
147974
+ return `rayu/${"1.2.17"}`;
147975
147975
  }
147976
147976
  var getClaudeCodeUserAgent;
147977
147977
  var init_userAgent = __esm(() => {
@@ -147997,7 +147997,7 @@ function getUserAgent() {
147997
147997
  const clientApp = process.env.RAYU_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.RAYU_AGENT_SDK_CLIENT_APP}` : "";
147998
147998
  const workload = getWorkload();
147999
147999
  const workloadSuffix = workload ? `, workload/${workload}` : "";
148000
- return `rayu/${"1.2.16"} (${"external"}, ${process.env.RAYU_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
148000
+ return `rayu/${"1.2.17"} (${"external"}, ${process.env.RAYU_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
148001
148001
  }
148002
148002
  function getMCPUserAgent() {
148003
148003
  const parts = [];
@@ -148011,7 +148011,7 @@ function getMCPUserAgent() {
148011
148011
  parts.push(`client-app/${process.env.RAYU_AGENT_SDK_CLIENT_APP}`);
148012
148012
  }
148013
148013
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
148014
- return `rayu/${"1.2.16"}${suffix}`;
148014
+ return `rayu/${"1.2.17"}${suffix}`;
148015
148015
  }
148016
148016
  function getWebFetchUserAgent() {
148017
148017
  return `Rayu-User (${getRayuUserAgent()})`;
@@ -148134,7 +148134,7 @@ var init_user = __esm(() => {
148134
148134
  deviceId,
148135
148135
  sessionId: getSessionId(),
148136
148136
  email: getEmail(),
148137
- appVersion: "1.2.16",
148137
+ appVersion: "1.2.17",
148138
148138
  platform: getHostPlatformForAnalytics(),
148139
148139
  organizationUuid,
148140
148140
  accountUuid,
@@ -181204,7 +181204,7 @@ var init_metadata = __esm(() => {
181204
181204
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
181205
181205
  WHITESPACE_REGEX = /\s+/;
181206
181206
  getVersionBase = memoize_default(() => {
181207
- const match = "1.2.16".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
181207
+ const match = "1.2.17".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
181208
181208
  return match ? match[0] : undefined;
181209
181209
  });
181210
181210
  buildEnvContext = memoize_default(async () => {
@@ -181243,7 +181243,7 @@ var init_metadata = __esm(() => {
181243
181243
  },
181244
181244
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
181245
181245
  isRayuAction: isEnvTruthy(process.env.RAYU_ACTION),
181246
- version: "1.2.16",
181246
+ version: "1.2.17",
181247
181247
  versionBase: getVersionBase(),
181248
181248
  buildTime: "",
181249
181249
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
@@ -181857,7 +181857,7 @@ function initialize1PEventLogging() {
181857
181857
  const platform2 = getPlatform();
181858
181858
  const attributes = {
181859
181859
  [import_semantic_conventions.ATTR_SERVICE_NAME]: "rayu",
181860
- [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.2.16"
181860
+ [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.2.17"
181861
181861
  };
181862
181862
  if (platform2 === "wsl") {
181863
181863
  const wslVersion = getWslVersion();
@@ -181884,7 +181884,7 @@ function initialize1PEventLogging() {
181884
181884
  })
181885
181885
  ]
181886
181886
  });
181887
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("io.rayu.events", "1.2.16");
181887
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("io.rayu.events", "1.2.17");
181888
181888
  }
181889
181889
  async function reinitialize1PEventLoggingIfConfigChanged() {
181890
181890
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -217800,7 +217800,7 @@ function getAttributionHeader(fingerprint) {
217800
217800
  if (!isAttributionHeaderEnabled()) {
217801
217801
  return "";
217802
217802
  }
217803
- const version2 = `${"1.2.16"}.${fingerprint}`;
217803
+ const version2 = `${"1.2.17"}.${fingerprint}`;
217804
217804
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
217805
217805
  const cch = "";
217806
217806
  const workload = getWorkload();
@@ -301888,7 +301888,7 @@ function getTelemetryAttributes() {
301888
301888
  attributes["session.id"] = sessionId;
301889
301889
  }
301890
301890
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
301891
- attributes["app.version"] = "1.2.16";
301891
+ attributes["app.version"] = "1.2.17";
301892
301892
  }
301893
301893
  const oauthAccount = getOauthAccountInfo();
301894
301894
  if (oauthAccount) {
@@ -412274,7 +412274,7 @@ function getInstallationEnv() {
412274
412274
  return;
412275
412275
  }
412276
412276
  function getClaudeCodeVersion() {
412277
- return "1.2.16";
412277
+ return "1.2.17";
412278
412278
  }
412279
412279
  async function getInstalledVSCodeExtensionVersion(command) {
412280
412280
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -417512,7 +417512,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
417512
417512
  const client4 = new Client({
417513
417513
  name: "claude-code",
417514
417514
  title: "RAYU",
417515
- version: "1.2.16",
417515
+ version: "1.2.17",
417516
417516
  description: "Anthropic's agentic coding tool",
417517
417517
  websiteUrl: PRODUCT_URL
417518
417518
  }, {
@@ -417829,7 +417829,7 @@ var init_client7 = __esm(() => {
417829
417829
  const client4 = new Client({
417830
417830
  name: "claude-code",
417831
417831
  title: "RAYU",
417832
- version: "1.2.16",
417832
+ version: "1.2.17",
417833
417833
  description: "Anthropic's agentic coding tool",
417834
417834
  websiteUrl: PRODUCT_URL
417835
417835
  }, {
@@ -432615,7 +432615,7 @@ function computeFingerprint(messageText, version2) {
432615
432615
  }
432616
432616
  function computeFingerprintFromMessages(messages) {
432617
432617
  const firstMessageText = extractFirstMessageText(messages);
432618
- return computeFingerprint(firstMessageText, "1.2.16");
432618
+ return computeFingerprint(firstMessageText, "1.2.17");
432619
432619
  }
432620
432620
  var FINGERPRINT_SALT = "59cf53e54c78";
432621
432621
  var init_fingerprint = () => {};
@@ -432657,7 +432657,7 @@ async function sideQuery(opts) {
432657
432657
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
432658
432658
  }
432659
432659
  const messageText = extractFirstUserMessageText(messages);
432660
- const fingerprint = computeFingerprint(messageText, "1.2.16");
432660
+ const fingerprint = computeFingerprint(messageText, "1.2.17");
432661
432661
  const attributionHeader = getAttributionHeader(fingerprint);
432662
432662
  const systemBlocks = [
432663
432663
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -449069,7 +449069,7 @@ function printResumeHint() {
449069
449069
  }
449070
449070
  writeSync2(1, source_default.dim(`
449071
449071
  Resume this session with:
449072
- claude --resume ${resumeArg}
449072
+ rayu --resume ${resumeArg}
449073
449073
  `));
449074
449074
  resumeHintPrinted = true;
449075
449075
  } catch {}
@@ -487378,7 +487378,7 @@ var init_models5 = __esm(() => {
487378
487378
  NVIDIA_GENAI_HOST = process.env.NVIDIA_GENAI_HOST || "https://ai.api.nvidia.com/v1/genai";
487379
487379
  DEFAULT_VIDEO_MODEL = process.env.NVIDIA_VIDEO_MODEL || "nvidia/cosmos-predict1-5b";
487380
487380
  DEFAULT_IMAGE2VIDEO_MODEL = process.env.NVIDIA_IMAGE2VIDEO_MODEL || "nvidia/cosmos-predict1-5b";
487381
- DEFAULT_VERTEX_VIDEO_MODEL = process.env.VERTEX_VIDEO_MODEL || "veo-3.1-generate-preview";
487381
+ DEFAULT_VERTEX_VIDEO_MODEL = process.env.VERTEX_VIDEO_MODEL || "veo-3.1-generate-001";
487382
487382
  VIDEO_MODELS = {
487383
487383
  "nvidia/cosmos-predict1-5b": {
487384
487384
  id: "nvidia/cosmos-predict1-5b",
@@ -487432,15 +487432,29 @@ var init_models5 = __esm(() => {
487432
487432
  estimatedSeconds: 90,
487433
487433
  buildBody: falKlingImage2VideoBody
487434
487434
  },
487435
- "veo-3.1-generate-preview": {
487436
- id: "veo-3.1-generate-preview",
487435
+ "veo-3.1-generate-001": {
487436
+ id: "veo-3.1-generate-001",
487437
487437
  backend: "vertex",
487438
487438
  capability: "text2video",
487439
487439
  estimatedSeconds: 120,
487440
487440
  buildBody: veoBody
487441
487441
  },
487442
- "veo-3.1-fast-generate-preview": {
487443
- id: "veo-3.1-fast-generate-preview",
487442
+ "veo-3.1-fast-generate-001": {
487443
+ id: "veo-3.1-fast-generate-001",
487444
+ backend: "vertex",
487445
+ capability: "text2video",
487446
+ estimatedSeconds: 90,
487447
+ buildBody: veoBody
487448
+ },
487449
+ "veo-3.0-generate-001": {
487450
+ id: "veo-3.0-generate-001",
487451
+ backend: "vertex",
487452
+ capability: "text2video",
487453
+ estimatedSeconds: 120,
487454
+ buildBody: veoBody
487455
+ },
487456
+ "veo-3.0-fast-generate-001": {
487457
+ id: "veo-3.0-fast-generate-001",
487444
487458
  backend: "vertex",
487445
487459
  capability: "text2video",
487446
487460
  estimatedSeconds: 90,
@@ -487724,12 +487738,18 @@ function extractVideoBase64(op) {
487724
487738
  function baseModelUrl(region, project, model) {
487725
487739
  return `https://${region}-aiplatform.googleapis.com/v1/projects/${project}` + `/locations/${region}/publishers/google/models/${model}`;
487726
487740
  }
487741
+ function veoApiError(stage, status, text2) {
487742
+ if (status === 404) {
487743
+ return new Error(`Vertex Veo ${stage} 404: model not found. Preview Veo models (…-generate-preview) ` + "were retired by Google on 2026-04-02 — use a GA model like veo-3.1-generate-001 " + "(or veo-3.1-fast-generate-001). Also ensure your region serves Veo (us-central1). " + `Original: ${text2.slice(0, 240)}`);
487744
+ }
487745
+ return new Error(`Vertex Veo ${stage} error ${status}: ${text2.slice(0, 300)}`);
487746
+ }
487727
487747
  async function generateVertexVideo(opts) {
487728
487748
  const { project, region } = await resolveVertexProjectRegion();
487729
487749
  if (!project) {
487730
487750
  throw new Error("No GCP project configured for Vertex Veo. Run /connect → Gemini / Vertex AI, " + "or set GOOGLE_CLOUD_PROJECT.");
487731
487751
  }
487732
- const vidRegion = !region || region === "global" ? "us-central1" : region;
487752
+ const vidRegion = region && VEO_REGIONS.has(region) ? region : DEFAULT_VEO_REGION;
487733
487753
  const model = opts.modelId && /^veo-/i.test(opts.modelId) ? opts.modelId : DEFAULT_VERTEX_VIDEO_MODEL;
487734
487754
  const token = await getVertexAccessToken();
487735
487755
  const url3 = baseModelUrl(vidRegion, project, model);
@@ -487744,7 +487764,7 @@ async function generateVertexVideo(opts) {
487744
487764
  });
487745
487765
  if (!startRes.ok) {
487746
487766
  const text2 = await startRes.text().catch(() => "");
487747
- throw new Error(`Vertex Veo API error ${startRes.status}: ${text2.slice(0, 300)}`);
487767
+ throw veoApiError("API", startRes.status, text2);
487748
487768
  }
487749
487769
  const op = await startRes.json();
487750
487770
  if (!op.name) {
@@ -487767,7 +487787,7 @@ async function generateVertexVideo(opts) {
487767
487787
  });
487768
487788
  if (!pollRes.ok) {
487769
487789
  const text2 = await pollRes.text().catch(() => "");
487770
- throw new Error(`Vertex Veo poll error ${pollRes.status}: ${text2.slice(0, 300)}`);
487790
+ throw veoApiError("poll", pollRes.status, text2);
487771
487791
  }
487772
487792
  const status = await pollRes.json();
487773
487793
  if (status.error?.message) {
@@ -487783,10 +487803,12 @@ async function generateVertexVideo(opts) {
487783
487803
  }
487784
487804
  throw new Error("Vertex Veo generation timed out.");
487785
487805
  }
487806
+ var VEO_REGIONS, DEFAULT_VEO_REGION = "us-central1";
487786
487807
  var init_vertexVideoClient = __esm(() => {
487787
487808
  init_vertexAuth();
487788
487809
  init_providers();
487789
487810
  init_models5();
487811
+ VEO_REGIONS = new Set(["us-central1", "us-east4", "europe-west4"]);
487790
487812
  });
487791
487813
 
487792
487814
  // src/tools/VideoGenTool/constants.ts
@@ -527417,7 +527439,7 @@ function Feedback({
527417
527439
  platform: env4.platform,
527418
527440
  gitRepo: envInfo.isGit,
527419
527441
  terminal: env4.terminal,
527420
- version: "1.2.16",
527442
+ version: "1.2.17",
527421
527443
  transcript: normalizeMessagesForAPI(messages),
527422
527444
  errors: sanitizedErrors,
527423
527445
  lastApiRequest: getLastAPIRequest(),
@@ -527609,7 +527631,7 @@ function Feedback({
527609
527631
  ", ",
527610
527632
  env4.terminal,
527611
527633
  ", v",
527612
- "1.2.16"
527634
+ "1.2.17"
527613
527635
  ]
527614
527636
  }, undefined, true, undefined, this)
527615
527637
  ]
@@ -527715,7 +527737,7 @@ ${sanitizedDescription}
527715
527737
  ` + `**Environment Info**
527716
527738
  ` + `- Platform: ${env4.platform}
527717
527739
  ` + `- Terminal: ${env4.terminal}
527718
- ` + `- Version: ${"1.2.16"}
527740
+ ` + `- Version: ${"1.2.17"}
527719
527741
  ` + `- Feedback ID: ${feedbackId}
527720
527742
  ` + `
527721
527743
  **Errors**
@@ -530554,9 +530576,9 @@ async function assertMinVersion() {
530554
530576
  if (false) {}
530555
530577
  try {
530556
530578
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
530557
- if (versionConfig.minVersion && lt("1.2.16", versionConfig.minVersion)) {
530579
+ if (versionConfig.minVersion && lt("1.2.17", versionConfig.minVersion)) {
530558
530580
  console.error(`
530559
- It looks like your version of RAYU (${"1.2.16"}) needs an update.
530581
+ It looks like your version of RAYU (${"1.2.17"}) needs an update.
530560
530582
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
530561
530583
 
530562
530584
  To update, please run:
@@ -530755,7 +530777,7 @@ async function installGlobalPackage(specificVersion) {
530755
530777
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
530756
530778
  logEvent("tengu_auto_updater_lock_contention", {
530757
530779
  pid: process.pid,
530758
- currentVersion: "1.2.16"
530780
+ currentVersion: "1.2.17"
530759
530781
  });
530760
530782
  return "in_progress";
530761
530783
  }
@@ -530764,7 +530786,7 @@ async function installGlobalPackage(specificVersion) {
530764
530786
  if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
530765
530787
  logError2(new Error("Windows NPM detected in WSL environment"));
530766
530788
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
530767
- currentVersion: "1.2.16"
530789
+ currentVersion: "1.2.17"
530768
530790
  });
530769
530791
  console.error(`
530770
530792
  Error: Windows NPM detected in WSL
@@ -531299,7 +531321,7 @@ function detectLinuxGlobPatternWarnings() {
531299
531321
  }
531300
531322
  async function getDoctorDiagnostic() {
531301
531323
  const installationType = await getCurrentInstallationType();
531302
- const version2 = typeof MACRO !== "undefined" ? "1.2.16" : "unknown";
531324
+ const version2 = typeof MACRO !== "undefined" ? "1.2.17" : "unknown";
531303
531325
  const installationPath = await getInstallationPath();
531304
531326
  const invokedBinary = getInvokedBinary();
531305
531327
  const multipleInstallations = await detectMultipleInstallations();
@@ -532094,8 +532116,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
532094
532116
  const maxVersion = await getMaxVersion();
532095
532117
  if (maxVersion && gt(version2, maxVersion)) {
532096
532118
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
532097
- if (gte("1.2.16", maxVersion)) {
532098
- logForDebugging(`Native installer: current version ${"1.2.16"} is already at or above maxVersion ${maxVersion}, skipping update`);
532119
+ if (gte("1.2.17", maxVersion)) {
532120
+ logForDebugging(`Native installer: current version ${"1.2.17"} is already at or above maxVersion ${maxVersion}, skipping update`);
532099
532121
  logEvent("tengu_native_update_skipped_max_version", {
532100
532122
  latency_ms: Date.now() - startTime,
532101
532123
  max_version: maxVersion,
@@ -532106,7 +532128,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
532106
532128
  version2 = maxVersion;
532107
532129
  }
532108
532130
  }
532109
- if (!forceReinstall && version2 === "1.2.16" && await versionIsAvailable(version2) && await isPossibleClaudeBinary(executablePath)) {
532131
+ if (!forceReinstall && version2 === "1.2.17" && await versionIsAvailable(version2) && await isPossibleClaudeBinary(executablePath)) {
532110
532132
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
532111
532133
  logEvent("tengu_native_update_complete", {
532112
532134
  latency_ms: Date.now() - startTime,
@@ -533302,7 +533324,7 @@ function buildPrimarySection() {
533302
533324
  }, undefined, false, undefined, this);
533303
533325
  return [{
533304
533326
  label: "Version",
533305
- value: "1.2.16"
533327
+ value: "1.2.17"
533306
533328
  }, {
533307
533329
  label: "Session name",
533308
533330
  value: nameValue
@@ -536993,7 +537015,7 @@ function Config({
536993
537015
  }
536994
537016
  }, undefined, false, undefined, this)
536995
537017
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime170.jsxDEV(ChannelDowngradeDialog, {
536996
- currentVersion: "1.2.16",
537018
+ currentVersion: "1.2.17",
536997
537019
  onChoice: (choice) => {
536998
537020
  setShowSubmenu(null);
536999
537021
  setTabsHidden(false);
@@ -537005,7 +537027,7 @@ function Config({
537005
537027
  autoUpdatesChannel: "stable"
537006
537028
  };
537007
537029
  if (choice === "stay") {
537008
- newSettings.minimumVersion = "1.2.16";
537030
+ newSettings.minimumVersion = "1.2.17";
537009
537031
  }
537010
537032
  updateSettingsForSource("userSettings", newSettings);
537011
537033
  setSettingsData((prev_27) => ({
@@ -545065,7 +545087,7 @@ function HelpV2(t0) {
545065
545087
  let t6;
545066
545088
  if ($3[31] !== tabs) {
545067
545089
  t6 = /* @__PURE__ */ jsx_dev_runtime197.jsxDEV(Tabs, {
545068
- title: `Rayu-CLI v${"1.2.16"}`,
545090
+ title: `Rayu-CLI v${"1.2.17"}`,
545069
545091
  color: "professionalBlue",
545070
545092
  defaultTab: "general",
545071
545093
  children: tabs
@@ -563665,214 +563687,6 @@ ${args ? "Additional user input: " + args : ""}
563665
563687
  });
563666
563688
  });
563667
563689
 
563668
- // src/utils/releaseNotes.ts
563669
- import { mkdir as mkdir35, readFile as readFile46, writeFile as writeFile40 } from "fs/promises";
563670
- import { dirname as dirname61, join as join134 } from "path";
563671
- function getChangelogCachePath() {
563672
- return join134(getRayuConfigHomeDir(), "cache", "changelog.md");
563673
- }
563674
- async function migrateChangelogFromConfig() {
563675
- const config5 = getGlobalConfig();
563676
- if (!config5.cachedChangelog) {
563677
- return;
563678
- }
563679
- const cachePath = getChangelogCachePath();
563680
- try {
563681
- await mkdir35(dirname61(cachePath), { recursive: true });
563682
- await writeFile40(cachePath, config5.cachedChangelog, {
563683
- encoding: "utf-8",
563684
- flag: "wx"
563685
- });
563686
- } catch {}
563687
- saveGlobalConfig(({ cachedChangelog: _2, ...rest }) => rest);
563688
- }
563689
- async function fetchAndStoreChangelog() {
563690
- if (getIsNonInteractiveSession()) {
563691
- return;
563692
- }
563693
- if (isEssentialTrafficOnly()) {
563694
- return;
563695
- }
563696
- const response = await axios_default.get(RAW_CHANGELOG_URL);
563697
- if (response.status === 200) {
563698
- const changelogContent = response.data;
563699
- if (changelogContent === changelogMemoryCache) {
563700
- return;
563701
- }
563702
- const cachePath = getChangelogCachePath();
563703
- await mkdir35(dirname61(cachePath), { recursive: true });
563704
- await writeFile40(cachePath, changelogContent, { encoding: "utf-8" });
563705
- changelogMemoryCache = changelogContent;
563706
- const changelogLastFetched = Date.now();
563707
- saveGlobalConfig((current) => ({
563708
- ...current,
563709
- changelogLastFetched
563710
- }));
563711
- }
563712
- }
563713
- async function getStoredChangelog() {
563714
- if (changelogMemoryCache !== null) {
563715
- return changelogMemoryCache;
563716
- }
563717
- const cachePath = getChangelogCachePath();
563718
- try {
563719
- const content = await readFile46(cachePath, "utf-8");
563720
- changelogMemoryCache = content;
563721
- return content;
563722
- } catch {
563723
- changelogMemoryCache = "";
563724
- return "";
563725
- }
563726
- }
563727
- function getStoredChangelogFromMemory() {
563728
- return changelogMemoryCache ?? "";
563729
- }
563730
- function parseChangelog(content) {
563731
- try {
563732
- if (!content)
563733
- return {};
563734
- const releaseNotes = {};
563735
- const sections = content.split(/^## /gm).slice(1);
563736
- for (const section of sections) {
563737
- const lines2 = section.trim().split(`
563738
- `);
563739
- if (lines2.length === 0)
563740
- continue;
563741
- const versionLine = lines2[0];
563742
- if (!versionLine)
563743
- continue;
563744
- const version2 = versionLine.split(" - ")[0]?.trim() || "";
563745
- if (!version2)
563746
- continue;
563747
- const notes = lines2.slice(1).filter((line) => line.trim().startsWith("- ")).map((line) => line.trim().substring(2).trim()).filter(Boolean);
563748
- if (notes.length > 0) {
563749
- releaseNotes[version2] = notes;
563750
- }
563751
- }
563752
- return releaseNotes;
563753
- } catch (error54) {
563754
- logError2(toError(error54));
563755
- return {};
563756
- }
563757
- }
563758
- function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent = getStoredChangelogFromMemory()) {
563759
- try {
563760
- const releaseNotes = parseChangelog(changelogContent);
563761
- const baseCurrentVersion = import_semver8.coerce(currentVersion);
563762
- const basePreviousVersion = previousVersion ? import_semver8.coerce(previousVersion) : null;
563763
- if (!basePreviousVersion || baseCurrentVersion && gt(baseCurrentVersion.version, basePreviousVersion.version)) {
563764
- return Object.entries(releaseNotes).filter(([version2]) => !basePreviousVersion || gt(version2, basePreviousVersion.version)).sort(([versionA], [versionB]) => gt(versionA, versionB) ? -1 : 1).flatMap(([_2, notes]) => notes).filter(Boolean).slice(0, MAX_RELEASE_NOTES_SHOWN);
563765
- }
563766
- } catch (error54) {
563767
- logError2(toError(error54));
563768
- return [];
563769
- }
563770
- return [];
563771
- }
563772
- function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
563773
- try {
563774
- const releaseNotes = parseChangelog(changelogContent);
563775
- const sortedVersions = Object.keys(releaseNotes).sort((a2, b3) => gt(a2, b3) ? 1 : -1);
563776
- return sortedVersions.map((version2) => {
563777
- const versionNotes = releaseNotes[version2];
563778
- if (!versionNotes || versionNotes.length === 0)
563779
- return null;
563780
- const notes = versionNotes.filter(Boolean);
563781
- if (notes.length === 0)
563782
- return null;
563783
- return [version2, notes];
563784
- }).filter((item) => item !== null);
563785
- } catch (error54) {
563786
- logError2(toError(error54));
563787
- return [];
563788
- }
563789
- }
563790
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.2.16") {
563791
- if (false) {}
563792
- const cachedChangelog = await getStoredChangelog();
563793
- if (lastSeenVersion !== currentVersion || !cachedChangelog) {
563794
- fetchAndStoreChangelog().catch((error54) => logError2(toError(error54)));
563795
- }
563796
- const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion, cachedChangelog);
563797
- const hasReleaseNotes = releaseNotes.length > 0;
563798
- return {
563799
- hasReleaseNotes,
563800
- releaseNotes
563801
- };
563802
- }
563803
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.2.16") {
563804
- if (false) {}
563805
- const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion);
563806
- return {
563807
- hasReleaseNotes: releaseNotes.length > 0,
563808
- releaseNotes
563809
- };
563810
- }
563811
- var import_semver8, MAX_RELEASE_NOTES_SHOWN = 5, CHANGELOG_URL = "https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md", RAW_CHANGELOG_URL = "https://raw.githubusercontent.com/anthropics/claude-code/refs/heads/main/CHANGELOG.md", changelogMemoryCache = null;
563812
- var init_releaseNotes = __esm(() => {
563813
- init_axios2();
563814
- init_state();
563815
- init_config2();
563816
- init_envUtils();
563817
- init_errors();
563818
- init_log2();
563819
- import_semver8 = __toESM(require_semver3(), 1);
563820
- });
563821
-
563822
- // src/commands/release-notes/release-notes.ts
563823
- var exports_release_notes = {};
563824
- __export(exports_release_notes, {
563825
- call: () => call22
563826
- });
563827
- function formatReleaseNotes(notes) {
563828
- return notes.map(([version2, notes2]) => {
563829
- const header = `Version ${version2}:`;
563830
- const bulletPoints = notes2.map((note) => `· ${note}`).join(`
563831
- `);
563832
- return `${header}
563833
- ${bulletPoints}`;
563834
- }).join(`
563835
-
563836
- `);
563837
- }
563838
- async function call22() {
563839
- let freshNotes = [];
563840
- try {
563841
- const timeoutPromise = new Promise((_2, reject2) => {
563842
- setTimeout((rej) => rej(new Error("Timeout")), 500, reject2);
563843
- });
563844
- await Promise.race([fetchAndStoreChangelog(), timeoutPromise]);
563845
- freshNotes = getAllReleaseNotes(await getStoredChangelog());
563846
- } catch {}
563847
- if (freshNotes.length > 0) {
563848
- return { type: "text", value: formatReleaseNotes(freshNotes) };
563849
- }
563850
- const cachedNotes = getAllReleaseNotes(await getStoredChangelog());
563851
- if (cachedNotes.length > 0) {
563852
- return { type: "text", value: formatReleaseNotes(cachedNotes) };
563853
- }
563854
- return {
563855
- type: "text",
563856
- value: `See the full changelog at: ${CHANGELOG_URL}`
563857
- };
563858
- }
563859
- var init_release_notes = __esm(() => {
563860
- init_releaseNotes();
563861
- });
563862
-
563863
- // src/commands/release-notes/index.ts
563864
- var releaseNotes, release_notes_default;
563865
- var init_release_notes2 = __esm(() => {
563866
- releaseNotes = {
563867
- description: "View release notes",
563868
- name: "release-notes",
563869
- type: "local",
563870
- supportsNonInteractive: true,
563871
- load: () => Promise.resolve().then(() => (init_release_notes(), exports_release_notes))
563872
- };
563873
- release_notes_default = releaseNotes;
563874
- });
563875
-
563876
563690
  // src/bridge/bridgeConfig.ts
563877
563691
  function getBridgeTokenOverride() {
563878
563692
  return;
@@ -564349,9 +564163,9 @@ var init_createSession = __esm(() => {
564349
564163
  // src/commands/rename/rename.ts
564350
564164
  var exports_rename = {};
564351
564165
  __export(exports_rename, {
564352
- call: () => call23
564166
+ call: () => call22
564353
564167
  });
564354
- async function call23(onDone, context2, args) {
564168
+ async function call22(onDone, context2, args) {
564355
564169
  if (isTeammate()) {
564356
564170
  onDone("Cannot rename: This session is a swarm teammate. Teammate names are set by the team leader.", { display: "system" });
564357
564171
  return null;
@@ -564416,9 +564230,9 @@ var init_rename2 = __esm(() => {
564416
564230
  // src/commands/review-detial/review-detial.ts
564417
564231
  var exports_review_detial = {};
564418
564232
  __export(exports_review_detial, {
564419
- call: () => call24
564233
+ call: () => call23
564420
564234
  });
564421
- var call24 = async (args, context2) => {
564235
+ var call23 = async (args, context2) => {
564422
564236
  return {
564423
564237
  type: "text",
564424
564238
  value: getPendingFileChangeReviewDetail(context2, args)
@@ -564954,6 +564768,142 @@ var init_transcriptSearch = __esm(() => {
564954
564768
  searchTextCache = new WeakMap;
564955
564769
  });
564956
564770
 
564771
+ // src/utils/releaseNotes.ts
564772
+ import { mkdir as mkdir35, readFile as readFile46, writeFile as writeFile40 } from "fs/promises";
564773
+ import { dirname as dirname61, join as join134 } from "path";
564774
+ function getChangelogCachePath() {
564775
+ return join134(getRayuConfigHomeDir(), "cache", "changelog.md");
564776
+ }
564777
+ async function migrateChangelogFromConfig() {
564778
+ const config5 = getGlobalConfig();
564779
+ if (!config5.cachedChangelog) {
564780
+ return;
564781
+ }
564782
+ const cachePath = getChangelogCachePath();
564783
+ try {
564784
+ await mkdir35(dirname61(cachePath), { recursive: true });
564785
+ await writeFile40(cachePath, config5.cachedChangelog, {
564786
+ encoding: "utf-8",
564787
+ flag: "wx"
564788
+ });
564789
+ } catch {}
564790
+ saveGlobalConfig(({ cachedChangelog: _2, ...rest }) => rest);
564791
+ }
564792
+ async function fetchAndStoreChangelog() {
564793
+ if (getIsNonInteractiveSession()) {
564794
+ return;
564795
+ }
564796
+ if (isEssentialTrafficOnly()) {
564797
+ return;
564798
+ }
564799
+ const response = await axios_default.get(RAW_CHANGELOG_URL);
564800
+ if (response.status === 200) {
564801
+ const changelogContent = response.data;
564802
+ if (changelogContent === changelogMemoryCache) {
564803
+ return;
564804
+ }
564805
+ const cachePath = getChangelogCachePath();
564806
+ await mkdir35(dirname61(cachePath), { recursive: true });
564807
+ await writeFile40(cachePath, changelogContent, { encoding: "utf-8" });
564808
+ changelogMemoryCache = changelogContent;
564809
+ const changelogLastFetched = Date.now();
564810
+ saveGlobalConfig((current) => ({
564811
+ ...current,
564812
+ changelogLastFetched
564813
+ }));
564814
+ }
564815
+ }
564816
+ async function getStoredChangelog() {
564817
+ if (changelogMemoryCache !== null) {
564818
+ return changelogMemoryCache;
564819
+ }
564820
+ const cachePath = getChangelogCachePath();
564821
+ try {
564822
+ const content = await readFile46(cachePath, "utf-8");
564823
+ changelogMemoryCache = content;
564824
+ return content;
564825
+ } catch {
564826
+ changelogMemoryCache = "";
564827
+ return "";
564828
+ }
564829
+ }
564830
+ function getStoredChangelogFromMemory() {
564831
+ return changelogMemoryCache ?? "";
564832
+ }
564833
+ function parseChangelog(content) {
564834
+ try {
564835
+ if (!content)
564836
+ return {};
564837
+ const releaseNotes = {};
564838
+ const sections = content.split(/^## /gm).slice(1);
564839
+ for (const section of sections) {
564840
+ const lines2 = section.trim().split(`
564841
+ `);
564842
+ if (lines2.length === 0)
564843
+ continue;
564844
+ const versionLine = lines2[0];
564845
+ if (!versionLine)
564846
+ continue;
564847
+ const version2 = versionLine.split(" - ")[0]?.trim() || "";
564848
+ if (!version2)
564849
+ continue;
564850
+ const notes = lines2.slice(1).filter((line) => line.trim().startsWith("- ")).map((line) => line.trim().substring(2).trim()).filter(Boolean);
564851
+ if (notes.length > 0) {
564852
+ releaseNotes[version2] = notes;
564853
+ }
564854
+ }
564855
+ return releaseNotes;
564856
+ } catch (error54) {
564857
+ logError2(toError(error54));
564858
+ return {};
564859
+ }
564860
+ }
564861
+ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent = getStoredChangelogFromMemory()) {
564862
+ try {
564863
+ const releaseNotes = parseChangelog(changelogContent);
564864
+ const baseCurrentVersion = import_semver8.coerce(currentVersion);
564865
+ const basePreviousVersion = previousVersion ? import_semver8.coerce(previousVersion) : null;
564866
+ if (!basePreviousVersion || baseCurrentVersion && gt(baseCurrentVersion.version, basePreviousVersion.version)) {
564867
+ return Object.entries(releaseNotes).filter(([version2]) => !basePreviousVersion || gt(version2, basePreviousVersion.version)).sort(([versionA], [versionB]) => gt(versionA, versionB) ? -1 : 1).flatMap(([_2, notes]) => notes).filter(Boolean).slice(0, MAX_RELEASE_NOTES_SHOWN);
564868
+ }
564869
+ } catch (error54) {
564870
+ logError2(toError(error54));
564871
+ return [];
564872
+ }
564873
+ return [];
564874
+ }
564875
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.2.17") {
564876
+ if (false) {}
564877
+ const cachedChangelog = await getStoredChangelog();
564878
+ if (lastSeenVersion !== currentVersion || !cachedChangelog) {
564879
+ fetchAndStoreChangelog().catch((error54) => logError2(toError(error54)));
564880
+ }
564881
+ const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion, cachedChangelog);
564882
+ const hasReleaseNotes = releaseNotes.length > 0;
564883
+ return {
564884
+ hasReleaseNotes,
564885
+ releaseNotes
564886
+ };
564887
+ }
564888
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.2.17") {
564889
+ if (false) {}
564890
+ const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion);
564891
+ return {
564892
+ hasReleaseNotes: releaseNotes.length > 0,
564893
+ releaseNotes
564894
+ };
564895
+ }
564896
+ var import_semver8, MAX_RELEASE_NOTES_SHOWN = 5, RAW_CHANGELOG_URL = "https://raw.githubusercontent.com/anthropics/claude-code/refs/heads/main/CHANGELOG.md", changelogMemoryCache = null;
564897
+ var init_releaseNotes = __esm(() => {
564898
+ init_axios2();
564899
+ init_state();
564900
+ init_config2();
564901
+ init_envUtils();
564902
+ init_errors();
564903
+ init_log2();
564904
+ import_semver8 = __toESM(require_semver3(), 1);
564905
+ });
564906
+
564957
564907
  // src/utils/logoV2Utils.ts
564958
564908
  function getLayoutMode(columns) {
564959
564909
  if (columns >= 70)
@@ -565063,7 +565013,7 @@ function getRecentActivitySync() {
565063
565013
  return cachedActivity;
565064
565014
  }
565065
565015
  function getLogoDisplayData() {
565066
- const version2 = process.env.DEMO_VERSION ?? "1.2.16";
565016
+ const version2 = process.env.DEMO_VERSION ?? "1.2.17";
565067
565017
  const serverUrl = getDirectConnectServerUrl();
565068
565018
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
565069
565019
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -565553,8 +565503,8 @@ function createRecentActivityFeed(activities) {
565553
565503
  emptyMessage: "No recent activity"
565554
565504
  };
565555
565505
  }
565556
- function createWhatsNewFeed(releaseNotes2) {
565557
- const lines2 = releaseNotes2.map((note) => {
565506
+ function createWhatsNewFeed(releaseNotes) {
565507
+ const lines2 = releaseNotes.map((note) => {
565558
565508
  if (false) {}
565559
565509
  return {
565560
565510
  text: note
@@ -565564,7 +565514,7 @@ function createWhatsNewFeed(releaseNotes2) {
565564
565514
  return {
565565
565515
  title: "What's new",
565566
565516
  lines: lines2,
565567
- footer: lines2.length > 0 ? "/release-notes for more" : undefined,
565517
+ footer: undefined,
565568
565518
  emptyMessage
565569
565519
  };
565570
565520
  }
@@ -566344,7 +566294,7 @@ function LogoV2() {
566344
566294
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
566345
566295
  t2 = () => {
566346
566296
  const currentConfig = getGlobalConfig();
566347
- if (currentConfig.lastReleaseNotesSeen === "1.2.16") {
566297
+ if (currentConfig.lastReleaseNotesSeen === "1.2.17") {
566348
566298
  return;
566349
566299
  }
566350
566300
  saveGlobalConfig(_temp327);
@@ -567020,12 +566970,12 @@ function LogoV2() {
567020
566970
  return t41;
567021
566971
  }
567022
566972
  function _temp327(current) {
567023
- if (current.lastReleaseNotesSeen === "1.2.16") {
566973
+ if (current.lastReleaseNotesSeen === "1.2.17") {
567024
566974
  return current;
567025
566975
  }
567026
566976
  return {
567027
566977
  ...current,
567028
- lastReleaseNotesSeen: "1.2.16"
566978
+ lastReleaseNotesSeen: "1.2.17"
567029
566979
  };
567030
566980
  }
567031
566981
  function _temp241(s_0) {
@@ -572750,7 +572700,7 @@ function checkCrossProjectResume(log3, showAllProjects, worktreePaths) {
572750
572700
  }
572751
572701
  if (true) {
572752
572702
  const sessionId2 = getSessionIdFromLog(log3);
572753
- const command7 = `cd ${quote([log3.projectPath])} && claude --resume ${sessionId2}`;
572703
+ const command7 = `cd ${quote([log3.projectPath])} && rayu --resume ${sessionId2}`;
572754
572704
  return {
572755
572705
  isCrossProject: true,
572756
572706
  isSameRepoWorktree: false,
@@ -572767,7 +572717,7 @@ function checkCrossProjectResume(log3, showAllProjects, worktreePaths) {
572767
572717
  };
572768
572718
  }
572769
572719
  const sessionId = getSessionIdFromLog(log3);
572770
- const command6 = `cd ${quote([log3.projectPath])} && claude --resume ${sessionId}`;
572720
+ const command6 = `cd ${quote([log3.projectPath])} && rayu --resume ${sessionId}`;
572771
572721
  return {
572772
572722
  isCrossProject: true,
572773
572723
  isSameRepoWorktree: false,
@@ -572785,7 +572735,7 @@ var init_crossProjectResume = __esm(() => {
572785
572735
  var exports_resume = {};
572786
572736
  __export(exports_resume, {
572787
572737
  filterResumableSessions: () => filterResumableSessions,
572788
- call: () => call25
572738
+ call: () => call24
572789
572739
  });
572790
572740
  function resumeHelpMessage(result) {
572791
572741
  switch (result.resultType) {
@@ -572970,7 +572920,7 @@ function ResumeCommand({
572970
572920
  function filterResumableSessions(logs, currentSessionId) {
572971
572921
  return logs.filter((l3) => !l3.isSidechain && getSessionIdFromLog(l3) !== currentSessionId);
572972
572922
  }
572973
- var import_compiler_runtime194, React80, jsx_dev_runtime251, call25 = async (onDone, context2, args) => {
572923
+ var import_compiler_runtime194, React80, jsx_dev_runtime251, call24 = async (onDone, context2, args) => {
572974
572924
  const onResume = async (sessionId, log3, entrypoint) => {
572975
572925
  try {
572976
572926
  await context2.resume?.(sessionId, log3, entrypoint);
@@ -573433,7 +573383,7 @@ var init_UltrareviewOverageDialog = __esm(() => {
573433
573383
  // src/commands/review/ultrareviewCommand.tsx
573434
573384
  var exports_ultrareviewCommand = {};
573435
573385
  __export(exports_ultrareviewCommand, {
573436
- call: () => call26
573386
+ call: () => call25
573437
573387
  });
573438
573388
  function contentBlocksToString(blocks) {
573439
573389
  return blocks.map((b3) => b3.type === "text" ? b3.text : "").filter(Boolean).join(`
@@ -573453,7 +573403,7 @@ async function launchAndDone(args, context2, onDone, billingNote, signal) {
573453
573403
  });
573454
573404
  }
573455
573405
  }
573456
- var jsx_dev_runtime253, call26 = async (onDone, context2, args) => {
573406
+ var jsx_dev_runtime253, call25 = async (onDone, context2, args) => {
573457
573407
  const gate = await checkOverageGate();
573458
573408
  if (gate.kind === "not-enabled") {
573459
573409
  onDone("Free ultrareviews used. Enable Extra Usage at https://claude.ai/settings/billing to continue.", {
@@ -573618,7 +573568,7 @@ var init_image_video = __esm(() => {
573618
573568
  // src/commands/session/session.tsx
573619
573569
  var exports_session = {};
573620
573570
  __export(exports_session, {
573621
- call: () => call27
573571
+ call: () => call26
573622
573572
  });
573623
573573
  function SessionInfo(t0) {
573624
573574
  const $3 = import_compiler_runtime196.c(19);
@@ -573791,7 +573741,7 @@ function _temp247(e2) {
573791
573741
  function _temp118(s2) {
573792
573742
  return s2.remoteSessionUrl;
573793
573743
  }
573794
- var import_compiler_runtime196, import_react153, jsx_dev_runtime254, call27 = async (onDone) => {
573744
+ var import_compiler_runtime196, import_react153, jsx_dev_runtime254, call26 = async (onDone) => {
573795
573745
  return /* @__PURE__ */ jsx_dev_runtime254.jsxDEV(SessionInfo, {
573796
573746
  onDone
573797
573747
  }, undefined, false, undefined, this);
@@ -574143,9 +574093,9 @@ var init_SkillsMenu = __esm(() => {
574143
574093
  // src/commands/skills/skills.tsx
574144
574094
  var exports_skills2 = {};
574145
574095
  __export(exports_skills2, {
574146
- call: () => call28
574096
+ call: () => call27
574147
574097
  });
574148
- async function call28(onDone, context2) {
574098
+ async function call27(onDone, context2) {
574149
574099
  return /* @__PURE__ */ jsx_dev_runtime256.jsxDEV(SkillsMenu, {
574150
574100
  onExit: onDone,
574151
574101
  commands: context2.options.commands
@@ -574172,9 +574122,9 @@ var init_skills5 = __esm(() => {
574172
574122
  // src/commands/status/status.tsx
574173
574123
  var exports_status = {};
574174
574124
  __export(exports_status, {
574175
- call: () => call29
574125
+ call: () => call28
574176
574126
  });
574177
- async function call29(onDone, context2) {
574127
+ async function call28(onDone, context2) {
574178
574128
  return /* @__PURE__ */ jsx_dev_runtime257.jsxDEV(Settings, {
574179
574129
  onClose: onDone,
574180
574130
  context: context2,
@@ -574785,7 +574735,7 @@ ${reasons}`,
574785
574735
  } : prev);
574786
574736
  }
574787
574737
  }
574788
- var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://code.claude.com/docs/en/claude-code-on-the-web", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call30 = async (onDone, context2, args) => {
574738
+ var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://code.claude.com/docs/en/claude-code-on-the-web", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call29 = async (onDone, context2, args) => {
574789
574739
  const blurb = args.trim();
574790
574740
  if (!blurb) {
574791
574741
  const msg = await launchUltraplan2({
@@ -574848,7 +574798,7 @@ var init_ultraplan = __esm(() => {
574848
574798
  argumentHint: "<prompt>",
574849
574799
  isEnabled: () => false,
574850
574800
  load: () => Promise.resolve({
574851
- call: call30
574801
+ call: call29
574852
574802
  })
574853
574803
  };
574854
574804
  });
@@ -579619,9 +579569,9 @@ var init_BackgroundTasksDialog = __esm(() => {
579619
579569
  // src/commands/tasks/tasks.tsx
579620
579570
  var exports_tasks = {};
579621
579571
  __export(exports_tasks, {
579622
- call: () => call31
579572
+ call: () => call30
579623
579573
  });
579624
- async function call31(onDone, context2) {
579574
+ async function call30(onDone, context2) {
579625
579575
  return /* @__PURE__ */ jsx_dev_runtime268.jsxDEV(BackgroundTasksDialog, {
579626
579576
  toolUseContext: context2,
579627
579577
  onDone
@@ -579912,9 +579862,9 @@ var init_terminalSetup2 = __esm(() => {
579912
579862
  // src/commands/undo/undo.ts
579913
579863
  var exports_undo = {};
579914
579864
  __export(exports_undo, {
579915
- call: () => call32
579865
+ call: () => call31
579916
579866
  });
579917
- var call32 = async (args, context2) => {
579867
+ var call31 = async (args, context2) => {
579918
579868
  return {
579919
579869
  type: "text",
579920
579870
  value: await undoLatestPendingFileChange(context2, args)
@@ -579941,7 +579891,7 @@ var init_undo3 = __esm(() => {
579941
579891
  // src/commands/theme/theme.tsx
579942
579892
  var exports_theme = {};
579943
579893
  __export(exports_theme, {
579944
- call: () => call33
579894
+ call: () => call32
579945
579895
  });
579946
579896
  function ThemePickerCommand(t0) {
579947
579897
  const $3 = import_compiler_runtime207.c(8);
@@ -579991,7 +579941,7 @@ function ThemePickerCommand(t0) {
579991
579941
  }
579992
579942
  return t3;
579993
579943
  }
579994
- var import_compiler_runtime207, jsx_dev_runtime269, call33 = async (onDone, _context) => {
579944
+ var import_compiler_runtime207, jsx_dev_runtime269, call32 = async (onDone, _context) => {
579995
579945
  return /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemePickerCommand, {
579996
579946
  onDone
579997
579947
  }, undefined, false, undefined, this);
@@ -580019,9 +579969,9 @@ var init_theme4 = __esm(() => {
580019
579969
  // src/commands/vim/vim.ts
580020
579970
  var exports_vim = {};
580021
579971
  __export(exports_vim, {
580022
- call: () => call34
579972
+ call: () => call33
580023
579973
  });
580024
- var call34 = async () => {
579974
+ var call33 = async () => {
580025
579975
  const config5 = getGlobalConfig();
580026
579976
  let currentMode = config5.editorMode || "normal";
580027
579977
  if (currentMode === "emacs") {
@@ -580063,7 +580013,7 @@ var init_vim2 = __esm(() => {
580063
580013
  var exports_thinkback = {};
580064
580014
  __export(exports_thinkback, {
580065
580015
  playAnimation: () => playAnimation,
580066
- call: () => call35
580016
+ call: () => call34
580067
580017
  });
580068
580018
  import { readFile as readFile47 } from "fs/promises";
580069
580019
  import { join as join135 } from "path";
@@ -580600,7 +580550,7 @@ function ThinkbackFlow(t0) {
580600
580550
  }
580601
580551
  return t8;
580602
580552
  }
580603
- async function call35(onDone) {
580553
+ async function call34(onDone) {
580604
580554
  return /* @__PURE__ */ jsx_dev_runtime270.jsxDEV(ThinkbackFlow, {
580605
580555
  onDone
580606
580556
  }, undefined, false, undefined, this);
@@ -580648,14 +580598,14 @@ var init_thinkback2 = __esm(() => {
580648
580598
  // src/commands/thinkback-play/thinkback-play.ts
580649
580599
  var exports_thinkback_play = {};
580650
580600
  __export(exports_thinkback_play, {
580651
- call: () => call36
580601
+ call: () => call35
580652
580602
  });
580653
580603
  import { join as join136 } from "path";
580654
580604
  function getPluginId2() {
580655
580605
  const marketplaceName = OFFICIAL_MARKETPLACE_NAME;
580656
580606
  return `thinkback@${marketplaceName}`;
580657
580607
  }
580658
- async function call36() {
580608
+ async function call35() {
580659
580609
  const v2Data = loadInstalledPluginsV2();
580660
580610
  const pluginId = getPluginId2();
580661
580611
  const installations = v2Data.plugins[pluginId];
@@ -583151,9 +583101,9 @@ var init_PermissionRuleList = __esm(() => {
583151
583101
  // src/commands/permissions/permissions.tsx
583152
583102
  var exports_permissions2 = {};
583153
583103
  __export(exports_permissions2, {
583154
- call: () => call37
583104
+ call: () => call36
583155
583105
  });
583156
- var jsx_dev_runtime278, call37 = async (onDone, context2) => {
583106
+ var jsx_dev_runtime278, call36 = async (onDone, context2) => {
583157
583107
  return /* @__PURE__ */ jsx_dev_runtime278.jsxDEV(PermissionRuleList, {
583158
583108
  onExit: onDone,
583159
583109
  onRetryDenials: (commands) => {
@@ -583183,7 +583133,7 @@ var init_permissions5 = __esm(() => {
583183
583133
  // src/commands/plan/plan.tsx
583184
583134
  var exports_plan = {};
583185
583135
  __export(exports_plan, {
583186
- call: () => call38
583136
+ call: () => call37
583187
583137
  });
583188
583138
  function PlanDisplay(t0) {
583189
583139
  const $3 = import_compiler_runtime216.c(11);
@@ -583271,7 +583221,7 @@ function PlanDisplay(t0) {
583271
583221
  }
583272
583222
  return t5;
583273
583223
  }
583274
- async function call38(onDone, context2, args) {
583224
+ async function call37(onDone, context2, args) {
583275
583225
  const {
583276
583226
  getAppState,
583277
583227
  setAppState
@@ -585109,9 +585059,9 @@ var init_HooksConfigMenu = __esm(() => {
585109
585059
  // src/commands/hooks/hooks.tsx
585110
585060
  var exports_hooks = {};
585111
585061
  __export(exports_hooks, {
585112
- call: () => call39
585062
+ call: () => call38
585113
585063
  });
585114
- var jsx_dev_runtime285, call39 = async (onDone, context2) => {
585064
+ var jsx_dev_runtime285, call38 = async (onDone, context2) => {
585115
585065
  logEvent("tengu_hooks_command", {});
585116
585066
  const appState = context2.getAppState();
585117
585067
  const permissionContext = appState.toolPermissionContext;
@@ -585144,10 +585094,10 @@ var init_hooks3 = __esm(() => {
585144
585094
  // src/commands/files/files.ts
585145
585095
  var exports_files4 = {};
585146
585096
  __export(exports_files4, {
585147
- call: () => call40
585097
+ call: () => call39
585148
585098
  });
585149
585099
  import { relative as relative31 } from "path";
585150
- async function call40(_args, context2) {
585100
+ async function call39(_args, context2) {
585151
585101
  const files2 = context2.readFileState ? cacheKeys(context2.readFileState) : [];
585152
585102
  if (files2.length === 0) {
585153
585103
  return { type: "text", value: "No files in context" };
@@ -585180,7 +585130,7 @@ var init_files8 = __esm(() => {
585180
585130
  var exports_branch = {};
585181
585131
  __export(exports_branch, {
585182
585132
  deriveFirstPrompt: () => deriveFirstPrompt,
585183
- call: () => call41
585133
+ call: () => call40
585184
585134
  });
585185
585135
  import { randomUUID as randomUUID33 } from "crypto";
585186
585136
  import { mkdir as mkdir36, readFile as readFile48, writeFile as writeFile41 } from "fs/promises";
@@ -585286,7 +585236,7 @@ async function getUniqueForkName(baseName) {
585286
585236
  }
585287
585237
  return `${baseName} (Branch ${nextNumber})`;
585288
585238
  }
585289
- async function call41(onDone, context2, args) {
585239
+ async function call40(onDone, context2, args) {
585290
585240
  const customTitle = args?.trim() || undefined;
585291
585241
  const originalSessionId = getSessionId();
585292
585242
  try {
@@ -591325,9 +591275,9 @@ var init_AgentsMenu = __esm(() => {
591325
591275
  // src/commands/agents/agents.tsx
591326
591276
  var exports_agents2 = {};
591327
591277
  __export(exports_agents2, {
591328
- call: () => call42
591278
+ call: () => call41
591329
591279
  });
591330
- async function call42(onDone, context2) {
591280
+ async function call41(onDone, context2) {
591331
591281
  const appState = context2.getAppState();
591332
591282
  const permissionContext = appState.toolPermissionContext;
591333
591283
  const tools = getTools(permissionContext);
@@ -591358,9 +591308,9 @@ var init_agents3 = __esm(() => {
591358
591308
  // src/commands/plugin/plugin.tsx
591359
591309
  var exports_plugin = {};
591360
591310
  __export(exports_plugin, {
591361
- call: () => call43
591311
+ call: () => call42
591362
591312
  });
591363
- async function call43(onDone, _context, args) {
591313
+ async function call42(onDone, _context, args) {
591364
591314
  return /* @__PURE__ */ jsx_dev_runtime311.jsxDEV(PluginSettings, {
591365
591315
  onComplete: onDone,
591366
591316
  args
@@ -591528,12 +591478,12 @@ var init_refresh = __esm(() => {
591528
591478
  // src/commands/reload-plugins/reload-plugins.ts
591529
591479
  var exports_reload_plugins = {};
591530
591480
  __export(exports_reload_plugins, {
591531
- call: () => call44
591481
+ call: () => call43
591532
591482
  });
591533
591483
  function n2(count4, noun) {
591534
591484
  return `${count4} ${plural(count4, noun)}`;
591535
591485
  }
591536
- var call44 = async (_args, context2) => {
591486
+ var call43 = async (_args, context2) => {
591537
591487
  if (false) {}
591538
591488
  const r2 = await refreshActivePlugins(context2.setAppState);
591539
591489
  const parts = [
@@ -591576,9 +591526,9 @@ var init_reload_plugins2 = __esm(() => {
591576
591526
  // src/commands/rewind/rewind.ts
591577
591527
  var exports_rewind = {};
591578
591528
  __export(exports_rewind, {
591579
- call: () => call45
591529
+ call: () => call44
591580
591530
  });
591581
- async function call45(_args, context2) {
591531
+ async function call44(_args, context2) {
591582
591532
  if (context2.openMessageSelector) {
591583
591533
  context2.openMessageSelector();
591584
591534
  }
@@ -591693,7 +591643,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
591693
591643
  smapsRollup,
591694
591644
  platform: process.platform,
591695
591645
  nodeVersion: process.version,
591696
- ccVersion: "1.2.16"
591646
+ ccVersion: "1.2.17"
591697
591647
  };
591698
591648
  }
591699
591649
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -591764,9 +591714,9 @@ var init_heapDumpService = __esm(() => {
591764
591714
  // src/commands/heapdump/heapdump.ts
591765
591715
  var exports_heapdump = {};
591766
591716
  __export(exports_heapdump, {
591767
- call: () => call46
591717
+ call: () => call45
591768
591718
  });
591769
- async function call46() {
591719
+ async function call45() {
591770
591720
  const result = await performHeapDump();
591771
591721
  if (!result.success) {
591772
591722
  return {
@@ -592079,7 +592029,7 @@ var USAGE = `/bridge-kick <subcommand>
592079
592029
  reconnect-session fail next POST /bridge/reconnect fails
592080
592030
  heartbeat <status> next heartbeat throws BridgeFatalError(status)
592081
592031
  reconnect call reconnectEnvironmentWithSession directly
592082
- status print bridge state`, call47 = async (args) => {
592032
+ status print bridge state`, call46 = async (args) => {
592083
592033
  const h3 = getBridgeDebugHandle();
592084
592034
  if (!h3) {
592085
592035
  return {
@@ -592212,16 +592162,16 @@ var init_bridge_kick = __esm(() => {
592212
592162
  description: "Inject bridge failure states for manual recovery testing",
592213
592163
  isEnabled: () => false,
592214
592164
  supportsNonInteractive: false,
592215
- load: () => Promise.resolve({ call: call47 })
592165
+ load: () => Promise.resolve({ call: call46 })
592216
592166
  };
592217
592167
  bridge_kick_default = bridgeKick;
592218
592168
  });
592219
592169
 
592220
592170
  // src/commands/version.ts
592221
- var call48 = async () => {
592171
+ var call47 = async () => {
592222
592172
  return {
592223
592173
  type: "text",
592224
- value: "1.2.16"
592174
+ value: "1.2.17"
592225
592175
  };
592226
592176
  }, version2, version_default;
592227
592177
  var init_version = __esm(() => {
@@ -592231,7 +592181,7 @@ var init_version = __esm(() => {
592231
592181
  description: "Print the version this session is running (not what autoupdate downloaded)",
592232
592182
  isEnabled: () => false,
592233
592183
  supportsNonInteractive: true,
592234
- load: () => Promise.resolve({ call: call48 })
592184
+ load: () => Promise.resolve({ call: call47 })
592235
592185
  };
592236
592186
  version_default = version2;
592237
592187
  });
@@ -593391,10 +593341,10 @@ var init_SandboxSettings = __esm(() => {
593391
593341
  // src/commands/sandbox-toggle/sandbox-toggle.tsx
593392
593342
  var exports_sandbox_toggle = {};
593393
593343
  __export(exports_sandbox_toggle, {
593394
- call: () => call49
593344
+ call: () => call48
593395
593345
  });
593396
593346
  import { relative as relative32 } from "path";
593397
- async function call49(onDone, _context, args) {
593347
+ async function call48(onDone, _context, args) {
593398
593348
  const settings = getSettings_DEPRECATED();
593399
593349
  const themeName = settings.theme || "light";
593400
593350
  const platform4 = getPlatform();
@@ -593501,9 +593451,9 @@ var init_sandbox_toggle2 = __esm(() => {
593501
593451
  // src/commands/stickers/stickers.ts
593502
593452
  var exports_stickers = {};
593503
593453
  __export(exports_stickers, {
593504
- call: () => call50
593454
+ call: () => call49
593505
593455
  });
593506
- async function call50() {
593456
+ async function call49() {
593507
593457
  const url4 = "https://www.stickermule.com/claudecode";
593508
593458
  const success2 = await openBrowser(url4);
593509
593459
  if (success2) {
@@ -593533,7 +593483,7 @@ var init_stickers2 = __esm(() => {
593533
593483
  });
593534
593484
 
593535
593485
  // src/commands/advisor.ts
593536
- var call51 = async (args, context2) => {
593486
+ var call50 = async (args, context2) => {
593537
593487
  const arg = args.trim().toLowerCase();
593538
593488
  const baseModel = parseUserSpecifiedModel(context2.getAppState().mainLoopModel ?? getDefaultMainLoopModelSetting());
593539
593489
  if (!arg) {
@@ -593619,7 +593569,7 @@ var init_advisor2 = __esm(() => {
593619
593569
  return !canUserConfigureAdvisor();
593620
593570
  },
593621
593571
  supportsNonInteractive: true,
593622
- load: () => Promise.resolve({ call: call51 })
593572
+ load: () => Promise.resolve({ call: call50 })
593623
593573
  };
593624
593574
  advisor_default = advisor;
593625
593575
  });
@@ -594033,12 +593983,12 @@ var init_ExitFlow = __esm(() => {
594033
593983
  // src/commands/exit/exit.tsx
594034
593984
  var exports_exit = {};
594035
593985
  __export(exports_exit, {
594036
- call: () => call52
593986
+ call: () => call51
594037
593987
  });
594038
593988
  function getRandomGoodbyeMessage2() {
594039
593989
  return sample_default(GOODBYE_MESSAGES2) ?? "Goodbye!";
594040
593990
  }
594041
- async function call52(onDone) {
593991
+ async function call51(onDone) {
594042
593992
  if (false) {}
594043
593993
  const showWorktree = getCurrentWorktreeSession() !== null;
594044
593994
  if (showWorktree) {
@@ -594332,7 +594282,7 @@ var exports_export = {};
594332
594282
  __export(exports_export, {
594333
594283
  sanitizeFilename: () => sanitizeFilename,
594334
594284
  extractFirstPrompt: () => extractFirstPrompt,
594335
- call: () => call53
594285
+ call: () => call52
594336
594286
  });
594337
594287
  import { join as join141 } from "path";
594338
594288
  function formatTimestamp(date6) {
@@ -594373,7 +594323,7 @@ async function exportWithReactRenderer(context2) {
594373
594323
  const tools = context2.options.tools || [];
594374
594324
  return renderMessagesToPlainText(context2.messages, tools);
594375
594325
  }
594376
- async function call53(onDone, context2, args) {
594326
+ async function call52(onDone, context2, args) {
594377
594327
  const content = await exportWithReactRenderer(context2);
594378
594328
  const filename = args.trim();
594379
594329
  if (filename) {
@@ -595400,7 +595350,7 @@ var init_SearchableModelPicker = __esm(() => {
595400
595350
  // src/commands/connect/connect.tsx
595401
595351
  var exports_connect = {};
595402
595352
  __export(exports_connect, {
595403
- call: () => call54
595353
+ call: () => call53
595404
595354
  });
595405
595355
  function ConnectFlow({ onDone }) {
595406
595356
  const [phase, setPhase] = React100.useState("setup");
@@ -595413,7 +595363,7 @@ function ConnectFlow({ onDone }) {
595413
595363
  onDone
595414
595364
  }, undefined, false, undefined, this);
595415
595365
  }
595416
- var React100, jsx_dev_runtime325, call54 = async (onDone, _context, _args) => {
595366
+ var React100, jsx_dev_runtime325, call53 = async (onDone, _context, _args) => {
595417
595367
  return /* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ConnectFlow, {
595418
595368
  onDone
595419
595369
  }, undefined, false, undefined, this);
@@ -595439,7 +595389,7 @@ var init_connect2 = __esm(() => {
595439
595389
  // src/commands/install-skill/install-skill.tsx
595440
595390
  var exports_install_skill = {};
595441
595391
  __export(exports_install_skill, {
595442
- call: () => call55
595392
+ call: () => call54
595443
595393
  });
595444
595394
  function InstallSkillFlow({
595445
595395
  source,
@@ -595534,7 +595484,7 @@ function InstallSkillFlow({
595534
595484
  ]
595535
595485
  }, undefined, true, undefined, this);
595536
595486
  }
595537
- var import_react180, jsx_dev_runtime326, call55 = async (onDone, _context, args) => {
595487
+ var import_react180, jsx_dev_runtime326, call54 = async (onDone, _context, args) => {
595538
595488
  const tokens = (args ?? "").trim().split(/\s+/).filter(Boolean);
595539
595489
  const overwrite = tokens.includes("--overwrite");
595540
595490
  const source = tokens.filter((t2) => t2 !== "--overwrite").join(" ").trim();
@@ -595585,7 +595535,7 @@ var init_immediateCommand = __esm(() => {
595585
595535
  // src/commands/model/model.tsx
595586
595536
  var exports_model2 = {};
595587
595537
  __export(exports_model2, {
595588
- call: () => call56
595538
+ call: () => call55
595589
595539
  });
595590
595540
  function ModelPickerWrapper(t0) {
595591
595541
  const $3 = import_compiler_runtime247.c(17);
@@ -595835,7 +595785,7 @@ function renderModelLabel(model) {
595835
595785
  const rendered = renderDefaultModelSetting(model ?? getDefaultMainLoopModelSetting());
595836
595786
  return model === null ? `${rendered} (default)` : rendered;
595837
595787
  }
595838
- var import_compiler_runtime247, React102, jsx_dev_runtime327, call56 = async (onDone, _context, args) => {
595788
+ var import_compiler_runtime247, React102, jsx_dev_runtime327, call55 = async (onDone, _context, args) => {
595839
595789
  args = args?.trim() || "";
595840
595790
  if (COMMON_INFO_ARGS.includes(args)) {
595841
595791
  logEvent("tengu_model_command_inline_help", {
@@ -595912,7 +595862,7 @@ var init_model3 = __esm(() => {
595912
595862
  // src/commands/model-subagent/command.tsx
595913
595863
  var exports_command = {};
595914
595864
  __export(exports_command, {
595915
- call: () => call57
595865
+ call: () => call56
595916
595866
  });
595917
595867
  function resolveAgentType(token) {
595918
595868
  const t2 = token.trim().toUpperCase();
@@ -595924,7 +595874,7 @@ function resolveAgentType(token) {
595924
595874
  const suffixed = SPECIALIST_AGENT_TYPES.find((a2) => a2.toUpperCase() === `${t2}-AGENT`);
595925
595875
  return suffixed;
595926
595876
  }
595927
- var jsx_dev_runtime328, COST_TIP = "Tip: subagents run frequently — a large model here costs more and is usually overkill for small subtasks. Prefer an instant/small model (e.g. Claude Opus 4.8 as a subagent is overkill).", SUBCOMMANDS, call57 = async (onDone, _context, args) => {
595877
+ var jsx_dev_runtime328, COST_TIP = "Tip: subagents run frequently — a large model here costs more and is usually overkill for small subtasks. Prefer an instant/small model (e.g. Claude Opus 4.8 as a subagent is overkill).", SUBCOMMANDS, call56 = async (onDone, _context, args) => {
595928
595878
  const tokens = (args ?? "").trim().split(/\s+/).filter(Boolean);
595929
595879
  let agentType;
595930
595880
  let sub = "";
@@ -595997,7 +595947,7 @@ var init_model_subagent = __esm(() => {
595997
595947
  // src/commands/model-image-generation/command.tsx
595998
595948
  var exports_command2 = {};
595999
595949
  __export(exports_command2, {
596000
- call: () => call58
595950
+ call: () => call57
596001
595951
  });
596002
595952
  function backendLabel(provider) {
596003
595953
  return provider === "vertex" ? "Vertex (Imagen)" : "NVIDIA";
@@ -596040,7 +595990,7 @@ function ImageModelPicker({
596040
595990
  ]
596041
595991
  }, undefined, true, undefined, this);
596042
595992
  }
596043
- var jsx_dev_runtime329, call58 = async (onDone) => {
595993
+ var jsx_dev_runtime329, call57 = async (onDone) => {
596044
595994
  return /* @__PURE__ */ jsx_dev_runtime329.jsxDEV(ImageModelPicker, {
596045
595995
  onDone
596046
595996
  }, undefined, false, undefined, this);
@@ -596071,7 +596021,7 @@ var init_model_image_generation = __esm(() => {
596071
596021
  // src/commands/model-video-generation/command.tsx
596072
596022
  var exports_command3 = {};
596073
596023
  __export(exports_command3, {
596074
- call: () => call59
596024
+ call: () => call58
596075
596025
  });
596076
596026
  function backendLabel2(backend) {
596077
596027
  if (backend === "vertex")
@@ -596118,7 +596068,7 @@ function VideoModelPicker({
596118
596068
  ]
596119
596069
  }, undefined, true, undefined, this);
596120
596070
  }
596121
- var jsx_dev_runtime330, call59 = async (onDone) => {
596071
+ var jsx_dev_runtime330, call58 = async (onDone) => {
596122
596072
  return /* @__PURE__ */ jsx_dev_runtime330.jsxDEV(VideoModelPicker, {
596123
596073
  onDone
596124
596074
  }, undefined, false, undefined, this);
@@ -596149,7 +596099,7 @@ var init_model_video_generation = __esm(() => {
596149
596099
  // src/commands/tag/tag.tsx
596150
596100
  var exports_tag = {};
596151
596101
  __export(exports_tag, {
596152
- call: () => call60
596102
+ call: () => call59
596153
596103
  });
596154
596104
  function ConfirmRemoveTag(t0) {
596155
596105
  const $3 = import_compiler_runtime248.c(11);
@@ -596373,7 +596323,7 @@ Examples:
596373
596323
  React103.useEffect(t1, t2);
596374
596324
  return null;
596375
596325
  }
596376
- async function call60(onDone, _context, args) {
596326
+ async function call59(onDone, _context, args) {
596377
596327
  args = args?.trim() || "";
596378
596328
  if (COMMON_INFO_ARGS.includes(args) || COMMON_HELP_ARGS.includes(args)) {
596379
596329
  return /* @__PURE__ */ jsx_dev_runtime331.jsxDEV(ShowHelp, {
@@ -596422,9 +596372,9 @@ var init_tag2 = __esm(() => {
596422
596372
  // src/commands/output-style/output-style.tsx
596423
596373
  var exports_output_style = {};
596424
596374
  __export(exports_output_style, {
596425
- call: () => call61
596375
+ call: () => call60
596426
596376
  });
596427
- async function call61(onDone) {
596377
+ async function call60(onDone) {
596428
596378
  onDone("/output-style has been deprecated. Use /config to change your output style, or set it in your settings file. Changes take effect on the next session.", {
596429
596379
  display: "system"
596430
596380
  });
@@ -596473,7 +596423,7 @@ var exports_effort = {};
596473
596423
  __export(exports_effort, {
596474
596424
  showCurrentEffort: () => showCurrentEffort,
596475
596425
  executeEffort: () => executeEffort,
596476
- call: () => call62
596426
+ call: () => call61
596477
596427
  });
596478
596428
  function setEffortValue(effortValue) {
596479
596429
  const persistable = toPersistableEffort(effortValue);
@@ -596624,7 +596574,7 @@ function ApplyEffortAndClose(t0) {
596624
596574
  React104.useEffect(t1, t2);
596625
596575
  return null;
596626
596576
  }
596627
- async function call62(onDone, _context, args) {
596577
+ async function call61(onDone, _context, args) {
596628
596578
  args = args?.trim() || "";
596629
596579
  if (COMMON_HELP_ARGS2.includes(args)) {
596630
596580
  onDone(`Usage: /effort [low|medium|high|max|auto]
@@ -599533,9 +599483,9 @@ var init_Stats = __esm(() => {
599533
599483
  // src/commands/stats/stats.tsx
599534
599484
  var exports_stats = {};
599535
599485
  __export(exports_stats, {
599536
- call: () => call63
599486
+ call: () => call62
599537
599487
  });
599538
- var jsx_dev_runtime334, call63 = async (onDone) => {
599488
+ var jsx_dev_runtime334, call62 = async (onDone) => {
599539
599489
  return /* @__PURE__ */ jsx_dev_runtime334.jsxDEV(Stats2, {
599540
599490
  onClose: onDone
599541
599491
  }, undefined, false, undefined, this);
@@ -601041,7 +600991,7 @@ function generateHtmlReport(data, insights) {
601041
600991
  </html>`;
601042
600992
  }
601043
600993
  function buildExportData(data, insights, facets, remoteStats) {
601044
- const version3 = typeof MACRO !== "undefined" ? "1.2.16" : "unknown";
600994
+ const version3 = typeof MACRO !== "undefined" ? "1.2.17" : "unknown";
601045
600995
  const remote_hosts_collected = remoteStats?.hosts.filter((h3) => h3.sessionCount > 0).map((h3) => h3.name);
601046
600996
  const facets_summary = {
601047
600997
  total: facets.size,
@@ -601797,7 +601747,6 @@ var init_commands2 = __esm(() => {
601797
601747
  init_disconnect_index();
601798
601748
  init_onboarding();
601799
601749
  init_pr_comments();
601800
- init_release_notes2();
601801
601750
  init_rename2();
601802
601751
  init_review_detial2();
601803
601752
  init_resume2();
@@ -601942,7 +601891,6 @@ var init_commands2 = __esm(() => {
601942
601891
  output_style_default,
601943
601892
  plugin_default,
601944
601893
  pr_comments_default,
601945
- release_notes_default,
601946
601894
  reload_plugins_default,
601947
601895
  rename_default,
601948
601896
  review_detial_default,
@@ -602040,7 +601988,6 @@ var init_commands2 = __esm(() => {
602040
601988
  compact_default,
602041
601989
  clear_default,
602042
601990
  summary_default,
602043
- release_notes_default,
602044
601991
  files_default
602045
601992
  ].filter((c4) => c4 !== null));
602046
601993
  });
@@ -604973,7 +604920,7 @@ var init_sessionStorage = __esm(() => {
604973
604920
  init_settings2();
604974
604921
  init_slowOperations();
604975
604922
  init_uuid();
604976
- VERSION6 = typeof MACRO !== "undefined" ? "1.2.16" : "unknown";
604923
+ VERSION6 = typeof MACRO !== "undefined" ? "1.2.17" : "unknown";
604977
604924
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
604978
604925
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
604979
604926
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -606192,7 +606139,7 @@ var init_filesystem = __esm(() => {
606192
606139
  });
606193
606140
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
606194
606141
  const nonce = randomBytes18(16).toString("hex");
606195
- return join149(getClaudeTempDir(), "bundled-skills", "1.2.16", nonce);
606142
+ return join149(getClaudeTempDir(), "bundled-skills", "1.2.17", nonce);
606196
606143
  });
606197
606144
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
606198
606145
  });
@@ -611307,7 +611254,7 @@ __export(exports_update, {
611307
611254
  import { execFileSync as execFileSync3 } from "node:child_process";
611308
611255
  import { homedir as homedir32 } from "os";
611309
611256
  async function update() {
611310
- writeToStdout(`Current version: ${"1.2.16"}
611257
+ writeToStdout(`Current version: ${"1.2.17"}
611311
611258
  `);
611312
611259
  const isBundled = isInBundledMode();
611313
611260
  if (isBundled) {
@@ -611333,13 +611280,13 @@ Manual check: npm view ${"@rayu-dev/rayu-cli"} version
611333
611280
  process.exit(1);
611334
611281
  return;
611335
611282
  }
611336
- if (latestVersion === "1.2.16") {
611283
+ if (latestVersion === "1.2.17") {
611337
611284
  writeToStdout(source_default.green(`
611338
- Rayu CLI is up to date (${"1.2.16"})
611285
+ Rayu CLI is up to date (${"1.2.17"})
611339
611286
  `));
611340
611287
  process.exit(0);
611341
611288
  }
611342
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.2.16"})
611289
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.2.17"})
611343
611290
  `);
611344
611291
  writeToStdout(`Installing update...
611345
611292
 
@@ -611363,7 +611310,7 @@ Try manually:
611363
611310
  return;
611364
611311
  }
611365
611312
  writeToStdout(source_default.green(`
611366
- Successfully updated from ${"1.2.16"} to ${latestVersion}
611313
+ Successfully updated from ${"1.2.17"} to ${latestVersion}
611367
611314
  `));
611368
611315
  process.exit(0);
611369
611316
  }
@@ -611377,14 +611324,14 @@ async function updateNativeBinary() {
611377
611324
  } catch {
611378
611325
  latestVersion = "";
611379
611326
  }
611380
- if (latestVersion && latestVersion === "1.2.16") {
611327
+ if (latestVersion && latestVersion === "1.2.17") {
611381
611328
  writeToStdout(source_default.green(`
611382
- Rayu CLI is up to date (1.2.16)
611329
+ Rayu CLI is up to date (1.2.17)
611383
611330
  `));
611384
611331
  process.exit(0);
611385
611332
  }
611386
611333
  if (latestVersion) {
611387
- writeToStdout(`New version available: ${latestVersion} (current: 1.2.16)
611334
+ writeToStdout(`New version available: ${latestVersion} (current: 1.2.17)
611388
611335
  `);
611389
611336
  }
611390
611337
  writeToStdout(`Downloading and installing update...
@@ -611399,13 +611346,13 @@ Rayu CLI is up to date (1.2.16)
611399
611346
  return;
611400
611347
  }
611401
611348
  writeToStdout(source_default.green(`
611402
- Rayu CLI is up to date (1.2.16)
611349
+ Rayu CLI is up to date (1.2.17)
611403
611350
  `));
611404
611351
  process.exit(0);
611405
611352
  }
611406
611353
  const updatedTo = result.latestVersion ?? latestVersion ?? "latest";
611407
611354
  writeToStdout(source_default.green(`
611408
- Successfully updated from 1.2.16 to ${updatedTo}
611355
+ Successfully updated from 1.2.17 to ${updatedTo}
611409
611356
  `));
611410
611357
  writeToStdout(`Restart your terminal to use the new version.
611411
611358
  `);
@@ -611436,7 +611383,7 @@ __export(exports_uninstall, {
611436
611383
  import { execFileSync as execFileSync4 } from "node:child_process";
611437
611384
  import { homedir as homedir33 } from "os";
611438
611385
  async function uninstall() {
611439
- writeToStdout(`Uninstalling Rayu CLI (${"1.2.16"})...
611386
+ writeToStdout(`Uninstalling Rayu CLI (${"1.2.17"})...
611440
611387
  `);
611441
611388
  writeToStdout(`Running: npm uninstall -g ${"@rayu-dev/rayu-cli"}
611442
611389
 
@@ -611459,7 +611406,7 @@ Try running manually:
611459
611406
  process.exit(1);
611460
611407
  }
611461
611408
  writeToStdout(source_default.green(`
611462
- Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.2.16"}
611409
+ Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.2.17"}
611463
611410
  `));
611464
611411
  writeToStdout(`Thanks for using Rayu CLI!
611465
611412
  `);
@@ -611511,7 +611458,7 @@ function showFirstRunWelcome() {
611511
611458
  `);
611512
611459
  try {
611513
611460
  mkdirSync13(getRayuConfigHomeDir(), { recursive: true });
611514
- writeFileSync15(markerPath(), "1.2.16", "utf8");
611461
+ writeFileSync15(markerPath(), "1.2.17", "utf8");
611515
611462
  } catch {}
611516
611463
  }
611517
611464
  var init_firstRun = __esm(() => {
@@ -623354,7 +623301,7 @@ async function initializeBetaTracing(resource) {
623354
623301
  });
623355
623302
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
623356
623303
  setLoggerProvider(loggerProvider);
623357
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.2.16");
623304
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.2.17");
623358
623305
  setEventLogger(eventLogger);
623359
623306
  process.on("beforeExit", async () => {
623360
623307
  await loggerProvider?.forceFlush();
@@ -623394,7 +623341,7 @@ async function initializeTelemetry() {
623394
623341
  const platform4 = getPlatform();
623395
623342
  const baseAttributes = {
623396
623343
  [import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
623397
- [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.2.16"
623344
+ [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.2.17"
623398
623345
  };
623399
623346
  if (platform4 === "wsl") {
623400
623347
  const wslVersion = getWslVersion();
@@ -623439,7 +623386,7 @@ async function initializeTelemetry() {
623439
623386
  } catch {}
623440
623387
  };
623441
623388
  registerCleanup(shutdownTelemetry2);
623442
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.2.16");
623389
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.2.17");
623443
623390
  }
623444
623391
  const meterProvider = new import_sdk_metrics2.MeterProvider({
623445
623392
  resource,
@@ -623459,7 +623406,7 @@ async function initializeTelemetry() {
623459
623406
  });
623460
623407
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
623461
623408
  setLoggerProvider(loggerProvider);
623462
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.2.16");
623409
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.2.17");
623463
623410
  setEventLogger(eventLogger);
623464
623411
  logForDebugging("[3P telemetry] Event logger set successfully");
623465
623412
  process.on("beforeExit", async () => {
@@ -623521,7 +623468,7 @@ Current timeout: ${timeoutMs}ms
623521
623468
  }
623522
623469
  };
623523
623470
  registerCleanup(shutdownTelemetry);
623524
- return meterProvider.getMeter("com.anthropic.claude_code", "1.2.16");
623471
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.2.17");
623525
623472
  }
623526
623473
  async function flushTelemetry() {
623527
623474
  const meterProvider = getMeterProvider();
@@ -625034,7 +624981,7 @@ function buildSystemInitMessage(inputs) {
625034
624981
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
625035
624982
  apiKeySource: getAnthropicApiKeyWithSource().source,
625036
624983
  betas: getSdkBetas(),
625037
- claude_code_version: "1.2.16",
624984
+ claude_code_version: "1.2.17",
625038
624985
  output_style: outputStyle2,
625039
624986
  agents: inputs.agents.map((agent) => agent.agentType),
625040
624987
  skills: inputs.skills.filter((s2) => s2.userInvocable !== false).map((skill) => skill.name),
@@ -641243,7 +641190,7 @@ var init_useVoiceEnabled = __esm(() => {
641243
641190
  function getSemverPart(version3) {
641244
641191
  return `${import_semver11.major(version3, { loose: true })}.${import_semver11.minor(version3, { loose: true })}.${import_semver11.patch(version3, { loose: true })}`;
641245
641192
  }
641246
- function useUpdateNotification(updatedVersion, initialVersion = "1.2.16") {
641193
+ function useUpdateNotification(updatedVersion, initialVersion = "1.2.17") {
641247
641194
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react217.useState(() => getSemverPart(initialVersion));
641248
641195
  if (!updatedVersion) {
641249
641196
  return null;
@@ -641283,7 +641230,7 @@ function AutoUpdater({
641283
641230
  return;
641284
641231
  }
641285
641232
  if (false) {}
641286
- const currentVersion = "1.2.16";
641233
+ const currentVersion = "1.2.17";
641287
641234
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
641288
641235
  let latestVersion = await getLatestVersion(channel);
641289
641236
  const isDisabled = isAutoUpdaterDisabled();
@@ -641496,12 +641443,12 @@ function NativeAutoUpdater({
641496
641443
  logEvent("tengu_native_auto_updater_start", {});
641497
641444
  try {
641498
641445
  const maxVersion = await getMaxVersion();
641499
- if (maxVersion && gt("1.2.16", maxVersion)) {
641446
+ if (maxVersion && gt("1.2.17", maxVersion)) {
641500
641447
  const msg = await getMaxVersionMessage();
641501
641448
  setMaxVersionIssue(msg ?? "affects your version");
641502
641449
  }
641503
641450
  const result = await installLatest(channel);
641504
- const currentVersion = "1.2.16";
641451
+ const currentVersion = "1.2.17";
641505
641452
  const latencyMs = Date.now() - startTime;
641506
641453
  if (result.lockFailed) {
641507
641454
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -641638,17 +641585,17 @@ function PackageManagerAutoUpdater(t0) {
641638
641585
  const maxVersion = await getMaxVersion();
641639
641586
  if (maxVersion && latest && gt(latest, maxVersion)) {
641640
641587
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
641641
- if (gte("1.2.16", maxVersion)) {
641642
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.2.16"} is already at or above maxVersion ${maxVersion}, skipping update`);
641588
+ if (gte("1.2.17", maxVersion)) {
641589
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.2.17"} is already at or above maxVersion ${maxVersion}, skipping update`);
641643
641590
  setUpdateAvailable(false);
641644
641591
  return;
641645
641592
  }
641646
641593
  latest = maxVersion;
641647
641594
  }
641648
- const hasUpdate = latest && !gte("1.2.16", latest) && !shouldSkipVersion(latest);
641595
+ const hasUpdate = latest && !gte("1.2.17", latest) && !shouldSkipVersion(latest);
641649
641596
  setUpdateAvailable(!!hasUpdate);
641650
641597
  if (hasUpdate) {
641651
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.2.16"} -> ${latest}`);
641598
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.2.17"} -> ${latest}`);
641652
641599
  }
641653
641600
  };
641654
641601
  $3[0] = t1;
@@ -641682,7 +641629,7 @@ function PackageManagerAutoUpdater(t0) {
641682
641629
  wrap: "truncate",
641683
641630
  children: [
641684
641631
  "currentVersion: ",
641685
- "1.2.16"
641632
+ "1.2.17"
641686
641633
  ]
641687
641634
  }, undefined, true, undefined, this);
641688
641635
  $3[3] = verbose;
@@ -649848,7 +649795,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
649848
649795
  project_dir: getOriginalCwd(),
649849
649796
  added_dirs: addedDirs
649850
649797
  },
649851
- version: "1.2.16",
649798
+ version: "1.2.17",
649852
649799
  output_style: {
649853
649800
  name: outputStyleName
649854
649801
  },
@@ -661217,7 +661164,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
661217
661164
  } catch {}
661218
661165
  const data = {
661219
661166
  trigger,
661220
- version: "1.2.16",
661167
+ version: "1.2.17",
661221
661168
  platform: process.platform,
661222
661169
  transcript,
661223
661170
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -667275,25 +667222,9 @@ function useNpmDeprecationNotification() {
667275
667222
  useStartupNotification(_temp206);
667276
667223
  }
667277
667224
  async function _temp206() {
667278
- if (isInBundledMode() || isEnvTruthy(process.env.DISABLE_INSTALLATION_CHECKS)) {
667279
- return null;
667280
- }
667281
- const installationType = await getCurrentInstallationType();
667282
- if (installationType === "development") {
667283
- return null;
667284
- }
667285
- return {
667286
- timeoutMs: 15000,
667287
- key: "npm-deprecation-warning",
667288
- text: NPM_DEPRECATION_MESSAGE,
667289
- color: "warning",
667290
- priority: "high"
667291
- };
667225
+ return null;
667292
667226
  }
667293
- var NPM_DEPRECATION_MESSAGE = "RAYU has switched from npm to native installer. Run `claude install` or see https://docs.anthropic.com/en/docs/claude-code/getting-started for more options.";
667294
667227
  var init_useNpmDeprecationNotification = __esm(() => {
667295
- init_doctorDiagnostic();
667296
- init_envUtils();
667297
667228
  init_useStartupNotification();
667298
667229
  });
667299
667230
 
@@ -673268,7 +673199,7 @@ function WelcomeV2() {
673268
673199
  dimColor: true,
673269
673200
  children: [
673270
673201
  "v",
673271
- "1.2.16"
673202
+ "1.2.17"
673272
673203
  ]
673273
673204
  }, undefined, true, undefined, this)
673274
673205
  ]
@@ -674985,7 +674916,7 @@ function completeOnboarding() {
674985
674916
  saveGlobalConfig((current) => ({
674986
674917
  ...current,
674987
674918
  hasCompletedOnboarding: true,
674988
- lastOnboardingVersion: "1.2.16"
674919
+ lastOnboardingVersion: "1.2.17"
674989
674920
  }));
674990
674921
  }
674991
674922
  function showDialog(root2, renderer) {
@@ -679285,7 +679216,7 @@ function appendToLog(path30, message) {
679285
679216
  cwd: getFsImplementation().cwd(),
679286
679217
  userType: "external",
679287
679218
  sessionId: getSessionId(),
679288
- version: "1.2.16"
679219
+ version: "1.2.17"
679289
679220
  };
679290
679221
  getLogWriter(path30).write(messageWithTimestamp);
679291
679222
  }
@@ -683389,8 +683320,8 @@ async function getEnvLessBridgeConfig() {
683389
683320
  }
683390
683321
  async function checkEnvLessBridgeMinVersion() {
683391
683322
  const cfg = await getEnvLessBridgeConfig();
683392
- if (cfg.min_version && lt("1.2.16", cfg.min_version)) {
683393
- return `Your version of RAYU (${"1.2.16"}) is too old for Remote Control.
683323
+ if (cfg.min_version && lt("1.2.17", cfg.min_version)) {
683324
+ return `Your version of RAYU (${"1.2.17"}) is too old for Remote Control.
683394
683325
  Version ${cfg.min_version} or higher is required. Run \`claude update\` to update.`;
683395
683326
  }
683396
683327
  return null;
@@ -683864,7 +683795,7 @@ async function initBridgeCore(params) {
683864
683795
  const rawApi = createBridgeApiClient({
683865
683796
  baseUrl,
683866
683797
  getAccessToken,
683867
- runnerVersion: "1.2.16",
683798
+ runnerVersion: "1.2.17",
683868
683799
  onDebug: logForDebugging,
683869
683800
  onAuth401,
683870
683801
  getTrustedDeviceToken
@@ -689226,7 +689157,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
689226
689157
  setCwd(cwd3);
689227
689158
  const server = new Server({
689228
689159
  name: "claude/tengu",
689229
- version: "1.2.16"
689160
+ version: "1.2.17"
689230
689161
  }, {
689231
689162
  capabilities: {
689232
689163
  tools: {}
@@ -690977,7 +690908,7 @@ async function run() {
690977
690908
  await init2();
690978
690909
  profileCheckpoint("preAction_after_init");
690979
690910
  if (!isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_TERMINAL_TITLE)) {
690980
- process.title = "claude";
690911
+ process.title = "rayu";
690981
690912
  }
690982
690913
  const {
690983
690914
  initSinks: initSinks2
@@ -691752,7 +691683,7 @@ ${customInstructions}` : customInstructions;
691752
691683
  }
691753
691684
  }
691754
691685
  logForDiagnosticsNoPII("info", "started", {
691755
- version: "1.2.16",
691686
+ version: "1.2.17",
691756
691687
  is_native_binary: isInBundledMode()
691757
691688
  });
691758
691689
  registerCleanup(async () => {
@@ -692470,7 +692401,7 @@ Usage: rayu --remote "your task description"`, () => gracefulShutdown(1));
692470
692401
  pendingHookMessages
692471
692402
  }, renderAndRun);
692472
692403
  }
692473
- }).version("1.2.16 (Rayu-CLI)", "-v, --version", "Output the version number");
692404
+ }).version("1.2.17 (Rayu-CLI)", "-v, --version", "Output the version number");
692474
692405
  program.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
692475
692406
  program.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
692476
692407
  if (canUserConfigureAdvisor()) {
@@ -692936,7 +692867,7 @@ if (false) {}
692936
692867
  async function main2() {
692937
692868
  const args = process.argv.slice(2);
692938
692869
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
692939
- console.log(`${"1.2.16"} (Rayu-CLI)`);
692870
+ console.log(`${"1.2.17"} (Rayu-CLI)`);
692940
692871
  return;
692941
692872
  }
692942
692873
  const {