@rayu-dev/rayu-cli 1.2.15 → 1.2.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/rayu.js +460 -479
  2. package/package.json +1 -1
package/dist/rayu.js CHANGED
@@ -147971,7 +147971,7 @@ var init_auth = __esm(() => {
147971
147971
 
147972
147972
  // src/utils/userAgent.ts
147973
147973
  function getRayuUserAgent() {
147974
- return `rayu/${"1.2.15"}`;
147974
+ return `rayu/${"1.2.17"}`;
147975
147975
  }
147976
147976
  var getClaudeCodeUserAgent;
147977
147977
  var init_userAgent = __esm(() => {
@@ -147997,7 +147997,7 @@ function getUserAgent() {
147997
147997
  const clientApp = process.env.RAYU_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.RAYU_AGENT_SDK_CLIENT_APP}` : "";
147998
147998
  const workload = getWorkload();
147999
147999
  const workloadSuffix = workload ? `, workload/${workload}` : "";
148000
- return `rayu/${"1.2.15"} (${"external"}, ${process.env.RAYU_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
148000
+ return `rayu/${"1.2.17"} (${"external"}, ${process.env.RAYU_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
148001
148001
  }
148002
148002
  function getMCPUserAgent() {
148003
148003
  const parts = [];
@@ -148011,7 +148011,7 @@ function getMCPUserAgent() {
148011
148011
  parts.push(`client-app/${process.env.RAYU_AGENT_SDK_CLIENT_APP}`);
148012
148012
  }
148013
148013
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
148014
- return `rayu/${"1.2.15"}${suffix}`;
148014
+ return `rayu/${"1.2.17"}${suffix}`;
148015
148015
  }
148016
148016
  function getWebFetchUserAgent() {
148017
148017
  return `Rayu-User (${getRayuUserAgent()})`;
@@ -148134,7 +148134,7 @@ var init_user = __esm(() => {
148134
148134
  deviceId,
148135
148135
  sessionId: getSessionId(),
148136
148136
  email: getEmail(),
148137
- appVersion: "1.2.15",
148137
+ appVersion: "1.2.17",
148138
148138
  platform: getHostPlatformForAnalytics(),
148139
148139
  organizationUuid,
148140
148140
  accountUuid,
@@ -178794,77 +178794,6 @@ var init_bedrock_sdk = __esm(() => {
178794
178794
  init_client3();
178795
178795
  });
178796
178796
 
178797
- // src/services/api/gemini/vertexChatClient.ts
178798
- var exports_vertexChatClient = {};
178799
- __export(exports_vertexChatClient, {
178800
- toVertexModelId: () => toVertexModelId,
178801
- createVertexGeminiClient: () => createVertexGeminiClient,
178802
- buildVertexFetch: () => buildVertexFetch
178803
- });
178804
- function toVertexModelId(model) {
178805
- if (!model)
178806
- return model;
178807
- if (model.includes("/"))
178808
- return model;
178809
- return `google/${model}`;
178810
- }
178811
- function buildVertexFetch(getToken = getVertexAccessToken) {
178812
- return async (input, init) => {
178813
- const token = await getToken();
178814
- const headers = new Headers(init?.headers);
178815
- headers.set("Authorization", `Bearer ${token}`);
178816
- let body = init?.body;
178817
- if (typeof body === "string" && body.length > 0) {
178818
- try {
178819
- const parsed = JSON.parse(body);
178820
- if (typeof parsed.model === "string") {
178821
- parsed.model = toVertexModelId(parsed.model);
178822
- body = JSON.stringify(parsed);
178823
- }
178824
- } catch {}
178825
- }
178826
- const res = await globalThis.fetch(input, { ...init, headers, body });
178827
- if (res.status === 403) {
178828
- const raw = await res.clone().text().catch(() => "");
178829
- if (/PERMISSION_DENIED|aiplatform|has not been used|disabled/i.test(raw)) {
178830
- const hint = 'Vertex AI access denied. On your GCP project: enable the "Vertex AI API" ' + "(console.cloud.google.com/apis/library/aiplatform.googleapis.com), ensure " + 'billing is active, and grant your account the "Vertex AI User" role ' + "(roles/aiplatform.user). Original: " + raw.slice(0, 300);
178831
- return new Response(JSON.stringify({ error: { code: 403, status: "PERMISSION_DENIED", message: hint } }), {
178832
- status: 403,
178833
- headers: { "Content-Type": "application/json" }
178834
- });
178835
- }
178836
- }
178837
- if (res.status === 404) {
178838
- const raw = await res.clone().text().catch(() => "");
178839
- if (/Publisher Model|not found|was not found/i.test(raw)) {
178840
- const hint = "Model not available on Vertex in this region. Gemini 3.x is only served " + "in `global` / `us-central1` — reconnect (/connect → Vertex) and pick the " + "`global` region, or choose a model your region serves (e.g. gemini-2.5-pro, " + "gemini-2.5-flash). Original: " + raw.slice(0, 240);
178841
- return new Response(JSON.stringify({ error: { code: 404, status: "NOT_FOUND", message: hint } }), {
178842
- status: 404,
178843
- headers: { "Content-Type": "application/json" }
178844
- });
178845
- }
178846
- }
178847
- return res;
178848
- };
178849
- }
178850
- function createVertexGeminiClient(provider, maxRetries) {
178851
- const project = provider.gcpProject ?? "";
178852
- const region = provider.gcpRegion || DEFAULT_VERTEX_REGION;
178853
- const baseURL = vertexBaseURL(project, region);
178854
- return createOpenAICompatibleClient({
178855
- apiKey: "",
178856
- baseURL,
178857
- maxRetries,
178858
- providerId: provider.id,
178859
- fetch: buildVertexFetch()
178860
- });
178861
- }
178862
- var init_vertexChatClient = __esm(() => {
178863
- init_rayuProviders();
178864
- init_openaiAdapter();
178865
- init_vertexAuth();
178866
- });
178867
-
178868
178797
  // src/utils/browser.ts
178869
178798
  function validateUrl(url3) {
178870
178799
  let parsedUrl;
@@ -179776,6 +179705,127 @@ var init_codeAssistClient = __esm(() => {
179776
179705
  SESSION_ID = randomUUID4();
179777
179706
  });
179778
179707
 
179708
+ // src/services/api/gemini/vertexGenaiClient.ts
179709
+ var exports_vertexGenaiClient = {};
179710
+ __export(exports_vertexGenaiClient, {
179711
+ createVertexGenaiClient: () => createVertexGenaiClient,
179712
+ buildVertexGenaiBody: () => buildVertexGenaiBody,
179713
+ bareVertexModel: () => bareVertexModel
179714
+ });
179715
+ function bareVertexModel(model) {
179716
+ return model.replace(/^models\//, "").replace(/^google\//, "");
179717
+ }
179718
+ function buildVertexGenaiBody(params) {
179719
+ const b = buildGenAIBody(params);
179720
+ const body = { contents: b.contents };
179721
+ if (b.systemInstruction)
179722
+ body.systemInstruction = { parts: [{ text: b.systemInstruction }] };
179723
+ if (b.tools)
179724
+ body.tools = b.tools;
179725
+ if (Object.keys(b.config).length)
179726
+ body.generationConfig = b.config;
179727
+ return body;
179728
+ }
179729
+ function normalizeError3(e2, model) {
179730
+ reportIssue("vertex_genai.request_failed", "Vertex genai request failed", {
179731
+ model,
179732
+ error: e2 instanceof Error ? e2.message : String(e2)
179733
+ });
179734
+ const raw = e2 instanceof Error ? e2.message : String(e2);
179735
+ if (/\b403\b|PERMISSION_DENIED|has not been used|aiplatform.*disabled/i.test(raw)) {
179736
+ return new Error('Vertex AI access denied. On your GCP project: enable the "Vertex AI API" ' + "(console.cloud.google.com/apis/library/aiplatform.googleapis.com), ensure " + 'billing is active, and grant your account the "Vertex AI User" role ' + `(roles/aiplatform.user). (Original: ${raw.slice(0, 240)})`);
179737
+ }
179738
+ if (/\b404\b|Publisher Model|was not found|NOT_FOUND/i.test(raw)) {
179739
+ return new Error(`Model "${model}" isn't available on Vertex in this region. Gemini 3.x is ` + "served in `global` / `us-central1` — reconnect (/connect → Vertex) and pick " + "the `global` region, or choose a model your region serves (e.g. gemini-2.5-pro, " + `gemini-2.5-flash). (Original: ${raw.slice(0, 200)})`);
179740
+ }
179741
+ return e2 instanceof Error ? e2 : new Error(String(e2));
179742
+ }
179743
+ function modelUrl(cfg, model, method, query3) {
179744
+ const region = cfg.region || DEFAULT_VERTEX_REGION;
179745
+ const m2 = bareVertexModel(model);
179746
+ return `https://${vertexHost(region)}/v1beta1/projects/${cfg.project}` + `/locations/${region}/publishers/google/models/${m2}:${method}${query3 ? `?${query3}` : ""}`;
179747
+ }
179748
+ async function callVertex(cfg, model, method, body, signal, query3) {
179749
+ const getToken = cfg.getToken ?? getVertexAccessToken;
179750
+ const token = await getToken();
179751
+ return globalThis.fetch(modelUrl(cfg, model, method, query3), {
179752
+ method: "POST",
179753
+ headers: {
179754
+ Authorization: `Bearer ${token}`,
179755
+ "Content-Type": "application/json",
179756
+ "x-goog-user-project": cfg.project
179757
+ },
179758
+ body: JSON.stringify(body),
179759
+ signal
179760
+ });
179761
+ }
179762
+ function createVertexGenaiClient(provider, maxRetries) {
179763
+ const project = provider.gcpProject || process.env.GOOGLE_CLOUD_PROJECT || "";
179764
+ const cfg = {
179765
+ project,
179766
+ region: provider.gcpRegion || DEFAULT_VERTEX_REGION,
179767
+ maxRetries,
179768
+ providerId: provider.id
179769
+ };
179770
+ function ensureProject() {
179771
+ if (!cfg.project) {
179772
+ throw new Error("No GCP project configured for Vertex AI. Run /connect → Google Gemini — " + "Vertex AI, or set GOOGLE_CLOUD_PROJECT.");
179773
+ }
179774
+ }
179775
+ async function runNonStreaming(params) {
179776
+ try {
179777
+ ensureProject();
179778
+ const res = await callVertex(cfg, params.model, "generateContent", buildVertexGenaiBody(params));
179779
+ if (!res.ok) {
179780
+ const text = await res.text().catch(() => "");
179781
+ throw new Error(`Vertex generateContent ${res.status}: ${text.slice(0, 300)}`);
179782
+ }
179783
+ const json2 = await res.json();
179784
+ return toBetaMessageFromGenAI(json2, params.model);
179785
+ } catch (e2) {
179786
+ throw normalizeError3(e2, params.model);
179787
+ }
179788
+ }
179789
+ async function runStreaming(params) {
179790
+ try {
179791
+ ensureProject();
179792
+ const res = await callVertex(cfg, params.model, "streamGenerateContent", buildVertexGenaiBody(params), undefined, "alt=sse");
179793
+ if (!res.ok || !res.body) {
179794
+ const text = await res.text().catch(() => "");
179795
+ throw new Error(`Vertex streamGenerateContent ${res.status}: ${text.slice(0, 300)}`);
179796
+ }
179797
+ const chunks = parseSSEResponses(res.body);
179798
+ return {
179799
+ data: translateGenAIStream(chunks, params.model),
179800
+ request_id: null,
179801
+ response: new Response(null, { status: 200 })
179802
+ };
179803
+ } catch (e2) {
179804
+ throw normalizeError3(e2, params.model);
179805
+ }
179806
+ }
179807
+ return {
179808
+ beta: {
179809
+ messages: {
179810
+ create(params) {
179811
+ if (params.stream) {
179812
+ const p = Promise.resolve();
179813
+ return Object.assign(p, { withResponse: () => runStreaming(params) });
179814
+ }
179815
+ return runNonStreaming(params);
179816
+ }
179817
+ }
179818
+ }
179819
+ };
179820
+ }
179821
+ var init_vertexGenaiClient = __esm(() => {
179822
+ init_rayuDiagnostics();
179823
+ init_rayuProviders();
179824
+ init_vertexAuth();
179825
+ init_codeAssistClient();
179826
+ init_genaiTranslate();
179827
+ });
179828
+
179779
179829
  // src/services/api/client.ts
179780
179830
  import { randomUUID as randomUUID5 } from "crypto";
179781
179831
  function createStderrLogger() {
@@ -179824,8 +179874,8 @@ async function getRayuVertexClient(maxRetries) {
179824
179874
  if (active?.kind !== "vertex") {
179825
179875
  return null;
179826
179876
  }
179827
- const { createVertexGeminiClient: createVertexGeminiClient2 } = await Promise.resolve().then(() => (init_vertexChatClient(), exports_vertexChatClient));
179828
- return createVertexGeminiClient2(active, maxRetries);
179877
+ const { createVertexGenaiClient: createVertexGenaiClient2 } = await Promise.resolve().then(() => (init_vertexGenaiClient(), exports_vertexGenaiClient));
179878
+ return createVertexGenaiClient2(active, maxRetries);
179829
179879
  }
179830
179880
  async function buildGenAIClientFor(provider, maxRetries) {
179831
179881
  const { createCodeAssistClient: createCodeAssistClient2 } = await Promise.resolve().then(() => (init_codeAssistClient(), exports_codeAssistClient));
@@ -179859,8 +179909,8 @@ async function buildClientForProvider(provider, maxRetries) {
179859
179909
  });
179860
179910
  }
179861
179911
  if (provider.kind === "vertex") {
179862
- const { createVertexGeminiClient: createVertexGeminiClient2 } = await Promise.resolve().then(() => (init_vertexChatClient(), exports_vertexChatClient));
179863
- return createVertexGeminiClient2(provider, maxRetries);
179912
+ const { createVertexGenaiClient: createVertexGenaiClient2 } = await Promise.resolve().then(() => (init_vertexGenaiClient(), exports_vertexGenaiClient));
179913
+ return createVertexGenaiClient2(provider, maxRetries);
179864
179914
  }
179865
179915
  if (provider.kind === "genai") {
179866
179916
  return buildGenAIClientFor(provider, maxRetries);
@@ -181154,7 +181204,7 @@ var init_metadata = __esm(() => {
181154
181204
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
181155
181205
  WHITESPACE_REGEX = /\s+/;
181156
181206
  getVersionBase = memoize_default(() => {
181157
- const match = "1.2.15".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
181207
+ const match = "1.2.17".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
181158
181208
  return match ? match[0] : undefined;
181159
181209
  });
181160
181210
  buildEnvContext = memoize_default(async () => {
@@ -181193,7 +181243,7 @@ var init_metadata = __esm(() => {
181193
181243
  },
181194
181244
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
181195
181245
  isRayuAction: isEnvTruthy(process.env.RAYU_ACTION),
181196
- version: "1.2.15",
181246
+ version: "1.2.17",
181197
181247
  versionBase: getVersionBase(),
181198
181248
  buildTime: "",
181199
181249
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
@@ -181807,7 +181857,7 @@ function initialize1PEventLogging() {
181807
181857
  const platform2 = getPlatform();
181808
181858
  const attributes = {
181809
181859
  [import_semantic_conventions.ATTR_SERVICE_NAME]: "rayu",
181810
- [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.2.15"
181860
+ [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.2.17"
181811
181861
  };
181812
181862
  if (platform2 === "wsl") {
181813
181863
  const wslVersion = getWslVersion();
@@ -181834,7 +181884,7 @@ function initialize1PEventLogging() {
181834
181884
  })
181835
181885
  ]
181836
181886
  });
181837
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("io.rayu.events", "1.2.15");
181887
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("io.rayu.events", "1.2.17");
181838
181888
  }
181839
181889
  async function reinitialize1PEventLoggingIfConfigChanged() {
181840
181890
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -217750,7 +217800,7 @@ function getAttributionHeader(fingerprint) {
217750
217800
  if (!isAttributionHeaderEnabled()) {
217751
217801
  return "";
217752
217802
  }
217753
- const version2 = `${"1.2.15"}.${fingerprint}`;
217803
+ const version2 = `${"1.2.17"}.${fingerprint}`;
217754
217804
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
217755
217805
  const cch = "";
217756
217806
  const workload = getWorkload();
@@ -301838,7 +301888,7 @@ function getTelemetryAttributes() {
301838
301888
  attributes["session.id"] = sessionId;
301839
301889
  }
301840
301890
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
301841
- attributes["app.version"] = "1.2.15";
301891
+ attributes["app.version"] = "1.2.17";
301842
301892
  }
301843
301893
  const oauthAccount = getOauthAccountInfo();
301844
301894
  if (oauthAccount) {
@@ -412224,7 +412274,7 @@ function getInstallationEnv() {
412224
412274
  return;
412225
412275
  }
412226
412276
  function getClaudeCodeVersion() {
412227
- return "1.2.15";
412277
+ return "1.2.17";
412228
412278
  }
412229
412279
  async function getInstalledVSCodeExtensionVersion(command) {
412230
412280
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -417462,7 +417512,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
417462
417512
  const client4 = new Client({
417463
417513
  name: "claude-code",
417464
417514
  title: "RAYU",
417465
- version: "1.2.15",
417515
+ version: "1.2.17",
417466
417516
  description: "Anthropic's agentic coding tool",
417467
417517
  websiteUrl: PRODUCT_URL
417468
417518
  }, {
@@ -417779,7 +417829,7 @@ var init_client7 = __esm(() => {
417779
417829
  const client4 = new Client({
417780
417830
  name: "claude-code",
417781
417831
  title: "RAYU",
417782
- version: "1.2.15",
417832
+ version: "1.2.17",
417783
417833
  description: "Anthropic's agentic coding tool",
417784
417834
  websiteUrl: PRODUCT_URL
417785
417835
  }, {
@@ -432565,7 +432615,7 @@ function computeFingerprint(messageText, version2) {
432565
432615
  }
432566
432616
  function computeFingerprintFromMessages(messages) {
432567
432617
  const firstMessageText = extractFirstMessageText(messages);
432568
- return computeFingerprint(firstMessageText, "1.2.15");
432618
+ return computeFingerprint(firstMessageText, "1.2.17");
432569
432619
  }
432570
432620
  var FINGERPRINT_SALT = "59cf53e54c78";
432571
432621
  var init_fingerprint = () => {};
@@ -432607,7 +432657,7 @@ async function sideQuery(opts) {
432607
432657
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
432608
432658
  }
432609
432659
  const messageText = extractFirstUserMessageText(messages);
432610
- const fingerprint = computeFingerprint(messageText, "1.2.15");
432660
+ const fingerprint = computeFingerprint(messageText, "1.2.17");
432611
432661
  const attributionHeader = getAttributionHeader(fingerprint);
432612
432662
  const systemBlocks = [
432613
432663
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -449019,7 +449069,7 @@ function printResumeHint() {
449019
449069
  }
449020
449070
  writeSync2(1, source_default.dim(`
449021
449071
  Resume this session with:
449022
- claude --resume ${resumeArg}
449072
+ rayu --resume ${resumeArg}
449023
449073
  `));
449024
449074
  resumeHintPrinted = true;
449025
449075
  } catch {}
@@ -487328,7 +487378,7 @@ var init_models5 = __esm(() => {
487328
487378
  NVIDIA_GENAI_HOST = process.env.NVIDIA_GENAI_HOST || "https://ai.api.nvidia.com/v1/genai";
487329
487379
  DEFAULT_VIDEO_MODEL = process.env.NVIDIA_VIDEO_MODEL || "nvidia/cosmos-predict1-5b";
487330
487380
  DEFAULT_IMAGE2VIDEO_MODEL = process.env.NVIDIA_IMAGE2VIDEO_MODEL || "nvidia/cosmos-predict1-5b";
487331
- DEFAULT_VERTEX_VIDEO_MODEL = process.env.VERTEX_VIDEO_MODEL || "veo-3.1-generate-preview";
487381
+ DEFAULT_VERTEX_VIDEO_MODEL = process.env.VERTEX_VIDEO_MODEL || "veo-3.1-generate-001";
487332
487382
  VIDEO_MODELS = {
487333
487383
  "nvidia/cosmos-predict1-5b": {
487334
487384
  id: "nvidia/cosmos-predict1-5b",
@@ -487382,15 +487432,29 @@ var init_models5 = __esm(() => {
487382
487432
  estimatedSeconds: 90,
487383
487433
  buildBody: falKlingImage2VideoBody
487384
487434
  },
487385
- "veo-3.1-generate-preview": {
487386
- id: "veo-3.1-generate-preview",
487435
+ "veo-3.1-generate-001": {
487436
+ id: "veo-3.1-generate-001",
487437
+ backend: "vertex",
487438
+ capability: "text2video",
487439
+ estimatedSeconds: 120,
487440
+ buildBody: veoBody
487441
+ },
487442
+ "veo-3.1-fast-generate-001": {
487443
+ id: "veo-3.1-fast-generate-001",
487444
+ backend: "vertex",
487445
+ capability: "text2video",
487446
+ estimatedSeconds: 90,
487447
+ buildBody: veoBody
487448
+ },
487449
+ "veo-3.0-generate-001": {
487450
+ id: "veo-3.0-generate-001",
487387
487451
  backend: "vertex",
487388
487452
  capability: "text2video",
487389
487453
  estimatedSeconds: 120,
487390
487454
  buildBody: veoBody
487391
487455
  },
487392
- "veo-3.1-fast-generate-preview": {
487393
- id: "veo-3.1-fast-generate-preview",
487456
+ "veo-3.0-fast-generate-001": {
487457
+ id: "veo-3.0-fast-generate-001",
487394
487458
  backend: "vertex",
487395
487459
  capability: "text2video",
487396
487460
  estimatedSeconds: 90,
@@ -487674,12 +487738,18 @@ function extractVideoBase64(op) {
487674
487738
  function baseModelUrl(region, project, model) {
487675
487739
  return `https://${region}-aiplatform.googleapis.com/v1/projects/${project}` + `/locations/${region}/publishers/google/models/${model}`;
487676
487740
  }
487741
+ function veoApiError(stage, status, text2) {
487742
+ if (status === 404) {
487743
+ return new Error(`Vertex Veo ${stage} 404: model not found. Preview Veo models (…-generate-preview) ` + "were retired by Google on 2026-04-02 — use a GA model like veo-3.1-generate-001 " + "(or veo-3.1-fast-generate-001). Also ensure your region serves Veo (us-central1). " + `Original: ${text2.slice(0, 240)}`);
487744
+ }
487745
+ return new Error(`Vertex Veo ${stage} error ${status}: ${text2.slice(0, 300)}`);
487746
+ }
487677
487747
  async function generateVertexVideo(opts) {
487678
487748
  const { project, region } = await resolveVertexProjectRegion();
487679
487749
  if (!project) {
487680
487750
  throw new Error("No GCP project configured for Vertex Veo. Run /connect → Gemini / Vertex AI, " + "or set GOOGLE_CLOUD_PROJECT.");
487681
487751
  }
487682
- const vidRegion = !region || region === "global" ? "us-central1" : region;
487752
+ const vidRegion = region && VEO_REGIONS.has(region) ? region : DEFAULT_VEO_REGION;
487683
487753
  const model = opts.modelId && /^veo-/i.test(opts.modelId) ? opts.modelId : DEFAULT_VERTEX_VIDEO_MODEL;
487684
487754
  const token = await getVertexAccessToken();
487685
487755
  const url3 = baseModelUrl(vidRegion, project, model);
@@ -487694,7 +487764,7 @@ async function generateVertexVideo(opts) {
487694
487764
  });
487695
487765
  if (!startRes.ok) {
487696
487766
  const text2 = await startRes.text().catch(() => "");
487697
- throw new Error(`Vertex Veo API error ${startRes.status}: ${text2.slice(0, 300)}`);
487767
+ throw veoApiError("API", startRes.status, text2);
487698
487768
  }
487699
487769
  const op = await startRes.json();
487700
487770
  if (!op.name) {
@@ -487717,7 +487787,7 @@ async function generateVertexVideo(opts) {
487717
487787
  });
487718
487788
  if (!pollRes.ok) {
487719
487789
  const text2 = await pollRes.text().catch(() => "");
487720
- throw new Error(`Vertex Veo poll error ${pollRes.status}: ${text2.slice(0, 300)}`);
487790
+ throw veoApiError("poll", pollRes.status, text2);
487721
487791
  }
487722
487792
  const status = await pollRes.json();
487723
487793
  if (status.error?.message) {
@@ -487733,10 +487803,12 @@ async function generateVertexVideo(opts) {
487733
487803
  }
487734
487804
  throw new Error("Vertex Veo generation timed out.");
487735
487805
  }
487806
+ var VEO_REGIONS, DEFAULT_VEO_REGION = "us-central1";
487736
487807
  var init_vertexVideoClient = __esm(() => {
487737
487808
  init_vertexAuth();
487738
487809
  init_providers();
487739
487810
  init_models5();
487811
+ VEO_REGIONS = new Set(["us-central1", "us-east4", "europe-west4"]);
487740
487812
  });
487741
487813
 
487742
487814
  // src/tools/VideoGenTool/constants.ts
@@ -527367,7 +527439,7 @@ function Feedback({
527367
527439
  platform: env4.platform,
527368
527440
  gitRepo: envInfo.isGit,
527369
527441
  terminal: env4.terminal,
527370
- version: "1.2.15",
527442
+ version: "1.2.17",
527371
527443
  transcript: normalizeMessagesForAPI(messages),
527372
527444
  errors: sanitizedErrors,
527373
527445
  lastApiRequest: getLastAPIRequest(),
@@ -527559,7 +527631,7 @@ function Feedback({
527559
527631
  ", ",
527560
527632
  env4.terminal,
527561
527633
  ", v",
527562
- "1.2.15"
527634
+ "1.2.17"
527563
527635
  ]
527564
527636
  }, undefined, true, undefined, this)
527565
527637
  ]
@@ -527665,7 +527737,7 @@ ${sanitizedDescription}
527665
527737
  ` + `**Environment Info**
527666
527738
  ` + `- Platform: ${env4.platform}
527667
527739
  ` + `- Terminal: ${env4.terminal}
527668
- ` + `- Version: ${"1.2.15"}
527740
+ ` + `- Version: ${"1.2.17"}
527669
527741
  ` + `- Feedback ID: ${feedbackId}
527670
527742
  ` + `
527671
527743
  **Errors**
@@ -530504,9 +530576,9 @@ async function assertMinVersion() {
530504
530576
  if (false) {}
530505
530577
  try {
530506
530578
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
530507
- if (versionConfig.minVersion && lt("1.2.15", versionConfig.minVersion)) {
530579
+ if (versionConfig.minVersion && lt("1.2.17", versionConfig.minVersion)) {
530508
530580
  console.error(`
530509
- It looks like your version of RAYU (${"1.2.15"}) needs an update.
530581
+ It looks like your version of RAYU (${"1.2.17"}) needs an update.
530510
530582
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
530511
530583
 
530512
530584
  To update, please run:
@@ -530705,7 +530777,7 @@ async function installGlobalPackage(specificVersion) {
530705
530777
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
530706
530778
  logEvent("tengu_auto_updater_lock_contention", {
530707
530779
  pid: process.pid,
530708
- currentVersion: "1.2.15"
530780
+ currentVersion: "1.2.17"
530709
530781
  });
530710
530782
  return "in_progress";
530711
530783
  }
@@ -530714,7 +530786,7 @@ async function installGlobalPackage(specificVersion) {
530714
530786
  if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
530715
530787
  logError2(new Error("Windows NPM detected in WSL environment"));
530716
530788
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
530717
- currentVersion: "1.2.15"
530789
+ currentVersion: "1.2.17"
530718
530790
  });
530719
530791
  console.error(`
530720
530792
  Error: Windows NPM detected in WSL
@@ -531249,7 +531321,7 @@ function detectLinuxGlobPatternWarnings() {
531249
531321
  }
531250
531322
  async function getDoctorDiagnostic() {
531251
531323
  const installationType = await getCurrentInstallationType();
531252
- const version2 = typeof MACRO !== "undefined" ? "1.2.15" : "unknown";
531324
+ const version2 = typeof MACRO !== "undefined" ? "1.2.17" : "unknown";
531253
531325
  const installationPath = await getInstallationPath();
531254
531326
  const invokedBinary = getInvokedBinary();
531255
531327
  const multipleInstallations = await detectMultipleInstallations();
@@ -532044,8 +532116,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
532044
532116
  const maxVersion = await getMaxVersion();
532045
532117
  if (maxVersion && gt(version2, maxVersion)) {
532046
532118
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
532047
- if (gte("1.2.15", maxVersion)) {
532048
- logForDebugging(`Native installer: current version ${"1.2.15"} is already at or above maxVersion ${maxVersion}, skipping update`);
532119
+ if (gte("1.2.17", maxVersion)) {
532120
+ logForDebugging(`Native installer: current version ${"1.2.17"} is already at or above maxVersion ${maxVersion}, skipping update`);
532049
532121
  logEvent("tengu_native_update_skipped_max_version", {
532050
532122
  latency_ms: Date.now() - startTime,
532051
532123
  max_version: maxVersion,
@@ -532056,7 +532128,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
532056
532128
  version2 = maxVersion;
532057
532129
  }
532058
532130
  }
532059
- if (!forceReinstall && version2 === "1.2.15" && await versionIsAvailable(version2) && await isPossibleClaudeBinary(executablePath)) {
532131
+ if (!forceReinstall && version2 === "1.2.17" && await versionIsAvailable(version2) && await isPossibleClaudeBinary(executablePath)) {
532060
532132
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
532061
532133
  logEvent("tengu_native_update_complete", {
532062
532134
  latency_ms: Date.now() - startTime,
@@ -533252,7 +533324,7 @@ function buildPrimarySection() {
533252
533324
  }, undefined, false, undefined, this);
533253
533325
  return [{
533254
533326
  label: "Version",
533255
- value: "1.2.15"
533327
+ value: "1.2.17"
533256
533328
  }, {
533257
533329
  label: "Session name",
533258
533330
  value: nameValue
@@ -536943,7 +537015,7 @@ function Config({
536943
537015
  }
536944
537016
  }, undefined, false, undefined, this)
536945
537017
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime170.jsxDEV(ChannelDowngradeDialog, {
536946
- currentVersion: "1.2.15",
537018
+ currentVersion: "1.2.17",
536947
537019
  onChoice: (choice) => {
536948
537020
  setShowSubmenu(null);
536949
537021
  setTabsHidden(false);
@@ -536955,7 +537027,7 @@ function Config({
536955
537027
  autoUpdatesChannel: "stable"
536956
537028
  };
536957
537029
  if (choice === "stay") {
536958
- newSettings.minimumVersion = "1.2.15";
537030
+ newSettings.minimumVersion = "1.2.17";
536959
537031
  }
536960
537032
  updateSettingsForSource("userSettings", newSettings);
536961
537033
  setSettingsData((prev_27) => ({
@@ -545015,7 +545087,7 @@ function HelpV2(t0) {
545015
545087
  let t6;
545016
545088
  if ($3[31] !== tabs) {
545017
545089
  t6 = /* @__PURE__ */ jsx_dev_runtime197.jsxDEV(Tabs, {
545018
- title: `Rayu-CLI v${"1.2.15"}`,
545090
+ title: `Rayu-CLI v${"1.2.17"}`,
545019
545091
  color: "professionalBlue",
545020
545092
  defaultTab: "general",
545021
545093
  children: tabs
@@ -563615,214 +563687,6 @@ ${args ? "Additional user input: " + args : ""}
563615
563687
  });
563616
563688
  });
563617
563689
 
563618
- // src/utils/releaseNotes.ts
563619
- import { mkdir as mkdir35, readFile as readFile46, writeFile as writeFile40 } from "fs/promises";
563620
- import { dirname as dirname61, join as join134 } from "path";
563621
- function getChangelogCachePath() {
563622
- return join134(getRayuConfigHomeDir(), "cache", "changelog.md");
563623
- }
563624
- async function migrateChangelogFromConfig() {
563625
- const config5 = getGlobalConfig();
563626
- if (!config5.cachedChangelog) {
563627
- return;
563628
- }
563629
- const cachePath = getChangelogCachePath();
563630
- try {
563631
- await mkdir35(dirname61(cachePath), { recursive: true });
563632
- await writeFile40(cachePath, config5.cachedChangelog, {
563633
- encoding: "utf-8",
563634
- flag: "wx"
563635
- });
563636
- } catch {}
563637
- saveGlobalConfig(({ cachedChangelog: _2, ...rest }) => rest);
563638
- }
563639
- async function fetchAndStoreChangelog() {
563640
- if (getIsNonInteractiveSession()) {
563641
- return;
563642
- }
563643
- if (isEssentialTrafficOnly()) {
563644
- return;
563645
- }
563646
- const response = await axios_default.get(RAW_CHANGELOG_URL);
563647
- if (response.status === 200) {
563648
- const changelogContent = response.data;
563649
- if (changelogContent === changelogMemoryCache) {
563650
- return;
563651
- }
563652
- const cachePath = getChangelogCachePath();
563653
- await mkdir35(dirname61(cachePath), { recursive: true });
563654
- await writeFile40(cachePath, changelogContent, { encoding: "utf-8" });
563655
- changelogMemoryCache = changelogContent;
563656
- const changelogLastFetched = Date.now();
563657
- saveGlobalConfig((current) => ({
563658
- ...current,
563659
- changelogLastFetched
563660
- }));
563661
- }
563662
- }
563663
- async function getStoredChangelog() {
563664
- if (changelogMemoryCache !== null) {
563665
- return changelogMemoryCache;
563666
- }
563667
- const cachePath = getChangelogCachePath();
563668
- try {
563669
- const content = await readFile46(cachePath, "utf-8");
563670
- changelogMemoryCache = content;
563671
- return content;
563672
- } catch {
563673
- changelogMemoryCache = "";
563674
- return "";
563675
- }
563676
- }
563677
- function getStoredChangelogFromMemory() {
563678
- return changelogMemoryCache ?? "";
563679
- }
563680
- function parseChangelog(content) {
563681
- try {
563682
- if (!content)
563683
- return {};
563684
- const releaseNotes = {};
563685
- const sections = content.split(/^## /gm).slice(1);
563686
- for (const section of sections) {
563687
- const lines2 = section.trim().split(`
563688
- `);
563689
- if (lines2.length === 0)
563690
- continue;
563691
- const versionLine = lines2[0];
563692
- if (!versionLine)
563693
- continue;
563694
- const version2 = versionLine.split(" - ")[0]?.trim() || "";
563695
- if (!version2)
563696
- continue;
563697
- const notes = lines2.slice(1).filter((line) => line.trim().startsWith("- ")).map((line) => line.trim().substring(2).trim()).filter(Boolean);
563698
- if (notes.length > 0) {
563699
- releaseNotes[version2] = notes;
563700
- }
563701
- }
563702
- return releaseNotes;
563703
- } catch (error54) {
563704
- logError2(toError(error54));
563705
- return {};
563706
- }
563707
- }
563708
- function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent = getStoredChangelogFromMemory()) {
563709
- try {
563710
- const releaseNotes = parseChangelog(changelogContent);
563711
- const baseCurrentVersion = import_semver8.coerce(currentVersion);
563712
- const basePreviousVersion = previousVersion ? import_semver8.coerce(previousVersion) : null;
563713
- if (!basePreviousVersion || baseCurrentVersion && gt(baseCurrentVersion.version, basePreviousVersion.version)) {
563714
- return Object.entries(releaseNotes).filter(([version2]) => !basePreviousVersion || gt(version2, basePreviousVersion.version)).sort(([versionA], [versionB]) => gt(versionA, versionB) ? -1 : 1).flatMap(([_2, notes]) => notes).filter(Boolean).slice(0, MAX_RELEASE_NOTES_SHOWN);
563715
- }
563716
- } catch (error54) {
563717
- logError2(toError(error54));
563718
- return [];
563719
- }
563720
- return [];
563721
- }
563722
- function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
563723
- try {
563724
- const releaseNotes = parseChangelog(changelogContent);
563725
- const sortedVersions = Object.keys(releaseNotes).sort((a2, b3) => gt(a2, b3) ? 1 : -1);
563726
- return sortedVersions.map((version2) => {
563727
- const versionNotes = releaseNotes[version2];
563728
- if (!versionNotes || versionNotes.length === 0)
563729
- return null;
563730
- const notes = versionNotes.filter(Boolean);
563731
- if (notes.length === 0)
563732
- return null;
563733
- return [version2, notes];
563734
- }).filter((item) => item !== null);
563735
- } catch (error54) {
563736
- logError2(toError(error54));
563737
- return [];
563738
- }
563739
- }
563740
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.2.15") {
563741
- if (false) {}
563742
- const cachedChangelog = await getStoredChangelog();
563743
- if (lastSeenVersion !== currentVersion || !cachedChangelog) {
563744
- fetchAndStoreChangelog().catch((error54) => logError2(toError(error54)));
563745
- }
563746
- const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion, cachedChangelog);
563747
- const hasReleaseNotes = releaseNotes.length > 0;
563748
- return {
563749
- hasReleaseNotes,
563750
- releaseNotes
563751
- };
563752
- }
563753
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.2.15") {
563754
- if (false) {}
563755
- const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion);
563756
- return {
563757
- hasReleaseNotes: releaseNotes.length > 0,
563758
- releaseNotes
563759
- };
563760
- }
563761
- var import_semver8, MAX_RELEASE_NOTES_SHOWN = 5, CHANGELOG_URL = "https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md", RAW_CHANGELOG_URL = "https://raw.githubusercontent.com/anthropics/claude-code/refs/heads/main/CHANGELOG.md", changelogMemoryCache = null;
563762
- var init_releaseNotes = __esm(() => {
563763
- init_axios2();
563764
- init_state();
563765
- init_config2();
563766
- init_envUtils();
563767
- init_errors();
563768
- init_log2();
563769
- import_semver8 = __toESM(require_semver3(), 1);
563770
- });
563771
-
563772
- // src/commands/release-notes/release-notes.ts
563773
- var exports_release_notes = {};
563774
- __export(exports_release_notes, {
563775
- call: () => call22
563776
- });
563777
- function formatReleaseNotes(notes) {
563778
- return notes.map(([version2, notes2]) => {
563779
- const header = `Version ${version2}:`;
563780
- const bulletPoints = notes2.map((note) => `· ${note}`).join(`
563781
- `);
563782
- return `${header}
563783
- ${bulletPoints}`;
563784
- }).join(`
563785
-
563786
- `);
563787
- }
563788
- async function call22() {
563789
- let freshNotes = [];
563790
- try {
563791
- const timeoutPromise = new Promise((_2, reject2) => {
563792
- setTimeout((rej) => rej(new Error("Timeout")), 500, reject2);
563793
- });
563794
- await Promise.race([fetchAndStoreChangelog(), timeoutPromise]);
563795
- freshNotes = getAllReleaseNotes(await getStoredChangelog());
563796
- } catch {}
563797
- if (freshNotes.length > 0) {
563798
- return { type: "text", value: formatReleaseNotes(freshNotes) };
563799
- }
563800
- const cachedNotes = getAllReleaseNotes(await getStoredChangelog());
563801
- if (cachedNotes.length > 0) {
563802
- return { type: "text", value: formatReleaseNotes(cachedNotes) };
563803
- }
563804
- return {
563805
- type: "text",
563806
- value: `See the full changelog at: ${CHANGELOG_URL}`
563807
- };
563808
- }
563809
- var init_release_notes = __esm(() => {
563810
- init_releaseNotes();
563811
- });
563812
-
563813
- // src/commands/release-notes/index.ts
563814
- var releaseNotes, release_notes_default;
563815
- var init_release_notes2 = __esm(() => {
563816
- releaseNotes = {
563817
- description: "View release notes",
563818
- name: "release-notes",
563819
- type: "local",
563820
- supportsNonInteractive: true,
563821
- load: () => Promise.resolve().then(() => (init_release_notes(), exports_release_notes))
563822
- };
563823
- release_notes_default = releaseNotes;
563824
- });
563825
-
563826
563690
  // src/bridge/bridgeConfig.ts
563827
563691
  function getBridgeTokenOverride() {
563828
563692
  return;
@@ -564299,9 +564163,9 @@ var init_createSession = __esm(() => {
564299
564163
  // src/commands/rename/rename.ts
564300
564164
  var exports_rename = {};
564301
564165
  __export(exports_rename, {
564302
- call: () => call23
564166
+ call: () => call22
564303
564167
  });
564304
- async function call23(onDone, context2, args) {
564168
+ async function call22(onDone, context2, args) {
564305
564169
  if (isTeammate()) {
564306
564170
  onDone("Cannot rename: This session is a swarm teammate. Teammate names are set by the team leader.", { display: "system" });
564307
564171
  return null;
@@ -564366,9 +564230,9 @@ var init_rename2 = __esm(() => {
564366
564230
  // src/commands/review-detial/review-detial.ts
564367
564231
  var exports_review_detial = {};
564368
564232
  __export(exports_review_detial, {
564369
- call: () => call24
564233
+ call: () => call23
564370
564234
  });
564371
- var call24 = async (args, context2) => {
564235
+ var call23 = async (args, context2) => {
564372
564236
  return {
564373
564237
  type: "text",
564374
564238
  value: getPendingFileChangeReviewDetail(context2, args)
@@ -564904,6 +564768,142 @@ var init_transcriptSearch = __esm(() => {
564904
564768
  searchTextCache = new WeakMap;
564905
564769
  });
564906
564770
 
564771
+ // src/utils/releaseNotes.ts
564772
+ import { mkdir as mkdir35, readFile as readFile46, writeFile as writeFile40 } from "fs/promises";
564773
+ import { dirname as dirname61, join as join134 } from "path";
564774
+ function getChangelogCachePath() {
564775
+ return join134(getRayuConfigHomeDir(), "cache", "changelog.md");
564776
+ }
564777
+ async function migrateChangelogFromConfig() {
564778
+ const config5 = getGlobalConfig();
564779
+ if (!config5.cachedChangelog) {
564780
+ return;
564781
+ }
564782
+ const cachePath = getChangelogCachePath();
564783
+ try {
564784
+ await mkdir35(dirname61(cachePath), { recursive: true });
564785
+ await writeFile40(cachePath, config5.cachedChangelog, {
564786
+ encoding: "utf-8",
564787
+ flag: "wx"
564788
+ });
564789
+ } catch {}
564790
+ saveGlobalConfig(({ cachedChangelog: _2, ...rest }) => rest);
564791
+ }
564792
+ async function fetchAndStoreChangelog() {
564793
+ if (getIsNonInteractiveSession()) {
564794
+ return;
564795
+ }
564796
+ if (isEssentialTrafficOnly()) {
564797
+ return;
564798
+ }
564799
+ const response = await axios_default.get(RAW_CHANGELOG_URL);
564800
+ if (response.status === 200) {
564801
+ const changelogContent = response.data;
564802
+ if (changelogContent === changelogMemoryCache) {
564803
+ return;
564804
+ }
564805
+ const cachePath = getChangelogCachePath();
564806
+ await mkdir35(dirname61(cachePath), { recursive: true });
564807
+ await writeFile40(cachePath, changelogContent, { encoding: "utf-8" });
564808
+ changelogMemoryCache = changelogContent;
564809
+ const changelogLastFetched = Date.now();
564810
+ saveGlobalConfig((current) => ({
564811
+ ...current,
564812
+ changelogLastFetched
564813
+ }));
564814
+ }
564815
+ }
564816
+ async function getStoredChangelog() {
564817
+ if (changelogMemoryCache !== null) {
564818
+ return changelogMemoryCache;
564819
+ }
564820
+ const cachePath = getChangelogCachePath();
564821
+ try {
564822
+ const content = await readFile46(cachePath, "utf-8");
564823
+ changelogMemoryCache = content;
564824
+ return content;
564825
+ } catch {
564826
+ changelogMemoryCache = "";
564827
+ return "";
564828
+ }
564829
+ }
564830
+ function getStoredChangelogFromMemory() {
564831
+ return changelogMemoryCache ?? "";
564832
+ }
564833
+ function parseChangelog(content) {
564834
+ try {
564835
+ if (!content)
564836
+ return {};
564837
+ const releaseNotes = {};
564838
+ const sections = content.split(/^## /gm).slice(1);
564839
+ for (const section of sections) {
564840
+ const lines2 = section.trim().split(`
564841
+ `);
564842
+ if (lines2.length === 0)
564843
+ continue;
564844
+ const versionLine = lines2[0];
564845
+ if (!versionLine)
564846
+ continue;
564847
+ const version2 = versionLine.split(" - ")[0]?.trim() || "";
564848
+ if (!version2)
564849
+ continue;
564850
+ const notes = lines2.slice(1).filter((line) => line.trim().startsWith("- ")).map((line) => line.trim().substring(2).trim()).filter(Boolean);
564851
+ if (notes.length > 0) {
564852
+ releaseNotes[version2] = notes;
564853
+ }
564854
+ }
564855
+ return releaseNotes;
564856
+ } catch (error54) {
564857
+ logError2(toError(error54));
564858
+ return {};
564859
+ }
564860
+ }
564861
+ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent = getStoredChangelogFromMemory()) {
564862
+ try {
564863
+ const releaseNotes = parseChangelog(changelogContent);
564864
+ const baseCurrentVersion = import_semver8.coerce(currentVersion);
564865
+ const basePreviousVersion = previousVersion ? import_semver8.coerce(previousVersion) : null;
564866
+ if (!basePreviousVersion || baseCurrentVersion && gt(baseCurrentVersion.version, basePreviousVersion.version)) {
564867
+ return Object.entries(releaseNotes).filter(([version2]) => !basePreviousVersion || gt(version2, basePreviousVersion.version)).sort(([versionA], [versionB]) => gt(versionA, versionB) ? -1 : 1).flatMap(([_2, notes]) => notes).filter(Boolean).slice(0, MAX_RELEASE_NOTES_SHOWN);
564868
+ }
564869
+ } catch (error54) {
564870
+ logError2(toError(error54));
564871
+ return [];
564872
+ }
564873
+ return [];
564874
+ }
564875
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.2.17") {
564876
+ if (false) {}
564877
+ const cachedChangelog = await getStoredChangelog();
564878
+ if (lastSeenVersion !== currentVersion || !cachedChangelog) {
564879
+ fetchAndStoreChangelog().catch((error54) => logError2(toError(error54)));
564880
+ }
564881
+ const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion, cachedChangelog);
564882
+ const hasReleaseNotes = releaseNotes.length > 0;
564883
+ return {
564884
+ hasReleaseNotes,
564885
+ releaseNotes
564886
+ };
564887
+ }
564888
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.2.17") {
564889
+ if (false) {}
564890
+ const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion);
564891
+ return {
564892
+ hasReleaseNotes: releaseNotes.length > 0,
564893
+ releaseNotes
564894
+ };
564895
+ }
564896
+ var import_semver8, MAX_RELEASE_NOTES_SHOWN = 5, RAW_CHANGELOG_URL = "https://raw.githubusercontent.com/anthropics/claude-code/refs/heads/main/CHANGELOG.md", changelogMemoryCache = null;
564897
+ var init_releaseNotes = __esm(() => {
564898
+ init_axios2();
564899
+ init_state();
564900
+ init_config2();
564901
+ init_envUtils();
564902
+ init_errors();
564903
+ init_log2();
564904
+ import_semver8 = __toESM(require_semver3(), 1);
564905
+ });
564906
+
564907
564907
  // src/utils/logoV2Utils.ts
564908
564908
  function getLayoutMode(columns) {
564909
564909
  if (columns >= 70)
@@ -565013,7 +565013,7 @@ function getRecentActivitySync() {
565013
565013
  return cachedActivity;
565014
565014
  }
565015
565015
  function getLogoDisplayData() {
565016
- const version2 = process.env.DEMO_VERSION ?? "1.2.15";
565016
+ const version2 = process.env.DEMO_VERSION ?? "1.2.17";
565017
565017
  const serverUrl = getDirectConnectServerUrl();
565018
565018
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
565019
565019
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -565503,8 +565503,8 @@ function createRecentActivityFeed(activities) {
565503
565503
  emptyMessage: "No recent activity"
565504
565504
  };
565505
565505
  }
565506
- function createWhatsNewFeed(releaseNotes2) {
565507
- const lines2 = releaseNotes2.map((note) => {
565506
+ function createWhatsNewFeed(releaseNotes) {
565507
+ const lines2 = releaseNotes.map((note) => {
565508
565508
  if (false) {}
565509
565509
  return {
565510
565510
  text: note
@@ -565514,7 +565514,7 @@ function createWhatsNewFeed(releaseNotes2) {
565514
565514
  return {
565515
565515
  title: "What's new",
565516
565516
  lines: lines2,
565517
- footer: lines2.length > 0 ? "/release-notes for more" : undefined,
565517
+ footer: undefined,
565518
565518
  emptyMessage
565519
565519
  };
565520
565520
  }
@@ -566294,7 +566294,7 @@ function LogoV2() {
566294
566294
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
566295
566295
  t2 = () => {
566296
566296
  const currentConfig = getGlobalConfig();
566297
- if (currentConfig.lastReleaseNotesSeen === "1.2.15") {
566297
+ if (currentConfig.lastReleaseNotesSeen === "1.2.17") {
566298
566298
  return;
566299
566299
  }
566300
566300
  saveGlobalConfig(_temp327);
@@ -566970,12 +566970,12 @@ function LogoV2() {
566970
566970
  return t41;
566971
566971
  }
566972
566972
  function _temp327(current) {
566973
- if (current.lastReleaseNotesSeen === "1.2.15") {
566973
+ if (current.lastReleaseNotesSeen === "1.2.17") {
566974
566974
  return current;
566975
566975
  }
566976
566976
  return {
566977
566977
  ...current,
566978
- lastReleaseNotesSeen: "1.2.15"
566978
+ lastReleaseNotesSeen: "1.2.17"
566979
566979
  };
566980
566980
  }
566981
566981
  function _temp241(s_0) {
@@ -572700,7 +572700,7 @@ function checkCrossProjectResume(log3, showAllProjects, worktreePaths) {
572700
572700
  }
572701
572701
  if (true) {
572702
572702
  const sessionId2 = getSessionIdFromLog(log3);
572703
- const command7 = `cd ${quote([log3.projectPath])} && claude --resume ${sessionId2}`;
572703
+ const command7 = `cd ${quote([log3.projectPath])} && rayu --resume ${sessionId2}`;
572704
572704
  return {
572705
572705
  isCrossProject: true,
572706
572706
  isSameRepoWorktree: false,
@@ -572717,7 +572717,7 @@ function checkCrossProjectResume(log3, showAllProjects, worktreePaths) {
572717
572717
  };
572718
572718
  }
572719
572719
  const sessionId = getSessionIdFromLog(log3);
572720
- const command6 = `cd ${quote([log3.projectPath])} && claude --resume ${sessionId}`;
572720
+ const command6 = `cd ${quote([log3.projectPath])} && rayu --resume ${sessionId}`;
572721
572721
  return {
572722
572722
  isCrossProject: true,
572723
572723
  isSameRepoWorktree: false,
@@ -572735,7 +572735,7 @@ var init_crossProjectResume = __esm(() => {
572735
572735
  var exports_resume = {};
572736
572736
  __export(exports_resume, {
572737
572737
  filterResumableSessions: () => filterResumableSessions,
572738
- call: () => call25
572738
+ call: () => call24
572739
572739
  });
572740
572740
  function resumeHelpMessage(result) {
572741
572741
  switch (result.resultType) {
@@ -572920,7 +572920,7 @@ function ResumeCommand({
572920
572920
  function filterResumableSessions(logs, currentSessionId) {
572921
572921
  return logs.filter((l3) => !l3.isSidechain && getSessionIdFromLog(l3) !== currentSessionId);
572922
572922
  }
572923
- var import_compiler_runtime194, React80, jsx_dev_runtime251, call25 = async (onDone, context2, args) => {
572923
+ var import_compiler_runtime194, React80, jsx_dev_runtime251, call24 = async (onDone, context2, args) => {
572924
572924
  const onResume = async (sessionId, log3, entrypoint) => {
572925
572925
  try {
572926
572926
  await context2.resume?.(sessionId, log3, entrypoint);
@@ -573383,7 +573383,7 @@ var init_UltrareviewOverageDialog = __esm(() => {
573383
573383
  // src/commands/review/ultrareviewCommand.tsx
573384
573384
  var exports_ultrareviewCommand = {};
573385
573385
  __export(exports_ultrareviewCommand, {
573386
- call: () => call26
573386
+ call: () => call25
573387
573387
  });
573388
573388
  function contentBlocksToString(blocks) {
573389
573389
  return blocks.map((b3) => b3.type === "text" ? b3.text : "").filter(Boolean).join(`
@@ -573403,7 +573403,7 @@ async function launchAndDone(args, context2, onDone, billingNote, signal) {
573403
573403
  });
573404
573404
  }
573405
573405
  }
573406
- var jsx_dev_runtime253, call26 = async (onDone, context2, args) => {
573406
+ var jsx_dev_runtime253, call25 = async (onDone, context2, args) => {
573407
573407
  const gate = await checkOverageGate();
573408
573408
  if (gate.kind === "not-enabled") {
573409
573409
  onDone("Free ultrareviews used. Enable Extra Usage at https://claude.ai/settings/billing to continue.", {
@@ -573568,7 +573568,7 @@ var init_image_video = __esm(() => {
573568
573568
  // src/commands/session/session.tsx
573569
573569
  var exports_session = {};
573570
573570
  __export(exports_session, {
573571
- call: () => call27
573571
+ call: () => call26
573572
573572
  });
573573
573573
  function SessionInfo(t0) {
573574
573574
  const $3 = import_compiler_runtime196.c(19);
@@ -573741,7 +573741,7 @@ function _temp247(e2) {
573741
573741
  function _temp118(s2) {
573742
573742
  return s2.remoteSessionUrl;
573743
573743
  }
573744
- var import_compiler_runtime196, import_react153, jsx_dev_runtime254, call27 = async (onDone) => {
573744
+ var import_compiler_runtime196, import_react153, jsx_dev_runtime254, call26 = async (onDone) => {
573745
573745
  return /* @__PURE__ */ jsx_dev_runtime254.jsxDEV(SessionInfo, {
573746
573746
  onDone
573747
573747
  }, undefined, false, undefined, this);
@@ -574093,9 +574093,9 @@ var init_SkillsMenu = __esm(() => {
574093
574093
  // src/commands/skills/skills.tsx
574094
574094
  var exports_skills2 = {};
574095
574095
  __export(exports_skills2, {
574096
- call: () => call28
574096
+ call: () => call27
574097
574097
  });
574098
- async function call28(onDone, context2) {
574098
+ async function call27(onDone, context2) {
574099
574099
  return /* @__PURE__ */ jsx_dev_runtime256.jsxDEV(SkillsMenu, {
574100
574100
  onExit: onDone,
574101
574101
  commands: context2.options.commands
@@ -574122,9 +574122,9 @@ var init_skills5 = __esm(() => {
574122
574122
  // src/commands/status/status.tsx
574123
574123
  var exports_status = {};
574124
574124
  __export(exports_status, {
574125
- call: () => call29
574125
+ call: () => call28
574126
574126
  });
574127
- async function call29(onDone, context2) {
574127
+ async function call28(onDone, context2) {
574128
574128
  return /* @__PURE__ */ jsx_dev_runtime257.jsxDEV(Settings, {
574129
574129
  onClose: onDone,
574130
574130
  context: context2,
@@ -574735,7 +574735,7 @@ ${reasons}`,
574735
574735
  } : prev);
574736
574736
  }
574737
574737
  }
574738
- var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://code.claude.com/docs/en/claude-code-on-the-web", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call30 = async (onDone, context2, args) => {
574738
+ var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://code.claude.com/docs/en/claude-code-on-the-web", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call29 = async (onDone, context2, args) => {
574739
574739
  const blurb = args.trim();
574740
574740
  if (!blurb) {
574741
574741
  const msg = await launchUltraplan2({
@@ -574798,7 +574798,7 @@ var init_ultraplan = __esm(() => {
574798
574798
  argumentHint: "<prompt>",
574799
574799
  isEnabled: () => false,
574800
574800
  load: () => Promise.resolve({
574801
- call: call30
574801
+ call: call29
574802
574802
  })
574803
574803
  };
574804
574804
  });
@@ -579569,9 +579569,9 @@ var init_BackgroundTasksDialog = __esm(() => {
579569
579569
  // src/commands/tasks/tasks.tsx
579570
579570
  var exports_tasks = {};
579571
579571
  __export(exports_tasks, {
579572
- call: () => call31
579572
+ call: () => call30
579573
579573
  });
579574
- async function call31(onDone, context2) {
579574
+ async function call30(onDone, context2) {
579575
579575
  return /* @__PURE__ */ jsx_dev_runtime268.jsxDEV(BackgroundTasksDialog, {
579576
579576
  toolUseContext: context2,
579577
579577
  onDone
@@ -579862,9 +579862,9 @@ var init_terminalSetup2 = __esm(() => {
579862
579862
  // src/commands/undo/undo.ts
579863
579863
  var exports_undo = {};
579864
579864
  __export(exports_undo, {
579865
- call: () => call32
579865
+ call: () => call31
579866
579866
  });
579867
- var call32 = async (args, context2) => {
579867
+ var call31 = async (args, context2) => {
579868
579868
  return {
579869
579869
  type: "text",
579870
579870
  value: await undoLatestPendingFileChange(context2, args)
@@ -579891,7 +579891,7 @@ var init_undo3 = __esm(() => {
579891
579891
  // src/commands/theme/theme.tsx
579892
579892
  var exports_theme = {};
579893
579893
  __export(exports_theme, {
579894
- call: () => call33
579894
+ call: () => call32
579895
579895
  });
579896
579896
  function ThemePickerCommand(t0) {
579897
579897
  const $3 = import_compiler_runtime207.c(8);
@@ -579941,7 +579941,7 @@ function ThemePickerCommand(t0) {
579941
579941
  }
579942
579942
  return t3;
579943
579943
  }
579944
- var import_compiler_runtime207, jsx_dev_runtime269, call33 = async (onDone, _context) => {
579944
+ var import_compiler_runtime207, jsx_dev_runtime269, call32 = async (onDone, _context) => {
579945
579945
  return /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(ThemePickerCommand, {
579946
579946
  onDone
579947
579947
  }, undefined, false, undefined, this);
@@ -579969,9 +579969,9 @@ var init_theme4 = __esm(() => {
579969
579969
  // src/commands/vim/vim.ts
579970
579970
  var exports_vim = {};
579971
579971
  __export(exports_vim, {
579972
- call: () => call34
579972
+ call: () => call33
579973
579973
  });
579974
- var call34 = async () => {
579974
+ var call33 = async () => {
579975
579975
  const config5 = getGlobalConfig();
579976
579976
  let currentMode = config5.editorMode || "normal";
579977
579977
  if (currentMode === "emacs") {
@@ -580013,7 +580013,7 @@ var init_vim2 = __esm(() => {
580013
580013
  var exports_thinkback = {};
580014
580014
  __export(exports_thinkback, {
580015
580015
  playAnimation: () => playAnimation,
580016
- call: () => call35
580016
+ call: () => call34
580017
580017
  });
580018
580018
  import { readFile as readFile47 } from "fs/promises";
580019
580019
  import { join as join135 } from "path";
@@ -580550,7 +580550,7 @@ function ThinkbackFlow(t0) {
580550
580550
  }
580551
580551
  return t8;
580552
580552
  }
580553
- async function call35(onDone) {
580553
+ async function call34(onDone) {
580554
580554
  return /* @__PURE__ */ jsx_dev_runtime270.jsxDEV(ThinkbackFlow, {
580555
580555
  onDone
580556
580556
  }, undefined, false, undefined, this);
@@ -580598,14 +580598,14 @@ var init_thinkback2 = __esm(() => {
580598
580598
  // src/commands/thinkback-play/thinkback-play.ts
580599
580599
  var exports_thinkback_play = {};
580600
580600
  __export(exports_thinkback_play, {
580601
- call: () => call36
580601
+ call: () => call35
580602
580602
  });
580603
580603
  import { join as join136 } from "path";
580604
580604
  function getPluginId2() {
580605
580605
  const marketplaceName = OFFICIAL_MARKETPLACE_NAME;
580606
580606
  return `thinkback@${marketplaceName}`;
580607
580607
  }
580608
- async function call36() {
580608
+ async function call35() {
580609
580609
  const v2Data = loadInstalledPluginsV2();
580610
580610
  const pluginId = getPluginId2();
580611
580611
  const installations = v2Data.plugins[pluginId];
@@ -583101,9 +583101,9 @@ var init_PermissionRuleList = __esm(() => {
583101
583101
  // src/commands/permissions/permissions.tsx
583102
583102
  var exports_permissions2 = {};
583103
583103
  __export(exports_permissions2, {
583104
- call: () => call37
583104
+ call: () => call36
583105
583105
  });
583106
- var jsx_dev_runtime278, call37 = async (onDone, context2) => {
583106
+ var jsx_dev_runtime278, call36 = async (onDone, context2) => {
583107
583107
  return /* @__PURE__ */ jsx_dev_runtime278.jsxDEV(PermissionRuleList, {
583108
583108
  onExit: onDone,
583109
583109
  onRetryDenials: (commands) => {
@@ -583133,7 +583133,7 @@ var init_permissions5 = __esm(() => {
583133
583133
  // src/commands/plan/plan.tsx
583134
583134
  var exports_plan = {};
583135
583135
  __export(exports_plan, {
583136
- call: () => call38
583136
+ call: () => call37
583137
583137
  });
583138
583138
  function PlanDisplay(t0) {
583139
583139
  const $3 = import_compiler_runtime216.c(11);
@@ -583221,7 +583221,7 @@ function PlanDisplay(t0) {
583221
583221
  }
583222
583222
  return t5;
583223
583223
  }
583224
- async function call38(onDone, context2, args) {
583224
+ async function call37(onDone, context2, args) {
583225
583225
  const {
583226
583226
  getAppState,
583227
583227
  setAppState
@@ -585059,9 +585059,9 @@ var init_HooksConfigMenu = __esm(() => {
585059
585059
  // src/commands/hooks/hooks.tsx
585060
585060
  var exports_hooks = {};
585061
585061
  __export(exports_hooks, {
585062
- call: () => call39
585062
+ call: () => call38
585063
585063
  });
585064
- var jsx_dev_runtime285, call39 = async (onDone, context2) => {
585064
+ var jsx_dev_runtime285, call38 = async (onDone, context2) => {
585065
585065
  logEvent("tengu_hooks_command", {});
585066
585066
  const appState = context2.getAppState();
585067
585067
  const permissionContext = appState.toolPermissionContext;
@@ -585094,10 +585094,10 @@ var init_hooks3 = __esm(() => {
585094
585094
  // src/commands/files/files.ts
585095
585095
  var exports_files4 = {};
585096
585096
  __export(exports_files4, {
585097
- call: () => call40
585097
+ call: () => call39
585098
585098
  });
585099
585099
  import { relative as relative31 } from "path";
585100
- async function call40(_args, context2) {
585100
+ async function call39(_args, context2) {
585101
585101
  const files2 = context2.readFileState ? cacheKeys(context2.readFileState) : [];
585102
585102
  if (files2.length === 0) {
585103
585103
  return { type: "text", value: "No files in context" };
@@ -585130,7 +585130,7 @@ var init_files8 = __esm(() => {
585130
585130
  var exports_branch = {};
585131
585131
  __export(exports_branch, {
585132
585132
  deriveFirstPrompt: () => deriveFirstPrompt,
585133
- call: () => call41
585133
+ call: () => call40
585134
585134
  });
585135
585135
  import { randomUUID as randomUUID33 } from "crypto";
585136
585136
  import { mkdir as mkdir36, readFile as readFile48, writeFile as writeFile41 } from "fs/promises";
@@ -585236,7 +585236,7 @@ async function getUniqueForkName(baseName) {
585236
585236
  }
585237
585237
  return `${baseName} (Branch ${nextNumber})`;
585238
585238
  }
585239
- async function call41(onDone, context2, args) {
585239
+ async function call40(onDone, context2, args) {
585240
585240
  const customTitle = args?.trim() || undefined;
585241
585241
  const originalSessionId = getSessionId();
585242
585242
  try {
@@ -591275,9 +591275,9 @@ var init_AgentsMenu = __esm(() => {
591275
591275
  // src/commands/agents/agents.tsx
591276
591276
  var exports_agents2 = {};
591277
591277
  __export(exports_agents2, {
591278
- call: () => call42
591278
+ call: () => call41
591279
591279
  });
591280
- async function call42(onDone, context2) {
591280
+ async function call41(onDone, context2) {
591281
591281
  const appState = context2.getAppState();
591282
591282
  const permissionContext = appState.toolPermissionContext;
591283
591283
  const tools = getTools(permissionContext);
@@ -591308,9 +591308,9 @@ var init_agents3 = __esm(() => {
591308
591308
  // src/commands/plugin/plugin.tsx
591309
591309
  var exports_plugin = {};
591310
591310
  __export(exports_plugin, {
591311
- call: () => call43
591311
+ call: () => call42
591312
591312
  });
591313
- async function call43(onDone, _context, args) {
591313
+ async function call42(onDone, _context, args) {
591314
591314
  return /* @__PURE__ */ jsx_dev_runtime311.jsxDEV(PluginSettings, {
591315
591315
  onComplete: onDone,
591316
591316
  args
@@ -591478,12 +591478,12 @@ var init_refresh = __esm(() => {
591478
591478
  // src/commands/reload-plugins/reload-plugins.ts
591479
591479
  var exports_reload_plugins = {};
591480
591480
  __export(exports_reload_plugins, {
591481
- call: () => call44
591481
+ call: () => call43
591482
591482
  });
591483
591483
  function n2(count4, noun) {
591484
591484
  return `${count4} ${plural(count4, noun)}`;
591485
591485
  }
591486
- var call44 = async (_args, context2) => {
591486
+ var call43 = async (_args, context2) => {
591487
591487
  if (false) {}
591488
591488
  const r2 = await refreshActivePlugins(context2.setAppState);
591489
591489
  const parts = [
@@ -591526,9 +591526,9 @@ var init_reload_plugins2 = __esm(() => {
591526
591526
  // src/commands/rewind/rewind.ts
591527
591527
  var exports_rewind = {};
591528
591528
  __export(exports_rewind, {
591529
- call: () => call45
591529
+ call: () => call44
591530
591530
  });
591531
- async function call45(_args, context2) {
591531
+ async function call44(_args, context2) {
591532
591532
  if (context2.openMessageSelector) {
591533
591533
  context2.openMessageSelector();
591534
591534
  }
@@ -591643,7 +591643,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
591643
591643
  smapsRollup,
591644
591644
  platform: process.platform,
591645
591645
  nodeVersion: process.version,
591646
- ccVersion: "1.2.15"
591646
+ ccVersion: "1.2.17"
591647
591647
  };
591648
591648
  }
591649
591649
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -591714,9 +591714,9 @@ var init_heapDumpService = __esm(() => {
591714
591714
  // src/commands/heapdump/heapdump.ts
591715
591715
  var exports_heapdump = {};
591716
591716
  __export(exports_heapdump, {
591717
- call: () => call46
591717
+ call: () => call45
591718
591718
  });
591719
- async function call46() {
591719
+ async function call45() {
591720
591720
  const result = await performHeapDump();
591721
591721
  if (!result.success) {
591722
591722
  return {
@@ -592029,7 +592029,7 @@ var USAGE = `/bridge-kick <subcommand>
592029
592029
  reconnect-session fail next POST /bridge/reconnect fails
592030
592030
  heartbeat <status> next heartbeat throws BridgeFatalError(status)
592031
592031
  reconnect call reconnectEnvironmentWithSession directly
592032
- status print bridge state`, call47 = async (args) => {
592032
+ status print bridge state`, call46 = async (args) => {
592033
592033
  const h3 = getBridgeDebugHandle();
592034
592034
  if (!h3) {
592035
592035
  return {
@@ -592162,16 +592162,16 @@ var init_bridge_kick = __esm(() => {
592162
592162
  description: "Inject bridge failure states for manual recovery testing",
592163
592163
  isEnabled: () => false,
592164
592164
  supportsNonInteractive: false,
592165
- load: () => Promise.resolve({ call: call47 })
592165
+ load: () => Promise.resolve({ call: call46 })
592166
592166
  };
592167
592167
  bridge_kick_default = bridgeKick;
592168
592168
  });
592169
592169
 
592170
592170
  // src/commands/version.ts
592171
- var call48 = async () => {
592171
+ var call47 = async () => {
592172
592172
  return {
592173
592173
  type: "text",
592174
- value: "1.2.15"
592174
+ value: "1.2.17"
592175
592175
  };
592176
592176
  }, version2, version_default;
592177
592177
  var init_version = __esm(() => {
@@ -592181,7 +592181,7 @@ var init_version = __esm(() => {
592181
592181
  description: "Print the version this session is running (not what autoupdate downloaded)",
592182
592182
  isEnabled: () => false,
592183
592183
  supportsNonInteractive: true,
592184
- load: () => Promise.resolve({ call: call48 })
592184
+ load: () => Promise.resolve({ call: call47 })
592185
592185
  };
592186
592186
  version_default = version2;
592187
592187
  });
@@ -593341,10 +593341,10 @@ var init_SandboxSettings = __esm(() => {
593341
593341
  // src/commands/sandbox-toggle/sandbox-toggle.tsx
593342
593342
  var exports_sandbox_toggle = {};
593343
593343
  __export(exports_sandbox_toggle, {
593344
- call: () => call49
593344
+ call: () => call48
593345
593345
  });
593346
593346
  import { relative as relative32 } from "path";
593347
- async function call49(onDone, _context, args) {
593347
+ async function call48(onDone, _context, args) {
593348
593348
  const settings = getSettings_DEPRECATED();
593349
593349
  const themeName = settings.theme || "light";
593350
593350
  const platform4 = getPlatform();
@@ -593451,9 +593451,9 @@ var init_sandbox_toggle2 = __esm(() => {
593451
593451
  // src/commands/stickers/stickers.ts
593452
593452
  var exports_stickers = {};
593453
593453
  __export(exports_stickers, {
593454
- call: () => call50
593454
+ call: () => call49
593455
593455
  });
593456
- async function call50() {
593456
+ async function call49() {
593457
593457
  const url4 = "https://www.stickermule.com/claudecode";
593458
593458
  const success2 = await openBrowser(url4);
593459
593459
  if (success2) {
@@ -593483,7 +593483,7 @@ var init_stickers2 = __esm(() => {
593483
593483
  });
593484
593484
 
593485
593485
  // src/commands/advisor.ts
593486
- var call51 = async (args, context2) => {
593486
+ var call50 = async (args, context2) => {
593487
593487
  const arg = args.trim().toLowerCase();
593488
593488
  const baseModel = parseUserSpecifiedModel(context2.getAppState().mainLoopModel ?? getDefaultMainLoopModelSetting());
593489
593489
  if (!arg) {
@@ -593569,7 +593569,7 @@ var init_advisor2 = __esm(() => {
593569
593569
  return !canUserConfigureAdvisor();
593570
593570
  },
593571
593571
  supportsNonInteractive: true,
593572
- load: () => Promise.resolve({ call: call51 })
593572
+ load: () => Promise.resolve({ call: call50 })
593573
593573
  };
593574
593574
  advisor_default = advisor;
593575
593575
  });
@@ -593983,12 +593983,12 @@ var init_ExitFlow = __esm(() => {
593983
593983
  // src/commands/exit/exit.tsx
593984
593984
  var exports_exit = {};
593985
593985
  __export(exports_exit, {
593986
- call: () => call52
593986
+ call: () => call51
593987
593987
  });
593988
593988
  function getRandomGoodbyeMessage2() {
593989
593989
  return sample_default(GOODBYE_MESSAGES2) ?? "Goodbye!";
593990
593990
  }
593991
- async function call52(onDone) {
593991
+ async function call51(onDone) {
593992
593992
  if (false) {}
593993
593993
  const showWorktree = getCurrentWorktreeSession() !== null;
593994
593994
  if (showWorktree) {
@@ -594282,7 +594282,7 @@ var exports_export = {};
594282
594282
  __export(exports_export, {
594283
594283
  sanitizeFilename: () => sanitizeFilename,
594284
594284
  extractFirstPrompt: () => extractFirstPrompt,
594285
- call: () => call53
594285
+ call: () => call52
594286
594286
  });
594287
594287
  import { join as join141 } from "path";
594288
594288
  function formatTimestamp(date6) {
@@ -594323,7 +594323,7 @@ async function exportWithReactRenderer(context2) {
594323
594323
  const tools = context2.options.tools || [];
594324
594324
  return renderMessagesToPlainText(context2.messages, tools);
594325
594325
  }
594326
- async function call53(onDone, context2, args) {
594326
+ async function call52(onDone, context2, args) {
594327
594327
  const content = await exportWithReactRenderer(context2);
594328
594328
  const filename = args.trim();
594329
594329
  if (filename) {
@@ -595350,7 +595350,7 @@ var init_SearchableModelPicker = __esm(() => {
595350
595350
  // src/commands/connect/connect.tsx
595351
595351
  var exports_connect = {};
595352
595352
  __export(exports_connect, {
595353
- call: () => call54
595353
+ call: () => call53
595354
595354
  });
595355
595355
  function ConnectFlow({ onDone }) {
595356
595356
  const [phase, setPhase] = React100.useState("setup");
@@ -595363,7 +595363,7 @@ function ConnectFlow({ onDone }) {
595363
595363
  onDone
595364
595364
  }, undefined, false, undefined, this);
595365
595365
  }
595366
- var React100, jsx_dev_runtime325, call54 = async (onDone, _context, _args) => {
595366
+ var React100, jsx_dev_runtime325, call53 = async (onDone, _context, _args) => {
595367
595367
  return /* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ConnectFlow, {
595368
595368
  onDone
595369
595369
  }, undefined, false, undefined, this);
@@ -595389,7 +595389,7 @@ var init_connect2 = __esm(() => {
595389
595389
  // src/commands/install-skill/install-skill.tsx
595390
595390
  var exports_install_skill = {};
595391
595391
  __export(exports_install_skill, {
595392
- call: () => call55
595392
+ call: () => call54
595393
595393
  });
595394
595394
  function InstallSkillFlow({
595395
595395
  source,
@@ -595484,7 +595484,7 @@ function InstallSkillFlow({
595484
595484
  ]
595485
595485
  }, undefined, true, undefined, this);
595486
595486
  }
595487
- var import_react180, jsx_dev_runtime326, call55 = async (onDone, _context, args) => {
595487
+ var import_react180, jsx_dev_runtime326, call54 = async (onDone, _context, args) => {
595488
595488
  const tokens = (args ?? "").trim().split(/\s+/).filter(Boolean);
595489
595489
  const overwrite = tokens.includes("--overwrite");
595490
595490
  const source = tokens.filter((t2) => t2 !== "--overwrite").join(" ").trim();
@@ -595535,7 +595535,7 @@ var init_immediateCommand = __esm(() => {
595535
595535
  // src/commands/model/model.tsx
595536
595536
  var exports_model2 = {};
595537
595537
  __export(exports_model2, {
595538
- call: () => call56
595538
+ call: () => call55
595539
595539
  });
595540
595540
  function ModelPickerWrapper(t0) {
595541
595541
  const $3 = import_compiler_runtime247.c(17);
@@ -595785,7 +595785,7 @@ function renderModelLabel(model) {
595785
595785
  const rendered = renderDefaultModelSetting(model ?? getDefaultMainLoopModelSetting());
595786
595786
  return model === null ? `${rendered} (default)` : rendered;
595787
595787
  }
595788
- var import_compiler_runtime247, React102, jsx_dev_runtime327, call56 = async (onDone, _context, args) => {
595788
+ var import_compiler_runtime247, React102, jsx_dev_runtime327, call55 = async (onDone, _context, args) => {
595789
595789
  args = args?.trim() || "";
595790
595790
  if (COMMON_INFO_ARGS.includes(args)) {
595791
595791
  logEvent("tengu_model_command_inline_help", {
@@ -595862,7 +595862,7 @@ var init_model3 = __esm(() => {
595862
595862
  // src/commands/model-subagent/command.tsx
595863
595863
  var exports_command = {};
595864
595864
  __export(exports_command, {
595865
- call: () => call57
595865
+ call: () => call56
595866
595866
  });
595867
595867
  function resolveAgentType(token) {
595868
595868
  const t2 = token.trim().toUpperCase();
@@ -595874,7 +595874,7 @@ function resolveAgentType(token) {
595874
595874
  const suffixed = SPECIALIST_AGENT_TYPES.find((a2) => a2.toUpperCase() === `${t2}-AGENT`);
595875
595875
  return suffixed;
595876
595876
  }
595877
- var jsx_dev_runtime328, COST_TIP = "Tip: subagents run frequently — a large model here costs more and is usually overkill for small subtasks. Prefer an instant/small model (e.g. Claude Opus 4.8 as a subagent is overkill).", SUBCOMMANDS, call57 = async (onDone, _context, args) => {
595877
+ var jsx_dev_runtime328, COST_TIP = "Tip: subagents run frequently — a large model here costs more and is usually overkill for small subtasks. Prefer an instant/small model (e.g. Claude Opus 4.8 as a subagent is overkill).", SUBCOMMANDS, call56 = async (onDone, _context, args) => {
595878
595878
  const tokens = (args ?? "").trim().split(/\s+/).filter(Boolean);
595879
595879
  let agentType;
595880
595880
  let sub = "";
@@ -595947,7 +595947,7 @@ var init_model_subagent = __esm(() => {
595947
595947
  // src/commands/model-image-generation/command.tsx
595948
595948
  var exports_command2 = {};
595949
595949
  __export(exports_command2, {
595950
- call: () => call58
595950
+ call: () => call57
595951
595951
  });
595952
595952
  function backendLabel(provider) {
595953
595953
  return provider === "vertex" ? "Vertex (Imagen)" : "NVIDIA";
@@ -595990,7 +595990,7 @@ function ImageModelPicker({
595990
595990
  ]
595991
595991
  }, undefined, true, undefined, this);
595992
595992
  }
595993
- var jsx_dev_runtime329, call58 = async (onDone) => {
595993
+ var jsx_dev_runtime329, call57 = async (onDone) => {
595994
595994
  return /* @__PURE__ */ jsx_dev_runtime329.jsxDEV(ImageModelPicker, {
595995
595995
  onDone
595996
595996
  }, undefined, false, undefined, this);
@@ -596021,7 +596021,7 @@ var init_model_image_generation = __esm(() => {
596021
596021
  // src/commands/model-video-generation/command.tsx
596022
596022
  var exports_command3 = {};
596023
596023
  __export(exports_command3, {
596024
- call: () => call59
596024
+ call: () => call58
596025
596025
  });
596026
596026
  function backendLabel2(backend) {
596027
596027
  if (backend === "vertex")
@@ -596068,7 +596068,7 @@ function VideoModelPicker({
596068
596068
  ]
596069
596069
  }, undefined, true, undefined, this);
596070
596070
  }
596071
- var jsx_dev_runtime330, call59 = async (onDone) => {
596071
+ var jsx_dev_runtime330, call58 = async (onDone) => {
596072
596072
  return /* @__PURE__ */ jsx_dev_runtime330.jsxDEV(VideoModelPicker, {
596073
596073
  onDone
596074
596074
  }, undefined, false, undefined, this);
@@ -596099,7 +596099,7 @@ var init_model_video_generation = __esm(() => {
596099
596099
  // src/commands/tag/tag.tsx
596100
596100
  var exports_tag = {};
596101
596101
  __export(exports_tag, {
596102
- call: () => call60
596102
+ call: () => call59
596103
596103
  });
596104
596104
  function ConfirmRemoveTag(t0) {
596105
596105
  const $3 = import_compiler_runtime248.c(11);
@@ -596323,7 +596323,7 @@ Examples:
596323
596323
  React103.useEffect(t1, t2);
596324
596324
  return null;
596325
596325
  }
596326
- async function call60(onDone, _context, args) {
596326
+ async function call59(onDone, _context, args) {
596327
596327
  args = args?.trim() || "";
596328
596328
  if (COMMON_INFO_ARGS.includes(args) || COMMON_HELP_ARGS.includes(args)) {
596329
596329
  return /* @__PURE__ */ jsx_dev_runtime331.jsxDEV(ShowHelp, {
@@ -596372,9 +596372,9 @@ var init_tag2 = __esm(() => {
596372
596372
  // src/commands/output-style/output-style.tsx
596373
596373
  var exports_output_style = {};
596374
596374
  __export(exports_output_style, {
596375
- call: () => call61
596375
+ call: () => call60
596376
596376
  });
596377
- async function call61(onDone) {
596377
+ async function call60(onDone) {
596378
596378
  onDone("/output-style has been deprecated. Use /config to change your output style, or set it in your settings file. Changes take effect on the next session.", {
596379
596379
  display: "system"
596380
596380
  });
@@ -596423,7 +596423,7 @@ var exports_effort = {};
596423
596423
  __export(exports_effort, {
596424
596424
  showCurrentEffort: () => showCurrentEffort,
596425
596425
  executeEffort: () => executeEffort,
596426
- call: () => call62
596426
+ call: () => call61
596427
596427
  });
596428
596428
  function setEffortValue(effortValue) {
596429
596429
  const persistable = toPersistableEffort(effortValue);
@@ -596574,7 +596574,7 @@ function ApplyEffortAndClose(t0) {
596574
596574
  React104.useEffect(t1, t2);
596575
596575
  return null;
596576
596576
  }
596577
- async function call62(onDone, _context, args) {
596577
+ async function call61(onDone, _context, args) {
596578
596578
  args = args?.trim() || "";
596579
596579
  if (COMMON_HELP_ARGS2.includes(args)) {
596580
596580
  onDone(`Usage: /effort [low|medium|high|max|auto]
@@ -599483,9 +599483,9 @@ var init_Stats = __esm(() => {
599483
599483
  // src/commands/stats/stats.tsx
599484
599484
  var exports_stats = {};
599485
599485
  __export(exports_stats, {
599486
- call: () => call63
599486
+ call: () => call62
599487
599487
  });
599488
- var jsx_dev_runtime334, call63 = async (onDone) => {
599488
+ var jsx_dev_runtime334, call62 = async (onDone) => {
599489
599489
  return /* @__PURE__ */ jsx_dev_runtime334.jsxDEV(Stats2, {
599490
599490
  onClose: onDone
599491
599491
  }, undefined, false, undefined, this);
@@ -600991,7 +600991,7 @@ function generateHtmlReport(data, insights) {
600991
600991
  </html>`;
600992
600992
  }
600993
600993
  function buildExportData(data, insights, facets, remoteStats) {
600994
- const version3 = typeof MACRO !== "undefined" ? "1.2.15" : "unknown";
600994
+ const version3 = typeof MACRO !== "undefined" ? "1.2.17" : "unknown";
600995
600995
  const remote_hosts_collected = remoteStats?.hosts.filter((h3) => h3.sessionCount > 0).map((h3) => h3.name);
600996
600996
  const facets_summary = {
600997
600997
  total: facets.size,
@@ -601747,7 +601747,6 @@ var init_commands2 = __esm(() => {
601747
601747
  init_disconnect_index();
601748
601748
  init_onboarding();
601749
601749
  init_pr_comments();
601750
- init_release_notes2();
601751
601750
  init_rename2();
601752
601751
  init_review_detial2();
601753
601752
  init_resume2();
@@ -601892,7 +601891,6 @@ var init_commands2 = __esm(() => {
601892
601891
  output_style_default,
601893
601892
  plugin_default,
601894
601893
  pr_comments_default,
601895
- release_notes_default,
601896
601894
  reload_plugins_default,
601897
601895
  rename_default,
601898
601896
  review_detial_default,
@@ -601990,7 +601988,6 @@ var init_commands2 = __esm(() => {
601990
601988
  compact_default,
601991
601989
  clear_default,
601992
601990
  summary_default,
601993
- release_notes_default,
601994
601991
  files_default
601995
601992
  ].filter((c4) => c4 !== null));
601996
601993
  });
@@ -604923,7 +604920,7 @@ var init_sessionStorage = __esm(() => {
604923
604920
  init_settings2();
604924
604921
  init_slowOperations();
604925
604922
  init_uuid();
604926
- VERSION6 = typeof MACRO !== "undefined" ? "1.2.15" : "unknown";
604923
+ VERSION6 = typeof MACRO !== "undefined" ? "1.2.17" : "unknown";
604927
604924
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
604928
604925
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
604929
604926
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -606142,7 +606139,7 @@ var init_filesystem = __esm(() => {
606142
606139
  });
606143
606140
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
606144
606141
  const nonce = randomBytes18(16).toString("hex");
606145
- return join149(getClaudeTempDir(), "bundled-skills", "1.2.15", nonce);
606142
+ return join149(getClaudeTempDir(), "bundled-skills", "1.2.17", nonce);
606146
606143
  });
606147
606144
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
606148
606145
  });
@@ -611257,7 +611254,7 @@ __export(exports_update, {
611257
611254
  import { execFileSync as execFileSync3 } from "node:child_process";
611258
611255
  import { homedir as homedir32 } from "os";
611259
611256
  async function update() {
611260
- writeToStdout(`Current version: ${"1.2.15"}
611257
+ writeToStdout(`Current version: ${"1.2.17"}
611261
611258
  `);
611262
611259
  const isBundled = isInBundledMode();
611263
611260
  if (isBundled) {
@@ -611283,13 +611280,13 @@ Manual check: npm view ${"@rayu-dev/rayu-cli"} version
611283
611280
  process.exit(1);
611284
611281
  return;
611285
611282
  }
611286
- if (latestVersion === "1.2.15") {
611283
+ if (latestVersion === "1.2.17") {
611287
611284
  writeToStdout(source_default.green(`
611288
- Rayu CLI is up to date (${"1.2.15"})
611285
+ Rayu CLI is up to date (${"1.2.17"})
611289
611286
  `));
611290
611287
  process.exit(0);
611291
611288
  }
611292
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.2.15"})
611289
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.2.17"})
611293
611290
  `);
611294
611291
  writeToStdout(`Installing update...
611295
611292
 
@@ -611313,7 +611310,7 @@ Try manually:
611313
611310
  return;
611314
611311
  }
611315
611312
  writeToStdout(source_default.green(`
611316
- Successfully updated from ${"1.2.15"} to ${latestVersion}
611313
+ Successfully updated from ${"1.2.17"} to ${latestVersion}
611317
611314
  `));
611318
611315
  process.exit(0);
611319
611316
  }
@@ -611327,14 +611324,14 @@ async function updateNativeBinary() {
611327
611324
  } catch {
611328
611325
  latestVersion = "";
611329
611326
  }
611330
- if (latestVersion && latestVersion === "1.2.15") {
611327
+ if (latestVersion && latestVersion === "1.2.17") {
611331
611328
  writeToStdout(source_default.green(`
611332
- Rayu CLI is up to date (1.2.15)
611329
+ Rayu CLI is up to date (1.2.17)
611333
611330
  `));
611334
611331
  process.exit(0);
611335
611332
  }
611336
611333
  if (latestVersion) {
611337
- writeToStdout(`New version available: ${latestVersion} (current: 1.2.15)
611334
+ writeToStdout(`New version available: ${latestVersion} (current: 1.2.17)
611338
611335
  `);
611339
611336
  }
611340
611337
  writeToStdout(`Downloading and installing update...
@@ -611349,13 +611346,13 @@ Rayu CLI is up to date (1.2.15)
611349
611346
  return;
611350
611347
  }
611351
611348
  writeToStdout(source_default.green(`
611352
- Rayu CLI is up to date (1.2.15)
611349
+ Rayu CLI is up to date (1.2.17)
611353
611350
  `));
611354
611351
  process.exit(0);
611355
611352
  }
611356
611353
  const updatedTo = result.latestVersion ?? latestVersion ?? "latest";
611357
611354
  writeToStdout(source_default.green(`
611358
- Successfully updated from 1.2.15 to ${updatedTo}
611355
+ Successfully updated from 1.2.17 to ${updatedTo}
611359
611356
  `));
611360
611357
  writeToStdout(`Restart your terminal to use the new version.
611361
611358
  `);
@@ -611386,7 +611383,7 @@ __export(exports_uninstall, {
611386
611383
  import { execFileSync as execFileSync4 } from "node:child_process";
611387
611384
  import { homedir as homedir33 } from "os";
611388
611385
  async function uninstall() {
611389
- writeToStdout(`Uninstalling Rayu CLI (${"1.2.15"})...
611386
+ writeToStdout(`Uninstalling Rayu CLI (${"1.2.17"})...
611390
611387
  `);
611391
611388
  writeToStdout(`Running: npm uninstall -g ${"@rayu-dev/rayu-cli"}
611392
611389
 
@@ -611409,7 +611406,7 @@ Try running manually:
611409
611406
  process.exit(1);
611410
611407
  }
611411
611408
  writeToStdout(source_default.green(`
611412
- Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.2.15"}
611409
+ Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.2.17"}
611413
611410
  `));
611414
611411
  writeToStdout(`Thanks for using Rayu CLI!
611415
611412
  `);
@@ -611461,7 +611458,7 @@ function showFirstRunWelcome() {
611461
611458
  `);
611462
611459
  try {
611463
611460
  mkdirSync13(getRayuConfigHomeDir(), { recursive: true });
611464
- writeFileSync15(markerPath(), "1.2.15", "utf8");
611461
+ writeFileSync15(markerPath(), "1.2.17", "utf8");
611465
611462
  } catch {}
611466
611463
  }
611467
611464
  var init_firstRun = __esm(() => {
@@ -623304,7 +623301,7 @@ async function initializeBetaTracing(resource) {
623304
623301
  });
623305
623302
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
623306
623303
  setLoggerProvider(loggerProvider);
623307
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.2.15");
623304
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.2.17");
623308
623305
  setEventLogger(eventLogger);
623309
623306
  process.on("beforeExit", async () => {
623310
623307
  await loggerProvider?.forceFlush();
@@ -623344,7 +623341,7 @@ async function initializeTelemetry() {
623344
623341
  const platform4 = getPlatform();
623345
623342
  const baseAttributes = {
623346
623343
  [import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
623347
- [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.2.15"
623344
+ [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.2.17"
623348
623345
  };
623349
623346
  if (platform4 === "wsl") {
623350
623347
  const wslVersion = getWslVersion();
@@ -623389,7 +623386,7 @@ async function initializeTelemetry() {
623389
623386
  } catch {}
623390
623387
  };
623391
623388
  registerCleanup(shutdownTelemetry2);
623392
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.2.15");
623389
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.2.17");
623393
623390
  }
623394
623391
  const meterProvider = new import_sdk_metrics2.MeterProvider({
623395
623392
  resource,
@@ -623409,7 +623406,7 @@ async function initializeTelemetry() {
623409
623406
  });
623410
623407
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
623411
623408
  setLoggerProvider(loggerProvider);
623412
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.2.15");
623409
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.2.17");
623413
623410
  setEventLogger(eventLogger);
623414
623411
  logForDebugging("[3P telemetry] Event logger set successfully");
623415
623412
  process.on("beforeExit", async () => {
@@ -623471,7 +623468,7 @@ Current timeout: ${timeoutMs}ms
623471
623468
  }
623472
623469
  };
623473
623470
  registerCleanup(shutdownTelemetry);
623474
- return meterProvider.getMeter("com.anthropic.claude_code", "1.2.15");
623471
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.2.17");
623475
623472
  }
623476
623473
  async function flushTelemetry() {
623477
623474
  const meterProvider = getMeterProvider();
@@ -624984,7 +624981,7 @@ function buildSystemInitMessage(inputs) {
624984
624981
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
624985
624982
  apiKeySource: getAnthropicApiKeyWithSource().source,
624986
624983
  betas: getSdkBetas(),
624987
- claude_code_version: "1.2.15",
624984
+ claude_code_version: "1.2.17",
624988
624985
  output_style: outputStyle2,
624989
624986
  agents: inputs.agents.map((agent) => agent.agentType),
624990
624987
  skills: inputs.skills.filter((s2) => s2.userInvocable !== false).map((skill) => skill.name),
@@ -641193,7 +641190,7 @@ var init_useVoiceEnabled = __esm(() => {
641193
641190
  function getSemverPart(version3) {
641194
641191
  return `${import_semver11.major(version3, { loose: true })}.${import_semver11.minor(version3, { loose: true })}.${import_semver11.patch(version3, { loose: true })}`;
641195
641192
  }
641196
- function useUpdateNotification(updatedVersion, initialVersion = "1.2.15") {
641193
+ function useUpdateNotification(updatedVersion, initialVersion = "1.2.17") {
641197
641194
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react217.useState(() => getSemverPart(initialVersion));
641198
641195
  if (!updatedVersion) {
641199
641196
  return null;
@@ -641233,7 +641230,7 @@ function AutoUpdater({
641233
641230
  return;
641234
641231
  }
641235
641232
  if (false) {}
641236
- const currentVersion = "1.2.15";
641233
+ const currentVersion = "1.2.17";
641237
641234
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
641238
641235
  let latestVersion = await getLatestVersion(channel);
641239
641236
  const isDisabled = isAutoUpdaterDisabled();
@@ -641446,12 +641443,12 @@ function NativeAutoUpdater({
641446
641443
  logEvent("tengu_native_auto_updater_start", {});
641447
641444
  try {
641448
641445
  const maxVersion = await getMaxVersion();
641449
- if (maxVersion && gt("1.2.15", maxVersion)) {
641446
+ if (maxVersion && gt("1.2.17", maxVersion)) {
641450
641447
  const msg = await getMaxVersionMessage();
641451
641448
  setMaxVersionIssue(msg ?? "affects your version");
641452
641449
  }
641453
641450
  const result = await installLatest(channel);
641454
- const currentVersion = "1.2.15";
641451
+ const currentVersion = "1.2.17";
641455
641452
  const latencyMs = Date.now() - startTime;
641456
641453
  if (result.lockFailed) {
641457
641454
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -641588,17 +641585,17 @@ function PackageManagerAutoUpdater(t0) {
641588
641585
  const maxVersion = await getMaxVersion();
641589
641586
  if (maxVersion && latest && gt(latest, maxVersion)) {
641590
641587
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
641591
- if (gte("1.2.15", maxVersion)) {
641592
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.2.15"} is already at or above maxVersion ${maxVersion}, skipping update`);
641588
+ if (gte("1.2.17", maxVersion)) {
641589
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.2.17"} is already at or above maxVersion ${maxVersion}, skipping update`);
641593
641590
  setUpdateAvailable(false);
641594
641591
  return;
641595
641592
  }
641596
641593
  latest = maxVersion;
641597
641594
  }
641598
- const hasUpdate = latest && !gte("1.2.15", latest) && !shouldSkipVersion(latest);
641595
+ const hasUpdate = latest && !gte("1.2.17", latest) && !shouldSkipVersion(latest);
641599
641596
  setUpdateAvailable(!!hasUpdate);
641600
641597
  if (hasUpdate) {
641601
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.2.15"} -> ${latest}`);
641598
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.2.17"} -> ${latest}`);
641602
641599
  }
641603
641600
  };
641604
641601
  $3[0] = t1;
@@ -641632,7 +641629,7 @@ function PackageManagerAutoUpdater(t0) {
641632
641629
  wrap: "truncate",
641633
641630
  children: [
641634
641631
  "currentVersion: ",
641635
- "1.2.15"
641632
+ "1.2.17"
641636
641633
  ]
641637
641634
  }, undefined, true, undefined, this);
641638
641635
  $3[3] = verbose;
@@ -649798,7 +649795,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
649798
649795
  project_dir: getOriginalCwd(),
649799
649796
  added_dirs: addedDirs
649800
649797
  },
649801
- version: "1.2.15",
649798
+ version: "1.2.17",
649802
649799
  output_style: {
649803
649800
  name: outputStyleName
649804
649801
  },
@@ -661167,7 +661164,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
661167
661164
  } catch {}
661168
661165
  const data = {
661169
661166
  trigger,
661170
- version: "1.2.15",
661167
+ version: "1.2.17",
661171
661168
  platform: process.platform,
661172
661169
  transcript,
661173
661170
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -667225,25 +667222,9 @@ function useNpmDeprecationNotification() {
667225
667222
  useStartupNotification(_temp206);
667226
667223
  }
667227
667224
  async function _temp206() {
667228
- if (isInBundledMode() || isEnvTruthy(process.env.DISABLE_INSTALLATION_CHECKS)) {
667229
- return null;
667230
- }
667231
- const installationType = await getCurrentInstallationType();
667232
- if (installationType === "development") {
667233
- return null;
667234
- }
667235
- return {
667236
- timeoutMs: 15000,
667237
- key: "npm-deprecation-warning",
667238
- text: NPM_DEPRECATION_MESSAGE,
667239
- color: "warning",
667240
- priority: "high"
667241
- };
667225
+ return null;
667242
667226
  }
667243
- var NPM_DEPRECATION_MESSAGE = "RAYU has switched from npm to native installer. Run `claude install` or see https://docs.anthropic.com/en/docs/claude-code/getting-started for more options.";
667244
667227
  var init_useNpmDeprecationNotification = __esm(() => {
667245
- init_doctorDiagnostic();
667246
- init_envUtils();
667247
667228
  init_useStartupNotification();
667248
667229
  });
667249
667230
 
@@ -673218,7 +673199,7 @@ function WelcomeV2() {
673218
673199
  dimColor: true,
673219
673200
  children: [
673220
673201
  "v",
673221
- "1.2.15"
673202
+ "1.2.17"
673222
673203
  ]
673223
673204
  }, undefined, true, undefined, this)
673224
673205
  ]
@@ -674935,7 +674916,7 @@ function completeOnboarding() {
674935
674916
  saveGlobalConfig((current) => ({
674936
674917
  ...current,
674937
674918
  hasCompletedOnboarding: true,
674938
- lastOnboardingVersion: "1.2.15"
674919
+ lastOnboardingVersion: "1.2.17"
674939
674920
  }));
674940
674921
  }
674941
674922
  function showDialog(root2, renderer) {
@@ -679235,7 +679216,7 @@ function appendToLog(path30, message) {
679235
679216
  cwd: getFsImplementation().cwd(),
679236
679217
  userType: "external",
679237
679218
  sessionId: getSessionId(),
679238
- version: "1.2.15"
679219
+ version: "1.2.17"
679239
679220
  };
679240
679221
  getLogWriter(path30).write(messageWithTimestamp);
679241
679222
  }
@@ -683339,8 +683320,8 @@ async function getEnvLessBridgeConfig() {
683339
683320
  }
683340
683321
  async function checkEnvLessBridgeMinVersion() {
683341
683322
  const cfg = await getEnvLessBridgeConfig();
683342
- if (cfg.min_version && lt("1.2.15", cfg.min_version)) {
683343
- return `Your version of RAYU (${"1.2.15"}) is too old for Remote Control.
683323
+ if (cfg.min_version && lt("1.2.17", cfg.min_version)) {
683324
+ return `Your version of RAYU (${"1.2.17"}) is too old for Remote Control.
683344
683325
  Version ${cfg.min_version} or higher is required. Run \`claude update\` to update.`;
683345
683326
  }
683346
683327
  return null;
@@ -683814,7 +683795,7 @@ async function initBridgeCore(params) {
683814
683795
  const rawApi = createBridgeApiClient({
683815
683796
  baseUrl,
683816
683797
  getAccessToken,
683817
- runnerVersion: "1.2.15",
683798
+ runnerVersion: "1.2.17",
683818
683799
  onDebug: logForDebugging,
683819
683800
  onAuth401,
683820
683801
  getTrustedDeviceToken
@@ -689176,7 +689157,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
689176
689157
  setCwd(cwd3);
689177
689158
  const server = new Server({
689178
689159
  name: "claude/tengu",
689179
- version: "1.2.15"
689160
+ version: "1.2.17"
689180
689161
  }, {
689181
689162
  capabilities: {
689182
689163
  tools: {}
@@ -690927,7 +690908,7 @@ async function run() {
690927
690908
  await init2();
690928
690909
  profileCheckpoint("preAction_after_init");
690929
690910
  if (!isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_TERMINAL_TITLE)) {
690930
- process.title = "claude";
690911
+ process.title = "rayu";
690931
690912
  }
690932
690913
  const {
690933
690914
  initSinks: initSinks2
@@ -691702,7 +691683,7 @@ ${customInstructions}` : customInstructions;
691702
691683
  }
691703
691684
  }
691704
691685
  logForDiagnosticsNoPII("info", "started", {
691705
- version: "1.2.15",
691686
+ version: "1.2.17",
691706
691687
  is_native_binary: isInBundledMode()
691707
691688
  });
691708
691689
  registerCleanup(async () => {
@@ -692420,7 +692401,7 @@ Usage: rayu --remote "your task description"`, () => gracefulShutdown(1));
692420
692401
  pendingHookMessages
692421
692402
  }, renderAndRun);
692422
692403
  }
692423
- }).version("1.2.15 (Rayu-CLI)", "-v, --version", "Output the version number");
692404
+ }).version("1.2.17 (Rayu-CLI)", "-v, --version", "Output the version number");
692424
692405
  program.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
692425
692406
  program.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
692426
692407
  if (canUserConfigureAdvisor()) {
@@ -692886,7 +692867,7 @@ if (false) {}
692886
692867
  async function main2() {
692887
692868
  const args = process.argv.slice(2);
692888
692869
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
692889
- console.log(`${"1.2.15"} (Rayu-CLI)`);
692870
+ console.log(`${"1.2.17"} (Rayu-CLI)`);
692890
692871
  return;
692891
692872
  }
692892
692873
  const {