@qwen-code/qwen-code 0.22.0 → 0.22.1

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 (449) hide show
  1. package/bundled/computer-use/SKILL.md +229 -0
  2. package/bundled/computer-use/agents/openai.yaml +4 -0
  3. package/bundled/coordinate/SKILL.md +5 -5
  4. package/bundled/qc-helper/docs/configuration/auth.md +7 -7
  5. package/bundled/qc-helper/docs/configuration/model-providers.md +70 -9
  6. package/bundled/qc-helper/docs/configuration/settings.md +40 -40
  7. package/bundled/qc-helper/docs/extension/introduction.md +3 -1
  8. package/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
  9. package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -0
  10. package/bundled/qc-helper/docs/features/channels/dws.md +120 -0
  11. package/bundled/qc-helper/docs/features/channels/overview.md +3 -3
  12. package/bundled/qc-helper/docs/features/code-review.md +25 -21
  13. package/bundled/qc-helper/docs/features/commands.md +2 -2
  14. package/bundled/qc-helper/docs/features/computer-use.md +57 -51
  15. package/bundled/qc-helper/docs/features/mcp.md +35 -12
  16. package/bundled/qc-helper/docs/features/sub-agents.md +1 -1
  17. package/bundled/qc-helper/docs/features/worktree.md +1 -1
  18. package/bundled/qc-helper/docs/overview.md +1 -1
  19. package/bundled/qc-helper/docs/quickstart.md +1 -1
  20. package/bundled/qc-helper/docs/qwen-serve.md +29 -6
  21. package/bundled/review/SKILL.md +119 -417
  22. package/bundled/review/references/aone.md +18 -0
  23. package/bundled/review/references/persistence.md +105 -0
  24. package/bundled/review/references/posting.md +270 -0
  25. package/chunks/MaxSizedBox-UUTUE42J.js +112 -0
  26. package/chunks/{StandaloneSessionPicker-KTHPCSR6.js → StandaloneSessionPicker-XF2TVJFK.js} +87 -86
  27. package/chunks/{acp-startup-profiler-T4GEAPLX.js → acp-startup-profiler-GNYAL6LI.js} +2 -2
  28. package/chunks/{acpAgent-CRY3JZ5O.js → acpAgent-GY53MJIW.js} +2216 -1931
  29. package/chunks/agent-7U6CC5KF.js +97 -0
  30. package/chunks/agent-headless-32O4L2CT.js +87 -0
  31. package/chunks/{anthropicContentGenerator-Y2OX6LS4.js → anthropicContentGenerator-U76GTVB6.js} +128 -58
  32. package/chunks/{artifact-tool-SBXMTVCB.js → artifact-tool-XDJCZZCF.js} +2 -2
  33. package/chunks/{askUserQuestion-KEQJRFD6.js → askUserQuestion-ZXXERLEV.js} +2 -2
  34. package/chunks/bridge-DFX2FFH4.js +119 -0
  35. package/chunks/{ca-D3F4S6NG.js → ca-7HPYOYSZ.js} +3 -0
  36. package/chunks/{channel-management-service-IRTT7RNE.js → channel-management-service-HXXS3HOZ.js} +4 -4
  37. package/chunks/channel-settings-store-ELLH2M4M.js +117 -0
  38. package/chunks/{channel-worker-group-BJNMR2MP.js → channel-worker-group-EVDC2P4K.js} +8 -7
  39. package/chunks/{channel-worker-manager-EMA7CQDJ.js → channel-worker-manager-IJJZHGEI.js} +8 -7
  40. package/chunks/{channel-worker-supervisor-F6I6WSWW.js → channel-worker-supervisor-YSKB5GVB.js} +12 -7
  41. package/chunks/{chunk-2TRNCJK4.js → chunk-27ONXAFY.js} +1 -1
  42. package/chunks/{chunk-OVH5Y7KS.js → chunk-2CRNTW2B.js} +19 -3
  43. package/chunks/{read-package-up-UXSW3YPB.js → chunk-2EAZ43JQ.js} +1 -0
  44. package/chunks/{chunk-DB2OKNTU.js → chunk-2FN2HNTI.js} +2 -2
  45. package/chunks/{chunk-KM73TBQ4.js → chunk-2LD5U7Q3.js} +31 -0
  46. package/chunks/{chunk-QJHPWLZC.js → chunk-2MHGD7EE.js} +1 -1
  47. package/chunks/{chunk-BMCSKS37.js → chunk-2NCVUT3C.js} +6 -6
  48. package/chunks/{chunk-A5F2YNO6.js → chunk-2NNTE2ED.js} +245 -10
  49. package/chunks/{chunk-Z3JMO2CH.js → chunk-2SERYG4T.js} +1 -1
  50. package/chunks/{chunk-4J7OPYNS.js → chunk-2YDYDDE2.js} +6 -6
  51. package/chunks/{chunk-PXOJLJ5W.js → chunk-2YEZNBSD.js} +333 -184
  52. package/chunks/{chunk-UU4WC7DK.js → chunk-2ZV3CZKI.js} +82 -12
  53. package/chunks/{chunk-SE55HQGF.js → chunk-3B5DCAQU.js} +74 -52
  54. package/chunks/{chunk-UIRLQ3N7.js → chunk-3BV7TZNQ.js} +3 -3
  55. package/chunks/{chunk-2Z6LSQMF.js → chunk-3FSBMAYD.js} +1 -1
  56. package/chunks/{chunk-DJEHYM4H.js → chunk-3UZCLCXR.js} +3 -3
  57. package/chunks/{chunk-WWUSHZ7M.js → chunk-43C2II2G.js} +5 -5
  58. package/chunks/{chunk-2GXYDNXP.js → chunk-47SIHHPL.js} +8 -8
  59. package/chunks/{chunk-PHJJ3RVO.js → chunk-4DCP3362.js} +7 -15
  60. package/chunks/chunk-4K7NQDCG.js +104 -0
  61. package/chunks/{chunk-UZPYR3EV.js → chunk-4TPAG3O7.js} +1 -1
  62. package/chunks/{chunk-BEGIBJAZ.js → chunk-5CI4AXDD.js} +4 -4
  63. package/chunks/{chunk-7KOFLDEP.js → chunk-5JTIYALA.js} +1 -1
  64. package/chunks/{chunk-7HFULI45.js → chunk-5MK32KJV.js} +3 -3
  65. package/chunks/{chunk-CXJHQVEK.js → chunk-5PA6UEYA.js} +4 -0
  66. package/chunks/{chunk-IBJ5S45N.js → chunk-5T4LWWNX.js} +2 -2
  67. package/chunks/{chunk-VUMLT7E5.js → chunk-5Y2JCJAH.js} +2 -2
  68. package/chunks/{chunk-YZBDKFRQ.js → chunk-5ZYZPDDF.js} +993 -895
  69. package/chunks/{chunk-2A4C2MEG.js → chunk-62PXFOK4.js} +35 -12
  70. package/chunks/{chunk-IIWGSX4L.js → chunk-6E4WHQJV.js} +1 -1
  71. package/chunks/{chunk-6PCOVQO2.js → chunk-6HTMIKXZ.js} +8 -8
  72. package/chunks/{chunk-RDG44S5I.js → chunk-6KS24S3X.js} +2 -2
  73. package/chunks/{chunk-GAHYKJPV.js → chunk-6US7BF3G.js} +7 -59
  74. package/chunks/{chunk-MHG6NDS6.js → chunk-6YAR6ZU3.js} +2 -2
  75. package/chunks/{chunk-3CLIDIVQ.js → chunk-73WFGVIZ.js} +3 -3
  76. package/chunks/{chunk-ZZUVC6RI.js → chunk-76WGY6LW.js} +3 -3
  77. package/chunks/{chunk-XLDFW44M.js → chunk-77TOMRBG.js} +3 -3
  78. package/chunks/{chunk-PDL6LKB5.js → chunk-7AS7QX72.js} +1 -1
  79. package/chunks/{chunk-ND7NOI4P.js → chunk-7CWEZQ6T.js} +0 -15
  80. package/chunks/{chunk-DWCKACFL.js → chunk-7DPKPBOQ.js} +2 -2
  81. package/chunks/{chunk-45NQKMYB.js → chunk-7JPW6IYH.js} +1 -1
  82. package/chunks/{chunk-HDKCKCYO.js → chunk-7QGEJI7M.js} +1 -1
  83. package/chunks/{chunk-S4C4JJKE.js → chunk-A7X32SCT.js} +5 -5
  84. package/chunks/{chunk-O5Z7EB6Y.js → chunk-AYHQZBJ4.js} +170 -207
  85. package/chunks/{chunk-7DYNJFES.js → chunk-AYVIGUUK.js} +6 -1
  86. package/chunks/{chunk-7DMTAQJ6.js → chunk-BDHLBR46.js} +132 -49
  87. package/chunks/{chunk-43T5WDQ7.js → chunk-BFSFJR3D.js} +1 -1
  88. package/chunks/{chunk-AP3B7LKD.js → chunk-BKDAF7ES.js} +2 -2
  89. package/chunks/{chunk-B6UBOIFE.js → chunk-BQBUZDDH.js} +14 -11
  90. package/chunks/{chunk-VLRBJ24J.js → chunk-BVE5EMIG.js} +2 -2
  91. package/chunks/{chunk-P47E4SJC.js → chunk-BX2BZPFJ.js} +3 -3
  92. package/chunks/{chunk-OARZJFZX.js → chunk-C4WBKZJT.js} +4 -4
  93. package/chunks/{chunk-QKBYFU2Q.js → chunk-CFKIH3D3.js} +21 -1
  94. package/chunks/{chunk-URN2JIAQ.js → chunk-CITGRGCM.js} +2 -1
  95. package/chunks/{chunk-WU5E4HMO.js → chunk-CPPYZHBN.js} +1 -1
  96. package/chunks/chunk-DCSAVGDJ.js +20 -0
  97. package/chunks/{chunk-Q54XG7IX.js → chunk-DEYPMJPD.js} +1 -1
  98. package/chunks/{chunk-KSPRQSB4.js → chunk-DIMEPKCW.js} +52 -12
  99. package/chunks/{chunk-I432KXWD.js → chunk-DP7LABIB.js} +1 -1
  100. package/chunks/{chunk-36OF5PRW.js → chunk-E4I5MVBR.js} +7 -3
  101. package/chunks/{chunk-AW27A43Y.js → chunk-E55H6BZ7.js} +93 -1
  102. package/chunks/{chunk-K623ENWT.js → chunk-E6FGMDFQ.js} +4 -0
  103. package/chunks/{chunk-5XUTPXQU.js → chunk-EAV3TENS.js} +6 -9
  104. package/chunks/{chunk-LI4YHTQK.js → chunk-EB4VDXNI.js} +1 -1
  105. package/chunks/{chunk-JOLJTKIG.js → chunk-EC5BONC3.js} +1 -1
  106. package/chunks/{chunk-25NESM4G.js → chunk-EEQYTWGU.js} +29 -5
  107. package/chunks/{chunk-4CWDWDL6.js → chunk-EKP3M4RF.js} +1 -1
  108. package/chunks/{chunk-W4CRPSC5.js → chunk-ELY4QVIB.js} +1 -1
  109. package/chunks/{chunk-BB5IMQCV.js → chunk-EMGAVCBZ.js} +2 -2
  110. package/chunks/chunk-FBX2SDQ4.js +48 -0
  111. package/chunks/{chunk-C72BXMJ5.js → chunk-FJWICLG7.js} +1 -1
  112. package/chunks/{chunk-6FRJEE2S.js → chunk-FK4H3V6S.js} +5 -5
  113. package/chunks/{chunk-LDGWX737.js → chunk-FN5C6C7G.js} +160 -59
  114. package/chunks/{chunk-3ZFJUBTP.js → chunk-FPH6TXD3.js} +1 -1
  115. package/chunks/{chunk-WRT324N6.js → chunk-FVDQ5E67.js} +3 -3
  116. package/chunks/{chunk-VFACN2CE.js → chunk-GNMJNDZE.js} +1 -1
  117. package/chunks/{chunk-FVBVJEBG.js → chunk-GNRVKN76.js} +10 -8
  118. package/chunks/{chunk-PZRUV52H.js → chunk-GTUKW3I6.js} +20 -2
  119. package/chunks/chunk-GYTKQYDB.js +23 -0
  120. package/chunks/{chunk-VMJL7RH6.js → chunk-GZJUCMH4.js} +4 -4
  121. package/chunks/{chunk-MQP3MHWN.js → chunk-HJOWQUE2.js} +21 -15
  122. package/chunks/{chunk-ZS5BHEPD.js → chunk-I32QCIK7.js} +1 -1
  123. package/chunks/{chunk-7IV52LTO.js → chunk-I6VVOZDK.js} +2 -2
  124. package/chunks/{chunk-X7V3N6YH.js → chunk-I6YW3T3W.js} +218 -37
  125. package/chunks/{chunk-2E3V7G6Y.js → chunk-ICWGPK23.js} +55 -50
  126. package/chunks/{chunk-SQS55KR4.js → chunk-IJVDHPKD.js} +2 -2
  127. package/chunks/{chunk-QS4ENGVF.js → chunk-IKN3IUJP.js} +9 -8
  128. package/chunks/{chunk-2UZJWSVD.js → chunk-ILPXSKGQ.js} +2 -2
  129. package/chunks/{chunk-ZRYQMWEP.js → chunk-IPQA4SR5.js} +2 -2
  130. package/chunks/{chunk-XYQHT3AW.js → chunk-IRIX323G.js} +2 -2
  131. package/chunks/{chunk-5HJUPACR.js → chunk-J7MLXFC5.js} +2 -2
  132. package/chunks/{chunk-AZF6SME3.js → chunk-JECO75XD.js} +3 -3
  133. package/chunks/chunk-JLGFGPZJ.js +346 -0
  134. package/chunks/{chunk-WZDM44SB.js → chunk-JUIJ3FXC.js} +7 -7
  135. package/chunks/{chunk-A6NRNRKE.js → chunk-JVPFTDBK.js} +1 -1
  136. package/chunks/{chunk-2J3OJGTL.js → chunk-K2OJUPOE.js} +1 -21
  137. package/chunks/{chunk-GHY5OIYP.js → chunk-K63NK3KL.js} +13 -13
  138. package/chunks/{chunk-7JBHIQS2.js → chunk-KCOXDRQL.js} +7 -13
  139. package/chunks/{chunk-6NFAEG54.js → chunk-KOJ6MHD5.js} +24 -13
  140. package/chunks/{chunk-WS7PAXXR.js → chunk-KWFP3WV6.js} +18 -13
  141. package/chunks/{chunk-A5F63FEW.js → chunk-L436XFLJ.js} +1 -1
  142. package/chunks/{chunk-KIVGVFMM.js → chunk-LI2HEMKO.js} +16 -4
  143. package/chunks/{chunk-GIWB5QLV.js → chunk-LJP2BBMK.js} +4 -4
  144. package/chunks/{create-sub-session-XBCVGNFU.js → chunk-LRKMQPMD.js} +4 -6
  145. package/chunks/{chunk-6UQSU7CQ.js → chunk-MDZO5V2O.js} +58 -107
  146. package/chunks/{chunk-AO4M6NMD.js → chunk-MW5AHWOZ.js} +60 -20
  147. package/chunks/{chunk-FYZMB6DB.js → chunk-MYLXL7F6.js} +11 -11
  148. package/chunks/{chunk-ZLCT4C5A.js → chunk-MZS7GEC7.js} +1 -1
  149. package/chunks/{chunk-VEND4KA4.js → chunk-NER3H7PI.js} +1 -1
  150. package/chunks/{chunk-AVCCKIZ6.js → chunk-NVK4HJYQ.js} +1 -1
  151. package/chunks/{chunk-MPHLIJYL.js → chunk-NY3IJYAV.js} +14 -8
  152. package/chunks/{chunk-XZJKSETB.js → chunk-O3BUXIPM.js} +3 -3
  153. package/chunks/{chunk-4XPSVIED.js → chunk-O5YGAEQS.js} +6 -6
  154. package/chunks/{chunk-NW35NVFN.js → chunk-ODXCSIH5.js} +4 -4
  155. package/chunks/{chunk-5XHAOUWD.js → chunk-OI2DR6QB.js} +3 -3
  156. package/chunks/{chunk-BUGYW6FB.js → chunk-OQ6LTSX3.js} +1 -1
  157. package/chunks/{chunk-J5ZDDUKM.js → chunk-OT26ITEY.js} +4 -4
  158. package/chunks/{chunk-EFB657PR.js → chunk-OX44MOAN.js} +3 -3
  159. package/chunks/{chunk-LURJYO2T.js → chunk-OZ6KS6KW.js} +4 -0
  160. package/chunks/{chunk-4F5WV4RF.js → chunk-PAJGKZAA.js} +281 -10
  161. package/chunks/{chunk-HIK2OF33.js → chunk-PVBT5QPD.js} +1 -1
  162. package/chunks/chunk-QHMLYMMS.js +32 -0
  163. package/chunks/{chunk-U2UYQMM6.js → chunk-R2ZJH3FV.js} +3 -3
  164. package/chunks/{chunk-K52PZNU4.js → chunk-RRKNX553.js} +2 -2
  165. package/chunks/chunk-RXFQM6FQ.js +42 -0
  166. package/chunks/{chunk-SJ4HB27T.js → chunk-SDVF6A42.js} +3 -3
  167. package/chunks/{chunk-TBVSALA3.js → chunk-SKNVVYIJ.js} +3 -3
  168. package/chunks/{chunk-JGUBDRBC.js → chunk-SLEWBQWM.js} +3 -3
  169. package/chunks/{chunk-ZRFUT5VV.js → chunk-SM7ZVKTF.js} +7 -7
  170. package/chunks/{chunk-UUQFJILB.js → chunk-SQPOJ4ZI.js} +15 -3
  171. package/chunks/{chunk-RPJQ3O4M.js → chunk-SRGENTPF.js} +31 -41
  172. package/chunks/{chunk-ISJMN3ML.js → chunk-T2CRBIDJ.js} +1 -1
  173. package/chunks/{chunk-MZKWFWVG.js → chunk-T2HMXHYA.js} +6 -6
  174. package/chunks/{chunk-FEMQ6Y7W.js → chunk-T6OODF2U.js} +47 -126
  175. package/chunks/{chunk-VYC7XFYV.js → chunk-TKO4TLT6.js} +5 -5
  176. package/chunks/{chunk-KVGR4MCF.js → chunk-TOF4UZHH.js} +3 -3
  177. package/chunks/{chunk-LD5VIJ7S.js → chunk-TWSKM647.js} +1 -1
  178. package/chunks/{chunk-7NBVNAJJ.js → chunk-UCSV2IZW.js} +3 -3
  179. package/chunks/{chunk-FDD2IUEL.js → chunk-UX3IFLJM.js} +229 -21
  180. package/chunks/{chunk-YDJRMQU4.js → chunk-V3GINY6K.js} +3 -3
  181. package/chunks/{chunk-XL5K4SVK.js → chunk-VL4YX3FH.js} +1 -1
  182. package/chunks/{chunk-62JOGZL5.js → chunk-VMDURMFY.js} +199 -87
  183. package/chunks/{chunk-OE52YHCZ.js → chunk-W2WRNJKX.js} +11 -11
  184. package/chunks/{chunk-YLFLHKDL.js → chunk-W3N5XAZ6.js} +1 -1
  185. package/chunks/{chunk-IWOWEENB.js → chunk-WBT3STGU.js} +385 -25
  186. package/chunks/{chunk-S3G6YFQC.js → chunk-WEGXPP5E.js} +1 -1
  187. package/chunks/{chunk-RDQ7QB4Y.js → chunk-XJS54K4A.js} +2 -2
  188. package/chunks/{chunk-L4HVF7LM.js → chunk-XNXWEGKB.js} +3 -3
  189. package/chunks/{chunk-T6XLJRQY.js → chunk-XYX474JQ.js} +36509 -5182
  190. package/chunks/{chunk-F6WFNA7U.js → chunk-XZA32HII.js} +3 -6
  191. package/chunks/{chunk-NUGZAFR2.js → chunk-ZEADBZLO.js} +147 -6
  192. package/chunks/chunk-ZELCTN6Y.js +29 -0
  193. package/chunks/{chunk-TQOF5KBL.js → chunk-ZEZKIS2K.js} +0 -31
  194. package/chunks/{chunk-IOSEW6KP.js → chunk-ZJG323IA.js} +5 -4
  195. package/chunks/{chunk-VSNPOSDN.js → chunk-ZKAZP2ZG.js} +107 -12
  196. package/chunks/{chunk-YMVFIYHV.js → chunk-ZLTEQYNC.js} +2 -2
  197. package/chunks/{chunk-O5BDEWBC.js → chunk-ZWKGZB2K.js} +3 -3
  198. package/chunks/{chunk-6QSA4JHL.js → chunk-ZXDM7DYV.js} +2772 -814
  199. package/chunks/chunk-ZYNTSXWK.js +32 -0
  200. package/chunks/config-utils-7M6PCTLT.js +113 -0
  201. package/chunks/contextCommand-G4QG3TW6.js +108 -0
  202. package/chunks/{core-runtime-CES6JSVV.js → core-runtime-PKNQ63VL.js} +63 -58
  203. package/chunks/{create-sub-session-UJTPMVOG.js → create-sub-session-PLGPY6TV.js} +60 -58
  204. package/chunks/create-sub-session-RVHSWVAP.js +17 -0
  205. package/chunks/{cron-create-IKA56DAF.js → cron-create-IJGVR5R2.js} +4 -4
  206. package/chunks/{cron-delete-K5Q62EGH.js → cron-delete-4N5BI6GL.js} +4 -4
  207. package/chunks/{cron-list-QBFGAMP7.js → cron-list-2CATIPUX.js} +4 -4
  208. package/chunks/{daemon-RZZUPGOJ.js → daemon-NAYK4XXU.js} +51 -24
  209. package/chunks/{daemon-git-worktree-guard-3QY2BQYB.js → daemon-git-worktree-guard-LDBJXH2U.js} +338 -92
  210. package/chunks/daemon-status-provider-F5FEHVVG.js +118 -0
  211. package/chunks/daemon-trust-policy-C6YTU5CQ.js +114 -0
  212. package/chunks/{daemon-trust-policy-monitor-TK4K7M63.js → daemon-trust-policy-monitor-IGEJPHQ4.js} +68 -66
  213. package/chunks/{de-RYUHH2C6.js → de-X6HLSIFE.js} +1 -0
  214. package/chunks/deferred-core-runtime-GHT3GDOR.js +116 -0
  215. package/chunks/{display-image-OEJMJV3S.js → display-image-DR55LL6M.js} +5 -5
  216. package/chunks/dist-4Q7NTUNB.js +2512 -0
  217. package/chunks/{dist-ESS34DHC.js → dist-6H6RZ5H6.js} +2 -2
  218. package/chunks/{dist-LZO24N3E.js → dist-7CKN54NL.js} +1 -1
  219. package/chunks/{dist-5EV2G6MC.js → dist-DJBNNPLN.js} +1 -1
  220. package/chunks/{dist-J6P3C52Z.js → dist-FVJZSIO4.js} +28 -7
  221. package/chunks/{dist-K7IQB53U.js → dist-SATKXKUR.js} +1 -1
  222. package/chunks/{dist-ES6HNUW2.js → dist-TJUDJTCB.js} +246 -17
  223. package/chunks/{dist-VVQBOKDH.js → dist-UQUFZDIY.js} +1 -1
  224. package/chunks/{dist-2OG3PGKO.js → dist-ZBVOXSKF.js} +3 -3
  225. package/chunks/earlyInputCapture-HOSJTLWP.js +109 -0
  226. package/chunks/{edit-A2633SLR.js → edit-KSPVUEAS.js} +48 -48
  227. package/chunks/{en-3RHLPITS.js → en-6MDBWMTG.js} +3 -0
  228. package/chunks/{enter-worktree-OIAHE2TB.js → enter-worktree-UOZ6ZTP7.js} +7 -8
  229. package/chunks/{enterPlanMode-SUGIKLR7.js → enterPlanMode-DZTABSKN.js} +47 -47
  230. package/chunks/environment-JXOSW25V.js +131 -0
  231. package/chunks/errors-IOXFDE4J.js +115 -0
  232. package/chunks/{exit-worktree-3UT3SSWT.js → exit-worktree-G2QATUCV.js} +7 -8
  233. package/chunks/exitPlanMode-PZG4FXRB.js +85 -0
  234. package/chunks/{fast-path-3AVP3G35.js → fast-path-EBS7NAVL.js} +28 -7
  235. package/chunks/{fast-path-settings-WHX3J3ZI.js → fast-path-settings-XMFBYFUH.js} +2 -2
  236. package/chunks/{fr-4PL5GHG4.js → fr-FTZWF462.js} +1 -0
  237. package/chunks/{gemini-7PVQWHTH.js → gemini-JELEKOVS.js} +129 -123
  238. package/chunks/{geminiContentGenerator-B2FOJJDJ.js → geminiContentGenerator-I2CKP7XI.js} +16 -13
  239. package/chunks/{glob-7YGXE6OV.js → glob-TDVEVPQZ.js} +47 -47
  240. package/chunks/{goal-tools-TLJCE7YZ.js → goal-tools-CNVXMSZD.js} +72 -28
  241. package/chunks/{grep-6DV6LTON.js → grep-3NLSS32D.js} +6 -6
  242. package/chunks/handleAutoUpdate-AWAGHKOX.js +111 -0
  243. package/chunks/i18n-CYA25C5F.js +126 -0
  244. package/chunks/{image-gen-7CSCJ73T.js → image-gen-63NN2H5N.js} +9 -11
  245. package/chunks/initializer-JD2FLNLO.js +115 -0
  246. package/chunks/installationInfo-N3DCWVWR.js +109 -0
  247. package/chunks/{ja-HZ7X7PQO.js → ja-2GL5FKYJ.js} +1 -0
  248. package/chunks/{keychain-token-storage-MTFTAESK.js → keychain-token-storage-3MGFRYGM.js} +2 -2
  249. package/chunks/list-XDQAUET5.js +118 -0
  250. package/chunks/{list-agents-43XUEXJV.js → list-agents-EXRSHIDJ.js} +2 -2
  251. package/chunks/loadedSettingsAdapter-IK7H5JRK.js +112 -0
  252. package/chunks/{loggingContentGenerator-RNE66CKK.js → loggingContentGenerator-CZWUAHAI.js} +27 -30
  253. package/chunks/{loop-wakeup-E54KDUXC.js → loop-wakeup-XBPB2BRO.js} +5 -5
  254. package/chunks/{ls-CGL2UC3H.js → ls-WFONAND2.js} +4 -4
  255. package/chunks/{lsp-5IKUO5DX.js → lsp-DUKPDUXN.js} +2 -2
  256. package/chunks/{managed-npm-update-Y3SC3GLJ.js → managed-npm-update-54W23SP5.js} +61 -59
  257. package/chunks/mcp-2E7ZLMEE.js +112 -0
  258. package/chunks/{monitor-PXYSGSUN.js → monitor-A4J5QRGJ.js} +47 -47
  259. package/chunks/nonInteractiveCli-ZNDXB62Y.js +185 -0
  260. package/chunks/{notebook-edit-ISIBJVBR.js → notebook-edit-4ANFZON5.js} +48 -48
  261. package/chunks/open-with-auth-4UI3KHUR.js +55 -0
  262. package/chunks/{openaiContentGenerator-6TBOPEGT.js → openaiContentGenerator-JCCJJQZC.js} +29 -30
  263. package/chunks/pidfile-DHV2Y7UD.js +113 -0
  264. package/chunks/{processUtils-YK2TDTTU.js → processUtils-JJAR56SO.js} +2 -2
  265. package/chunks/prompt-terminal-ledger-LDZ6QVYA.js +107 -0
  266. package/chunks/{pt-QT5N2Q6Q.js → pt-XN2YWJVM.js} +1 -0
  267. package/chunks/{qwenContentGenerator-CLDMA2Y4.js → qwenContentGenerator-5JM44ZSA.js} +53 -59
  268. package/chunks/{qwenOAuth2-DLDR6UC5.js → qwenOAuth2-JIYAWXTW.js} +8 -10
  269. package/chunks/{read-file-2HOD2ATO.js → read-file-N3E5DY7N.js} +13 -14
  270. package/chunks/{read-mcp-resource-XYES2B42.js → read-mcp-resource-7A7NFSFL.js} +2 -2
  271. package/chunks/read-package-up-6T6ICKR7.js +13 -0
  272. package/chunks/{record-artifact-W3IBTGL7.js → record-artifact-CPJ4IJSD.js} +4 -5
  273. package/chunks/report-findings-VFM5DENC.js +33 -0
  274. package/chunks/request-shutdown-AXVOFN5C.js +133 -0
  275. package/chunks/resumeHistoryUtils-YQRITQAG.js +120 -0
  276. package/chunks/ripGrep-NEIHKBKB.js +39 -0
  277. package/chunks/{ru-STMG5BPD.js → ru-OLTMFJEW.js} +1 -0
  278. package/chunks/{run-qwen-serve-XJHOW2NY.js → run-qwen-serve-IWGPZADI.js} +622 -79
  279. package/chunks/{runtime-J4SPTJRQ.js → runtime-I76HPFUE.js} +73 -71
  280. package/chunks/{scheduler-VRAEZZ4E.js → scheduler-M6YL4K4I.js} +62 -60
  281. package/chunks/{sdk-exporters-http-RSIOP3G2.js → sdk-exporters-http-XXSKBD2C.js} +5 -5
  282. package/chunks/{sdk-impl-CB3KARSK.js → sdk-impl-VPNBLV7I.js} +7 -7
  283. package/chunks/{send-message-J4VT46OI.js → send-message-A2GXDX3B.js} +10 -31
  284. package/chunks/serve-XY5S63GN.js +120 -0
  285. package/chunks/{server-74ONDK62.js → server-TWXRRREO.js} +965 -405
  286. package/chunks/{session-BO6VBWJP.js → session-IT5ZXU7A.js} +151 -140
  287. package/chunks/{settings-35QZNFDG.js → settings-IX5HOOCG.js} +71 -69
  288. package/chunks/shell-LZ55AAJB.js +95 -0
  289. package/chunks/{skill-DKEMQSNJ.js → skill-WSZ53D2R.js} +108 -25
  290. package/chunks/skill-settings-5U7FTJIK.js +120 -0
  291. package/chunks/spawnChannel-TMC6VXGN.js +113 -0
  292. package/chunks/standalone-update-CUYGWTR4.js +120 -0
  293. package/chunks/{startInteractiveUI-J2QSGWPU.js → startInteractiveUI-O6BI2OSA.js} +381 -293
  294. package/chunks/{syntheticOutput-JAXMIMZP.js → syntheticOutput-5AJ444QT.js} +3 -3
  295. package/chunks/{task-create-I2H322E4.js → task-create-CDJSOEQD.js} +11 -11
  296. package/chunks/{task-list-3OLIWFTQ.js → task-list-BELMPA75.js} +5 -5
  297. package/chunks/{task-stop-JAUY6MSY.js → task-stop-U3S3KZG2.js} +2 -2
  298. package/chunks/{task-update-B3XO4CPI.js → task-update-77VCFDDZ.js} +11 -11
  299. package/chunks/{team-create-W534PMGX.js → team-create-UF4TMQEH.js} +48 -48
  300. package/chunks/{team-delete-Q7GE7RRI.js → team-delete-YWFXX77L.js} +5 -5
  301. package/chunks/{team-plan-approval-WNV6P6NG.js → team-plan-approval-U57NSR6C.js} +47 -47
  302. package/chunks/terminal-image-renderer-DRL3BROJ.js +116 -0
  303. package/chunks/theme-manager-HHJPUDRN.js +104 -0
  304. package/chunks/{todoWrite-FJJTY2TI.js → todoWrite-435EO2CS.js} +4 -4
  305. package/chunks/{tool-search-Y4KL3LRE.js → tool-search-SV35UV72.js} +18 -19
  306. package/chunks/total-session-admission-TQI7TCTL.js +114 -0
  307. package/chunks/trustedFolders-YKK67IP3.js +124 -0
  308. package/chunks/{update-relaunch-OHVFN6KF.js → update-relaunch-DX7LVA4P.js} +6 -6
  309. package/chunks/updateCheck-6JRTKTUF.js +120 -0
  310. package/chunks/useAutoAcceptIndicator-MYXYSKSL.js +122 -0
  311. package/chunks/{validateNonInterActiveAuth-WJXH426F.js → validateNonInterActiveAuth-B26O4YJP.js} +113 -106
  312. package/chunks/{version-QMDRADXM.js → version-K5D7VJ4B.js} +2 -2
  313. package/chunks/{web-fetch-ROS6P4LP.js → web-fetch-VFHZLLNZ.js} +25 -242
  314. package/chunks/{web-search-JS3E76O6.js → web-search-AQE5A4J5.js} +11 -11
  315. package/chunks/{web-shell-static-3NUTRHAH.js → web-shell-static-A6QMUNNV.js} +11 -4
  316. package/chunks/webapi-Z5OM224P.js +4118 -0
  317. package/chunks/{workflow-2FCMBTBZ.js → workflow-XL6AEUZ7.js} +635 -94
  318. package/chunks/workspace-providers-status-H6TG34YV.js +116 -0
  319. package/chunks/{workspace-registration-store-SU4EJKSD.js → workspace-registration-store-I4U3V5LL.js} +1 -1
  320. package/chunks/workspace-registry-2PWNIYNI.js +123 -0
  321. package/chunks/workspace-service-4FGTUJLA.js +131 -0
  322. package/chunks/workspace-skills-status-7VOLUDT6.js +115 -0
  323. package/chunks/{workspace-trust-reconciler-4Y4F7XIX.js → workspace-trust-reconciler-GJ466KCE.js} +74 -73
  324. package/chunks/write-file-PWOYCT2K.js +90 -0
  325. package/chunks/{zh-TW-NX43Z2S2.js → zh-TW-MV4FWFB6.js} +3 -0
  326. package/chunks/{zh-3JQ75KFU.js → zh-X3WGU6SI.js} +3 -0
  327. package/chunks/{zoom-image-DNBKCGGF.js → zoom-image-NYJPC3NI.js} +13 -14
  328. package/cli.js +15 -15
  329. package/locales/ca.js +3 -0
  330. package/locales/de.js +1 -0
  331. package/locales/en.js +3 -0
  332. package/locales/fr.js +1 -0
  333. package/locales/ja.js +1 -0
  334. package/locales/pt.js +1 -0
  335. package/locales/ru.js +1 -0
  336. package/locales/zh-TW.js +3 -0
  337. package/locales/zh.js +3 -0
  338. package/package.json +3 -3
  339. package/web-shell/assets/{abnfDiagram-VCTEODGH-DWHXEVlf.js → abnfDiagram-VCTEODGH-yq7z7Anb.js} +1 -1
  340. package/web-shell/assets/{arc-CXKjm86V.js → arc-CbJO0xnT.js} +1 -1
  341. package/web-shell/assets/{architectureDiagram-5GKGNRK7-B_ynI0cX.js → architectureDiagram-5GKGNRK7-CRh89421.js} +1 -1
  342. package/web-shell/assets/{blockDiagram-NRAW4CY4-DMebd9X0.js → blockDiagram-NRAW4CY4-C75KAhKv.js} +1 -1
  343. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BZ5BlxS-.js → c4Diagram-UCG6FXSJ-BzlMveFB.js} +1 -1
  344. package/web-shell/assets/channel-B3sGR79J.js +1 -0
  345. package/web-shell/assets/{chunk-2Q5K7J3B-CluJKopE.js → chunk-2Q5K7J3B-DA8QDX3a.js} +1 -1
  346. package/web-shell/assets/{chunk-5VM5RSS4-hzDAPFOo.js → chunk-5VM5RSS4-Bgu7gQ7Y.js} +1 -1
  347. package/web-shell/assets/{chunk-F27PBJKO-6vHioKJe.js → chunk-F27PBJKO-BOew7pIK.js} +1 -1
  348. package/web-shell/assets/{chunk-G27WJ6UU-B_5hKTGo.js → chunk-G27WJ6UU-DHx1I-hO.js} +1 -1
  349. package/web-shell/assets/{chunk-JWPE2WC7-CO9VoFCH.js → chunk-JWPE2WC7-SarFW0WU.js} +1 -1
  350. package/web-shell/assets/{chunk-LCL6LL3I-7L5JpxYu.js → chunk-LCL6LL3I-BLzP083Z.js} +1 -1
  351. package/web-shell/assets/{chunk-POPQ4Y6H-DHLJMAqj.js → chunk-POPQ4Y6H-Bmkv_iKm.js} +1 -1
  352. package/web-shell/assets/{chunk-SVP7TREG-Dt-4Cqdl.js → chunk-SVP7TREG-MPx9r1N2.js} +1 -1
  353. package/web-shell/assets/{chunk-XXDRQBXY-QlSQ3ssG.js → chunk-XXDRQBXY-Ck-09rKG.js} +1 -1
  354. package/web-shell/assets/classDiagram-DTDB5LWJ-sTGo0K3v.js +1 -0
  355. package/web-shell/assets/classDiagram-v2-JRS7N3AN-sTGo0K3v.js +1 -0
  356. package/web-shell/assets/{cose-bilkent-JH36ORCC-DMw3EOxl.js → cose-bilkent-JH36ORCC-DWm6lfOG.js} +1 -1
  357. package/web-shell/assets/{cynefin-OW5HDTMX-s6vEA7RQ.js → cynefin-OW5HDTMX-DcBUyr5R.js} +1 -1
  358. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-AOKsvYLt.js → cynefinDiagram-5FMLGOSQ-Df8qmd_p.js} +1 -1
  359. package/web-shell/assets/{dagre-3AP2YEHR-9QAZn3m7.js → dagre-3AP2YEHR-DDmGspD7.js} +1 -1
  360. package/web-shell/assets/{diagram-S7CK7UJ4-CWpnu4FN.js → diagram-S7CK7UJ4-BK_qFvbi.js} +1 -1
  361. package/web-shell/assets/{diagram-UQ7AKVKN-9l0jXD8q.js → diagram-UQ7AKVKN-Uw3AP_bi.js} +1 -1
  362. package/web-shell/assets/{diagram-VSXAHHWV-BMUHroj4.js → diagram-VSXAHHWV-CJOQKxY7.js} +1 -1
  363. package/web-shell/assets/{diagram-VX7I27RA-Co9x27vm.js → diagram-VX7I27RA-DhdvZna5.js} +1 -1
  364. package/web-shell/assets/{diagram-Z3DM3KII-BKnTeOER.js → diagram-Z3DM3KII-edQU0nlP.js} +1 -1
  365. package/web-shell/assets/{ebnfDiagram-PWID7BFC-QBZD9CKG.js → ebnfDiagram-PWID7BFC-4kugBEsO.js} +1 -1
  366. package/web-shell/assets/{erDiagram-SSCWMZ5O-dKWAEGun.js → erDiagram-SSCWMZ5O-BMkFivWO.js} +1 -1
  367. package/web-shell/assets/{flowDiagram-A5DVABFB-CR_UgVqj.js → flowDiagram-A5DVABFB-BM1ea8g-.js} +1 -1
  368. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DQUnjWO6.js → ganttDiagram-EL5Y4UJY-CXj_cKRf.js} +1 -1
  369. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-C4j59wPL.js → gitGraphDiagram-WWUBYQGX-D0nEqwqu.js} +1 -1
  370. package/web-shell/assets/{index-tYXRIPz4.js → index-B6JN54Pd.js} +1 -1
  371. package/web-shell/assets/{index-BN_m_uHJ.css → index-C-XlQn24.css} +1 -1
  372. package/web-shell/assets/index-DLjXM0dn.js +1860 -0
  373. package/web-shell/assets/{infoDiagram-RXCK75RN-mzqbt50w.js → infoDiagram-RXCK75RN-DF7aGGbQ.js} +1 -1
  374. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-ChLOqhGl.js → ishikawaDiagram-5VMMS53U-CZYNX1lL.js} +1 -1
  375. package/web-shell/assets/{journeyDiagram-EYS64GPL-SifZE-R8.js → journeyDiagram-EYS64GPL-CvrqMUz1.js} +1 -1
  376. package/web-shell/assets/{kanban-definition-3QL26DDD-Sft2qlbc.js → kanban-definition-3QL26DDD-BZNJQZBj.js} +1 -1
  377. package/web-shell/assets/{layout-O2uHVkPd.js → layout-Bf83x7D6.js} +1 -1
  378. package/web-shell/assets/{linear-BVqYgjSc.js → linear-Bkc3ES2f.js} +1 -1
  379. package/web-shell/assets/{mermaid.core-CZ9MQaJ6.js → mermaid.core-C6xuovwz.js} +6 -6
  380. package/web-shell/assets/{mindmap-definition-FBJOCRG2-BNQYjBqM.js → mindmap-definition-FBJOCRG2-DzH6gVRg.js} +1 -1
  381. package/web-shell/assets/{pegDiagram-XKGWAZYB-rh1J8uv6.js → pegDiagram-XKGWAZYB-DCvLh2fa.js} +1 -1
  382. package/web-shell/assets/{pieDiagram-E7YTZNPT-BQHR5mn9.js → pieDiagram-E7YTZNPT-BtjVlx_6.js} +1 -1
  383. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-CLCbP7mK.js → quadrantDiagram-AXDQQJYC-IbroqxFe.js} +1 -1
  384. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CDQhrkbm.js → railroadDiagram-O6MQD6OU-BvMykiWW.js} +1 -1
  385. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BdP9uswg.js → requirementDiagram-EFPCY7ZU-D-HHMyrh.js} +1 -1
  386. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CFZDFBXF.js → sankeyDiagram-P5KCCOFB-C0XXhB6d.js} +1 -1
  387. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BW9WOJXI.js → sequenceDiagram-WJ2MYXX4-DseAXj5d.js} +1 -1
  388. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CPMia32z.js → sizeCapture-X5ZJPWSS-Cek2EweK.js} +1 -1
  389. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BANp9p7F.js → stateDiagram-HBIQ2CUA-yLv8wafW.js} +1 -1
  390. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DeThXnol.js +1 -0
  391. package/web-shell/assets/{swimlanes-XN3QIQJK-JroXksK-.js → swimlanes-XN3QIQJK-Cwz-opvE.js} +1 -1
  392. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-GW0R1ZSv.js +8 -0
  393. package/web-shell/assets/{timeline-definition-24CTP7MA-DfuVIfYY.js → timeline-definition-24CTP7MA-BJuFD7OG.js} +1 -1
  394. package/web-shell/assets/{vennDiagram-4TSXK5OY-BZXoSjRB.js → vennDiagram-4TSXK5OY-CNAavdoV.js} +1 -1
  395. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-BdiY8avC.js → wardleyDiagram-VM6X3IG4-DaIjAidq.js} +1 -1
  396. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DcXh_U4H.js → xychartDiagram-S5SC5T6Z-DkcQXjTy.js} +1 -1
  397. package/web-shell/index.html +19 -4
  398. package/chunks/MaxSizedBox-3OZJCC3J.js +0 -110
  399. package/chunks/agent-BFE3DQM3.js +0 -93
  400. package/chunks/agent-headless-LLVKZZ4P.js +0 -87
  401. package/chunks/bridge-EBYO4SYM.js +0 -118
  402. package/chunks/channel-settings-store-5VP2Y2YM.js +0 -115
  403. package/chunks/chunk-AXMWHKXA.js +0 -42
  404. package/chunks/chunk-IO257NUD.js +0 -623
  405. package/chunks/chunk-YHC2EYYG.js +0 -125
  406. package/chunks/computer-use-EGPWFEX6.js +0 -2142
  407. package/chunks/config-utils-WZ43VOBS.js +0 -25
  408. package/chunks/contextCommand-5DSEQI6S.js +0 -106
  409. package/chunks/daemon-status-provider-EYMLPYJU.js +0 -116
  410. package/chunks/daemon-trust-policy-CQYKZ7VO.js +0 -112
  411. package/chunks/deferred-core-runtime-WFEPUXZR.js +0 -114
  412. package/chunks/earlyInputCapture-PN4PP7V5.js +0 -107
  413. package/chunks/environment-WUPHLPKZ.js +0 -127
  414. package/chunks/errors-WPMPVIAT.js +0 -113
  415. package/chunks/exitPlanMode-MLFHYZNB.js +0 -85
  416. package/chunks/handleAutoUpdate-F5OTWUT5.js +0 -109
  417. package/chunks/i18n-C562S6KN.js +0 -124
  418. package/chunks/initializer-7YPGOFP4.js +0 -113
  419. package/chunks/installationInfo-ARU5Q2H7.js +0 -107
  420. package/chunks/list-KTSK275C.js +0 -116
  421. package/chunks/loadedSettingsAdapter-F3T2EQ5J.js +0 -110
  422. package/chunks/mcp-6ONTVPAY.js +0 -110
  423. package/chunks/nonInteractiveCli-KZDWFAN6.js +0 -178
  424. package/chunks/pidfile-IO7ALSZF.js +0 -111
  425. package/chunks/prompt-terminal-ledger-TCE7PMCE.js +0 -105
  426. package/chunks/resumeHistoryUtils-DDSBAQJS.js +0 -118
  427. package/chunks/ripGrep-E7P6K4QR.js +0 -40
  428. package/chunks/serve-KEAWV4TI.js +0 -118
  429. package/chunks/shell-H6K63WG3.js +0 -95
  430. package/chunks/skill-settings-TCKLXIXM.js +0 -118
  431. package/chunks/spawnChannel-2K6NKWM5.js +0 -111
  432. package/chunks/standalone-update-LSCGOEFP.js +0 -118
  433. package/chunks/terminal-image-renderer-UHX3UD66.js +0 -114
  434. package/chunks/theme-manager-6B47ZPIF.js +0 -102
  435. package/chunks/total-session-admission-NSCFWGJH.js +0 -113
  436. package/chunks/trustedFolders-7XMJWGQ3.js +0 -122
  437. package/chunks/updateCheck-EOVLHD4T.js +0 -118
  438. package/chunks/useAutoAcceptIndicator-ZNMIGBTN.js +0 -120
  439. package/chunks/workspace-providers-status-GPGU5YMT.js +0 -113
  440. package/chunks/workspace-registry-BQISXT6Y.js +0 -122
  441. package/chunks/workspace-service-LLY6HCUC.js +0 -129
  442. package/chunks/workspace-skills-status-L5N2Y3ZP.js +0 -113
  443. package/chunks/write-file-EJHU2Z3E.js +0 -90
  444. package/web-shell/assets/channel-Zg3WHgq_.js +0 -1
  445. package/web-shell/assets/classDiagram-DTDB5LWJ-C16l9jQz.js +0 -1
  446. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C16l9jQz.js +0 -1
  447. package/web-shell/assets/index-DrlJu79f.js +0 -1792
  448. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-NZYAoQLU.js +0 -1
  449. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-3YdVX3vj.js +0 -8
