@qwen-code/qwen-code 0.10.0-preview.1 → 0.10.0-preview.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,7 +36,7 @@ Qwen Code is an open-source AI agent for the terminal, optimized for [Qwen3-Code
36
36
  #### Linux / macOS
37
37
 
38
38
  ```bash
39
- eval "$(curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh)"
39
+ curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash
40
40
  ```
41
41
 
42
42
  #### Windows (Run as Administrator CMD)
package/cli.js CHANGED
@@ -60297,8 +60297,8 @@ var require_resolve = __commonJS({
60297
60297
  return count;
60298
60298
  }
60299
60299
  __name(countKeys, "countKeys");
60300
- function getFullPath(resolver, id = "", normalize11) {
60301
- if (normalize11 !== false)
60300
+ function getFullPath(resolver, id = "", normalize12) {
60301
+ if (normalize12 !== false)
60302
60302
  id = normalizeId(id);
60303
60303
  const p2 = resolver.parse(id);
60304
60304
  return _getFullPath(resolver, p2);
@@ -61674,7 +61674,7 @@ var require_fast_uri = __commonJS({
61674
61674
  init_esbuild_shims();
61675
61675
  var { normalizeIPv6, normalizeIPv4, removeDotSegments, recomposeAuthority, normalizeComponentEncoding } = require_utils2();
61676
61676
  var SCHEMES = require_schemes();
61677
- function normalize11(uri, options2) {
61677
+ function normalize12(uri, options2) {
61678
61678
  if (typeof uri === "string") {
61679
61679
  uri = serialize2(parse14(uri, options2), options2);
61680
61680
  } else if (typeof uri === "object") {
@@ -61682,7 +61682,7 @@ var require_fast_uri = __commonJS({
61682
61682
  }
61683
61683
  return uri;
61684
61684
  }
61685
- __name(normalize11, "normalize");
61685
+ __name(normalize12, "normalize");
61686
61686
  function resolve30(baseURI, relativeURI, options2) {
61687
61687
  const schemelessOptions = Object.assign({ scheme: "null" }, options2);
61688
61688
  const resolved = resolveComponents(parse14(baseURI, schemelessOptions), parse14(relativeURI, schemelessOptions), schemelessOptions, true);
@@ -61919,7 +61919,7 @@ var require_fast_uri = __commonJS({
61919
61919
  __name(parse14, "parse");
61920
61920
  var fastUri = {
61921
61921
  SCHEMES,
61922
- normalize: normalize11,
61922
+ normalize: normalize12,
61923
61923
  resolve: resolve30,
61924
61924
  resolveComponents,
61925
61925
  equal,
@@ -67311,8 +67311,8 @@ var require_resolve2 = __commonJS({
67311
67311
  return count;
67312
67312
  }
67313
67313
  __name(countKeys, "countKeys");
67314
- function getFullPath(resolver, id = "", normalize11) {
67315
- if (normalize11 !== false)
67314
+ function getFullPath(resolver, id = "", normalize12) {
67315
+ if (normalize12 !== false)
67316
67316
  id = normalizeId(id);
67317
67317
  const p2 = resolver.parse(id);
67318
67318
  return _getFullPath(resolver, p2);
@@ -71873,7 +71873,7 @@ var init_mcp_tool = __esm({
71873
71873
  cliConfig;
71874
71874
  constructor(mcpTool, serverName, serverToolName, description, parameterSchema, trust, nameOverride, cliConfig) {
71875
71875
  super(
71876
- nameOverride ?? generateValidName(serverToolName),
71876
+ nameOverride ?? generateValidName(`mcp__${serverName}__${serverToolName}`),
71877
71877
  `${serverToolName} (${serverName} MCP Server)`,
71878
71878
  description,
71879
71879
  Kind.Other,
@@ -71890,7 +71890,7 @@ var init_mcp_tool = __esm({
71890
71890
  this.cliConfig = cliConfig;
71891
71891
  }
71892
71892
  asFullyQualifiedTool() {
71893
- return new _DiscoveredMCPTool(this.mcpTool, this.serverName, this.serverToolName, this.description, this.parameterSchema, this.trust, `${this.serverName}__${this.serverToolName}`, this.cliConfig);
71893
+ return new _DiscoveredMCPTool(this.mcpTool, this.serverName, this.serverToolName, this.description, this.parameterSchema, this.trust, generateValidName(`mcp__${this.serverName}__${this.serverToolName}`), this.cliConfig);
71894
71894
  }
71895
71895
  createInvocation(params) {
71896
71896
  return new DiscoveredMCPToolInvocation(this.mcpTool, this.serverName, this.serverToolName, this.displayName, this.trust, params, this.cliConfig);
@@ -87601,13 +87601,13 @@ var require_path = __commonJS({
87601
87601
  return /^(?:\/|\w+:)/.test(path124);
87602
87602
  }, "isAbsolute")
87603
87603
  );
87604
- var normalize11 = (
87604
+ var normalize12 = (
87605
87605
  /**
87606
87606
  * Normalizes the specified path.
87607
87607
  * @param {string} path Path to normalize
87608
87608
  * @returns {string} Normalized path
87609
87609
  */
87610
- path123.normalize = /* @__PURE__ */ __name(function normalize12(path124) {
87610
+ path123.normalize = /* @__PURE__ */ __name(function normalize13(path124) {
87611
87611
  path124 = path124.replace(/\\/g, "/").replace(/\/{2,}/g, "/");
87612
87612
  var parts = path124.split("/"), absolute = isAbsolute13(path124), prefix = "";
87613
87613
  if (absolute)
@@ -87630,12 +87630,12 @@ var require_path = __commonJS({
87630
87630
  );
87631
87631
  path123.resolve = /* @__PURE__ */ __name(function resolve30(originPath, includePath, alreadyNormalized) {
87632
87632
  if (!alreadyNormalized)
87633
- includePath = normalize11(includePath);
87633
+ includePath = normalize12(includePath);
87634
87634
  if (isAbsolute13(includePath))
87635
87635
  return includePath;
87636
87636
  if (!alreadyNormalized)
87637
- originPath = normalize11(originPath);
87638
- return (originPath = originPath.replace(/(?:\/|^)[^/]+$/, "")).length ? normalize11(originPath + "/" + includePath) : includePath;
87637
+ originPath = normalize12(originPath);
87638
+ return (originPath = originPath.replace(/(?:\/|^)[^/]+$/, "")).length ? normalize12(originPath + "/" + includePath) : includePath;
87639
87639
  }, "resolve");
87640
87640
  }
87641
87641
  });
@@ -124436,7 +124436,7 @@ var require_require_in_the_middle = __commonJS({
124436
124436
  return _resolve(moduleName2, basedir);
124437
124437
  }
124438
124438
  __name(resolve30, "resolve");
124439
- var normalize11 = /([/\\]index)?(\.js)?$/;
124439
+ var normalize12 = /([/\\]index)?(\.js)?$/;
124440
124440
  var ExportsCache = class {
124441
124441
  static {
124442
124442
  __name(this, "ExportsCache");
@@ -124638,7 +124638,7 @@ var require_require_in_the_middle = __commonJS({
124638
124638
  };
124639
124639
  function resolveModuleName(stat10) {
124640
124640
  const normalizedPath = path123.sep !== "/" ? stat10.path.split(path123.sep).join("/") : stat10.path;
124641
- return path123.posix.join(stat10.name, normalizedPath).replace(normalize11, "");
124641
+ return path123.posix.join(stat10.name, normalizedPath).replace(normalize12, "");
124642
124642
  }
124643
124643
  __name(resolveModuleName, "resolveModuleName");
124644
124644
  }
@@ -133399,57 +133399,16 @@ var init_modelsConfig = __esm({
133399
133399
  detail: "baseUrl"
133400
133400
  };
133401
133401
  const gc = model.generationConfig;
133402
- this._generationConfig.samplingParams = { ...gc.samplingParams || {} };
133403
- this.generationConfigSources["samplingParams"] = {
133404
- kind: "modelProviders",
133405
- authType: model.authType,
133406
- modelId: model.id,
133407
- detail: "generationConfig.samplingParams"
133408
- };
133409
- this._generationConfig.timeout = gc.timeout;
133410
- this.generationConfigSources["timeout"] = {
133411
- kind: "modelProviders",
133412
- authType: model.authType,
133413
- modelId: model.id,
133414
- detail: "generationConfig.timeout"
133415
- };
133416
- this._generationConfig.maxRetries = gc.maxRetries;
133417
- this.generationConfigSources["maxRetries"] = {
133418
- kind: "modelProviders",
133419
- authType: model.authType,
133420
- modelId: model.id,
133421
- detail: "generationConfig.maxRetries"
133422
- };
133423
- this._generationConfig.enableCacheControl = gc.enableCacheControl;
133424
- this.generationConfigSources["enableCacheControl"] = {
133425
- kind: "modelProviders",
133426
- authType: model.authType,
133427
- modelId: model.id,
133428
- detail: "generationConfig.enableCacheControl"
133429
- };
133430
- this._generationConfig.schemaCompliance = gc.schemaCompliance;
133431
- this.generationConfigSources["schemaCompliance"] = {
133432
- kind: "modelProviders",
133433
- authType: model.authType,
133434
- modelId: model.id,
133435
- detail: "generationConfig.schemaCompliance"
133436
- };
133437
- this._generationConfig.reasoning = gc.reasoning;
133438
- this.generationConfigSources["reasoning"] = {
133439
- kind: "modelProviders",
133440
- authType: model.authType,
133441
- modelId: model.id,
133442
- detail: "generationConfig.reasoning"
133443
- };
133444
- if (gc.contextWindowSize !== void 0) {
133445
- this._generationConfig.contextWindowSize = gc.contextWindowSize;
133446
- this.generationConfigSources["contextWindowSize"] = {
133402
+ for (const field of MODEL_GENERATION_CONFIG_FIELDS) {
133403
+ this._generationConfig[field] = gc[field];
133404
+ this.generationConfigSources[field] = {
133447
133405
  kind: "modelProviders",
133448
133406
  authType: model.authType,
133449
133407
  modelId: model.id,
133450
- detail: "generationConfig.contextWindowSize"
133408
+ detail: `generationConfig.${field}`
133451
133409
  };
133452
- } else {
133410
+ }
133411
+ if (gc.contextWindowSize === void 0) {
133453
133412
  this._generationConfig.contextWindowSize = tokenLimit(model.id, "input");
133454
133413
  this.generationConfigSources["contextWindowSize"] = {
133455
133414
  kind: "computed",
@@ -145073,12 +145032,12 @@ var require_tr46 = __commonJS({
145073
145032
  TRANSITIONAL: 0,
145074
145033
  NONTRANSITIONAL: 1
145075
145034
  };
145076
- function normalize11(str2) {
145035
+ function normalize12(str2) {
145077
145036
  return str2.split("\0").map(function(s5) {
145078
145037
  return s5.normalize("NFC");
145079
145038
  }).join("\0");
145080
145039
  }
145081
- __name(normalize11, "normalize");
145040
+ __name(normalize12, "normalize");
145082
145041
  function findStatus(val) {
145083
145042
  var start = 0;
145084
145043
  var end = mappingTable.length - 1;
@@ -145157,7 +145116,7 @@ var require_tr46 = __commonJS({
145157
145116
  processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;
145158
145117
  }
145159
145118
  var error2 = false;
145160
- if (normalize11(label) !== label || label[3] === "-" && label[4] === "-" || label[0] === "-" || label[label.length - 1] === "-" || label.indexOf(".") !== -1 || label.search(combiningMarksRegex) === 0) {
145119
+ if (normalize12(label) !== label || label[3] === "-" && label[4] === "-" || label[0] === "-" || label[label.length - 1] === "-" || label.indexOf(".") !== -1 || label.search(combiningMarksRegex) === 0) {
145161
145120
  error2 = true;
145162
145121
  }
145163
145122
  var len = countSymbols(label);
@@ -145176,7 +145135,7 @@ var require_tr46 = __commonJS({
145176
145135
  __name(validateLabel, "validateLabel");
145177
145136
  function processing(domain_name, useSTD3, processing_option) {
145178
145137
  var result = mapChars(domain_name, useSTD3, processing_option);
145179
- result.string = normalize11(result.string);
145138
+ result.string = normalize12(result.string);
145180
145139
  var labels = result.string.split(".");
145181
145140
  for (var i3 = 0; i3 < labels.length; ++i3) {
145182
145141
  try {
@@ -156353,7 +156312,7 @@ __export(geminiContentGenerator_exports, {
156353
156312
  createGeminiContentGenerator: () => createGeminiContentGenerator
156354
156313
  });
156355
156314
  function createGeminiContentGenerator(config2, gcConfig) {
156356
- const version2 = "0.10.0-preview.1";
156315
+ const version2 = "0.10.0-preview.2";
156357
156316
  const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
156358
156317
  const baseHeaders = {
156359
156318
  "User-Agent": userAgent2
@@ -172357,8 +172316,8 @@ function checkCommandPermissions(command2, config2, sessionAllowlist) {
172357
172316
  isHardDenial: true
172358
172317
  };
172359
172318
  }
172360
- const normalize11 = /* @__PURE__ */ __name((cmd) => cmd.trim().replace(/\s+/g, " "), "normalize");
172361
- const commandsToValidate = splitCommands(command2).map(normalize11);
172319
+ const normalize12 = /* @__PURE__ */ __name((cmd) => cmd.trim().replace(/\s+/g, " "), "normalize");
172320
+ const commandsToValidate = splitCommands(command2).map(normalize12);
172362
172321
  const invocation = {
172363
172322
  params: { command: "" }
172364
172323
  };
@@ -172993,8 +172952,19 @@ function convertToFunctionResponse(toolName, callId, llmContent) {
172993
172952
  return [createFunctionResponsePart(callId, toolName, contentToProcess)];
172994
172953
  }
172995
172954
  if (Array.isArray(contentToProcess)) {
172996
- const functionResponse = createFunctionResponsePart(callId, toolName, "Tool execution succeeded.");
172997
- return [functionResponse, ...toParts(contentToProcess)];
172955
+ const textParts = [];
172956
+ const mediaParts = [];
172957
+ for (const part of toParts(contentToProcess)) {
172958
+ if (part.text !== void 0) {
172959
+ textParts.push(part.text);
172960
+ } else if (part.inlineData) {
172961
+ mediaParts.push({ inlineData: part.inlineData });
172962
+ } else if (part.fileData) {
172963
+ mediaParts.push({ fileData: part.fileData });
172964
+ }
172965
+ }
172966
+ const output = textParts.length > 0 ? textParts.join("\n") : "Tool execution succeeded.";
172967
+ return [createFunctionResponsePart(callId, toolName, output, mediaParts)];
172998
172968
  }
172999
172969
  if (contentToProcess.functionResponse) {
173000
172970
  if (contentToProcess.functionResponse.response?.["content"]) {
@@ -208647,8 +208617,8 @@ var init_constants6 = __esm({
208647
208617
  "packages/core/dist/src/mcp/constants.js"() {
208648
208618
  "use strict";
208649
208619
  init_esbuild_shims();
208650
- MCP_OAUTH_CLIENT_NAME = "Gemini CLI MCP Client";
208651
- MCP_SA_IMPERSONATION_CLIENT_NAME = "Gemini CLI (Service Account Impersonation)";
208620
+ MCP_OAUTH_CLIENT_NAME = "Qwen Code MCP Client";
208621
+ MCP_SA_IMPERSONATION_CLIENT_NAME = "Qwen Code (Service Account Impersonation)";
208652
208622
  OAUTH_REDIRECT_PORT = 7777;
208653
208623
  OAUTH_REDIRECT_PATH = "/oauth/callback";
208654
208624
  }
@@ -209482,7 +209452,7 @@ var init_hybrid_token_storage = __esm({
209482
209452
  init_base_token_storage();
209483
209453
  init_file_token_storage();
209484
209454
  init_types9();
209485
- FORCE_FILE_STORAGE_ENV_VAR = "GEMINI_FORCE_FILE_STORAGE";
209455
+ FORCE_FILE_STORAGE_ENV_VAR = "QWEN_CODE_FORCE_FILE_STORAGE";
209486
209456
  HybridTokenStorage = class extends BaseTokenStorage {
209487
209457
  static {
209488
209458
  __name(this, "HybridTokenStorage");
@@ -209955,12 +209925,22 @@ var init_oauth_utils = __esm({
209955
209925
  /**
209956
209926
  * Build a resource parameter for OAuth requests.
209957
209927
  *
209958
- * @param endpointUrl The endpoint URL
209959
- * @returns The resource parameter value
209928
+ * Per MCP spec and RFC 8707, the resource parameter MUST be the
209929
+ * canonical URI of the MCP server. Clients SHOULD provide the most
209930
+ * specific URI they can. The URI MUST NOT include a fragment and
209931
+ * SHOULD NOT include a query component.
209932
+ *
209933
+ * @param endpointUrl The MCP server endpoint URL
209934
+ * @returns The canonical resource URI
209960
209935
  */
209961
209936
  static buildResourceParameter(endpointUrl) {
209962
209937
  const url2 = new URL(endpointUrl);
209963
- return `${url2.protocol}//${url2.host}`;
209938
+ const path123 = url2.pathname === "/" ? "" : url2.pathname;
209939
+ let canonical = `${url2.protocol}//${url2.host}${path123}`;
209940
+ if (canonical.endsWith("/") && path123 !== "") {
209941
+ canonical = canonical.slice(0, -1);
209942
+ }
209943
+ return canonical;
209964
209944
  }
209965
209945
  };
209966
209946
  }
@@ -210096,7 +210076,7 @@ var init_oauth_provider = __esm({
210096
210076
  <html>
210097
210077
  <body>
210098
210078
  <h1>Authentication Successful!</h1>
210099
- <p>You can close this window and return to Gemini CLI.</p>
210079
+ <p>You can close this window and return to Qwen Code.</p>
210100
210080
  <script>window.close();</script>
210101
210081
  </body>
210102
210082
  </html>
@@ -246219,7 +246199,7 @@ function asciiFuzzyIndex(input, pattern, caseSensitive) {
246219
246199
  }
246220
246200
  return firstIdx;
246221
246201
  }
246222
- function calculateScore(caseSensitive, normalize11, text, pattern, sidx, eidx, withPos) {
246202
+ function calculateScore(caseSensitive, normalize12, text, pattern, sidx, eidx, withPos) {
246223
246203
  let pidx = 0, score = 0, inGap = false, consecutive = 0, firstBonus = toShort(0);
246224
246204
  const pos2 = createPosSet(withPos);
246225
246205
  let prevCharClass = 0;
@@ -246236,7 +246216,7 @@ function calculateScore(caseSensitive, normalize11, text, pattern, sidx, eidx, w
246236
246216
  rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
246237
246217
  }
246238
246218
  }
246239
- if (normalize11) {
246219
+ if (normalize12) {
246240
246220
  rune = normalizeRune(rune);
246241
246221
  }
246242
246222
  if (rune === pattern[pidx]) {
@@ -246646,14 +246626,14 @@ var init_fzf_es = __esm({
246646
246626
  __name(trySkip, "trySkip");
246647
246627
  __name(isAscii, "isAscii");
246648
246628
  __name(asciiFuzzyIndex, "asciiFuzzyIndex");
246649
- fuzzyMatchV2 = /* @__PURE__ */ __name((caseSensitive, normalize11, forward, input, pattern, withPos, slab2) => {
246629
+ fuzzyMatchV2 = /* @__PURE__ */ __name((caseSensitive, normalize12, forward, input, pattern, withPos, slab2) => {
246650
246630
  const M2 = pattern.length;
246651
246631
  if (M2 === 0) {
246652
246632
  return [{ start: 0, end: 0, score: 0 }, createPosSet(withPos)];
246653
246633
  }
246654
246634
  const N2 = input.length;
246655
246635
  if (slab2 !== null && N2 * M2 > slab2.i16.length) {
246656
- return fuzzyMatchV1(caseSensitive, normalize11, forward, input, pattern, withPos);
246636
+ return fuzzyMatchV1(caseSensitive, normalize12, forward, input, pattern, withPos);
246657
246637
  }
246658
246638
  const idx = asciiFuzzyIndex(input, pattern, caseSensitive);
246659
246639
  if (idx < 0) {
@@ -246686,7 +246666,7 @@ var init_fzf_es = __esm({
246686
246666
  if (!caseSensitive && charClass === 2) {
246687
246667
  char = String.fromCodePoint(char).toLowerCase().codePointAt(0);
246688
246668
  }
246689
- if (normalize11) {
246669
+ if (normalize12) {
246690
246670
  char = normalizeRune(char);
246691
246671
  }
246692
246672
  }
@@ -246827,7 +246807,7 @@ var init_fzf_es = __esm({
246827
246807
  return [{ start: j2, end: maxScorePos + 1, score: maxScore }, pos2];
246828
246808
  }, "fuzzyMatchV2");
246829
246809
  __name(calculateScore, "calculateScore");
246830
- fuzzyMatchV1 = /* @__PURE__ */ __name((caseSensitive, normalize11, forward, text, pattern, withPos, slab2) => {
246810
+ fuzzyMatchV1 = /* @__PURE__ */ __name((caseSensitive, normalize12, forward, text, pattern, withPos, slab2) => {
246831
246811
  if (pattern.length === 0) {
246832
246812
  return [{ start: 0, end: 0, score: 0 }, null];
246833
246813
  }
@@ -246846,7 +246826,7 @@ var init_fzf_es = __esm({
246846
246826
  rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
246847
246827
  }
246848
246828
  }
246849
- if (normalize11) {
246829
+ if (normalize12) {
246850
246830
  rune = normalizeRune(rune);
246851
246831
  }
246852
246832
  const pchar = pattern[indexAt(pidx, lenPattern, forward)];
@@ -246890,7 +246870,7 @@ var init_fzf_es = __esm({
246890
246870
  }
246891
246871
  const [score, pos2] = calculateScore(
246892
246872
  caseSensitive,
246893
- normalize11,
246873
+ normalize12,
246894
246874
  text,
246895
246875
  pattern,
246896
246876
  sidx,
@@ -246901,7 +246881,7 @@ var init_fzf_es = __esm({
246901
246881
  }
246902
246882
  return [{ start: -1, end: -1, score: 0 }, null];
246903
246883
  }, "fuzzyMatchV1");
246904
- exactMatchNaive = /* @__PURE__ */ __name((caseSensitive, normalize11, forward, text, pattern, withPos, slab2) => {
246884
+ exactMatchNaive = /* @__PURE__ */ __name((caseSensitive, normalize12, forward, text, pattern, withPos, slab2) => {
246905
246885
  if (pattern.length === 0) {
246906
246886
  return [{ start: 0, end: 0, score: 0 }, null];
246907
246887
  }
@@ -246925,7 +246905,7 @@ var init_fzf_es = __esm({
246925
246905
  rune = String.fromCodePoint(rune).toLowerCase().codePointAt(0);
246926
246906
  }
246927
246907
  }
246928
- if (normalize11) {
246908
+ if (normalize12) {
246929
246909
  rune = normalizeRune(rune);
246930
246910
  }
246931
246911
  const pidx_ = indexAt(pidx, lenPattern, forward);
@@ -246962,7 +246942,7 @@ var init_fzf_es = __esm({
246962
246942
  sidx = lenRunes - (bestPos + 1);
246963
246943
  eidx = lenRunes - (bestPos - lenPattern + 1);
246964
246944
  }
246965
- const [score] = calculateScore(caseSensitive, normalize11, text, pattern, sidx, eidx, false);
246945
+ const [score] = calculateScore(caseSensitive, normalize12, text, pattern, sidx, eidx, false);
246966
246946
  return [{ start: sidx, end: eidx, score }, null];
246967
246947
  }
246968
246948
  return [{ start: -1, end: -1, score: 0 }, null];
@@ -246971,7 +246951,7 @@ var init_fzf_es = __esm({
246971
246951
  SLAB_32_SIZE = 2048;
246972
246952
  __name(makeSlab, "makeSlab");
246973
246953
  slab = makeSlab(SLAB_16_SIZE, SLAB_32_SIZE);
246974
- buildPatternForBasicMatch = /* @__PURE__ */ __name((query, casing, normalize11) => {
246954
+ buildPatternForBasicMatch = /* @__PURE__ */ __name((query, casing, normalize12) => {
246975
246955
  let caseSensitive = false;
246976
246956
  switch (casing) {
246977
246957
  case "smart-case":
@@ -246988,7 +246968,7 @@ var init_fzf_es = __esm({
246988
246968
  break;
246989
246969
  }
246990
246970
  let queryRunes = strToRunes(query);
246991
- if (normalize11) {
246971
+ if (normalize12) {
246992
246972
  queryRunes = queryRunes.map(normalizeRune);
246993
246973
  }
246994
246974
  return {
@@ -297005,8 +296985,6 @@ var init_de = __esm({
297005
296985
  // MCP Status
297006
296986
  // ============================================================================
297007
296987
  "No MCP servers configured.": "Keine MCP-Server konfiguriert.",
297008
- "Please view MCP documentation in your browser:": "Bitte sehen Sie die MCP-Dokumentation in Ihrem Browser:",
297009
- "or use the cli /docs command": "oder verwenden Sie den CLI-Befehl /docs",
297010
296988
  "\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 MCP-Server werden gestartet ({{count}} werden initialisiert)...",
297011
296989
  "Note: First startup may take longer. Tool availability will update automatically.": "Hinweis: Der erste Start kann l\xE4nger dauern. Werkzeugverf\xFCgbarkeit wird automatisch aktualisiert.",
297012
296990
  "Configured MCP servers:": "Konfigurierte MCP-Server:",
@@ -298042,8 +298020,6 @@ var init_en3 = __esm({
298042
298020
  // MCP Status
298043
298021
  // ============================================================================
298044
298022
  "No MCP servers configured.": "No MCP servers configured.",
298045
- "Please view MCP documentation in your browser:": "Please view MCP documentation in your browser:",
298046
- "or use the cli /docs command": "or use the cli /docs command",
298047
298023
  "\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 MCP servers are starting up ({{count}} initializing)...",
298048
298024
  "Note: First startup may take longer. Tool availability will update automatically.": "Note: First startup may take longer. Tool availability will update automatically.",
298049
298025
  "Configured MCP servers:": "Configured MCP servers:",
@@ -298877,8 +298853,6 @@ var init_ja = __esm({
298877
298853
  "Press Ctrl+D again to exit.": "Ctrl+D \u3092\u3082\u3046\u4E00\u5EA6\u62BC\u3059\u3068\u7D42\u4E86\u3057\u307E\u3059",
298878
298854
  "Press Esc again to clear.": "Esc \u3092\u3082\u3046\u4E00\u5EA6\u62BC\u3059\u3068\u30AF\u30EA\u30A2\u3057\u307E\u3059",
298879
298855
  // MCP Status
298880
- "Please view MCP documentation in your browser:": "\u30D6\u30E9\u30A6\u30B6\u3067MCP\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044:",
298881
- "or use the cli /docs command": "\u307E\u305F\u306F CLI \u306E /docs \u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528",
298882
298856
  "\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 MCP\u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5\u4E2D({{count}} \u521D\u671F\u5316\u4E2D)...",
298883
298857
  "Note: First startup may take longer. Tool availability will update automatically.": "\u6CE8: \u521D\u56DE\u8D77\u52D5\u306B\u306F\u6642\u9593\u304C\u304B\u304B\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u30C4\u30FC\u30EB\u306E\u5229\u7528\u53EF\u80FD\u72B6\u6CC1\u306F\u81EA\u52D5\u7684\u306B\u66F4\u65B0\u3055\u308C\u307E\u3059",
298884
298858
  "Starting... (first startup may take longer)": "\u8D77\u52D5\u4E2D...(\u521D\u56DE\u8D77\u52D5\u306B\u306F\u6642\u9593\u304C\u304B\u304B\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059)",
@@ -299760,8 +299734,6 @@ var init_pt = __esm({
299760
299734
  // MCP Status
299761
299735
  // ============================================================================
299762
299736
  "No MCP servers configured.": "Nenhum servidor MCP configurado.",
299763
- "Please view MCP documentation in your browser:": "Veja a documenta\xE7\xE3o do MCP no seu navegador:",
299764
- "or use the cli /docs command": "ou use o comando cli /docs",
299765
299737
  "\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 Servidores MCP est\xE3o iniciando ({{count}} inicializando)...",
299766
299738
  "Note: First startup may take longer. Tool availability will update automatically.": "Nota: A primeira inicializa\xE7\xE3o pode demorar mais. A disponibilidade da ferramenta ser\xE1 atualizada automaticamente.",
299767
299739
  "Configured MCP servers:": "Servidores MCP configurados:",
@@ -300796,8 +300768,6 @@ var init_ru = __esm({
300796
300768
  // Статус MCP
300797
300769
  // ============================================================================
300798
300770
  "No MCP servers configured.": "\u041D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043E MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u043E\u0432.",
300799
- "Please view MCP documentation in your browser:": "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0438\u0442\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044E MCP \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435:",
300800
- "or use the cli /docs command": "\u0438\u043B\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u043A\u043E\u043C\u0430\u043D\u0434\u0443 cli /docs",
300801
300771
  "\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044B \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u044E\u0442\u0441\u044F ({{count}} \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044F)...",
300802
300772
  "Note: First startup may take longer. Tool availability will update automatically.": "\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435: \u041F\u0435\u0440\u0432\u044B\u0439 \u0437\u0430\u043F\u0443\u0441\u043A \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u043D\u044F\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u0438. \u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u0441\u044F \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438.",
300803
300773
  "Configured MCP servers:": "\u041D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044B:",
@@ -301834,8 +301804,6 @@ var init_zh = __esm({
301834
301804
  // MCP Status
301835
301805
  // ============================================================================
301836
301806
  "No MCP servers configured.": "\u672A\u914D\u7F6E MCP \u670D\u52A1\u5668",
301837
- "Please view MCP documentation in your browser:": "\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u67E5\u770B MCP \u6587\u6863\uFF1A",
301838
- "or use the cli /docs command": "\u6216\u4F7F\u7528 cli /docs \u547D\u4EE4",
301839
301807
  "\u23F3 MCP servers are starting up ({{count}} initializing)...": "\u23F3 MCP \u670D\u52A1\u5668\u6B63\u5728\u542F\u52A8\uFF08{{count}} \u4E2A\u6B63\u5728\u521D\u59CB\u5316\uFF09...",
301840
301808
  "Note: First startup may take longer. Tool availability will update automatically.": "\u6CE8\u610F\uFF1A\u9996\u6B21\u542F\u52A8\u53EF\u80FD\u9700\u8981\u66F4\u957F\u65F6\u95F4\u3002\u5DE5\u5177\u53EF\u7528\u6027\u5C06\u81EA\u52A8\u66F4\u65B0",
301841
301809
  "Configured MCP servers:": "\u5DF2\u914D\u7F6E\u7684 MCP \u670D\u52A1\u5668\uFF1A",
@@ -308459,9 +308427,9 @@ var require_make_warning = __commonJS({
308459
308427
  var require_normalize2 = __commonJS({
308460
308428
  "node_modules/normalize-package-data/lib/normalize.js"(exports2, module2) {
308461
308429
  init_esbuild_shims();
308462
- module2.exports = normalize11;
308430
+ module2.exports = normalize12;
308463
308431
  var fixer = require_fixer();
308464
- normalize11.fixer = fixer;
308432
+ normalize12.fixer = fixer;
308465
308433
  var makeWarning = require_make_warning();
308466
308434
  var fieldsToFix = [
308467
308435
  "name",
@@ -308484,7 +308452,7 @@ var require_normalize2 = __commonJS({
308484
308452
  return ucFirst(fieldName) + "Field";
308485
308453
  });
308486
308454
  thingsToFix = thingsToFix.concat(otherThingsToFix);
308487
- function normalize11(data, warn, strict) {
308455
+ function normalize12(data, warn, strict) {
308488
308456
  if (warn === true) {
308489
308457
  warn = null;
308490
308458
  strict = true;
@@ -308507,7 +308475,7 @@ var require_normalize2 = __commonJS({
308507
308475
  });
308508
308476
  data._id = data.name + "@" + data.version;
308509
308477
  }
308510
- __name(normalize11, "normalize");
308478
+ __name(normalize12, "normalize");
308511
308479
  function ucFirst(string4) {
308512
308480
  return string4.charAt(0).toUpperCase() + string4.slice(1);
308513
308481
  }
@@ -311054,8 +311022,8 @@ var require_resolve4 = __commonJS({
311054
311022
  return count;
311055
311023
  }
311056
311024
  __name(countKeys, "countKeys");
311057
- function getFullPath(resolver, id = "", normalize11) {
311058
- if (normalize11 !== false)
311025
+ function getFullPath(resolver, id = "", normalize12) {
311026
+ if (normalize12 !== false)
311059
311027
  id = normalizeId(id);
311060
311028
  const p2 = resolver.parse(id);
311061
311029
  return _getFullPath(resolver, p2);
@@ -353991,13 +353959,13 @@ var require_envKeyToSetting = __commonJS({
353991
353959
  module2.exports = function(x3) {
353992
353960
  const colonIndex = x3.indexOf(":");
353993
353961
  if (colonIndex === -1) {
353994
- return normalize11(x3);
353962
+ return normalize12(x3);
353995
353963
  }
353996
353964
  const firstPart = x3.substr(0, colonIndex);
353997
353965
  const secondPart = x3.substr(colonIndex + 1);
353998
- return `${normalize11(firstPart)}:${normalize11(secondPart)}`;
353966
+ return `${normalize12(firstPart)}:${normalize12(secondPart)}`;
353999
353967
  };
354000
- function normalize11(s5) {
353968
+ function normalize12(s5) {
354001
353969
  s5 = s5.toLowerCase();
354002
353970
  if (s5 === "_authtoken") return "_authToken";
354003
353971
  let r5 = s5[0];
@@ -354006,7 +353974,7 @@ var require_envKeyToSetting = __commonJS({
354006
353974
  }
354007
353975
  return r5;
354008
353976
  }
354009
- __name(normalize11, "normalize");
353977
+ __name(normalize12, "normalize");
354010
353978
  }
354011
353979
  });
354012
353980
 
@@ -364275,6 +364243,17 @@ var SETTINGS_SCHEMA = {
364275
364243
  showInDialog: false,
364276
364244
  mergeStrategy: "replace" /* REPLACE */
364277
364245
  },
364246
+ // Environment variables fallback
364247
+ env: {
364248
+ type: "object",
364249
+ label: "Environment Variables",
364250
+ category: "Advanced",
364251
+ requiresRestart: true,
364252
+ default: {},
364253
+ description: "Environment variables to set as fallback defaults. These are loaded with the lowest priority: system environment variables > .env files > settings.env.",
364254
+ showInDialog: false,
364255
+ mergeStrategy: "shallow_merge" /* SHALLOW_MERGE */
364256
+ },
364278
364257
  general: {
364279
364258
  type: "object",
364280
364259
  label: "General",
@@ -365985,24 +365964,31 @@ function createMinimalSettings() {
365985
365964
  );
365986
365965
  }
365987
365966
  __name(createMinimalSettings, "createMinimalSettings");
365988
- function findEnvFile(startDir) {
365967
+ function findEnvFile(settings, startDir) {
365968
+ const homeDir = homedir15();
365969
+ const isTrusted = isWorkspaceTrusted(settings).isTrusted;
365970
+ const userLevelPaths = /* @__PURE__ */ new Set([
365971
+ path81.normalize(path81.join(homeDir, ".env")),
365972
+ path81.normalize(path81.join(homeDir, QWEN_DIR4, ".env"))
365973
+ ]);
365974
+ const canUseEnvFile = /* @__PURE__ */ __name((filePath) => isTrusted !== false || userLevelPaths.has(path81.normalize(filePath)), "canUseEnvFile");
365989
365975
  let currentDir = path81.resolve(startDir);
365990
365976
  while (true) {
365991
365977
  const geminiEnvPath = path81.join(currentDir, QWEN_DIR4, ".env");
365992
- if (fs79.existsSync(geminiEnvPath)) {
365978
+ if (fs79.existsSync(geminiEnvPath) && canUseEnvFile(geminiEnvPath)) {
365993
365979
  return geminiEnvPath;
365994
365980
  }
365995
365981
  const envPath = path81.join(currentDir, ".env");
365996
- if (fs79.existsSync(envPath)) {
365982
+ if (fs79.existsSync(envPath) && canUseEnvFile(envPath)) {
365997
365983
  return envPath;
365998
365984
  }
365999
365985
  const parentDir = path81.dirname(currentDir);
366000
365986
  if (parentDir === currentDir || !parentDir) {
366001
- const homeGeminiEnvPath = path81.join(homedir15(), QWEN_DIR4, ".env");
365987
+ const homeGeminiEnvPath = path81.join(homeDir, QWEN_DIR4, ".env");
366002
365988
  if (fs79.existsSync(homeGeminiEnvPath)) {
366003
365989
  return homeGeminiEnvPath;
366004
365990
  }
366005
- const homeEnvPath = path81.join(homedir15(), ".env");
365991
+ const homeEnvPath = path81.join(homeDir, ".env");
366006
365992
  if (fs79.existsSync(homeEnvPath)) {
366007
365993
  return homeEnvPath;
366008
365994
  }
@@ -366027,10 +366013,7 @@ function setUpCloudShellEnvironment(envFilePath) {
366027
366013
  }
366028
366014
  __name(setUpCloudShellEnvironment, "setUpCloudShellEnvironment");
366029
366015
  function loadEnvironment(settings) {
366030
- const envFilePath = findEnvFile(process27.cwd());
366031
- if (!isWorkspaceTrusted(settings).isTrusted) {
366032
- return;
366033
- }
366016
+ const envFilePath = findEnvFile(settings, process27.cwd());
366034
366017
  if (process27.env["CLOUD_SHELL"] === "true") {
366035
366018
  setUpCloudShellEnvironment(envFilePath);
366036
366019
  }
@@ -366053,6 +366036,13 @@ function loadEnvironment(settings) {
366053
366036
  } catch (_e2) {
366054
366037
  }
366055
366038
  }
366039
+ if (settings.env) {
366040
+ for (const [key, value] of Object.entries(settings.env)) {
366041
+ if (!Object.hasOwn(process27.env, key) && typeof value === "string") {
366042
+ process27.env[key] = value;
366043
+ }
366044
+ }
366045
+ }
366056
366046
  }
366057
366047
  __name(loadEnvironment, "loadEnvironment");
366058
366048
  function loadSettings(workspaceDir = process27.cwd()) {
@@ -367652,7 +367642,7 @@ import { fileURLToPath as fileURLToPath9 } from "url";
367652
367642
  // node_modules/yargs-parser/build/lib/index.js
367653
367643
  init_esbuild_shims();
367654
367644
  import { format } from "util";
367655
- import { normalize as normalize8, resolve as resolve24 } from "path";
367645
+ import { normalize as normalize9, resolve as resolve24 } from "path";
367656
367646
 
367657
367647
  // node_modules/yargs-parser/build/lib/string-utils.js
367658
367648
  init_esbuild_shims();
@@ -368654,7 +368644,7 @@ var parser5 = new YargsParser({
368654
368644
  return env4;
368655
368645
  }, "env"),
368656
368646
  format,
368657
- normalize: normalize8,
368647
+ normalize: normalize9,
368658
368648
  resolve: resolve24,
368659
368649
  // TODO: figure out a way to combine ESM and CJS coverage, such that
368660
368650
  // we can exercise all the lines below:
@@ -372984,16 +372974,16 @@ __name(toPath2, "toPath");
372984
372974
 
372985
372975
  // node_modules/read-pkg/index.js
372986
372976
  var getPackagePath = /* @__PURE__ */ __name((cwd7) => path85.resolve(toPath2(cwd7) ?? ".", "package.json"), "getPackagePath");
372987
- var _readPackage = /* @__PURE__ */ __name((file, normalize11) => {
372977
+ var _readPackage = /* @__PURE__ */ __name((file, normalize12) => {
372988
372978
  const json2 = typeof file === "string" ? parseJson(file) : file;
372989
- if (normalize11) {
372979
+ if (normalize12) {
372990
372980
  (0, import_normalize_package_data.default)(json2);
372991
372981
  }
372992
372982
  return json2;
372993
372983
  }, "_readPackage");
372994
- async function readPackage({ cwd: cwd7, normalize: normalize11 = true } = {}) {
372984
+ async function readPackage({ cwd: cwd7, normalize: normalize12 = true } = {}) {
372995
372985
  const packageFile = await fsPromises4.readFile(getPackagePath(cwd7), "utf8");
372996
- return _readPackage(packageFile, normalize11);
372986
+ return _readPackage(packageFile, normalize12);
372997
372987
  }
372998
372988
  __name(readPackage, "readPackage");
372999
372989
 
@@ -373032,7 +373022,7 @@ __name(getPackageJson, "getPackageJson");
373032
373022
  // packages/cli/src/utils/version.ts
373033
373023
  async function getCliVersion() {
373034
373024
  const pkgJson = await getPackageJson();
373035
- return "0.10.0-preview.1";
373025
+ return "0.10.0-preview.2";
373036
373026
  }
373037
373027
  __name(getCliVersion, "getCliVersion");
373038
373028
 
@@ -373227,13 +373217,12 @@ var addCommand = {
373227
373217
  alias: "s",
373228
373218
  describe: "Configuration scope (user or project)",
373229
373219
  type: "string",
373230
- default: "project",
373220
+ default: "user",
373231
373221
  choices: ["user", "project"]
373232
373222
  }).option("transport", {
373233
373223
  alias: "t",
373234
- describe: "Transport type (stdio, sse, http)",
373224
+ describe: "Transport type (stdio, sse, http). Auto-detected from URL if not specified.",
373235
373225
  type: "string",
373236
- default: "stdio",
373237
373226
  choices: ["stdio", "sse", "http"]
373238
373227
  }).option("env", {
373239
373228
  alias: "e",
@@ -373267,6 +373256,14 @@ var addCommand = {
373267
373256
  const existingArgs = argv["args"] || [];
373268
373257
  argv["args"] = [...existingArgs, ...argv["--"]];
373269
373258
  }
373259
+ if (!argv["transport"]) {
373260
+ const commandOrUrl = argv["commandOrUrl"];
373261
+ if (commandOrUrl && (commandOrUrl.startsWith("http://") || commandOrUrl.startsWith("https://"))) {
373262
+ argv["transport"] = "http";
373263
+ } else {
373264
+ argv["transport"] = "stdio";
373265
+ }
373266
+ }
373270
373267
  }), "builder"),
373271
373268
  handler: /* @__PURE__ */ __name(async (argv) => {
373272
373269
  await addMcpServer(
@@ -373302,13 +373299,18 @@ async function removeMcpServer(name3, options2) {
373302
373299
  }
373303
373300
  delete mcpServers[name3];
373304
373301
  settings.setValue(settingsScope, "mcpServers", mcpServers);
373302
+ try {
373303
+ const tokenStorage = new MCPOAuthTokenStorage();
373304
+ await tokenStorage.deleteCredentials(name3);
373305
+ } catch {
373306
+ }
373305
373307
  writeStdoutLine(`Server "${name3}" removed from ${scope} settings.`);
373306
373308
  }
373307
373309
  __name(removeMcpServer, "removeMcpServer");
373308
373310
  var removeCommand = {
373309
373311
  command: "remove <name>",
373310
373312
  describe: "Remove a server",
373311
- builder: /* @__PURE__ */ __name((yargs) => yargs.usage("Usage: gemini mcp remove [options] <name>").positional("name", {
373313
+ builder: /* @__PURE__ */ __name((yargs) => yargs.usage("Usage: qwen mcp remove [options] <name>").positional("name", {
373312
373314
  describe: "Name of the server",
373313
373315
  type: "string",
373314
373316
  demandOption: true
@@ -373316,7 +373318,7 @@ var removeCommand = {
373316
373318
  alias: "s",
373317
373319
  describe: "Configuration scope (user or project)",
373318
373320
  type: "string",
373319
- default: "project",
373321
+ default: "user",
373320
373322
  choices: ["user", "project"]
373321
373323
  }), "builder"),
373322
373324
  handler: /* @__PURE__ */ __name(async (argv) => {
@@ -377028,7 +377030,7 @@ function normalizeOutputFormat(format4) {
377028
377030
  __name(normalizeOutputFormat, "normalizeOutputFormat");
377029
377031
  async function parseArguments() {
377030
377032
  let rawArgv = hideBin(process.argv);
377031
- if (rawArgv.length > 0 && (rawArgv[0].endsWith("/dist/qwen-cli/cli.js") || rawArgv[0].endsWith("/dist/cli.js"))) {
377033
+ if (rawArgv.length > 0 && (rawArgv[0].endsWith("/dist/qwen-cli/cli.js") || rawArgv[0].endsWith("/dist/cli.js") || rawArgv[0].endsWith("/dist/cli/cli.js"))) {
377032
377034
  rawArgv = rawArgv.slice(1);
377033
377035
  }
377034
377036
  const yargsInstance = yargs_default(rawArgv).locale("en").scriptName("qwen").usage(
@@ -380543,7 +380545,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
380543
380545
 
380544
380546
  // packages/cli/src/generated/git-commit.ts
380545
380547
  init_esbuild_shims();
380546
- var GIT_COMMIT_INFO = "11d33e3a";
380548
+ var GIT_COMMIT_INFO = "18a7235d";
380547
380549
 
380548
380550
  // packages/cli/src/utils/systemInfo.ts
380549
380551
  async function getNpmVersion() {
@@ -414372,16 +414374,7 @@ var McpStatus = /* @__PURE__ */ __name(({
414372
414374
  }) => {
414373
414375
  const serverNames = Object.keys(servers);
414374
414376
  if (serverNames.length === 0 && blockedServers.length === 0) {
414375
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Box_default, { flexDirection: "column", children: [
414376
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text3, { children: t4("No MCP servers configured.") }),
414377
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Text3, { children: [
414378
- t4("Please view MCP documentation in your browser:"),
414379
- " ",
414380
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text3, { color: theme.text.link, children: "https://goo.gle/gemini-cli-docs-mcp" }),
414381
- " ",
414382
- t4("or use the cli /docs command")
414383
- ] })
414384
- ] });
414377
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Box_default, { flexDirection: "column", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text3, { children: t4("No MCP servers configured.") }) });
414385
414378
  }
414386
414379
  return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Box_default, { flexDirection: "column", children: [
414387
414380
  discoveryInProgress && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Box_default, { flexDirection: "column", marginBottom: 1, children: [
@@ -414916,8 +414909,8 @@ var Header2 = /* @__PURE__ */ __name(({
414916
414909
  availableInfoPanelWidth - infoPanelChromeWidth
414917
414910
  );
414918
414911
  const authModelText = `${formattedAuthType} | ${model}`;
414919
- const authHintText = " (/auth to change)";
414920
- const showAuthHint = infoPanelContentWidth > 0 && getCachedStringWidth(authModelText + authHintText) <= infoPanelContentWidth;
414912
+ const modelHintText = " (/model to change)";
414913
+ const showModelHint = infoPanelContentWidth > 0 && getCachedStringWidth(authModelText + modelHintText) <= infoPanelContentWidth;
414921
414914
  const tildeifiedPath = tildeifyPath(workingDirectory);
414922
414915
  const shortenedPath = shortenPath(tildeifiedPath, Math.max(3, maxPathLength));
414923
414916
  const displayPath = maxPathLength <= 0 ? "" : shortenedPath.length > maxPathLength ? shortenedPath.slice(0, maxPathLength) : shortenedPath;
@@ -414959,7 +414952,7 @@ var Header2 = /* @__PURE__ */ __name(({
414959
414952
  /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text3, { children: " " }),
414960
414953
  /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(Text3, { children: [
414961
414954
  /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text3, { color: theme.text.secondary, children: authModelText }),
414962
- showAuthHint && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text3, { color: theme.text.secondary, children: authHintText })
414955
+ showModelHint && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text3, { color: theme.text.secondary, children: modelHintText })
414963
414956
  ] }),
414964
414957
  /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text3, { color: theme.text.secondary, children: displayPath })
414965
414958
  ]
@@ -434820,7 +434813,7 @@ var GeminiAgent = class {
434820
434813
  name: APPROVAL_MODE_INFO[mode].name,
434821
434814
  description: APPROVAL_MODE_INFO[mode].description
434822
434815
  }));
434823
- const version2 = "0.10.0-preview.1";
434816
+ const version2 = "0.10.0-preview.2";
434824
434817
  return {
434825
434818
  protocolVersion: PROTOCOL_VERSION,
434826
434819
  agentInfo: {
package/locales/de.js CHANGED
@@ -1055,9 +1055,6 @@ export default {
1055
1055
  // MCP Status
1056
1056
  // ============================================================================
1057
1057
  'No MCP servers configured.': 'Keine MCP-Server konfiguriert.',
1058
- 'Please view MCP documentation in your browser:':
1059
- 'Bitte sehen Sie die MCP-Dokumentation in Ihrem Browser:',
1060
- 'or use the cli /docs command': 'oder verwenden Sie den CLI-Befehl /docs',
1061
1058
  '⏳ MCP servers are starting up ({{count}} initializing)...':
1062
1059
  '⏳ MCP-Server werden gestartet ({{count}} werden initialisiert)...',
1063
1060
  'Note: First startup may take longer. Tool availability will update automatically.':
package/locales/en.js CHANGED
@@ -1042,9 +1042,6 @@ export default {
1042
1042
  // MCP Status
1043
1043
  // ============================================================================
1044
1044
  'No MCP servers configured.': 'No MCP servers configured.',
1045
- 'Please view MCP documentation in your browser:':
1046
- 'Please view MCP documentation in your browser:',
1047
- 'or use the cli /docs command': 'or use the cli /docs command',
1048
1045
  '⏳ MCP servers are starting up ({{count}} initializing)...':
1049
1046
  '⏳ MCP servers are starting up ({{count}} initializing)...',
1050
1047
  'Note: First startup may take longer. Tool availability will update automatically.':
package/locales/ja.js CHANGED
@@ -746,9 +746,6 @@ export default {
746
746
  'Press Ctrl+D again to exit.': 'Ctrl+D をもう一度押すと終了します',
747
747
  'Press Esc again to clear.': 'Esc をもう一度押すとクリアします',
748
748
  // MCP Status
749
- 'Please view MCP documentation in your browser:':
750
- 'ブラウザでMCPドキュメントを確認してください:',
751
- 'or use the cli /docs command': 'または CLI の /docs コマンドを使用',
752
749
  '⏳ MCP servers are starting up ({{count}} initializing)...':
753
750
  '⏳ MCPサーバーを起動中({{count}} 初期化中)...',
754
751
  'Note: First startup may take longer. Tool availability will update automatically.':
package/locales/pt.js CHANGED
@@ -1065,9 +1065,6 @@ export default {
1065
1065
  // MCP Status
1066
1066
  // ============================================================================
1067
1067
  'No MCP servers configured.': 'Nenhum servidor MCP configurado.',
1068
- 'Please view MCP documentation in your browser:':
1069
- 'Veja a documentação do MCP no seu navegador:',
1070
- 'or use the cli /docs command': 'ou use o comando cli /docs',
1071
1068
  '⏳ MCP servers are starting up ({{count}} initializing)...':
1072
1069
  '⏳ Servidores MCP estão iniciando ({{count}} inicializando)...',
1073
1070
  'Note: First startup may take longer. Tool availability will update automatically.':
package/locales/ru.js CHANGED
@@ -1057,9 +1057,6 @@ export default {
1057
1057
  // Статус MCP
1058
1058
  // ============================================================================
1059
1059
  'No MCP servers configured.': 'Не настроено MCP-серверов.',
1060
- 'Please view MCP documentation in your browser:':
1061
- 'Пожалуйста, просмотрите документацию MCP в браузере:',
1062
- 'or use the cli /docs command': 'или используйте команду cli /docs',
1063
1060
  '⏳ MCP servers are starting up ({{count}} initializing)...':
1064
1061
  '⏳ MCP-серверы запускаются ({{count}} инициализируется)...',
1065
1062
  'Note: First startup may take longer. Tool availability will update automatically.':
package/locales/zh.js CHANGED
@@ -985,9 +985,6 @@ export default {
985
985
  // MCP Status
986
986
  // ============================================================================
987
987
  'No MCP servers configured.': '未配置 MCP 服务器',
988
- 'Please view MCP documentation in your browser:':
989
- '请在浏览器中查看 MCP 文档:',
990
- 'or use the cli /docs command': '或使用 cli /docs 命令',
991
988
  '⏳ MCP servers are starting up ({{count}} initializing)...':
992
989
  '⏳ MCP 服务器正在启动({{count}} 个正在初始化)...',
993
990
  'Note: First startup may take longer. Tool availability will update automatically.':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qwen-code/qwen-code",
3
- "version": "0.10.0-preview.1",
3
+ "version": "0.10.0-preview.2",
4
4
  "description": "Qwen Code - AI-powered coding assistant",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,7 +20,7 @@
20
20
  "locales"
21
21
  ],
22
22
  "config": {
23
- "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.10.0-preview.1"
23
+ "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.10.0-preview.2"
24
24
  },
25
25
  "dependencies": {},
26
26
  "optionalDependencies": {