@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.
- package/dist/rayu.js +433 -340
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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(
|
|
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 (!
|
|
180472
|
+
if (!existsSync9(p))
|
|
180232
180473
|
continue;
|
|
180233
180474
|
try {
|
|
180234
|
-
const parsed = parseClientSecretJson(
|
|
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
|
|
180486
|
+
var join27 = (...parts) => parts.join(""), GEMINI_CLI_PUBLIC_CLIENT;
|
|
180246
180487
|
var init_geminiClientSecret = __esm(() => {
|
|
180247
180488
|
GEMINI_CLI_PUBLIC_CLIENT = {
|
|
180248
|
-
clientId:
|
|
180249
|
-
clientSecret:
|
|
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
|
|
180269
|
-
mkdirSync as
|
|
180270
|
-
readFileSync as
|
|
180271
|
-
rmSync as
|
|
180272
|
-
writeFileSync as
|
|
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
|
|
180516
|
+
import { join as join28 } from "path";
|
|
180276
180517
|
function tokenPath() {
|
|
180277
|
-
return
|
|
180518
|
+
return join28(getRayuConfigHomeDir(), TOKEN_FILE);
|
|
180278
180519
|
}
|
|
180279
180520
|
function readGeminiLoginStore() {
|
|
180280
180521
|
try {
|
|
180281
180522
|
const p = tokenPath();
|
|
180282
|
-
if (!
|
|
180523
|
+
if (!existsSync10(p))
|
|
180283
180524
|
return null;
|
|
180284
|
-
return JSON.parse(
|
|
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 (!
|
|
180292
|
-
|
|
180532
|
+
if (!existsSync10(dir))
|
|
180533
|
+
mkdirSync7(dir, { recursive: true });
|
|
180293
180534
|
const p = tokenPath();
|
|
180294
|
-
|
|
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
|
-
|
|
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
|
|
182253
|
+
import { appendFileSync as appendFileSync4, existsSync as existsSync11 } from "node:fs";
|
|
182013
182254
|
import { homedir as homedir9 } from "node:os";
|
|
182014
|
-
import { join as
|
|
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 ||
|
|
182020
|
-
appendFileSync4(
|
|
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 ||
|
|
182028
|
-
return
|
|
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 (!
|
|
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
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
531296
|
+
if (versionConfig.minVersion && lt("1.3.463", versionConfig.minVersion)) {
|
|
531201
531297
|
console.error(`
|
|
531202
|
-
It looks like your version of RAYU (${"1.3.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
532765
|
-
logForDebugging(`Native installer: current version ${"1.3.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
567986
|
+
if (current.lastReleaseNotesSeen === "1.3.463") {
|
|
567891
567987
|
return current;
|
|
567892
567988
|
}
|
|
567893
567989
|
return {
|
|
567894
567990
|
...current,
|
|
567895
|
-
lastReleaseNotesSeen: "1.3.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
613643
|
+
if (latestVersion === "1.3.463") {
|
|
613551
613644
|
writeToStdout(source_default.green(`
|
|
613552
|
-
Rayu CLI is up to date (${"1.3.
|
|
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.
|
|
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.
|
|
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.
|
|
613687
|
+
if (latestVersion && latestVersion === "1.3.463") {
|
|
613595
613688
|
writeToStdout(source_default.green(`
|
|
613596
|
-
Rayu CLI is up to date (1.3.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
643981
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.3.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
686667
|
-
return `Your version of RAYU (${"1.3.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
696303
|
+
console.log(`${"1.3.463"} (Rayu-CLI)`);
|
|
696211
696304
|
return;
|
|
696212
696305
|
}
|
|
696213
696306
|
if (!isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_TERMINAL_TITLE)) {
|