@qwen-code/qwen-code 0.18.4 → 0.18.5-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/bundled/qc-helper/SKILL.md +13 -5
  2. package/bundled/qc-helper/docs/configuration/_meta.ts +1 -0
  3. package/bundled/qc-helper/docs/configuration/auth.md +75 -54
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +221 -185
  5. package/bundled/qc-helper/docs/configuration/qwen-ignore.md +31 -15
  6. package/bundled/qc-helper/docs/configuration/settings.md +70 -53
  7. package/bundled/qc-helper/docs/configuration/themes.md +7 -4
  8. package/bundled/qc-helper/docs/extension/extension-releasing.md +1 -1
  9. package/bundled/qc-helper/docs/extension/introduction.md +27 -21
  10. package/bundled/qc-helper/docs/features/approval-mode.md +2 -0
  11. package/bundled/qc-helper/docs/features/arena.md +3 -3
  12. package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
  13. package/bundled/qc-helper/docs/features/channels/plugins.md +1 -1
  14. package/bundled/qc-helper/docs/features/commands.md +6 -1
  15. package/bundled/qc-helper/docs/features/headless.md +1 -1
  16. package/bundled/qc-helper/docs/features/mcp.md +78 -10
  17. package/bundled/qc-helper/docs/features/sandbox.md +2 -2
  18. package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
  19. package/bundled/qc-helper/docs/integration-github-action.md +2 -2
  20. package/bundled/qc-helper/docs/overview.md +1 -1
  21. package/bundled/qc-helper/docs/quickstart.md +9 -5
  22. package/bundled/qc-helper/docs/qwen-serve.md +14 -2
  23. package/bundled/qc-helper/docs/support/tos-privacy.md +1 -1
  24. package/chunks/{agent-LYTC56HT.js → agent-P4KSTVXX.js} +24 -22
  25. package/chunks/{agent-headless-FPUP5WHP.js → agent-headless-QUAPWF55.js} +24 -22
  26. package/chunks/{anthropicContentGenerator-OLOGBVLP.js → anthropicContentGenerator-7352A7I5.js} +17 -14
  27. package/chunks/artifact-tool-5J4HUZAV.js +675 -0
  28. package/chunks/{askUserQuestion-ANRVSBIJ.js → askUserQuestion-HF7HCWDD.js} +20 -7
  29. package/chunks/{ca-K6MD665I.js → ca-7WC7ELX6.js} +1 -0
  30. package/chunks/chunk-22IFUCVR.js +291 -0
  31. package/chunks/{chunk-M5VYHAHT.js → chunk-2BIF2NVV.js} +2 -2
  32. package/chunks/{chunk-AQDPHFDZ.js → chunk-2QDQTWCI.js} +1 -1
  33. package/chunks/{chunk-2ES3D3TW.js → chunk-3BR4OIOE.js} +3 -3
  34. package/chunks/{chunk-N5QHMPZU.js → chunk-3UALQ56H.js} +1 -1
  35. package/chunks/{chunk-5RVEAAD2.js → chunk-BC5POO46.js} +8 -7
  36. package/chunks/{chunk-DZCZZPCY.js → chunk-BGUDAULQ.js} +11 -290
  37. package/chunks/{chunk-FPZF3BNV.js → chunk-BNXANYLH.js} +1 -1
  38. package/chunks/{chunk-IKOWINH4.js → chunk-C4K3FEQ2.js} +42 -2
  39. package/chunks/{chunk-PTGKSUUJ.js → chunk-CGEGHF2C.js} +2 -207
  40. package/chunks/chunk-EEEZIVFJ.js +908 -0
  41. package/chunks/{chunk-GBTJHKQ6.js → chunk-EIJYMXXX.js} +619 -135
  42. package/chunks/chunk-EJYJYJZ2.js +3703 -0
  43. package/chunks/{chunk-F6FP3URI.js → chunk-EW6C27XX.js} +1 -1
  44. package/chunks/{chunk-HU3RKEK2.js → chunk-F6XNTYNE.js} +216 -1
  45. package/chunks/{chunk-4HMWGHPP.js → chunk-GZCJS5WH.js} +2 -2
  46. package/chunks/{chunk-E5SRTXRG.js → chunk-HGNSRCRB.js} +1 -1
  47. package/chunks/{chunk-IUEQOXOI.js → chunk-KBXLIVWQ.js} +2 -2
  48. package/chunks/{chunk-JJHY7NAD.js → chunk-L7U2RI5O.js} +59 -57
  49. package/chunks/{chunk-JN6FVOPP.js → chunk-NKJ6LRCR.js} +2 -2
  50. package/chunks/{chunk-7OCZ77KA.js → chunk-NWLUISRA.js} +1 -1
  51. package/chunks/{chunk-JIJBNW4A.js → chunk-OTBK43JR.js} +1 -1
  52. package/chunks/{chunk-WWU2KUSR.js → chunk-PRYMDRBV.js} +1 -1
  53. package/chunks/{chunk-KQIKOTQJ.js → chunk-RYLJU2DY.js} +60 -5
  54. package/chunks/{chunk-VWPDSQZY.js → chunk-T2VDEFUU.js} +2 -2
  55. package/chunks/{chunk-LXUQBWQA.js → chunk-T336V435.js} +93 -45
  56. package/chunks/{chunk-4TW2JM5Q.js → chunk-TXVGVZYR.js} +3 -3
  57. package/chunks/{chunk-6Z2MVJIJ.js → chunk-UMRZ7XCR.js} +172 -5017
  58. package/chunks/{chunk-7GX7XYZU.js → chunk-XU5P23GN.js} +3 -3
  59. package/chunks/{chunk-SZWDOOGV.js → chunk-ZC675NGC.js} +11 -11
  60. package/chunks/{chunk-32SSXBMG.js → chunk-ZXNEOCW2.js} +8049 -5520
  61. package/chunks/{computer-use-P4WQBATW.js → computer-use-4TLHI3UR.js} +26 -23
  62. package/chunks/contextCommand-HFEITKSR.js +56 -0
  63. package/chunks/{cron-create-OKGQO6GX.js → cron-create-A5637KCI.js} +12 -9
  64. package/chunks/{cron-delete-DTJP7L6O.js → cron-delete-AADOSEOZ.js} +4 -4
  65. package/chunks/{cron-list-VKZUASFG.js → cron-list-OFCPTT2Y.js} +4 -4
  66. package/chunks/{de-K2F3T3TR.js → de-ACHALDED.js} +1 -0
  67. package/chunks/{dist-OLC6NBSB.js → dist-DZ6AJDX4.js} +1 -1
  68. package/chunks/{dist-QUSDBLAK.js → dist-ZBX7LPJZ.js} +6 -1
  69. package/chunks/{edit-CS7DSS4Z.js → edit-B7H73V6O.js} +24 -22
  70. package/chunks/{en-KGSAKBJP.js → en-7OGNWWME.js} +49 -0
  71. package/chunks/{enter-worktree-PA4HPHJK.js → enter-worktree-GG7ZHYPS.js} +24 -22
  72. package/chunks/{enterPlanMode-SFE5AFKZ.js → enterPlanMode-RHTAKG52.js} +32 -28
  73. package/chunks/{exit-worktree-FR3AZTC6.js → exit-worktree-U7VQZRMG.js} +24 -22
  74. package/chunks/{exitPlanMode-AHOUO44D.js → exitPlanMode-S35A36II.js} +36 -28
  75. package/chunks/{fr-2CAQEOK6.js → fr-GVKZ27MF.js} +1 -0
  76. package/chunks/{geminiContentGenerator-AXCVDKGI.js → geminiContentGenerator-W7KVATBA.js} +4 -4
  77. package/chunks/{glob-BQPAW3IW.js → glob-WOFF7ECI.js} +26 -23
  78. package/chunks/{grep-2F7BL5TQ.js → grep-MWNYWYWQ.js} +24 -22
  79. package/chunks/{ja-QWL7V6OJ.js → ja-FKZ2WZ4D.js} +1 -0
  80. package/chunks/{keychain-token-storage-ALKQXYJQ.js → keychain-token-storage-CSYMNRPP.js} +2 -2
  81. package/chunks/{loop-wakeup-RX6YIUSG.js → loop-wakeup-DGSMT4N6.js} +5 -5
  82. package/chunks/{ls-6PLNWHMU.js → ls-UGRZ4ZOM.js} +6 -6
  83. package/chunks/{lsp-3HFQU4OF.js → lsp-72IJURW3.js} +2 -2
  84. package/chunks/{monitor-YTTMDFW2.js → monitor-AYUINLYN.js} +24 -22
  85. package/chunks/{notebook-edit-7TNZMTBR.js → notebook-edit-EP4D4WFD.js} +25 -23
  86. package/chunks/{openaiContentGenerator-JA6YXXPI.js → openaiContentGenerator-SLYYF7AM.js} +12 -13
  87. package/chunks/{pt-2SPOLMAY.js → pt-SY5NCFGR.js} +1 -0
  88. package/chunks/{qwenContentGenerator-NBOVGW7B.js → qwenContentGenerator-VZ7JYU4A.js} +27 -25
  89. package/chunks/{qwenOAuth2-XWC5SU63.js → qwenOAuth2-K4AASPCV.js} +5 -4
  90. package/chunks/{read-file-RUBU3KUA.js → read-file-65EQ53KS.js} +9 -8
  91. package/chunks/{ripGrep-TPFC7KZF.js → ripGrep-5XLHJDDM.js} +24 -22
  92. package/chunks/{ru-35IVJTEH.js → ru-FWNXJG4F.js} +1 -0
  93. package/chunks/{scheduler-NTVF45LR.js → scheduler-5GLJSA2H.js} +73 -27
  94. package/chunks/{send-message-IIT3SHA7.js → send-message-URUZ7PLA.js} +24 -4
  95. package/chunks/{serve-J6VG37OX.js → serve-MUROZGCG.js} +7575 -6916
  96. package/chunks/{shell-EQQEHEFI.js → shell-ET3BQWKB.js} +24 -22
  97. package/chunks/{skill-QWRWJCQJ.js → skill-YEYABCAF.js} +11 -10
  98. package/chunks/{src-LNADIG5P.js → src-POVOI65Y.js} +165 -66
  99. package/chunks/{syntheticOutput-H67FYXU7.js → syntheticOutput-65FRJGWM.js} +3 -3
  100. package/chunks/{task-create-OVXHSHAI.js → task-create-IH45HOFT.js} +6 -6
  101. package/chunks/{task-list-QUUCQJ3U.js → task-list-FUB6JWSX.js} +5 -5
  102. package/chunks/{task-stop-WA5DMTKK.js → task-stop-P6IOHQM3.js} +2 -2
  103. package/chunks/{task-update-PC5427TI.js → task-update-RTUT7LJV.js} +6 -6
  104. package/chunks/{team-create-TXWQL777.js → team-create-EFZFKQFP.js} +28 -26
  105. package/chunks/{team-delete-ZTEMYRJ3.js → team-delete-RXGYRMHC.js} +5 -5
  106. package/chunks/{todoWrite-J6L6ELD6.js → todoWrite-O6JK24G6.js} +4 -4
  107. package/chunks/{tool-search-JAVM7ABF.js → tool-search-BRJC42TE.js} +9 -8
  108. package/chunks/{web-fetch-6XLPPTP7.js → web-fetch-KUMBROUI.js} +4 -4
  109. package/chunks/{workflow-7LN3L6KK.js → workflow-UDRBNFTT.js} +557 -97
  110. package/chunks/{write-file-DAKE7YKB.js → write-file-F7TAHAHF.js} +24 -22
  111. package/chunks/{zh-X4KM6MTW.js → zh-3RMSEO5M.js} +49 -0
  112. package/chunks/{zh-TW-BSG6BUWK.js → zh-TW-R7WRLTJS.js} +49 -0
  113. package/cli.js +9205 -5426
  114. package/locales/ca.js +2 -1
  115. package/locales/de.js +1 -0
  116. package/locales/en.js +70 -0
  117. package/locales/fr.js +1 -0
  118. package/locales/ja.js +1 -0
  119. package/locales/pt.js +1 -0
  120. package/locales/ru.js +1 -0
  121. package/locales/zh-TW.js +67 -0
  122. package/locales/zh.js +67 -0
  123. package/package.json +3 -2
  124. package/web-shell/assets/{arc-CRFN10gD.js → arc-DHUeMnnj.js} +1 -1
  125. package/web-shell/assets/{architectureDiagram-3BPJPVTR-IRlu1CpH.js → architectureDiagram-3BPJPVTR-DlX12yyj.js} +1 -1
  126. package/web-shell/assets/{blockDiagram-GPEHLZMM-htIZ6iw8.js → blockDiagram-GPEHLZMM-DTFUXMUT.js} +1 -1
  127. package/web-shell/assets/{c4Diagram-AAUBKEIU-A2GoRq3O.js → c4Diagram-AAUBKEIU-CWdB54fk.js} +1 -1
  128. package/web-shell/assets/channel-C3WhMjjP.js +1 -0
  129. package/web-shell/assets/{chunk-2J33WTMH-CdP2AC6u.js → chunk-2J33WTMH-CF5C5jNR.js} +1 -1
  130. package/web-shell/assets/{chunk-4BX2VUAB-DrA07nW2.js → chunk-4BX2VUAB-Cw7Ydfji.js} +1 -1
  131. package/web-shell/assets/{chunk-55IACEB6-CFGnVU2f.js → chunk-55IACEB6-CnbI1ZCw.js} +1 -1
  132. package/web-shell/assets/{chunk-727SXJPM-BTMkq3Tk.js → chunk-727SXJPM-DmSy00Pe.js} +1 -1
  133. package/web-shell/assets/{chunk-AQP2D5EJ-C9sYg04Z.js → chunk-AQP2D5EJ-DgNgXqBu.js} +1 -1
  134. package/web-shell/assets/{chunk-FMBD7UC4-Cag-cj6I.js → chunk-FMBD7UC4-tz2IvOXv.js} +1 -1
  135. package/web-shell/assets/{chunk-ND2GUHAM-CDSTFoR7.js → chunk-ND2GUHAM-DaBLEBPa.js} +1 -1
  136. package/web-shell/assets/{chunk-QZHKN3VN-CN9Z6oOs.js → chunk-QZHKN3VN-DVCQST3O.js} +1 -1
  137. package/web-shell/assets/classDiagram-4FO5ZUOK-CQ6TXPif.js +1 -0
  138. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ6TXPif.js +1 -0
  139. package/web-shell/assets/{cose-bilkent-S5V4N54A-DuN9j8Du.js → cose-bilkent-S5V4N54A-CAKTcdCQ.js} +1 -1
  140. package/web-shell/assets/{dagre-BM42HDAG-ByCWe45f.js → dagre-BM42HDAG-BdkBwlKg.js} +1 -1
  141. package/web-shell/assets/{diagram-2AECGRRQ-eWyU_pKZ.js → diagram-2AECGRRQ-DYt3G65F.js} +1 -1
  142. package/web-shell/assets/{diagram-5GNKFQAL-0Bfu3Fq5.js → diagram-5GNKFQAL-BWvROWjY.js} +1 -1
  143. package/web-shell/assets/{diagram-KO2AKTUF-B6KBKkQP.js → diagram-KO2AKTUF-BvvgwIaQ.js} +1 -1
  144. package/web-shell/assets/{diagram-LMA3HP47-TToDmeA_.js → diagram-LMA3HP47-E7NLSNKg.js} +1 -1
  145. package/web-shell/assets/{diagram-OG6HWLK6-CQCkC2Yx.js → diagram-OG6HWLK6-CYmUBgpE.js} +1 -1
  146. package/web-shell/assets/{erDiagram-TEJ5UH35-Cm9ls1iB.js → erDiagram-TEJ5UH35-BU5gY30h.js} +1 -1
  147. package/web-shell/assets/{flowDiagram-I6XJVG4X-Dyoz80Pv.js → flowDiagram-I6XJVG4X-V_ZssSZ9.js} +1 -1
  148. package/web-shell/assets/{ganttDiagram-6RSMTGT7-Cfut9yaU.js → ganttDiagram-6RSMTGT7-QIShlsdI.js} +1 -1
  149. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BCuJdlfD.js → gitGraphDiagram-PVQCEYII-DJxdu2YS.js} +1 -1
  150. package/web-shell/assets/index-BPnhI7gl.css +1 -0
  151. package/web-shell/assets/index-De4rqTsW.js +706 -0
  152. package/web-shell/assets/{infoDiagram-5YYISTIA-CXKxF2VL.js → infoDiagram-5YYISTIA-BqjdrFeO.js} +1 -1
  153. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DE7HWSU8.js → ishikawaDiagram-YF4QCWOH-BP_a2YZ2.js} +1 -1
  154. package/web-shell/assets/{journeyDiagram-JHISSGLW-D__YUfds.js → journeyDiagram-JHISSGLW-BXg-S3Lk.js} +1 -1
  155. package/web-shell/assets/{kanban-definition-UN3LZRKU-D82R169M.js → kanban-definition-UN3LZRKU-BksAkdEJ.js} +1 -1
  156. package/web-shell/assets/{linear-DpyMbKqT.js → linear-D2m9-ODE.js} +1 -1
  157. package/web-shell/assets/{mermaid.core-D1KEFDhn.js → mermaid.core-dTtkZp2F.js} +5 -5
  158. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BwVUFGFE.js → mindmap-definition-RKZ34NQL-Bft9my8O.js} +1 -1
  159. package/web-shell/assets/{pieDiagram-4H26LBE5-BO_qoEGx.js → pieDiagram-4H26LBE5-Cw8S-alZ.js} +1 -1
  160. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Cx0ZaWPo.js → quadrantDiagram-W4KKPZXB-DaDoTMts.js} +1 -1
  161. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BJPXejOA.js → requirementDiagram-4Y6WPE33-Cp5kSpwj.js} +1 -1
  162. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-C1xeIL9i.js → sankeyDiagram-5OEKKPKP-CW8RsJJZ.js} +1 -1
  163. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CSYKQUjf.js → sequenceDiagram-3UESZ5HK-DTfpIiJK.js} +1 -1
  164. package/web-shell/assets/{stateDiagram-AJRCARHV-d9hiHlAW.js → stateDiagram-AJRCARHV-DixFVzEs.js} +1 -1
  165. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DZgE04s3.js +1 -0
  166. package/web-shell/assets/{timeline-definition-PNZ67QCA-BhCBkq8k.js → timeline-definition-PNZ67QCA-DYsbXn5l.js} +1 -1
  167. package/web-shell/assets/{vennDiagram-CIIHVFJN-DPPFWp_y.js → vennDiagram-CIIHVFJN-HUpRpuUp.js} +1 -1
  168. package/web-shell/assets/{wardley-L42UT6IY-CcOUIgXY.js → wardley-L42UT6IY-cT3nQH_T.js} +1 -1
  169. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-p7oR5X7r.js → wardleyDiagram-YWT4CUSO-Dmm7J6Qc.js} +1 -1
  170. package/web-shell/assets/{xychartDiagram-2RQKCTM6-Dfr7-SEy.js → xychartDiagram-2RQKCTM6-CX0L5p9C.js} +1 -1
  171. package/web-shell/index.html +3 -3
  172. package/chunks/chunk-77WXWU44.js +0 -26
  173. package/chunks/contextCommand-POQ6GYN3.js +0 -54
  174. package/web-shell/assets/channel-WwImfsc7.js +0 -1
  175. package/web-shell/assets/classDiagram-4FO5ZUOK-CJKQYFeJ.js +0 -1
  176. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CJKQYFeJ.js +0 -1
  177. package/web-shell/assets/index-BDZiTAkl.css +0 -1
  178. package/web-shell/assets/index-DaebdpHq.js +0 -516
  179. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DgReoybQ.js +0 -1
