@qwen-code/qwen-code 0.19.7 → 0.19.8-nightly.20260710.205430235

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/bundled/qc-helper/SKILL.md +1 -0
  2. package/bundled/qc-helper/docs/configuration/auth.md +40 -55
  3. package/bundled/qc-helper/docs/configuration/model-providers.md +224 -218
  4. package/bundled/qc-helper/docs/configuration/settings.md +43 -36
  5. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  6. package/bundled/qc-helper/docs/features/channels/overview.md +20 -12
  7. package/bundled/qc-helper/docs/features/channels/plugins.md +1 -0
  8. package/bundled/qc-helper/docs/features/code-review.md +2 -1
  9. package/bundled/qc-helper/docs/features/commands.md +39 -38
  10. package/bundled/qc-helper/docs/features/computer-use.md +77 -0
  11. package/bundled/qc-helper/docs/features/hooks.md +36 -34
  12. package/bundled/qc-helper/docs/features/memory.md +1 -1
  13. package/bundled/qc-helper/docs/features/tool-use-summaries.md +19 -23
  14. package/bundled/qc-helper/docs/qwen-serve.md +22 -12
  15. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  16. package/bundled/review/DESIGN.md +14 -13
  17. package/bundled/review/SKILL.md +38 -61
  18. package/chunks/{MaxSizedBox-XY5LIO5O.js → MaxSizedBox-LOFYQFYJ.js} +13 -14
  19. package/chunks/{StandaloneSessionPicker-APISIRJZ.js → StandaloneSessionPicker-U5OQBGEB.js} +31 -29
  20. package/chunks/{acpAgent-MMOSC2YA.js → acpAgent-SDIFRIED.js} +637 -131
  21. package/chunks/{agent-TKIBLLQT.js → agent-JIBBVHNQ.js} +10 -10
  22. package/chunks/{agent-headless-VLX4C7KX.js → agent-headless-6LGZYJYU.js} +10 -10
  23. package/chunks/{anthropicContentGenerator-AKYPSZIV.js → anthropicContentGenerator-55REPTTF.js} +30 -3
  24. package/chunks/{artifact-tool-D233YJFH.js → artifact-tool-EIN46DPM.js} +1 -1
  25. package/chunks/{askUserQuestion-MKL5ZTMC.js → askUserQuestion-6YX6ZRX7.js} +1 -1
  26. package/chunks/{bridge-BCU73DZO.js → bridge-HVPFYNM4.js} +17 -16
  27. package/chunks/{ca-HCMB2I54.js → ca-MULEGDVS.js} +89 -5
  28. package/chunks/{channel-worker-supervisor-CRCVYQIE.js → channel-worker-supervisor-OPXXT4JK.js} +20 -3
  29. package/chunks/{chunk-DGHJTO2K.js → chunk-2AF26HVM.js} +31 -2
  30. package/chunks/{chunk-3B26UVCX.js → chunk-2GUVUHJY.js} +6 -4
  31. package/chunks/{chunk-FV7425LN.js → chunk-2SZOMGOR.js} +4 -1
  32. package/chunks/{chunk-CNSF3WO5.js → chunk-32KS5XSX.js} +3 -3
  33. package/chunks/{chunk-4UCTWSTP.js → chunk-34UUM3IN.js} +1 -1
  34. package/chunks/{chunk-G7ZG7CA6.js → chunk-3UP777ZS.js} +8 -7
  35. package/chunks/{chunk-MIG5SQNL.js → chunk-4CSVIZLT.js} +4 -4
  36. package/chunks/{chunk-GD236YPV.js → chunk-4ONWIT5C.js} +1 -1
  37. package/chunks/{chunk-4ZJIPVPB.js → chunk-4XK7TNBP.js} +8 -8
  38. package/chunks/{chunk-I4A4K72C.js → chunk-5F2H3PXG.js} +446 -232
  39. package/chunks/chunk-5HOF2K5U.js +19 -0
  40. package/chunks/{chunk-GMOWQOQQ.js → chunk-5ZVIYNLN.js} +228 -36
  41. package/chunks/chunk-6O6Z2I5Q.js +292 -0
  42. package/chunks/{chunk-RYFZCUJO.js → chunk-6QKT5VNZ.js} +14 -6
  43. package/chunks/{chunk-SD4N3QJ2.js → chunk-6ZPSVWLF.js} +61 -17
  44. package/chunks/{chunk-X265R5C6.js → chunk-7YGSDQ5J.js} +2 -2
  45. package/chunks/{chunk-PRDFOIZF.js → chunk-A6KEUFJO.js} +32 -5
  46. package/chunks/{chunk-OWVIH4HY.js → chunk-B5OAMPJ5.js} +389 -87
  47. package/chunks/{chunk-ME3YSROJ.js → chunk-CV2AT2WJ.js} +22 -10
  48. package/chunks/{chunk-U4FRHCLA.js → chunk-DDKUYKHA.js} +1912 -201
  49. package/chunks/{chunk-YDSYD7UI.js → chunk-E3SA2LY4.js} +2 -2
  50. package/chunks/{chunk-6IAWPIQ6.js → chunk-EDM5O3SX.js} +2 -2
  51. package/chunks/{chunk-CISB3IQF.js → chunk-FONJQQWI.js} +65 -6
  52. package/chunks/{chunk-FRFFNYUY.js → chunk-G3WIMNL4.js} +3 -3
  53. package/chunks/{chunk-B34OV7K2.js → chunk-GGQQA4JW.js} +13 -0
  54. package/chunks/chunk-GLE2YUPU.js +34 -0
  55. package/chunks/{chunk-MJI36HER.js → chunk-GOTMC3BX.js} +1 -1
  56. package/chunks/{chunk-RFIL6REB.js → chunk-GRB4QSBD.js} +168 -31
  57. package/chunks/chunk-GVVY7GSP.js +38 -0
  58. package/chunks/{chunk-7JGISHHZ.js → chunk-HDEUQRAR.js} +14 -156
  59. package/chunks/{chunk-NZEGNV4V.js → chunk-HPRI22FZ.js} +6 -6
  60. package/chunks/{chunk-STAZRKOT.js → chunk-I34IHZFJ.js} +117 -459
  61. package/chunks/{chunk-JF7DFPQ5.js → chunk-I3MBKL6Z.js} +12 -2
  62. package/chunks/{chunk-DNV4FSN5.js → chunk-I5XN6KDI.js} +21 -4
  63. package/chunks/{chunk-VZ7HY3YU.js → chunk-IAMRWMFU.js} +1 -1
  64. package/chunks/{chunk-44NROQYV.js → chunk-JOQMY62N.js} +1 -1
  65. package/chunks/{chunk-VQWAZSXN.js → chunk-JW4IKIZ2.js} +57 -35
  66. package/chunks/{chunk-SAIILPQ3.js → chunk-KJMYXFUR.js} +3 -1
  67. package/chunks/{chunk-AFOLR6YL.js → chunk-KQ6MKCFE.js} +102 -16
  68. package/chunks/{chunk-X3YGAX7V.js → chunk-KS2FRTYI.js} +2 -0
  69. package/chunks/{chunk-IUE7YWC3.js → chunk-LE7EF36E.js} +7 -7
  70. package/chunks/{chunk-B4U2M63D.js → chunk-LRY7HD3Q.js} +2101 -11
  71. package/chunks/{chunk-PUQLHSQ2.js → chunk-ME7E6WZB.js} +6 -8
  72. package/chunks/{chunk-LEIJKM7Q.js → chunk-MEK7ZRJ3.js} +1 -1
  73. package/chunks/{chunk-AJBEAUIS.js → chunk-MG2TNCRX.js} +4 -3
  74. package/chunks/{chunk-GL5TV7B5.js → chunk-MSMQURDV.js} +21 -5
  75. package/chunks/{chunk-6BN7NZ5Z.js → chunk-NXDJLKKX.js} +4 -6
  76. package/chunks/{chunk-FEJ2FZ3U.js → chunk-NY2ZOFMM.js} +1 -1
  77. package/chunks/{chunk-QZF5U5KA.js → chunk-NY5BE643.js} +8 -8
  78. package/chunks/{chunk-4RQIB5UZ.js → chunk-O2YT7VB4.js} +0 -34
  79. package/chunks/{chunk-4KJ2BPIT.js → chunk-OACJLMLD.js} +2 -38
  80. package/chunks/chunk-PCWSPWXZ.js +168 -0
  81. package/chunks/{chunk-XPJH4PKR.js → chunk-PJ74K3DH.js} +1 -1
  82. package/chunks/{chunk-FTFXDZYI.js → chunk-PW7VWRLX.js} +45 -29
  83. package/chunks/chunk-R3SLDK6Y.js +468 -0
  84. package/chunks/{chunk-4O344UEE.js → chunk-SDJOZOYY.js} +38 -18
  85. package/chunks/{chunk-ALZ75L2X.js → chunk-SMYIBRAA.js} +412 -376
  86. package/chunks/{chunk-CCGOFQV3.js → chunk-SS5P6JM6.js} +6 -5
  87. package/chunks/{chunk-AIY5UTFI.js → chunk-T3XHYGMG.js} +925 -2872
  88. package/chunks/{chunk-Q6OEPOOC.js → chunk-TB6GWNV4.js} +1 -1
  89. package/chunks/{chunk-24XYI5EI.js → chunk-TERKDCOZ.js} +3 -3
  90. package/chunks/chunk-TVO5C767.js +159 -0
  91. package/chunks/{chunk-TBAZMRW3.js → chunk-TVW53EK7.js} +1 -1
  92. package/chunks/chunk-TX5QZYK6.js +296 -0
  93. package/chunks/{chunk-JD33UY7E.js → chunk-TZRVTPJ6.js} +15 -9
  94. package/chunks/{chunk-65CFHNSE.js → chunk-UAFB2DNB.js} +59 -59
  95. package/chunks/{chunk-QAKFYMJI.js → chunk-UOXLB2LY.js} +152 -17
  96. package/chunks/chunk-V35MD7KN.js +13 -0
  97. package/chunks/{chunk-XSAFNANZ.js → chunk-VWDJHVXM.js} +12 -12
  98. package/chunks/{chunk-XISQIIT7.js → chunk-W77ZLCSX.js} +1 -1
  99. package/chunks/{chunk-BWVQN2HV.js → chunk-WTEIUA2V.js} +4 -4
  100. package/chunks/{chunk-TDGF35EN.js → chunk-XOHNA2S6.js} +1 -1
  101. package/chunks/{chunk-HJ3GX3Y3.js → chunk-XZVUZSDG.js} +25 -11
  102. package/chunks/{chunk-ADZG46HR.js → chunk-YHGCTQG3.js} +1 -1
  103. package/chunks/{chunk-2NPS2UDH.js → chunk-YUNPEB3Q.js} +478 -43
  104. package/chunks/chunk-Z3I3QJK3.js +47 -0
  105. package/chunks/{chunk-P7I3D7FM.js → chunk-Z466FBSA.js} +1 -1
  106. package/chunks/{chunk-YEGT55NW.js → chunk-ZDAZSR2O.js} +3009 -1220
  107. package/chunks/{chunk-VEB3NYSO.js → chunk-ZJQBTFJ6.js} +6 -1
  108. package/chunks/chunk-ZL5HN75Q.js +61 -0
  109. package/chunks/{computer-use-X4KUU3NM.js → computer-use-IW5XBECT.js} +10 -10
  110. package/chunks/{contextCommand-LAYJZF7H.js → contextCommand-4QPLK2SH.js} +14 -14
  111. package/chunks/create-sub-session-7JK3EYWA.js +212 -0
  112. package/chunks/create-sub-session-EVYZYAE3.js +364 -0
  113. package/chunks/{cron-create-JSXEIPVS.js → cron-create-2CCO2PW6.js} +2 -2
  114. package/chunks/{cron-delete-OIFVEPGU.js → cron-delete-ETVTP5IV.js} +2 -2
  115. package/chunks/{cron-list-D4ZX4IOE.js → cron-list-FS3KWOY5.js} +2 -2
  116. package/chunks/{daemon-F3I2RXP6.js → daemon-NNUYIBWA.js} +461 -0
  117. package/chunks/{daemon-status-provider-XSAFKVDS.js → daemon-status-provider-3EPG6BXX.js} +21 -19
  118. package/chunks/{de-PLLFDERI.js → de-QRG6J2CM.js} +89 -5
  119. package/chunks/{dist-YTRKAVUB.js → dist-3EIIFOJV.js} +1 -1
  120. package/chunks/{dist-PKFTNUHO.js → dist-7F5GWZDZ.js} +2 -1
  121. package/chunks/{dist-FQ5WRJPL.js → dist-CBJ7OJ5R.js} +2 -2
  122. package/chunks/{dist-OT7G2WNM.js → dist-LIFJ2YAI.js} +1 -1
  123. package/chunks/{dist-573HNSVO.js → dist-OKXOQ63L.js} +2 -1
  124. package/chunks/{dist-IMFFBMAT.js → dist-SU5LY5R4.js} +3 -1
  125. package/chunks/{earlyInputCapture-AERYYGXE.js → earlyInputCapture-HP5XAS7A.js} +10 -10
  126. package/chunks/{edit-WZTZDGCI.js → edit-MDICC6KH.js} +11 -11
  127. package/chunks/{en-GA2RMXY5.js → en-HF3KFWZG.js} +91 -5
  128. package/chunks/{enter-worktree-DEPXBJEL.js → enter-worktree-JWTRNEN4.js} +10 -10
  129. package/chunks/{enterPlanMode-JFGXZHHJ.js → enterPlanMode-GMRZMTBQ.js} +10 -10
  130. package/chunks/environment-2CJAFOFN.js +88 -0
  131. package/chunks/{errors-GMZL4QV7.js → errors-UZOVFD2U.js} +13 -13
  132. package/chunks/{exit-worktree-Y7XBK3VV.js → exit-worktree-QQGEG343.js} +10 -10
  133. package/chunks/{exitPlanMode-WQQER65F.js → exitPlanMode-YK2JVAAB.js} +10 -10
  134. package/chunks/{fast-path-W2U6XDNO.js → fast-path-6SD4JNQW.js} +12 -3
  135. package/chunks/{fast-path-settings-RCRXH2JG.js → fast-path-settings-RAQGCIT7.js} +3 -2
  136. package/chunks/{fr-GWNQG4XH.js → fr-RSCO6HHD.js} +89 -5
  137. package/chunks/{gemini-T4WX6SRW.js → gemini-TFQXPUZB.js} +436 -140
  138. package/chunks/{geminiContentGenerator-MKQACXEJ.js → geminiContentGenerator-LJ2BNXHX.js} +1 -1
  139. package/chunks/{glob-4KKSHZDF.js → glob-3IJ6JR5W.js} +10 -10
  140. package/chunks/{grep-GHRYXSLZ.js → grep-UFZ2RFQZ.js} +10 -10
  141. package/chunks/{handleAutoUpdate-HN7ZOSXY.js → handleAutoUpdate-TEZC5ZIR.js} +17 -13
  142. package/chunks/i18n-5QEODTJV.js +84 -0
  143. package/chunks/{initializer-SRN3IM42.js → initializer-222MPCLQ.js} +18 -16
  144. package/chunks/installationInfo-OZ62OHZ2.js +65 -0
  145. package/chunks/{ja-2HOTA47X.js → ja-RRFGG2DC.js} +89 -5
  146. package/chunks/{list-INTVXUPA.js → list-BN5VBIIE.js} +20 -18
  147. package/chunks/{loadedSettingsAdapter-QVHHQPGM.js → loadedSettingsAdapter-EHTUJRFB.js} +18 -16
  148. package/chunks/{loop-wakeup-OHWEMFP5.js → loop-wakeup-SR2KWT4B.js} +3 -3
  149. package/chunks/{ls-L654WOAT.js → ls-RUBQK5Q2.js} +2 -2
  150. package/chunks/{lsp-M35KE54Y.js → lsp-DUTVY2ZA.js} +3 -5
  151. package/chunks/{mcp-7V4T46RG.js → mcp-OPGHD26Y.js} +18 -16
  152. package/chunks/{monitor-464OY2UE.js → monitor-WXBDVYYV.js} +10 -10
  153. package/chunks/{nonInteractiveCli-LJEEODU2.js → nonInteractiveCli-CWIBGJ4U.js} +54 -49
  154. package/chunks/{notebook-edit-BLJYCNDO.js → notebook-edit-T7P7M73F.js} +11 -11
  155. package/chunks/{openaiContentGenerator-PFF6HYB2.js → openaiContentGenerator-OES264C3.js} +7 -7
  156. package/chunks/{pidfile-LIBUENIV.js → pidfile-LJ3NLS2P.js} +10 -10
  157. package/chunks/{pt-2THT3YHA.js → pt-D4CG46JM.js} +89 -5
  158. package/chunks/{qwenContentGenerator-SUUHZ6CR.js → qwenContentGenerator-QJ67LAJ5.js} +12 -12
  159. package/chunks/{read-file-L7TBQVX7.js → read-file-KZD7TLU7.js} +5 -5
  160. package/chunks/{read-mcp-resource-CNQHBSJM.js → read-mcp-resource-Q56IMYOH.js} +1 -1
  161. package/chunks/{record-artifact-PP3LKHTS.js → record-artifact-GZ5D5HZX.js} +4 -4
  162. package/chunks/{ripGrep-CKKX3GRB.js → ripGrep-KUJLX75U.js} +10 -10
  163. package/chunks/{ru-Z67YJHBG.js → ru-O2QUEL22.js} +89 -5
  164. package/chunks/{run-qwen-serve-5OKADVLE.js → run-qwen-serve-M52KVRGI.js} +664 -153
  165. package/chunks/{scheduler-ZRW3AIDU.js → scheduler-FFATTAYZ.js} +10 -10
  166. package/chunks/{send-message-OA6MV4EU.js → send-message-HAGK3VTV.js} +2 -2
  167. package/chunks/{serve-36WS32W6.js → serve-B5S32524.js} +21 -18
  168. package/chunks/{server-M372UENX.js → server-6HK5FJMR.js} +3301 -665
  169. package/chunks/{session-F5KSNP2N.js → session-3WB76VTQ.js} +55 -50
  170. package/chunks/{settings-WFLNS3WT.js → settings-W3IX7NHK.js} +27 -23
  171. package/chunks/{shell-DEDSWN56.js → shell-HZIU2ZG7.js} +10 -10
  172. package/chunks/{skill-A2TL2NPC.js → skill-34OUFB65.js} +5 -5
  173. package/chunks/{spawnChannel-RQHUWTCL.js → spawnChannel-FTZJ3I5O.js} +12 -12
  174. package/chunks/{src-XKZMNHXS.js → src-NELBIIGI.js} +48 -10
  175. package/chunks/standalone-update-LICI2VSK.js +79 -0
  176. package/chunks/{startInteractiveUI-REKSTOHU.js → startInteractiveUI-LZEV5YI2.js} +2203 -1764
  177. package/chunks/stdioHelpers-CA7MG65Z.js +14 -0
  178. package/chunks/{syntheticOutput-F7LSDCAR.js → syntheticOutput-XFFJVCGV.js} +2 -2
  179. package/chunks/{task-create-RPFZNB4B.js → task-create-VINUSVBF.js} +3 -3
  180. package/chunks/{task-list-TGGJX7EA.js → task-list-YZ2AWQEG.js} +1 -1
  181. package/chunks/{task-stop-W7NGTMYQ.js → task-stop-PEXPKUW3.js} +1 -1
  182. package/chunks/{task-update-5WUG5MVQ.js → task-update-BHIX57YH.js} +3 -3
  183. package/chunks/{team-create-TBQVWAG7.js → team-create-2JS2OYSF.js} +10 -10
  184. package/chunks/{team-delete-UHQQ2QQX.js → team-delete-2OHXSBVS.js} +1 -1
  185. package/chunks/{team-plan-approval-FZPGUSHJ.js → team-plan-approval-PHLGYUY7.js} +10 -10
  186. package/chunks/{theme-manager-DQZVNSOC.js → theme-manager-UYXLX37P.js} +10 -10
  187. package/chunks/{todoWrite-C4ZAMSR3.js → todoWrite-7Q4ELT4F.js} +1 -1
  188. package/chunks/{tool-search-FDQ3SLNJ.js → tool-search-2MWA3GWE.js} +6 -6
  189. package/chunks/total-session-admission-PRZK35X4.js +72 -0
  190. package/chunks/{trustedFolders-Z475EIHL.js → trustedFolders-IT4JBNPG.js} +12 -12
  191. package/chunks/{updateCheck-E2ZX7RL7.js → updateCheck-X3ZWDO3Z.js} +17 -13
  192. package/chunks/updateEventEmitter-NXWTRHXY.js +10 -0
  193. package/chunks/{validateNonInterActiveAuth-O4ECBHQL.js → validateNonInterActiveAuth-IAOL7CM3.js} +51 -45
  194. package/chunks/{version-CEDD6ZZR.js → version-25QF6A5H.js} +1 -1
  195. package/chunks/{web-fetch-UYGMOHW4.js → web-fetch-I7FOWHGA.js} +2 -2
  196. package/chunks/{workflow-CQQ4J4I6.js → workflow-LZZ5U3IT.js} +11 -11
  197. package/chunks/{workspace-providers-status-MVYXMYDG.js → workspace-providers-status-7DTOAWEL.js} +21 -18
  198. package/chunks/workspace-registry-BBIPESIZ.js +76 -0
  199. package/chunks/{workspace-service-OMBR6ZLG.js → workspace-service-SY3P3FUY.js} +25 -23
  200. package/chunks/{workspace-skills-status-IMMQ7CAY.js → workspace-skills-status-GTT2A4WN.js} +20 -18
  201. package/chunks/{write-file-VWGY7AJP.js → write-file-M6IHNW3V.js} +11 -11
  202. package/chunks/{zh-7XVVRTDH.js → zh-K2EH6BDD.js} +91 -5
  203. package/chunks/{zh-TW-DPH554OG.js → zh-TW-4GPXJ7ZY.js} +91 -5
  204. package/cli.js +13 -12
  205. package/locales/ca.js +115 -7
  206. package/locales/de.js +114 -7
  207. package/locales/en.js +118 -7
  208. package/locales/fr.js +115 -7
  209. package/locales/ja.js +116 -6
  210. package/locales/pt.js +114 -7
  211. package/locales/ru.js +114 -7
  212. package/locales/zh-TW.js +114 -6
  213. package/locales/zh.js +114 -6
  214. package/package.json +3 -6
  215. package/web-shell/assets/{arc-C7hjaa7g.js → arc-G3HZaqaL.js} +1 -1
  216. package/web-shell/assets/{architectureDiagram-3BPJPVTR-pm9KtMZY.js → architectureDiagram-3BPJPVTR-DhBrwwch.js} +1 -1
  217. package/web-shell/assets/{blockDiagram-GPEHLZMM-CApElKsU.js → blockDiagram-GPEHLZMM-16JbbF0N.js} +1 -1
  218. package/web-shell/assets/{c4Diagram-AAUBKEIU-BeDe0-9N.js → c4Diagram-AAUBKEIU-DQ3-pKgc.js} +1 -1
  219. package/web-shell/assets/channel-CX7ZHuuL.js +1 -0
  220. package/web-shell/assets/{chunk-2J33WTMH-DJEkmLdl.js → chunk-2J33WTMH-ERCn30sp.js} +1 -1
  221. package/web-shell/assets/{chunk-4BX2VUAB-DXX8gdpe.js → chunk-4BX2VUAB-DTysfbFi.js} +1 -1
  222. package/web-shell/assets/{chunk-55IACEB6-DORmk1kQ.js → chunk-55IACEB6-BFGrbTBi.js} +1 -1
  223. package/web-shell/assets/{chunk-727SXJPM-DWmO4mCZ.js → chunk-727SXJPM-DCX4Oar-.js} +1 -1
  224. package/web-shell/assets/{chunk-AQP2D5EJ-C7LRaYw2.js → chunk-AQP2D5EJ-CgT6sBr3.js} +1 -1
  225. package/web-shell/assets/{chunk-FMBD7UC4-CCdXgyC5.js → chunk-FMBD7UC4-C1Uuk1KV.js} +1 -1
  226. package/web-shell/assets/{chunk-ND2GUHAM-SyL_xvWc.js → chunk-ND2GUHAM-DajgESiu.js} +1 -1
  227. package/web-shell/assets/{chunk-QZHKN3VN-BzOuCKxa.js → chunk-QZHKN3VN-DLJSvy9X.js} +1 -1
  228. package/web-shell/assets/classDiagram-4FO5ZUOK-B-oT3UI8.js +1 -0
  229. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B-oT3UI8.js +1 -0
  230. package/web-shell/assets/{cose-bilkent-S5V4N54A-BMPWyDKc.js → cose-bilkent-S5V4N54A-CH3w3qs7.js} +1 -1
  231. package/web-shell/assets/{dagre-BM42HDAG-B_GnPWik.js → dagre-BM42HDAG-BloXan9B.js} +1 -1
  232. package/web-shell/assets/{diagram-2AECGRRQ-fJqMc3S_.js → diagram-2AECGRRQ-BbZiGcmK.js} +1 -1
  233. package/web-shell/assets/{diagram-5GNKFQAL-ximV3O9D.js → diagram-5GNKFQAL-GQlYvLJv.js} +1 -1
  234. package/web-shell/assets/{diagram-KO2AKTUF-2vVyjzqw.js → diagram-KO2AKTUF-CtIBvVq3.js} +1 -1
  235. package/web-shell/assets/{diagram-LMA3HP47-Dckcx1sT.js → diagram-LMA3HP47-D5TBo9a2.js} +1 -1
  236. package/web-shell/assets/{diagram-OG6HWLK6-BAVv47ga.js → diagram-OG6HWLK6-N0gQhw6R.js} +1 -1
  237. package/web-shell/assets/{erDiagram-TEJ5UH35-Bn3nf5J0.js → erDiagram-TEJ5UH35-zab9vDj3.js} +1 -1
  238. package/web-shell/assets/{flowDiagram-I6XJVG4X-BIbGF9JT.js → flowDiagram-I6XJVG4X-BnnjtWJa.js} +1 -1
  239. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CDbhb3AH.js → ganttDiagram-6RSMTGT7-2T0SQU4f.js} +1 -1
  240. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CbKG1a_w.js → gitGraphDiagram-PVQCEYII-DAD6_que.js} +1 -1
  241. package/web-shell/assets/index-XLkWfLja.css +5 -0
  242. package/web-shell/assets/index-srlTR1Jg.js +786 -0
  243. package/web-shell/assets/{infoDiagram-5YYISTIA-DUFxTy8m.js → infoDiagram-5YYISTIA-C-j8d0xO.js} +1 -1
  244. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D69hrBG8.js → ishikawaDiagram-YF4QCWOH-D97bAKoT.js} +1 -1
  245. package/web-shell/assets/{journeyDiagram-JHISSGLW-DsvEw51Y.js → journeyDiagram-JHISSGLW-BJAHfJmm.js} +1 -1
  246. package/web-shell/assets/{kanban-definition-UN3LZRKU-lFFjZEYd.js → kanban-definition-UN3LZRKU-CZgR5aac.js} +1 -1
  247. package/web-shell/assets/{linear-Bo5bWzvo.js → linear-DOd4kYhA.js} +1 -1
  248. package/web-shell/assets/{mermaid.core-C_HKMJx5.js → mermaid.core-BBaplnXA.js} +5 -5
  249. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DlV-NUTs.js → mindmap-definition-RKZ34NQL-IhBF_BR5.js} +1 -1
  250. package/web-shell/assets/{pieDiagram-4H26LBE5-B2e6FH2a.js → pieDiagram-4H26LBE5-B4R4sYyH.js} +1 -1
  251. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-D75kSk-b.js → quadrantDiagram-W4KKPZXB-DKd1SJ61.js} +1 -1
  252. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CQ6xakhM.js → requirementDiagram-4Y6WPE33-Cw96V0Xb.js} +1 -1
  253. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-J_XTKrcY.js → sankeyDiagram-5OEKKPKP-C6ne_yWi.js} +1 -1
  254. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-D7jTcBtf.js → sequenceDiagram-3UESZ5HK-CCyp4PDp.js} +1 -1
  255. package/web-shell/assets/{stateDiagram-AJRCARHV-CrlM_OT3.js → stateDiagram-AJRCARHV-DHvIqTmx.js} +1 -1
  256. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DvFhmpwA.js +1 -0
  257. package/web-shell/assets/{timeline-definition-PNZ67QCA-5oZi76Ef.js → timeline-definition-PNZ67QCA-amb3n9zH.js} +1 -1
  258. package/web-shell/assets/{vennDiagram-CIIHVFJN-DO5YptPK.js → vennDiagram-CIIHVFJN-Abf2qRFJ.js} +1 -1
  259. package/web-shell/assets/{wardley-L42UT6IY-4t1eJDvM.js → wardley-L42UT6IY-BBlOp1av.js} +1 -1
  260. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DKZc661S.js → wardleyDiagram-YWT4CUSO-gE_sZ0Ak.js} +1 -1
  261. package/web-shell/assets/{xychartDiagram-2RQKCTM6-su9hp08G.js → xychartDiagram-2RQKCTM6-BwOni53i.js} +1 -1
  262. package/web-shell/index.html +16 -4
  263. package/chunks/chunk-6SHO7WFF.js +0 -79
  264. package/chunks/chunk-IFEWJXFS.js +0 -37
  265. package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +0 -35
  266. package/node_modules/@qwen-code/audio-capture/dist/index.js +0 -48
  267. package/node_modules/@qwen-code/audio-capture/dist/index.js.map +0 -1
  268. package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +0 -7
  269. package/node_modules/@qwen-code/audio-capture/dist/platform.js +0 -18
  270. package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +0 -1
  271. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +0 -21
  272. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +0 -58
  273. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +0 -5
  274. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +0 -84
  275. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +0 -19
  276. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +0 -6
  277. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +0 -207
  278. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +0 -7
  279. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +0 -43
  280. package/node_modules/@qwen-code/audio-capture/package.json +0 -30
  281. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  282. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  283. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-arm64/@qwen-code+audio-capture.node +0 -0
  284. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-x64/@qwen-code+audio-capture.node +0 -0
  285. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  286. package/web-shell/assets/channel-BNf1dW-j.js +0 -1
  287. package/web-shell/assets/classDiagram-4FO5ZUOK-uOIGlzgi.js +0 -1
  288. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-uOIGlzgi.js +0 -1
  289. package/web-shell/assets/index-CnE2ur2L.js +0 -779
  290. package/web-shell/assets/index-hSKXrlSE.css +0 -5
  291. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Bs4TK_84.js +0 -1
  292. /package/chunks/{chunk-Y6Z2O3WR.js → chunk-JM7BYJO5.js} +0 -0