@@ -0,0 +1,229 @@
1
+ ---
2
+ name: computer-use
3
+ description: Control local desktop applications through Computer Use for tasks that require reading or operating app UI. Prefer purpose-built connectors, APIs, or CLIs when available.
4
+ ---
5
+
6
+ ## `node_repl` + `@qwen-code/cua-sdk` (Computer Use)
7
+
8
+ - Use `node_repl` (JavaScript) for all Computer Use actions.
9
+ - Do not use other technologies besides `node_repl` for computer interactions
10
+ unless specifically requested by the user. This includes AppleScript,
11
+ `osascript`, JXA, System Events, and synthesized input.
12
+ - Prefer a dedicated plugin or skill when it can complete the task; use
13
+ Computer Use for app interactions that are not exposed through a more
14
+ specific interface.
15
+ - Use only the typed `ComputerUse` API. Do not use a generic SDK `callTool`,
16
+ direct `CuaDriver` imports, or a Qwen global bridge.
17
+ - `node_repl` state persists across calls.
18
+ - Use `nodeRepl.write(...)` for text output. It takes a string, so wrap objects
19
+ with `JSON.stringify(...)`.
20
+
21
+ ## Install automatically
22
+
23
+ Run `qwen mcp list` to check whether the `node-repl` server is configured. If it
24
+ is not configured, run both commands yourself:
25
+
26
+ ```bash
27
+ qwen mcp add --scope user node-repl npx -y @qwen-code/node-repl-mcp@0.1.0
28
+ npm install --no-save --package-lock=false @qwen-code/cua-sdk@0.20.0
29
+ ```
30
+
31
+ Tell the user to restart Qwen Code after adding the MCP server, then stop. Do
32
+ not ask the user to copy or run the commands.
33
+
34
+ If `node_repl` is available but the SDK import fails, run the SDK installation
35
+ command yourself from the current workspace, then retry the import:
36
+
37
+ ```bash
38
+ npm install --no-save --package-lock=false @qwen-code/cua-sdk@0.20.0
39
+ ```
40
+
41
+ ## Bootstrap
42
+
43
+ Import the SDK once per fresh `node_repl` kernel:
44
+
45
+ ```js
46
+ globalThis.computer = await (
47
+ await import('@qwen-code/cua-sdk/computer-use')
48
+ ).ComputerUse.create();
49
+ ```
50
+
51
+ ## API surface
52
+
53
+ ```ts
54
+ type WindowTarget = { pid: number; windowId: number };
55
+ type ElementTarget = {
56
+ pid: number;
57
+ windowId?: number;
58
+ elementToken: string;
59
+ };
60
+ type CoordinateTarget = WindowTarget & { x: number; y: number };
61
+ type PointOrElementTarget = CoordinateTarget | ElementTarget;
62
+ type App = {
63
+ name?: string;
64
+ bundle_id?: string;
65
+ pid?: number;
66
+ running?: boolean;
67
+ launch_path?: string;
68
+ };
69
+ type Window = {
70
+ window_id: number;
71
+ title?: string;
72
+ is_on_screen?: boolean;
73
+ on_current_space?: boolean;
74
+ };
75
+ type Element = {
76
+ element_token?: string;
77
+ role?: string;
78
+ label?: string;
79
+ value?: unknown;
80
+ actions?: string[];
81
+ };
82
+
83
+ type ComputerUse = {
84
+ listApps: () => Promise<App[]>;
85
+ listWindows: (args?: {
86
+ pid?: number;
87
+ onScreenOnly?: boolean;
88
+ }) => Promise<Window[]>;
89
+ observeWindow: (
90
+ args: WindowTarget & {
91
+ baseRevisionId?: string;
92
+ forceFull?: boolean;
93
+ includeScreenshot?: boolean;
94
+ },
95
+ ) => Promise<{
96
+ text: string;
97
+ elements: Element[];
98
+ revisionId?: string;
99
+ screenshot?: { images: object[] };
100
+ }>;
101
+ click: (
102
+ args: PointOrElementTarget & {
103
+ button?: 'left' | 'right' | 'middle';
104
+ count?: number;
105
+ },
106
+ ) => Promise<object>;
107
+ doubleClick: (args: PointOrElementTarget) => Promise<object>;
108
+ rightClick: (args: PointOrElementTarget) => Promise<object>;
109
+ setValue: (args: ElementTarget & { value: string }) => Promise<object>;
110
+ typeText: (args: WindowTarget & { text: string }) => Promise<object>;
111
+ pressKey: (args: WindowTarget & { key: string }) => Promise<object>;
112
+ hotkey: (args: WindowTarget & { keys: string[] }) => Promise<object>;
113
+ scroll: (
114
+ args: PointOrElementTarget & {
115
+ direction: 'up' | 'down' | 'left' | 'right';
116
+ by?: 'line' | 'page';
117
+ amount?: number;
118
+ },
119
+ ) => Promise<object>;
120
+ drag: (
121
+ args: WindowTarget & {
122
+ fromX: number;
123
+ fromY: number;
124
+ toX: number;
125
+ toY: number;
126
+ deliveryMode?: 'background' | 'foreground';
127
+ },
128
+ ) => Promise<object>;
129
+ performSecondaryAction: (
130
+ args: ElementTarget & { action: string },
131
+ ) => Promise<object>;
132
+ close: () => Promise<void>;
133
+ };
134
+ ```
135
+
136
+ ## Workflow
137
+
138
+ ### 1. Initialize
139
+
140
+ Resolve the exact running application and window named by the task. Filter
141
+ inside `node_repl`; do not print the entire application list:
142
+
143
+ ```js
144
+ var apps = await computer.listApps();
145
+ var matches = apps.filter(
146
+ (app) => app.name === 'Target App' || app.bundle_id === 'com.example.target',
147
+ );
148
+ nodeRepl.write(JSON.stringify(matches));
149
+ ```
150
+
151
+ After choosing the application from returned metadata, list only its windows:
152
+
153
+ ```js
154
+ var pid = matches[0].pid;
155
+ var windows = await computer.listWindows({ pid });
156
+ nodeRepl.write(JSON.stringify(windows));
157
+ ```
158
+
159
+ Choose the window from returned metadata, then get its current accessibility
160
+ state:
161
+
162
+ ```js
163
+ var target = { pid, windowId: windows[0].window_id };
164
+ var state = await computer.observeWindow({ ...target, forceFull: true });
165
+ nodeRepl.write(state.text);
166
+ ```
167
+
168
+ Never guess a PID, window ID, coordinate, or element token. `ComputerUse`
169
+ discovers running applications but does not launch them; if necessary, start
170
+ the application from `node_repl` with ordinary Node.js process APIs, then
171
+ refresh the application and window lists.
172
+
173
+ ### 2. Act and get the latest state
174
+
175
+ Choose only the action needed for the user's task. Prefer current
176
+ `element_token` values over coordinates. Pass an observed `element_token` as
177
+ the camel-case `elementToken` action field:
178
+
179
+ ```js
180
+ await computer.setValue({
181
+ ...target,
182
+ elementToken,
183
+ value: 'hello',
184
+ });
185
+
186
+ state = await computer.observeWindow({
187
+ ...target,
188
+ baseRevisionId: state.revisionId,
189
+ });
190
+ nodeRepl.write(state.text);
191
+ ```
192
+
193
+ After one or more actions, always observe the exact window before deciding what
194
+ to do next. If the updated state shows the requested result, stop acting,
195
+ clean up, and answer the user. If the UI does not behave as expected, get a
196
+ fresh full state before choosing a different action.
197
+
198
+ Use a secondary action only when the current accessibility state advertises
199
+ that exact action. Prefer accessibility text for efficiency; use a screenshot
200
+ when it is incomplete or visual layout matters.
201
+
202
+ ## Reading screenshots
203
+
204
+ ```js
205
+ var state = await computer.observeWindow({
206
+ ...target,
207
+ forceFull: true,
208
+ includeScreenshot: true,
209
+ });
210
+
211
+ for (var image of state.screenshot?.images ?? []) {
212
+ if (image?.dataBase64 && image?.mimeType) {
213
+ await nodeRepl.emitImage(
214
+ `data:${image.mimeType};base64,${image.dataBase64}`,
215
+ );
216
+ }
217
+ }
218
+ ```
219
+
220
+ ## Finish
221
+
222
+ When the task is complete, close the SDK client:
223
+
224
+ ```js
225
+ await computer.close();
226
+ globalThis.computer = undefined;
227
+ ```
228
+
229
+ Call `node_repl_reset` when no other REPL state is needed.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: 'Computer Use'
3
+ short_description: 'Control desktop apps through the Qwen CUA SDK'
4
+ default_prompt: 'Use $computer-use to inspect and operate the requested desktop application safely.'
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: coordinate
3
- description: Coordinate up to three Qwen Code teammates with enforced read-only workers, an optional worktree-pinned writer, shared tasks, peer messages, and existing Agent View tabs. Invoke explicitly with /coordinate.
3
+ description: Coordinate a small team of Qwen Code teammates with enforced read-only workers, an optional worktree-pinned writer, shared tasks, peer messages, and existing Agent View tabs. Invoke explicitly with /coordinate.
4
4
  argument-hint: '<goal>'
