@rayu-dev/rayu-cli 1.4.470 → 1.4.471

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/README.md +3 -3
  2. package/dist/rayu.js +192 -151
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -5,9 +5,9 @@ to any provider — Anthropic, OpenAI, NVIDIA, DeepSeek, Kimi/Moonshot, OpenRout
5
5
  Google Gemini, AWS Bedrock, local servers, or any OpenAI-compatible endpoint —
6
6
  with free model switching, full MCP support, and a complete built-in tool suite.
7
7
 
8
- **Website:** https://rayu-web.vercel.app
9
- **Docs:** https://rayu-web.vercel.app/docs
10
- **Changelog:** https://rayu-web.vercel.app/changelog
8
+ **Website:** https://rayucode.com
9
+ **Docs:** https://rayucode.com/docs
10
+ **Changelog:** https://rayucode.com/changelog
11
11
 
12
12
  ---
13
13
 
package/dist/rayu.js CHANGED
@@ -79606,7 +79606,7 @@ function getValidationTip(context) {
79606
79606
  }
79607
79607
  return tip;
79608
79608
  }
79609
- var DOCUMENTATION_BASE = "https://rayu-web.vercel.app/docs", TIP_MATCHERS, PATH_DOC_LINKS;
79609
+ var DOCUMENTATION_BASE = "https://rayucode.com/docs", TIP_MATCHERS, PATH_DOC_LINKS;
79610
79610
  var init_validationTips = __esm(() => {
79611
79611
  TIP_MATCHERS = [
79612
79612
  {
@@ -82334,7 +82334,7 @@ function createDefaultGlobalConfig() {
82334
82334
  showExpandedTodos: false,
82335
82335
  messageIdleNotifThresholdMs: 60000,
82336
82336
  autoConnectIde: false,
82337
- autoInstallIdeExtension: true,
82337
+ autoInstallIdeExtension: false,
82338
82338
  fileCheckpointingEnabled: true,
82339
82339
  terminalProgressBarEnabled: true,
82340
82340
  cachedStatsigGates: {},
@@ -82930,7 +82930,7 @@ function getAutoUpdaterDisabledReason() {
82930
82930
  return { type: "env", envVar: essentialTrafficEnvVar };
82931
82931
  }
82932
82932
  const config2 = getGlobalConfig();
82933
- if (config2.autoUpdates === false && (config2.installMethod !== "native" || config2.autoUpdatesProtectedForNative !== true)) {
82933
+ if (config2.autoUpdates !== true && (config2.installMethod !== "native" || config2.autoUpdatesProtectedForNative !== true)) {
82934
82934
  return { type: "config" };
82935
82935
  }
82936
82936
  return null;
@@ -148979,7 +148979,7 @@ var init_isEqual = __esm(() => {
148979
148979
 
148980
148980
  // src/utils/userAgent.ts
148981
148981
  function getRayuUserAgent() {
148982
- return `rayu/${"1.4.470"}`;
148982
+ return `rayu/${"1.4.471"}`;
148983
148983
  }
148984
148984
  var getClaudeCodeUserAgent;
148985
148985
  var init_userAgent = __esm(() => {
@@ -149005,7 +149005,7 @@ function getUserAgent() {
149005
149005
  const clientApp = process.env.RAYU_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.RAYU_AGENT_SDK_CLIENT_APP}` : "";
149006
149006
  const workload = getWorkload();
149007
149007
  const workloadSuffix = workload ? `, workload/${workload}` : "";
149008
- return `rayu/${"1.4.470"} (${"external"}, ${process.env.RAYU_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
149008
+ return `rayu/${"1.4.471"} (${"external"}, ${process.env.RAYU_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
149009
149009
  }
149010
149010
  function getMCPUserAgent() {
149011
149011
  const parts = [];
@@ -149019,7 +149019,7 @@ function getMCPUserAgent() {
149019
149019
  parts.push(`client-app/${process.env.RAYU_AGENT_SDK_CLIENT_APP}`);
149020
149020
  }
149021
149021
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
149022
- return `rayu/${"1.4.470"}${suffix}`;
149022
+ return `rayu/${"1.4.471"}${suffix}`;
149023
149023
  }
149024
149024
  function getWebFetchUserAgent() {
149025
149025
  return `Rayu-User (${getRayuUserAgent()})`;
@@ -157998,22 +157998,13 @@ function makeRayuHostedFetch() {
157998
157998
  const inner = globalThis.fetch;
157999
157999
  const wrapped = async (input, init = {}) => {
158000
158000
  const url3 = typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url;
158001
- if ((init?.method ?? "GET").toUpperCase() === "POST" && (url3.includes("/chat/completions") || url3.includes("/v1/messages")) && typeof init?.body === "string") {
158002
- const model = (() => {
158003
- try {
158004
- return JSON.parse(init.body).model;
158005
- } catch {
158006
- return;
158007
- }
158008
- })();
158009
- if (model) {
158010
- const { isHostedModelEntitled, hostedModelUpgradeMessage } = await Promise.resolve().then(() => (init_rayuEntitlements(), exports_rayuEntitlements));
158011
- if (!isHostedModelEntitled(model)) {
158012
- const message = hostedModelUpgradeMessage();
158013
- return new Response(JSON.stringify({
158014
- error: { message, type: "upgrade_required", code: "plan_upgrade_required" }
158015
- }), { status: 403, headers: { "content-type": "application/json" } });
158016
- }
158001
+ if ((init?.method ?? "GET").toUpperCase() === "POST" && (url3.includes("/chat/completions") || url3.includes("/v1/messages"))) {
158002
+ const { hasHostedModelAccess, hostedModelUpgradeMessage } = await Promise.resolve().then(() => (init_rayuEntitlements(), exports_rayuEntitlements));
158003
+ if (!hasHostedModelAccess()) {
158004
+ const message = hostedModelUpgradeMessage();
158005
+ return new Response(JSON.stringify({
158006
+ error: { message, type: "upgrade_required", code: "plan_upgrade_required" }
158007
+ }), { status: 403, headers: { "content-type": "application/json" } });
158017
158008
  }
158018
158009
  }
158019
158010
  const token = await getValidRayuAccessToken();
@@ -158083,6 +158074,7 @@ __export(exports_rayuEntitlements, {
158083
158074
  rayuFeatureAllowed: () => rayuFeatureAllowed,
158084
158075
  isHostedModelEntitled: () => isHostedModelEntitled,
158085
158076
  hostedModelUpgradeMessage: () => hostedModelUpgradeMessage,
158077
+ hasHostedModelAccess: () => hasHostedModelAccess,
158086
158078
  getCachedEntitlements: () => getCachedEntitlements,
158087
158079
  clearRayuEntitlements: () => clearRayuEntitlements,
158088
158080
  _setRayuEntitlementsForTesting: () => _setRayuEntitlementsForTesting,
@@ -158189,6 +158181,14 @@ function isHostedModelEntitled(modelCode) {
158189
158181
  const allowed = ent.allowedModels ?? [];
158190
158182
  return allowed.some((m2) => m2.code === modelCode);
158191
158183
  }
158184
+ function hasHostedModelAccess() {
158185
+ if (!isUseRayuOAuthEnabled())
158186
+ return true;
158187
+ const ent = getCachedEntitlements();
158188
+ if (!ent)
158189
+ return true;
158190
+ return (ent.allowedModels ?? []).length > 0;
158191
+ }
158192
158192
  function hostedModelUpgradeMessage() {
158193
158193
  const url3 = `${getRayuWebBaseUrl()}/plans`;
158194
158194
  return `\uD83D\uDD12 Rayu-hosted models are a paid feature. Please upgrade your plan to use them: ${url3}`;
@@ -205334,7 +205334,7 @@ function getAttributionHeader(fingerprint) {
205334
205334
  if (!isAttributionHeaderEnabled()) {
205335
205335
  return "";
205336
205336
  }
205337
- const version2 = `${"1.4.470"}.${fingerprint}`;
205337
+ const version2 = `${"1.4.471"}.${fingerprint}`;
205338
205338
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
205339
205339
  const cch = "";
205340
205340
  const workload = getWorkload();
@@ -259303,7 +259303,7 @@ var init_metadata = __esm(() => {
259303
259303
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
259304
259304
  WHITESPACE_REGEX = /\s+/;
259305
259305
  getVersionBase = memoize_default(() => {
259306
- const match = "1.4.470".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
259306
+ const match = "1.4.471".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
259307
259307
  return match ? match[0] : undefined;
259308
259308
  });
259309
259309
  buildEnvContext = memoize_default(async () => {
@@ -259342,7 +259342,7 @@ var init_metadata = __esm(() => {
259342
259342
  },
259343
259343
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
259344
259344
  isRayuAction: isEnvTruthy(process.env.RAYU_ACTION),
259345
- version: "1.4.470",
259345
+ version: "1.4.471",
259346
259346
  versionBase: getVersionBase(),
259347
259347
  buildTime: "",
259348
259348
  deploymentEnvironment: env3.detectDeploymentEnvironment(),
@@ -269235,7 +269235,8 @@ var LITERAL_BACKSLASH = "\\", SNAPSHOT_CREATION_TIMEOUT = 1e4, VCS_DIRECTORIES_T
269235
269235
  ...process.env.CLAUDE_CODE_DONT_INHERIT_ENV ? {} : subprocessEnv(),
269236
269236
  SHELL: binShell,
269237
269237
  GIT_EDITOR: "true",
269238
- CLAUDECODE: "1"
269238
+ CLAUDECODE: "1",
269239
+ AI_AGENT: "rayu"
269239
269240
  },
269240
269241
  timeout: SNAPSHOT_CREATION_TIMEOUT,
269241
269242
  maxBuffer: 1024 * 1024,
@@ -269790,6 +269791,7 @@ async function exec3(command, abortSignal, shellType, options) {
269790
269791
  SHELL: shellType === "bash" ? binShell : undefined,
269791
269792
  GIT_EDITOR: "true",
269792
269793
  CLAUDECODE: "1",
269794
+ AI_AGENT: "rayu",
269793
269795
  ...envOverrides,
269794
269796
  ...{}
269795
269797
  },
@@ -291356,7 +291358,7 @@ function getTelemetryAttributes() {
291356
291358
  attributes["session.id"] = sessionId;
291357
291359
  }
291358
291360
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
291359
- attributes["app.version"] = "1.4.470";
291361
+ attributes["app.version"] = "1.4.471";
291360
291362
  }
291361
291363
  const oauthAccount = getOauthAccountInfo();
291362
291364
  if (oauthAccount) {
@@ -401713,7 +401715,7 @@ function getInstallationEnv() {
401713
401715
  return;
401714
401716
  }
401715
401717
  function getClaudeCodeVersion() {
401716
- return "1.4.470";
401718
+ return "1.4.471";
401717
401719
  }
401718
401720
  async function getInstalledVSCodeExtensionVersion(command) {
401719
401721
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -401906,7 +401908,7 @@ async function closeOpenDiffs(ideClient) {
401906
401908
  }
401907
401909
  async function initializeIdeIntegration(onIdeDetected, ideToInstallExtension, onShowIdeOnboarding, onInstallationComplete) {
401908
401910
  findAvailableIDE().then(onIdeDetected);
401909
- const shouldAutoInstall = getGlobalConfig().autoInstallIdeExtension ?? true;
401911
+ const shouldAutoInstall = getGlobalConfig().autoInstallIdeExtension ?? false;
401910
401912
  if (!isEnvTruthy(process.env.CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL) && shouldAutoInstall) {
401911
401913
  const ideType = ideToInstallExtension ?? getTerminalIdeType();
401912
401914
  if (ideType) {
@@ -406951,7 +406953,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
406951
406953
  const client3 = new Client({
406952
406954
  name: "claude-code",
406953
406955
  title: "RAYU",
406954
- version: "1.4.470",
406956
+ version: "1.4.471",
406955
406957
  description: "Anthropic's agentic coding tool",
406956
406958
  websiteUrl: PRODUCT_URL
406957
406959
  }, {
@@ -407268,7 +407270,7 @@ var init_client7 = __esm(() => {
407268
407270
  const client3 = new Client({
407269
407271
  name: "claude-code",
407270
407272
  title: "RAYU",
407271
- version: "1.4.470",
407273
+ version: "1.4.471",
407272
407274
  description: "Anthropic's agentic coding tool",
407273
407275
  websiteUrl: PRODUCT_URL
407274
407276
  }, {
@@ -422087,7 +422089,7 @@ function computeFingerprint(messageText, version2) {
422087
422089
  }
422088
422090
  function computeFingerprintFromMessages(messages) {
422089
422091
  const firstMessageText = extractFirstMessageText(messages);
422090
- return computeFingerprint(firstMessageText, "1.4.470");
422092
+ return computeFingerprint(firstMessageText, "1.4.471");
422091
422093
  }
422092
422094
  var FINGERPRINT_SALT = "59cf53e54c78";
422093
422095
  var init_fingerprint = () => {};
@@ -422129,7 +422131,7 @@ async function sideQuery(opts) {
422129
422131
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
422130
422132
  }
422131
422133
  const messageText = extractFirstUserMessageText(messages);
422132
- const fingerprint = computeFingerprint(messageText, "1.4.470");
422134
+ const fingerprint = computeFingerprint(messageText, "1.4.471");
422133
422135
  const attributionHeader = getAttributionHeader(fingerprint);
422134
422136
  const systemBlocks = [
422135
422137
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -445513,7 +445515,11 @@ function buildInheritedCliFlags(options) {
445513
445515
  return flags.join(" ");
445514
445516
  }
445515
445517
  function buildInheritedEnvVars() {
445516
- const envVars = ["CLAUDECODE=1", "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1"];
445518
+ const envVars = [
445519
+ "CLAUDECODE=1",
445520
+ "AI_AGENT=rayu",
445521
+ "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1"
445522
+ ];
445517
445523
  for (const key2 of TEAMMATE_ENV_VARS) {
445518
445524
  const value = process.env[key2];
445519
445525
  if (value !== undefined && value !== "") {
@@ -521465,9 +521471,9 @@ async function assertMinVersion() {
521465
521471
  if (false) {}
521466
521472
  try {
521467
521473
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
521468
- if (versionConfig.minVersion && lt("1.4.470", versionConfig.minVersion)) {
521474
+ if (versionConfig.minVersion && lt("1.4.471", versionConfig.minVersion)) {
521469
521475
  console.error(`
521470
- It looks like your version of RAYU (${"1.4.470"}) needs an update.
521476
+ It looks like your version of RAYU (${"1.4.471"}) needs an update.
521471
521477
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
521472
521478
 
521473
521479
  To update, please run:
@@ -521693,7 +521699,7 @@ async function installGlobalPackage(specificVersion) {
521693
521699
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
521694
521700
  logEvent("tengu_auto_updater_lock_contention", {
521695
521701
  pid: process.pid,
521696
- currentVersion: "1.4.470"
521702
+ currentVersion: "1.4.471"
521697
521703
  });
521698
521704
  return "in_progress";
521699
521705
  }
@@ -521702,7 +521708,7 @@ async function installGlobalPackage(specificVersion) {
521702
521708
  if (!env3.isRunningWithBun() && env3.isNpmFromWindowsPath()) {
521703
521709
  logError2(new Error("Windows NPM detected in WSL environment"));
521704
521710
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
521705
- currentVersion: "1.4.470"
521711
+ currentVersion: "1.4.471"
521706
521712
  });
521707
521713
  console.error(`
521708
521714
  Error: Windows NPM detected in WSL
@@ -522014,14 +522020,14 @@ async function getInstallationPath() {
522014
522020
  return await realpath11(process.execPath);
522015
522021
  } catch {}
522016
522022
  try {
522017
- const path24 = await which("claude");
522023
+ const path24 = await which("rayu");
522018
522024
  if (path24) {
522019
522025
  return path24;
522020
522026
  }
522021
522027
  } catch {}
522022
522028
  try {
522023
- await getFsImplementation().stat(join123(homedir29(), ".local/bin/claude"));
522024
- return join123(homedir29(), ".local/bin/claude");
522029
+ await getFsImplementation().stat(join123(homedir29(), ".local/bin/rayu"));
522030
+ return join123(homedir29(), ".local/bin/rayu");
522025
522031
  } catch {}
522026
522032
  return "native";
522027
522033
  }
@@ -522048,10 +522054,7 @@ async function detectMultipleInstallations() {
522048
522054
  if (await localInstallationExists()) {
522049
522055
  installations.push({ type: "npm-local", path: localPath });
522050
522056
  }
522051
- const packagesToCheck = ["@anthropic-ai/claude-code"];
522052
- if (true) {
522053
- packagesToCheck.push("@rayu-dev/rayu-cli");
522054
- }
522057
+ const packagesToCheck = ["@rayu-dev/rayu-cli"];
522055
522058
  const npmResult = await execFileNoThrow("npm", [
522056
522059
  "-g",
522057
522060
  "config",
@@ -522061,7 +522064,7 @@ async function detectMultipleInstallations() {
522061
522064
  if (npmResult.code === 0 && npmResult.stdout) {
522062
522065
  const npmPrefix = npmResult.stdout.trim();
522063
522066
  const isWindows2 = getPlatform() === "windows";
522064
- const globalBinPath = isWindows2 ? join123(npmPrefix, "claude") : join123(npmPrefix, "bin", "claude");
522067
+ const globalBinPath = isWindows2 ? join123(npmPrefix, "rayu") : join123(npmPrefix, "bin", "rayu");
522065
522068
  let globalBinExists = false;
522066
522069
  try {
522067
522070
  await fs14.stat(globalBinPath);
@@ -522091,14 +522094,14 @@ async function detectMultipleInstallations() {
522091
522094
  }
522092
522095
  }
522093
522096
  }
522094
- const nativeBinPath = join123(homedir29(), ".local", "bin", "claude");
522097
+ const nativeBinPath = join123(homedir29(), ".local", "bin", "rayu");
522095
522098
  try {
522096
522099
  await fs14.stat(nativeBinPath);
522097
522100
  installations.push({ type: "native", path: nativeBinPath });
522098
522101
  } catch {}
522099
522102
  const config4 = getGlobalConfig();
522100
522103
  if (config4.installMethod === "native") {
522101
- const nativeDataPath = join123(homedir29(), ".local", "share", "claude");
522104
+ const nativeDataPath = join123(homedir29(), ".local", "share", "rayu");
522102
522105
  try {
522103
522106
  await fs14.stat(nativeDataPath);
522104
522107
  if (!installations.some((i4) => i4.type === "native")) {
@@ -522177,37 +522180,37 @@ async function detectConfigurationIssues(type) {
522177
522180
  if (type === "npm-local" && config4.installMethod !== "local") {
522178
522181
  warnings.push({
522179
522182
  issue: `Running from local installation but config install method is '${config4.installMethod}'`,
522180
- fix: "Consider using native installation: claude install"
522183
+ fix: "Consider using native installation: rayu install"
522181
522184
  });
522182
522185
  }
522183
522186
  if (type === "native" && config4.installMethod !== "native") {
522184
522187
  warnings.push({
522185
522188
  issue: `Running native installation but config install method is '${config4.installMethod}'`,
522186
- fix: "Run claude install to update configuration"
522189
+ fix: "Run rayu install to update configuration"
522187
522190
  });
522188
522191
  }
522189
522192
  }
522190
522193
  if (type === "npm-global" && await localInstallationExists()) {
522191
522194
  warnings.push({
522192
522195
  issue: "Local installation exists but not being used",
522193
- fix: "Consider using native installation: claude install"
522196
+ fix: "Consider using native installation: rayu install"
522194
522197
  });
522195
522198
  }
522196
522199
  const existingAlias = await findClaudeAlias();
522197
522200
  const validAlias = await findValidClaudeAlias();
522198
522201
  if (type === "npm-local") {
522199
- const whichResult = await which("claude");
522202
+ const whichResult = await which("rayu");
522200
522203
  const claudeInPath = !!whichResult;
522201
522204
  if (!claudeInPath && !validAlias) {
522202
522205
  if (existingAlias) {
522203
522206
  warnings.push({
522204
522207
  issue: "Local installation not accessible",
522205
- fix: `Alias exists but points to invalid target: ${existingAlias}. Update alias: alias claude="~/.rayu/local/claude"`
522208
+ fix: `Alias exists but points to invalid target: ${existingAlias}. Update alias: alias rayu="~/.rayu/local/rayu"`
522206
522209
  });
522207
522210
  } else {
522208
522211
  warnings.push({
522209
522212
  issue: "Local installation not accessible",
522210
- fix: 'Create alias: alias claude="~/.rayu/local/claude"'
522213
+ fix: 'Create alias: alias rayu="~/.rayu/local/rayu"'
522211
522214
  });
522212
522215
  }
522213
522216
  }
@@ -522233,7 +522236,7 @@ function detectLinuxGlobPatternWarnings() {
522233
522236
  }
522234
522237
  async function getDoctorDiagnostic() {
522235
522238
  const installationType = await getCurrentInstallationType();
522236
- const version2 = typeof MACRO !== "undefined" ? "1.4.470" : "unknown";
522239
+ const version2 = typeof MACRO !== "undefined" ? "1.4.471" : "unknown";
522237
522240
  const installationPath = await getInstallationPath();
522238
522241
  const invokedBinary = getInvokedBinary();
522239
522242
  const multipleInstallations = await detectMultipleInstallations();
@@ -522244,10 +522247,7 @@ async function getDoctorDiagnostic() {
522244
522247
  const isWindows2 = getPlatform() === "windows";
522245
522248
  for (const install of npmInstalls) {
522246
522249
  if (install.type === "npm-global") {
522247
- let uninstallCmd = "npm -g uninstall @anthropic-ai/claude-code";
522248
- if (true) {
522249
- uninstallCmd += ` && npm -g uninstall ${"@rayu-dev/rayu-cli"}`;
522250
- }
522250
+ const uninstallCmd = `npm -g uninstall ${"@rayu-dev/rayu-cli"}`;
522251
522251
  warnings.push({
522252
522252
  issue: `Leftover npm global installation at ${install.path}`,
522253
522253
  fix: `Run: ${uninstallCmd}`
@@ -522274,7 +522274,7 @@ async function getDoctorDiagnostic() {
522274
522274
  if (!hasUpdatePermissions && !getAutoUpdaterDisabledReason()) {
522275
522275
  warnings.push({
522276
522276
  issue: "Insufficient permissions for auto-updates",
522277
- fix: "Do one of: (1) Re-install node without sudo, or (2) Use `claude install` for native installation"
522277
+ fix: "Do one of: (1) Re-install node without sudo, or (2) Use `rayu install` for native installation"
522278
522278
  });
522279
522279
  }
522280
522280
  }
@@ -522779,15 +522779,15 @@ function getPlatform3() {
522779
522779
  return `${os7}-${arch}`;
522780
522780
  }
522781
522781
  function getBinaryName(platform4) {
522782
- return platform4.startsWith("win32") ? "claude.exe" : "claude";
522782
+ return platform4.startsWith("win32") ? "rayu.exe" : "rayu";
522783
522783
  }
522784
522784
  function getBaseDirectories() {
522785
522785
  const platform4 = getPlatform3();
522786
522786
  const executableName = getBinaryName(platform4);
522787
522787
  return {
522788
- versions: join127(getXDGDataHome(), "claude", "versions"),
522789
- staging: join127(getXDGCacheHome(), "claude", "staging"),
522790
- locks: join127(getXDGStateHome(), "claude", "locks"),
522788
+ versions: join127(getXDGDataHome(), "rayu", "versions"),
522789
+ staging: join127(getXDGCacheHome(), "rayu", "staging"),
522790
+ locks: join127(getXDGStateHome(), "rayu", "locks"),
522791
522791
  executable: join127(getUserBinDir(), executableName)
522792
522792
  };
522793
522793
  }
@@ -523027,8 +523027,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
523027
523027
  const maxVersion = await getMaxVersion();
523028
523028
  if (maxVersion && gt(version2, maxVersion)) {
523029
523029
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
523030
- if (gte("1.4.470", maxVersion)) {
523031
- logForDebugging(`Native installer: current version ${"1.4.470"} is already at or above maxVersion ${maxVersion}, skipping update`);
523030
+ if (gte("1.4.471", maxVersion)) {
523031
+ logForDebugging(`Native installer: current version ${"1.4.471"} is already at or above maxVersion ${maxVersion}, skipping update`);
523032
523032
  logEvent("tengu_native_update_skipped_max_version", {
523033
523033
  latency_ms: Date.now() - startTime2,
523034
523034
  max_version: maxVersion,
@@ -523039,7 +523039,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
523039
523039
  version2 = maxVersion;
523040
523040
  }
523041
523041
  }
523042
- if (!forceReinstall && version2 === "1.4.470" && await versionIsAvailable(version2) && await isPossibleClaudeBinary(executablePath)) {
523042
+ if (!forceReinstall && version2 === "1.4.471" && await versionIsAvailable(version2) && await isPossibleClaudeBinary(executablePath)) {
523043
523043
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
523044
523044
  logEvent("tengu_native_update_complete", {
523045
523045
  latency_ms: Date.now() - startTime2,
@@ -524080,8 +524080,19 @@ function buildAccountProperties() {
524080
524080
  return properties;
524081
524081
  }
524082
524082
  function buildAPIProviderProperties() {
524083
- const apiProvider = getAPIProvider();
524084
524083
  const properties = [];
524084
+ if (isOpenAICompatibleActive()) {
524085
+ const active = getActiveProvider();
524086
+ const baseURL = process.env.RAYU_OPENAI_BASE_URL ?? active?.baseURL;
524087
+ if (active?.id) {
524088
+ properties.push({ label: "API provider", value: active.id });
524089
+ }
524090
+ if (baseURL) {
524091
+ properties.push({ label: "API base URL", value: baseURL });
524092
+ }
524093
+ return properties;
524094
+ }
524095
+ const apiProvider = getAPIProvider();
524085
524096
  if (apiProvider !== "anthropic") {
524086
524097
  const providerLabel = {
524087
524098
  bedrock: "AWS Bedrock",
@@ -524215,6 +524226,7 @@ var init_status = __esm(() => {
524215
524226
  init_ide();
524216
524227
  init_model();
524217
524228
  init_providers();
524229
+ init_rayuConfig();
524218
524230
  init_mtls();
524219
524231
  init_nativeInstaller();
524220
524232
  init_proxy();
@@ -524235,7 +524247,7 @@ function buildPrimarySection() {
524235
524247
  });
524236
524248
  return [{
524237
524249
  label: "Version",
524238
- value: "1.4.470"
524250
+ value: "1.4.471"
524239
524251
  }, {
524240
524252
  label: "Session name",
524241
524253
  value: nameValue
@@ -527215,7 +527227,7 @@ function Config({
527215
527227
  ...isSupportedTerminal() ? [{
527216
527228
  id: "autoInstallIdeExtension",
527217
527229
  label: "Auto-install IDE extension",
527218
- value: globalConfig2.autoInstallIdeExtension ?? true,
527230
+ value: globalConfig2.autoInstallIdeExtension ?? false,
527219
527231
  type: "boolean",
527220
527232
  onChange(autoInstallIdeExtension) {
527221
527233
  saveGlobalConfig((current_17) => ({
@@ -527906,7 +527918,7 @@ function Config({
527906
527918
  }
527907
527919
  })
527908
527920
  }) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_runtime168.jsx(ChannelDowngradeDialog, {
527909
- currentVersion: "1.4.470",
527921
+ currentVersion: "1.4.471",
527910
527922
  onChoice: (choice) => {
527911
527923
  setShowSubmenu(null);
527912
527924
  setTabsHidden(false);
@@ -527918,7 +527930,7 @@ function Config({
527918
527930
  autoUpdatesChannel: "stable"
527919
527931
  };
527920
527932
  if (choice === "stay") {
527921
- newSettings.minimumVersion = "1.4.470";
527933
+ newSettings.minimumVersion = "1.4.471";
527922
527934
  }
527923
527935
  updateSettingsForSource("userSettings", newSettings);
527924
527936
  setSettingsData((prev_27) => ({
@@ -528397,6 +528409,7 @@ function isEligibleForOverageCreditGrant() {
528397
528409
  return formatGrantAmount(info) !== null;
528398
528410
  }
528399
528411
  function shouldShowOverageCreditUpsell() {
528412
+ return false;
528400
528413
  if (!isEligibleForOverageCreditGrant())
528401
528414
  return false;
528402
528415
  const config4 = getGlobalConfig();
@@ -535102,7 +535115,7 @@ ${editorHint}`, {
535102
535115
  children: [
535103
535116
  "Learn more: ",
535104
535117
  /* @__PURE__ */ jsx_runtime191.jsx(Link, {
535105
- url: "https://rayu-web.vercel.app/docs"
535118
+ url: "https://rayucode.com/docs"
535106
535119
  })
535107
535120
  ]
535108
535121
  })
@@ -535978,7 +535991,7 @@ function HelpV2(t0) {
535978
535991
  let t6;
535979
535992
  if ($3[31] !== tabs) {
535980
535993
  t6 = /* @__PURE__ */ jsx_runtime195.jsx(Tabs, {
535981
- title: `Rayu-CLI v${"1.4.470"}`,
535994
+ title: `Rayu-CLI v${"1.4.471"}`,
535982
535995
  color: "professionalBlue",
535983
535996
  defaultTab: "general",
535984
535997
  children: tabs
@@ -556061,7 +556074,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
556061
556074
  }
556062
556075
  return [];
556063
556076
  }
556064
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.4.470") {
556077
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.4.471") {
556065
556078
  if (false) {}
556066
556079
  const cachedChangelog = await getStoredChangelog();
556067
556080
  if (lastSeenVersion !== currentVersion || !cachedChangelog) {
@@ -556074,7 +556087,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.4.470")
556074
556087
  releaseNotes
556075
556088
  };
556076
556089
  }
556077
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.4.470") {
556090
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.4.471") {
556078
556091
  if (false) {}
556079
556092
  const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion);
556080
556093
  return {
@@ -556202,7 +556215,7 @@ function getRecentActivitySync() {
556202
556215
  return cachedActivity;
556203
556216
  }
556204
556217
  function getLogoDisplayData() {
556205
- const version2 = process.env.DEMO_VERSION ?? "1.4.470";
556218
+ const version2 = process.env.DEMO_VERSION ?? "1.4.471";
556206
556219
  const serverUrl = getDirectConnectServerUrl();
556207
556220
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
556208
556221
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -556867,6 +556880,7 @@ function resetIfPassesRefreshed() {
556867
556880
  }
556868
556881
  }
556869
556882
  function shouldShowGuestPassesUpsell() {
556883
+ return false;
556870
556884
  const {
556871
556885
  eligible: eligible2,
556872
556886
  hasCache
@@ -557366,7 +557380,7 @@ function LogoV2() {
557366
557380
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
557367
557381
  t2 = () => {
557368
557382
  const currentConfig = getGlobalConfig();
557369
- if (currentConfig.lastReleaseNotesSeen === "1.4.470") {
557383
+ if (currentConfig.lastReleaseNotesSeen === "1.4.471") {
557370
557384
  return;
557371
557385
  }
557372
557386
  saveGlobalConfig(_temp327);
@@ -557845,7 +557859,7 @@ function LogoV2() {
557845
557859
  t24 = $3[61];
557846
557860
  }
557847
557861
  const _latestNpm = getCachedLatestNpmVersionSync();
557848
- const _updateFeeds = _latestNpm && gt(_latestNpm, "1.4.470") ? [createUpdateAvailableFeed("1.4.470", _latestNpm)] : [];
557862
+ const _updateFeeds = _latestNpm && gt(_latestNpm, "1.4.471") ? [createUpdateAvailableFeed("1.4.471", _latestNpm)] : [];
557849
557863
  const t25 = layoutMode === "horizontal" && /* @__PURE__ */ jsx_runtime236.jsx(FeedColumn, {
557850
557864
  feeds: showOnboarding ? [createProjectOnboardingFeed(getSteps()), createRecentActivityFeed(activities)] : showGuestPassesUpsell ? [createRecentActivityFeed(activities), createGuestPassesFeed()] : showOverageCreditUpsell ? [createRecentActivityFeed(activities), createOverageCreditFeed()] : [createRecentActivityFeed(activities), ..._updateFeeds, createWhatsNewFeed(changelog)],
557851
557865
  maxWidth: rightWidth
@@ -558045,12 +558059,12 @@ function LogoV2() {
558045
558059
  return t41;
558046
558060
  }
558047
558061
  function _temp327(current) {
558048
- if (current.lastReleaseNotesSeen === "1.4.470") {
558062
+ if (current.lastReleaseNotesSeen === "1.4.471") {
558049
558063
  return current;
558050
558064
  }
558051
558065
  return {
558052
558066
  ...current,
558053
- lastReleaseNotesSeen: "1.4.470"
558067
+ lastReleaseNotesSeen: "1.4.471"
558054
558068
  };
558055
558069
  }
558056
558070
  function _temp241(s_0) {
@@ -558715,7 +558729,7 @@ var init_statusNoticeDefinitions = __esm(() => {
558715
558729
  if (!isSupportedJetBrainsTerminal()) {
558716
558730
  return false;
558717
558731
  }
558718
- const shouldAutoInstall = context2.config.autoInstallIdeExtension ?? true;
558732
+ const shouldAutoInstall = context2.config.autoInstallIdeExtension ?? false;
558719
558733
  if (!shouldAutoInstall) {
558720
558734
  return false;
558721
558735
  }
@@ -564517,7 +564531,7 @@ var init_ultrareviewCommand = __esm(() => {
564517
564531
  });
564518
564532
 
564519
564533
  // src/commands/review.ts
564520
- var CCR_TERMS_URL = "https://rayu-web.vercel.app/docs", LOCAL_REVIEW_PROMPT = (args) => `
564534
+ var CCR_TERMS_URL = "https://rayucode.com/docs", LOCAL_REVIEW_PROMPT = (args) => `
564521
564535
  You are an expert code reviewer. Follow these steps:
564522
564536
 
564523
564537
  1. If no PR number is provided in the args, run \`gh pr list\` to show open PRs
@@ -565949,7 +565963,7 @@ ${reasons}`,
565949
565963
  } : prev);
565950
565964
  }
565951
565965
  }
565952
- var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://rayu-web.vercel.app/docs", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call29 = async (onDone, context2, args) => {
565966
+ var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://rayucode.com/docs", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call29 = async (onDone, context2, args) => {
565953
565967
  const blurb = args.trim();
565954
565968
  if (!blurb) {
565955
565969
  const msg = await launchUltraplan2({
@@ -576679,7 +576693,7 @@ async function call43(onDone, context2, args) {
576679
576693
  };
576680
576694
  const titleInfo = title ? ` "${title}"` : "";
576681
576695
  const resumeHint = `
576682
- To resume the original: claude -r ${originalSessionId}`;
576696
+ To resume the original: rayu -r ${originalSessionId}`;
576683
576697
  const successMessage = `Branched conversation${titleInfo}. You are now in the branch.${resumeHint}`;
576684
576698
  if (context2.resume) {
576685
576699
  await context2.resume(sessionId, forkLog, "fork");
@@ -583049,7 +583063,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
583049
583063
  smapsRollup,
583050
583064
  platform: process.platform,
583051
583065
  nodeVersion: process.version,
583052
- ccVersion: "1.4.470"
583066
+ ccVersion: "1.4.471"
583053
583067
  };
583054
583068
  }
583055
583069
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -583571,7 +583585,7 @@ var init_bridge_kick = __esm(() => {
583571
583585
  var call50 = async () => {
583572
583586
  return {
583573
583587
  type: "text",
583574
- value: "1.4.470"
583588
+ value: "1.4.471"
583575
583589
  };
583576
583590
  }, version2, version_default;
583577
583591
  var init_version = __esm(() => {
@@ -584294,8 +584308,8 @@ function OverridesSelect(t0) {
584294
584308
  "Learn more:",
584295
584309
  " ",
584296
584310
  /* @__PURE__ */ jsx_runtime314.jsx(Link, {
584297
- url: "https://rayu-web.vercel.app/docs",
584298
- children: "rayu-web.vercel.app/docs"
584311
+ url: "https://rayucode.com/docs",
584312
+ children: "rayucode.com/docs"
584299
584313
  })
584300
584314
  ]
584301
584315
  })
@@ -584665,8 +584679,8 @@ function SandboxModeTab(t0) {
584665
584679
  "Learn more:",
584666
584680
  " ",
584667
584681
  /* @__PURE__ */ jsx_runtime315.jsx(Link, {
584668
- url: "https://rayu-web.vercel.app/docs",
584669
- children: "rayu-web.vercel.app/docs"
584682
+ url: "https://rayucode.com/docs",
584683
+ children: "rayucode.com/docs"
584670
584684
  })
584671
584685
  ]
584672
584686
  })
@@ -585081,29 +585095,52 @@ function fmtReset(seconds) {
585081
585095
  function usd2(cents) {
585082
585096
  return `$${(cents / 100).toFixed(cents % 100 === 0 ? 0 : 2)}`;
585083
585097
  }
585098
+ function usageBar(used, total, width = 22) {
585099
+ if (!total || total <= 0)
585100
+ return "";
585101
+ const ratio = Math.max(0, Math.min(1, used / total));
585102
+ const filled = Math.round(ratio * width);
585103
+ return `[${"█".repeat(filled)}${"░".repeat(Math.max(0, width - filled))}]`;
585104
+ }
585105
+ function usagePct(used, total) {
585106
+ if (!total || total <= 0)
585107
+ return "";
585108
+ return `${Math.round(used / total * 100)}%`;
585109
+ }
585084
585110
  function formatRayuUsageSummary(c4) {
585085
585111
  const lines2 = [];
585086
585112
  const price = c4.priceCents > 0 ? ` (${usd2(c4.priceCents)}/mo)` : "";
585087
- lines2.push(`Plan: ${c4.planName || c4.plan}${price}`);
585113
+ lines2.push("Rayu Plan Usage");
585114
+ lines2.push("");
585115
+ lines2.push(` Plan ${c4.planName || c4.plan}${price}`);
585088
585116
  if (c4.periodEnd) {
585089
- lines2.push(`Renews: ${new Date(c4.periodEnd).toLocaleDateString()}`);
585117
+ lines2.push(` Renews ${new Date(c4.periodEnd).toLocaleDateString()}`);
585090
585118
  }
585091
585119
  if (c4.creditsPerPeriod == null) {
585092
- lines2.push("No hosted credit allowance on this plan — upgrade at /billing.");
585120
+ lines2.push("");
585121
+ lines2.push(" No hosted credit allowance on this plan — upgrade at /billing.");
585093
585122
  } else {
585094
585123
  const remC = c4.remainingCredits ?? 0;
585095
- lines2.push(`Credits: ${c4.usedCredits.toLocaleString()} / ${c4.creditsPerPeriod.toLocaleString()} used · ${remC.toLocaleString()} left (resets in ${fmtReset(c4.resetSeconds)})`);
585124
+ lines2.push("");
585125
+ lines2.push(` Credits ${usageBar(c4.usedCredits, c4.creditsPerPeriod)} ${usagePct(c4.usedCredits, c4.creditsPerPeriod)}`);
585126
+ lines2.push(` ${c4.usedCredits.toLocaleString()} / ${c4.creditsPerPeriod.toLocaleString()} used · ${remC.toLocaleString()} left · resets in ${fmtReset(c4.resetSeconds)}`);
585096
585127
  if (c4.allowanceTokens != null) {
585097
- lines2.push(`Tokens: ${(c4.usedTokens ?? 0).toLocaleString()} / ${c4.allowanceTokens.toLocaleString()}`);
585128
+ const usedT = c4.usedTokens ?? 0;
585129
+ lines2.push("");
585130
+ lines2.push(` Tokens ${usageBar(usedT, c4.allowanceTokens)} ${usagePct(usedT, c4.allowanceTokens)}`);
585131
+ lines2.push(` ${usedT.toLocaleString()} / ${c4.allowanceTokens.toLocaleString()}`);
585098
585132
  }
585099
585133
  }
585100
- if (c4.topUpEnabled) {
585101
- lines2.push(`Top-up balance: ${c4.topupBalance.toLocaleString()} credits`);
585102
- }
585103
585134
  if (c4.maxDailyTurns != null && c4.maxDailyTurns > 0) {
585104
585135
  const used = c4.turnsUsedToday ?? 0;
585105
585136
  const left = c4.turnsRemaining ?? Math.max(0, c4.maxDailyTurns - used);
585106
- lines2.push(`Daily turns: ${used.toLocaleString()} / ${c4.maxDailyTurns.toLocaleString()} used · ${left.toLocaleString()} left (resets in ${fmtReset(c4.turnsResetSeconds ?? 0)})`);
585137
+ lines2.push("");
585138
+ lines2.push(` Daily ${usageBar(used, c4.maxDailyTurns)} ${usagePct(used, c4.maxDailyTurns)}`);
585139
+ lines2.push(` ${used.toLocaleString()} / ${c4.maxDailyTurns.toLocaleString()} turns used · ${left.toLocaleString()} left · resets in ${fmtReset(c4.turnsResetSeconds ?? 0)}`);
585140
+ }
585141
+ if (c4.topUpEnabled) {
585142
+ lines2.push("");
585143
+ lines2.push(` Top-up ${c4.topupBalance.toLocaleString()} credits`);
585107
585144
  }
585108
585145
  return lines2.join(`
585109
585146
  `);
@@ -588424,13 +588461,13 @@ function SetModelAndClose({
588424
588461
  return;
588425
588462
  }
588426
588463
  if (model && isOpus1mUnavailable(model)) {
588427
- onDone(`Opus 4.6 with 1M context is not available for your account. Learn more: https://rayu-web.vercel.app/docs`, {
588464
+ onDone(`Opus 4.6 with 1M context is not available for your account. Learn more: https://rayucode.com/docs`, {
588428
588465
  display: "system"
588429
588466
  });
588430
588467
  return;
588431
588468
  }
588432
588469
  if (model && isSonnet1mUnavailable(model)) {
588433
- onDone(`Sonnet 4.6 with 1M context is not available for your account. Learn more: https://rayu-web.vercel.app/docs`, {
588470
+ onDone(`Sonnet 4.6 with 1M context is not available for your account. Learn more: https://rayucode.com/docs`, {
588434
588471
  display: "system"
588435
588472
  });
588436
588473
  return;
@@ -593829,7 +593866,7 @@ function generateHtmlReport(data, insights) {
593829
593866
  </html>`;
593830
593867
  }
593831
593868
  function buildExportData(data, insights, facets, remoteStats) {
593832
- const version3 = typeof MACRO !== "undefined" ? "1.4.470" : "unknown";
593869
+ const version3 = typeof MACRO !== "undefined" ? "1.4.471" : "unknown";
593833
593870
  const remote_hosts_collected = remoteStats?.hosts.filter((h3) => h3.sessionCount > 0).map((h3) => h3.name);
593834
593871
  const facets_summary = {
593835
593872
  total: facets.size,
@@ -597739,7 +597776,7 @@ var init_sessionStorage = __esm(() => {
597739
597776
  init_settings2();
597740
597777
  init_slowOperations();
597741
597778
  init_uuid();
597742
- VERSION6 = typeof MACRO !== "undefined" ? "1.4.470" : "unknown";
597779
+ VERSION6 = typeof MACRO !== "undefined" ? "1.4.471" : "unknown";
597743
597780
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
597744
597781
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
597745
597782
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -598957,7 +598994,7 @@ var init_filesystem = __esm(() => {
598957
598994
  });
598958
598995
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
598959
598996
  const nonce = randomBytes19(16).toString("hex");
598960
- return join153(getClaudeTempDir(), "bundled-skills", "1.4.470", nonce);
598997
+ return join153(getClaudeTempDir(), "bundled-skills", "1.4.471", nonce);
598961
598998
  });
598962
598999
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
598963
599000
  });
@@ -604127,7 +604164,7 @@ __export(exports_update, {
604127
604164
  update: () => update
604128
604165
  });
604129
604166
  async function update() {
604130
- writeToStdout(`Current version: ${"1.4.470"}
604167
+ writeToStdout(`Current version: ${"1.4.471"}
604131
604168
  `);
604132
604169
  const isBundled = isInBundledMode();
604133
604170
  if (isBundled) {
@@ -604158,13 +604195,13 @@ Manual check: npm view ${"@rayu-dev/rayu-cli"} version
604158
604195
  process.exit(1);
604159
604196
  return;
604160
604197
  }
604161
- if (latestVersion === "1.4.470") {
604198
+ if (latestVersion === "1.4.471") {
604162
604199
  writeToStdout(source_default.green(`
604163
- Rayu CLI is up to date (${"1.4.470"})
604200
+ Rayu CLI is up to date (${"1.4.471"})
604164
604201
  `));
604165
604202
  process.exit(0);
604166
604203
  }
604167
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.4.470"})
604204
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.4.471"})
604168
604205
  `);
604169
604206
  writeToStdout(`Installing update...
604170
604207
 
@@ -604231,14 +604268,14 @@ async function updateNativeBinary() {
604231
604268
  } catch {
604232
604269
  latestVersion = "";
604233
604270
  }
604234
- if (latestVersion && latestVersion === "1.4.470") {
604271
+ if (latestVersion && latestVersion === "1.4.471") {
604235
604272
  writeToStdout(source_default.green(`
604236
- Rayu CLI is up to date (1.4.470)
604273
+ Rayu CLI is up to date (1.4.471)
604237
604274
  `));
604238
604275
  process.exit(0);
604239
604276
  }
604240
604277
  if (latestVersion) {
604241
- writeToStdout(`New version available: ${latestVersion} (current: 1.4.470)
604278
+ writeToStdout(`New version available: ${latestVersion} (current: 1.4.471)
604242
604279
  `);
604243
604280
  }
604244
604281
  writeToStdout(`Downloading and installing update...
@@ -604253,13 +604290,13 @@ Rayu CLI is up to date (1.4.470)
604253
604290
  return;
604254
604291
  }
604255
604292
  writeToStdout(source_default.green(`
604256
- Rayu CLI is up to date (1.4.470)
604293
+ Rayu CLI is up to date (1.4.471)
604257
604294
  `));
604258
604295
  process.exit(0);
604259
604296
  }
604260
604297
  const updatedTo = result.latestVersion ?? latestVersion ?? "latest";
604261
604298
  writeToStdout(source_default.green(`
604262
- Successfully updated from 1.4.470 to ${updatedTo}
604299
+ Successfully updated from 1.4.471 to ${updatedTo}
604263
604300
  `));
604264
604301
  writeToStdout(`Restart your terminal to use the new version.
604265
604302
  `);
@@ -604324,7 +604361,7 @@ async function removeDataDir(dir) {
604324
604361
  async function uninstall(args = []) {
604325
604362
  const yes = args.includes("--yes") || args.includes("-y");
604326
604363
  const keepData = args.includes("--keep-data");
604327
- writeToStdout(`Uninstalling Rayu CLI (${"1.4.470"})...
604364
+ writeToStdout(`Uninstalling Rayu CLI (${"1.4.471"})...
604328
604365
  `);
604329
604366
  writeToStdout(`Running: npm uninstall -g ${"@rayu-dev/rayu-cli"}
604330
604367
 
@@ -604358,7 +604395,7 @@ This looks like a permissions error on npm's global install
604358
604395
  return;
604359
604396
  }
604360
604397
  writeToStdout(source_default.green(`
604361
- Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.4.470"}
604398
+ Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.4.471"}
604362
604399
  `));
604363
604400
  const configDir = getRayuConfigHomeDir();
604364
604401
  const dataExists = existsSync28(configDir);
@@ -604441,7 +604478,7 @@ function showFirstRunWelcome() {
604441
604478
  `);
604442
604479
  try {
604443
604480
  mkdirSync16(getRayuConfigHomeDir(), { recursive: true });
604444
- writeFileSync18(markerPath(), "1.4.470", "utf8");
604481
+ writeFileSync18(markerPath(), "1.4.471", "utf8");
604445
604482
  } catch {}
604446
604483
  }
604447
604484
  var init_firstRun = __esm(() => {
@@ -620627,7 +620664,7 @@ async function initializeBetaTracing(resource) {
620627
620664
  });
620628
620665
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
620629
620666
  setLoggerProvider(loggerProvider);
620630
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.4.470");
620667
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.4.471");
620631
620668
  setEventLogger(eventLogger);
620632
620669
  process.on("beforeExit", async () => {
620633
620670
  await loggerProvider?.forceFlush();
@@ -620667,7 +620704,7 @@ async function initializeTelemetry() {
620667
620704
  const platform4 = getPlatform();
620668
620705
  const baseAttributes = {
620669
620706
  [import_semantic_conventions.ATTR_SERVICE_NAME]: "claude-code",
620670
- [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.4.470"
620707
+ [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.4.471"
620671
620708
  };
620672
620709
  if (platform4 === "wsl") {
620673
620710
  const wslVersion = getWslVersion();
@@ -620712,7 +620749,7 @@ async function initializeTelemetry() {
620712
620749
  } catch {}
620713
620750
  };
620714
620751
  registerCleanup(shutdownTelemetry2);
620715
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.4.470");
620752
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.4.471");
620716
620753
  }
620717
620754
  const meterProvider = new import_sdk_metrics2.MeterProvider({
620718
620755
  resource,
@@ -620732,7 +620769,7 @@ async function initializeTelemetry() {
620732
620769
  });
620733
620770
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
620734
620771
  setLoggerProvider(loggerProvider);
620735
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.4.470");
620772
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.4.471");
620736
620773
  setEventLogger(eventLogger);
620737
620774
  logForDebugging("[3P telemetry] Event logger set successfully");
620738
620775
  process.on("beforeExit", async () => {
@@ -620794,7 +620831,7 @@ Current timeout: ${timeoutMs}ms
620794
620831
  }
620795
620832
  };
620796
620833
  registerCleanup(shutdownTelemetry);
620797
- return meterProvider.getMeter("com.anthropic.claude_code", "1.4.470");
620834
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.4.471");
620798
620835
  }
620799
620836
  async function flushTelemetry() {
620800
620837
  const meterProvider = getMeterProvider();
@@ -621502,7 +621539,7 @@ function CostThresholdDialog(t0) {
621502
621539
  children: "Learn more about how to monitor your spending:"
621503
621540
  }),
621504
621541
  /* @__PURE__ */ jsx_runtime345.jsx(Link, {
621505
- url: "https://rayu-web.vercel.app/docs"
621542
+ url: "https://rayucode.com/docs"
621506
621543
  })
621507
621544
  ]
621508
621545
  });
@@ -622296,7 +622333,7 @@ function buildSystemInitMessage(inputs) {
622296
622333
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
622297
622334
  apiKeySource: getAnthropicApiKeyWithSource().source,
622298
622335
  betas: getSdkBetas(),
622299
- claude_code_version: "1.4.470",
622336
+ claude_code_version: "1.4.471",
622300
622337
  output_style: outputStyle2,
622301
622338
  agents: inputs.agents.map((agent) => agent.agentType),
622302
622339
  skills: inputs.skills.filter((s2) => s2.userInvocable !== false).map((skill) => skill.name),
@@ -638529,8 +638566,8 @@ function FastModePicker(t0) {
638529
638566
  "Learn more:",
638530
638567
  " ",
638531
638568
  /* @__PURE__ */ jsx_runtime386.jsx(Link, {
638532
- url: "https://rayu-web.vercel.app/docs",
638533
- children: "https://rayu-web.vercel.app/docs"
638569
+ url: "https://rayucode.com/docs",
638570
+ children: "https://rayucode.com/docs"
638534
638571
  })
638535
638572
  ]
638536
638573
  });
@@ -638627,7 +638664,7 @@ var init_useVoiceEnabled = __esm(() => {
638627
638664
  function getSemverPart(version3) {
638628
638665
  return `${import_semver12.major(version3, { loose: true })}.${import_semver12.minor(version3, { loose: true })}.${import_semver12.patch(version3, { loose: true })}`;
638629
638666
  }
638630
- function useUpdateNotification(updatedVersion, initialVersion = "1.4.470") {
638667
+ function useUpdateNotification(updatedVersion, initialVersion = "1.4.471") {
638631
638668
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react216.useState(() => getSemverPart(initialVersion));
638632
638669
  if (!updatedVersion) {
638633
638670
  return null;
@@ -638667,7 +638704,7 @@ function AutoUpdater({
638667
638704
  return;
638668
638705
  }
638669
638706
  if (false) {}
638670
- const currentVersion = "1.4.470";
638707
+ const currentVersion = "1.4.471";
638671
638708
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
638672
638709
  let latestVersion = await getLatestVersion(channel2);
638673
638710
  const isDisabled = isAutoUpdaterDisabled();
@@ -638880,12 +638917,12 @@ function NativeAutoUpdater({
638880
638917
  logEvent("tengu_native_auto_updater_start", {});
638881
638918
  try {
638882
638919
  const maxVersion = await getMaxVersion();
638883
- if (maxVersion && gt("1.4.470", maxVersion)) {
638920
+ if (maxVersion && gt("1.4.471", maxVersion)) {
638884
638921
  const msg = await getMaxVersionMessage();
638885
638922
  setMaxVersionIssue(msg ?? "affects your version");
638886
638923
  }
638887
638924
  const result = await installLatest(channel2);
638888
- const currentVersion = "1.4.470";
638925
+ const currentVersion = "1.4.471";
638889
638926
  const latencyMs = Date.now() - startTime2;
638890
638927
  if (result.lockFailed) {
638891
638928
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -639022,17 +639059,17 @@ function PackageManagerAutoUpdater(t0) {
639022
639059
  const maxVersion = await getMaxVersion();
639023
639060
  if (maxVersion && latest && gt(latest, maxVersion)) {
639024
639061
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
639025
- if (gte("1.4.470", maxVersion)) {
639026
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.4.470"} is already at or above maxVersion ${maxVersion}, skipping update`);
639062
+ if (gte("1.4.471", maxVersion)) {
639063
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.4.471"} is already at or above maxVersion ${maxVersion}, skipping update`);
639027
639064
  setUpdateAvailable(false);
639028
639065
  return;
639029
639066
  }
639030
639067
  latest = maxVersion;
639031
639068
  }
639032
- const hasUpdate = latest && !gte("1.4.470", latest) && !shouldSkipVersion(latest);
639069
+ const hasUpdate = latest && !gte("1.4.471", latest) && !shouldSkipVersion(latest);
639033
639070
  setUpdateAvailable(!!hasUpdate);
639034
639071
  if (hasUpdate) {
639035
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.4.470"} -> ${latest}`);
639072
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.4.471"} -> ${latest}`);
639036
639073
  }
639037
639074
  };
639038
639075
  $3[0] = t1;
@@ -639066,7 +639103,7 @@ function PackageManagerAutoUpdater(t0) {
639066
639103
  wrap: "truncate",
639067
639104
  children: [
639068
639105
  "currentVersion: ",
639069
- "1.4.470"
639106
+ "1.4.471"
639070
639107
  ]
639071
639108
  });
639072
639109
  $3[3] = verbose;
@@ -647230,7 +647267,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
647230
647267
  project_dir: getOriginalCwd(),
647231
647268
  added_dirs: addedDirs
647232
647269
  },
647233
- version: "1.4.470",
647270
+ version: "1.4.471",
647234
647271
  output_style: {
647235
647272
  name: outputStyleName
647236
647273
  },
@@ -649409,7 +649446,7 @@ var init_user = __esm(() => {
649409
649446
  deviceId,
649410
649447
  sessionId: getSessionId(),
649411
649448
  email: getEmail(),
649412
- appVersion: "1.4.470",
649449
+ appVersion: "1.4.471",
649413
649450
  platform: getHostPlatformForAnalytics(),
649414
649451
  organizationUuid,
649415
649452
  accountUuid,
@@ -658848,7 +658885,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
658848
658885
  } catch {}
658849
658886
  const data = {
658850
658887
  trigger,
658851
- version: "1.4.470",
658888
+ version: "1.4.471",
658852
658889
  platform: process.platform,
658853
658890
  transcript,
658854
658891
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -659676,7 +659713,7 @@ function TranscriptSharePrompt(t0) {
659676
659713
  marginLeft: 2,
659677
659714
  children: /* @__PURE__ */ jsx_runtime429.jsx(ThemedText, {
659678
659715
  dimColor: true,
659679
- children: "Learn more: https://rayu-web.vercel.app/docs"
659716
+ children: "Learn more: https://rayucode.com/docs"
659680
659717
  })
659681
659718
  });
659682
659719
  $3[7] = t4;
@@ -660790,6 +660827,7 @@ function isSupportedPlatform3() {
660790
660827
  return process.platform === "darwin" || process.platform === "win32" && process.arch === "x64";
660791
660828
  }
660792
660829
  function shouldShowDesktopUpsellStartup() {
660830
+ return false;
660793
660831
  if (!isSupportedPlatform3())
660794
660832
  return false;
660795
660833
  if (!getDesktopUpsellConfig().enable_startup_dialog)
@@ -670163,7 +670201,7 @@ function MCPServerDialogCopy() {
670163
670201
  "MCP servers may execute code or access system resources. All tool calls require approval. Learn more in the",
670164
670202
  " ",
670165
670203
  /* @__PURE__ */ jsx_runtime451.jsx(Link, {
670166
- url: "https://rayu-web.vercel.app/docs",
670204
+ url: "https://rayucode.com/docs",
670167
670205
  children: "MCP documentation"
670168
670206
  }),
670169
670207
  "."
@@ -670815,7 +670853,7 @@ function WelcomeV2() {
670815
670853
  dimColor: true,
670816
670854
  children: [
670817
670855
  "v",
670818
- "1.4.470"
670856
+ "1.4.471"
670819
670857
  ]
670820
670858
  })
670821
670859
  ]
@@ -671822,7 +671860,7 @@ function completeOnboarding() {
671822
671860
  saveGlobalConfig((current) => ({
671823
671861
  ...current,
671824
671862
  hasCompletedOnboarding: true,
671825
- lastOnboardingVersion: "1.4.470"
671863
+ lastOnboardingVersion: "1.4.471"
671826
671864
  }));
671827
671865
  }
671828
671866
  function showDialog(root2, renderer) {
@@ -674059,7 +674097,7 @@ var init_keybindings3 = __esm(() => {
674059
674097
  init_bundledSkills();
674060
674098
  FILE_FORMAT_EXAMPLE = {
674061
674099
  $schema: "https://www.schemastore.org/claude-code-keybindings.json",
674062
- $docs: "https://rayu-web.vercel.app/docs",
674100
+ $docs: "https://rayucode.com/docs",
674063
674101
  bindings: [
674064
674102
  {
674065
674103
  context: "Chat",
@@ -676755,7 +676793,7 @@ function appendToLog(path29, message) {
676755
676793
  cwd: getFsImplementation().cwd(),
676756
676794
  userType: "external",
676757
676795
  sessionId: getSessionId(),
676758
- version: "1.4.470"
676796
+ version: "1.4.471"
676759
676797
  };
676760
676798
  getLogWriter(path29).write(messageWithTimestamp);
676761
676799
  }
@@ -680860,8 +680898,8 @@ async function getEnvLessBridgeConfig() {
680860
680898
  }
680861
680899
  async function checkEnvLessBridgeMinVersion() {
680862
680900
  const cfg = await getEnvLessBridgeConfig();
680863
- if (cfg.min_version && lt("1.4.470", cfg.min_version)) {
680864
- return `Your version of RAYU (${"1.4.470"}) is too old for Remote Control.
680901
+ if (cfg.min_version && lt("1.4.471", cfg.min_version)) {
680902
+ return `Your version of RAYU (${"1.4.471"}) is too old for Remote Control.
680865
680903
  Version ${cfg.min_version} or higher is required. Run \`claude update\` to update.`;
680866
680904
  }
680867
680905
  return null;
@@ -681334,7 +681372,7 @@ async function initBridgeCore(params) {
681334
681372
  const rawApi = createBridgeApiClient({
681335
681373
  baseUrl,
681336
681374
  getAccessToken,
681337
- runnerVersion: "1.4.470",
681375
+ runnerVersion: "1.4.471",
681338
681376
  onDebug: logForDebugging,
681339
681377
  onAuth401,
681340
681378
  getTrustedDeviceToken
@@ -686689,7 +686727,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
686689
686727
  setCwd(cwd3);
686690
686728
  const server = new Server({
686691
686729
  name: "claude/tengu",
686692
- version: "1.4.470"
686730
+ version: "1.4.471"
686693
686731
  }, {
686694
686732
  capabilities: {
686695
686733
  tools: {}
@@ -688331,6 +688369,9 @@ function initializeEntrypoint(isNonInteractive) {
688331
688369
  return;
688332
688370
  }
688333
688371
  process.env.CLAUDE_CODE_ENTRYPOINT = isNonInteractive ? "sdk-cli" : "cli";
688372
+ if (!process.env.AI_AGENT) {
688373
+ process.env.AI_AGENT = "rayu";
688374
+ }
688334
688375
  }
688335
688376
  async function main() {
688336
688377
  profileCheckpoint("main_function_start");
@@ -689215,7 +689256,7 @@ ${customInstructions}` : customInstructions;
689215
689256
  }
689216
689257
  }
689217
689258
  logForDiagnosticsNoPII("info", "started", {
689218
- version: "1.4.470",
689259
+ version: "1.4.471",
689219
689260
  is_native_binary: isInBundledMode()
689220
689261
  });
689221
689262
  registerCleanup(async () => {
@@ -689934,7 +689975,7 @@ Usage: rayu --remote "your task description"`, () => gracefulShutdown(1));
689934
689975
  pendingHookMessages
689935
689976
  }, renderAndRun);
689936
689977
  }
689937
- }).version(`1.4.470 (${PRODUCT_NAME})`, "-v, --version", "Output the version number");
689978
+ }).version(`1.4.471 (${PRODUCT_NAME})`, "-v, --version", "Output the version number");
689938
689979
  program.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
689939
689980
  program.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
689940
689981
  if (canUserConfigureAdvisor()) {
@@ -690394,7 +690435,7 @@ if (false) {}
690394
690435
  async function main2() {
690395
690436
  const args = process.argv.slice(2);
690396
690437
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
690397
- console.log(`${"1.4.470"} (Rayu-CLI)`);
690438
+ console.log(`${"1.4.471"} (Rayu-CLI)`);
690398
690439
  return;
690399
690440
  }
690400
690441
  if (!isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_TERMINAL_TITLE)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rayu-dev/rayu-cli",
3
- "version": "1.4.470",
3
+ "version": "1.4.471",
4
4
  "description": "Rayu-CLI — a multi-provider AI coding CLI",
5
5
  "type": "module",
6
6
  "bin": {