@qwen-code/qwen-code 0.10.3 → 0.10.4-preview.0

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
@@ -18,6 +18,8 @@
18
18
 
19
19
  </div>
20
20
 
21
+ > 🎉 **News (2026-02-16)**: Qwen3.5-Plus is now live! Sign in via Qwen OAuth to use it directly, or get an API key from [Alibaba Cloud ModelStudio](https://modelstudio.console.alibabacloud.com?tab=doc#/doc/?type=model&url=2840914_2&modelId=group-qwen3.5-plus) to access it through the OpenAI-compatible API.
22
+
21
23
  Qwen Code is an open-source AI agent for the terminal, optimized for [Qwen3-Coder](https://github.com/QwenLM/Qwen3-Coder). It helps you understand large codebases, automate tedious work, and ship faster.
22
24
 
23
25
  ![](https://gw.alicdn.com/imgextra/i1/O1CN01D2DviS1wwtEtMwIzJ_!!6000000006373-2-tps-1600-900.png)
package/cli.js CHANGED
@@ -157322,7 +157322,7 @@ __export(geminiContentGenerator_exports, {
157322
157322
  createGeminiContentGenerator: () => createGeminiContentGenerator
157323
157323
  });
157324
157324
  function createGeminiContentGenerator(config2, gcConfig) {
157325
- const version2 = "0.10.3";
157325
+ const version2 = "0.10.4-preview.0";
157326
157326
  const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
157327
157327
  const baseHeaders = {
157328
157328
  "User-Agent": userAgent2
@@ -298396,13 +298396,24 @@ var init_de = __esm({
298396
298396
  // Auth Dialog - View Titles and Labels
298397
298397
  // ============================================================================
298398
298398
  "Coding Plan": "Coding Plan",
298399
+ "Coding Plan (Bailian, China)": "Coding Plan (Bailian, China)",
298400
+ "Coding Plan (Bailian, Global/Intl)": "Coding Plan (Bailian, Global/Intl)",
298399
298401
  "Paste your api key of Bailian Coding Plan and you're all set!": "F\xFCgen Sie Ihren Bailian Coding Plan API-Schl\xFCssel ein und Sie sind bereit!",
298402
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!": "F\xFCgen Sie Ihren Coding Plan (Bailian, Global/Intl) API-Schl\xFCssel ein und Sie sind bereit!",
298400
298403
  Custom: "Benutzerdefiniert",
298401
298404
  "More instructions about configuring `modelProviders` manually.": "Weitere Anweisungen zur manuellen Konfiguration von `modelProviders`.",
298402
298405
  "Select API-KEY configuration mode:": "API-KEY-Konfigurationsmodus ausw\xE4hlen:",
298403
298406
  "(Press Escape to go back)": "(Escape dr\xFCcken zum Zur\xFCckgehen)",
298404
298407
  "(Press Enter to submit, Escape to cancel)": "(Enter zum Absenden, Escape zum Abbrechen)",
298405
- "More instructions please check:": "Weitere Anweisungen finden Sie unter:"
298408
+ "More instructions please check:": "Weitere Anweisungen finden Sie unter:",
298409
+ // ============================================================================
298410
+ // Coding Plan International Updates
298411
+ // ============================================================================
298412
+ "New model configurations are available for {{region}}. Update now?": "Neue Modellkonfigurationen sind f\xFCr {{region}} verf\xFCgbar. Jetzt aktualisieren?",
298413
+ "New model configurations are available for Bailian Coding Plan (China). Update now?": "Neue Modellkonfigurationen sind f\xFCr Bailian Coding Plan (China) verf\xFCgbar. Jetzt aktualisieren?",
298414
+ "New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?": "Neue Modellkonfigurationen sind f\xFCr Coding Plan (Bailian, Global/Intl) verf\xFCgbar. Jetzt aktualisieren?",
298415
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".': '{{region}}-Konfiguration erfolgreich aktualisiert. Modell auf "{{model}}" umgeschaltet.',
298416
+ "Authenticated successfully with {{region}}. API key is stored in settings.env.": "Erfolgreich mit {{region}} authentifiziert. API-Schl\xFCssel ist in settings.env gespeichert."
298406
298417
  };
298407
298418
  }
298408
298419
  });
@@ -299476,12 +299487,23 @@ var init_en3 = __esm({
299476
299487
  // Auth Dialog - View Titles and Labels
299477
299488
  // ============================================================================
299478
299489
  "Coding Plan": "Coding Plan",
299490
+ "Coding Plan (Bailian, China)": "Coding Plan (Bailian, China)",
299491
+ "Coding Plan (Bailian, Global/Intl)": "Coding Plan (Bailian, Global/Intl)",
299479
299492
  "Paste your api key of Bailian Coding Plan and you're all set!": "Paste your api key of Bailian Coding Plan and you're all set!",
299493
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!": "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!",
299480
299494
  Custom: "Custom",
299481
299495
  "More instructions about configuring `modelProviders` manually.": "More instructions about configuring `modelProviders` manually.",
299482
299496
  "Select API-KEY configuration mode:": "Select API-KEY configuration mode:",
299483
299497
  "(Press Escape to go back)": "(Press Escape to go back)",
299484
- "(Press Enter to submit, Escape to cancel)": "(Press Enter to submit, Escape to cancel)"
299498
+ "(Press Enter to submit, Escape to cancel)": "(Press Enter to submit, Escape to cancel)",
299499
+ // ============================================================================
299500
+ // Coding Plan International Updates
299501
+ // ============================================================================
299502
+ "New model configurations are available for {{region}}. Update now?": "New model configurations are available for {{region}}. Update now?",
299503
+ "New model configurations are available for Bailian Coding Plan (China). Update now?": "New model configurations are available for Bailian Coding Plan (China). Update now?",
299504
+ "New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?": "New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?",
299505
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".': '{{region}} configuration updated successfully. Model switched to "{{model}}".',
299506
+ "Authenticated successfully with {{region}}. API key is stored in settings.env.": "Authenticated successfully with {{region}}. API key is stored in settings.env."
299485
299507
  };
299486
299508
  }
299487
299509
  });
@@ -300192,13 +300214,24 @@ var init_ja = __esm({
300192
300214
  // Auth Dialog - View Titles and Labels
300193
300215
  // ============================================================================
300194
300216
  "Coding Plan": "Coding Plan",
300217
+ "Coding Plan (Bailian, China)": "Coding Plan (Bailian, \u4E2D\u56FD)",
300218
+ "Coding Plan (Bailian, Global/Intl)": "Coding Plan (Bailian, \u30B0\u30ED\u30FC\u30D0\u30EB/\u56FD\u969B)",
300195
300219
  "Paste your api key of Bailian Coding Plan and you're all set!": "Bailian Coding Plan\u306EAPI\u30AD\u30FC\u3092\u8CBC\u308A\u4ED8\u3051\u308B\u3060\u3051\u3067\u6E96\u5099\u5B8C\u4E86\u3067\u3059\uFF01",
300220
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!": "Coding Plan (Bailian, \u30B0\u30ED\u30FC\u30D0\u30EB/\u56FD\u969B) \u306EAPI\u30AD\u30FC\u3092\u8CBC\u308A\u4ED8\u3051\u308B\u3060\u3051\u3067\u6E96\u5099\u5B8C\u4E86\u3067\u3059\uFF01",
300196
300221
  Custom: "\u30AB\u30B9\u30BF\u30E0",
300197
300222
  "More instructions about configuring `modelProviders` manually.": "`modelProviders`\u3092\u624B\u52D5\u3067\u8A2D\u5B9A\u3059\u308B\u65B9\u6CD5\u306E\u8A73\u7D30\u306F\u3053\u3061\u3089\u3002",
300198
300223
  "Select API-KEY configuration mode:": "API-KEY\u8A2D\u5B9A\u30E2\u30FC\u30C9\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\uFF1A",
300199
300224
  "(Press Escape to go back)": "(Escape\u30AD\u30FC\u3067\u623B\u308B)",
300200
300225
  "(Press Enter to submit, Escape to cancel)": "(Enter\u3067\u9001\u4FE1\u3001Escape\u3067\u30AD\u30E3\u30F3\u30BB\u30EB)",
300201
- "More instructions please check:": "\u8A73\u7D30\u306A\u624B\u9806\u306F\u3053\u3061\u3089\u3092\u3054\u78BA\u8A8D\u304F\u3060\u3055\u3044\uFF1A"
300226
+ "More instructions please check:": "\u8A73\u7D30\u306A\u624B\u9806\u306F\u3053\u3061\u3089\u3092\u3054\u78BA\u8A8D\u304F\u3060\u3055\u3044\uFF1A",
300227
+ // ============================================================================
300228
+ // Coding Plan International Updates
300229
+ // ============================================================================
300230
+ "New model configurations are available for {{region}}. Update now?": "{{region}} \u306E\u65B0\u3057\u3044\u30E2\u30C7\u30EB\u8A2D\u5B9A\u304C\u5229\u7528\u53EF\u80FD\u3067\u3059\u3002\u4ECA\u3059\u3050\u66F4\u65B0\u3057\u307E\u3059\u304B\uFF1F",
300231
+ "New model configurations are available for Bailian Coding Plan (China). Update now?": "Bailian Coding Plan (\u4E2D\u56FD) \u306E\u65B0\u3057\u3044\u30E2\u30C7\u30EB\u8A2D\u5B9A\u304C\u5229\u7528\u53EF\u80FD\u3067\u3059\u3002\u4ECA\u3059\u3050\u66F4\u65B0\u3057\u307E\u3059\u304B\uFF1F",
300232
+ "New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?": "Coding Plan (Bailian, \u30B0\u30ED\u30FC\u30D0\u30EB/\u56FD\u969B) \u306E\u65B0\u3057\u3044\u30E2\u30C7\u30EB\u8A2D\u5B9A\u304C\u5229\u7528\u53EF\u80FD\u3067\u3059\u3002\u4ECA\u3059\u3050\u66F4\u65B0\u3057\u307E\u3059\u304B\uFF1F",
300233
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".': '{{region}} \u306E\u8A2D\u5B9A\u304C\u6B63\u5E38\u306B\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F\u3002\u30E2\u30C7\u30EB\u304C "{{model}}" \u306B\u5207\u308A\u66FF\u308F\u308A\u307E\u3057\u305F\u3002',
300234
+ "Authenticated successfully with {{region}}. API key is stored in settings.env.": "{{region}} \u3067\u306E\u8A8D\u8A3C\u306B\u6210\u529F\u3057\u307E\u3057\u305F\u3002API\u30AD\u30FC\u306F settings.env \u306B\u4FDD\u5B58\u3055\u308C\u3066\u3044\u307E\u3059\u3002"
300202
300235
  };
300203
300236
  }
300204
300237
  });