@@ -4,7 +4,11 @@ Qwen Code allows you to configure multiple model providers through the `modelPro
4
4
 
5
5
  ## Overview
6
6
 
7
- Use `modelProviders` to declare models per auth type that the `/model` picker can switch between. Keys must be valid auth types (`openai`, `anthropic`, `gemini`, etc.). Each auth type maps to a `ProviderConfig` object with a `protocol` field and a `models` field (the array of model definitions). Each entry in `models` requires an `id`; `envKey` is **optional and recommended** (when omitted, it falls back to the auth type's default env key, e.g. `OPENAI_API_KEY` for `openai`), with optional `name`, `description`, `baseUrl`, and `generationConfig`. Credentials are never persisted in settings; the runtime reads them from `process.env[envKey]`. Qwen OAuth models remain hard-coded and cannot be overridden.
7
+ Use `modelProviders` to declare models per provider id that the `/model` picker can switch between. Each key is a provider id and its value is **an array of model definitions** (`ModelConfig[]`). For built-in providers the key must be a valid auth type (`openai`, `anthropic`, `gemini`, `vertex-ai`); a custom provider id (e.g. `idealab`) is allowed as long as you map it to a protocol via the top-level [`providerProtocol`](#custom-provider-ids-providerprotocol) setting. Each model entry requires an `id`; `envKey` is **optional and recommended** (when omitted, it falls back to the auth type's default env key, e.g. `OPENAI_API_KEY` for `openai`), with optional `name`, `description`, `baseUrl`, and `generationConfig`. Credentials are never persisted in settings; the runtime reads them from `process.env[envKey]`. Qwen OAuth models remain hard-coded and cannot be overridden.
8
+
9
+ > [!note]
10
+ >
11
+ > Earlier previews wrapped each provider's models in a `{ "protocol": ..., "models": [...] }` object. That shape has been reverted — the current value is the bare `ModelConfig[]` array shown throughout this page. A wrapped entry in an already-migrated (`$version: 4`) settings file is silently skipped, so update any old configs to the array form.
8
12
 
9
13
  > [!note]
10
14
  >
@@ -31,7 +35,30 @@ The `modelProviders` object keys must be valid `authType` values. Currently supp
31
35
  | `vertex-ai` | Google Vertex AI (uses the `gemini` protocol and the `@google/genai` SDK in Vertex AI mode; selecting it sets `GOOGLE_GENAI_USE_VERTEXAI=true`) |
32
36
 
33
37
  > [!warning]
34
- > If an unknown auth type key is used (e.g., a typo like `"openai-custom"`), a non-empty key is accepted as-is as its own auth-type group, but it will not map to a known protocol so its models won't work as intended and won't behave correctly in the `/model` picker. Only blank (empty or whitespace-only) keys are skipped. Always use one of the supported auth type values listed above.
38
+ > A provider id that is neither a built-in protocol nor mapped via `providerProtocol` (e.g. a typo like `"openai-custom"`) cannot be routed, so its whole entry is **skipped** with a warning — its models simply won't appear in the `/model` picker. Use one of the supported auth type values above for built-in providers, or add a [`providerProtocol`](#custom-provider-ids-providerprotocol) mapping for a custom id.
39
+
40
+ ### Custom provider ids (`providerProtocol`)
41
+
42
+ Built-in provider ids (`openai`, `gemini`, `anthropic`, `vertex-ai`, `qwen-oauth`) are routed to their SDK protocol automatically. To use a **custom** provider id — for example to group several OpenAI-compatible endpoints under a friendlier name — declare it under `modelProviders` and map it to a built-in protocol with the top-level `providerProtocol` setting:
43
+
44
+ ```json
45
+ {
46
+ "modelProviders": {
47
+ "idealab": [
48
+ {
49
+ "id": "my-model",
50
+ "envKey": "IDEALAB_API_KEY",
51
+ "baseUrl": "https://idealab.example.com/v1"
52
+ }
53
+ ]
54
+ },
55
+ "providerProtocol": {
56
+ "idealab": "openai"
57
+ }
58
+ }
59
+ ```
60
+
61
+ Without a matching `providerProtocol` entry, a custom provider id is skipped (see the warning above).
35
62
 
36
63
  ### SDKs Used for API Requests
37
64
 
@@ -58,79 +85,76 @@ This auth type supports not only OpenAI's official API but also any OpenAI-compa
58
85
  "REQUESTY_API_KEY": "sk-your-actual-requesty-key-here"
59
86
  },
60
87
  "modelProviders": {
61
- "openai": {
62
- "protocol": "openai",
63
- "models": [
64
- {
65
- "id": "gpt-4o",
66
- "name": "GPT-4o",
67
- "envKey": "OPENAI_API_KEY",
68
- "baseUrl": "https://api.openai.com/v1",
69
- "generationConfig": {
70
- "timeout": 60000,
71
- "maxRetries": 3,
72
- "enableCacheControl": true,
73
- "contextWindowSize": 128000,
74
- "modalities": {
75
- "image": true
76
- },
77
- "customHeaders": {
78
- "X-Client-Request-ID": "req-123"
79
- },
80
- "extra_body": {
81
- "enable_thinking": true,
82
- "service_tier": "priority"
83
- },
84
- "samplingParams": {
85
- "temperature": 0.2,
86
- "top_p": 0.8,
87
- "max_tokens": 4096,
88
- "presence_penalty": 0.1,
89
- "frequency_penalty": 0.1
90
- }
88
+ "openai": [
89
+ {
90
+ "id": "gpt-4o",
91
+ "name": "GPT-4o",
92
+ "envKey": "OPENAI_API_KEY",
93
+ "baseUrl": "https://api.openai.com/v1",
94
+ "generationConfig": {
95
+ "timeout": 60000,
96
+ "maxRetries": 3,
97
+ "enableCacheControl": true,
98
+ "contextWindowSize": 128000,
99
+ "modalities": {
100
+ "image": true
101
+ },
102
+ "customHeaders": {
103
+ "X-Client-Request-ID": "req-123"
104
+ },
105
+ "extra_body": {
106
+ "enable_thinking": true,
107
+ "service_tier": "priority"
108
+ },
109
+ "samplingParams": {
110
+ "temperature": 0.2,
111
+ "top_p": 0.8,
112
+ "max_tokens": 4096,
113
+ "presence_penalty": 0.1,
114
+ "frequency_penalty": 0.1
91
115
  }
92
- },
93
- {
94
- "id": "gpt-4o-mini",
95
- "name": "GPT-4o Mini",
96
- "envKey": "OPENAI_API_KEY",
97
- "baseUrl": "https://api.openai.com/v1",
98
- "generationConfig": {
99
- "timeout": 30000,
100
- "samplingParams": {
101
- "temperature": 0.5,
102
- "max_tokens": 2048
103
- }
116
+ }
117
+ },
118
+ {
119
+ "id": "gpt-4o-mini",
120
+ "name": "GPT-4o Mini",
121
+ "envKey": "OPENAI_API_KEY",
122
+ "baseUrl": "https://api.openai.com/v1",
123
+ "generationConfig": {
124
+ "timeout": 30000,
125
+ "samplingParams": {
126
+ "temperature": 0.5,
127
+ "max_tokens": 2048
104
128
  }
105
- },
106
- {
107
- "id": "openai/gpt-4o",
108
- "name": "GPT-4o (via OpenRouter)",
109
- "envKey": "OPENROUTER_API_KEY",
110
- "baseUrl": "https://openrouter.ai/api/v1",
111
- "generationConfig": {
112
- "timeout": 120000,
113
- "maxRetries": 3,
114
- "samplingParams": {
115
- "temperature": 0.7
116
- }
129
+ }
130
+ },
131
+ {
132
+ "id": "openai/gpt-4o",
133
+ "name": "GPT-4o (via OpenRouter)",
134
+ "envKey": "OPENROUTER_API_KEY",
135
+ "baseUrl": "https://openrouter.ai/api/v1",
136
+ "generationConfig": {
137
+ "timeout": 120000,
138
+ "maxRetries": 3,
139
+ "samplingParams": {
140
+ "temperature": 0.7
117
141
  }
118
- },
119
- {
120
- "id": "openai/gpt-4o-mini",
121
- "name": "GPT-4o Mini (via Requesty)",
122
- "envKey": "REQUESTY_API_KEY",
123
- "baseUrl": "https://router.requesty.ai/v1",
124
- "generationConfig": {
125
- "timeout": 120000,
126
- "maxRetries": 3,
127
- "samplingParams": {
128
- "temperature": 0.7
129
- }
142
+ }
143
+ },
144
+ {
145
+ "id": "openai/gpt-4o-mini",
146
+ "name": "GPT-4o Mini (via Requesty)",
147
+ "envKey": "REQUESTY_API_KEY",
148
+ "baseUrl": "https://router.requesty.ai/v1",
149
+ "generationConfig": {
150
+ "timeout": 120000,
151
+ "maxRetries": 3,
152
+ "samplingParams": {
153
+ "temperature": 0.7
130
154
  }
131
155
  }
132
- ]
133
- }
156
+ }
157
+ ]
134
158
  }
135
159
  }
136
160
  ```