5
5
  disable-model-invocation: true
6
6
  ---
@@ -14,7 +14,7 @@ Act as the team leader. Decompose the goal, keep task ownership clear, reconcile
14
14
  When `team_create` is available:
15
15
 
16
16
  1. Create one team and one self-contained task per current investigation workstream. Do not queue an implementation task while read-only teammates are idle because tasks are auto-assigned.
17
- 2. Spawn one to three named investigation teammates with `read_only: true`. Do not pass `model`; use the session-default model unless the selected agent definition explicitly overrides it.
17
+ 2. Spawn named investigation teammates with `read_only: true` — one per workstream, and prefer three at most. Never exceed the team's configured cap, which `team_create` reports; spawning past it fails outright. Do not pass `model`; use the session-default model unless the selected agent definition explicitly overrides it.
18
18
  3. Assign tasks and let teammates collaborate through `send_message` and the shared task list. Send targeted follow-ups when evidence conflicts, a task needs clarification, or a result is incomplete.
19
19
  4. Accept or reject each result based on its evidence. Reassign rejected work instead of silently using it.
20
20
 
@@ -25,7 +25,7 @@ Read-only teammates have a positive execution allowlist. They cannot use shell,
25
25
  When the goal requires code changes:
26
26
 
27
27
  1. Finish the parallel investigation first.