@@ -301255,13 +301288,24 @@ var init_pt = __esm({
301255
301288
  // Auth Dialog - View Titles and Labels
301256
301289
  // ============================================================================
301257
301290
  "Coding Plan": "Coding Plan",
301291
+ "Coding Plan (Bailian, China)": "Coding Plan (Bailian, China)",
301292
+ "Coding Plan (Bailian, Global/Intl)": "Coding Plan (Bailian, Global/Intl)",
301258
301293
  "Paste your api key of Bailian Coding Plan and you're all set!": "Cole sua chave de API do Bailian Coding Plan e pronto!",
301294
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!": "Cole sua chave de API do Coding Plan (Bailian, Global/Intl) e pronto!",
301259
301295
  Custom: "Personalizado",
301260
301296
  "More instructions about configuring `modelProviders` manually.": "Mais instru\xE7\xF5es sobre como configurar `modelProviders` manualmente.",
301261
301297
  "Select API-KEY configuration mode:": "Selecione o modo de configura\xE7\xE3o da API-KEY:",
301262
301298
  "(Press Escape to go back)": "(Pressione Escape para voltar)",
301263
301299
  "(Press Enter to submit, Escape to cancel)": "(Pressione Enter para enviar, Escape para cancelar)",
301264
- "More instructions please check:": "Mais instru\xE7\xF5es, consulte:"
301300
+ "More instructions please check:": "Mais instru\xE7\xF5es, consulte:",
301301
+ // ============================================================================
301302
+ // Coding Plan International Updates
301303
+ // ============================================================================
301304
+ "New model configurations are available for {{region}}. Update now?": "Novas configura\xE7\xF5es de modelo est\xE3o dispon\xEDveis para o {{region}}. Atualizar agora?",
301305
+ "New model configurations are available for Bailian Coding Plan (China). Update now?": "Novas configura\xE7\xF5es de modelo est\xE3o dispon\xEDveis para o Bailian Coding Plan (China). Atualizar agora?",
301306
+ "New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?": "Novas configura\xE7\xF5es de modelo est\xE3o dispon\xEDveis para o Coding Plan (Bailian, Global/Intl). Atualizar agora?",
301307
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".': 'Configura\xE7\xE3o do {{region}} atualizada com sucesso. Modelo alterado para "{{model}}".',
301308
+ "Authenticated successfully with {{region}}. API key is stored in settings.env.": "Autenticado com sucesso com {{region}}. A chave de API est\xE1 armazenada em settings.env."
301265
301309
  };
301266
301310
  }
301267
301311
  });