@@ -143,40 +167,37 @@ This auth type supports not only OpenAI's official API but also any OpenAI-compa
143
167
  "ANTHROPIC_API_KEY": "sk-ant-your-actual-anthropic-key-here"
144
168
  },
145
169
  "modelProviders": {
146
- "anthropic": {
147
- "protocol": "anthropic",
148
- "models": [
149
- {
150
- "id": "claude-3-5-sonnet",
151
- "name": "Claude 3.5 Sonnet",
152
- "envKey": "ANTHROPIC_API_KEY",
153
- "baseUrl": "https://api.anthropic.com/v1",
154
- "generationConfig": {
155
- "timeout": 120000,
156
- "maxRetries": 3,
157
- "contextWindowSize": 200000,
158
- "samplingParams": {
159
- "temperature": 0.7,
160
- "max_tokens": 8192,
161
- "top_p": 0.9
162
- }
170
+ "anthropic": [
171
+ {
172
+ "id": "claude-3-5-sonnet",
173
+ "name": "Claude 3.5 Sonnet",
174
+ "envKey": "ANTHROPIC_API_KEY",
175
+ "baseUrl": "https://api.anthropic.com/v1",
176
+ "generationConfig": {
177
+ "timeout": 120000,
178
+ "maxRetries": 3,
179
+ "contextWindowSize": 200000,
180
+ "samplingParams": {
181
+ "temperature": 0.7,
182
+ "max_tokens": 8192,
183
+ "top_p": 0.9
163
184
  }
164
- },
165
- {
166
- "id": "claude-3-opus",
167
- "name": "Claude 3 Opus",
168
- "envKey": "ANTHROPIC_API_KEY",
169
- "baseUrl": "https://api.anthropic.com/v1",
170
- "generationConfig": {
171
- "timeout": 180000,
172
- "samplingParams": {
173
- "temperature": 0.3,
174
- "max_tokens": 4096
175
- }
185
+ }
186
+ },
187
+ {
188
+ "id": "claude-3-opus",
189
+ "name": "Claude 3 Opus",
190
+ "envKey": "ANTHROPIC_API_KEY",
191
+ "baseUrl": "https://api.anthropic.com/v1",
192
+ "generationConfig": {
193
+ "timeout": 180000,
194
+ "samplingParams": {
195
+ "temperature": 0.3,
196
+ "max_tokens": 4096
176
197
  }
177
198
  }
178
- ]
179
- }
199
+ }
200
+ ]
180
201
  }
181
202
  }
182
203
  ```
@@ -189,32 +210,29 @@ This auth type supports not only OpenAI's official API but also any OpenAI-compa
189
210
  "GEMINI_API_KEY": "AIza-your-actual-gemini-key-here"
190
211
  },
191
212
  "modelProviders": {
192
- "gemini": {
193
- "protocol": "gemini",
194
- "models": [
195
- {
196
- "id": "gemini-2.0-flash",
197
- "name": "Gemini 2.0 Flash",
198
- "envKey": "GEMINI_API_KEY",
199
- "baseUrl": "https://generativelanguage.googleapis.com",
200
- "capabilities": {
201
- "vision": true
202
- },
203
- "generationConfig": {
204
- "timeout": 60000,
205
- "maxRetries": 2,
206
- "contextWindowSize": 1000000,
207
- "schemaCompliance": "auto",
208
- "samplingParams": {
209
- "temperature": 0.4,
210
- "top_p": 0.95,
211
- "max_tokens": 8192,
212
- "top_k": 40
213
- }
213
+ "gemini": [
214
+ {
215
+ "id": "gemini-2.0-flash",
216
+ "name": "Gemini 2.0 Flash",
217
+ "envKey": "GEMINI_API_KEY",
218
+ "baseUrl": "https://generativelanguage.googleapis.com",
219
+ "capabilities": {
220
+ "vision": true
221
+ },
222
+ "generationConfig": {
223
+ "timeout": 60000,
224
+ "maxRetries": 2,
225
+ "contextWindowSize": 1000000,
226
+ "schemaCompliance": "auto",
227
+ "samplingParams": {
228
+ "temperature": 0.4,
229
+ "top_p": 0.95,
230
+ "max_tokens": 8192,
231
+ "top_k": 40
214
232
  }
215
233
  }
216
- ]
217
- }
234
+ }
235
+ ]
218
236
  }
219
237
  }
220
238
  ```
@@ -231,54 +249,51 @@ Most local inference servers (vLLM, Ollama, LM Studio, etc.) provide an OpenAI-c
231
249
  "LMSTUDIO_API_KEY": "lm-studio"
232
250
  },
233
251
  "modelProviders": {
234
- "openai": {
235
- "protocol": "openai",
236
- "models": [
237
- {
238
- "id": "qwen2.5-7b",
239
- "name": "Qwen2.5 7B (Ollama)",
240
- "envKey": "OLLAMA_API_KEY",
241
- "baseUrl": "http://localhost:11434/v1",
242
- "generationConfig": {
243
- "timeout": 300000,
244
- "maxRetries": 1,
245
- "contextWindowSize": 32768,
246
- "samplingParams": {
247
- "temperature": 0.7,
248
- "top_p": 0.9,
249
- "max_tokens": 4096
250
- }
252
+ "openai": [
253
+ {
254
+ "id": "qwen2.5-7b",
255
+ "name": "Qwen2.5 7B (Ollama)",
256
+ "envKey": "OLLAMA_API_KEY",
257
+ "baseUrl": "http://localhost:11434/v1",
258
+ "generationConfig": {
259
+ "timeout": 300000,
260
+ "maxRetries": 1,
261
+ "contextWindowSize": 32768,
262
+ "samplingParams": {
263
+ "temperature": 0.7,
264
+ "top_p": 0.9,
265
+ "max_tokens": 4096
251
266
  }
252
- },
253
- {
254
- "id": "llama-3.1-8b",
255
- "name": "Llama 3.1 8B (vLLM)",
256
- "envKey": "VLLM_API_KEY",
257
- "baseUrl": "http://localhost:8000/v1",
258
- "generationConfig": {
259
- "timeout": 120000,
260
- "maxRetries": 2,
261
- "contextWindowSize": 128000,
262
- "samplingParams": {
263
- "temperature": 0.6,
264
- "max_tokens": 8192
265
- }
267
+ }
268
+ },
269
+ {
270
+ "id": "llama-3.1-8b",
271
+ "name": "Llama 3.1 8B (vLLM)",
272
+ "envKey": "VLLM_API_KEY",
273
+ "baseUrl": "http://localhost:8000/v1",
274
+ "generationConfig": {
275
+ "timeout": 120000,
276
+ "maxRetries": 2,
277
+ "contextWindowSize": 128000,
278
+ "samplingParams": {
279
+ "temperature": 0.6,
280
+ "max_tokens": 8192
266
281
  }
267
- },
268
- {
269
- "id": "local-model",
270
- "name": "Local Model (LM Studio)",
271
- "envKey": "LMSTUDIO_API_KEY",
272
- "baseUrl": "http://localhost:1234/v1",
273
- "generationConfig": {
274
- "timeout": 60000,
275
- "samplingParams": {
276
- "temperature": 0.5
277
- }
282
+ }
283
+ },
284
+ {
285
+ "id": "local-model",
286
+ "name": "Local Model (LM Studio)",
287
+ "envKey": "LMSTUDIO_API_KEY",
288
+ "baseUrl": "http://localhost:1234/v1",
289
+ "generationConfig": {
290
+ "timeout": 60000,
291
+ "samplingParams": {
292
+ "temperature": 0.5
278
293
  }
279
294
  }
280
- ]
281
- }
295
+ }
296
+ ]
282
297
  }
283
298
  }
284
299
  ```
@@ -394,18 +409,15 @@ If you prefer to manually configure Coding Plan models, you can add them to your
394
409
  ```json
395
410
  {
396
411
  "modelProviders": {
397
- "openai": {
398
- "protocol": "openai",
399
- "models": [
400
- {
401
- "id": "qwen3-coder-plus",
402
- "name": "qwen3-coder-plus",
403
- "description": "Qwen3-Coder via Alibaba Cloud Coding Plan",
404
- "envKey": "YOUR_CUSTOM_ENV_KEY",
405
- "baseUrl": "https://coding.dashscope.aliyuncs.com/v1"
406
- }
407
- ]
408
- }
412
+ "openai": [
413
+ {
414
+ "id": "qwen3-coder-plus",
415
+ "name": "qwen3-coder-plus",
416
+ "description": "Qwen3-Coder via Alibaba Cloud Coding Plan",
417
+ "envKey": "YOUR_CUSTOM_ENV_KEY",
418
+ "baseUrl": "https://coding.dashscope.aliyuncs.com/v1"
419
+ }
420
+ ]
409
421
  }
410
422
  }
411
423
  ```
@@ -426,14 +438,14 @@ If you prefer to manually configure Coding Plan models, you can add them to your
426
438
 
427
439
  The effective auth/model/credential values are chosen per field using the following precedence (first present wins). You can combine `--auth-type` with `--model` to point directly at a provider entry; these CLI flags run before other layers.
428
440
 
429
- | Layer (highest → lowest) | authType | model | apiKey | baseUrl | apiKeyEnvKey | proxy |
430
- | -------------------------- | ----------------------------------- | ----------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------ | ---------------------- | --------------------------------- |
431
- | Programmatic overrides | `/auth` | `/auth` input | `/auth` input | `/auth` input | — | — |
432
- | Model provider selection | — | `modelProvider.id` | `env[modelProvider.envKey]` | `modelProvider.baseUrl` | `modelProvider.envKey` | — |
433
- | CLI arguments | `--auth-type` | `--model` | `--openai-api-key` | `--openai-base-url` | — | — |
434
- | Environment variables | — | Provider-specific mapping (e.g. `OPENAI_MODEL`) | Provider-specific mapping (e.g. `OPENAI_API_KEY`) | Provider-specific mapping (e.g. `OPENAI_BASE_URL`) | — | — |
435
- | Settings (`settings.json`) | `security.auth.selectedType` | `model.name` | `security.auth.apiKey` | `security.auth.baseUrl` | — | — |
436
- | Default / computed | Falls back to `AuthType.QWEN_OAUTH` | Built-in default (OpenAI ⇒ `qwen3.5-plus`) | — | — | — | `Config.getProxy()` if configured |
441
+ | Layer (highest → lowest) | authType | model | apiKey | baseUrl | apiKeyEnvKey | proxy |
442
+ | -------------------------- | ----------------------------------- | ----------------------------------------------- | ------------------------------------------------- | -------------------------------------------------- | ---------------------- | --------------------------------- |
443
+ | Programmatic overrides | `/auth` | `/auth` input | `/auth` input | `/auth` input | — | — |
444
+ | Model provider selection | — | `modelProvider.id` | `env[modelProvider.envKey]` | `modelProvider.baseUrl` | `modelProvider.envKey` | — |
445
+ | CLI arguments | `--auth-type` | `--model` | `--openai-api-key` | `--openai-base-url` | — | — |
446
+ | Environment variables | — | Provider-specific mapping (e.g. `OPENAI_MODEL`) | Provider-specific mapping (e.g. `OPENAI_API_KEY`) | Provider-specific mapping (e.g. `OPENAI_BASE_URL`) | — | — |
447
+ | Settings (`settings.json`) | `security.auth.selectedType` | `model.name` | `security.auth.apiKey` | `security.auth.baseUrl` | — | — |
448
+ | Default / computed | Falls back to `AuthType.QWEN_OAUTH` | Built-in default (OpenAI ⇒ `qwen3.5-plus`) | — | — | — | `Config.getProxy()` if configured |
437
449
 
438
450
  \*When present, CLI auth flags override settings. Otherwise, `security.auth.selectedType` or the implicit default determine the auth type. Qwen OAuth and OpenAI are the only auth types surfaced without extra configuration.
439
451
 
@@ -503,17 +515,14 @@ The following fields are treated as atomic objects - provider values completely
503
515
  // modelProviders configuration
504
516
  {
505
517
  "modelProviders": {
506
- "openai": {
507
- "protocol": "openai",
508
- "models": [{
509
- "id": "gpt-4o",
510
- "envKey": "OPENAI_API_KEY",
511
- "generationConfig": {
512
- "timeout": 60000,
513
- "samplingParams": { "temperature": 0.2 }
514
- }
515
- }]
516
- }
518
+ "openai": [{
519
+ "id": "gpt-4o",
520
+ "envKey": "OPENAI_API_KEY",
521
+ "generationConfig": {
522
+ "timeout": 60000,
523
+ "samplingParams": { "temperature": 0.2 }
524
+ }
525
+ }]
517
526
  }
518
527
  }
519
528
  ```
@@ -539,25 +548,22 @@ The optional `reasoning` field under `generationConfig` controls how aggressivel
539
548
  ```jsonc
540
549
  {
541
550
  "modelProviders": {
542
- "openai": {
543
- "protocol": "openai",
544
- "models": [
545
- {
546
- "id": "deepseek-v4-pro",
547
- "name": "DeepSeek V4 Pro",
548
- "baseUrl": "https://api.deepseek.com/v1",
549
- "envKey": "DEEPSEEK_API_KEY",
550
- "generationConfig": {
551
- // The four-tier scale:
552
- // 'low' | 'medium' server-mapped to 'high' on DeepSeek
553
- // 'high' — default reasoning intensity
554
- // 'max' — DeepSeek-specific extra-strong tier
555
- // Or set `false` to disable reasoning entirely.
556
- "reasoning": { "effort": "max" },
557
- },
551
+ "openai": [
552
+ {
553
+ "id": "deepseek-v4-pro",
554
+ "name": "DeepSeek V4 Pro",
555
+ "baseUrl": "https://api.deepseek.com/v1",
556
+ "envKey": "DEEPSEEK_API_KEY",
557
+ "generationConfig": {
558
+ // The four-tier scale:
559
+ // 'low' | 'medium' — server-mapped to 'high' on DeepSeek
560
+ // 'high' — default reasoning intensity
561
+ // 'max' — DeepSeek-specific extra-strong tier
562
+ // Or set `false` to disable reasoning entirely.
563
+ "reasoning": { "effort": "max" },
558
564
  },
559
- ],
560
- },
565
+ },
566
+ ],
561
567
  },
562
568
  }
563
569
  ```