28
- 2. Send each investigation teammate a `shutdown_request`. Once shutdown is pending, they are excluded from automatic task assignment.
28
+ 2. Call `request_shutdown` for each investigation teammate. Once shutdown is pending, they are excluded from automatic task assignment.
29
29
  3. Call `enter_worktree` once and keep the returned path.
30
30
  4. Create the implementation task, then spawn exactly one named writer with `subagent_type: "general-purpose"` and `working_dir: <path>`. Do not set `read_only` for this teammate.
31
31
  5. Give the writer the accepted investigation evidence and require all changes to stay inside the worktree.
@@ -34,7 +34,7 @@ When the goal requires code changes:
34
34
 
35
35
  If the checkout is not a Git repository or worktree creation fails, keep all teammates read-only and let the leader make the final change in the current checkout.
36
36
 
37
- After synthesis, send each still-active teammate a `shutdown_request`, then delete the team.
37
+ After synthesis, call `request_shutdown` for each still-active teammate, then delete the team.
38
38
 
39
39
  The existing Agent View tabs show teammate conversations, messages, status, and approvals. Do not create another roster, session manager, or terminal UI.
40
40
 
@@ -42,7 +42,7 @@ If the Agent Team tools are unavailable, say that `experimental.agentTeam` must
42
42
 
