@qwen-code/qwen-code 0.10.2 → 0.10.4-nightly.20260219.c6a723ef

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/cli.js CHANGED
@@ -133516,7 +133516,10 @@ var init_tokenLimits = __esm({
133516
133516
  // Commercial Qwen3-Coder-Flash: 1M token context
133517
133517
  [/^qwen3-coder-flash(-.*)?$/, LIMITS["1m"]],
133518
133518
  // catches "qwen3-coder-flash" and date variants
133519
- // Generic coder-model: same as qwen3-coder-plus (1M token context)
133519
+ // Commercial Qwen3.5-Plus: 1M token context
133520
+ [/^qwen3\.5-plus(-.*)?$/, LIMITS["1m"]],
133521
+ // catches "qwen3.5-plus" and date variants
133522
+ // Generic coder-model: same as qwen3.5-plus (1M token context)
133520
133523
  [/^coder-model$/, LIMITS["1m"]],
133521
133524
  // Commercial Qwen3-Max-Preview: 256K token context
133522
133525
  [/^qwen3-max(-preview)?(-.*)?$/, LIMITS["256k"]],
@@ -133584,7 +133587,9 @@ var init_tokenLimits = __esm({
133584
133587
  // -------------------
133585
133588
  // Qwen3-Coder-Plus: 65,536 max output tokens
133586
133589
  [/^qwen3-coder-plus(-.*)?$/, LIMITS["64k"]],
133587
- // Generic coder-model: same as qwen3-coder-plus (64K max output tokens)
133590
+ // Qwen3.5-Plus: 65,536 max output tokens
133591
+ [/^qwen3\.5-plus(-.*)?$/, LIMITS["64k"]],
133592
+ // Generic coder-model: same as qwen3.5-plus (64K max output tokens)
133588
133593
  [/^coder-model$/, LIMITS["64k"]],
133589
133594
  // Qwen3-Max: 65,536 max output tokens
133590
133595
  [/^qwen3-max(-preview)?(-.*)?$/, LIMITS["64k"]],
@@ -133691,7 +133696,7 @@ var init_constants3 = __esm({
133691
133696
  {
133692
133697
  id: "coder-model",
133693
133698
  name: "coder-model",
133694
- description: "The latest Qwen Coder model from Alibaba Cloud ModelStudio",
133699
+ description: "Qwen 3.5 Plus \u2014 efficient hybrid model with leading coding performance",
133695
133700
  capabilities: { vision: false }
133696
133701
  },
133697
133702
  {
@@ -157317,7 +157322,7 @@ __export(geminiContentGenerator_exports, {
157317
157322
  createGeminiContentGenerator: () => createGeminiContentGenerator
157318
157323
  });
157319
157324
  function createGeminiContentGenerator(config2, gcConfig) {
157320
- const version2 = "0.10.2";
157325
+ const version2 = "0.10.4-nightly.20260219.c6a723ef";
157321
157326
  const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
157322
157327
  const baseHeaders = {
157323
157328
  "User-Agent": userAgent2
@@ -298070,7 +298075,7 @@ var init_de = __esm({
298070
298075
  "(set)": "(gesetzt)",
298071
298076
  "(not set)": "(nicht gesetzt)",
298072
298077
  "Failed to switch model to '{{modelId}}'.\n\n{{error}}": "Modell konnte nicht auf '{{modelId}}' umgestellt werden.\n\n{{error}}",
298073
- "The latest Qwen Coder model from Alibaba Cloud ModelStudio (version: qwen3-coder-plus-2025-09-23)": "Das neueste Qwen Coder Modell von Alibaba Cloud ModelStudio (Version: qwen3-coder-plus-2025-09-23)",
298078
+ "Qwen 3.5 Plus \u2014 efficient hybrid model with leading coding performance": "Qwen 3.5 Plus \u2014 effizientes Hybridmodell mit f\xFChrender Programmierleistung",
298074
298079
  "The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)": "Das neueste Qwen Vision Modell von Alibaba Cloud ModelStudio (Version: qwen3-vl-plus-2025-09-23)",
298075
298080
  // ============================================================================
298076
298081
  // Dialogs - Permissions
@@ -298391,13 +298396,24 @@ var init_de = __esm({
298391
298396
  // Auth Dialog - View Titles and Labels
298392
298397
  // ============================================================================
298393
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)",
298394
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!",
298395
298403
  Custom: "Benutzerdefiniert",
298396
298404
  "More instructions about configuring `modelProviders` manually.": "Weitere Anweisungen zur manuellen Konfiguration von `modelProviders`.",
298397
298405
  "Select API-KEY configuration mode:": "API-KEY-Konfigurationsmodus ausw\xE4hlen:",
298398
298406
  "(Press Escape to go back)": "(Escape dr\xFCcken zum Zur\xFCckgehen)",
298399
298407
  "(Press Enter to submit, Escape to cancel)": "(Enter zum Absenden, Escape zum Abbrechen)",
298400
- "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."
298401
298417
  };
298402
298418
  }
298403
298419
  });
@@ -299140,7 +299156,7 @@ var init_en3 = __esm({
299140
299156
  "(set)": "(set)",
299141
299157
  "(not set)": "(not set)",
299142
299158
  "Failed to switch model to '{{modelId}}'.\n\n{{error}}": "Failed to switch model to '{{modelId}}'.\n\n{{error}}",
299143
- "The latest Qwen Coder model from Alibaba Cloud ModelStudio (version: qwen3-coder-plus-2025-09-23)": "The latest Qwen Coder model from Alibaba Cloud ModelStudio (version: qwen3-coder-plus-2025-09-23)",
299159
+ "Qwen 3.5 Plus \u2014 efficient hybrid model with leading coding performance": "Qwen 3.5 Plus \u2014 efficient hybrid model with leading coding performance",
299144
299160
  "The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)": "The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)",
299145
299161
  // ============================================================================
299146
299162
  // Dialogs - Permissions
@@ -299471,12 +299487,23 @@ var init_en3 = __esm({
299471
299487
  // Auth Dialog - View Titles and Labels
299472
299488
  // ============================================================================
299473
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)",
299474
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!",
299475
299494
  Custom: "Custom",
299476
299495
  "More instructions about configuring `modelProviders` manually.": "More instructions about configuring `modelProviders` manually.",
299477
299496
  "Select API-KEY configuration mode:": "Select API-KEY configuration mode:",
299478
299497
  "(Press Escape to go back)": "(Press Escape to go back)",
299479
- "(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."
299480
299507
  };
299481
299508
  }
299482
299509
  });
@@ -300021,7 +300048,7 @@ var init_ja = __esm({
300021
300048
  // Dialogs - Model
300022
300049
  "Select Model": "\u30E2\u30C7\u30EB\u3092\u9078\u629E",
300023
300050
  "(Press Esc to close)": "(Esc \u3067\u9589\u3058\u308B)",
300024
- "The latest Qwen Coder model from Alibaba Cloud ModelStudio (version: qwen3-coder-plus-2025-09-23)": "Alibaba Cloud ModelStudio\u306E\u6700\u65B0Qwen Coder\u30E2\u30C7\u30EB(\u30D0\u30FC\u30B8\u30E7\u30F3: qwen3-coder-plus-2025-09-23)",
300051
+ "Qwen 3.5 Plus \u2014 efficient hybrid model with leading coding performance": "Qwen 3.5 Plus \u2014 \u52B9\u7387\u7684\u306A\u30CF\u30A4\u30D6\u30EA\u30C3\u30C9\u30E2\u30C7\u30EB\u3001\u696D\u754C\u30C8\u30C3\u30D7\u30AF\u30E9\u30B9\u306E\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u6027\u80FD",
300025
300052
  "The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)": "Alibaba Cloud ModelStudio\u306E\u6700\u65B0Qwen Vision\u30E2\u30C7\u30EB(\u30D0\u30FC\u30B8\u30E7\u30F3: qwen3-vl-plus-2025-09-23)",
300026
300053
  // Dialogs - Permissions
300027
300054
  "Manage folder trust settings": "\u30D5\u30A9\u30EB\u30C0\u4FE1\u983C\u8A2D\u5B9A\u3092\u7BA1\u7406",
@@ -300187,13 +300214,24 @@ var init_ja = __esm({
300187
300214
  // Auth Dialog - View Titles and Labels
300188
300215
  // ============================================================================
300189
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)",
300190
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",
300191
300221
  Custom: "\u30AB\u30B9\u30BF\u30E0",
300192
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",
300193
300223
  "Select API-KEY configuration mode:": "API-KEY\u8A2D\u5B9A\u30E2\u30FC\u30C9\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\uFF1A",
300194
300224
  "(Press Escape to go back)": "(Escape\u30AD\u30FC\u3067\u623B\u308B)",
300195
300225
  "(Press Enter to submit, Escape to cancel)": "(Enter\u3067\u9001\u4FE1\u3001Escape\u3067\u30AD\u30E3\u30F3\u30BB\u30EB)",
300196
- "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"
300197
300235
  };
300198
300236
  }
300199
300237
  });
@@ -300930,7 +300968,7 @@ var init_pt = __esm({
300930
300968
  "(set)": "(definido)",
300931
300969
  "(not set)": "(n\xE3o definido)",
300932
300970
  "Failed to switch model to '{{modelId}}'.\n\n{{error}}": "Falha ao trocar o modelo para '{{modelId}}'.\n\n{{error}}",
300933
- "The latest Qwen Coder model from Alibaba Cloud ModelStudio (version: qwen3-coder-plus-2025-09-23)": "O modelo Qwen Coder mais recente do Alibaba Cloud ModelStudio (vers\xE3o: qwen3-coder-plus-2025-09-23)",
300971
+ "Qwen 3.5 Plus \u2014 efficient hybrid model with leading coding performance": "Qwen 3.5 Plus \u2014 modelo h\xEDbrido eficiente com desempenho l\xEDder em programa\xE7\xE3o",
300934
300972
  "The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)": "O modelo Qwen Vision mais recente do Alibaba Cloud ModelStudio (vers\xE3o: qwen3-vl-plus-2025-09-23)",
300935
300973
  // ============================================================================
300936
300974
  // Dialogs - Permissions
@@ -301250,13 +301288,24 @@ var init_pt = __esm({
301250
301288
  // Auth Dialog - View Titles and Labels
301251
301289
  // ============================================================================
301252
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)",
301253
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!",
301254
301295
  Custom: "Personalizado",
301255
301296
  "More instructions about configuring `modelProviders` manually.": "Mais instru\xE7\xF5es sobre como configurar `modelProviders` manualmente.",
301256
301297
  "Select API-KEY configuration mode:": "Selecione o modo de configura\xE7\xE3o da API-KEY:",
301257
301298
  "(Press Escape to go back)": "(Pressione Escape para voltar)",
301258
301299
  "(Press Enter to submit, Escape to cancel)": "(Pressione Enter para enviar, Escape para cancelar)",
301259
- "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."
301260
301309
  };
301261
301310
  }
301262
301311
  });
@@ -301999,7 +302048,7 @@ var init_ru = __esm({
301999
302048
  "(set)": "(\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E)",
302000
302049
  "(not set)": "(\u043D\u0435 \u0437\u0430\u0434\u0430\u043D\u043E)",
302001
302050
  "Failed to switch model to '{{modelId}}'.\n\n{{error}}": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043D\u0430 \u043C\u043E\u0434\u0435\u043B\u044C '{{modelId}}'.\n\n{{error}}",
302002
- "The latest Qwen Coder model from Alibaba Cloud ModelStudio (version: qwen3-coder-plus-2025-09-23)": "\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u043C\u043E\u0434\u0435\u043B\u044C Qwen Coder \u043E\u0442 Alibaba Cloud ModelStudio (\u0432\u0435\u0440\u0441\u0438\u044F: qwen3-coder-plus-2025-09-23)",
302051
+ "Qwen 3.5 Plus \u2014 efficient hybrid model with leading coding performance": "Qwen 3.5 Plus \u2014 \u044D\u0444\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u0430\u044F \u0433\u0438\u0431\u0440\u0438\u0434\u043D\u0430\u044F \u043C\u043E\u0434\u0435\u043B\u044C \u0441 \u043B\u0438\u0434\u0438\u0440\u0443\u044E\u0449\u0435\u0439 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C\u044E \u0432 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0438",
302003
302052
  "The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)": "\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u043C\u043E\u0434\u0435\u043B\u044C Qwen Vision \u043E\u0442 Alibaba Cloud ModelStudio (\u0432\u0435\u0440\u0441\u0438\u044F: qwen3-vl-plus-2025-09-23)",
302004
302053
  // ============================================================================
302005
302054
  // Диалоги - Разрешения
@@ -302321,13 +302370,24 @@ var init_ru = __esm({
302321
302370
  // Auth Dialog - View Titles and Labels
302322
302371
  // ============================================================================
302323
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)",
302324
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!",
302325
302377
  Custom: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439",
302326
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`.",
302327
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:",
302328
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)",
302329
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)",
302330
- "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."
302331
302391
  };
302332
302392
  }
302333
302393
  });
@@ -303069,7 +303129,7 @@ var init_zh = __esm({
303069
303129
  "(set)": "(\u5DF2\u8BBE\u7F6E)",
303070
303130
  "(not set)": "(\u672A\u8BBE\u7F6E)",
303071
303131
  "Failed to switch model to '{{modelId}}'.\n\n{{error}}": "\u65E0\u6CD5\u5207\u6362\u5230\u6A21\u578B '{{modelId}}'.\n\n{{error}}",
303072
- "The latest Qwen Coder model from Alibaba Cloud ModelStudio (version: qwen3-coder-plus-2025-09-23)": "\u6765\u81EA\u963F\u91CC\u4E91 ModelStudio \u7684\u6700\u65B0 Qwen Coder \u6A21\u578B\uFF08\u7248\u672C\uFF1Aqwen3-coder-plus-2025-09-23\uFF09",
303132
+ "Qwen 3.5 Plus \u2014 efficient hybrid model with leading coding performance": "Qwen 3.5 Plus \u2014 \u9AD8\u6548\u6DF7\u5408\u67B6\u6784\uFF0C\u7F16\u7A0B\u6027\u80FD\u4E1A\u754C\u9886\u5148",
303073
303133
  "The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)": "\u6765\u81EA\u963F\u91CC\u4E91 ModelStudio \u7684\u6700\u65B0 Qwen Vision \u6A21\u578B\uFF08\u7248\u672C\uFF1Aqwen3-vl-plus-2025-09-23\uFF09",
303074
303134
  // ============================================================================
303075
303135
  // Dialogs - Permissions
@@ -303300,12 +303360,23 @@ var init_zh = __esm({
303300
303360
  // ============================================================================
303301
303361
  "API-KEY": "API-KEY",
303302
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)",
303303
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",
303304
303367
  Custom: "\u81EA\u5B9A\u4E49",
303305
303368
  "More instructions about configuring `modelProviders` manually.": "\u5173\u4E8E\u624B\u52A8\u914D\u7F6E `modelProviders` \u7684\u66F4\u591A\u8BF4\u660E\u3002",
303306
303369
  "Select API-KEY configuration mode:": "\u9009\u62E9 API-KEY \u914D\u7F6E\u6A21\u5F0F\uFF1A",
303307
303370
  "(Press Escape to go back)": "(\u6309 Escape \u952E\u8FD4\u56DE)",
303308
- "(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"
303309
303380
  };
303310
303381
  }
303311
303382
  });
@@ -374373,7 +374444,7 @@ __name(getPackageJson, "getPackageJson");
374373
374444
  // packages/cli/src/utils/version.ts
374374
374445
  async function getCliVersion() {
374375
374446
  const pkgJson = await getPackageJson();
374376
- return "0.10.2";
374447
+ return "0.10.4-nightly.20260219.c6a723ef";
374377
374448
  }
374378
374449
  __name(getCliVersion, "getCliVersion");
374379
374450
 
@@ -381922,7 +381993,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
381922
381993
 
381923
381994
  // packages/cli/src/generated/git-commit.ts
381924
381995
  init_esbuild_shims();
381925
- var GIT_COMMIT_INFO = "72ed0d7b";
381996
+ var GIT_COMMIT_INFO = "79ecfe73";
381926
381997
 
381927
381998
  // packages/cli/src/utils/systemInfo.ts
381928
381999
  async function getNpmVersion() {
@@ -392526,128 +392597,200 @@ __name(getPersistScopeForModelSelection, "getPersistScopeForModelSelection");
392526
392597
  init_esbuild_shims();
392527
392598
  import { createHash as createHash7 } from "node:crypto";
392528
392599
  var CODING_PLAN_ENV_KEY = "BAILIAN_CODING_PLAN_API_KEY";
392529
- var CODING_PLAN_MODELS = [
392530
- {
392531
- id: "qwen3-coder-plus",
392532
- name: "qwen3-coder-plus",
392533
- baseUrl: "https://coding.dashscope.aliyuncs.com/v1",
392534
- description: "qwen3-coder-plus model from Bailian Coding Plan",
392535
- envKey: CODING_PLAN_ENV_KEY
392536
- },
392537
- {
392538
- id: "qwen3-max-2026-01-23",
392539
- name: "qwen3-max-2026-01-23",
392540
- description: "qwen3-max model with thinking enabled from Bailian Coding Plan",
392541
- baseUrl: "https://coding.dashscope.aliyuncs.com/v1",
392542
- envKey: CODING_PLAN_ENV_KEY,
392543
- generationConfig: {
392544
- extra_body: {
392545
- 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.5-plus",
392610
+ name: "qwen3.5-plus",
392611
+ description: "qwen3.5-plus model with thinking enabled from Bailian Coding Plan",
392612
+ baseUrl: "https://coding.dashscope.aliyuncs.com/v1",
392613
+ envKey: CODING_PLAN_ENV_KEY,
392614
+ generationConfig: {
392615
+ extra_body: {
392616
+ enable_thinking: true
392617
+ }
392618
+ }
392619
+ },
392620
+ {
392621
+ id: "qwen3-coder-plus",
392622
+ name: "qwen3-coder-plus",
392623
+ baseUrl: "https://coding.dashscope.aliyuncs.com/v1",
392624
+ description: "qwen3-coder-plus model from Bailian Coding Plan",
392625
+ envKey: CODING_PLAN_ENV_KEY
392626
+ },
392627
+ {
392628
+ id: "qwen3-max-2026-01-23",
392629
+ name: "qwen3-max-2026-01-23",
392630
+ description: "qwen3-max model with thinking enabled from Bailian Coding Plan",
392631
+ baseUrl: "https://coding.dashscope.aliyuncs.com/v1",
392632
+ envKey: CODING_PLAN_ENV_KEY,
392633
+ generationConfig: {
392634
+ extra_body: {
392635
+ enable_thinking: true
392636
+ }
392637
+ }
392638
+ }
392639
+ ];
392640
+ }
392641
+ return [
392642
+ {
392643
+ id: "qwen3.5-plus",
392644
+ name: "qwen3.5-plus",
392645
+ description: "qwen3.5-plus model with thinking enabled from Coding Plan (Global/Intl)",
392646
+ baseUrl: "https://coding-intl.dashscope.aliyuncs.com/v1",
392647
+ envKey: CODING_PLAN_ENV_KEY,
392648
+ generationConfig: {
392649
+ extra_body: {
392650
+ enable_thinking: true
392651
+ }
392652
+ }
392653
+ },
392654
+ {
392655
+ id: "qwen3-coder-plus",
392656
+ name: "qwen3-coder-plus",
392657
+ baseUrl: "https://coding-intl.dashscope.aliyuncs.com/v1",
392658
+ description: "qwen3-coder-plus model from Coding Plan (Global/Intl)",
392659
+ envKey: CODING_PLAN_ENV_KEY
392660
+ },
392661
+ {
392662
+ id: "qwen3-max-2026-01-23",
392663
+ name: "qwen3-max-2026-01-23",
392664
+ description: "qwen3-max model with thinking enabled from Coding Plan (Global/Intl)",
392665
+ baseUrl: "https://coding-intl.dashscope.aliyuncs.com/v1",
392666
+ envKey: CODING_PLAN_ENV_KEY,
392667
+ generationConfig: {
392668
+ extra_body: {
392669
+ enable_thinking: true
392670
+ }
392546
392671
  }
392547
392672
  }
392673
+ ];
392674
+ }
392675
+ __name(generateCodingPlanTemplate, "generateCodingPlanTemplate");
392676
+ function getCodingPlanConfig(region) {
392677
+ const template = generateCodingPlanTemplate(region);
392678
+ const baseUrl = region === "china" /* CHINA */ ? "https://coding.dashscope.aliyuncs.com/v1" : "https://coding-intl.dashscope.aliyuncs.com/v1";
392679
+ const regionName = region === "china" /* CHINA */ ? "Coding Plan (Bailian, China)" : "Coding Plan (Bailian, Global/Intl)";
392680
+ return {
392681
+ template,
392682
+ baseUrl,
392683
+ regionName,
392684
+ version: computeCodingPlanVersion(template)
392685
+ };
392686
+ }
392687
+ __name(getCodingPlanConfig, "getCodingPlanConfig");
392688
+ function isCodingPlanConfig(baseUrl, envKey) {
392689
+ if (!baseUrl || !envKey) {
392690
+ return false;
392548
392691
  }
392549
- ];
392550
- function computeCodingPlanVersion() {
392551
- const templateString2 = JSON.stringify(CODING_PLAN_MODELS);
392552
- return createHash7("sha256").update(templateString2).digest("hex");
392692
+ if (envKey !== CODING_PLAN_ENV_KEY) {
392693
+ return false;
392694
+ }
392695
+ if (baseUrl === "https://coding.dashscope.aliyuncs.com/v1") {
392696
+ return "china" /* CHINA */;
392697
+ }
392698
+ if (baseUrl === "https://coding-intl.dashscope.aliyuncs.com/v1") {
392699
+ return "global" /* GLOBAL */;
392700
+ }
392701
+ return false;
392553
392702
  }
392554
- __name(computeCodingPlanVersion, "computeCodingPlanVersion");
392555
- var CODING_PLAN_VERSION = computeCodingPlanVersion();
392703
+ __name(isCodingPlanConfig, "isCodingPlanConfig");
392556
392704
 
392557
392705
  // packages/cli/src/ui/hooks/useCodingPlanUpdates.ts
392558
- function isCodingPlanConfig(config2) {
392559
- return config2.envKey === CODING_PLAN_ENV_KEY && CODING_PLAN_MODELS.some((template) => template.baseUrl === config2.baseUrl);
392560
- }
392561
- __name(isCodingPlanConfig, "isCodingPlanConfig");
392562
392706
  function useCodingPlanUpdates(settings, config2, addItem) {
392563
392707
  const [updateRequest, setUpdateRequest] = (0, import_react31.useState)();
392564
- const executeUpdate = (0, import_react31.useCallback)(async () => {
392565
- try {
392566
- const persistScope = getPersistScopeForModelSelection(settings);
392567
- const currentConfigs = settings.merged.modelProviders?.[AuthType2.USE_OPENAI] || [];
392568
- const nonCodingPlanConfigs = currentConfigs.filter(
392569
- (cfg) => !isCodingPlanConfig({
392570
- baseUrl: cfg["baseUrl"],
392571
- envKey: cfg["envKey"]
392572
- })
392573
- );
392574
- const apiKey = process.env[CODING_PLAN_ENV_KEY];
392575
- if (!apiKey) {
392576
- throw new Error(
392577
- t4(
392578
- "Coding Plan API key not found. Please re-authenticate with Coding Plan."
392708
+ const executeUpdate = (0, import_react31.useCallback)(
392709
+ async (region = "china" /* CHINA */) => {
392710
+ try {
392711
+ const persistScope = getPersistScopeForModelSelection(settings);
392712
+ const currentConfigs = settings.merged.modelProviders?.[AuthType2.USE_OPENAI] || [];
392713
+ const nonCodingPlanConfigs = currentConfigs.filter(
392714
+ (cfg) => !isCodingPlanConfig(
392715
+ cfg["baseUrl"],
392716
+ cfg["envKey"]
392579
392717
  )
392580
392718
  );
392719
+ const { template, version: version2, regionName } = getCodingPlanConfig(region);
392720
+ const newConfigs = template.map((templateConfig) => ({
392721
+ ...templateConfig,
392722
+ envKey: CODING_PLAN_ENV_KEY
392723
+ }));
392724
+ const updatedConfigs = [
392725
+ ...newConfigs,
392726
+ ...nonCodingPlanConfigs
392727
+ ];
392728
+ const updatedModelProviders = {
392729
+ ...settings.merged.modelProviders,
392730
+ [AuthType2.USE_OPENAI]: updatedConfigs
392731
+ };
392732
+ config2.reloadModelProvidersConfig(
392733
+ updatedModelProviders
392734
+ );
392735
+ await config2.refreshAuth(AuthType2.USE_OPENAI);
392736
+ settings.setValue(
392737
+ persistScope,
392738
+ `modelProviders.${AuthType2.USE_OPENAI}`,
392739
+ updatedConfigs
392740
+ );
392741
+ settings.setValue(persistScope, "codingPlan.version", version2);
392742
+ settings.setValue(persistScope, "codingPlan.region", region);
392743
+ const activeModel = config2.getModel();
392744
+ addItem(
392745
+ {
392746
+ type: "info",
392747
+ text: t4(
392748
+ '{{region}} configuration updated successfully. Model switched to "{{model}}".',
392749
+ { region: regionName, model: activeModel }
392750
+ )
392751
+ },
392752
+ Date.now()
392753
+ );
392754
+ return true;
392755
+ } catch (error2) {
392756
+ const errorMessage = error2 instanceof Error ? error2.message : String(error2);
392757
+ addItem(
392758
+ {
392759
+ type: "error",
392760
+ text: t4("Failed to update Coding Plan configuration: {{message}}", {
392761
+ message: errorMessage
392762
+ })
392763
+ },
392764
+ Date.now()
392765
+ );
392766
+ return false;
392581
392767
  }
392582
- const newConfigs = CODING_PLAN_MODELS.map((templateConfig) => ({
392583
- ...templateConfig,
392584
- envKey: CODING_PLAN_ENV_KEY
392585
- }));
392586
- const updatedConfigs = [
392587
- ...newConfigs,
392588
- ...nonCodingPlanConfigs
392589
- ];
392590
- settings.setValue(
392591
- persistScope,
392592
- `modelProviders.${AuthType2.USE_OPENAI}`,
392593
- updatedConfigs
392594
- );
392595
- settings.setValue(
392596
- persistScope,
392597
- "codingPlan.version",
392598
- CODING_PLAN_VERSION
392599
- );
392600
- const updatedModelProviders = {
392601
- ...settings.merged.modelProviders,
392602
- [AuthType2.USE_OPENAI]: updatedConfigs
392603
- };
392604
- config2.reloadModelProvidersConfig(
392605
- updatedModelProviders
392606
- );
392607
- await config2.refreshAuth(AuthType2.USE_OPENAI);
392608
- addItem(
392609
- {
392610
- type: "info",
392611
- text: t4(
392612
- "Coding Plan configuration updated successfully. New models are now available."
392613
- )
392614
- },
392615
- Date.now()
392616
- );
392617
- return true;
392618
- } catch (error2) {
392619
- const errorMessage = error2 instanceof Error ? error2.message : String(error2);
392620
- addItem(
392621
- {
392622
- type: "error",
392623
- text: t4("Failed to update Coding Plan configuration: {{message}}", {
392624
- message: errorMessage
392625
- })
392626
- },
392627
- Date.now()
392628
- );
392629
- return false;
392630
- }
392631
- }, [settings, config2, addItem]);
392768
+ },
392769
+ [settings, config2, addItem]
392770
+ );
392632
392771
  const checkForUpdates2 = (0, import_react31.useCallback)(() => {
392633
- const savedVersion = settings.merged.codingPlan?.version;
392772
+ const mergedSettings = settings.merged;
392773
+ const region = mergedSettings.codingPlan?.region ?? "china" /* CHINA */;
392774
+ const savedVersion = mergedSettings.codingPlan?.version;
392634
392775
  if (!savedVersion) {
392635
392776
  return;
392636
392777
  }
392637
- if (savedVersion === CODING_PLAN_VERSION) {
392638
- return;
392778
+ const currentVersion = getCodingPlanConfig(region).version;
392779
+ if (savedVersion !== currentVersion) {
392780
+ const { regionName } = getCodingPlanConfig(region);
392781
+ setUpdateRequest({
392782
+ prompt: t4(
392783
+ "New model configurations are available for {{region}}. Update now?",
392784
+ { region: regionName }
392785
+ ),
392786
+ onConfirm: /* @__PURE__ */ __name(async (confirmed) => {
392787
+ setUpdateRequest(void 0);
392788
+ if (confirmed) {
392789
+ await executeUpdate(region);
392790
+ }
392791
+ }, "onConfirm")
392792
+ });
392639
392793
  }
392640
- setUpdateRequest({
392641
- prompt: t4(
392642
- "New model configurations are available for Bailian Coding Plan. Update now?"
392643
- ),
392644
- onConfirm: /* @__PURE__ */ __name(async (confirmed) => {
392645
- setUpdateRequest(void 0);
392646
- if (confirmed) {
392647
- await executeUpdate();
392648
- }
392649
- }, "onConfirm")
392650
- });
392651
392794
  }, [settings, executeUpdate]);
392652
392795
  (0, import_react31.useEffect)(() => {
392653
392796
  checkForUpdates2();
@@ -418956,12 +419099,15 @@ init_esbuild_shims();
418956
419099
  var import_react80 = __toESM(require_react(), 1);
418957
419100
  var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1);
418958
419101
  var CODING_PLAN_API_KEY_URL = "https://bailian.console.aliyun.com/?tab=model#/efm/coding_plan";
419102
+ var CODING_PLAN_INTL_API_KEY_URL = "https://modelstudio.console.alibabacloud.com/?tab=dashboard#/efm/coding_plan";
418959
419103
  function ApiKeyInput({
418960
419104
  onSubmit,
418961
- onCancel
419105
+ onCancel,
419106
+ region = "china" /* CHINA */
418962
419107
  }) {
418963
419108
  const [apiKey, setApiKey] = (0, import_react80.useState)("");
418964
419109
  const [error2, setError] = (0, import_react80.useState)(null);
419110
+ const apiKeyUrl = region === "global" /* GLOBAL */ ? CODING_PLAN_INTL_API_KEY_URL : CODING_PLAN_API_KEY_URL;
418965
419111
  useKeypress(
418966
419112
  (key) => {
418967
419113
  if (key.name === "escape") {
@@ -418982,7 +419128,7 @@ function ApiKeyInput({
418982
419128
  /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(TextInput, { value: apiKey, onChange: setApiKey, placeholder: "sk-sp-..." }),
418983
419129
  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 }) }),
418984
419130
  /* @__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:") }) }),
418985
- /* @__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 }) }) }),
419131
+ /* @__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 }) }) }),
418986
419132
  /* @__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)") }) })
418987
419133
  ] });
418988
419134
  }
@@ -419088,6 +419234,9 @@ function AuthDialog() {
419088
419234
  const [selectedIndex, setSelectedIndex] = (0, import_react82.useState)(null);
419089
419235
  const [viewLevel, setViewLevel] = (0, import_react82.useState)("main");
419090
419236
  const [apiKeySubModeIndex, setApiKeySubModeIndex] = (0, import_react82.useState)(0);
419237
+ const [region, setRegion] = (0, import_react82.useState)(
419238
+ "china" /* CHINA */
419239
+ );
419091
419240
  const mainItems = [
419092
419241
  {
419093
419242
  key: AuthType2.QWEN_OAUTH,
@@ -419103,9 +419252,14 @@ function AuthDialog() {
419103
419252
  const apiKeySubItems = [
419104
419253
  {
419105
419254
  key: "coding-plan",
419106
- label: t4("Coding Plan (Bailian)"),
419255
+ label: t4("Coding Plan (Bailian, China)"),
419107
419256
  value: "coding-plan"
419108
419257
  },
419258
+ {
419259
+ key: "coding-plan-intl",
419260
+ label: t4("Coding Plan (Bailian, Global/Intl)"),
419261
+ value: "coding-plan-intl"
419262
+ },
419109
419263
  {
419110
419264
  key: "custom",
419111
419265
  label: t4("Custom"),
@@ -419146,6 +419300,10 @@ function AuthDialog() {
419146
419300
  setErrorMessage(null);
419147
419301
  onAuthError(null);
419148
419302
  if (subMode === "coding-plan") {
419303
+ setRegion("china" /* CHINA */);
419304
+ setViewLevel("api-key-input");
419305
+ } else if (subMode === "coding-plan-intl") {
419306
+ setRegion("global" /* GLOBAL */);
419149
419307
  setViewLevel("api-key-input");
419150
419308
  } else {
419151
419309
  setViewLevel("custom-info");
@@ -419157,7 +419315,7 @@ function AuthDialog() {
419157
419315
  setErrorMessage(t4("API key cannot be empty."));
419158
419316
  return;
419159
419317
  }
419160
- await handleCodingPlanSubmit(apiKey);
419318
+ await handleCodingPlanSubmit(apiKey, region);
419161
419319
  }, "handleApiKeyInputSubmit");
419162
419320
  const handleGoBack = /* @__PURE__ */ __name(() => {
419163
419321
  setErrorMessage(null);
@@ -419228,12 +419386,21 @@ function AuthDialog() {
419228
419386
  }
419229
419387
  }
419230
419388
  ) }),
419231
- /* @__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(
419389
+ /* @__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(
419232
419390
  "More instructions about configuring `modelProviders` manually."
419391
+ ) : t4(
419392
+ "Paste your api key of Bailian Coding Plan and you're all set!"
419233
419393
  ) }) }),
419234
419394
  /* @__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)") }) })
419235
419395
  ] }), "renderApiKeySubView");
419236
- 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");
419396
+ const renderApiKeyInputView = /* @__PURE__ */ __name(() => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
419397
+ ApiKeyInput,
419398
+ {
419399
+ onSubmit: handleApiKeyInputSubmit,
419400
+ onCancel: handleGoBack,
419401
+ region
419402
+ }
419403
+ ) }), "renderApiKeyInputView");
419237
419404
  const renderCustomInfoView = /* @__PURE__ */ __name(() => /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(import_jsx_runtime82.Fragment, { children: [
419238
419405
  /* @__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") }) }),
419239
419406
  /* @__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.") }) }),
@@ -419716,7 +419883,7 @@ var AVAILABLE_MODELS_QWEN = [
419716
419883
  label: MAINLINE_CODER,
419717
419884
  get description() {
419718
419885
  return t4(
419719
- "The latest Qwen Coder model from Alibaba Cloud ModelStudio (version: qwen3-coder-plus-2025-09-23)"
419886
+ "Qwen 3.5 Plus \u2014 efficient hybrid model with leading coding performance"
419720
419887
  );
419721
419888
  }
419722
419889
  },
@@ -424453,26 +424620,23 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config2, addItem, onAuthC
424453
424620
  setAuthError(null);
424454
424621
  }, [isAuthenticating, pendingAuthType, cancelQwenAuth, config2]);
424455
424622
  const handleCodingPlanSubmit = (0, import_react104.useCallback)(
424456
- async (apiKey) => {
424623
+ async (apiKey, region = "china" /* CHINA */) => {
424457
424624
  try {
424458
424625
  setIsAuthenticating(true);
424459
424626
  setAuthError(null);
424460
- const envKeyName = CODING_PLAN_ENV_KEY;
424627
+ const { template, version: version2, regionName } = getCodingPlanConfig(region);
424461
424628
  const persistScope = getPersistScopeForModelSelection(settings);
424462
- settings.setValue(persistScope, `env.${envKeyName}`, apiKey);
424463
- process.env[envKeyName] = apiKey;
424464
- const newConfigs = CODING_PLAN_MODELS.map(
424629
+ settings.setValue(persistScope, `env.${CODING_PLAN_ENV_KEY}`, apiKey);
424630
+ process.env[CODING_PLAN_ENV_KEY] = apiKey;
424631
+ const newConfigs = template.map(
424465
424632
  (templateConfig) => ({
424466
424633
  ...templateConfig,
424467
- envKey: envKeyName
424634
+ envKey: CODING_PLAN_ENV_KEY
424468
424635
  })
424469
424636
  );
424470
424637
  const existingConfigs = settings.merged.modelProviders?.[AuthType2.USE_OPENAI] || [];
424471
- const isCodingPlanConfig2 = /* @__PURE__ */ __name((config3) => config3.envKey === envKeyName && CODING_PLAN_MODELS.some(
424472
- (template) => template.baseUrl === config3.baseUrl
424473
- ), "isCodingPlanConfig");
424474
424638
  const nonCodingPlanConfigs = existingConfigs.filter(
424475
- (existing) => !isCodingPlanConfig2(existing)
424639
+ (existing) => !isCodingPlanConfig(existing.baseUrl, existing.envKey)
424476
424640
  );
424477
424641
  const updatedConfigs = [...newConfigs, ...nonCodingPlanConfigs];
424478
424642
  settings.setValue(
@@ -424485,11 +424649,8 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config2, addItem, onAuthC
424485
424649
  "security.auth.selectedType",
424486
424650
  AuthType2.USE_OPENAI
424487
424651
  );
424488
- settings.setValue(
424489
- persistScope,
424490
- "codingPlan.version",
424491
- CODING_PLAN_VERSION
424492
- );
424652
+ settings.setValue(persistScope, "codingPlan.region", region);
424653
+ settings.setValue(persistScope, "codingPlan.version", version2);
424493
424654
  if (updatedConfigs.length > 0 && updatedConfigs[0]?.id) {
424494
424655
  settings.setValue(persistScope, "model.name", updatedConfigs[0].id);
424495
424656
  }
@@ -424508,7 +424669,8 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config2, addItem, onAuthC
424508
424669
  {
424509
424670
  type: "info" /* INFO */,
424510
424671
  text: t4(
424511
- "Authenticated successfully with Coding Plan. API key is stored in settings.env."
424672
+ "Authenticated successfully with {{region}}. API key is stored in settings.env.",
424673
+ { region: regionName }
424512
424674
  )
424513
424675
  },
424514
424676
  Date.now()
@@ -433968,7 +434130,7 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
433968
434130
  }
433969
434131
  }
433970
434132
  if (!await ensureSandboxImageIsPresent(config2.command, image2)) {
433971
- 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.";
434133
+ 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.";
433972
434134
  throw new FatalSandboxError(
433973
434135
  `Sandbox image '${image2}' is missing or could not be pulled. ${remedy}`
433974
434136
  );
@@ -434075,7 +434237,7 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
434075
434237
  const isIntegrationTest = process.env["GEMINI_CLI_INTEGRATION_TEST"] === "true";
434076
434238
  let containerName;
434077
434239
  if (isIntegrationTest) {
434078
- containerName = `gemini-cli-integration-test-${randomBytes5(4).toString(
434240
+ containerName = `qwen-code-integration-test-${randomBytes5(4).toString(
434079
434241
  "hex"
434080
434242
  )}`;
434081
434243
  writeStderrLine(`ContainerName: ${containerName}`);
@@ -434204,10 +434366,11 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
434204
434366
  }
434205
434367
  let userFlag = "";
434206
434368
  const finalEntrypoint = entrypoint(workdir, cliArgs);
434207
- if (process.env["GEMINI_CLI_INTEGRATION_TEST"] === "true") {
434369
+ const useCurrentUser = await shouldUseCurrentUserInSandbox();
434370
+ if (!useCurrentUser) {
434208
434371
  args.push("--user", "root");
434209
434372
  userFlag = "--user root";
434210
- } else if (await shouldUseCurrentUserInSandbox()) {
434373
+ } else {
434211
434374
  args.push("--user", "root");
434212
434375
  const uid = execSync8("id -u").toString().trim();
434213
434376
  const gid = execSync8("id -g").toString().trim();
@@ -436573,7 +436736,7 @@ var GeminiAgent = class {
436573
436736
  name: APPROVAL_MODE_INFO[mode].name,
436574
436737
  description: APPROVAL_MODE_INFO[mode].description
436575
436738
  }));
436576
- const version2 = "0.10.2";
436739
+ const version2 = "0.10.4-nightly.20260219.c6a723ef";
436577
436740
  return {
436578
436741
  protocolVersion: PROTOCOL_VERSION,
436579
436742
  agentInfo: {