@@ -302326,13 +302370,24 @@ var init_ru = __esm({
302326
302370
  // Auth Dialog - View Titles and Labels
302327
302371
  // ============================================================================
302328
302372
  "Coding Plan": "Coding Plan",
302373
+ "Coding Plan (Bailian, China)": "Coding Plan (Bailian, \u041A\u0438\u0442\u0430\u0439)",
302374
+ "Coding Plan (Bailian, Global/Intl)": "Coding Plan (Bailian, \u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439/\u041C\u0435\u0436\u0434\u0443\u043D\u0430\u0440\u043E\u0434\u043D\u044B\u0439)",
302329
302375
  "Paste your api key of Bailian Coding Plan and you're all set!": "\u0412\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u0432\u0430\u0448 API-\u043A\u043B\u044E\u0447 Bailian Coding Plan \u0438 \u0432\u0441\u0451 \u0433\u043E\u0442\u043E\u0432\u043E!",
302376
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!": "\u0412\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u0432\u0430\u0448 API-\u043A\u043B\u044E\u0447 Coding Plan (Bailian, \u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439/\u041C\u0435\u0436\u0434\u0443\u043D\u0430\u0440\u043E\u0434\u043D\u044B\u0439) \u0438 \u0432\u0441\u0451 \u0433\u043E\u0442\u043E\u0432\u043E!",
302330
302377
  Custom: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439",
302331
302378
  "More instructions about configuring `modelProviders` manually.": "\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438 \u043F\u043E \u0440\u0443\u0447\u043D\u043E\u0439 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0435 `modelProviders`.",
302332
302379
  "Select API-KEY configuration mode:": "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0435\u0436\u0438\u043C \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 API-KEY:",
302333
302380
  "(Press Escape to go back)": "(\u041D\u0430\u0436\u043C\u0438\u0442\u0435 Escape \u0434\u043B\u044F \u0432\u043E\u0437\u0432\u0440\u0430\u0442\u0430)",
302334
302381
  "(Press Enter to submit, Escape to cancel)": "(\u041D\u0430\u0436\u043C\u0438\u0442\u0435 Enter \u0434\u043B\u044F \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0438, Escape \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B)",
302335
- "More instructions please check:": "\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438 \u0441\u043C.:"
302382
+ "More instructions please check:": "\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438 \u0441\u043C.:",
302383
+ // ============================================================================
302384
+ // Coding Plan International Updates
302385
+ // ============================================================================
302386
+ "New model configurations are available for {{region}}. Update now?": "\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u043D\u043E\u0432\u044B\u0435 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043C\u043E\u0434\u0435\u043B\u0435\u0439 \u0434\u043B\u044F {{region}}. \u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u0435\u0439\u0447\u0430\u0441?",
302387
+ "New model configurations are available for Bailian Coding Plan (China). Update now?": "\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u043D\u043E\u0432\u044B\u0435 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043C\u043E\u0434\u0435\u043B\u0435\u0439 \u0434\u043B\u044F Bailian Coding Plan (\u041A\u0438\u0442\u0430\u0439). \u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u0435\u0439\u0447\u0430\u0441?",
302388
+ "New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?": "\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u043D\u043E\u0432\u044B\u0435 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043C\u043E\u0434\u0435\u043B\u0435\u0439 \u0434\u043B\u044F Coding Plan (Bailian, \u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439/\u041C\u0435\u0436\u0434\u0443\u043D\u0430\u0440\u043E\u0434\u043D\u044B\u0439). \u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u0435\u0439\u0447\u0430\u0441?",
302389
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".': '\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F {{region}} \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0430. \u041C\u043E\u0434\u0435\u043B\u044C \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0430 \u043D\u0430 "{{model}}".',
302390
+ "Authenticated successfully with {{region}}. API key is stored in settings.env.": "\u0423\u0441\u043F\u0435\u0448\u043D\u0430\u044F \u0430\u0443\u0442\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0441 {{region}}. API-\u043A\u043B\u044E\u0447 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D \u0432 settings.env."
302336
302391
  };
302337
302392
  }
302338
302393
  });
@@ -303305,12 +303360,23 @@ var init_zh = __esm({
303305
303360
  // ============================================================================
303306
303361
  "API-KEY": "API-KEY",
303307
303362
  "Coding Plan": "Coding Plan",
303363
+ "Coding Plan (Bailian, China)": "Coding Plan (\u767E\u70BC, \u4E2D\u56FD)",
303364
+ "Coding Plan (Bailian, Global/Intl)": "Coding Plan (\u767E\u70BC, \u5168\u7403/\u56FD\u9645)",
303308
303365
  "Paste your api key of Bailian Coding Plan and you're all set!": "\u7C98\u8D34\u60A8\u7684\u767E\u70BC Coding Plan API Key\uFF0C\u5373\u53EF\u5B8C\u6210\u8BBE\u7F6E\uFF01",
303366
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!": "\u7C98\u8D34\u60A8\u7684 Coding Plan (\u767E\u70BC, \u5168\u7403/\u56FD\u9645) API Key\uFF0C\u5373\u53EF\u5B8C\u6210\u8BBE\u7F6E\uFF01",
303309
303367
  Custom: "\u81EA\u5B9A\u4E49",
303310
303368
  "More instructions about configuring `modelProviders` manually.": "\u5173\u4E8E\u624B\u52A8\u914D\u7F6E `modelProviders` \u7684\u66F4\u591A\u8BF4\u660E\u3002",
303311
303369
  "Select API-KEY configuration mode:": "\u9009\u62E9 API-KEY \u914D\u7F6E\u6A21\u5F0F\uFF1A",
303312
303370
  "(Press Escape to go back)": "(\u6309 Escape \u952E\u8FD4\u56DE)",
303313
- "(Press Enter to submit, Escape to cancel)": "(\u6309 Enter \u63D0\u4EA4\uFF0CEscape \u53D6\u6D88)"
303371
+ "(Press Enter to submit, Escape to cancel)": "(\u6309 Enter \u63D0\u4EA4\uFF0CEscape \u53D6\u6D88)",
303372
+ // ============================================================================
303373
+ // Coding Plan International Updates
303374
+ // ============================================================================
303375
+ "New model configurations are available for {{region}}. Update now?": "{{region}} \u6709\u65B0\u7684\u6A21\u578B\u914D\u7F6E\u53EF\u7528\u3002\u662F\u5426\u7ACB\u5373\u66F4\u65B0\uFF1F",
303376
+ "New model configurations are available for Bailian Coding Plan (China). Update now?": "\u767E\u70BC Coding Plan (\u4E2D\u56FD) \u6709\u65B0\u7684\u6A21\u578B\u914D\u7F6E\u53EF\u7528\u3002\u662F\u5426\u7ACB\u5373\u66F4\u65B0\uFF1F",
303377
+ "New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?": "Coding Plan (\u767E\u70BC, \u5168\u7403/\u56FD\u9645) \u6709\u65B0\u7684\u6A21\u578B\u914D\u7F6E\u53EF\u7528\u3002\u662F\u5426\u7ACB\u5373\u66F4\u65B0\uFF1F",
303378
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".': '{{region}} \u914D\u7F6E\u66F4\u65B0\u6210\u529F\u3002\u6A21\u578B\u5DF2\u5207\u6362\u81F3 "{{model}}"\u3002',
303379
+ "Authenticated successfully with {{region}}. API key is stored in settings.env.": "\u6210\u529F\u901A\u8FC7 {{region}} \u8BA4\u8BC1\u3002API Key \u5DF2\u5B58\u50A8\u5728 settings.env \u4E2D\u3002"
303314
303380
  };
303315
303381
  }
303316
303382
  });
@@ -374378,7 +374444,7 @@ __name(getPackageJson, "getPackageJson");
374378
374444
  // packages/cli/src/utils/version.ts
374379
374445
  async function getCliVersion() {
374380
374446
  const pkgJson = await getPackageJson();
374381
- return "0.10.3";
374447
+ return "0.10.4-preview.0";
374382
374448
  }
374383
374449
  __name(getCliVersion, "getCliVersion");
374384
374450
 
@@ -381927,7 +381993,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
381927
381993
 
381928
381994
  // packages/cli/src/generated/git-commit.ts
381929
381995
  init_esbuild_shims();
381930
- var GIT_COMMIT_INFO = "4629b198";
381996
+ var GIT_COMMIT_INFO = "1bd975f5";
381931
381997
 
381932
381998
  // packages/cli/src/utils/systemInfo.ts