43
43
  ## Keep coordination bounded
44
44
 
45
- - Use one teammate for a narrow task and no more than three for this workflow.
45
+ - Use one teammate for a narrow task. Past roughly three, the leader spends more of its turn reconciling reports than doing the work, so add a fourth only when the workstreams are genuinely independent — and never past the configured cap.
46
46
  - Give every task an objective, scope, completion condition, and required evidence.
47
47
  - Default every teammate to `read_only: true`; add one worktree writer only when implementation is required.
48
48
  - Do not use Arena: it is for competing solutions to the same task, not collaboration on different tasks.
@@ -3,7 +3,7 @@
3
3
  Qwen Code's first-run `/auth` menu has three top-level options. Pick the one that matches how you want to run the CLI:
4
4
 
5
5
  - **Alibaba ModelStudio**: official recommended setup. Opens a sub-menu with **Coding Plan** (for individual developers · weekly quota included), **Token Plan** (for teams and companies · usage-based billing with a dedicated endpoint), or **Standard API Key** (connect with an existing ModelStudio API key).
6
- - **Third-party Providers**: choose a built-in provider and connect with an API key (DeepSeek, MiniMax, Z.AI, Idealab, ModelScope, OpenRouter, Requesty).
6
+ - **Third-party Providers**: choose a built-in provider and connect with an API key (DeepSeek, Grok, MiniMax, Z.AI, Kimi, Idealab, ModelScope, OpenRouter, Requesty).
7
7
  - **Custom Provider**: manually connect a local server, proxy, or unsupported provider — supports OpenAI, Anthropic, Gemini, and other compatible endpoints.
