@rayu-dev/rayu-cli 1.3.461 → 1.3.463

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/rayu.js +433 -340
  2. package/package.json +1 -1
package/dist/rayu.js CHANGED
@@ -36788,7 +36788,7 @@ async function refreshActiveProviderModels() {
36788
36788
  async function refreshAllProviderModels() {
36789
36789
  const cfg = loadRayuConfig();
36790
36790
  let dirty = false;
36791
- const promises = cfg.providers.filter((p) => (p.kind === "vertex" || p.kind === "genai" || (p.kind === "openai-compatible" || p.kind === "bedrock") && p.baseURL) && !p.fetchedModels?.length).map(async (p) => {
36791
+ const promises = cfg.providers.filter((p) => (p.kind === "vertex" || p.kind === "genai" || p.kind === "copilot" || p.kind === "kiro" || (p.kind === "openai-compatible" || p.kind === "bedrock") && p.baseURL) && !p.fetchedModels?.length).map(async (p) => {
36792
36792
  const models = await fetchProviderModels(p);
36793
36793
  if (models.length) {
36794
36794
  const cur = cfg.providers.find((x2) => x2.id === p.id);
@@ -148368,7 +148368,7 @@ var init_auth = __esm(() => {
148368
148368
 
148369
148369
  // src/utils/userAgent.ts
148370
148370
  function getRayuUserAgent() {
148371
- return `rayu/${"1.3.461"}`;
148371
+ return `rayu/${"1.3.463"}`;
148372
148372
  }
148373
148373
  var getClaudeCodeUserAgent;
148374
148374
  var init_userAgent = __esm(() => {
@@ -148394,7 +148394,7 @@ function getUserAgent() {
148394
148394
  const clientApp = process.env.RAYU_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.RAYU_AGENT_SDK_CLIENT_APP}` : "";
148395
148395
  const workload = getWorkload();
148396
148396
  const workloadSuffix = workload ? `, workload/${workload}` : "";
148397
- return `rayu/${"1.3.461"} (${"external"}, ${process.env.RAYU_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
148397
+ return `rayu/${"1.3.463"} (${"external"}, ${process.env.RAYU_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
148398
148398
  }
148399
148399
  function getMCPUserAgent() {
148400
148400
  const parts = [];
@@ -148408,7 +148408,7 @@ function getMCPUserAgent() {
148408
148408
  parts.push(`client-app/${process.env.RAYU_AGENT_SDK_CLIENT_APP}`);
148409
148409
  }
148410
148410
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
148411
- return `rayu/${"1.3.461"}${suffix}`;
148411
+ return `rayu/${"1.3.463"}${suffix}`;
148412
148412
  }
148413
148413
  function getWebFetchUserAgent() {
148414
148414
  return `Rayu-User (${getRayuUserAgent()})`;
@@ -148531,7 +148531,7 @@ var init_user = __esm(() => {
148531
148531
  deviceId,
148532
148532
  sessionId: getSessionId(),
148533
148533
  email: getEmail(),
148534
- appVersion: "1.3.461",
148534
+ appVersion: "1.3.463",
148535
148535
  platform: getHostPlatformForAnalytics(),
148536
148536
  organizationUuid,
148537
148537
  accountUuid,
@@ -165631,12 +165631,243 @@ var init_rayuSession = __esm(() => {
165631
165631
  REFRESH_SKEW_MS = 60 * 1000;
165632
165632
  });
165633
165633
 
165634
+ // src/services/api/rayuHosted/rayuHostedAuth.ts
165635
+ function rayuHostedBaseURL() {
165636
+ return `${getRayuGatewayBaseUrl()}/v1`;
165637
+ }
165638
+ function makeRayuHostedFetch() {
165639
+ const inner = globalThis.fetch;
165640
+ const wrapped = async (input, init = {}) => {
165641
+ const url3 = typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url;
165642
+ if ((init?.method ?? "GET").toUpperCase() === "POST" && url3.includes("/chat/completions") && typeof init?.body === "string") {
165643
+ const model = (() => {
165644
+ try {
165645
+ return JSON.parse(init.body).model;
165646
+ } catch {
165647
+ return;
165648
+ }
165649
+ })();
165650
+ if (model) {
165651
+ const { isHostedModelEntitled, hostedModelUpgradeMessage } = await Promise.resolve().then(() => (init_rayuEntitlements(), exports_rayuEntitlements));
165652
+ if (!isHostedModelEntitled(model)) {
165653
+ const message = hostedModelUpgradeMessage();
165654
+ return new Response(JSON.stringify({
165655
+ error: { message, type: "upgrade_required", code: "plan_upgrade_required" }
165656
+ }), { status: 403, headers: { "content-type": "application/json" } });
165657
+ }
165658
+ }
165659
+ }
165660
+ const token = await getValidRayuAccessToken();
165661
+ if (!token) {
165662
+ throw new Error("Not signed in to Rayu. Run /login to use Rayu-hosted models.");
165663
+ }
165664
+ const headers = new Headers(init?.headers);
165665
+ headers.set("Authorization", `Bearer ${token}`);
165666
+ return inner(input, { ...init, headers });
165667
+ };
165668
+ return wrapped;
165669
+ }
165670
+ var init_rayuHostedAuth = __esm(() => {
165671
+ init_rayuSession();
165672
+ });
165673
+
165674
+ // src/services/rayuAuth/rayuHostedProvider.ts
165675
+ function syncRayuHostedProvider(ent, opts) {
165676
+ try {
165677
+ const cfg = loadRayuConfig();
165678
+ const catalog = ent?.hostedModels ?? ent?.allowedModels ?? [];
165679
+ const entitled = ent?.allowedModels ?? [];
165680
+ const models = catalog.map((m2) => m2.code);
165681
+ const idx = cfg.providers.findIndex((p) => p.id === RAYU_HOSTED_PROVIDER_ID);
165682
+ if (models.length > 0) {
165683
+ const existing = idx >= 0 ? cfg.providers[idx] : undefined;
165684
+ const preferredCode = entitled[0]?.code ?? catalog[0]?.code;
165685
+ const provider = {
165686
+ ...existing,
165687
+ id: RAYU_HOSTED_PROVIDER_ID,
165688
+ kind: "rayu-hosted",
165689
+ baseURL: rayuHostedBaseURL(),
165690
+ models,
165691
+ fetchedModels: models,
165692
+ defaultModel: existing?.defaultModel ?? preferredCode,
165693
+ smallFastModel: existing?.smallFastModel ?? preferredCode
165694
+ };
165695
+ if (idx >= 0)
165696
+ cfg.providers[idx] = provider;
165697
+ else
165698
+ cfg.providers.push(provider);
165699
+ if (opts?.activate && entitled.length > 0) {
165700
+ cfg.activeProvider = RAYU_HOSTED_PROVIDER_ID;
165701
+ }
165702
+ saveRayuConfig(cfg);
165703
+ return;
165704
+ }
165705
+ if (idx >= 0) {
165706
+ cfg.providers.splice(idx, 1);
165707
+ if (cfg.activeProvider === RAYU_HOSTED_PROVIDER_ID) {
165708
+ cfg.activeProvider = cfg.providers[0]?.id;
165709
+ }
165710
+ saveRayuConfig(cfg);
165711
+ }
165712
+ } catch {}
165713
+ }
165714
+ var init_rayuHostedProvider = __esm(() => {
165715
+ init_rayuConfig();
165716
+ init_rayuProviders();
165717
+ init_rayuHostedAuth();
165718
+ });
165719
+
165720
+ // src/services/rayuAuth/rayuEntitlements.ts
165721
+ var exports_rayuEntitlements = {};
165722
+ __export(exports_rayuEntitlements, {
165723
+ refreshRayuEntitlements: () => refreshRayuEntitlements,
165724
+ rayuFeatureAllowed: () => rayuFeatureAllowed,
165725
+ isHostedModelEntitled: () => isHostedModelEntitled,
165726
+ hostedModelUpgradeMessage: () => hostedModelUpgradeMessage,
165727
+ getCachedEntitlements: () => getCachedEntitlements,
165728
+ clearRayuEntitlements: () => clearRayuEntitlements,
165729
+ _setRayuEntitlementsForTesting: () => _setRayuEntitlementsForTesting,
165730
+ _resetRayuEntitlementsForTesting: () => _resetRayuEntitlementsForTesting
165731
+ });
165732
+ import { existsSync as existsSync8, mkdirSync as mkdirSync6, readFileSync as readFileSync10, rmSync as rmSync3, writeFileSync as writeFileSync4 } from "fs";
165733
+ import { join as join23 } from "path";
165734
+ function entitlementsPath() {
165735
+ return join23(getRayuConfigHomeDir(), FILE);
165736
+ }
165737
+ function currentUserId() {
165738
+ return readRayuSession()?.user?.id ?? null;
165739
+ }
165740
+ function loadFromDiskOnce() {
165741
+ if (loadedFromDisk)
165742
+ return;
165743
+ loadedFromDisk = true;
165744
+ try {
165745
+ const p = entitlementsPath();
165746
+ if (existsSync8(p)) {
165747
+ cache3 = JSON.parse(readFileSync10(p, "utf8"));
165748
+ }
165749
+ } catch {
165750
+ cache3 = null;
165751
+ }
165752
+ }
165753
+ function persist(ent) {
165754
+ try {
165755
+ const dir = getRayuConfigHomeDir();
165756
+ if (!existsSync8(dir))
165757
+ mkdirSync6(dir, { recursive: true });
165758
+ const p = entitlementsPath();
165759
+ if (ent)
165760
+ writeFileSync4(p, JSON.stringify(ent, null, 2), { mode: 384 });
165761
+ else
165762
+ rmSync3(p, { force: true });
165763
+ } catch {}
165764
+ }
165765
+ function getCachedEntitlements() {
165766
+ loadFromDiskOnce();
165767
+ if (cache3 && cache3.userId != null) {
165768
+ const uid = currentUserId();
165769
+ if (uid != null && uid !== cache3.userId) {
165770
+ cache3 = null;
165771
+ }
165772
+ }
165773
+ if (isUseRayuOAuthEnabled() && hasRayuSession() && !fetching && Date.now() - lastAttempt > REFRESH_COOLDOWN_MS) {
165774
+ refreshRayuEntitlements();
165775
+ }
165776
+ return cache3;
165777
+ }
165778
+ async function refreshRayuEntitlements() {
165779
+ if (!isUseRayuOAuthEnabled() || !hasRayuSession())
165780
+ return null;
165781
+ if (fetching)
165782
+ return cache3;
165783
+ fetching = true;
165784
+ lastAttempt = Date.now();
165785
+ try {
165786
+ const token = await getValidRayuAccessToken();
165787
+ if (!token)
165788
+ return cache3;
165789
+ const res = await globalThis.fetch(`${getRayuApiBaseUrl()}/me/entitlements`, { headers: { Authorization: `Bearer ${token}` } });
165790
+ if (!res.ok)
165791
+ return cache3;
165792
+ const data = await res.json();
165793
+ data.userId = currentUserId();
165794
+ cache3 = data;
165795
+ loadedFromDisk = true;
165796
+ persist(data);
165797
+ syncRayuHostedProvider(data);
165798
+ return data;
165799
+ } catch {
165800
+ return cache3;
165801
+ } finally {
165802
+ fetching = false;
165803
+ }
165804
+ }
165805
+ function clearRayuEntitlements() {
165806
+ cache3 = null;
165807
+ loadedFromDisk = true;
165808
+ lastAttempt = 0;
165809
+ persist(null);
165810
+ syncRayuHostedProvider(null);
165811
+ }
165812
+ function rayuFeatureAllowed(featureKey) {
165813
+ if (!isUseRayuOAuthEnabled())
165814
+ return true;
165815
+ const ent = getCachedEntitlements();
165816
+ if (ent && ent.features) {
165817
+ const f3 = ent.features[featureKey];
165818
+ if (!f3)
165819
+ return true;
165820
+ return f3.enabled !== false;
165821
+ }
165822
+ return !hasRayuSession();
165823
+ }
165824
+ function isHostedModelEntitled(modelCode) {
165825
+ if (!isUseRayuOAuthEnabled())
165826
+ return true;
165827
+ const ent = getCachedEntitlements();
165828
+ if (!ent)
165829
+ return true;
165830
+ const allowed = ent.allowedModels ?? [];
165831
+ return allowed.some((m2) => m2.code === modelCode);
165832
+ }
165833
+ function hostedModelUpgradeMessage() {
165834
+ const url3 = `${getRayuWebBaseUrl()}/plans`;
165835
+ return `\uD83D\uDD12 Rayu-hosted models are a paid feature. Please upgrade your plan to use them: ${url3}`;
165836
+ }
165837
+ function _setRayuEntitlementsForTesting(ent) {
165838
+ cache3 = ent;
165839
+ loadedFromDisk = true;
165840
+ }
165841
+ function _resetRayuEntitlementsForTesting() {
165842
+ cache3 = null;
165843
+ loadedFromDisk = false;
165844
+ fetching = false;
165845
+ lastAttempt = 0;
165846
+ }
165847
+ var FILE = "rayu-entitlements.json", REFRESH_COOLDOWN_MS = 30000, cache3 = null, loadedFromDisk = false, fetching = false, lastAttempt = 0;
165848
+ var init_rayuEntitlements = __esm(() => {
165849
+ init_envUtils();
165850
+ init_rayuHostedProvider();
165851
+ init_rayuSession();
165852
+ });
165853
+
165634
165854
  // src/services/api/rayuHosted/gatewayRouting.ts
165635
165855
  var exports_gatewayRouting = {};
165636
165856
  __export(exports_gatewayRouting, {
165637
165857
  shouldRouteViaGateway: () => shouldRouteViaGateway,
165638
165858
  makeGatewayRoutingFetch: () => makeGatewayRoutingFetch
165639
165859
  });
165860
+ function isPaidPlanP2PEnabled() {
165861
+ const v = process.env.RAYU_PAID_PLAN_P2P;
165862
+ if (v !== undefined && v !== "")
165863
+ return isEnvTruthy(v);
165864
+ return false;
165865
+ }
165866
+ function isOnP2PEligiblePlan() {
165867
+ const ent = getCachedEntitlements();
165868
+ const code = ent?.plan?.code;
165869
+ return !!code && P2P_ELIGIBLE_PLAN_CODES.has(code);
165870
+ }
165640
165871
  function isGatewayRoutingEnabled() {
165641
165872
  const v = process.env.RAYU_ROUTE_VIA_GATEWAY;
165642
165873
  if (v !== undefined && v !== "")
@@ -165703,6 +165934,8 @@ function shouldRouteViaGateway(provider) {
165703
165934
  if (!base2 || isLocalBaseUrl(base2))
165704
165935
  return false;
165705
165936
  }
165937
+ if (isPaidPlanP2PEnabled() && isOnP2PEligiblePlan())
165938
+ return false;
165706
165939
  return true;
165707
165940
  }
165708
165941
  function makeGatewayRoutingFetch(provider, inner = globalThis.fetch) {
@@ -165738,10 +165971,18 @@ function makeGatewayRoutingFetch(provider, inner = globalThis.fetch) {
165738
165971
  };
165739
165972
  return wrapped;
165740
165973
  }
165741
- var PROXIED_HEADER = "x-rayu-proxied", LIMIT_HEADER = "x-rayu-limit";
165974
+ var P2P_ELIGIBLE_PLAN_CODES, PROXIED_HEADER = "x-rayu-proxied", LIMIT_HEADER = "x-rayu-limit";
165742
165975
  var init_gatewayRouting = __esm(() => {
165743
165976
  init_rayuSession();
165977
+ init_rayuEntitlements();
165744
165978
  init_envUtils();
165979
+ P2P_ELIGIBLE_PLAN_CODES = new Set([
165980
+ "basic",
165981
+ "pro",
165982
+ "pro_plus",
165983
+ "max",
165984
+ "enterprise"
165985
+ ]);
165745
165986
  });
165746
165987
 
165747
165988
  // node_modules/@anthropic-ai/sdk/internal/tslib.mjs
@@ -180192,13 +180433,13 @@ var init_browser = __esm(() => {
180192
180433
  });
180193
180434
 
180194
180435
  // src/services/oauth/geminiClientSecret.ts
180195
- import { existsSync as existsSync8, readFileSync as readFileSync10 } from "fs";
180436
+ import { existsSync as existsSync9, readFileSync as readFileSync11 } from "fs";
180196
180437
  function clientSecretPaths() {
180197
180438
  const paths2 = [];
180198
180439
  const envPath = process.env.GEMINI_OAUTH_CLIENT_FILE;
180199
180440
  if (envPath)
180200
180441
  paths2.push(envPath);
180201
- paths2.push(join26(process.cwd(), "client_secret.json"));
180442
+ paths2.push(join27(process.cwd(), "client_secret.json"));
180202
180443
  return paths2;
180203
180444
  }
180204
180445
  function parseClientSecretJson(content) {
@@ -180228,10 +180469,10 @@ function loadGeminiOAuthClient() {
180228
180469
  };
180229
180470
  }
180230
180471
  for (const p of clientSecretPaths()) {
180231
- if (!existsSync8(p))
180472
+ if (!existsSync9(p))
180232
180473
  continue;
180233
180474
  try {
180234
- const parsed = parseClientSecretJson(readFileSync10(p, "utf8"));
180475
+ const parsed = parseClientSecretJson(readFileSync11(p, "utf8"));
180235
180476
  if (parsed) {
180236
180477
  return {
180237
180478
  ...parsed,
@@ -180242,11 +180483,11 @@ function loadGeminiOAuthClient() {
180242
180483
  }
180243
180484
  return { ...GEMINI_CLI_PUBLIC_CLIENT };
180244
180485
  }
180245
- var join26 = (...parts) => parts.join(""), GEMINI_CLI_PUBLIC_CLIENT;
180486
+ var join27 = (...parts) => parts.join(""), GEMINI_CLI_PUBLIC_CLIENT;
180246
180487
  var init_geminiClientSecret = __esm(() => {
180247
180488
  GEMINI_CLI_PUBLIC_CLIENT = {
180248
- clientId: join26("681255809395", "-oo8ft2oprdrnp9e3aqf6av3hmdib135j", ".apps.googleusercontent", ".com"),
180249
- clientSecret: join26("GOCSPX", "-4uHgMPm", "-1o7Sk", "-geV6Cu5clXFsxl")
180489
+ clientId: join27("681255809395", "-oo8ft2oprdrnp9e3aqf6av3hmdib135j", ".apps.googleusercontent", ".com"),
180490
+ clientSecret: join27("GOCSPX", "-4uHgMPm", "-1o7Sk", "-geV6Cu5clXFsxl")
180250
180491
  };
180251
180492
  });
180252
180493
 
@@ -180265,33 +180506,33 @@ __export(exports_geminiLogin, {
180265
180506
  });
180266
180507
  import {
180267
180508
  chmodSync as chmodSync3,
180268
- existsSync as existsSync9,
180269
- mkdirSync as mkdirSync6,
180270
- readFileSync as readFileSync11,
180271
- rmSync as rmSync3,
180272
- writeFileSync as writeFileSync4
180509
+ existsSync as existsSync10,
180510
+ mkdirSync as mkdirSync7,
180511
+ readFileSync as readFileSync12,
180512
+ rmSync as rmSync4,
180513
+ writeFileSync as writeFileSync5
180273
180514
  } from "fs";
180274
180515
  import { createServer } from "http";
180275
- import { join as join27 } from "path";
180516
+ import { join as join28 } from "path";
180276
180517
  function tokenPath() {
180277
- return join27(getRayuConfigHomeDir(), TOKEN_FILE);
180518
+ return join28(getRayuConfigHomeDir(), TOKEN_FILE);
180278
180519
  }
180279
180520
  function readGeminiLoginStore() {
180280
180521
  try {
180281
180522
  const p = tokenPath();
180282
- if (!existsSync9(p))
180523
+ if (!existsSync10(p))
180283
180524
  return null;
180284
- return JSON.parse(readFileSync11(p, "utf8"));
180525
+ return JSON.parse(readFileSync12(p, "utf8"));
180285
180526
  } catch {
180286
180527
  return null;
180287
180528
  }
180288
180529
  }
180289
180530
  function writeGeminiLoginStore(store) {
180290
180531
  const dir = getRayuConfigHomeDir();
180291
- if (!existsSync9(dir))
180292
- mkdirSync6(dir, { recursive: true });
180532
+ if (!existsSync10(dir))
180533
+ mkdirSync7(dir, { recursive: true });
180293
180534
  const p = tokenPath();
180294
- writeFileSync4(p, JSON.stringify(store, null, 2), { mode: 384 });
180535
+ writeFileSync5(p, JSON.stringify(store, null, 2), { mode: 384 });
180295
180536
  try {
180296
180537
  chmodSync3(p, 384);
180297
180538
  } catch {}
@@ -180304,7 +180545,7 @@ function getGeminiLoginProject() {
180304
180545
  }
180305
180546
  function logoutGeminiLogin() {
180306
180547
  try {
180307
- rmSync3(tokenPath(), { force: true });
180548
+ rmSync4(tokenPath(), { force: true });
180308
180549
  } catch {}
180309
180550
  }
180310
180551
  function parseAuthCodeFromUrl(reqUrl, base2 = "http://localhost") {
@@ -182009,23 +182250,23 @@ __export(exports_kiroAuth, {
182009
182250
  getKiroBearer: () => getKiroBearer,
182010
182251
  fetchKiroProfileArn: () => fetchKiroProfileArn
182011
182252
  });
182012
- import { appendFileSync as appendFileSync4, existsSync as existsSync10 } from "node:fs";
182253
+ import { appendFileSync as appendFileSync4, existsSync as existsSync11 } from "node:fs";
182013
182254
  import { homedir as homedir9 } from "node:os";
182014
- import { join as join28 } from "node:path";
182255
+ import { join as join29 } from "node:path";
182015
182256
  function kiroAuthDebug(obj) {
182016
182257
  if (!process.env.RAYU_DEBUG_KIRO)
182017
182258
  return;
182018
182259
  try {
182019
- const dir = process.env.RAYU_CONFIG_DIR || join28(homedir9(), ".rayu");
182020
- appendFileSync4(join28(dir, "debug-kiro.jsonl"), `${JSON.stringify({ ts: new Date().toISOString(), phase: "profileFetch", ...obj })}
182260
+ const dir = process.env.RAYU_CONFIG_DIR || join29(homedir9(), ".rayu");
182261
+ appendFileSync4(join29(dir, "debug-kiro.jsonl"), `${JSON.stringify({ ts: new Date().toISOString(), phase: "profileFetch", ...obj })}
182021
182262
  `);
182022
182263
  } catch {}
182023
182264
  }
182024
182265
  function kiroDbPath() {
182025
182266
  if (process.env.RAYU_KIRO_DB_PATH)
182026
182267
  return process.env.RAYU_KIRO_DB_PATH;
182027
- const dataHome = process.env.XDG_DATA_HOME || join28(homedir9(), ".local", "share");
182028
- return join28(dataHome, "kiro-cli", "data.sqlite3");
182268
+ const dataHome = process.env.XDG_DATA_HOME || join29(homedir9(), ".local", "share");
182269
+ return join29(dataHome, "kiro-cli", "data.sqlite3");
182029
182270
  }
182030
182271
  function coalesce(...vals) {
182031
182272
  for (const v of vals)
@@ -182143,7 +182384,7 @@ function stateValue(state, key) {
182143
182384
  return raw;
182144
182385
  }
182145
182386
  async function readKiroCredentials(dbPath = kiroDbPath()) {
182146
- if (!existsSync10(dbPath)) {
182387
+ if (!existsSync11(dbPath)) {
182147
182388
  throw new Error(`Kiro login not found at ${dbPath}. Run "kiro-cli login" first.`);
182148
182389
  }
182149
182390
  const { authKv, state } = await readKvAndState(dbPath);
@@ -182636,7 +182877,7 @@ __export(exports_kiroAdapter, {
182636
182877
  createKiroClient: () => createKiroClient
182637
182878
  });
182638
182879
  import { appendFileSync as appendFileSync5 } from "node:fs";
182639
- import { join as join29 } from "node:path";
182880
+ import { join as join30 } from "node:path";
182640
182881
  function kiroDebugEnabled() {
182641
182882
  return !!process.env.RAYU_DEBUG_KIRO;
182642
182883
  }
@@ -182644,7 +182885,7 @@ function kiroDebugLog(obj) {
182644
182885
  if (!kiroDebugEnabled())
182645
182886
  return;
182646
182887
  try {
182647
- appendFileSync5(join29(getRayuConfigHomeDir(), "debug-kiro.jsonl"), `${JSON.stringify({ ts: new Date().toISOString(), ...obj })}
182888
+ appendFileSync5(join30(getRayuConfigHomeDir(), "debug-kiro.jsonl"), `${JSON.stringify({ ts: new Date().toISOString(), ...obj })}
182648
182889
  `);
182649
182890
  } catch {}
182650
182891
  }
@@ -182910,226 +183151,6 @@ var init_copilotClient = __esm(() => {
182910
183151
  init_copilotAuth();
182911
183152
  });
182912
183153
 
182913
- // src/services/rayuAuth/rayuHostedProvider.ts
182914
- function syncRayuHostedProvider(ent, opts) {
182915
- try {
182916
- const cfg = loadRayuConfig();
182917
- const catalog = ent?.hostedModels ?? ent?.allowedModels ?? [];
182918
- const entitled = ent?.allowedModels ?? [];
182919
- const models = catalog.map((m2) => m2.code);
182920
- const idx = cfg.providers.findIndex((p) => p.id === RAYU_HOSTED_PROVIDER_ID);
182921
- if (models.length > 0) {
182922
- const existing = idx >= 0 ? cfg.providers[idx] : undefined;
182923
- const preferredCode = entitled[0]?.code ?? catalog[0]?.code;
182924
- const provider = {
182925
- ...existing,
182926
- id: RAYU_HOSTED_PROVIDER_ID,
182927
- kind: "rayu-hosted",
182928
- baseURL: rayuHostedBaseURL(),
182929
- models,
182930
- fetchedModels: models,
182931
- defaultModel: existing?.defaultModel ?? preferredCode,
182932
- smallFastModel: existing?.smallFastModel ?? preferredCode
182933
- };
182934
- if (idx >= 0)
182935
- cfg.providers[idx] = provider;
182936
- else
182937
- cfg.providers.push(provider);
182938
- if (opts?.activate && entitled.length > 0) {
182939
- cfg.activeProvider = RAYU_HOSTED_PROVIDER_ID;
182940
- }
182941
- saveRayuConfig(cfg);
182942
- return;
182943
- }
182944
- if (idx >= 0) {
182945
- cfg.providers.splice(idx, 1);
182946
- if (cfg.activeProvider === RAYU_HOSTED_PROVIDER_ID) {
182947
- cfg.activeProvider = cfg.providers[0]?.id;
182948
- }
182949
- saveRayuConfig(cfg);
182950
- }
182951
- } catch {}
182952
- }
182953
- var init_rayuHostedProvider = __esm(() => {
182954
- init_rayuConfig();
182955
- init_rayuProviders();
182956
- init_rayuHostedAuth();
182957
- });
182958
-
182959
- // src/services/rayuAuth/rayuEntitlements.ts
182960
- var exports_rayuEntitlements = {};
182961
- __export(exports_rayuEntitlements, {
182962
- refreshRayuEntitlements: () => refreshRayuEntitlements,
182963
- rayuFeatureAllowed: () => rayuFeatureAllowed,
182964
- isHostedModelEntitled: () => isHostedModelEntitled,
182965
- hostedModelUpgradeMessage: () => hostedModelUpgradeMessage,
182966
- getCachedEntitlements: () => getCachedEntitlements,
182967
- clearRayuEntitlements: () => clearRayuEntitlements,
182968
- _setRayuEntitlementsForTesting: () => _setRayuEntitlementsForTesting,
182969
- _resetRayuEntitlementsForTesting: () => _resetRayuEntitlementsForTesting
182970
- });
182971
- import { existsSync as existsSync11, mkdirSync as mkdirSync7, readFileSync as readFileSync12, rmSync as rmSync4, writeFileSync as writeFileSync5 } from "fs";
182972
- import { join as join30 } from "path";
182973
- function entitlementsPath() {
182974
- return join30(getRayuConfigHomeDir(), FILE);
182975
- }
182976
- function currentUserId() {
182977
- return readRayuSession()?.user?.id ?? null;
182978
- }
182979
- function loadFromDiskOnce() {
182980
- if (loadedFromDisk)
182981
- return;
182982
- loadedFromDisk = true;
182983
- try {
182984
- const p = entitlementsPath();
182985
- if (existsSync11(p)) {
182986
- cache3 = JSON.parse(readFileSync12(p, "utf8"));
182987
- }
182988
- } catch {
182989
- cache3 = null;
182990
- }
182991
- }
182992
- function persist(ent) {
182993
- try {
182994
- const dir = getRayuConfigHomeDir();
182995
- if (!existsSync11(dir))
182996
- mkdirSync7(dir, { recursive: true });
182997
- const p = entitlementsPath();
182998
- if (ent)
182999
- writeFileSync5(p, JSON.stringify(ent, null, 2), { mode: 384 });
183000
- else
183001
- rmSync4(p, { force: true });
183002
- } catch {}
183003
- }
183004
- function getCachedEntitlements() {
183005
- loadFromDiskOnce();
183006
- if (cache3 && cache3.userId != null) {
183007
- const uid = currentUserId();
183008
- if (uid != null && uid !== cache3.userId) {
183009
- cache3 = null;
183010
- }
183011
- }
183012
- if (isUseRayuOAuthEnabled() && hasRayuSession() && !fetching && Date.now() - lastAttempt > REFRESH_COOLDOWN_MS) {
183013
- refreshRayuEntitlements();
183014
- }
183015
- return cache3;
183016
- }
183017
- async function refreshRayuEntitlements() {
183018
- if (!isUseRayuOAuthEnabled() || !hasRayuSession())
183019
- return null;
183020
- if (fetching)
183021
- return cache3;
183022
- fetching = true;
183023
- lastAttempt = Date.now();
183024
- try {
183025
- const token = await getValidRayuAccessToken();
183026
- if (!token)
183027
- return cache3;
183028
- const res = await globalThis.fetch(`${getRayuApiBaseUrl()}/me/entitlements`, { headers: { Authorization: `Bearer ${token}` } });
183029
- if (!res.ok)
183030
- return cache3;
183031
- const data = await res.json();
183032
- data.userId = currentUserId();
183033
- cache3 = data;
183034
- loadedFromDisk = true;
183035
- persist(data);
183036
- syncRayuHostedProvider(data);
183037
- return data;
183038
- } catch {
183039
- return cache3;
183040
- } finally {
183041
- fetching = false;
183042
- }
183043
- }
183044
- function clearRayuEntitlements() {
183045
- cache3 = null;
183046
- loadedFromDisk = true;
183047
- lastAttempt = 0;
183048
- persist(null);
183049
- syncRayuHostedProvider(null);
183050
- }
183051
- function rayuFeatureAllowed(featureKey) {
183052
- if (!isUseRayuOAuthEnabled())
183053
- return true;
183054
- const ent = getCachedEntitlements();
183055
- if (ent && ent.features) {
183056
- const f3 = ent.features[featureKey];
183057
- if (!f3)
183058
- return true;
183059
- return f3.enabled !== false;
183060
- }
183061
- return !hasRayuSession();
183062
- }
183063
- function isHostedModelEntitled(modelCode) {
183064
- if (!isUseRayuOAuthEnabled())
183065
- return true;
183066
- const ent = getCachedEntitlements();
183067
- if (!ent)
183068
- return true;
183069
- const allowed = ent.allowedModels ?? [];
183070
- return allowed.some((m2) => m2.code === modelCode);
183071
- }
183072
- function hostedModelUpgradeMessage() {
183073
- const url3 = `${getRayuWebBaseUrl()}/plans`;
183074
- return `\uD83D\uDD12 Rayu-hosted models are a paid feature. Please upgrade your plan to use them: ${url3}`;
183075
- }
183076
- function _setRayuEntitlementsForTesting(ent) {
183077
- cache3 = ent;
183078
- loadedFromDisk = true;
183079
- }
183080
- function _resetRayuEntitlementsForTesting() {
183081
- cache3 = null;
183082
- loadedFromDisk = false;
183083
- fetching = false;
183084
- lastAttempt = 0;
183085
- }
183086
- var FILE = "rayu-entitlements.json", REFRESH_COOLDOWN_MS = 30000, cache3 = null, loadedFromDisk = false, fetching = false, lastAttempt = 0;
183087
- var init_rayuEntitlements = __esm(() => {
183088
- init_envUtils();
183089
- init_rayuHostedProvider();
183090
- init_rayuSession();
183091
- });
183092
-
183093
- // src/services/api/rayuHosted/rayuHostedAuth.ts
183094
- function rayuHostedBaseURL() {
183095
- return `${getRayuGatewayBaseUrl()}/v1`;
183096
- }
183097
- function makeRayuHostedFetch() {
183098
- const inner = globalThis.fetch;
183099
- const wrapped = async (input, init = {}) => {
183100
- const url3 = typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url;
183101
- if ((init?.method ?? "GET").toUpperCase() === "POST" && url3.includes("/chat/completions") && typeof init?.body === "string") {
183102
- const model = (() => {
183103
- try {
183104
- return JSON.parse(init.body).model;
183105
- } catch {
183106
- return;
183107
- }
183108
- })();
183109
- if (model) {
183110
- const { isHostedModelEntitled: isHostedModelEntitled2, hostedModelUpgradeMessage: hostedModelUpgradeMessage2 } = await Promise.resolve().then(() => (init_rayuEntitlements(), exports_rayuEntitlements));
183111
- if (!isHostedModelEntitled2(model)) {
183112
- const message = hostedModelUpgradeMessage2();
183113
- return new Response(JSON.stringify({
183114
- error: { message, type: "upgrade_required", code: "plan_upgrade_required" }
183115
- }), { status: 403, headers: { "content-type": "application/json" } });
183116
- }
183117
- }
183118
- }
183119
- const token = await getValidRayuAccessToken();
183120
- if (!token) {
183121
- throw new Error("Not signed in to Rayu. Run /login to use Rayu-hosted models.");
183122
- }
183123
- const headers = new Headers(init?.headers);
183124
- headers.set("Authorization", `Bearer ${token}`);
183125
- return inner(input, { ...init, headers });
183126
- };
183127
- return wrapped;
183128
- }
183129
- var init_rayuHostedAuth = __esm(() => {
183130
- init_rayuSession();
183131
- });
183132
-
183133
183154
  // src/services/api/rayuHosted/rayuHostedClient.ts
183134
183155
  var exports_rayuHostedClient = {};
183135
183156
  __export(exports_rayuHostedClient, {
@@ -184629,7 +184650,7 @@ var init_metadata = __esm(() => {
184629
184650
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
184630
184651
  WHITESPACE_REGEX = /\s+/;
184631
184652
  getVersionBase = memoize_default(() => {
184632
- const match = "1.3.461".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
184653
+ const match = "1.3.463".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
184633
184654
  return match ? match[0] : undefined;
184634
184655
  });
184635
184656
  buildEnvContext = memoize_default(async () => {
@@ -184668,7 +184689,7 @@ var init_metadata = __esm(() => {
184668
184689
  },
184669
184690
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
184670
184691
  isRayuAction: isEnvTruthy(process.env.RAYU_ACTION),
184671
- version: "1.3.461",
184692
+ version: "1.3.463",
184672
184693
  versionBase: getVersionBase(),
184673
184694
  buildTime: "",
184674
184695
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
@@ -185280,7 +185301,7 @@ function initialize1PEventLogging() {
185280
185301
  const platform2 = getPlatform();
185281
185302
  const attributes = {
185282
185303
  [import_semantic_conventions.ATTR_SERVICE_NAME]: "rayu",
185283
- [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.3.461"
185304
+ [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.3.463"
185284
185305
  };
185285
185306
  if (platform2 === "wsl") {
185286
185307
  const wslVersion = getWslVersion();
@@ -185307,7 +185328,7 @@ function initialize1PEventLogging() {
185307
185328
  })
185308
185329
  ]
185309
185330
  });
185310
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("io.rayu.events", "1.3.461");
185331
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("io.rayu.events", "1.3.463");
185311
185332
  }
185312
185333
  async function reinitialize1PEventLoggingIfConfigChanged() {
185313
185334
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -216978,7 +216999,7 @@ function getAttributionHeader(fingerprint) {
216978
216999
  if (!isAttributionHeaderEnabled()) {
216979
217000
  return "";
216980
217001
  }
216981
- const version2 = `${"1.3.461"}.${fingerprint}`;
217002
+ const version2 = `${"1.3.463"}.${fingerprint}`;
216982
217003
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
216983
217004
  const cch = "";
216984
217005
  const workload = getWorkload();
@@ -271528,6 +271549,49 @@ function logToolUseToolResultMismatch(toolUseId, messages, messagesForAPI) {
271528
271549
  });
271529
271550
  } catch (_) {}
271530
271551
  }
271552
+ function isRayuCreditLimitError(error54) {
271553
+ if (!(error54 instanceof import_sdk9.APIError) || error54.status !== 429) {
271554
+ return false;
271555
+ }
271556
+ const body = error54.error;
271557
+ if (body && typeof body === "object") {
271558
+ if ("reason" in body && String(body.reason ?? "") === "period_limit") {
271559
+ return true;
271560
+ }
271561
+ const nested = body.error;
271562
+ if (nested && typeof nested === "object" && "message" in nested) {
271563
+ const nestedMsg = String(nested.message ?? "");
271564
+ if (/credit limit reached|period_limit/i.test(nestedMsg))
271565
+ return true;
271566
+ }
271567
+ }
271568
+ return /credit limit reached|period_limit/i.test(error54.message ?? "");
271569
+ }
271570
+ function getRayuCreditResetSeconds(error54) {
271571
+ const body = error54.error;
271572
+ if (body && typeof body === "object" && "resetSeconds" in body) {
271573
+ const n2 = Number(body.resetSeconds);
271574
+ if (Number.isFinite(n2) && n2 > 0)
271575
+ return n2;
271576
+ }
271577
+ const ra = error54.headers?.get?.("retry-after");
271578
+ if (ra) {
271579
+ const n2 = parseInt(ra, 10);
271580
+ if (!isNaN(n2) && n2 > 0)
271581
+ return n2;
271582
+ }
271583
+ return null;
271584
+ }
271585
+ function formatCreditResetHint(seconds) {
271586
+ const days = Math.round(seconds / 86400);
271587
+ if (days >= 1)
271588
+ return `in about ${days} day${days === 1 ? "" : "s"}`;
271589
+ const hours = Math.round(seconds / 3600);
271590
+ if (hours >= 1)
271591
+ return `in about ${hours} hour${hours === 1 ? "" : "s"}`;
271592
+ const mins = Math.max(1, Math.round(seconds / 60));
271593
+ return `in about ${mins} minute${mins === 1 ? "" : "s"}`;
271594
+ }
271531
271595
  function getAssistantMessageFromError(error54, model, options) {
271532
271596
  if (error54 instanceof import_sdk9.APIConnectionTimeoutError || error54 instanceof import_sdk9.APIConnectionError && error54.message.toLowerCase().includes("timeout")) {
271533
271597
  return createAssistantAPIErrorMessage({
@@ -271546,6 +271610,16 @@ function getAssistantMessageFromError(error54, model, options) {
271546
271610
  error: "rate_limit"
271547
271611
  });
271548
271612
  }
271613
+ if (isRayuCreditLimitError(error54)) {
271614
+ const plansUrl = `${getRayuWebBaseUrl()}/plans`;
271615
+ const resetSeconds = getRayuCreditResetSeconds(error54);
271616
+ const resetHint = resetSeconds ? ` Your credits renew ${formatCreditResetHint(resetSeconds)}.` : "";
271617
+ const switchHint = getIsNonInteractiveSession() ? "" : " — or run /model to switch to a model on another provider (e.g. your own API key).";
271618
+ return createAssistantAPIErrorMessage({
271619
+ error: "billing_error",
271620
+ content: `\uD83D\uDCB3 You've reached your plan's credit limit for this billing period.${resetHint} Renew or upgrade your plan, or add more credits, to keep using Rayu-hosted models: ${plansUrl}${switchHint}`
271621
+ });
271622
+ }
271549
271623
  if (error54 instanceof import_sdk9.APIError && error54.status === 429 && shouldProcessRateLimits(false)) {
271550
271624
  const rateLimitType = error54.headers?.get?.("anthropic-ratelimit-unified-representative-claim");
271551
271625
  const overageStatus = error54.headers?.get?.("anthropic-ratelimit-unified-overage-status");
@@ -272416,6 +272490,12 @@ async function* withRetry(getClient, operation, options) {
272416
272490
  } catch (error54) {
272417
272491
  lastError = error54;
272418
272492
  logForDebugging(`API error (attempt ${attempt}/${maxRetries + 1}): ${error54 instanceof import_sdk10.APIError ? `${error54.status} ${error54.message}` : errorMessage(error54)}`, { level: "error" });
272493
+ if (isRayuCreditLimitError(error54)) {
272494
+ logEvent("tengu_api_rayu_credit_limit_reached", {
272495
+ provider: getAPIProviderForStatsig()
272496
+ });
272497
+ throw new CannotRetryError(error54, retryContext);
272498
+ }
272419
272499
  if (wasFastModeActive && !isPersistentRetryEnabled() && error54 instanceof import_sdk10.APIError && (error54.status === 429 || is529Error(error54))) {
272420
272500
  const overageReason = error54.headers?.get("anthropic-ratelimit-unified-overage-disabled-reason");
272421
272501
  if (overageReason !== null && overageReason !== undefined) {
@@ -301962,7 +302042,7 @@ function getTelemetryAttributes() {
301962
302042
  attributes["session.id"] = sessionId;
301963
302043
  }
301964
302044
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
301965
- attributes["app.version"] = "1.3.461";
302045
+ attributes["app.version"] = "1.3.463";
301966
302046
  }
301967
302047
  const oauthAccount = getOauthAccountInfo();
301968
302048
  if (oauthAccount) {
@@ -412325,7 +412405,7 @@ function getInstallationEnv() {
412325
412405
  return;
412326
412406
  }
412327
412407
  function getClaudeCodeVersion() {
412328
- return "1.3.461";
412408
+ return "1.3.463";
412329
412409
  }
412330
412410
  async function getInstalledVSCodeExtensionVersion(command) {
412331
412411
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -417563,7 +417643,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
417563
417643
  const client4 = new Client({
417564
417644
  name: "claude-code",
417565
417645
  title: "RAYU",
417566
- version: "1.3.461",
417646
+ version: "1.3.463",
417567
417647
  description: "Anthropic's agentic coding tool",
417568
417648
  websiteUrl: PRODUCT_URL
417569
417649
  }, {
@@ -417880,7 +417960,7 @@ var init_client7 = __esm(() => {
417880
417960
  const client4 = new Client({
417881
417961
  name: "claude-code",
417882
417962
  title: "RAYU",
417883
- version: "1.3.461",
417963
+ version: "1.3.463",
417884
417964
  description: "Anthropic's agentic coding tool",
417885
417965
  websiteUrl: PRODUCT_URL
417886
417966
  }, {
@@ -427124,6 +427204,14 @@ function renderToolUseErrorMessage3(result, options) {
427124
427204
  })
427125
427205
  });
427126
427206
  }
427207
+ if (errorMessage3?.includes("File has been modified since read")) {
427208
+ return /* @__PURE__ */ jsx_runtime54.jsx(MessageResponse, {
427209
+ children: /* @__PURE__ */ jsx_runtime54.jsx(ThemedText, {
427210
+ color: "error",
427211
+ children: "File changed since it was last read — reading it again before retrying"
427212
+ })
427213
+ });
427214
+ }
427127
427215
  return /* @__PURE__ */ jsx_runtime54.jsx(MessageResponse, {
427128
427216
  children: /* @__PURE__ */ jsx_runtime54.jsx(ThemedText, {
427129
427217
  color: "error",
@@ -432137,6 +432225,13 @@ function getAgentModel(agentModel, parentModel, toolSpecifiedModel, permissionMo
432137
432225
  exceeds200kTokens: false
432138
432226
  });
432139
432227
  }
432228
+ if (!isModelAllowed(agentModelWithExp)) {
432229
+ return getRuntimeMainLoopModel({
432230
+ permissionMode: permissionMode ?? "default",
432231
+ mainLoopModel: parentModel,
432232
+ exceeds200kTokens: false
432233
+ });
432234
+ }
432140
432235
  if (aliasMatchesParentTier(agentModelWithExp, parentModel)) {
432141
432236
  return parentModel;
432142
432237
  }
@@ -432196,6 +432291,7 @@ var init_agent = __esm(() => {
432196
432291
  init_stringUtils();
432197
432292
  init_aliases();
432198
432293
  init_bedrock();
432294
+ init_modelAllowlist();
432199
432295
  init_model();
432200
432296
  init_providers();
432201
432297
  AGENT_MODEL_OPTIONS = [...MODEL_ALIASES, "inherit"];
@@ -432685,7 +432781,7 @@ function computeFingerprint(messageText, version2) {
432685
432781
  }
432686
432782
  function computeFingerprintFromMessages(messages) {
432687
432783
  const firstMessageText = extractFirstMessageText(messages);
432688
- return computeFingerprint(firstMessageText, "1.3.461");
432784
+ return computeFingerprint(firstMessageText, "1.3.463");
432689
432785
  }
432690
432786
  var FINGERPRINT_SALT = "59cf53e54c78";
432691
432787
  var init_fingerprint = () => {};
@@ -432727,7 +432823,7 @@ async function sideQuery(opts) {
432727
432823
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
432728
432824
  }
432729
432825
  const messageText = extractFirstUserMessageText(messages);
432730
- const fingerprint = computeFingerprint(messageText, "1.3.461");
432826
+ const fingerprint = computeFingerprint(messageText, "1.3.463");
432731
432827
  const attributionHeader = getAttributionHeader(fingerprint);
432732
432828
  const systemBlocks = [
432733
432829
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -492705,7 +492801,7 @@ function getKnownModelOption(model) {
492705
492801
  };
492706
492802
  }
492707
492803
  function getModelOptions(fastMode = false) {
492708
- if (isOpenAICompatibleActive() || getAPIProvider() === "bedrock") {
492804
+ if (isOpenAICompatibleActive() || getAPIProvider() === "bedrock" || isRayuNonAnthropicActive()) {
492709
492805
  const { getActiveProviderModelOptions: getActiveProviderModelOptions2 } = (init_rayuConfig(), __toCommonJS(exports_rayuConfig));
492710
492806
  const rayuOptions = getActiveProviderModelOptions2();
492711
492807
  if (rayuOptions.length) {
@@ -501491,7 +501587,7 @@ Be specific: "run the tests" beats "continue".
501491
501587
  NEVER SUGGEST:
501492
501588
  - Evaluative ("looks good", "thanks")
501493
501589
  - Questions ("what about...?")
501494
- - Claude-voice ("Let me...", "I'll...", "Here's...")
501590
+ - Rayu-voice ("Let me...", "I'll...", "Here's...")
501495
501591
  - New ideas they didn't ask about
501496
501592
  - Multiple sentences
501497
501593
 
@@ -528059,7 +528155,7 @@ function Feedback({
528059
528155
  platform: env4.platform,
528060
528156
  gitRepo: envInfo.isGit,
528061
528157
  terminal: env4.terminal,
528062
- version: "1.3.461",
528158
+ version: "1.3.463",
528063
528159
  transcript: normalizeMessagesForAPI(messages),
528064
528160
  errors: sanitizedErrors,
528065
528161
  lastApiRequest: getLastAPIRequest(),
@@ -528251,7 +528347,7 @@ function Feedback({
528251
528347
  ", ",
528252
528348
  env4.terminal,
528253
528349
  ", v",
528254
- "1.3.461"
528350
+ "1.3.463"
528255
528351
  ]
528256
528352
  })
528257
528353
  ]
@@ -528357,7 +528453,7 @@ ${sanitizedDescription}
528357
528453
  ` + `**Environment Info**
528358
528454
  ` + `- Platform: ${env4.platform}
528359
528455
  ` + `- Terminal: ${env4.terminal}
528360
- ` + `- Version: ${"1.3.461"}
528456
+ ` + `- Version: ${"1.3.463"}
528361
528457
  ` + `- Feedback ID: ${feedbackId}
528362
528458
  ` + `
528363
528459
  **Errors**
@@ -531197,9 +531293,9 @@ async function assertMinVersion() {
531197
531293
  if (false) {}
531198
531294
  try {
531199
531295
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
531200
- if (versionConfig.minVersion && lt("1.3.461", versionConfig.minVersion)) {
531296
+ if (versionConfig.minVersion && lt("1.3.463", versionConfig.minVersion)) {
531201
531297
  console.error(`
531202
- It looks like your version of RAYU (${"1.3.461"}) needs an update.
531298
+ It looks like your version of RAYU (${"1.3.463"}) needs an update.
531203
531299
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
531204
531300
 
531205
531301
  To update, please run:
@@ -531425,7 +531521,7 @@ async function installGlobalPackage(specificVersion) {
531425
531521
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
531426
531522
  logEvent("tengu_auto_updater_lock_contention", {
531427
531523
  pid: process.pid,
531428
- currentVersion: "1.3.461"
531524
+ currentVersion: "1.3.463"
531429
531525
  });
531430
531526
  return "in_progress";
531431
531527
  }
@@ -531434,7 +531530,7 @@ async function installGlobalPackage(specificVersion) {
531434
531530
  if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
531435
531531
  logError2(new Error("Windows NPM detected in WSL environment"));
531436
531532
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
531437
- currentVersion: "1.3.461"
531533
+ currentVersion: "1.3.463"
531438
531534
  });
531439
531535
  console.error(`
531440
531536
  Error: Windows NPM detected in WSL
@@ -531966,7 +532062,7 @@ function detectLinuxGlobPatternWarnings() {
531966
532062
  }
531967
532063
  async function getDoctorDiagnostic() {
531968
532064
  const installationType = await getCurrentInstallationType();
531969
- const version2 = typeof MACRO !== "undefined" ? "1.3.461" : "unknown";
532065
+ const version2 = typeof MACRO !== "undefined" ? "1.3.463" : "unknown";
531970
532066
  const installationPath = await getInstallationPath();
531971
532067
  const invokedBinary = getInvokedBinary();
531972
532068
  const multipleInstallations = await detectMultipleInstallations();
@@ -532761,8 +532857,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
532761
532857
  const maxVersion = await getMaxVersion();
532762
532858
  if (maxVersion && gt(version2, maxVersion)) {
532763
532859
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
532764
- if (gte("1.3.461", maxVersion)) {
532765
- logForDebugging(`Native installer: current version ${"1.3.461"} is already at or above maxVersion ${maxVersion}, skipping update`);
532860
+ if (gte("1.3.463", maxVersion)) {
532861
+ logForDebugging(`Native installer: current version ${"1.3.463"} is already at or above maxVersion ${maxVersion}, skipping update`);
532766
532862
  logEvent("tengu_native_update_skipped_max_version", {
532767
532863
  latency_ms: Date.now() - startTime2,
532768
532864
  max_version: maxVersion,
@@ -532773,7 +532869,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
532773
532869
  version2 = maxVersion;
532774
532870
  }
532775
532871
  }
532776
- if (!forceReinstall && version2 === "1.3.461" && await versionIsAvailable(version2) && await isPossibleClaudeBinary(executablePath)) {
532872
+ if (!forceReinstall && version2 === "1.3.463" && await versionIsAvailable(version2) && await isPossibleClaudeBinary(executablePath)) {
532777
532873
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
532778
532874
  logEvent("tengu_native_update_complete", {
532779
532875
  latency_ms: Date.now() - startTime2,
@@ -533969,7 +534065,7 @@ function buildPrimarySection() {
533969
534065
  });
533970
534066
  return [{
533971
534067
  label: "Version",
533972
- value: "1.3.461"
534068
+ value: "1.3.463"
533973
534069
  }, {
533974
534070
  label: "Session name",
533975
534071
  value: nameValue
@@ -537660,7 +537756,7 @@ function Config({
537660
537756
  }
537661
537757
  })
537662
537758
  }) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_runtime170.jsx(ChannelDowngradeDialog, {
537663
- currentVersion: "1.3.461",
537759
+ currentVersion: "1.3.463",
537664
537760
  onChoice: (choice) => {
537665
537761
  setShowSubmenu(null);
537666
537762
  setTabsHidden(false);
@@ -537672,7 +537768,7 @@ function Config({
537672
537768
  autoUpdatesChannel: "stable"
537673
537769
  };
537674
537770
  if (choice === "stay") {
537675
- newSettings.minimumVersion = "1.3.461";
537771
+ newSettings.minimumVersion = "1.3.463";
537676
537772
  }
537677
537773
  updateSettingsForSource("userSettings", newSettings);
537678
537774
  setSettingsData((prev_27) => ({
@@ -545734,7 +545830,7 @@ function HelpV2(t0) {
545734
545830
  let t6;
545735
545831
  if ($3[31] !== tabs) {
545736
545832
  t6 = /* @__PURE__ */ jsx_runtime197.jsx(Tabs, {
545737
- title: `Rayu-CLI v${"1.3.461"}`,
545833
+ title: `Rayu-CLI v${"1.3.463"}`,
545738
545834
  color: "professionalBlue",
545739
545835
  defaultTab: "general",
545740
545836
  children: tabs
@@ -565821,7 +565917,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
565821
565917
  }
565822
565918
  return [];
565823
565919
  }
565824
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.3.461") {
565920
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.3.463") {
565825
565921
  if (false) {}
565826
565922
  const cachedChangelog = await getStoredChangelog();
565827
565923
  if (lastSeenVersion !== currentVersion || !cachedChangelog) {
@@ -565834,7 +565930,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.3.461")
565834
565930
  releaseNotes
565835
565931
  };
565836
565932
  }
565837
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.3.461") {
565933
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.3.463") {
565838
565934
  if (false) {}
565839
565935
  const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion);
565840
565936
  return {
@@ -565962,7 +566058,7 @@ function getRecentActivitySync() {
565962
566058
  return cachedActivity;
565963
566059
  }
565964
566060
  function getLogoDisplayData() {
565965
- const version2 = process.env.DEMO_VERSION ?? "1.3.461";
566061
+ const version2 = process.env.DEMO_VERSION ?? "1.3.463";
565966
566062
  const serverUrl = getDirectConnectServerUrl();
565967
566063
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
565968
566064
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -567209,7 +567305,7 @@ function LogoV2() {
567209
567305
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
567210
567306
  t2 = () => {
567211
567307
  const currentConfig = getGlobalConfig();
567212
- if (currentConfig.lastReleaseNotesSeen === "1.3.461") {
567308
+ if (currentConfig.lastReleaseNotesSeen === "1.3.463") {
567213
567309
  return;
567214
567310
  }
567215
567311
  saveGlobalConfig(_temp327);
@@ -567687,7 +567783,7 @@ function LogoV2() {
567687
567783
  t24 = $3[61];
567688
567784
  }
567689
567785
  const _latestNpm = getCachedLatestNpmVersionSync();
567690
- const _updateFeeds = _latestNpm && gt(_latestNpm, "1.3.461") ? [createUpdateAvailableFeed("1.3.461", _latestNpm)] : [];
567786
+ const _updateFeeds = _latestNpm && gt(_latestNpm, "1.3.463") ? [createUpdateAvailableFeed("1.3.463", _latestNpm)] : [];
567691
567787
  const t25 = layoutMode === "horizontal" && /* @__PURE__ */ jsx_runtime239.jsx(FeedColumn, {
567692
567788
  feeds: showOnboarding ? [createProjectOnboardingFeed(getSteps()), createRecentActivityFeed(activities)] : showGuestPassesUpsell ? [createRecentActivityFeed(activities), createGuestPassesFeed()] : showOverageCreditUpsell ? [createRecentActivityFeed(activities), createOverageCreditFeed()] : [createRecentActivityFeed(activities), ..._updateFeeds, createWhatsNewFeed(changelog)],
567693
567789
  maxWidth: rightWidth
@@ -567887,12 +567983,12 @@ function LogoV2() {
567887
567983
  return t41;
567888
567984
  }
567889
567985
  function _temp327(current) {
567890
- if (current.lastReleaseNotesSeen === "1.3.461") {
567986
+ if (current.lastReleaseNotesSeen === "1.3.463") {
567891
567987
  return current;
567892
567988
  }
567893
567989
  return {
567894
567990
  ...current,
567895
- lastReleaseNotesSeen: "1.3.461"
567991
+ lastReleaseNotesSeen: "1.3.463"
567896
567992
  };
567897
567993
  }
567898
567994
  function _temp241(s_0) {
@@ -592801,7 +592897,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
592801
592897
  smapsRollup,
592802
592898
  platform: process.platform,
592803
592899
  nodeVersion: process.version,
592804
- ccVersion: "1.3.461"
592900
+ ccVersion: "1.3.463"
592805
592901
  };
592806
592902
  }
592807
592903
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -593323,7 +593419,7 @@ var init_bridge_kick = __esm(() => {
593323
593419
  var call49 = async () => {
593324
593420
  return {
593325
593421
  type: "text",
593326
- value: "1.3.461"
593422
+ value: "1.3.463"
593327
593423
  };
593328
593424
  }, version2, version_default;
593329
593425
  var init_version = __esm(() => {
@@ -597368,12 +597464,9 @@ ${r2.output.slice(-200)}`);
597368
597464
  gap: 1,
597369
597465
  paddingLeft: 1,
597370
597466
  children: [
597371
- /* @__PURE__ */ jsx_runtime326.jsxs(ThemedText, {
597467
+ /* @__PURE__ */ jsx_runtime326.jsx(ThemedText, {
597372
597468
  bold: true,
597373
- children: [
597374
- "API key for ",
597375
- preset?.label
597376
- ]
597469
+ children: `API key for ${preset?.label}`
597377
597470
  }),
597378
597471
  /* @__PURE__ */ jsx_runtime326.jsx(ThemedText, {
597379
597472
  dimColor: true,
@@ -603276,7 +603369,7 @@ function generateHtmlReport(data, insights) {
603276
603369
  </html>`;
603277
603370
  }
603278
603371
  function buildExportData(data, insights, facets, remoteStats) {
603279
- const version3 = typeof MACRO !== "undefined" ? "1.3.461" : "unknown";
603372
+ const version3 = typeof MACRO !== "undefined" ? "1.3.463" : "unknown";
603280
603373
  const remote_hosts_collected = remoteStats?.hosts.filter((h3) => h3.sessionCount > 0).map((h3) => h3.name);
603281
603374
  const facets_summary = {
603282
603375
  total: facets.size,
@@ -607186,7 +607279,7 @@ var init_sessionStorage = __esm(() => {
607186
607279
  init_settings2();
607187
607280
  init_slowOperations();
607188
607281
  init_uuid();
607189
- VERSION6 = typeof MACRO !== "undefined" ? "1.3.461" : "unknown";
607282
+ VERSION6 = typeof MACRO !== "undefined" ? "1.3.463" : "unknown";
607190
607283
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
607191
607284
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
607192
607285
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -608406,7 +608499,7 @@ var init_filesystem = __esm(() => {
608406
608499
  });
608407
608500
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
608408
608501
  const nonce = randomBytes19(16).toString("hex");
608409
- return join154(getClaudeTempDir(), "bundled-skills", "1.3.461", nonce);
608502
+ return join154(getClaudeTempDir(), "bundled-skills", "1.3.463", nonce);
608410
608503
  });
608411
608504
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
608412
608505
  });
@@ -613521,7 +613614,7 @@ __export(exports_update, {
613521
613614
  import { execFileSync as execFileSync3 } from "node:child_process";
613522
613615
  import { homedir as homedir35 } from "os";
613523
613616
  async function update() {
613524
- writeToStdout(`Current version: ${"1.3.461"}
613617
+ writeToStdout(`Current version: ${"1.3.463"}
613525
613618
  `);
613526
613619
  const isBundled = isInBundledMode();
613527
613620
  if (isBundled) {
@@ -613547,13 +613640,13 @@ Manual check: npm view ${"@rayu-dev/rayu-cli"} version
613547
613640
  process.exit(1);
613548
613641
  return;
613549
613642
  }
613550
- if (latestVersion === "1.3.461") {
613643
+ if (latestVersion === "1.3.463") {
613551
613644
  writeToStdout(source_default.green(`
613552
- Rayu CLI is up to date (${"1.3.461"})
613645
+ Rayu CLI is up to date (${"1.3.463"})
613553
613646
  `));
613554
613647
  process.exit(0);
613555
613648
  }
613556
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.3.461"})
613649
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.3.463"})
613557
613650
  `);
613558
613651
  writeToStdout(`Installing update...
613559
613652
 
@@ -613577,7 +613670,7 @@ Try manually:
613577
613670
  return;
613578
613671
  }
613579
613672
  writeToStdout(source_default.green(`
613580
- Successfully updated from ${"1.3.461"} to ${latestVersion}
613673
+ Successfully updated from ${"1.3.463"} to ${latestVersion}
613581
613674
  `));
613582
613675
  process.exit(0);
613583
613676
  }
@@ -613591,14 +613684,14 @@ async function updateNativeBinary() {
613591
613684
  } catch {
613592
613685
  latestVersion = "";
613593
613686
  }
613594
- if (latestVersion && latestVersion === "1.3.461") {
613687
+ if (latestVersion && latestVersion === "1.3.463") {
613595
613688
  writeToStdout(source_default.green(`
613596
- Rayu CLI is up to date (1.3.461)
613689
+ Rayu CLI is up to date (1.3.463)
613597
613690
  `));
613598
613691
  process.exit(0);
613599
613692
  }
613600
613693
  if (latestVersion) {
613601
- writeToStdout(`New version available: ${latestVersion} (current: 1.3.461)
613694
+ writeToStdout(`New version available: ${latestVersion} (current: 1.3.463)
613602
613695
  `);
613603
613696
  }
613604
613697
  writeToStdout(`Downloading and installing update...
@@ -613613,13 +613706,13 @@ Rayu CLI is up to date (1.3.461)
613613
613706
  return;
613614
613707
  }
613615
613708
  writeToStdout(source_default.green(`
613616
- Rayu CLI is up to date (1.3.461)
613709
+ Rayu CLI is up to date (1.3.463)
613617
613710
  `));
613618
613711
  process.exit(0);
613619
613712
  }
613620
613713
  const updatedTo = result.latestVersion ?? latestVersion ?? "latest";
613621
613714
  writeToStdout(source_default.green(`
613622
- Successfully updated from 1.3.461 to ${updatedTo}
613715
+ Successfully updated from 1.3.463 to ${updatedTo}
613623
613716
  `));
613624
613717
  writeToStdout(`Restart your terminal to use the new version.
613625
613718
  `);
@@ -613650,7 +613743,7 @@ __export(exports_uninstall, {
613650
613743
  import { execFileSync as execFileSync4 } from "node:child_process";
613651
613744
  import { homedir as homedir36 } from "os";
613652
613745
  async function uninstall() {
613653
- writeToStdout(`Uninstalling Rayu CLI (${"1.3.461"})...
613746
+ writeToStdout(`Uninstalling Rayu CLI (${"1.3.463"})...
613654
613747
  `);
613655
613748
  writeToStdout(`Running: npm uninstall -g ${"@rayu-dev/rayu-cli"}
613656
613749
 
@@ -613673,7 +613766,7 @@ Try running manually:
613673
613766
  process.exit(1);
613674
613767
  }
613675
613768
  writeToStdout(source_default.green(`
613676
- Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.3.461"}
613769
+ Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.3.463"}
613677
613770
  `));
613678
613771
  writeToStdout(`Thanks for using Rayu CLI!
613679
613772
  `);
@@ -613725,7 +613818,7 @@ function showFirstRunWelcome() {
613725
613818
  `);
613726
613819
  try {
613727
613820
  mkdirSync16(getRayuConfigHomeDir(), { recursive: true });
613728
- writeFileSync18(markerPath(), "1.3.461", "utf8");
613821
+ writeFileSync18(markerPath(), "1.3.463", "utf8");
613729
613822
  } catch {}
613730
613823
  }
613731
613824
  var init_firstRun = __esm(() => {
@@ -625568,7 +625661,7 @@ async function initializeBetaTracing(resource) {
625568
625661
  });
625569
625662
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
625570
625663
  setLoggerProvider(loggerProvider);
625571
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.3.461");
625664
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.3.463");
625572
625665
  setEventLogger(eventLogger);
625573
625666
  process.on("beforeExit", async () => {
625574
625667
  await loggerProvider?.forceFlush();
@@ -625608,7 +625701,7 @@ async function initializeTelemetry() {
625608
625701
  const platform4 = getPlatform();
625609
625702
  const baseAttributes = {
625610
625703
  [import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
625611
- [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.3.461"
625704
+ [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.3.463"
625612
625705
  };
625613
625706
  if (platform4 === "wsl") {
625614
625707
  const wslVersion = getWslVersion();
@@ -625653,7 +625746,7 @@ async function initializeTelemetry() {
625653
625746
  } catch {}
625654
625747
  };
625655
625748
  registerCleanup(shutdownTelemetry2);
625656
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.3.461");
625749
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.3.463");
625657
625750
  }
625658
625751
  const meterProvider = new import_sdk_metrics2.MeterProvider({
625659
625752
  resource,
@@ -625673,7 +625766,7 @@ async function initializeTelemetry() {
625673
625766
  });
625674
625767
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
625675
625768
  setLoggerProvider(loggerProvider);
625676
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.3.461");
625769
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.3.463");
625677
625770
  setEventLogger(eventLogger);
625678
625771
  logForDebugging("[3P telemetry] Event logger set successfully");
625679
625772
  process.on("beforeExit", async () => {
@@ -625735,7 +625828,7 @@ Current timeout: ${timeoutMs}ms
625735
625828
  }
625736
625829
  };
625737
625830
  registerCleanup(shutdownTelemetry);
625738
- return meterProvider.getMeter("com.anthropic.claude_code", "1.3.461");
625831
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.3.463");
625739
625832
  }
625740
625833
  async function flushTelemetry() {
625741
625834
  const meterProvider = getMeterProvider();
@@ -627248,7 +627341,7 @@ function buildSystemInitMessage(inputs) {
627248
627341
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
627249
627342
  apiKeySource: getAnthropicApiKeyWithSource().source,
627250
627343
  betas: getSdkBetas(),
627251
- claude_code_version: "1.3.461",
627344
+ claude_code_version: "1.3.463",
627252
627345
  output_style: outputStyle2,
627253
627346
  agents: inputs.agents.map((agent) => agent.agentType),
627254
627347
  skills: inputs.skills.filter((s2) => s2.userInvocable !== false).map((skill) => skill.name),
@@ -643582,7 +643675,7 @@ var init_useVoiceEnabled = __esm(() => {
643582
643675
  function getSemverPart(version3) {
643583
643676
  return `${import_semver12.major(version3, { loose: true })}.${import_semver12.minor(version3, { loose: true })}.${import_semver12.patch(version3, { loose: true })}`;
643584
643677
  }
643585
- function useUpdateNotification(updatedVersion, initialVersion = "1.3.461") {
643678
+ function useUpdateNotification(updatedVersion, initialVersion = "1.3.463") {
643586
643679
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react217.useState(() => getSemverPart(initialVersion));
643587
643680
  if (!updatedVersion) {
643588
643681
  return null;
@@ -643622,7 +643715,7 @@ function AutoUpdater({
643622
643715
  return;
643623
643716
  }
643624
643717
  if (false) {}
643625
- const currentVersion = "1.3.461";
643718
+ const currentVersion = "1.3.463";
643626
643719
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
643627
643720
  let latestVersion = await getLatestVersion(channel2);
643628
643721
  const isDisabled = isAutoUpdaterDisabled();
@@ -643835,12 +643928,12 @@ function NativeAutoUpdater({
643835
643928
  logEvent("tengu_native_auto_updater_start", {});
643836
643929
  try {
643837
643930
  const maxVersion = await getMaxVersion();
643838
- if (maxVersion && gt("1.3.461", maxVersion)) {
643931
+ if (maxVersion && gt("1.3.463", maxVersion)) {
643839
643932
  const msg = await getMaxVersionMessage();
643840
643933
  setMaxVersionIssue(msg ?? "affects your version");
643841
643934
  }
643842
643935
  const result = await installLatest(channel2);
643843
- const currentVersion = "1.3.461";
643936
+ const currentVersion = "1.3.463";
643844
643937
  const latencyMs = Date.now() - startTime2;
643845
643938
  if (result.lockFailed) {
643846
643939
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -643977,17 +644070,17 @@ function PackageManagerAutoUpdater(t0) {
643977
644070
  const maxVersion = await getMaxVersion();
643978
644071
  if (maxVersion && latest && gt(latest, maxVersion)) {
643979
644072
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
643980
- if (gte("1.3.461", maxVersion)) {
643981
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.3.461"} is already at or above maxVersion ${maxVersion}, skipping update`);
644073
+ if (gte("1.3.463", maxVersion)) {
644074
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.3.463"} is already at or above maxVersion ${maxVersion}, skipping update`);
643982
644075
  setUpdateAvailable(false);
643983
644076
  return;
643984
644077
  }
643985
644078
  latest = maxVersion;
643986
644079
  }
643987
- const hasUpdate = latest && !gte("1.3.461", latest) && !shouldSkipVersion(latest);
644080
+ const hasUpdate = latest && !gte("1.3.463", latest) && !shouldSkipVersion(latest);
643988
644081
  setUpdateAvailable(!!hasUpdate);
643989
644082
  if (hasUpdate) {
643990
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.3.461"} -> ${latest}`);
644083
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.3.463"} -> ${latest}`);
643991
644084
  }
643992
644085
  };
643993
644086
  $3[0] = t1;
@@ -644021,7 +644114,7 @@ function PackageManagerAutoUpdater(t0) {
644021
644114
  wrap: "truncate",
644022
644115
  children: [
644023
644116
  "currentVersion: ",
644024
- "1.3.461"
644117
+ "1.3.463"
644025
644118
  ]
644026
644119
  });
644027
644120
  $3[3] = verbose;
@@ -652186,7 +652279,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
652186
652279
  project_dir: getOriginalCwd(),
652187
652280
  added_dirs: addedDirs
652188
652281
  },
652189
- version: "1.3.461",
652282
+ version: "1.3.463",
652190
652283
  output_style: {
652191
652284
  name: outputStyleName
652192
652285
  },
@@ -663684,7 +663777,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
663684
663777
  } catch {}
663685
663778
  const data = {
663686
663779
  trigger,
663687
- version: "1.3.461",
663780
+ version: "1.3.463",
663688
663781
  platform: process.platform,
663689
663782
  transcript,
663690
663783
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -675871,7 +675964,7 @@ function WelcomeV2() {
675871
675964
  dimColor: true,
675872
675965
  children: [
675873
675966
  "v",
675874
- "1.3.461"
675967
+ "1.3.463"
675875
675968
  ]
675876
675969
  })
675877
675970
  ]
@@ -677605,7 +677698,7 @@ function completeOnboarding() {
677605
677698
  saveGlobalConfig((current) => ({
677606
677699
  ...current,
677607
677700
  hasCompletedOnboarding: true,
677608
- lastOnboardingVersion: "1.3.461"
677701
+ lastOnboardingVersion: "1.3.463"
677609
677702
  }));
677610
677703
  }
677611
677704
  function showDialog(root2, renderer) {
@@ -682555,7 +682648,7 @@ function appendToLog(path30, message) {
682555
682648
  cwd: getFsImplementation().cwd(),
682556
682649
  userType: "external",
682557
682650
  sessionId: getSessionId(),
682558
- version: "1.3.461"
682651
+ version: "1.3.463"
682559
682652
  };
682560
682653
  getLogWriter(path30).write(messageWithTimestamp);
682561
682654
  }
@@ -686663,8 +686756,8 @@ async function getEnvLessBridgeConfig() {
686663
686756
  }
686664
686757
  async function checkEnvLessBridgeMinVersion() {
686665
686758
  const cfg = await getEnvLessBridgeConfig();
686666
- if (cfg.min_version && lt("1.3.461", cfg.min_version)) {
686667
- return `Your version of RAYU (${"1.3.461"}) is too old for Remote Control.
686759
+ if (cfg.min_version && lt("1.3.463", cfg.min_version)) {
686760
+ return `Your version of RAYU (${"1.3.463"}) is too old for Remote Control.
686668
686761
  Version ${cfg.min_version} or higher is required. Run \`claude update\` to update.`;
686669
686762
  }
686670
686763
  return null;
@@ -687138,7 +687231,7 @@ async function initBridgeCore(params) {
687138
687231
  const rawApi = createBridgeApiClient({
687139
687232
  baseUrl,
687140
687233
  getAccessToken,
687141
- runnerVersion: "1.3.461",
687234
+ runnerVersion: "1.3.463",
687142
687235
  onDebug: logForDebugging,
687143
687236
  onAuth401,
687144
687237
  getTrustedDeviceToken
@@ -692500,7 +692593,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
692500
692593
  setCwd(cwd3);
692501
692594
  const server = new Server({
692502
692595
  name: "claude/tengu",
692503
- version: "1.3.461"
692596
+ version: "1.3.463"
692504
692597
  }, {
692505
692598
  capabilities: {
692506
692599
  tools: {}
@@ -695026,7 +695119,7 @@ ${customInstructions}` : customInstructions;
695026
695119
  }
695027
695120
  }
695028
695121
  logForDiagnosticsNoPII("info", "started", {
695029
- version: "1.3.461",
695122
+ version: "1.3.463",
695030
695123
  is_native_binary: isInBundledMode()
695031
695124
  });
695032
695125
  registerCleanup(async () => {
@@ -695745,7 +695838,7 @@ Usage: rayu --remote "your task description"`, () => gracefulShutdown(1));
695745
695838
  pendingHookMessages
695746
695839
  }, renderAndRun);
695747
695840
  }
695748
- }).version("1.3.461 (Rayu-CLI)", "-v, --version", "Output the version number");
695841
+ }).version("1.3.463 (Rayu-CLI)", "-v, --version", "Output the version number");
695749
695842
  program.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
695750
695843
  program.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
695751
695844
  if (canUserConfigureAdvisor()) {
@@ -696207,7 +696300,7 @@ if (false) {}
696207
696300
  async function main2() {
696208
696301
  const args = process.argv.slice(2);
696209
696302
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
696210
- console.log(`${"1.3.461"} (Rayu-CLI)`);
696303
+ console.log(`${"1.3.463"} (Rayu-CLI)`);
696211
696304
  return;
696212
696305
  }
696213
696306
  if (!isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_TERMINAL_TITLE)) {