@@ -43,10 +43,13 @@ Commands for adjusting interface appearance and work environment.
43
43
  | `/clear` | Clear terminal screen content | `/clear` (shortcut: `Ctrl+L`) |
44
44
  | `/context` | Show context window usage breakdown | `/context` |
45
45
  | → `detail` | Show per-item context usage breakdown | `/context detail` |
46
+ | `/history` | Control history display preferences and visibility | `/history collapse-on-resume`, `/history expand-on-resume`, `/history expand-now` |
46
47
  | `/diff` | Open an interactive diff viewer showing uncommitted changes and per-turn diffs. Use ←/→ to switch between current git diff and individual conversation turns, ↑/↓ to browse files | `/diff` |
47
48
  | `/theme` | Change Qwen Code visual theme | `/theme` |
48
49
  | `/vim` | Turn input area Vim editing mode on/off | `/vim` |
50
+ | `/voice` | Toggle voice dictation input | `/voice`, `/voice status` |
49
51
  | `/directory` | Manage multi-directory support workspace | `/dir add ./src,./tests` |
52
+ | `/cd` | Move this session to a new working directory | `/cd ../other-project` |
50
53
  | `/editor` | Open dialog to select supported editor | `/editor` |
51
54
  | `/statusline` | Open interactive [status line](./status-line.md) preset dialog | `/statusline` |