8
8
 
9
9
  > [!note]
@@ -157,12 +157,12 @@ The key concept is **Model Providers** (`modelProviders`): Qwen Code supports mu
157
157
 
158
158
  #### Supported protocols
159
159
 
160
- | Protocol | `modelProviders` key | Environment variables | Providers |
161
- | ----------------- | -------------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
162
- | OpenAI-compatible | `openai` | `OPENAI_API_KEY`, `OPENAI_BASE_URL`, `OPENAI_MODEL` (alias: `QWEN_MODEL`) | OpenAI, Azure OpenAI, OpenRouter, Requesty, ModelScope, Alibaba Cloud, any OpenAI-compatible endpoint |
163
- | Anthropic | `anthropic` | `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL` | Anthropic Claude |
164
- | Google GenAI | `gemini` | `GEMINI_API_KEY`, `GEMINI_MODEL` | Google Gemini |
165
- | Vertex AI | `vertex-ai` | `GOOGLE_API_KEY`, `GOOGLE_MODEL` (sets `GOOGLE_GENAI_USE_VERTEXAI=true`; uses the `gemini` protocol) | Google Vertex AI |
160
+ | Protocol | `modelProviders` key | Environment variables | Providers |
161
+ | ----------------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
162
+ | OpenAI-compatible | `openai` | `OPENAI_API_KEY`, `OPENAI_BASE_URL`, `OPENAI_MODEL` (alias: `QWEN_MODEL`) | OpenAI, Azure OpenAI, OpenRouter, Requesty, ModelScope, Alibaba Cloud, any OpenAI-compatible endpoint |
163
+ | Anthropic | `anthropic` | `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL` | Anthropic Claude |
164
+ | Google GenAI | `gemini` | `GEMINI_API_KEY`, `GEMINI_MODEL` | Google Gemini |
165
+ | Vertex AI | `vertex-ai` | `GOOGLE_API_KEY` or `GOOGLE_CLOUD_PROJECT` (+ optional `GOOGLE_CLOUD_LOCATION`), `GOOGLE_MODEL` (uses the `gemini` protocol; a keyless project-only setup is not auto-detected from the environment, so select the auth type explicitly with `--auth-type vertex-ai` or `security.auth.selectedType`) | Google Vertex AI |
166
166
 