381933
381999
  async function getNpmVersion() {
@@ -392531,128 +392597,176 @@ __name(getPersistScopeForModelSelection, "getPersistScopeForModelSelection");
392531
392597
  init_esbuild_shims();
392532
392598
  import { createHash as createHash7 } from "node:crypto";
392533
392599
  var CODING_PLAN_ENV_KEY = "BAILIAN_CODING_PLAN_API_KEY";
392534
- var CODING_PLAN_MODELS = [
392535
- {
392536
- id: "qwen3-coder-plus",
392537
- name: "qwen3-coder-plus",
392538
- baseUrl: "https://coding.dashscope.aliyuncs.com/v1",
392539
- description: "qwen3-coder-plus model from Bailian Coding Plan",
392540
- envKey: CODING_PLAN_ENV_KEY
392541
- },
392542
- {
392543
- id: "qwen3-max-2026-01-23",
392544
- name: "qwen3-max-2026-01-23",
392545
- description: "qwen3-max model with thinking enabled from Bailian Coding Plan",
392546
- baseUrl: "https://coding.dashscope.aliyuncs.com/v1",
392547
- envKey: CODING_PLAN_ENV_KEY,
392548
- generationConfig: {
392549
- extra_body: {
392550
- enable_thinking: true
392600
+ function computeCodingPlanVersion(template) {
392601
+ const templateString2 = JSON.stringify(template);
392602
+ return createHash7("sha256").update(templateString2).digest("hex");
392603
+ }
392604
+ __name(computeCodingPlanVersion, "computeCodingPlanVersion");
392605
+ function generateCodingPlanTemplate(region) {
392606
+ if (region === "china" /* CHINA */) {
392607
+ return [
392608
+ {
392609
+ id: "qwen3-coder-plus",
392610
+ name: "qwen3-coder-plus",
392611
+ baseUrl: "https://coding.dashscope.aliyuncs.com/v1",
392612
+ description: "qwen3-coder-plus model from Bailian Coding Plan",
392613
+ envKey: CODING_PLAN_ENV_KEY
392614
+ },
392615
+ {
392616
+ id: "qwen3-max-2026-01-23",
392617
+ name: "qwen3-max-2026-01-23",
392618
+ description: "qwen3-max model with thinking enabled from Bailian Coding Plan",
392619
+ baseUrl: "https://coding.dashscope.aliyuncs.com/v1",
392620
+ envKey: CODING_PLAN_ENV_KEY,
392621
+ generationConfig: {
392622
+ extra_body: {
392623
+ enable_thinking: true
392624
+ }
392625
+ }
392626
+ }
392627
+ ];
392628
+ }
392629
+ return [
392630
+ {
392631
+ id: "qwen3-coder-plus",
392632
+ name: "qwen3-coder-plus",
392633
+ baseUrl: "https://coding-intl.dashscope.aliyuncs.com/v1",
392634
+ description: "qwen3-coder-plus model from Coding Plan (Global/Intl)",
392635
+ envKey: CODING_PLAN_ENV_KEY
392636
+ },
392637
+ {
392638
+ id: "qwen3-max-2026-01-23",
392639
+ name: "qwen3-max-2026-01-23",
392640
+ description: "qwen3-max model with thinking enabled from Coding Plan (Global/Intl)",
392641
+ baseUrl: "https://coding-intl.dashscope.aliyuncs.com/v1",
392642
+ envKey: CODING_PLAN_ENV_KEY,
392643
+ generationConfig: {
392644
+ extra_body: {
392645
+ enable_thinking: true
392646
+ }
392551
392647
  }
392552
392648
  }
392649
+ ];
392650
+ }
392651
+ __name(generateCodingPlanTemplate, "generateCodingPlanTemplate");
392652
+ function getCodingPlanConfig(region) {
392653
+ const template = generateCodingPlanTemplate(region);
392654
+ const baseUrl = region === "china" /* CHINA */ ? "https://coding.dashscope.aliyuncs.com/v1" : "https://coding-intl.dashscope.aliyuncs.com/v1";
392655
+ const regionName = region === "china" /* CHINA */ ? "Coding Plan (Bailian, China)" : "Coding Plan (Bailian, Global/Intl)";
392656
+ return {
392657
+ template,
392658
+ baseUrl,
392659
+ regionName,
392660
+ version: computeCodingPlanVersion(template)
392661
+ };
392662
+ }
392663
+ __name(getCodingPlanConfig, "getCodingPlanConfig");
392664
+ function isCodingPlanConfig(baseUrl, envKey) {
392665
+ if (!baseUrl || !envKey) {
392666
+ return false;
392553
392667
  }
392554
- ];
392555
- function computeCodingPlanVersion() {
392556
- const templateString2 = JSON.stringify(CODING_PLAN_MODELS);
392557
- return createHash7("sha256").update(templateString2).digest("hex");
392668
+ if (envKey !== CODING_PLAN_ENV_KEY) {
392669
+ return false;
392670
+ }
392671
+ if (baseUrl === "https://coding.dashscope.aliyuncs.com/v1") {
392672
+ return "china" /* CHINA */;
392673
+ }
392674
+ if (baseUrl === "https://coding-intl.dashscope.aliyuncs.com/v1") {
392675
+ return "global" /* GLOBAL */;
392676
+ }
392677
+ return false;
392558
392678
  }
392559
- __name(computeCodingPlanVersion, "computeCodingPlanVersion");
392560
- var CODING_PLAN_VERSION = computeCodingPlanVersion();
392679
+ __name(isCodingPlanConfig, "isCodingPlanConfig");
392561
392680
 
392562
392681
  // packages/cli/src/ui/hooks/useCodingPlanUpdates.ts
392563
- function isCodingPlanConfig(config2) {
392564
- return config2.envKey === CODING_PLAN_ENV_KEY && CODING_PLAN_MODELS.some((template) => template.baseUrl === config2.baseUrl);
392565
- }
392566
- __name(isCodingPlanConfig, "isCodingPlanConfig");
392567
392682
  function useCodingPlanUpdates(settings, config2, addItem) {
392568
392683
  const [updateRequest, setUpdateRequest] = (0, import_react31.useState)();
392569
- const executeUpdate = (0, import_react31.useCallback)(async () => {
392570
- try {
392571
- const persistScope = getPersistScopeForModelSelection(settings);
392572
- const currentConfigs = settings.merged.modelProviders?.[AuthType2.USE_OPENAI] || [];
392573
- const nonCodingPlanConfigs = currentConfigs.filter(
392574
- (cfg) => !isCodingPlanConfig({
392575
- baseUrl: cfg["baseUrl"],
392576
- envKey: cfg["envKey"]
392577
- })
392578
- );
392579
- const apiKey = process.env[CODING_PLAN_ENV_KEY];
392580
- if (!apiKey) {
392581
- throw new Error(
392582
- t4(
392583
- "Coding Plan API key not found. Please re-authenticate with Coding Plan."
392684
+ const executeUpdate = (0, import_react31.useCallback)(
392685
+ async (region = "china" /* CHINA */) => {
392686
+ try {
392687
+ const persistScope = getPersistScopeForModelSelection(settings);
392688
+ const currentConfigs = settings.merged.modelProviders?.[AuthType2.USE_OPENAI] || [];
392689
+ const nonCodingPlanConfigs = currentConfigs.filter(
392690
+ (cfg) => !isCodingPlanConfig(
392691
+ cfg["baseUrl"],
392692
+ cfg["envKey"]
392584
392693
  )
392585
392694
  );
392695
+ const { template, version: version2, regionName } = getCodingPlanConfig(region);
392696
+ const newConfigs = template.map((templateConfig) => ({
392697
+ ...templateConfig,
392698
+ envKey: CODING_PLAN_ENV_KEY
392699
+ }));
392700
+ const updatedConfigs = [
392701
+ ...newConfigs,
392702
+ ...nonCodingPlanConfigs
392703
+ ];
392704
+ const updatedModelProviders = {
392705
+ ...settings.merged.modelProviders,
392706
+ [AuthType2.USE_OPENAI]: updatedConfigs
392707
+ };
392708
+ config2.reloadModelProvidersConfig(
392709
+ updatedModelProviders
392710
+ );
392711
+ await config2.refreshAuth(AuthType2.USE_OPENAI);
392712
+ settings.setValue(
392713
+ persistScope,
392714
+ `modelProviders.${AuthType2.USE_OPENAI}`,
392715
+ updatedConfigs
392716
+ );
392717
+ settings.setValue(persistScope, "codingPlan.version", version2);
392718
+ settings.setValue(persistScope, "codingPlan.region", region);
392719
+ const activeModel = config2.getModel();
392720
+ addItem(
392721
+ {
392722
+ type: "info",
392723
+ text: t4(
392724
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".',
392725
+ { region: regionName, model: activeModel }
392726
+ )
392727
+ },
392728
+ Date.now()
392729
+ );
392730
+ return true;
392731
+ } catch (error2) {
392732
+ const errorMessage = error2 instanceof Error ? error2.message : String(error2);
392733
+ addItem(
392734
+ {
392735
+ type: "error",
392736
+ text: t4("Failed to update Coding Plan configuration: {{message}}", {
392737
+ message: errorMessage
392738
+ })
392739
+ },
392740
+ Date.now()
392741
+ );
392742
+ return false;
392586
392743
  }
392587
- const newConfigs = CODING_PLAN_MODELS.map((templateConfig) => ({
392588
- ...templateConfig,
392589
- envKey: CODING_PLAN_ENV_KEY
392590
- }));
392591
- const updatedConfigs = [
392592
- ...newConfigs,
392593
- ...nonCodingPlanConfigs
392594
- ];
392595
- settings.setValue(
392596
- persistScope,
392597
- `modelProviders.${AuthType2.USE_OPENAI}`,
392598
- updatedConfigs
392599
- );
392600
- settings.setValue(
392601
- persistScope,
392602
- "codingPlan.version",
392603
- CODING_PLAN_VERSION
392604
- );
392605
- const updatedModelProviders = {
392606
- ...settings.merged.modelProviders,
392607
- [AuthType2.USE_OPENAI]: updatedConfigs
392608
- };
392609
- config2.reloadModelProvidersConfig(
392610
- updatedModelProviders
392611
- );
392612
- await config2.refreshAuth(AuthType2.USE_OPENAI);
392613
- addItem(
392614
- {
392615
- type: "info",
392616
- text: t4(
392617
- "Coding Plan configuration updated successfully. New models are now available."
392618
- )
392619
- },
392620
- Date.now()
392621
- );
392622
- return true;
392623
- } catch (error2) {
392624
- const errorMessage = error2 instanceof Error ? error2.message : String(error2);
392625
- addItem(
392626
- {
392627
- type: "error",
392628
- text: t4("Failed to update Coding Plan configuration: {{message}}", {
392629
- message: errorMessage
392630
- })
392631
- },
392632
- Date.now()
392633
- );
392634
- return false;
392635
- }
392636
- }, [settings, config2, addItem]);
392744
+ },
392745
+ [settings, config2, addItem]
392746
+ );
392637
392747
  const checkForUpdates2 = (0, import_react31.useCallback)(() => {
392638
- const savedVersion = settings.merged.codingPlan?.version;
392748
+ const mergedSettings = settings.merged;
392749
+ const region = mergedSettings.codingPlan?.region ?? "china" /* CHINA */;
392750
+ const savedVersion = mergedSettings.codingPlan?.version;
392639
392751
  if (!savedVersion) {
392640
392752
  return;
392641
392753
  }
392642
- if (savedVersion === CODING_PLAN_VERSION) {
392643
- return;
392754
+ const currentVersion = getCodingPlanConfig(region).version;
392755
+ if (savedVersion !== currentVersion) {
392756
+ const { regionName } = getCodingPlanConfig(region);
392757
+ setUpdateRequest({
392758
+ prompt: t4(
392759
+ "New model configurations are available for {{region}}. Update now?",
392760
+ { region: regionName }
392761
+ ),
392762
+ onConfirm: /* @__PURE__ */ __name(async (confirmed) => {
392763
+ setUpdateRequest(void 0);
392764
+ if (confirmed) {
392765
+ await executeUpdate(region);
392766
+ }
392767
+ }, "onConfirm")
392768
+ });
392644
392769
  }
392645
- setUpdateRequest({
392646
- prompt: t4(
392647
- "New model configurations are available for Bailian Coding Plan. Update now?"
392648
- ),
392649
- onConfirm: /* @__PURE__ */ __name(async (confirmed) => {
392650
- setUpdateRequest(void 0);
392651
- if (confirmed) {
392652
- await executeUpdate();
392653
- }
392654
- }, "onConfirm")
392655
- });
392656
392770
  }, [settings, executeUpdate]);
392657
392771
  (0, import_react31.useEffect)(() => {
392658
392772
  checkForUpdates2();
@@ -418961,12 +419075,15 @@ init_esbuild_shims();
418961
419075
  var import_react80 = __toESM(require_react(), 1);
418962
419076
  var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1);
418963
419077
  var CODING_PLAN_API_KEY_URL = "https://bailian.console.aliyun.com/?tab=model#/efm/coding_plan";
419078
+ var CODING_PLAN_INTL_API_KEY_URL = "https://modelstudio.console.alibabacloud.com/ap-southeast-1/?tab=globalset#/efm/api_key";
418964
419079
  function ApiKeyInput({
418965
419080
  onSubmit,
418966
- onCancel
419081
+ onCancel,
419082
+ region = "china" /* CHINA */
418967
419083
  }) {
418968
419084
  const [apiKey, setApiKey] = (0, import_react80.useState)("");
418969
419085
  const [error2, setError] = (0, import_react80.useState)(null);
419086
+ const apiKeyUrl = region === "global" /* GLOBAL */ ? CODING_PLAN_INTL_API_KEY_URL : CODING_PLAN_API_KEY_URL;
418970
419087
  useKeypress(
418971
419088
  (key) => {
418972
419089
  if (key.name === "escape") {
@@ -418987,7 +419104,7 @@ function ApiKeyInput({
418987
419104
  /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(TextInput, { value: apiKey, onChange: setApiKey, placeholder: "sk-sp-..." }),
418988
419105
  error2 && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Text3, { color: theme.status.error, children: error2 }) }),
418989
419106
  /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Text3, { children: t4("You can get your exclusive Coding Plan API-KEY here:") }) }),
418990
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Box_default, { marginTop: 0, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(dist_default6, { url: CODING_PLAN_API_KEY_URL, fallback: false, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Text3, { color: theme.status.success, underline: true, children: CODING_PLAN_API_KEY_URL }) }) }),
419107
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Box_default, { marginTop: 0, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(dist_default6, { url: apiKeyUrl, fallback: false, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Text3, { color: theme.status.success, underline: true, children: apiKeyUrl }) }) }),
418991
419108
  /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Text3, { color: theme.text.secondary, children: t4("(Press Enter to submit, Escape to cancel)") }) })
418992
419109
  ] });
418993
419110
  }
