@rayu-dev/rayu-cli 1.1.7 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/rayu.js CHANGED
@@ -208302,7 +208302,7 @@ var init_auth2 = __esm(() => {
208302
208302
 
208303
208303
  // src/utils/userAgent.ts
208304
208304
  function getClaudeCodeUserAgent() {
208305
- return `claude-code/${"1.1.7"}`;
208305
+ return `claude-code/${"1.1.8"}`;
208306
208306
  }
208307
208307
 
208308
208308
  // src/utils/workloadContext.ts
@@ -208324,7 +208324,7 @@ function getUserAgent() {
208324
208324
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
208325
208325
  const workload = getWorkload();
208326
208326
  const workloadSuffix = workload ? `, workload/${workload}` : "";
208327
- return `claude-cli/${"1.1.7"} (${"external"}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
208327
+ return `claude-cli/${"1.1.8"} (${"external"}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
208328
208328
  }
208329
208329
  function getMCPUserAgent() {
208330
208330
  const parts = [];
@@ -208338,7 +208338,7 @@ function getMCPUserAgent() {
208338
208338
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
208339
208339
  }
208340
208340
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
208341
- return `claude-code/${"1.1.7"}${suffix}`;
208341
+ return `claude-code/${"1.1.8"}${suffix}`;
208342
208342
  }
208343
208343
  function getWebFetchUserAgent() {
208344
208344
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -208476,7 +208476,7 @@ var init_user = __esm(() => {
208476
208476
  deviceId,
208477
208477
  sessionId: getSessionId(),
208478
208478
  email: getEmail(),
208479
- appVersion: "1.1.7",
208479
+ appVersion: "1.1.8",
208480
208480
  platform: getHostPlatformForAnalytics(),
208481
208481
  organizationUuid,
208482
208482
  accountUuid,
@@ -216397,7 +216397,7 @@ var init_metadata = __esm(() => {
216397
216397
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
216398
216398
  WHITESPACE_REGEX = /\s+/;
216399
216399
  getVersionBase = memoize_default(() => {
216400
- const match = "1.1.7".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
216400
+ const match = "1.1.8".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
216401
216401
  return match ? match[0] : undefined;
216402
216402
  });
216403
216403
  buildEnvContext = memoize_default(async () => {
@@ -216437,7 +216437,7 @@ var init_metadata = __esm(() => {
216437
216437
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
216438
216438
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
216439
216439
  isClaudeAiAuth: isClaudeAISubscriber(),
216440
- version: "1.1.7",
216440
+ version: "1.1.8",
216441
216441
  versionBase: getVersionBase(),
216442
216442
  buildTime: "",
216443
216443
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
@@ -217057,7 +217057,7 @@ function initialize1PEventLogging() {
217057
217057
  const platform3 = getPlatform();
217058
217058
  const attributes = {
217059
217059
  [import_semantic_conventions.ATTR_SERVICE_NAME]: "claude-code",
217060
- [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.1.7"
217060
+ [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.1.8"
217061
217061
  };
217062
217062
  if (platform3 === "wsl") {
217063
217063
  const wslVersion = getWslVersion();
@@ -217084,7 +217084,7 @@ function initialize1PEventLogging() {
217084
217084
  })
217085
217085
  ]
217086
217086
  });
217087
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "1.1.7");
217087
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "1.1.8");
217088
217088
  }
217089
217089
  async function reinitialize1PEventLoggingIfConfigChanged() {
217090
217090
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -218918,7 +218918,7 @@ function getAttributionHeader(fingerprint) {
218918
218918
  if (!isAttributionHeaderEnabled()) {
218919
218919
  return "";
218920
218920
  }
218921
- const version5 = `${"1.1.7"}.${fingerprint}`;
218921
+ const version5 = `${"1.1.8"}.${fingerprint}`;
218922
218922
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
218923
218923
  const cch = "";
218924
218924
  const workload = getWorkload();
@@ -398449,7 +398449,7 @@ function getTelemetryAttributes() {
398449
398449
  attributes["session.id"] = sessionId;
398450
398450
  }
398451
398451
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
398452
- attributes["app.version"] = "1.1.7";
398452
+ attributes["app.version"] = "1.1.8";
398453
398453
  }
398454
398454
  const oauthAccount = getOauthAccountInfo();
398455
398455
  if (oauthAccount) {
@@ -429775,7 +429775,7 @@ function getInstallationEnv() {
429775
429775
  return;
429776
429776
  }
429777
429777
  function getClaudeCodeVersion() {
429778
- return "1.1.7";
429778
+ return "1.1.8";
429779
429779
  }
429780
429780
  async function getInstalledVSCodeExtensionVersion(command) {
429781
429781
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -435340,7 +435340,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
435340
435340
  const client5 = new Client({
435341
435341
  name: "claude-code",
435342
435342
  title: "RAYU",
435343
- version: "1.1.7",
435343
+ version: "1.1.8",
435344
435344
  description: "Anthropic's agentic coding tool",
435345
435345
  websiteUrl: PRODUCT_URL
435346
435346
  }, {
@@ -435694,7 +435694,7 @@ var init_client10 = __esm(() => {
435694
435694
  const client5 = new Client({
435695
435695
  name: "claude-code",
435696
435696
  title: "RAYU",
435697
- version: "1.1.7",
435697
+ version: "1.1.8",
435698
435698
  description: "Anthropic's agentic coding tool",
435699
435699
  websiteUrl: PRODUCT_URL
435700
435700
  }, {
@@ -453749,7 +453749,7 @@ async function initializeBetaTracing(resource) {
453749
453749
  });
453750
453750
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
453751
453751
  setLoggerProvider(loggerProvider);
453752
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.1.7");
453752
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.1.8");
453753
453753
  setEventLogger(eventLogger);
453754
453754
  process.on("beforeExit", async () => {
453755
453755
  await loggerProvider?.forceFlush();
@@ -453789,7 +453789,7 @@ async function initializeTelemetry() {
453789
453789
  const platform5 = getPlatform();
453790
453790
  const baseAttributes = {
453791
453791
  [import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
453792
- [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.1.7"
453792
+ [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.1.8"
453793
453793
  };
453794
453794
  if (platform5 === "wsl") {
453795
453795
  const wslVersion = getWslVersion();
@@ -453834,7 +453834,7 @@ async function initializeTelemetry() {
453834
453834
  } catch {}
453835
453835
  };
453836
453836
  registerCleanup(shutdownTelemetry2);
453837
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.7");
453837
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.8");
453838
453838
  }
453839
453839
  const meterProvider = new import_sdk_metrics2.MeterProvider({
453840
453840
  resource,
@@ -453854,7 +453854,7 @@ async function initializeTelemetry() {
453854
453854
  });
453855
453855
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
453856
453856
  setLoggerProvider(loggerProvider);
453857
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.1.7");
453857
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.1.8");
453858
453858
  setEventLogger(eventLogger);
453859
453859
  logForDebugging("[3P telemetry] Event logger set successfully");
453860
453860
  process.on("beforeExit", async () => {
@@ -453916,7 +453916,7 @@ Current timeout: ${timeoutMs}ms
453916
453916
  }
453917
453917
  };
453918
453918
  registerCleanup(shutdownTelemetry);
453919
- return meterProvider.getMeter("com.anthropic.claude_code", "1.1.7");
453919
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.1.8");
453920
453920
  }
453921
453921
  async function flushTelemetry() {
453922
453922
  const meterProvider = getMeterProvider();
@@ -454584,9 +454584,9 @@ async function assertMinVersion() {
454584
454584
  if (false) {}
454585
454585
  try {
454586
454586
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
454587
- if (versionConfig.minVersion && lt("1.1.7", versionConfig.minVersion)) {
454587
+ if (versionConfig.minVersion && lt("1.1.8", versionConfig.minVersion)) {
454588
454588
  console.error(`
454589
- It looks like your version of RAYU (${"1.1.7"}) needs an update.
454589
+ It looks like your version of RAYU (${"1.1.8"}) needs an update.
454590
454590
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
454591
454591
 
454592
454592
  To update, please run:
@@ -454798,7 +454798,7 @@ async function installGlobalPackage(specificVersion) {
454798
454798
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
454799
454799
  logEvent("tengu_auto_updater_lock_contention", {
454800
454800
  pid: process.pid,
454801
- currentVersion: "1.1.7"
454801
+ currentVersion: "1.1.8"
454802
454802
  });
454803
454803
  return "in_progress";
454804
454804
  }
@@ -454807,7 +454807,7 @@ async function installGlobalPackage(specificVersion) {
454807
454807
  if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
454808
454808
  logError2(new Error("Windows NPM detected in WSL environment"));
454809
454809
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
454810
- currentVersion: "1.1.7"
454810
+ currentVersion: "1.1.8"
454811
454811
  });
454812
454812
  console.error(`
454813
454813
  Error: Windows NPM detected in WSL
@@ -455342,7 +455342,7 @@ function detectLinuxGlobPatternWarnings() {
455342
455342
  }
455343
455343
  async function getDoctorDiagnostic() {
455344
455344
  const installationType = await getCurrentInstallationType();
455345
- const version5 = typeof MACRO !== "undefined" ? "1.1.7" : "unknown";
455345
+ const version5 = typeof MACRO !== "undefined" ? "1.1.8" : "unknown";
455346
455346
  const installationPath = await getInstallationPath();
455347
455347
  const invokedBinary = getInvokedBinary();
455348
455348
  const multipleInstallations = await detectMultipleInstallations();
@@ -456166,8 +456166,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
456166
456166
  const maxVersion = await getMaxVersion();
456167
456167
  if (maxVersion && gt(version5, maxVersion)) {
456168
456168
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version5} to ${maxVersion}`);
456169
- if (gte("1.1.7", maxVersion)) {
456170
- logForDebugging(`Native installer: current version ${"1.1.7"} is already at or above maxVersion ${maxVersion}, skipping update`);
456169
+ if (gte("1.1.8", maxVersion)) {
456170
+ logForDebugging(`Native installer: current version ${"1.1.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
456171
456171
  logEvent("tengu_native_update_skipped_max_version", {
456172
456172
  latency_ms: Date.now() - startTime,
456173
456173
  max_version: maxVersion,
@@ -456178,7 +456178,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
456178
456178
  version5 = maxVersion;
456179
456179
  }
456180
456180
  }
456181
- if (!forceReinstall && version5 === "1.1.7" && await versionIsAvailable(version5) && await isPossibleClaudeBinary(executablePath)) {
456181
+ if (!forceReinstall && version5 === "1.1.8" && await versionIsAvailable(version5) && await isPossibleClaudeBinary(executablePath)) {
456182
456182
  logForDebugging(`Found ${version5} at ${executablePath}, skipping install`);
456183
456183
  logEvent("tengu_native_update_complete", {
456184
456184
  latency_ms: Date.now() - startTime,
@@ -570004,7 +570004,7 @@ function Feedback({
570004
570004
  platform: env4.platform,
570005
570005
  gitRepo: envInfo.isGit,
570006
570006
  terminal: env4.terminal,
570007
- version: "1.1.7",
570007
+ version: "1.1.8",
570008
570008
  transcript: normalizeMessagesForAPI(messages),
570009
570009
  errors: sanitizedErrors,
570010
570010
  lastApiRequest: getLastAPIRequest(),
@@ -570196,7 +570196,7 @@ function Feedback({
570196
570196
  ", ",
570197
570197
  env4.terminal,
570198
570198
  ", v",
570199
- "1.1.7"
570199
+ "1.1.8"
570200
570200
  ]
570201
570201
  }, undefined, true, undefined, this)
570202
570202
  ]
@@ -570302,7 +570302,7 @@ ${sanitizedDescription}
570302
570302
  ` + `**Environment Info**
570303
570303
  ` + `- Platform: ${env4.platform}
570304
570304
  ` + `- Terminal: ${env4.terminal}
570305
- ` + `- Version: ${"1.1.7"}
570305
+ ` + `- Version: ${"1.1.8"}
570306
570306
  ` + `- Feedback ID: ${feedbackId}
570307
570307
  ` + `
570308
570308
  **Errors**
@@ -573402,7 +573402,7 @@ function buildPrimarySection() {
573402
573402
  }, undefined, false, undefined, this);
573403
573403
  return [{
573404
573404
  label: "Version",
573405
- value: "1.1.7"
573405
+ value: "1.1.8"
573406
573406
  }, {
573407
573407
  label: "Session name",
573408
573408
  value: nameValue
@@ -577153,7 +577153,7 @@ function Config({
577153
577153
  }
577154
577154
  }, undefined, false, undefined, this)
577155
577155
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime182.jsxDEV(ChannelDowngradeDialog, {
577156
- currentVersion: "1.1.7",
577156
+ currentVersion: "1.1.8",
577157
577157
  onChoice: (choice) => {
577158
577158
  setShowSubmenu(null);
577159
577159
  setTabsHidden(false);
@@ -577165,7 +577165,7 @@ function Config({
577165
577165
  autoUpdatesChannel: "stable"
577166
577166
  };
577167
577167
  if (choice === "stay") {
577168
- newSettings.minimumVersion = "1.1.7";
577168
+ newSettings.minimumVersion = "1.1.8";
577169
577169
  }
577170
577170
  updateSettingsForSource("userSettings", newSettings);
577171
577171
  setSettingsData((prev_27) => ({
@@ -585166,7 +585166,7 @@ function HelpV2(t0) {
585166
585166
  let t6;
585167
585167
  if ($3[31] !== tabs) {
585168
585168
  t6 = /* @__PURE__ */ jsx_dev_runtime209.jsxDEV(Tabs, {
585169
- title: `Rayu-CLI v${"1.1.7"}`,
585169
+ title: `Rayu-CLI v${"1.1.8"}`,
585170
585170
  color: "professionalBlue",
585171
585171
  defaultTab: "general",
585172
585172
  children: tabs
@@ -607979,7 +607979,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
607979
607979
  return [];
607980
607980
  }
607981
607981
  }
607982
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.7") {
607982
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.8") {
607983
607983
  if (false) {}
607984
607984
  const cachedChangelog = await getStoredChangelog();
607985
607985
  if (lastSeenVersion !== currentVersion || !cachedChangelog) {
@@ -607992,7 +607992,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.7") {
607992
607992
  releaseNotes
607993
607993
  };
607994
607994
  }
607995
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.7") {
607995
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.8") {
607996
607996
  if (false) {}
607997
607997
  const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion);
607998
607998
  return {
@@ -609178,7 +609178,7 @@ function getRecentActivitySync() {
609178
609178
  return cachedActivity;
609179
609179
  }
609180
609180
  function getLogoDisplayData() {
609181
- const version5 = process.env.DEMO_VERSION ?? "1.1.7";
609181
+ const version5 = process.env.DEMO_VERSION ?? "1.1.8";
609182
609182
  const serverUrl = getDirectConnectServerUrl();
609183
609183
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
609184
609184
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -610431,7 +610431,7 @@ function LogoV2() {
610431
610431
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
610432
610432
  t2 = () => {
610433
610433
  const currentConfig = getGlobalConfig();
610434
- if (currentConfig.lastReleaseNotesSeen === "1.1.7") {
610434
+ if (currentConfig.lastReleaseNotesSeen === "1.1.8") {
610435
610435
  return;
610436
610436
  }
610437
610437
  saveGlobalConfig(_temp328);
@@ -611107,12 +611107,12 @@ function LogoV2() {
611107
611107
  return t41;
611108
611108
  }
611109
611109
  function _temp328(current) {
611110
- if (current.lastReleaseNotesSeen === "1.1.7") {
611110
+ if (current.lastReleaseNotesSeen === "1.1.8") {
611111
611111
  return current;
611112
611112
  }
611113
611113
  return {
611114
611114
  ...current,
611115
- lastReleaseNotesSeen: "1.1.7"
611115
+ lastReleaseNotesSeen: "1.1.8"
611116
611116
  };
611117
611117
  }
611118
611118
  function _temp243(s_0) {
@@ -637503,7 +637503,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
637503
637503
  smapsRollup,
637504
637504
  platform: process.platform,
637505
637505
  nodeVersion: process.version,
637506
- ccVersion: "1.1.7"
637506
+ ccVersion: "1.1.8"
637507
637507
  };
637508
637508
  }
637509
637509
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -638031,7 +638031,7 @@ var init_bridge_kick = __esm(() => {
638031
638031
  var call59 = async () => {
638032
638032
  return {
638033
638033
  type: "text",
638034
- value: "1.1.7"
638034
+ value: "1.1.8"
638035
638035
  };
638036
638036
  }, version5, version_default;
638037
638037
  var init_version = __esm(() => {
@@ -647425,7 +647425,7 @@ function generateHtmlReport(data, insights) {
647425
647425
  </html>`;
647426
647426
  }
647427
647427
  function buildExportData(data, insights, facets, remoteStats) {
647428
- const version6 = typeof MACRO !== "undefined" ? "1.1.7" : "unknown";
647428
+ const version6 = typeof MACRO !== "undefined" ? "1.1.8" : "unknown";
647429
647429
  const remote_hosts_collected = remoteStats?.hosts.filter((h3) => h3.sessionCount > 0).map((h3) => h3.name);
647430
647430
  const facets_summary = {
647431
647431
  total: facets.size,
@@ -651409,7 +651409,7 @@ var init_sessionStorage = __esm(() => {
651409
651409
  init_settings2();
651410
651410
  init_slowOperations();
651411
651411
  init_uuid();
651412
- VERSION6 = typeof MACRO !== "undefined" ? "1.1.7" : "unknown";
651412
+ VERSION6 = typeof MACRO !== "undefined" ? "1.1.8" : "unknown";
651413
651413
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
651414
651414
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
651415
651415
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -652630,7 +652630,7 @@ var init_filesystem = __esm(() => {
652630
652630
  });
652631
652631
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
652632
652632
  const nonce = randomBytes19(16).toString("hex");
652633
- return join150(getClaudeTempDir(), "bundled-skills", "1.1.7", nonce);
652633
+ return join150(getClaudeTempDir(), "bundled-skills", "1.1.8", nonce);
652634
652634
  });
652635
652635
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
652636
652636
  });
@@ -658603,7 +658603,7 @@ function computeFingerprint(messageText, version6) {
658603
658603
  }
658604
658604
  function computeFingerprintFromMessages(messages) {
658605
658605
  const firstMessageText = extractFirstMessageText(messages);
658606
- return computeFingerprint(firstMessageText, "1.1.7");
658606
+ return computeFingerprint(firstMessageText, "1.1.8");
658607
658607
  }
658608
658608
  var FINGERPRINT_SALT = "59cf53e54c78";
658609
658609
  var init_fingerprint = () => {};
@@ -660445,7 +660445,7 @@ async function sideQuery(opts) {
660445
660445
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
660446
660446
  }
660447
660447
  const messageText = extractFirstUserMessageText(messages);
660448
- const fingerprint = computeFingerprint(messageText, "1.1.7");
660448
+ const fingerprint = computeFingerprint(messageText, "1.1.8");
660449
660449
  const attributionHeader = getAttributionHeader(fingerprint);
660450
660450
  const systemBlocks = [
660451
660451
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -661046,6 +661046,55 @@ var init_chromeNativeHost = __esm(() => {
661046
661046
  }).passthrough());
661047
661047
  });
661048
661048
 
661049
+ // src/utils/firstRun.ts
661050
+ var exports_firstRun = {};
661051
+ __export(exports_firstRun, {
661052
+ showFirstRunWelcome: () => showFirstRunWelcome
661053
+ });
661054
+ import { existsSync as existsSync17, mkdirSync as mkdirSync11, writeFileSync as writeFileSync13 } from "node:fs";
661055
+ import { join as join154 } from "node:path";
661056
+ function markerPath() {
661057
+ return join154(getClaudeConfigHomeDir(), ".installed");
661058
+ }
661059
+ function showFirstRunWelcome() {
661060
+ try {
661061
+ if (existsSync17(markerPath())) {
661062
+ return;
661063
+ }
661064
+ } catch {
661065
+ return;
661066
+ }
661067
+ const lines2 = [
661068
+ "",
661069
+ " +--------------------------------------------------+",
661070
+ " | |",
661071
+ " | Rayu CLI installed successfully! |",
661072
+ " | |",
661073
+ " | Run rayu to start an AI session |",
661074
+ " | |",
661075
+ " +--------------------------------------------------+",
661076
+ "",
661077
+ " Quick reference:",
661078
+ " rayu Start an interactive AI session",
661079
+ " rayu update Update to the latest version",
661080
+ " rayu uninstall Remove Rayu CLI from your system",
661081
+ " rayu --help See all commands and options",
661082
+ "",
661083
+ " Docs & issues: https://github.com/Choeng-Rayu/rayu-cli",
661084
+ ""
661085
+ ];
661086
+ process.stdout.write(lines2.join(`
661087
+ `) + `
661088
+ `);
661089
+ try {
661090
+ mkdirSync11(getClaudeConfigHomeDir(), { recursive: true });
661091
+ writeFileSync13(markerPath(), "1.1.8", "utf8");
661092
+ } catch {}
661093
+ }
661094
+ var init_firstRun = __esm(() => {
661095
+ init_envUtils();
661096
+ });
661097
+
661049
661098
  // node_modules/commander/lib/error.js
661050
661099
  var require_error3 = __commonJS((exports) => {
661051
661100
  class CommanderError extends Error {
@@ -663340,7 +663389,7 @@ __export(exports_upstreamproxy, {
663340
663389
  });
663341
663390
  import { mkdir as mkdir46, readFile as readFile57, unlink as unlink27, writeFile as writeFile46 } from "fs/promises";
663342
663391
  import { homedir as homedir36 } from "os";
663343
- import { join as join154 } from "path";
663392
+ import { join as join155 } from "path";
663344
663393
  async function initUpstreamProxy(opts) {
663345
663394
  if (!isEnvTruthy(process.env.CLAUDE_CODE_REMOTE)) {
663346
663395
  return state3;
@@ -663361,7 +663410,7 @@ async function initUpstreamProxy(opts) {
663361
663410
  }
663362
663411
  setNonDumpable();
663363
663412
  const baseUrl = opts?.ccrBaseUrl ?? process.env.ANTHROPIC_BASE_URL ?? "https://api.anthropic.com";
663364
- const caBundlePath = opts?.caBundlePath ?? join154(homedir36(), ".ccr", "ca-bundle.crt");
663413
+ const caBundlePath = opts?.caBundlePath ?? join155(homedir36(), ".ccr", "ca-bundle.crt");
663365
663414
  const caOk = await downloadCaBundle(baseUrl, opts?.systemCaPath ?? SYSTEM_CA_BUNDLE, caBundlePath);
663366
663415
  if (!caOk)
663367
663416
  return state3;
@@ -663461,7 +663510,7 @@ async function downloadCaBundle(baseUrl, systemCaPath, outPath) {
663461
663510
  }
663462
663511
  const ccrCa = await resp.text();
663463
663512
  const systemCa = await readFile57(systemCaPath, "utf8").catch(() => "");
663464
- await mkdir46(join154(outPath, ".."), { recursive: true });
663513
+ await mkdir46(join155(outPath, ".."), { recursive: true });
663465
663514
  await writeFile46(outPath, systemCa + `
663466
663515
  ` + ccrCa, "utf8");
663467
663516
  return true;
@@ -664968,7 +665017,7 @@ function buildSystemInitMessage(inputs) {
664968
665017
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
664969
665018
  apiKeySource: getAnthropicApiKeyWithSource().source,
664970
665019
  betas: getSdkBetas(),
664971
- claude_code_version: "1.1.7",
665020
+ claude_code_version: "1.1.8",
664972
665021
  output_style: outputStyle2,
664973
665022
  agents: inputs.agents.map((agent) => agent.agentType),
664974
665023
  skills: inputs.skills.filter((s2) => s2.userInvocable !== false).map((skill) => skill.name),
@@ -665771,8 +665820,8 @@ var EDIT_INTERVAL_MS = 1100, PLACEHOLDER = "\uD83D\uDCAC …";
665771
665820
 
665772
665821
  // src/telegram/telegramBridge.ts
665773
665822
  import { hostname as hostname4 } from "os";
665774
- import { closeSync as closeSync5, existsSync as existsSync17, openSync as openSync6, readFileSync as readFileSync24, unlinkSync as unlinkSync4, writeFileSync as writeFileSync13, writeSync as writeSync3 } from "fs";
665775
- import { join as join155 } from "path";
665823
+ import { closeSync as closeSync5, existsSync as existsSync18, openSync as openSync6, readFileSync as readFileSync24, unlinkSync as unlinkSync4, writeFileSync as writeFileSync14, writeSync as writeSync3 } from "fs";
665824
+ import { join as join156 } from "path";
665776
665825
  function linkedChatId() {
665777
665826
  return readTelegramConfig().linkedChatId;
665778
665827
  }
@@ -665968,7 +666017,7 @@ async function registerCommandsWithTelegram(token) {
665968
666017
  } catch {}
665969
666018
  }
665970
666019
  function lockFilePath() {
665971
- return join155(getClaudeConfigHomeDir(), "telegram-bridge.lock");
666020
+ return join156(getClaudeConfigHomeDir(), "telegram-bridge.lock");
665972
666021
  }
665973
666022
  function isPidAlive(pid) {
665974
666023
  try {
@@ -666029,26 +666078,26 @@ function acquireBridgeLock() {
666029
666078
  return false;
666030
666079
  }
666031
666080
  }
666032
- writeFileSync13(path30, content, { mode: 384 });
666081
+ writeFileSync14(path30, content, { mode: 384 });
666033
666082
  } catch {}
666034
666083
  return true;
666035
666084
  }
666036
666085
  function updateHeartbeat() {
666037
666086
  try {
666038
666087
  const path30 = lockFilePath();
666039
- if (!existsSync17(path30))
666088
+ if (!existsSync18(path30))
666040
666089
  return;
666041
666090
  const raw = readFileSync24(path30, "utf8").trim();
666042
666091
  const pid = parseInt(raw.split(":")[0] ?? "", 10);
666043
666092
  if (pid === process.pid) {
666044
- writeFileSync13(path30, buildLockContent(), { mode: 384 });
666093
+ writeFileSync14(path30, buildLockContent(), { mode: 384 });
666045
666094
  }
666046
666095
  } catch {}
666047
666096
  }
666048
666097
  function releaseBridgeLock() {
666049
666098
  try {
666050
666099
  const path30 = lockFilePath();
666051
- if (existsSync17(path30)) {
666100
+ if (existsSync18(path30)) {
666052
666101
  const raw = readFileSync24(path30, "utf8").trim();
666053
666102
  const pid = parseInt(raw.split(":")[0] ?? "", 10);
666054
666103
  if (pid === process.pid)
@@ -672503,7 +672552,7 @@ var init_ShowInIDEPrompt = __esm(() => {
672503
672552
 
672504
672553
  // src/components/permissions/FilePermissionDialog/permissionOptions.tsx
672505
672554
  import { homedir as homedir37 } from "os";
672506
- import { basename as basename51, join as join156, sep as sep39 } from "path";
672555
+ import { basename as basename51, join as join157, sep as sep39 } from "path";
672507
672556
  function isInClaudeFolder(filePath) {
672508
672557
  const absolutePath = expandPath(filePath);
672509
672558
  const claudeFolderPath = expandPath(`${getOriginalCwd()}/.claude`);
@@ -672513,7 +672562,7 @@ function isInClaudeFolder(filePath) {
672513
672562
  }
672514
672563
  function isInGlobalClaudeFolder(filePath) {
672515
672564
  const absolutePath = expandPath(filePath);
672516
- const globalClaudeFolderPath = join156(homedir37(), ".claude");
672565
+ const globalClaudeFolderPath = join157(homedir37(), ".claude");
672517
672566
  const normalizedAbsolutePath = normalizeCaseForComparison2(absolutePath);
672518
672567
  const normalizedGlobalClaudeFolderPath = normalizeCaseForComparison2(globalClaudeFolderPath);
672519
672568
  return normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + sep39.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + "/");
@@ -680751,7 +680800,7 @@ var init_useVoiceEnabled = __esm(() => {
680751
680800
  function getSemverPart(version6) {
680752
680801
  return `${import_semver13.major(version6, { loose: true })}.${import_semver13.minor(version6, { loose: true })}.${import_semver13.patch(version6, { loose: true })}`;
680753
680802
  }
680754
- function useUpdateNotification(updatedVersion, initialVersion = "1.1.7") {
680803
+ function useUpdateNotification(updatedVersion, initialVersion = "1.1.8") {
680755
680804
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react231.useState(() => getSemverPart(initialVersion));
680756
680805
  if (!updatedVersion) {
680757
680806
  return null;
@@ -680791,7 +680840,7 @@ function AutoUpdater({
680791
680840
  return;
680792
680841
  }
680793
680842
  if (false) {}
680794
- const currentVersion = "1.1.7";
680843
+ const currentVersion = "1.1.8";
680795
680844
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
680796
680845
  let latestVersion = await getLatestVersion(channel);
680797
680846
  const isDisabled = isAutoUpdaterDisabled();
@@ -681004,12 +681053,12 @@ function NativeAutoUpdater({
681004
681053
  logEvent("tengu_native_auto_updater_start", {});
681005
681054
  try {
681006
681055
  const maxVersion = await getMaxVersion();
681007
- if (maxVersion && gt("1.1.7", maxVersion)) {
681056
+ if (maxVersion && gt("1.1.8", maxVersion)) {
681008
681057
  const msg = await getMaxVersionMessage();
681009
681058
  setMaxVersionIssue(msg ?? "affects your version");
681010
681059
  }
681011
681060
  const result = await installLatest(channel);
681012
- const currentVersion = "1.1.7";
681061
+ const currentVersion = "1.1.8";
681013
681062
  const latencyMs = Date.now() - startTime;
681014
681063
  if (result.lockFailed) {
681015
681064
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -681146,17 +681195,17 @@ function PackageManagerAutoUpdater(t0) {
681146
681195
  const maxVersion = await getMaxVersion();
681147
681196
  if (maxVersion && latest && gt(latest, maxVersion)) {
681148
681197
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
681149
- if (gte("1.1.7", maxVersion)) {
681150
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.7"} is already at or above maxVersion ${maxVersion}, skipping update`);
681198
+ if (gte("1.1.8", maxVersion)) {
681199
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
681151
681200
  setUpdateAvailable(false);
681152
681201
  return;
681153
681202
  }
681154
681203
  latest = maxVersion;
681155
681204
  }
681156
- const hasUpdate = latest && !gte("1.1.7", latest) && !shouldSkipVersion(latest);
681205
+ const hasUpdate = latest && !gte("1.1.8", latest) && !shouldSkipVersion(latest);
681157
681206
  setUpdateAvailable(!!hasUpdate);
681158
681207
  if (hasUpdate) {
681159
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.7"} -> ${latest}`);
681208
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.8"} -> ${latest}`);
681160
681209
  }
681161
681210
  };
681162
681211
  $3[0] = t1;
@@ -681190,7 +681239,7 @@ function PackageManagerAutoUpdater(t0) {
681190
681239
  wrap: "truncate",
681191
681240
  children: [
681192
681241
  "currentVersion: ",
681193
- "1.1.7"
681242
+ "1.1.8"
681194
681243
  ]
681195
681244
  }, undefined, true, undefined, this);
681196
681245
  $3[3] = verbose;
@@ -689351,7 +689400,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
689351
689400
  project_dir: getOriginalCwd(),
689352
689401
  added_dirs: addedDirs
689353
689402
  },
689354
- version: "1.1.7",
689403
+ version: "1.1.8",
689355
689404
  output_style: {
689356
689405
  name: outputStyleName
689357
689406
  },
@@ -695447,9 +695496,9 @@ function initSkillImprovement() {
695447
695496
  async function applySkillImprovement(skillName, updates) {
695448
695497
  if (!skillName)
695449
695498
  return;
695450
- const { join: join157 } = await import("path");
695499
+ const { join: join158 } = await import("path");
695451
695500
  const fs20 = await import("fs/promises");
695452
- const filePath = join157(getCwd(), ".claude", "skills", skillName, "SKILL.md");
695501
+ const filePath = join158(getCwd(), ".claude", "skills", skillName, "SKILL.md");
695453
695502
  let currentContent;
695454
695503
  try {
695455
695504
  currentContent = await fs20.readFile(filePath, "utf-8");
@@ -695601,7 +695650,7 @@ function useMoreRight(_args) {
695601
695650
  }
695602
695651
 
695603
695652
  // src/utils/cleanup.ts
695604
- import { join as join157 } from "path";
695653
+ import { join as join158 } from "path";
695605
695654
  function getCutoffDate() {
695606
695655
  const settings = getSettings_DEPRECATED() || {};
695607
695656
  const cleanupPeriodDays = settings.cleanupPeriodDays ?? DEFAULT_CLEANUP_PERIOD_DAYS;
@@ -695626,7 +695675,7 @@ async function cleanupOldFilesInDirectory(dirPath, cutoffDate, isMessagePath) {
695626
695675
  try {
695627
695676
  const timestamp = convertFileNameToDate(file2.name);
695628
695677
  if (timestamp < cutoffDate) {
695629
- await getFsImplementation().unlink(join157(dirPath, file2.name));
695678
+ await getFsImplementation().unlink(join158(dirPath, file2.name));
695630
695679
  if (isMessagePath) {
695631
695680
  result.messages++;
695632
695681
  } else {
@@ -695657,7 +695706,7 @@ async function cleanupOldMessageFiles() {
695657
695706
  } catch {
695658
695707
  return result;
695659
695708
  }
695660
- const mcpLogDirs = dirents.filter((dirent) => dirent.isDirectory() && dirent.name.startsWith("mcp-logs-")).map((dirent) => join157(baseCachePath, dirent.name));
695709
+ const mcpLogDirs = dirents.filter((dirent) => dirent.isDirectory() && dirent.name.startsWith("mcp-logs-")).map((dirent) => join158(baseCachePath, dirent.name));
695661
695710
  for (const mcpLogDir of mcpLogDirs) {
695662
695711
  result = addCleanupResults(result, await cleanupOldFilesInDirectory(mcpLogDir, cutoffDate, true));
695663
695712
  await tryRmdir(mcpLogDir, fsImpl);
@@ -695696,7 +695745,7 @@ async function cleanupOldSessionFiles() {
695696
695745
  for (const projectDirent of projectDirents) {
695697
695746
  if (!projectDirent.isDirectory())
695698
695747
  continue;
695699
- const projectDir = join157(projectsDir, projectDirent.name);
695748
+ const projectDir = join158(projectsDir, projectDirent.name);
695700
695749
  let entries;
695701
695750
  try {
695702
695751
  entries = await fsImpl.readdir(projectDir);
@@ -695710,15 +695759,15 @@ async function cleanupOldSessionFiles() {
695710
695759
  continue;
695711
695760
  }
695712
695761
  try {
695713
- if (await unlinkIfOld(join157(projectDir, entry.name), cutoffDate, fsImpl)) {
695762
+ if (await unlinkIfOld(join158(projectDir, entry.name), cutoffDate, fsImpl)) {
695714
695763
  result.messages++;
695715
695764
  }
695716
695765
  } catch {
695717
695766
  result.errors++;
695718
695767
  }
695719
695768
  } else if (entry.isDirectory()) {
695720
- const sessionDir = join157(projectDir, entry.name);
695721
- const toolResultsDir = join157(sessionDir, TOOL_RESULTS_SUBDIR);
695769
+ const sessionDir = join158(projectDir, entry.name);
695770
+ const toolResultsDir = join158(sessionDir, TOOL_RESULTS_SUBDIR);
695722
695771
  let toolDirs;
695723
695772
  try {
695724
695773
  toolDirs = await fsImpl.readdir(toolResultsDir);
@@ -695729,14 +695778,14 @@ async function cleanupOldSessionFiles() {
695729
695778
  for (const toolEntry of toolDirs) {
695730
695779
  if (toolEntry.isFile()) {
695731
695780
  try {
695732
- if (await unlinkIfOld(join157(toolResultsDir, toolEntry.name), cutoffDate, fsImpl)) {
695781
+ if (await unlinkIfOld(join158(toolResultsDir, toolEntry.name), cutoffDate, fsImpl)) {
695733
695782
  result.messages++;
695734
695783
  }
695735
695784
  } catch {
695736
695785
  result.errors++;
695737
695786
  }
695738
695787
  } else if (toolEntry.isDirectory()) {
695739
- const toolDirPath = join157(toolResultsDir, toolEntry.name);
695788
+ const toolDirPath = join158(toolResultsDir, toolEntry.name);
695740
695789
  let toolFiles;
695741
695790
  try {
695742
695791
  toolFiles = await fsImpl.readdir(toolDirPath);
@@ -695747,7 +695796,7 @@ async function cleanupOldSessionFiles() {
695747
695796
  if (!tf.isFile())
695748
695797
  continue;
695749
695798
  try {
695750
- if (await unlinkIfOld(join157(toolDirPath, tf.name), cutoffDate, fsImpl)) {
695799
+ if (await unlinkIfOld(join158(toolDirPath, tf.name), cutoffDate, fsImpl)) {
695751
695800
  result.messages++;
695752
695801
  }
695753
695802
  } catch {
@@ -695779,7 +695828,7 @@ async function cleanupSingleDirectory(dirPath, extension2, removeEmptyDir = true
695779
695828
  if (!dirent.isFile() || !dirent.name.endsWith(extension2))
695780
695829
  continue;
695781
695830
  try {
695782
- if (await unlinkIfOld(join157(dirPath, dirent.name), cutoffDate, fsImpl)) {
695831
+ if (await unlinkIfOld(join158(dirPath, dirent.name), cutoffDate, fsImpl)) {
695783
695832
  result.messages++;
695784
695833
  }
695785
695834
  } catch {
@@ -695792,7 +695841,7 @@ async function cleanupSingleDirectory(dirPath, extension2, removeEmptyDir = true
695792
695841
  return result;
695793
695842
  }
695794
695843
  function cleanupOldPlanFiles() {
695795
- const plansDir = join157(getClaudeConfigHomeDir(), "plans");
695844
+ const plansDir = join158(getClaudeConfigHomeDir(), "plans");
695796
695845
  return cleanupSingleDirectory(plansDir, ".md");
695797
695846
  }
695798
695847
  async function cleanupOldFileHistoryBackups() {
@@ -695801,14 +695850,14 @@ async function cleanupOldFileHistoryBackups() {
695801
695850
  const fsImpl = getFsImplementation();
695802
695851
  try {
695803
695852
  const configDir = getClaudeConfigHomeDir();
695804
- const fileHistoryStorageDir = join157(configDir, "file-history");
695853
+ const fileHistoryStorageDir = join158(configDir, "file-history");
695805
695854
  let dirents;
695806
695855
  try {
695807
695856
  dirents = await fsImpl.readdir(fileHistoryStorageDir);
695808
695857
  } catch {
695809
695858
  return result;
695810
695859
  }
695811
- const fileHistorySessionsDirs = dirents.filter((dirent) => dirent.isDirectory()).map((dirent) => join157(fileHistoryStorageDir, dirent.name));
695860
+ const fileHistorySessionsDirs = dirents.filter((dirent) => dirent.isDirectory()).map((dirent) => join158(fileHistoryStorageDir, dirent.name));
695812
695861
  await Promise.all(fileHistorySessionsDirs.map(async (fileHistorySessionDir) => {
695813
695862
  try {
695814
695863
  const stats2 = await fsImpl.stat(fileHistorySessionDir);
@@ -695835,14 +695884,14 @@ async function cleanupOldSessionEnvDirs() {
695835
695884
  const fsImpl = getFsImplementation();
695836
695885
  try {
695837
695886
  const configDir = getClaudeConfigHomeDir();
695838
- const sessionEnvBaseDir = join157(configDir, "session-env");
695887
+ const sessionEnvBaseDir = join158(configDir, "session-env");
695839
695888
  let dirents;
695840
695889
  try {
695841
695890
  dirents = await fsImpl.readdir(sessionEnvBaseDir);
695842
695891
  } catch {
695843
695892
  return result;
695844
695893
  }
695845
- const sessionEnvDirs = dirents.filter((dirent) => dirent.isDirectory()).map((dirent) => join157(sessionEnvBaseDir, dirent.name));
695894
+ const sessionEnvDirs = dirents.filter((dirent) => dirent.isDirectory()).map((dirent) => join158(sessionEnvBaseDir, dirent.name));
695846
695895
  for (const sessionEnvDir of sessionEnvDirs) {
695847
695896
  try {
695848
695897
  const stats2 = await fsImpl.stat(sessionEnvDir);
@@ -695864,7 +695913,7 @@ async function cleanupOldDebugLogs() {
695864
695913
  const cutoffDate = getCutoffDate();
695865
695914
  const result = { messages: 0, errors: 0 };
695866
695915
  const fsImpl = getFsImplementation();
695867
- const debugDir = join157(getClaudeConfigHomeDir(), "debug");
695916
+ const debugDir = join158(getClaudeConfigHomeDir(), "debug");
695868
695917
  let dirents;
695869
695918
  try {
695870
695919
  dirents = await fsImpl.readdir(debugDir);
@@ -695876,7 +695925,7 @@ async function cleanupOldDebugLogs() {
695876
695925
  continue;
695877
695926
  }
695878
695927
  try {
695879
- if (await unlinkIfOld(join157(debugDir, dirent.name), cutoffDate, fsImpl)) {
695928
+ if (await unlinkIfOld(join158(debugDir, dirent.name), cutoffDate, fsImpl)) {
695880
695929
  result.messages++;
695881
695930
  }
695882
695931
  } catch {
@@ -699079,7 +699128,7 @@ __export(exports_asciicast, {
699079
699128
  _resetRecordingStateForTesting: () => _resetRecordingStateForTesting
699080
699129
  });
699081
699130
  import { appendFile as appendFile7, rename as rename12 } from "fs/promises";
699082
- import { basename as basename60, dirname as dirname66, join as join159 } from "path";
699131
+ import { basename as basename60, dirname as dirname66, join as join160 } from "path";
699083
699132
  function getRecordFilePath() {
699084
699133
  if (recordingState.filePath !== null) {
699085
699134
  return recordingState.filePath;
@@ -699090,10 +699139,10 @@ function getRecordFilePath() {
699090
699139
  if (!isEnvTruthy(process.env.CLAUDE_CODE_TERMINAL_RECORDING)) {
699091
699140
  return null;
699092
699141
  }
699093
- const projectsDir = join159(getClaudeConfigHomeDir(), "projects");
699094
- const projectDir = join159(projectsDir, sanitizePath2(getOriginalCwd()));
699142
+ const projectsDir = join160(getClaudeConfigHomeDir(), "projects");
699143
+ const projectDir = join160(projectsDir, sanitizePath2(getOriginalCwd()));
699095
699144
  recordingState.timestamp = Date.now();
699096
- recordingState.filePath = join159(projectDir, `${getSessionId()}-${recordingState.timestamp}.cast`);
699145
+ recordingState.filePath = join160(projectDir, `${getSessionId()}-${recordingState.timestamp}.cast`);
699097
699146
  return recordingState.filePath;
699098
699147
  }
699099
699148
  function _resetRecordingStateForTesting() {
@@ -699102,13 +699151,13 @@ function _resetRecordingStateForTesting() {
699102
699151
  }
699103
699152
  function getSessionRecordingPaths() {
699104
699153
  const sessionId = getSessionId();
699105
- const projectsDir = join159(getClaudeConfigHomeDir(), "projects");
699106
- const projectDir = join159(projectsDir, sanitizePath2(getOriginalCwd()));
699154
+ const projectsDir = join160(getClaudeConfigHomeDir(), "projects");
699155
+ const projectDir = join160(projectsDir, sanitizePath2(getOriginalCwd()));
699107
699156
  try {
699108
699157
  const entries = getFsImplementation().readdirSync(projectDir);
699109
699158
  const names = typeof entries[0] === "string" ? entries : entries.map((e2) => e2.name);
699110
699159
  const files3 = names.filter((f3) => f3.startsWith(sessionId) && f3.endsWith(".cast")).sort();
699111
- return files3.map((f3) => join159(projectDir, f3));
699160
+ return files3.map((f3) => join160(projectDir, f3));
699112
699161
  } catch {
699113
699162
  return [];
699114
699163
  }
@@ -699118,9 +699167,9 @@ async function renameRecordingForSession() {
699118
699167
  if (!oldPath || recordingState.timestamp === 0) {
699119
699168
  return;
699120
699169
  }
699121
- const projectsDir = join159(getClaudeConfigHomeDir(), "projects");
699122
- const projectDir = join159(projectsDir, sanitizePath2(getOriginalCwd()));
699123
- const newPath = join159(projectDir, `${getSessionId()}-${recordingState.timestamp}.cast`);
699170
+ const projectsDir = join160(getClaudeConfigHomeDir(), "projects");
699171
+ const projectDir = join160(projectsDir, sanitizePath2(getOriginalCwd()));
699172
+ const newPath = join160(projectDir, `${getSessionId()}-${recordingState.timestamp}.cast`);
699124
699173
  if (oldPath === newPath) {
699125
699174
  return;
699126
699175
  }
@@ -700725,7 +700774,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
700725
700774
  } catch {}
700726
700775
  const data = {
700727
700776
  trigger,
700728
- version: "1.1.7",
700777
+ version: "1.1.8",
700729
700778
  platform: process.platform,
700730
700779
  transcript,
700731
700780
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -702011,7 +702060,7 @@ var init_useChromeExtensionNotification = __esm(() => {
702011
702060
  });
702012
702061
 
702013
702062
  // src/utils/plugins/officialMarketplaceStartupCheck.ts
702014
- import { join as join160 } from "path";
702063
+ import { join as join161 } from "path";
702015
702064
  function isOfficialMarketplaceAutoInstallDisabled() {
702016
702065
  return isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL);
702017
702066
  }
@@ -702094,7 +702143,7 @@ async function checkAndInstallOfficialMarketplace() {
702094
702143
  return { installed: false, skipped: true, reason: "policy_blocked" };
702095
702144
  }
702096
702145
  const cacheDir = getMarketplacesCacheDir();
702097
- const installLocation = join160(cacheDir, OFFICIAL_MARKETPLACE_NAME);
702146
+ const installLocation = join161(cacheDir, OFFICIAL_MARKETPLACE_NAME);
702098
702147
  const gcsSha = await fetchOfficialMarketplaceFromGcs(installLocation, cacheDir);
702099
702148
  if (gcsSha !== null) {
702100
702149
  const known = await loadKnownMarketplacesConfig();
@@ -705100,7 +705149,7 @@ var init_usePluginRecommendationBase = __esm(() => {
705100
705149
  });
705101
705150
 
705102
705151
  // src/hooks/useLspPluginRecommendation.tsx
705103
- import { extname as extname15, join as join161 } from "path";
705152
+ import { extname as extname15, join as join162 } from "path";
705104
705153
  function useLspPluginRecommendation() {
705105
705154
  const $3 = import_compiler_runtime354.c(12);
705106
705155
  const trackedFiles = useAppState(_temp224);
@@ -705185,7 +705234,7 @@ function useLspPluginRecommendation() {
705185
705234
  case "yes": {
705186
705235
  installPluginAndNotify(pluginId, pluginName, "lsp-plugin", addNotification, async (pluginData) => {
705187
705236
  logForDebugging(`[useLspPluginRecommendation] Installing plugin: ${pluginId}`);
705188
- const localSourcePath = typeof pluginData.entry.source === "string" ? join161(pluginData.marketplaceInstallLocation, pluginData.entry.source) : undefined;
705237
+ const localSourcePath = typeof pluginData.entry.source === "string" ? join162(pluginData.marketplaceInstallLocation, pluginData.entry.source) : undefined;
705189
705238
  await cacheAndRegisterPlugin(pluginId, pluginData.entry, "user", undefined, localSourcePath);
705190
705239
  const settings = getSettingsForSource("userSettings");
705191
705240
  updateSettingsForSource("userSettings", {
@@ -708029,7 +708078,7 @@ var exports_REPL = {};
708029
708078
  __export(exports_REPL, {
708030
708079
  REPL: () => REPL
708031
708080
  });
708032
- import { dirname as dirname68, join as join162 } from "path";
708081
+ import { dirname as dirname68, join as join163 } from "path";
708033
708082
  import { tmpdir as tmpdir15 } from "os";
708034
708083
  import { writeFile as writeFile47 } from "fs/promises";
708035
708084
  import { randomUUID as randomUUID53 } from "crypto";
@@ -710617,7 +710666,7 @@ Note: ctrl + z now suspends RAYU, ctrl + _ undoes input.
710617
710666
  const w2 = Math.max(80, (process.stdout.columns ?? 80) - 6);
710618
710667
  const raw = await renderMessagesToPlainText(deferredMessages, tools, w2);
710619
710668
  const text2 = raw.replace(/[ \t]+$/gm, "");
710620
- const path32 = join162(tmpdir15(), `cc-transcript-${Date.now()}.txt`);
710669
+ const path32 = join163(tmpdir15(), `cc-transcript-${Date.now()}.txt`);
710621
710670
  await writeFile47(path32, text2);
710622
710671
  const opened = openFileInExternalEditor(path32);
710623
710672
  setStatus(opened ? `opening ${path32}` : `wrote ${path32} · no $VISUAL/$EDITOR set`);
@@ -712699,7 +712748,7 @@ function WelcomeV2() {
712699
712748
  dimColor: true,
712700
712749
  children: [
712701
712750
  "v",
712702
- "1.1.7"
712751
+ "1.1.8"
712703
712752
  ]
712704
712753
  }, undefined, true, undefined, this)
712705
712754
  ]
@@ -713976,7 +714025,7 @@ function completeOnboarding() {
713976
714025
  saveGlobalConfig((current) => ({
713977
714026
  ...current,
713978
714027
  hasCompletedOnboarding: true,
713979
- lastOnboardingVersion: "1.1.7"
714028
+ lastOnboardingVersion: "1.1.8"
713980
714029
  }));
713981
714030
  }
713982
714031
  function showDialog(root2, renderer) {
@@ -717679,7 +717728,7 @@ var init_verify = __esm(() => {
717679
717728
  // src/utils/steeringFilePorter.ts
717680
717729
  import { copyFile as copyFile12, mkdir as mkdir47, readdir as readdir33, symlink as symlink6 } from "fs/promises";
717681
717730
  import { homedir as homedir39 } from "os";
717682
- import { basename as basename61, join as join163 } from "path";
717731
+ import { basename as basename61, join as join164 } from "path";
717683
717732
  async function detectSteeringFileStatus(cwd2) {
717684
717733
  const fs20 = getFsImplementation();
717685
717734
  const home = homedir39();
@@ -717691,14 +717740,14 @@ async function detectSteeringFileStatus(cwd2) {
717691
717740
  return false;
717692
717741
  }
717693
717742
  };
717694
- const rayuMd = exists(join163(cwd2, "RAYU.md"));
717695
- const agentsMd = exists(join163(cwd2, "AGENTS.md"));
717696
- const claudeMd = exists(join163(cwd2, "CLAUDE.md"));
717697
- const rayuDir = exists(join163(cwd2, ".rayu"));
717698
- const agentsDir = exists(join163(cwd2, ".agents"));
717699
- const claudeDir = exists(join163(cwd2, ".claude"));
717700
- const claudeUserSkills = exists(join163(home, ".claude", "skills"));
717701
- const agentUserSkills = exists(join163(home, ".agents", "skills"));
717743
+ const rayuMd = exists(join164(cwd2, "RAYU.md"));
717744
+ const agentsMd = exists(join164(cwd2, "AGENTS.md"));
717745
+ const claudeMd = exists(join164(cwd2, "CLAUDE.md"));
717746
+ const rayuDir = exists(join164(cwd2, ".rayu"));
717747
+ const agentsDir = exists(join164(cwd2, ".agents"));
717748
+ const claudeDir = exists(join164(cwd2, ".claude"));
717749
+ const claudeUserSkills = exists(join164(home, ".claude", "skills"));
717750
+ const agentUserSkills = exists(join164(home, ".agents", "skills"));
717702
717751
  return {
717703
717752
  hasRayuMd: rayuMd,
717704
717753
  hasAgentsMd: agentsMd,
@@ -717716,8 +717765,8 @@ function planPortActions(cwd2, status2, mode) {
717716
717765
  const actions = [];
717717
717766
  const useSymlink = mode === "symlink";
717718
717767
  if (status2.hasOnlyClaudeMd) {
717719
- const src = join163(cwd2, "CLAUDE.md");
717720
- const dest = join163(cwd2, "RAYU.md");
717768
+ const src = join164(cwd2, "CLAUDE.md");
717769
+ const dest = join164(cwd2, "RAYU.md");
717721
717770
  actions.push({
717722
717771
  type: useSymlink ? "symlink-file" : "copy-file",
717723
717772
  src,
@@ -717726,8 +717775,8 @@ function planPortActions(cwd2, status2, mode) {
717726
717775
  });
717727
717776
  }
717728
717777
  if (status2.hasOnlyClaudeDir) {
717729
- const src = join163(cwd2, ".claude");
717730
- const dest = join163(cwd2, ".rayu");
717778
+ const src = join164(cwd2, ".claude");
717779
+ const dest = join164(cwd2, ".rayu");
717731
717780
  actions.push({
717732
717781
  type: useSymlink ? "symlink-dir" : "copy-dir",
717733
717782
  src,
@@ -717784,8 +717833,8 @@ async function copyDirectoryRecursive(src, dest) {
717784
717833
  await mkdir47(dest, { recursive: true });
717785
717834
  const entries = await readdir33(src, { withFileTypes: true });
717786
717835
  await Promise.all(entries.map(async (entry) => {
717787
- const srcPath = join163(src, entry.name);
717788
- const destPath = join163(dest, entry.name);
717836
+ const srcPath = join164(src, entry.name);
717837
+ const destPath = join164(dest, entry.name);
717789
717838
  if (entry.isDirectory()) {
717790
717839
  await copyDirectoryRecursive(srcPath, destPath);
717791
717840
  } else {
@@ -717816,10 +717865,10 @@ function summarizeSteeringStatus(status2) {
717816
717865
  function getPortCandidates(cwd2, status2) {
717817
717866
  const candidates = [];
717818
717867
  if (status2.hasOnlyClaudeMd) {
717819
- candidates.push({ src: join163(cwd2, "CLAUDE.md"), dest: join163(cwd2, "RAYU.md"), kind: "file" });
717868
+ candidates.push({ src: join164(cwd2, "CLAUDE.md"), dest: join164(cwd2, "RAYU.md"), kind: "file" });
717820
717869
  }
717821
717870
  if (status2.hasOnlyClaudeDir) {
717822
- candidates.push({ src: join163(cwd2, ".claude"), dest: join163(cwd2, ".rayu"), kind: "dir" });
717871
+ candidates.push({ src: join164(cwd2, ".claude"), dest: join164(cwd2, ".rayu"), kind: "dir" });
717823
717872
  }
717824
717873
  return candidates;
717825
717874
  }
@@ -718680,12 +718729,12 @@ var init_createDirectConnectSession = __esm(() => {
718680
718729
  });
718681
718730
 
718682
718731
  // src/utils/errorLogSink.ts
718683
- import { dirname as dirname71, join as join164 } from "path";
718732
+ import { dirname as dirname71, join as join165 } from "path";
718684
718733
  function getErrorsPath() {
718685
- return join164(CACHE_PATHS.errors(), DATE + ".jsonl");
718734
+ return join165(CACHE_PATHS.errors(), DATE + ".jsonl");
718686
718735
  }
718687
718736
  function getMCPLogsPath(serverName) {
718688
- return join164(CACHE_PATHS.mcpLogs(serverName), DATE + ".jsonl");
718737
+ return join165(CACHE_PATHS.mcpLogs(serverName), DATE + ".jsonl");
718689
718738
  }
718690
718739
  function createJsonlWriter(options) {
718691
718740
  const writer = createBufferedWriter(options);
@@ -718729,7 +718778,7 @@ function appendToLog(path32, message) {
718729
718778
  cwd: getFsImplementation().cwd(),
718730
718779
  userType: "external",
718731
718780
  sessionId: getSessionId(),
718732
- version: "1.1.7"
718781
+ version: "1.1.8"
718733
718782
  };
718734
718783
  getLogWriter(path32).write(messageWithTimestamp);
718735
718784
  }
@@ -719021,7 +719070,7 @@ var init_sessionMemory = __esm(() => {
719021
719070
  // src/utils/iTermBackup.ts
719022
719071
  import { copyFile as copyFile13, stat as stat50 } from "fs/promises";
719023
719072
  import { homedir as homedir40 } from "os";
719024
- import { join as join165 } from "path";
719073
+ import { join as join166 } from "path";
719025
719074
  function markITerm2SetupComplete() {
719026
719075
  saveGlobalConfig((current) => ({
719027
719076
  ...current,
@@ -719036,7 +719085,7 @@ function getIterm2RecoveryInfo() {
719036
719085
  };
719037
719086
  }
719038
719087
  function getITerm2PlistPath() {
719039
- return join165(homedir40(), "Library", "Preferences", "com.googlecode.iterm2.plist");
719088
+ return join166(homedir40(), "Library", "Preferences", "com.googlecode.iterm2.plist");
719040
719089
  }
719041
719090
  async function checkAndRestoreITerm2Backup() {
719042
719091
  const { inProgress, backupPath } = getIterm2RecoveryInfo();
@@ -722382,7 +722431,7 @@ var init_idleTimeout = __esm(() => {
722382
722431
  // src/bridge/inboundAttachments.ts
722383
722432
  import { randomUUID as randomUUID56 } from "crypto";
722384
722433
  import { mkdir as mkdir48, writeFile as writeFile49 } from "fs/promises";
722385
- import { basename as basename62, join as join166 } from "path";
722434
+ import { basename as basename62, join as join167 } from "path";
722386
722435
  function debug3(msg) {
722387
722436
  logForDebugging(`[bridge:inbound-attach] ${msg}`);
722388
722437
  }
@@ -722398,7 +722447,7 @@ function sanitizeFileName(name3) {
722398
722447
  return base2 || "attachment";
722399
722448
  }
722400
722449
  function uploadsDir() {
722401
- return join166(getClaudeConfigHomeDir(), "uploads", getSessionId());
722450
+ return join167(getClaudeConfigHomeDir(), "uploads", getSessionId());
722402
722451
  }
722403
722452
  async function resolveOne(att) {
722404
722453
  const token = getBridgeAccessToken();
@@ -722427,7 +722476,7 @@ async function resolveOne(att) {
722427
722476
  const safeName = sanitizeFileName(att.file_name);
722428
722477
  const prefix = (att.file_uuid.slice(0, 8) || randomUUID56().slice(0, 8)).replace(/[^a-zA-Z0-9_-]/g, "_");
722429
722478
  const dir = uploadsDir();
722430
- const outPath = join166(dir, `${prefix}-${safeName}`);
722479
+ const outPath = join167(dir, `${prefix}-${safeName}`);
722431
722480
  try {
722432
722481
  await mkdir48(dir, { recursive: true });
722433
722482
  await writeFile49(outPath, data);
@@ -722527,7 +722576,7 @@ var init_sessionUrl = __esm(() => {
722527
722576
 
722528
722577
  // src/utils/plugins/zipCacheAdapters.ts
722529
722578
  import { readFile as readFile59 } from "fs/promises";
722530
- import { join as join167 } from "path";
722579
+ import { join as join168 } from "path";
722531
722580
  async function readZipCacheKnownMarketplaces() {
722532
722581
  try {
722533
722582
  const content = await readFile59(getZipCacheKnownMarketplacesPath(), "utf-8");
@@ -722552,13 +722601,13 @@ async function saveMarketplaceJsonToZipCache(marketplaceName, installLocation) {
722552
722601
  const content = await readMarketplaceJsonContent(installLocation);
722553
722602
  if (content !== null) {
722554
722603
  const relPath = getMarketplaceJsonRelativePath(marketplaceName);
722555
- await atomicWriteToZipCache(join167(zipCachePath, relPath), content);
722604
+ await atomicWriteToZipCache(join168(zipCachePath, relPath), content);
722556
722605
  }
722557
722606
  }
722558
722607
  async function readMarketplaceJsonContent(dir) {
722559
722608
  const candidates = [
722560
- join167(dir, ".claude-plugin", "marketplace.json"),
722561
- join167(dir, "marketplace.json"),
722609
+ join168(dir, ".claude-plugin", "marketplace.json"),
722610
+ join168(dir, "marketplace.json"),
722562
722611
  dir
722563
722612
  ];
722564
722613
  for (const candidate of candidates) {
@@ -722688,8 +722737,8 @@ async function getEnvLessBridgeConfig() {
722688
722737
  }
722689
722738
  async function checkEnvLessBridgeMinVersion() {
722690
722739
  const cfg = await getEnvLessBridgeConfig();
722691
- if (cfg.min_version && lt("1.1.7", cfg.min_version)) {
722692
- return `Your version of RAYU (${"1.1.7"}) is too old for Remote Control.
722740
+ if (cfg.min_version && lt("1.1.8", cfg.min_version)) {
722741
+ return `Your version of RAYU (${"1.1.8"}) is too old for Remote Control.
722693
722742
  Version ${cfg.min_version} or higher is required. Run \`claude update\` to update.`;
722694
722743
  }
722695
722744
  return null;
@@ -723017,9 +723066,9 @@ __export(exports_bridgePointer, {
723017
723066
  BRIDGE_POINTER_TTL_MS: () => BRIDGE_POINTER_TTL_MS
723018
723067
  });
723019
723068
  import { mkdir as mkdir49, readFile as readFile60, stat as stat51, unlink as unlink28, writeFile as writeFile50 } from "fs/promises";
723020
- import { dirname as dirname72, join as join168 } from "path";
723069
+ import { dirname as dirname72, join as join169 } from "path";
723021
723070
  function getBridgePointerPath(dir) {
723022
- return join168(getProjectsDir(), sanitizePath2(dir), "bridge-pointer.json");
723071
+ return join169(getProjectsDir(), sanitizePath2(dir), "bridge-pointer.json");
723023
723072
  }
723024
723073
  async function writeBridgePointer(dir, pointer) {
723025
723074
  const path32 = getBridgePointerPath(dir);
@@ -723163,7 +723212,7 @@ async function initBridgeCore(params) {
723163
723212
  const rawApi = createBridgeApiClient({
723164
723213
  baseUrl,
723165
723214
  getAccessToken,
723166
- runnerVersion: "1.1.7",
723215
+ runnerVersion: "1.1.8",
723167
723216
  onDebug: logForDebugging,
723168
723217
  onAuth401,
723169
723218
  getTrustedDeviceToken
@@ -728795,7 +728844,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
728795
728844
  setCwd(cwd3);
728796
728845
  const server = new Server({
728797
728846
  name: "claude/tengu",
728798
- version: "1.1.7"
728847
+ version: "1.1.8"
728799
728848
  }, {
728800
728849
  capabilities: {
728801
728850
  tools: {}
@@ -728927,14 +728976,14 @@ __export(exports_claudeDesktop, {
728927
728976
  });
728928
728977
  import { readdir as readdir34, readFile as readFile62, stat as stat53 } from "fs/promises";
728929
728978
  import { homedir as homedir41 } from "os";
728930
- import { join as join169 } from "path";
728979
+ import { join as join170 } from "path";
728931
728980
  async function getClaudeDesktopConfigPath() {
728932
728981
  const platform7 = getPlatform();
728933
728982
  if (!SUPPORTED_PLATFORMS.includes(platform7)) {
728934
728983
  throw new Error(`Unsupported platform: ${platform7} - Claude Desktop integration only works on macOS and WSL.`);
728935
728984
  }
728936
728985
  if (platform7 === "macos") {
728937
- return join169(homedir41(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
728986
+ return join170(homedir41(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
728938
728987
  }
728939
728988
  const windowsHome = process.env.USERPROFILE ? process.env.USERPROFILE.replace(/\\/g, "/") : null;
728940
728989
  if (windowsHome) {
@@ -728953,7 +729002,7 @@ async function getClaudeDesktopConfigPath() {
728953
729002
  if (user.name === "Public" || user.name === "Default" || user.name === "Default User" || user.name === "All Users") {
728954
729003
  continue;
728955
729004
  }
728956
- const potentialConfigPath = join169(usersDir, user.name, "AppData", "Roaming", "Claude", "claude_desktop_config.json");
729005
+ const potentialConfigPath = join170(usersDir, user.name, "AppData", "Roaming", "Claude", "claude_desktop_config.json");
728957
729006
  try {
728958
729007
  await stat53(potentialConfigPath);
728959
729008
  return potentialConfigPath;
@@ -729862,12 +729911,12 @@ __export(exports_install, {
729862
729911
  install: () => install
729863
729912
  });
729864
729913
  import { homedir as homedir42 } from "node:os";
729865
- import { join as join170 } from "node:path";
729914
+ import { join as join171 } from "node:path";
729866
729915
  function getInstallationPath2() {
729867
729916
  const isWindows3 = env4.platform === "win32";
729868
729917
  const homeDir = homedir42();
729869
729918
  if (isWindows3) {
729870
- const windowsPath = join170(homeDir, ".local", "bin", "claude.exe");
729919
+ const windowsPath = join171(homeDir, ".local", "bin", "claude.exe");
729871
729920
  return windowsPath.replace(/\//g, "\\");
729872
729921
  }
729873
729922
  return "~/.local/bin/claude";
@@ -730406,7 +730455,7 @@ __export(exports_update, {
730406
730455
  });
730407
730456
  async function update() {
730408
730457
  logEvent("tengu_update_check", {});
730409
- writeToStdout(`Current version: ${"1.1.7"}
730458
+ writeToStdout(`Current version: ${"1.1.8"}
730410
730459
  `);
730411
730460
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
730412
730461
  writeToStdout(`Checking for updates to ${channel} version...
@@ -730481,8 +730530,8 @@ async function update() {
730481
730530
  writeToStdout(`Claude is managed by Homebrew.
730482
730531
  `);
730483
730532
  const latest = await getLatestVersion(channel);
730484
- if (latest && !gte("1.1.7", latest)) {
730485
- writeToStdout(`Update available: ${"1.1.7"} → ${latest}
730533
+ if (latest && !gte("1.1.8", latest)) {
730534
+ writeToStdout(`Update available: ${"1.1.8"} → ${latest}
730486
730535
  `);
730487
730536
  writeToStdout(`
730488
730537
  `);
@@ -730498,8 +730547,8 @@ async function update() {
730498
730547
  writeToStdout(`Claude is managed by winget.
730499
730548
  `);
730500
730549
  const latest = await getLatestVersion(channel);
730501
- if (latest && !gte("1.1.7", latest)) {
730502
- writeToStdout(`Update available: ${"1.1.7"} → ${latest}
730550
+ if (latest && !gte("1.1.8", latest)) {
730551
+ writeToStdout(`Update available: ${"1.1.8"} → ${latest}
730503
730552
  `);
730504
730553
  writeToStdout(`
730505
730554
  `);
@@ -730515,8 +730564,8 @@ async function update() {
730515
730564
  writeToStdout(`Claude is managed by apk.
730516
730565
  `);
730517
730566
  const latest = await getLatestVersion(channel);
730518
- if (latest && !gte("1.1.7", latest)) {
730519
- writeToStdout(`Update available: ${"1.1.7"} → ${latest}
730567
+ if (latest && !gte("1.1.8", latest)) {
730568
+ writeToStdout(`Update available: ${"1.1.8"} → ${latest}
730520
730569
  `);
730521
730570
  writeToStdout(`
730522
730571
  `);
@@ -730581,11 +730630,11 @@ async function update() {
730581
730630
  `);
730582
730631
  await gracefulShutdown(1);
730583
730632
  }
730584
- if (result.latestVersion === "1.1.7") {
730585
- writeToStdout(source_default.green(`RAYU is up to date (${"1.1.7"})`) + `
730633
+ if (result.latestVersion === "1.1.8") {
730634
+ writeToStdout(source_default.green(`RAYU is up to date (${"1.1.8"})`) + `
730586
730635
  `);
730587
730636
  } else {
730588
- writeToStdout(source_default.green(`Successfully updated from ${"1.1.7"} to version ${result.latestVersion}`) + `
730637
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.8"} to version ${result.latestVersion}`) + `
730589
730638
  `);
730590
730639
  await regenerateCompletionCache();
730591
730640
  }
@@ -730645,12 +730694,12 @@ async function update() {
730645
730694
  `);
730646
730695
  await gracefulShutdown(1);
730647
730696
  }
730648
- if (latestVersion === "1.1.7") {
730649
- writeToStdout(source_default.green(`RAYU is up to date (${"1.1.7"})`) + `
730697
+ if (latestVersion === "1.1.8") {
730698
+ writeToStdout(source_default.green(`RAYU is up to date (${"1.1.8"})`) + `
730650
730699
  `);
730651
730700
  await gracefulShutdown(0);
730652
730701
  }
730653
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.7"})
730702
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.8"})
730654
730703
  `);
730655
730704
  writeToStdout(`Installing update...
730656
730705
  `);
@@ -730695,7 +730744,7 @@ async function update() {
730695
730744
  logForDebugging(`update: Installation status: ${status2}`);
730696
730745
  switch (status2) {
730697
730746
  case "success":
730698
- writeToStdout(source_default.green(`Successfully updated from ${"1.1.7"} to version ${latestVersion}`) + `
730747
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.8"} to version ${latestVersion}`) + `
730699
730748
  `);
730700
730749
  await regenerateCompletionCache();
730701
730750
  break;
@@ -730761,7 +730810,7 @@ __export(exports_uninstall, {
730761
730810
  });
730762
730811
  import { homedir as homedir43 } from "os";
730763
730812
  async function uninstall() {
730764
- writeToStdout(`Uninstalling Rayu CLI (${"1.1.7"})...
730813
+ writeToStdout(`Uninstalling Rayu CLI (${"1.1.8"})...
730765
730814
  `);
730766
730815
  writeToStdout(`Running: npm uninstall -g ${"@rayu-dev/rayu-cli"}
730767
730816
 
@@ -730786,7 +730835,7 @@ Try running manually:
730786
730835
  await gracefulShutdown(1);
730787
730836
  return;
730788
730837
  }
730789
- writeToStdout(source_default.green(`Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.1.7"}
730838
+ writeToStdout(source_default.green(`Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.1.8"}
730790
730839
  `));
730791
730840
  writeToStdout(`Thanks for using Rayu CLI!
730792
730841
  `);
@@ -731983,7 +732032,7 @@ ${customInstructions}` : customInstructions;
731983
732032
  }
731984
732033
  }
731985
732034
  logForDiagnosticsNoPII("info", "started", {
731986
- version: "1.1.7",
732035
+ version: "1.1.8",
731987
732036
  is_native_binary: isInBundledMode()
731988
732037
  });
731989
732038
  registerCleanup(async () => {
@@ -732768,7 +732817,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
732768
732817
  pendingHookMessages
732769
732818
  }, renderAndRun);
732770
732819
  }
732771
- }).version("1.1.7 (Rayu-CLI)", "-v, --version", "Output the version number");
732820
+ }).version("1.1.8 (Rayu-CLI)", "-v, --version", "Output the version number");
732772
732821
  program.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
732773
732822
  program.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
732774
732823
  if (canUserConfigureAdvisor()) {
@@ -733289,7 +733338,7 @@ if (false) {}
733289
733338
  async function main2() {
733290
733339
  const args = process.argv.slice(2);
733291
733340
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
733292
- console.log(`${"1.1.7"} (Rayu-CLI)`);
733341
+ console.log(`${"1.1.8"} (Rayu-CLI)`);
733293
733342
  return;
733294
733343
  }
733295
733344
  const {
@@ -733365,6 +733414,10 @@ async function main2() {
733365
733414
  if (args.includes("--bare")) {
733366
733415
  process.env.CLAUDE_CODE_SIMPLE = "1";
733367
733416
  }
733417
+ {
733418
+ const { showFirstRunWelcome: showFirstRunWelcome2 } = await Promise.resolve().then(() => (init_firstRun(), exports_firstRun));
733419
+ showFirstRunWelcome2();
733420
+ }
733368
733421
  const {
733369
733422
  startCapturingEarlyInput: startCapturingEarlyInput2
733370
733423
  } = await Promise.resolve().then(() => (init_earlyInput(), exports_earlyInput));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rayu-dev/rayu-cli",
3
- "version": "1.1.7",
3
+ "version": "1.1.8",
4
4
  "description": "Rayu-CLI — a multi-provider AI coding CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,8 +1,9 @@
1
1
  'use strict';
2
2
 
3
- const fs = require('fs');
4
-
5
- const message = [
3
+ // npm v7+ may suppress this output — the rayu binary shows the welcome
4
+ // message on first run as a reliable fallback. This script is kept as a
5
+ // bonus for npm versions that do forward lifecycle output.
6
+ const lines = [
6
7
  '',
7
8
  ' +--------------------------------------------------+',
8
9
  ' | |',
@@ -20,15 +21,6 @@ const message = [
20
21
  '',
21
22
  ' Docs & issues: https://github.com/Choeng-Rayu/rayu-cli',
22
23
  '',
23
- ].join('\n') + '\n';
24
+ ];
24
25
 
25
- // npm v7+ buffers lifecycle script stdoutwrite directly to /dev/tty
26
- // so the message always appears in the user's terminal
27
- try {
28
- const tty = fs.openSync('/dev/tty', 'w');
29
- fs.writeSync(tty, message);
30
- fs.closeSync(tty);
31
- } catch (_) {
32
- // /dev/tty unavailable (Windows, CI) — fall back to stdout
33
- process.stdout.write(message);
34
- }
26
+ process.stdout.write(lines.join('\n') + '\n');