52
55
  | `/statusline <text>` | Generate a command-mode [status line](./status-line.md) via agent | `/statusline show model and git branch` |
@@ -72,6 +75,7 @@ Commands for managing AI tools and models.
72
75
  | Command | Description | Usage Examples |
73
76
  | ---------------- | --------------------------------------------- | --------------------------------------------- |
74
77
  | `/mcp` | List configured MCP servers and tools | `/mcp`, `/mcp desc` |
78
+ | `/import-config` | Import MCP servers from Claude configs | `/import-config claude-code`, `/import-config claude-desktop --scope project` |
75
79
  | `/tools` | Display currently available tool list | `/tools`, `/tools desc` |
76
80
  | `/skills` | List and run available skills | `/skills`, `/skills <name>` |
77
81
  | `/plan` | Switch to plan mode or exit plan mode | `/plan`, `/plan <task>`, `/plan exit` |
@@ -81,8 +85,9 @@ Commands for managing AI tools and models.
81
85
  | →`auto-edit` | Automatically approve edits | Trusted environment |
82
86
  | →`auto` | Classifier-evaluated approval | Autonomous sessions with safety guardrails |
83
87
  | →`yolo` | Automatically approve all | Quick prototyping |
84
- | `/model` | Switch model used in current session | `/model` |
88
+ | `/model` | Switch model used in current session | `/model`, `/model <model-id>` (switch immediately) |
85
89
  | `/model --fast` | Set a lighter model for prompt suggestions | `/model --fast qwen3-coder-flash` |