@@ -419093,6 +419210,9 @@ function AuthDialog() {
419093
419210
  const [selectedIndex, setSelectedIndex] = (0, import_react82.useState)(null);
419094
419211
  const [viewLevel, setViewLevel] = (0, import_react82.useState)("main");
419095
419212
  const [apiKeySubModeIndex, setApiKeySubModeIndex] = (0, import_react82.useState)(0);
419213
+ const [region, setRegion] = (0, import_react82.useState)(
419214
+ "china" /* CHINA */
419215
+ );
419096
419216
  const mainItems = [
419097
419217
  {
419098
419218
  key: AuthType2.QWEN_OAUTH,
@@ -419108,9 +419228,14 @@ function AuthDialog() {
419108
419228
  const apiKeySubItems = [
419109
419229
  {
419110
419230
  key: "coding-plan",
419111
- label: t4("Coding Plan (Bailian)"),
419231
+ label: t4("Coding Plan (Bailian, China)"),
419112
419232
  value: "coding-plan"
419113
419233
  },
419234
+ {
419235
+ key: "coding-plan-intl",
419236
+ label: t4("Coding Plan (Bailian, Global/Intl)"),
419237
+ value: "coding-plan-intl"
419238
+ },
419114
419239
  {
419115
419240
  key: "custom",
419116
419241
  label: t4("Custom"),
@@ -419151,6 +419276,10 @@ function AuthDialog() {
419151
419276
  setErrorMessage(null);
419152
419277
  onAuthError(null);
419153
419278
  if (subMode === "coding-plan") {
419279
+ setRegion("china" /* CHINA */);
419280
+ setViewLevel("api-key-input");
419281
+ } else if (subMode === "coding-plan-intl") {
419282
+ setRegion("global" /* GLOBAL */);
419154
419283
  setViewLevel("api-key-input");
419155
419284
  } else {
419156
419285
  setViewLevel("custom-info");
@@ -419162,7 +419291,7 @@ function AuthDialog() {
419162
419291
  setErrorMessage(t4("API key cannot be empty."));
419163
419292
  return;
419164
419293
  }
419165
- await handleCodingPlanSubmit(apiKey);
419294
+ await handleCodingPlanSubmit(apiKey, region);
419166
419295
  }, "handleApiKeyInputSubmit");
419167
419296
  const handleGoBack = /* @__PURE__ */ __name(() => {
419168
419297
  setErrorMessage(null);
@@ -419233,12 +419362,21 @@ function AuthDialog() {
419233
419362
  }
419234
419363
  }
419235
419364
  ) }),
419236
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Box_default, { marginTop: 1, paddingLeft: 2, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Text3, { color: theme.text.secondary, children: apiKeySubItems[apiKeySubModeIndex]?.value === "coding-plan" ? t4("Paste your api key of Bailian Coding Plan and you're all set!") : t4(
419365
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Box_default, { marginTop: 1, paddingLeft: 2, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Text3, { color: theme.text.secondary, children: apiKeySubItems[apiKeySubModeIndex]?.value === "custom" ? t4(
419237
419366
  "More instructions about configuring `modelProviders` manually."
419367
+ ) : t4(
419368
+ "Paste your api key of Bailian Coding Plan and you're all set!"
419238
419369
  ) }) }),
419239
419370
  /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Text3, { color: theme?.text?.secondary, children: t4("(Press Escape to go back)") }) })
419240
419371
  ] }), "renderApiKeySubView");