167
167
  #### Step 1: Configure models and providers in `~/.qwen/settings.json`
168
168
 
@@ -18,6 +18,53 @@ Use `modelProviders` to declare models per provider id that the `/model` picker
18
18
  >
19
19
  > **Model uniqueness:** Models within the same `authType` are uniquely identified by the combination of `id` + `baseUrl`. This means you can define the same model ID (e.g., `"gpt-4o"`) multiple times under a single `authType` as long as each entry has a different `baseUrl` — for example, one pointing to OpenAI directly and another to a proxy endpoint. If two entries share both the same `id` and the same `baseUrl` (or both omit `baseUrl`), the first occurrence wins and subsequent duplicates are skipped with a warning.
20
20
 
21
+ ### Image generation routes
22
+
23
+ Set `supportsImageGeneration: true` when a route can be used by the built-in
24
+ `image_gen` tool. This capability is independent from image input support such
25
+ as `capabilities.vision` or `generationConfig.modalities.image`.
26
+
27
+ Use `imageOnly: true` when the route is dedicated to image generation and must
28
+ not appear in ordinary model selectors. For backward compatibility,
29
+ `imageOnly: true` also implies image-generation capability, so existing settings
30
+ do not need to be migrated.
31
+
32
+ A dual-role route can be selected both as the main model and through
33
+ `/model --image`:
34
+
35
+ ```json
36
+ {
37
+ "modelProviders": {
38
+ "openai": [
39
+ {
40
+ "id": "omni-model",
41
+ "envKey": "MODEL_API_KEY",
42
+ "baseUrl": "https://gateway.example.com/model-api",
43
+ "supportsImageGeneration": true
44
+ }
45
+ ]
46
+ }
47
+ }
48
+ ```
49
+
50
+ A dedicated image route sets both fields. The legacy form with only
51
+ `imageOnly: true` remains valid:
52
+
53
+ ```json
54
+ {
55
+ "id": "image-model",
56
+ "envKey": "MODEL_API_KEY",
57
+ "baseUrl": "https://images.example.com/api/v1",
58
+ "supportsImageGeneration": true,
59
+ "imageOnly": true
60
+ }
61
+ ```
62
+
63
+ The selected route must declare an explicit HTTPS `baseUrl` and a non-empty
64
+ `envKey`. Image generation uses the same endpoint and credential as the route;
65
+ if chat and image generation require different endpoints or credentials,
66
+ configure two routes instead.
67
+
21
68
  ## Configuration Examples by Auth Type
22
69
 
23
70
  Below are comprehensive configuration examples for different authentication types, showing the available parameters and their combinations.
@@ -34,6 +81,9 @@ The `modelProviders` object keys must be valid `authType` values. Currently supp
34
81
  | `qwen-oauth` | Qwen OAuth (hard-coded, cannot be overridden in `modelProviders`) |
35
82
  | `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`) |
36
83
 
84
+ > [!note]
85
+ > Vertex AI entries can authenticate with **Application Default Credentials**. Set `GOOGLE_CLOUD_PROJECT` (and optionally `GOOGLE_CLOUD_LOCATION`, which defaults to `global`) and leave `envKey` unset, along with every other key source the resolver reads: `GOOGLE_API_KEY`, `settings.security.auth.apiKey`, and the CLI key flags. Any API key value that reaches a Vertex entry switches the Google SDK to Vertex Express mode, which ignores the project, the location and your ADC credentials. An entry that declares an `envKey` is never routed to ADC, so a key that fails to be injected keeps failing on that variable instead of silently authenticating as a different principal.
86
+
37
87
  > [!warning]
38
88
  > 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
89
 
@@ -270,6 +320,7 @@ Most local inference servers (vLLM, Ollama, LM Studio, etc.) provide an OpenAI-c
270
320
  "baseUrl": "http://localhost:11434/v1",