90
+ | `/model --voice` | Set the model used for voice transcription | `/model --voice <model-id>` |
86
91
  | `/extensions` | List all active extensions in current session | `/extensions` |
87
92
  | `/memory` | Open the Memory Manager dialog | `/memory` |
88
93
  | `/remember` | Save a durable memory | `/remember Prefer terse responses` |
@@ -406,6 +406,6 @@ These messages keep CI runners alive and let you monitor progress. They do not a
406
406
  ## Resources
407
407
 
408
408
  - [CLI Configuration](../configuration/settings#command-line-arguments) - Complete configuration guide
409
- - [Authentication](../configuration/settings#environment-variables-for-api-access) - Setup authentication
409
+ - [Authentication](../configuration/auth.md) - Setup authentication
410
410
  - [Commands](../features/commands) - Interactive commands reference
411
411
  - [Tutorials](../quickstart) - Step-by-step automation guides
@@ -20,7 +20,7 @@ With MCP servers connected, you can ask Qwen Code to:
20
20
  Qwen Code loads MCP servers from `mcpServers` in your `settings.json`. You can configure servers either:
21
21
 
22
22
  - By editing `settings.json` directly
23
- - By using `qwen mcp` commands (see [CLI reference](#qwen-mcp-cli))
23
+ - By using `qwen mcp` commands (see [CLI reference](#manage-mcp-servers-with-qwen-mcp))
24
24
 
25
25
  ### Add your first server
26
26
 
@@ -30,20 +30,28 @@ Qwen Code loads MCP servers from `mcpServers` in your `settings.json`. You can c
30
30
  qwen mcp add --transport http my-server http://localhost:3000/mcp
31
31
  ```
32
32
 
33
- 2. Open MCP management dialog to view and manage servers:
33
+ 2. Start Qwen Code and open the MCP management dialog to view and manage
34
+ servers:
34
35
 
35
36
  ```bash
36
- qwen mcp
37
+ qwen
37
38
  ```
38
39
 
39
- 3. Restart Qwen Code in the same project (or start it if it wasn’t running yet), then ask the model to use tools from that server.
40
+ Then enter:
41
+
42
+ ```text
43
+ /mcp
44
+ ```
45
+
46
+ 3. If Qwen Code was already running before you added the server, restart it in
47
+ the same project. Then ask the model to use tools from that server.
40
48
 
41
49
  ## Where configuration is stored (scopes)
42
50
 
43
51
  Most users only need these two scopes:
44
52
 
45
- - **Project scope (default)**: `.qwen/settings.json` in your project root
46
- - **User scope**: `~/.qwen/settings.json` across all projects on your machine
53
+ - **User scope (default)**: `~/.qwen/settings.json` across all projects on your machine
54
+ - **Project scope**: `.qwen/settings.json` in your project root
47
55
 
48
56
  Write to user scope:
49
57
 
@@ -94,7 +102,7 @@ JSON (`.qwen/settings.json`):
94
102
  }
95
103
  ```
96
104
 
97
- CLI (writes to project scope by default):
105
+ CLI (writes to user scope by default):
98
106
 
99
107
  ```bash
100
108
  qwen mcp add pythonTools -e DATABASE_URL=$DB_CONNECTION_STRING -e API_KEY=$EXTERNAL_API_KEY \
@@ -147,6 +155,62 @@ CLI:
147
155
  qwen mcp add --transport sse sseServer http://localhost:8080/sse --timeout 30000
148
156
  ```
149
157
 
158
+ ## Using MCP prompts and resources
159
+
160
+ Besides tools, Qwen Code discovers and surfaces two other MCP primitives.
161
+
162
+ ### Prompts (slash commands)
163
+
164
+ Any prompt a server advertises via `prompts/list` becomes an executable
165
+ **slash command**. After discovery, type `/` and you'll see the prompt
166
+ listed (labeled `MCP: <server>`); run it like any other command:
167
+
168
+ ```text
169
+ /my_prompt --arg1="value" --arg2="value"
170
+ # positional form also works:
171
+ /my_prompt "value" "value"
172
+ # show the prompt's arguments:
173
+ /my_prompt help
174
+ ```
175
+
176
+ The prompt's messages are sent to the model, which then acts on them.
177
+
178
+ > Discovery is lenient about the declared `prompts` capability: some
179
+ > servers implement `prompts/list` but omit `prompts` from their
180
+ > `initialize` capabilities. Qwen Code attempts `prompts/list` anyway, so
181
+ > those prompts still appear. A server that genuinely has no prompts simply
182
+ > answers `Method not found`, which is ignored.
183
+
184
+ ### Resources
185
+
186
+ Resources a server advertises via `resources/list` are discovered per
187
+ server. Open the management dialog with `/mcp` and select a server to see
188
+ its **Resources** count alongside its tools and prompts. Choose **View
189
+ resources** to browse the server's resource URIs; selecting one shows its
190
+ description and MIME type along with the exact `@server:uri` reference to
191
+ paste into a message. As with prompts, the `resources` capability is not
192
+ required to be declared.
193
+
194
+ Inject a resource's contents into your message with the `@server:uri`
195
+ syntax — type `@`, then the server name, a colon, and the resource URI:
196
+
197
+ ```text
198
+ summarize @myserver:file:///docs/spec.md and list the open questions
199
+ ```
200
+
201
+ Typing `@myserver:` shows an autocomplete list of that server's resources;
202
+ keep typing to filter, matching (case-insensitively) either the resource URI
203
+ or its friendly name/title. You don't have to know a URI by heart — before
204
+ you reach the colon, typing part of a server name also suggests matching
205
+ servers that expose resources, so you can pick one and drill straight into
206
+ its resource list. On submit, the referenced resource is read and its contents are
207
+ appended to your message (text inline, binary blobs as attachments); the
208
+ `@server:uri` reference is preserved in the prompt so the model knows what
209
+ it is looking at. The `server` prefix must match a configured MCP server —
210
+ otherwise the token is treated as a normal file path, so existing
211
+ `@path/to/file` references are unaffected. Resource reads are disabled in
212
+ untrusted folders.
213
+
150
214
  ## Progressive availability and discovery timeouts
151
215
 
152
216
  Qwen Code discovers MCP servers in the background after the UI is already
@@ -281,11 +345,15 @@ OAuth configuration properties:
281
345
 
282
346
  OAuth tokens are automatically:
283
347
 
284
- - **Stored securely** in `~/.qwen/mcp-oauth-tokens-v2.json` (AES-256-GCM encrypted), with keychain storage preferred when available
348
+ - **Stored** in `~/.qwen/mcp-oauth-tokens.json` (plaintext, mode 0600) by default. If `QWEN_CODE_FORCE_ENCRYPTED_FILE_STORAGE=true` is set, Qwen Code uses keychain-backed storage where available, or `~/.qwen/mcp-oauth-tokens-v2.json` with AES-256-GCM encryption.
285
349
  - **Refreshed** when expired (if refresh tokens are available)
286
350
  - **Validated** before each connection attempt
287
351
 
288
- Use the `/mcp auth` command within Qwen Code to manage OAuth authentication interactively.
352
+ > [!WARNING]
353
+ > By default, OAuth tokens are stored unencrypted on disk. On shared or multi-user machines, set `QWEN_CODE_FORCE_ENCRYPTED_FILE_STORAGE=true` to protect credentials.
354
+
355
+ Use the `/mcp` dialog within Qwen Code to inspect MCP servers and manage
356
+ authentication interactively.
289
357
 
290
358
  ### Tool filtering (allow/deny tools per server)
291
359
 
@@ -398,7 +466,7 @@ qwen mcp add [options] <name> <commandOrUrl> [args...]
398
466
  | `<name>` | A unique name for the server. | — | `example-server` |
399
467
  | `<commandOrUrl>` | The command to execute (for `stdio`) or the URL (for `http`/`sse`). | — | `/usr/bin/python` or `http://localhost:8` |
400
468
  | `[args...]` | Optional arguments for a `stdio` command. | — | `--port 5000` |
401
- | `-s`, `--scope` | Configuration scope (user or project). | `project` | `-s user` |
469
+ | `-s`, `--scope` | Configuration scope (user or project). | `user` | `-s user` |
402
470
  | `-t`, `--transport` | Transport type (`stdio`, `sse`, `http`). | `stdio` | `-t sse` |
403
471
  | `-e`, `--env` | Set environment variables. | — | `-e KEY=value` |
404
472
  | `-H`, `--header` | Set HTTP headers for SSE and HTTP transports. | — | `-H "X-Api-Key: abc123"` |
@@ -163,7 +163,7 @@ If you want to restrict outbound network access to an allowlist, you can run a l
163
163
 
164
164
  This is especially useful with `*-proxied` Seatbelt profiles.
165
165
 
166
- For a working allowlist-style proxy example, see: [Example Proxy Script](/developers/examples/proxy-script).
166
+ For a working allowlist-style proxy example, see: [Example Proxy Script](../../developers/examples/proxy-script.md).
167
167
 
168
168
  ## Linux UID/GID handling
169
169
 
@@ -210,7 +210,7 @@ Then rebuild the sandbox image:
210
210
  QWEN_SANDBOX=docker BUILD_SANDBOX=1 qwen -s
211
211
  ```
212
212
 
213
- For more details on customizing the sandbox, see [Customizing the sandbox environment](/developers/tools/sandbox).
213
+ For more details on customizing the sandbox, see [Customizing the sandbox environment](../../developers/tools/sandbox.md).
214
214
 
215
215
  **Network issues**
216
216
 
@@ -174,5 +174,5 @@ If you do not want the extra cost, turn the feature off via `experimental.emitTo
174
174
 
175
175
  ## Related
176
176
 
177
- - [Compact Mode](../configuration/settings#ui.compactMode) — toggle with `Ctrl+O`; the summary replaces the generic tool-group header when compact mode is on.
177
+ - [Compact Mode](../configuration/settings#ui) — toggle with `Ctrl+O`; the summary replaces the generic tool-group header when compact mode is on.
178
178
  - [Followup Suggestions](./followup-suggestions) — another fast-model-driven UX enhancement that shares the same `fastModel` setting.
@@ -96,7 +96,7 @@ This workflow acts as a central dispatcher for Qwen Code CLI, routing requests t
96
96
 
97
97
  ### Issue Triage
98
98
 
99
- This action can be used to triage GitHub Issues automatically or on a schedule. For a detailed guide on how to set up the issue triage system, go to the [GitHub Issue Triage workflow documentation](./examples/workflows/issue-triage).
99
+ This action can be used to triage GitHub Issues automatically or on a schedule. For a working issue triage setup, see the [automated issue triage workflow](https://github.com/QwenLM/qwen-code/blob/main/.github/workflows/qwen-automated-issue-triage.yml).
100
100
 
101
101
  ### Pull Request Review
102
102
 
@@ -208,7 +208,7 @@ The Qwen Code CLI can be extended with additional functionality through extensio
208
208
  These extensions are installed from source from their GitHub repositories.
209
209
 
210
210
  For detailed instructions on how to set up and configure extensions, go to the
211
- [Extensions documentation](../developers/extensions/extension).
211
+ [Extensions documentation](./extension/introduction.md).
212
212
 
213
213
  ## Best Practices
214
214
 
@@ -40,7 +40,7 @@ cd your-project
40
40
  qwen
41
41
  ```
42
42
 
43
- Choose your authentication method **API Key** or **[Alibaba Cloud Coding Plan](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index)** ([intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)) and follow the prompts to configure. See the API setup guide ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?type=model&url=3023091) / [intl](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=doc#/doc/?type=model&url=2974721)) for step-by-step instructions. Then let's start with understanding your codebase. Try one of these commands:
43
+ On first launch you'll be prompted to connect a model provider. The menu offers **Alibaba ModelStudio** (Coding Plan, Token Plan, or Standard API Key), **Third-party Providers** (built-in providers such as DeepSeek, MiniMax, Z.AI, and OpenRouter, connected with an API key), and **Custom Provider** (a local server, proxy, or unsupported provider). For the [Alibaba Cloud Coding Plan](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index) ([intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)), choose **Alibaba ModelStudio Coding Plan**; to use a ModelStudio API key, choose **Alibaba ModelStudio → Standard API Key** and follow the API setup guide ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?type=model&url=3023091) / [intl](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=doc#/doc/?type=model&url=2974721)). Then let's start with understanding your codebase. Try one of these commands:
44
44
 
45
45
  ```
46
46
  what does this project do?
@@ -10,7 +10,7 @@ Make sure you have:
10
10
 
11
11
  - A **terminal** or command prompt open
12
12
  - A code project to work with
13
- - An API key from Alibaba Cloud Model Studio ([Beijing](https://bailian.console.aliyun.com/) / [intl](https://modelstudio.console.alibabacloud.com/)), or an Alibaba Cloud Coding Plan ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index) / [intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)) subscription
13
+ - An API key from Alibaba Cloud ModelStudio ([Beijing](https://bailian.console.aliyun.com/) / [intl](https://modelstudio.console.alibabacloud.com/)), or an Alibaba Cloud Coding Plan ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index) / [intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)) subscription
14
14
 
15
15
  ## Step 1: Install Qwen Code
16
16
 
@@ -66,10 +66,14 @@ qwen
66
66
  /auth
67
67
  ```
68
68
 
69
- Choose your preferred authentication method:
69
+ The first-run menu lets you connect a model provider. Choose one of:
70
70
 
71
- - **Alibaba Cloud Coding Plan**: Select `Alibaba Cloud Coding Plan` for a fixed monthly fee with diverse model options. See the [Coding Plan guide](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index) ([intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)) for setup instructions.
72
- - **API Key**: Select `API Key`, then enter your API key from Alibaba Cloud Model Studio ([Beijing](https://bailian.console.aliyun.com/) / [intl](https://modelstudio.console.alibabacloud.com/)). See the API setup guide ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?type=model&url=3023091) / [intl](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=doc#/doc/?type=model&url=2974721)) for details.
71
+ - **Alibaba ModelStudio** the recommended setup. Opens a sub-menu:
72
+ - **Coding Plan**: for individual developers, with an included weekly quota and diverse model options. See the [Coding Plan guide](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index) ([intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)) for setup instructions.
73
+ - **Token Plan**: usage-based billing with a dedicated endpoint, aimed at teams and companies.
74
+ - **Standard API Key**: connect with an existing API key from Alibaba Cloud ModelStudio ([Beijing](https://bailian.console.aliyun.com/) / [intl](https://modelstudio.console.alibabacloud.com/)). See the API setup guide ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?type=model&url=3023091) / [intl](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=doc#/doc/?type=model&url=2974721)) for details.
75
+ - **Third-party Providers** — choose a built-in provider (DeepSeek, MiniMax, Z.AI, ModelScope, OpenRouter, Requesty, and more) and connect with an API key.
76
+ - **Custom Provider** — manually connect a local server, proxy, or unsupported provider.
73
77
 
74
78
  > ⚠️ **Note**: Qwen OAuth was discontinued on April 15, 2026. If you were previously using Qwen OAuth, please switch to one of the methods above.
75
79
 
@@ -86,7 +90,7 @@ Choose your preferred authentication method:
86
90
  Open your terminal in any project directory and start Qwen Code:
87
91
 
88
92
  ```bash
89
- # optiona
93
+ # optional
90
94
  cd /path/to/your/project
91
95
  # start qwen
92
96
  qwen
@@ -87,7 +87,11 @@ operators: `GET /daemon/status`, `GET /workspace/mcp`,
87
87
  `GET /workspace/skills`, `GET /workspace/providers`, `GET /workspace/env`,
88
88
  `GET /workspace/preflight`,
89
89
  `GET /session/:id/context`, `GET /session/:id/supported-commands`, and
90
- `GET /session/:id/tasks`.
90
+ `GET /session/:id/tasks`, and `GET /session/:id/lsp`.
91
+
92
+ `GET /session/:id/lsp` returns structured per-session LSP status. Start the
93
+ daemon with `--experimental-lsp` to enable LSP in spawned agent sessions;
94
+ otherwise the route returns `enabled: false` with no servers.
91
95
 
92
96
  `GET /daemon/status` is the consolidated troubleshooting snapshot. The default
93
97
  `detail=summary` reads only in-memory daemon state (sessions, permissions,
@@ -461,7 +465,15 @@ The bridge keeps **one channel per daemon** (one daemon per workspace, per §02)
461
465
 
462
466
  ## Logging in to a remote daemon (issue #4175 PR 21)
463
467
 
464
- When the daemon runs on a remote pod (no shared display with you), you can still log in to a Qwen account by triggering an OAuth device flow over HTTP. The daemon polls the IdP itself; your job is just to open a URL on whatever device has a browser.
468
+ When the daemon runs on a remote pod (no shared display with you), a client can
469
+ trigger an OAuth device flow over HTTP. The daemon polls the IdP itself; your job
470
+ is just to open a URL on whatever device has a browser.
471
+
472
+ > [!note]
473
+ >
474
+ > Qwen OAuth free tier was discontinued on 2026-04-15. The `qwen-oauth`
475
+ > examples below document the device-flow protocol shape and legacy provider
476
+ > identifier; new setups should use a currently supported auth provider.
465
477
 
466
478
  ```bash
467
479
  # 1. Start a flow. The daemon contacts the IdP, returns a code + URL.
@@ -109,4 +109,4 @@ You can switch between Qwen OAuth, Alibaba Cloud Coding Plan, and your own API k
109
109
  2. **Within the CLI**: Use the `/auth` command to reconfigure your authentication method
110
110
  3. **Environment variables**: Set up `.env` files for automatic API key authentication
111
111
 
112
- For detailed instructions, see the [Authentication Setup](../configuration/settings#environment-variables-for-api-access) documentation.
112
+ For detailed instructions, see the [Authentication Setup](../configuration/auth.md) documentation.
@@ -7,41 +7,43 @@ import {
7
7
  hasRebuiltToolRegistry,
8
8
  rebuildToolRegistryOnOverride,
9
9
  resolveSubagentApprovalMode
10
- } from "./chunk-32SSXBMG.js";
10
+ } from "./chunk-ZXNEOCW2.js";
11
11
  import "./chunk-K5PGHDBN.js";
12
- import "./chunk-7GX7XYZU.js";
13
- import "./chunk-7OCZ77KA.js";
14
- import "./chunk-2ES3D3TW.js";
12
+ import "./chunk-TXVGVZYR.js";
13
+ import "./chunk-XU5P23GN.js";
14
+ import "./chunk-2BIF2NVV.js";
15
+ import "./chunk-NWLUISRA.js";
16
+ import "./chunk-3BR4OIOE.js";
15
17
  import "./chunk-2MPVVENX.js";
16
18
  import "./chunk-ZTQ26VBE.js";
17
- import "./chunk-4HMWGHPP.js";
18
- import "./chunk-4TW2JM5Q.js";
19
- import "./chunk-M5VYHAHT.js";
19
+ import "./chunk-GZCJS5WH.js";
20
20
  import "./chunk-MLZQVCF3.js";
21
21
  import "./chunk-LD2XBG6Z.js";
22
- import "./chunk-JIJBNW4A.js";
23
- import "./chunk-E5SRTXRG.js";
24
- import "./chunk-77WXWU44.js";
25
- import "./chunk-WWU2KUSR.js";
26
- import "./chunk-6Z2MVJIJ.js";
22
+ import "./chunk-OTBK43JR.js";
23
+ import "./chunk-HGNSRCRB.js";
24
+ import "./chunk-EEEZIVFJ.js";
25
+ import "./chunk-PRYMDRBV.js";
26
+ import "./chunk-UMRZ7XCR.js";
27
27
  import "./chunk-3PJXIDKI.js";
28
28
  import "./chunk-UWCTAVOD.js";
29
29
  import "./chunk-OFEVLU4C.js";
30
30
  import "./chunk-OMX7CUOE.js";
31
- import "./chunk-FPZF3BNV.js";
32
- import "./chunk-VWPDSQZY.js";
33
- import "./chunk-AQDPHFDZ.js";
34
- import "./chunk-JJHY7NAD.js";
35
- import "./chunk-DZCZZPCY.js";
36
- import "./chunk-F6FP3URI.js";
31
+ import "./chunk-BNXANYLH.js";
32
+ import "./chunk-T2VDEFUU.js";
33
+ import "./chunk-2QDQTWCI.js";
34
+ import "./chunk-L7U2RI5O.js";
35
+ import "./chunk-BGUDAULQ.js";
36
+ import "./chunk-EW6C27XX.js";
37
+ import "./chunk-22IFUCVR.js";
37
38
  import "./chunk-64WXLC72.js";
38
- import "./chunk-N5QHMPZU.js";
39
- import "./chunk-HU3RKEK2.js";
40
- import "./chunk-PTGKSUUJ.js";
39
+ import "./chunk-3UALQ56H.js";
40
+ import "./chunk-F6XNTYNE.js";
41
+ import "./chunk-CGEGHF2C.js";
42
+ import "./chunk-EJYJYJZ2.js";
41
43
  import "./chunk-55ZMG67I.js";
42
44
  import "./chunk-H6BD2ELD.js";
43
45
  import "./chunk-5IFG2VC4.js";
44
- import "./chunk-IKOWINH4.js";
46
+ import "./chunk-C4K3FEQ2.js";
45
47
  import "./chunk-ZERZSAZL.js";
46
48
  import "./chunk-QN5NZ3UQ.js";
47
49
  import "./chunk-BR4QREVK.js";
@@ -4,41 +4,43 @@ import {
4
4
  AgentHeadless,
5
5
  ContextState,
6
6
  templateString
7
- } from "./chunk-32SSXBMG.js";
7
+ } from "./chunk-ZXNEOCW2.js";
8
8
  import "./chunk-K5PGHDBN.js";
9
- import "./chunk-7GX7XYZU.js";
10
- import "./chunk-7OCZ77KA.js";
11
- import "./chunk-2ES3D3TW.js";
9
+ import "./chunk-TXVGVZYR.js";
10
+ import "./chunk-XU5P23GN.js";
11
+ import "./chunk-2BIF2NVV.js";
12
+ import "./chunk-NWLUISRA.js";
13
+ import "./chunk-3BR4OIOE.js";
12
14
  import "./chunk-2MPVVENX.js";
13
15
  import "./chunk-ZTQ26VBE.js";
14
- import "./chunk-4HMWGHPP.js";
15
- import "./chunk-4TW2JM5Q.js";
16
- import "./chunk-M5VYHAHT.js";
16
+ import "./chunk-GZCJS5WH.js";
17
17
  import "./chunk-MLZQVCF3.js";
18
18
  import "./chunk-LD2XBG6Z.js";
19
- import "./chunk-JIJBNW4A.js";
20
- import "./chunk-E5SRTXRG.js";
21
- import "./chunk-77WXWU44.js";
22
- import "./chunk-WWU2KUSR.js";
23
- import "./chunk-6Z2MVJIJ.js";
19
+ import "./chunk-OTBK43JR.js";
20
+ import "./chunk-HGNSRCRB.js";
21
+ import "./chunk-EEEZIVFJ.js";
22
+ import "./chunk-PRYMDRBV.js";
23
+ import "./chunk-UMRZ7XCR.js";
24
24
  import "./chunk-3PJXIDKI.js";
25
25
  import "./chunk-UWCTAVOD.js";
26
26
  import "./chunk-OFEVLU4C.js";
27
27
  import "./chunk-OMX7CUOE.js";
28
- import "./chunk-FPZF3BNV.js";
29
- import "./chunk-VWPDSQZY.js";
30
- import "./chunk-AQDPHFDZ.js";
31
- import "./chunk-JJHY7NAD.js";
32
- import "./chunk-DZCZZPCY.js";
33
- import "./chunk-F6FP3URI.js";
28
+ import "./chunk-BNXANYLH.js";
29
+ import "./chunk-T2VDEFUU.js";
30
+ import "./chunk-2QDQTWCI.js";
31
+ import "./chunk-L7U2RI5O.js";
32
+ import "./chunk-BGUDAULQ.js";
33
+ import "./chunk-EW6C27XX.js";
34
+ import "./chunk-22IFUCVR.js";
34
35
  import "./chunk-64WXLC72.js";
35
- import "./chunk-N5QHMPZU.js";
36
- import "./chunk-HU3RKEK2.js";
37
- import "./chunk-PTGKSUUJ.js";
36
+ import "./chunk-3UALQ56H.js";
37
+ import "./chunk-F6XNTYNE.js";
38
+ import "./chunk-CGEGHF2C.js";
39
+ import "./chunk-EJYJYJZ2.js";
38
40
  import "./chunk-55ZMG67I.js";
39
41
  import "./chunk-H6BD2ELD.js";
40
42
  import "./chunk-5IFG2VC4.js";
41
- import "./chunk-IKOWINH4.js";
43
+ import "./chunk-C4K3FEQ2.js";
42
44
  import "./chunk-ZERZSAZL.js";
43
45
  import "./chunk-QN5NZ3UQ.js";
44
46
  import "./chunk-BR4QREVK.js";
@@ -3,29 +3,31 @@
3
3
  import {
4
4
  require_abort_controller,
5
5
  require_lib
6
- } from "./chunk-KQIKOTQJ.js";
6
+ } from "./chunk-RYLJU2DY.js";
7
7
  import {
8
8
  RequestTokenizer
9
- } from "./chunk-IUEQOXOI.js";
9
+ } from "./chunk-KBXLIVWQ.js";
10
10
  import {
11
11
  Blob,
12
12
  File,
13
13
  isFile,
14
14
  isFunction
15
15
  } from "./chunk-P3MYAZBY.js";
16
- import {
17
- buildRuntimeFetchOptions,
18
- redactProxyError
19
- } from "./chunk-HU3RKEK2.js";
20
16
  import {
21
17
  CAPPED_DEFAULT_MAX_TOKENS,
22
18
  DEFAULT_TIMEOUT,
23
- convertSchema,
19
+ buildRuntimeFetchOptions,
24
20
  hasExplicitOutputLimit,
25
- runtimeDiagnostics,
26
- safeJsonParse,
21
+ parsePositiveIntegerEnvValue,
22
+ redactProxyError,
27
23
  tokenLimit
28
- } from "./chunk-PTGKSUUJ.js";
24
+ } from "./chunk-F6XNTYNE.js";
25
+ import {
26
+ convertSchema,
27
+ runtimeDiagnostics,
28
+ safeJsonParse
29
+ } from "./chunk-CGEGHF2C.js";
30
+ import "./chunk-EJYJYJZ2.js";
29
31
  import {
30
32
  FinishReason,
31
33
  GenerateContentResponse
@@ -34,7 +36,7 @@ import "./chunk-H6BD2ELD.js";
34
36
  import "./chunk-5IFG2VC4.js";
35
37
  import {
36
38
  createDebugLogger
37
- } from "./chunk-IKOWINH4.js";
39
+ } from "./chunk-C4K3FEQ2.js";
38
40
  import {
39
41
  require_ms
40
42
  } from "./chunk-BR4QREVK.js";
@@ -5045,9 +5047,10 @@ var AnthropicContentGenerator = class {
5045
5047
  if (userMaxTokens !== void 0 && userMaxTokens !== null) {
5046
5048
  maxTokens = isKnownModel ? Math.min(userMaxTokens, modelLimit) : userMaxTokens;
5047
5049
  } else {
5048
- const envVal = process.env["QWEN_CODE_MAX_OUTPUT_TOKENS"];
5049
- const envMaxTokens = envVal ? parseInt(envVal, 10) : NaN;
5050
- if (!isNaN(envMaxTokens) && envMaxTokens > 0) {
5050
+ const envMaxTokens = parsePositiveIntegerEnvValue(
5051
+ process.env["QWEN_CODE_MAX_OUTPUT_TOKENS"]
5052
+ );
5053
+ if (envMaxTokens !== void 0) {
5051
5054
  maxTokens = isKnownModel ? Math.min(envMaxTokens, modelLimit) : envMaxTokens;
5052
5055
  } else {
5053
5056
  maxTokens = Math.min(modelLimit, CAPPED_DEFAULT_MAX_TOKENS);