419241
- const renderApiKeyInputView = /* @__PURE__ */ __name(() => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(ApiKeyInput, { onSubmit: handleApiKeyInputSubmit, onCancel: handleGoBack }) }), "renderApiKeyInputView");
419372
+ const renderApiKeyInputView = /* @__PURE__ */ __name(() => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
419373
+ ApiKeyInput,
419374
+ {
419375
+ onSubmit: handleApiKeyInputSubmit,
419376
+ onCancel: handleGoBack,
419377
+ region
419378
+ }
419379
+ ) }), "renderApiKeyInputView");
419242
419380
  const renderCustomInfoView = /* @__PURE__ */ __name(() => /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(import_jsx_runtime82.Fragment, { children: [
419243
419381
  /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Text3, { bold: true, children: t4("Custom API-KEY Configuration") }) }),
419244
419382
  /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Text3, { children: t4("For advanced users who want to configure models manually.") }) }),
@@ -424458,26 +424596,23 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config2, addItem, onAuthC
424458
424596
  setAuthError(null);
424459
424597
  }, [isAuthenticating, pendingAuthType, cancelQwenAuth, config2]);
424460
424598
  const handleCodingPlanSubmit = (0, import_react104.useCallback)(
424461
- async (apiKey) => {
424599
+ async (apiKey, region = "china" /* CHINA */) => {
424462
424600
  try {
424463
424601
  setIsAuthenticating(true);
424464
424602
  setAuthError(null);
424465
- const envKeyName = CODING_PLAN_ENV_KEY;
424603
+ const { template, version: version2, regionName } = getCodingPlanConfig(region);
424466
424604
  const persistScope = getPersistScopeForModelSelection(settings);
424467
- settings.setValue(persistScope, `env.${envKeyName}`, apiKey);
424468
- process.env[envKeyName] = apiKey;
424469
- const newConfigs = CODING_PLAN_MODELS.map(
424605
+ settings.setValue(persistScope, `env.${CODING_PLAN_ENV_KEY}`, apiKey);
424606
+ process.env[CODING_PLAN_ENV_KEY] = apiKey;
424607
+ const newConfigs = template.map(
424470
424608
  (templateConfig) => ({
424471
424609
  ...templateConfig,
424472
- envKey: envKeyName
424610
+ envKey: CODING_PLAN_ENV_KEY
424473
424611
  })
424474
424612
  );
424475
424613
  const existingConfigs = settings.merged.modelProviders?.[AuthType2.USE_OPENAI] || [];
424476
- const isCodingPlanConfig2 = /* @__PURE__ */ __name((config3) => config3.envKey === envKeyName && CODING_PLAN_MODELS.some(
424477
- (template) => template.baseUrl === config3.baseUrl
424478
- ), "isCodingPlanConfig");
424479
424614
  const nonCodingPlanConfigs = existingConfigs.filter(
424480
- (existing) => !isCodingPlanConfig2(existing)
424615
+ (existing) => !isCodingPlanConfig(existing.baseUrl, existing.envKey)
424481
424616
  );
424482
424617
  const updatedConfigs = [...newConfigs, ...nonCodingPlanConfigs];
424483
424618
  settings.setValue(
@@ -424490,11 +424625,8 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config2, addItem, onAuthC
424490
424625
  "security.auth.selectedType",
424491
424626
  AuthType2.USE_OPENAI
424492
424627
  );
424493
- settings.setValue(
424494
- persistScope,
424495
- "codingPlan.version",
424496
- CODING_PLAN_VERSION
424497
- );
424628
+ settings.setValue(persistScope, "codingPlan.region", region);
424629
+ settings.setValue(persistScope, "codingPlan.version", version2);
424498
424630
  if (updatedConfigs.length > 0 && updatedConfigs[0]?.id) {
424499
424631
  settings.setValue(persistScope, "model.name", updatedConfigs[0].id);
424500
424632
  }
@@ -424513,7 +424645,8 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config2, addItem, onAuthC
424513
424645
  {
424514
424646
  type: "info" /* INFO */,
424515
424647
  text: t4(
424516
- "Authenticated successfully with Coding Plan. API key is stored in settings.env."
424648
+ "Authenticated successfully with {{region}}. API key is stored in settings.env.",
424649
+ { region: regionName }
424517
424650
  )
424518
424651
  },
424519
424652
  Date.now()
@@ -433973,7 +434106,7 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
433973
434106
  }
433974
434107
  }
433975
434108
  if (!await ensureSandboxImageIsPresent(config2.command, image2)) {
433976
- const remedy = image2 === LOCAL_DEV_SANDBOX_IMAGE_NAME ? "Try running `npm run build:all` or `npm run build:sandbox` under the gemini-cli repo to build it locally, or check the image name and your network connection." : "Please check the image name, your network connection, or notify gemini-cli-dev@google.com if the issue persists.";
434109
+ const remedy = image2 === LOCAL_DEV_SANDBOX_IMAGE_NAME ? "Try running `npm run build:all` or `npm run build:sandbox` under the qwen-code repo to build it locally, or check the image name and your network connection." : "Please check the image name, your network connection, or notify qwen-code-dev@service.alibaba.com if the issue persists.";
433977
434110
  throw new FatalSandboxError(
433978
434111
  `Sandbox image '${image2}' is missing or could not be pulled. ${remedy}`
433979
434112
  );
@@ -434080,7 +434213,7 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
434080
434213
  const isIntegrationTest = process.env["GEMINI_CLI_INTEGRATION_TEST"] === "true";
434081
434214
  let containerName;
434082
434215
  if (isIntegrationTest) {
434083
- containerName = `gemini-cli-integration-test-${randomBytes5(4).toString(
434216
+ containerName = `qwen-code-integration-test-${randomBytes5(4).toString(
434084
434217
  "hex"
434085
434218
  )}`;
434086
434219
  writeStderrLine(`ContainerName: ${containerName}`);
@@ -434209,10 +434342,11 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
434209
434342
  }
434210
434343
  let userFlag = "";
434211
434344
  const finalEntrypoint = entrypoint(workdir, cliArgs);
434212
- if (process.env["GEMINI_CLI_INTEGRATION_TEST"] === "true") {
434345
+ const useCurrentUser = await shouldUseCurrentUserInSandbox();
434346
+ if (!useCurrentUser) {
434213
434347
  args.push("--user", "root");
434214
434348
  userFlag = "--user root";
434215
- } else if (await shouldUseCurrentUserInSandbox()) {
434349
+ } else {
434216
434350
  args.push("--user", "root");
434217
434351
  const uid = execSync8("id -u").toString().trim();
434218
434352
  const gid = execSync8("id -g").toString().trim();
@@ -436578,7 +436712,7 @@ var GeminiAgent = class {
436578
436712
  name: APPROVAL_MODE_INFO[mode].name,
436579
436713
  description: APPROVAL_MODE_INFO[mode].description
436580
436714
  }));
436581
- const version2 = "0.10.3";
436715
+ const version2 = "0.10.4-preview.0";
436582
436716
  return {
436583
436717
  protocolVersion: PROTOCOL_VERSION,
436584
436718
  agentInfo: {
package/locales/de.js CHANGED
@@ -1417,8 +1417,12 @@ export default {
1417
1417
  // Auth Dialog - View Titles and Labels
1418
1418
  // ============================================================================
1419
1419
  'Coding Plan': 'Coding Plan',
1420
+ 'Coding Plan (Bailian, China)': 'Coding Plan (Bailian, China)',
1421
+ 'Coding Plan (Bailian, Global/Intl)': 'Coding Plan (Bailian, Global/Intl)',
1420
1422
  "Paste your api key of Bailian Coding Plan and you're all set!":
1421
1423
  'Fügen Sie Ihren Bailian Coding Plan API-Schlüssel ein und Sie sind bereit!',
1424
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!":
1425
+ 'Fügen Sie Ihren Coding Plan (Bailian, Global/Intl) API-Schlüssel ein und Sie sind bereit!',
1422
1426
  Custom: 'Benutzerdefiniert',
1423
1427
  'More instructions about configuring `modelProviders` manually.':
1424
1428
  'Weitere Anweisungen zur manuellen Konfiguration von `modelProviders`.',
@@ -1428,4 +1432,18 @@ export default {
1428
1432
  '(Press Enter to submit, Escape to cancel)':
1429
1433
  '(Enter zum Absenden, Escape zum Abbrechen)',
1430
1434
  'More instructions please check:': 'Weitere Anweisungen finden Sie unter:',
1435
+
1436
+ // ============================================================================
1437
+ // Coding Plan International Updates
1438
+ // ============================================================================
1439
+ 'New model configurations are available for {{region}}. Update now?':
1440
+ 'Neue Modellkonfigurationen sind für {{region}} verfügbar. Jetzt aktualisieren?',
1441
+ 'New model configurations are available for Bailian Coding Plan (China). Update now?':
1442
+ 'Neue Modellkonfigurationen sind für Bailian Coding Plan (China) verfügbar. Jetzt aktualisieren?',
1443
+ 'New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?':
1444
+ 'Neue Modellkonfigurationen sind für Coding Plan (Bailian, Global/Intl) verfügbar. Jetzt aktualisieren?',
1445
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".':
1446
+ '{{region}}-Konfiguration erfolgreich aktualisiert. Modell auf "{{model}}" umgeschaltet.',
1447
+ 'Authenticated successfully with {{region}}. API key is stored in settings.env.':
1448
+ 'Erfolgreich mit {{region}} authentifiziert. API-Schlüssel ist in settings.env gespeichert.',
1431
1449
  };
package/locales/en.js CHANGED
@@ -1418,8 +1418,12 @@ export default {
1418
1418
  // Auth Dialog - View Titles and Labels
1419
1419
  // ============================================================================
1420
1420
  'Coding Plan': 'Coding Plan',
1421
+ 'Coding Plan (Bailian, China)': 'Coding Plan (Bailian, China)',
1422
+ 'Coding Plan (Bailian, Global/Intl)': 'Coding Plan (Bailian, Global/Intl)',
1421
1423
  "Paste your api key of Bailian Coding Plan and you're all set!":
1422
1424
  "Paste your api key of Bailian Coding Plan and you're all set!",
1425
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!":
1426
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!",
1423
1427
  Custom: 'Custom',
1424
1428
  'More instructions about configuring `modelProviders` manually.':
1425
1429
  'More instructions about configuring `modelProviders` manually.',
@@ -1427,4 +1431,18 @@ export default {
1427
1431
  '(Press Escape to go back)': '(Press Escape to go back)',
1428
1432
  '(Press Enter to submit, Escape to cancel)':
1429
1433
  '(Press Enter to submit, Escape to cancel)',
1434
+
1435
+ // ============================================================================
1436
+ // Coding Plan International Updates
1437
+ // ============================================================================
1438
+ 'New model configurations are available for {{region}}. Update now?':
1439
+ 'New model configurations are available for {{region}}. Update now?',
1440
+ 'New model configurations are available for Bailian Coding Plan (China). Update now?':
1441
+ 'New model configurations are available for Bailian Coding Plan (China). Update now?',
1442
+ 'New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?':
1443
+ 'New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?',
1444
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".':
1445
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".',
1446
+ 'Authenticated successfully with {{region}}. API key is stored in settings.env.':
1447
+ 'Authenticated successfully with {{region}}. API key is stored in settings.env.',
1430
1448
  };
package/locales/ja.js CHANGED
@@ -928,8 +928,13 @@ export default {
928
928
  // Auth Dialog - View Titles and Labels
929
929
  // ============================================================================
930
930
  'Coding Plan': 'Coding Plan',
931
+ 'Coding Plan (Bailian, China)': 'Coding Plan (Bailian, 中国)',
932
+ 'Coding Plan (Bailian, Global/Intl)':
933
+ 'Coding Plan (Bailian, グローバル/国際)',
931
934
  "Paste your api key of Bailian Coding Plan and you're all set!":
932
935
  'Bailian Coding PlanのAPIキーを貼り付けるだけで準備完了です!',
936
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!":
937
+ 'Coding Plan (Bailian, グローバル/国際) のAPIキーを貼り付けるだけで準備完了です!',
933
938
  Custom: 'カスタム',
934
939
  'More instructions about configuring `modelProviders` manually.':
935
940
  '`modelProviders`を手動で設定する方法の詳細はこちら。',
@@ -938,4 +943,18 @@ export default {
938
943
  '(Press Enter to submit, Escape to cancel)':
939
944
  '(Enterで送信、Escapeでキャンセル)',
940
945
  'More instructions please check:': '詳細な手順はこちらをご確認ください:',
946
+
947
+ // ============================================================================
948
+ // Coding Plan International Updates
949
+ // ============================================================================
950
+ 'New model configurations are available for {{region}}. Update now?':
951
+ '{{region}} の新しいモデル設定が利用可能です。今すぐ更新しますか?',
952
+ 'New model configurations are available for Bailian Coding Plan (China). Update now?':
953
+ 'Bailian Coding Plan (中国) の新しいモデル設定が利用可能です。今すぐ更新しますか?',
954
+ 'New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?':
955
+ 'Coding Plan (Bailian, グローバル/国際) の新しいモデル設定が利用可能です。今すぐ更新しますか?',
956
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".':
957
+ '{{region}} の設定が正常に更新されました。モデルが "{{model}}" に切り替わりました。',
958
+ 'Authenticated successfully with {{region}}. API key is stored in settings.env.':
959
+ '{{region}} での認証に成功しました。APIキーは settings.env に保存されています。',
941
960
  };
package/locales/pt.js CHANGED
@@ -1431,8 +1431,12 @@ export default {
1431
1431
  // Auth Dialog - View Titles and Labels
1432
1432
  // ============================================================================
1433
1433
  'Coding Plan': 'Coding Plan',
1434
+ 'Coding Plan (Bailian, China)': 'Coding Plan (Bailian, China)',
1435
+ 'Coding Plan (Bailian, Global/Intl)': 'Coding Plan (Bailian, Global/Intl)',
1434
1436
  "Paste your api key of Bailian Coding Plan and you're all set!":
1435
1437
  'Cole sua chave de API do Bailian Coding Plan e pronto!',
1438
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!":
1439
+ 'Cole sua chave de API do Coding Plan (Bailian, Global/Intl) e pronto!',
1436
1440
  Custom: 'Personalizado',
1437
1441
  'More instructions about configuring `modelProviders` manually.':
1438
1442
  'Mais instruções sobre como configurar `modelProviders` manualmente.',
@@ -1442,4 +1446,18 @@ export default {
1442
1446
  '(Press Enter to submit, Escape to cancel)':
1443
1447
  '(Pressione Enter para enviar, Escape para cancelar)',
1444
1448
  'More instructions please check:': 'Mais instruções, consulte:',
1449
+
1450
+ // ============================================================================
1451
+ // Coding Plan International Updates
1452
+ // ============================================================================
1453
+ 'New model configurations are available for {{region}}. Update now?':
1454
+ 'Novas configurações de modelo estão disponíveis para o {{region}}. Atualizar agora?',
1455
+ 'New model configurations are available for Bailian Coding Plan (China). Update now?':
1456
+ 'Novas configurações de modelo estão disponíveis para o Bailian Coding Plan (China). Atualizar agora?',
1457
+ 'New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?':
1458
+ 'Novas configurações de modelo estão disponíveis para o Coding Plan (Bailian, Global/Intl). Atualizar agora?',
1459
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".':
1460
+ 'Configuração do {{region}} atualizada com sucesso. Modelo alterado para "{{model}}".',
1461
+ 'Authenticated successfully with {{region}}. API key is stored in settings.env.':
1462
+ 'Autenticado com sucesso com {{region}}. A chave de API está armazenada em settings.env.',
1445
1463
  };
package/locales/ru.js CHANGED
@@ -1421,8 +1421,13 @@ export default {
1421
1421
  // Auth Dialog - View Titles and Labels
1422
1422
  // ============================================================================
1423
1423
  'Coding Plan': 'Coding Plan',
1424
+ 'Coding Plan (Bailian, China)': 'Coding Plan (Bailian, Китай)',
1425
+ 'Coding Plan (Bailian, Global/Intl)':
1426
+ 'Coding Plan (Bailian, Глобальный/Международный)',
1424
1427
  "Paste your api key of Bailian Coding Plan and you're all set!":
1425
1428
  'Вставьте ваш API-ключ Bailian Coding Plan и всё готово!',
1429
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!":
1430
+ 'Вставьте ваш API-ключ Coding Plan (Bailian, Глобальный/Международный) и всё готово!',
1426
1431
  Custom: 'Пользовательский',
1427
1432
  'More instructions about configuring `modelProviders` manually.':
1428
1433
  'Дополнительные инструкции по ручной настройке `modelProviders`.',
@@ -1431,4 +1436,18 @@ export default {
1431
1436
  '(Press Enter to submit, Escape to cancel)':
1432
1437
  '(Нажмите Enter для отправки, Escape для отмены)',
1433
1438
  'More instructions please check:': 'Дополнительные инструкции см.:',
1439
+
1440
+ // ============================================================================
1441
+ // Coding Plan International Updates
1442
+ // ============================================================================
1443
+ 'New model configurations are available for {{region}}. Update now?':
1444
+ 'Доступны новые конфигурации моделей для {{region}}. Обновить сейчас?',
1445
+ 'New model configurations are available for Bailian Coding Plan (China). Update now?':
1446
+ 'Доступны новые конфигурации моделей для Bailian Coding Plan (Китай). Обновить сейчас?',
1447
+ 'New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?':
1448
+ 'Доступны новые конфигурации моделей для Coding Plan (Bailian, Глобальный/Международный). Обновить сейчас?',
1449
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".':
1450
+ 'Конфигурация {{region}} успешно обновлена. Модель переключена на "{{model}}".',
1451
+ 'Authenticated successfully with {{region}}. API key is stored in settings.env.':
1452
+ 'Успешная аутентификация с {{region}}. API-ключ сохранён в settings.env.',
1434
1453
  };
package/locales/zh.js CHANGED
@@ -1253,12 +1253,30 @@ export default {
1253
1253
  // ============================================================================
1254
1254
  'API-KEY': 'API-KEY',
1255
1255
  'Coding Plan': 'Coding Plan',
1256
+ 'Coding Plan (Bailian, China)': 'Coding Plan (百炼, 中国)',
1257
+ 'Coding Plan (Bailian, Global/Intl)': 'Coding Plan (百炼, 全球/国际)',
1256
1258
  "Paste your api key of Bailian Coding Plan and you're all set!":
1257
1259
  '粘贴您的百炼 Coding Plan API Key,即可完成设置!',
1260
+ "Paste your api key of Coding Plan (Bailian, Global/Intl) and you're all set!":
1261
+ '粘贴您的 Coding Plan (百炼, 全球/国际) API Key,即可完成设置!',
1258
1262
  Custom: '自定义',
1259
1263
  'More instructions about configuring `modelProviders` manually.':
1260
1264
  '关于手动配置 `modelProviders` 的更多说明。',
1261
1265
  'Select API-KEY configuration mode:': '选择 API-KEY 配置模式:',
1262
1266
  '(Press Escape to go back)': '(按 Escape 键返回)',
1263
1267
  '(Press Enter to submit, Escape to cancel)': '(按 Enter 提交,Escape 取消)',
1268
+
1269
+ // ============================================================================
1270
+ // Coding Plan International Updates
1271
+ // ============================================================================
1272
+ 'New model configurations are available for {{region}}. Update now?':
1273
+ '{{region}} 有新的模型配置可用。是否立即更新?',
1274
+ 'New model configurations are available for Bailian Coding Plan (China). Update now?':
1275
+ '百炼 Coding Plan (中国) 有新的模型配置可用。是否立即更新?',
1276
+ 'New model configurations are available for Coding Plan (Bailian, Global/Intl). Update now?':
1277
+ 'Coding Plan (百炼, 全球/国际) 有新的模型配置可用。是否立即更新?',
1278
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".':
1279
+ '{{region}} 配置更新成功。模型已切换至 "{{model}}"。',
1280
+ 'Authenticated successfully with {{region}}. API key is stored in settings.env.':
1281
+ '成功通过 {{region}} 认证。API Key 已存储在 settings.env 中。',
1264
1282
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qwen-code/qwen-code",
3
- "version": "0.10.3",
3
+ "version": "0.10.4-preview.0",
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.3"
23
+ "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.10.4-preview.0"
24
24
  },
25
25
  "dependencies": {},
26
26
  "optionalDependencies": {