271
321
  "generationConfig": {
272
322
  "timeout": 300000,
323
+ "streamIdleTimeoutMs": 600000,
273
324
  "maxRetries": 1,
274
325
  "contextWindowSize": 32768,
275
326
  "samplingParams": {
@@ -311,6 +362,13 @@ Most local inference servers (vLLM, Ollama, LM Studio, etc.) provide an OpenAI-c
311
362
  }
312
363
  ```
313
364
 
365
+ For queued or slow local OpenAI-compatible servers, `streamIdleTimeoutMs`
366
+ controls how long this model may stay silent between streamed chunks. It
367
+ overrides the global `QWEN_STREAM_IDLE_TIMEOUT_MS` value for the selected
368
+ provider entry; set it to `0` to disable the idle guard. The separate 15-minute
369
+ stream lifetime cap still applies unless `QWEN_STREAM_MAX_LIFETIME_MS` is raised
370
+ or disabled.
371
+
314
372
  For local servers that don't require authentication, you can use any placeholder value for the API key:
315
373
 
316
374
  ```bash
@@ -583,14 +641,15 @@ The optional `reasoning` field under `generationConfig` controls how aggressivel
583
641
 
584
642
  ### Per-provider behavior
585
643
 
586
- | Protocol / provider | Wire shape | Notes |
587
- | --------------------------------------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
588
- | **OpenAI / DashScope** (`qwen3.8-max` family) | Flat `reasoning_effort: <effort>` body parameter | The five `/effort` tiers (`low`, `medium`, `high`, `xhigh`, `max`) are passed through verbatim for any model id starting with `qwen3.8-max` (including dated snapshots and `-latest` aliases); DashScope applies any model-specific mapping. When `reasoning_effort` and `thinking_budget` conflict, the normal `extra_body` > `samplingParams` > `reasoning` precedence keeps only the higher-priority field; an explicit same-layer pair keeps `reasoning_effort`, matching the provider's behavior before cross-layer resolution. If a static field wins, `/effort` reports that field instead of implying the requested tier is effective. When an effort tier wins, a conflicting `enable_thinking` is also dropped. An explicit `enable_thinking: false` in `extra_body` is honoured rather than dropped: it overrides the configured tier as `reasoning_effort: 'none'`, one of the few places `extra_body` does not win verbatim. Other Qwen models continue to map a selected effort to `enable_thinking: true`; a `reasoning_effort` override passes through there unless it conflicts with a `thinking_budget` (a pair DashScope rejects), in which case the inert `reasoning_effort` is dropped and both `enable_thinking` and `thinking_budget` survive. |
589
- | **OpenAI / DeepSeek** (`api.deepseek.com`) | Flat `reasoning_effort: <effort>` body parameter | When `reasoning.effort` is set in the nested config shape, it's rewritten to flat `reasoning_effort` and `'low'`/`'medium'` are normalized to `'high'`, `'xhigh'` to `'max'` — mirroring DeepSeek's [server-side back-compat](https://api-docs.deepseek.com/zh-cn/api/create-chat-completion). Top-level `samplingParams.reasoning_effort` or `extra_body.reasoning_effort` overrides skip this normalization and ship verbatim. |
590
- | **OpenAI** (other compatible servers) | `reasoning: { effort, ... }` passed through verbatim | Set via `samplingParams` (e.g. `samplingParams.reasoning_effort` for GPT-5/o-series) when the provider expects a different shape. |
591
- | **Anthropic** (real `api.anthropic.com`) | `output_config: { effort }` plus the `effort-2025-11-24` beta header | Real Anthropic accepts `'low'`/`'medium'`/`'high'` only. `'max'` is **clamped to `'high'`** with a `debugLogger.warn` line (once per generator); if you want max effort, switch the baseURL to a DeepSeek-compatible endpoint that supports it. |
592
- | **Anthropic** (`api.deepseek.com/anthropic`) | Same `output_config: { effort }` + beta header | `'max'` is passed through unchanged. |
593
- | **Gemini** (`@google/genai`) | `thinkingConfig: { includeThoughts: true, thinkingLevel }` | `'low'` `LOW`, `'high'`/`'max'` `HIGH`, others → `THINKING_LEVEL_UNSPECIFIED` (Gemini has no `MAX` tier). |
644
+ | Protocol / provider | Wire shape | Notes |
645
+ | --------------------------------------------- | -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
646
+ | **OpenAI / DashScope** (`qwen3.8-max` family) | Flat `reasoning_effort: <effort>` body parameter | The `/effort` tiers are passed through for any model id starting with `qwen3.8-max` (including dated snapshots and `-latest` aliases); DashScope applies any model-specific mapping. This family's ladder stops at `xhigh`, so a configured `max` is clamped to `xhigh` (logged once) rather than sent and rejected. An explicit `reasoning_effort` in `samplingParams` or `extra_body` is a verbatim override and is not clamped. When `reasoning_effort` and `thinking_budget` conflict, the normal `extra_body` > `samplingParams` > `reasoning` precedence keeps only the higher-priority field; an explicit same-layer pair keeps `reasoning_effort`, matching the provider's behavior before cross-layer resolution. If a static field wins, `/effort` reports that field instead of implying the requested tier is effective. When an effort tier wins, a conflicting `enable_thinking` is also dropped. An explicit `enable_thinking: false` in `extra_body` is honoured rather than dropped: it overrides the configured tier as `reasoning_effort: 'none'`, one of the few places `extra_body` does not win verbatim. Other Qwen models continue to map a selected effort to `enable_thinking: true`; a `reasoning_effort` override passes through there unless it conflicts with a `thinking_budget` (a pair DashScope rejects), in which case the inert `reasoning_effort` is dropped and both `enable_thinking` and `thinking_budget` survive. |
647
+ | **OpenAI / DeepSeek** (`api.deepseek.com`) | Flat `reasoning_effort: <effort>` body parameter | When `reasoning.effort` is set in the nested config shape, it's rewritten to flat `reasoning_effort` and `'low'`/`'medium'` are normalized to `'high'`, `'xhigh'` to `'max'` — mirroring DeepSeek's [server-side back-compat](https://api-docs.deepseek.com/zh-cn/api/create-chat-completion). Top-level `samplingParams.reasoning_effort` or `extra_body.reasoning_effort` overrides skip this normalization and ship verbatim. `max` is accepted only on a real DeepSeek hostname; a `deepseek`-named model on another host keeps the generic `xhigh` ceiling, matching the hostname gate on the reshape itself. |
648
+ | **OpenAI / Z.ai** (`z.ai`, `bigmodel.cn`) | Flat `reasoning_effort: <effort>` body parameter | GLM-5.2+ on a Z.ai host takes the full ladder, `max` included, and the nested `reasoning.effort` is rewritten to the flat field. Older GLM ids, and a `glm-*` model reached on any other host, keep the generic `xhigh` ceiling: the model name alone says nothing about what that endpoint accepts. |
649
+ | **OpenAI** (other compatible servers) | `reasoning: { effort, ... }` passed through | A configured `max` is clamped to `xhigh` (logged once), since `max` is a vendor extension rather than part of the generic OpenAI ladder. Set via `samplingParams` (e.g. `samplingParams.reasoning_effort` for GPT-5/o-series) when the provider expects a different shape; an explicit `samplingParams` / `extra_body` value is not clamped. |
650
+ | **Anthropic** (real `api.anthropic.com`) | `output_config: { effort }` plus the `effort-2025-11-24` beta header | Real Anthropic accepts `'low'`/`'medium'`/`'high'` only. `'max'` is **clamped to `'high'`** with a `debugLogger.warn` line (once per generator); if you want max effort, switch the baseURL to a DeepSeek-compatible endpoint that supports it. |
651
+ | **Anthropic** (`api.deepseek.com/anthropic`) | Same `output_config: { effort }` + beta header | `'max'` is passed through unchanged. |
652
+ | **Gemini** (`@google/genai`) | `thinkingConfig: { includeThoughts: true, thinkingLevel }` | `'low'` → `LOW`, `'high'`/`'max'` → `HIGH`, others → `THINKING_LEVEL_UNSPECIFIED` (Gemini has no `MAX` tier). |
594
653
 
595
654
  ### `reasoning: false`
596
655
 
@@ -598,11 +657,13 @@ Setting `reasoning: false` (the literal boolean) explicitly disables thinking on
598
657
 
599
658
  On a `api.deepseek.com` baseURL, the OpenAI pipeline emits the explicit `thinking: { type: 'disabled' }` field that DeepSeek V4+ requires — the server-side default is `'enabled'`, so simply omitting `reasoning_effort` would still pay thinking latency/cost. Self-hosted DeepSeek backends (sglang/vllm) and other OpenAI-compatible servers do **not** receive this field; if you need to disable thinking on those, inject `thinking: { type: 'disabled' }` (or whatever knob your inference framework exposes) via `samplingParams`/`extra_body`.
600
659
 
660
+ On an `openrouter.ai` baseURL, the OpenAI pipeline emits OpenRouter's provider-level `reasoning: { enabled: false }` field when reasoning is disabled. Other OpenAI-compatible servers do not receive this OpenRouter-specific field; use `samplingParams`/`extra_body` for their native disable knob.
661
+
601
662
  ### Interaction with `samplingParams` (OpenAI-compatible only)
602
663
 
603
664
  > [!warning]
604
665
  >
605
- > When `generationConfig.samplingParams` is set on an OpenAI-compatible provider, the pipeline ships those keys to the wire **verbatim** and skips the separate `reasoning` injection entirely. So a config like `{ samplingParams: { temperature: 0.5 }, reasoning: { effort: 'max' } }` will silently drop the reasoning field on OpenAI/DeepSeek requests.
666
+ > When `generationConfig.samplingParams` is set on an OpenAI-compatible provider, the pipeline ships those keys to the wire **verbatim** and skips the separate `reasoning` injection entirely. So a config like `{ samplingParams: { temperature: 0.5 }, reasoning: { effort: 'max' } }` will silently drop the reasoning field on OpenAI/DeepSeek requests. A `reasoning` object placed inside `samplingParams` is your own value and ships unchanged: the effort ceiling above applies only to the tier the pipeline injects from `/effort`.
606
667
  >
607
668
  > DashScope Qwen models are an exception: their provider reads `reasoning` directly and maps it to `reasoning_effort` or `enable_thinking`. On the qwen3.8-max family, provider-specific `samplingParams` fields still take precedence when the wire parameters conflict; on older qwen hybrids, a configured effort tier collapses to `enable_thinking: true`, which overrides a `samplingParams.enable_thinking` value.
608
669
  >