@qwen-code/qwen-code 0.21.5 → 0.21.6-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 (224) hide show
  1. package/bundled/qc-helper/docs/configuration/model-providers.md +8 -8
  2. package/bundled/qc-helper/docs/configuration/settings.md +15 -15
  3. package/bundled/qc-helper/docs/features/code-review.md +2 -0
  4. package/bundled/qc-helper/docs/features/headless.md +31 -0
  5. package/bundled/qc-helper/docs/qwen-serve.md +75 -0
  6. package/bundled/review/SKILL.md +59 -52
  7. package/chunks/{MaxSizedBox-2MWU5JYB.js → MaxSizedBox-A3UYJS6B.js} +8 -7
  8. package/chunks/{StandaloneSessionPicker-B6MI5NTB.js → StandaloneSessionPicker-NGLY26I4.js} +21 -20
  9. package/chunks/{acpAgent-MRPYN6FH.js → acpAgent-V54T2EEL.js} +215 -63
  10. package/chunks/{agent-NAOXNW4I.js → agent-2P53VL2L.js} +8 -7
  11. package/chunks/{agent-headless-L4PPVFKW.js → agent-headless-6X4GCFRD.js} +8 -7
  12. package/chunks/{bridge-LHXGYNCO.js → bridge-TCFMLKHR.js} +12 -10
  13. package/chunks/{channel-settings-store-QB54TLYE.js → channel-settings-store-B4HNMNQV.js} +13 -12
  14. package/chunks/{channel-worker-group-NDG4WOOZ.js → channel-worker-group-SVGPDH2C.js} +3 -2
  15. package/chunks/{channel-worker-manager-ZCW6UW34.js → channel-worker-manager-72ZK2GTS.js} +3 -2
  16. package/chunks/{channel-worker-supervisor-ATGFTZRN.js → channel-worker-supervisor-NUEDVHX4.js} +2 -1
  17. package/chunks/{chunk-UWSXFI6E.js → chunk-2U7GPHA6.js} +6 -2
  18. package/chunks/{chunk-CIUUYB23.js → chunk-3DTM3RPU.js} +1 -1
  19. package/chunks/{chunk-7MFQLOHZ.js → chunk-3PRJYMXC.js} +1 -1
  20. package/chunks/{chunk-K6VEL5KP.js → chunk-3ZRS2XNY.js} +1 -1
  21. package/chunks/{chunk-GBY3ODW7.js → chunk-4E5PO6R7.js} +3 -3
  22. package/chunks/{chunk-KH2BIJ4H.js → chunk-4T6QMNX2.js} +89 -6
  23. package/chunks/{chunk-K64OI7S7.js → chunk-546CDN6D.js} +1 -1
  24. package/chunks/{chunk-J7I2BZHS.js → chunk-5CDI4UOY.js} +23 -6
  25. package/chunks/{chunk-7W5KOBYU.js → chunk-6D6V55ZQ.js} +1 -1
  26. package/chunks/{chunk-WU5NBSLD.js → chunk-6KEN3RIC.js} +3 -3
  27. package/chunks/{chunk-FEUXV3DC.js → chunk-6KZP75GT.js} +1 -1
  28. package/chunks/{chunk-B3EBIZUY.js → chunk-72DZPDH4.js} +1 -1
  29. package/chunks/{chunk-TCOJPG2P.js → chunk-7FUVSN4D.js} +1 -1
  30. package/chunks/{chunk-EXHQZBVJ.js → chunk-AFZTZLFB.js} +2 -2
  31. package/chunks/{chunk-AEWOKOJY.js → chunk-AU3XNTMV.js} +1 -1
  32. package/chunks/{chunk-C6ARWPCG.js → chunk-AVDEBBMI.js} +2 -2
  33. package/chunks/chunk-BKHCW2BI.js +41 -0
  34. package/chunks/{chunk-ZLGPHA34.js → chunk-BU4BRCPX.js} +4 -4
  35. package/chunks/{chunk-3GOCVBYR.js → chunk-C4GRKMUL.js} +4 -4
  36. package/chunks/{chunk-VOA2UPZM.js → chunk-CDHNGCJI.js} +3 -3
  37. package/chunks/{chunk-3H5RFLTS.js → chunk-CJBRIJ7W.js} +1 -1
  38. package/chunks/{chunk-D7QAZ5DF.js → chunk-CXYBX4AL.js} +1 -1
  39. package/chunks/{chunk-GEP54CHX.js → chunk-DBIEZC7T.js} +3 -3
  40. package/chunks/{chunk-BWLUCN35.js → chunk-DG563ZCS.js} +2 -2
  41. package/chunks/{chunk-YLL3SC5S.js → chunk-DOA7MCDY.js} +167 -99
  42. package/chunks/{chunk-OIGB253L.js → chunk-DOICUTPO.js} +7 -7
  43. package/chunks/{chunk-VJPF6GF2.js → chunk-EHMN6SEG.js} +2 -2
  44. package/chunks/{chunk-YO4JI7B4.js → chunk-EKWNNQQD.js} +4 -4
  45. package/chunks/{chunk-B2RBYP7Z.js → chunk-FDV3CXTD.js} +2 -2
  46. package/chunks/{chunk-LMNM37OE.js → chunk-HKNSU4WX.js} +1 -1
  47. package/chunks/{chunk-4LLUH3A7.js → chunk-HU5TUALO.js} +95 -8
  48. package/chunks/{chunk-G2UXFO2B.js → chunk-IISDPZ5X.js} +1 -1
  49. package/chunks/{chunk-LYPXNRBX.js → chunk-IKXE3AAC.js} +1 -1
  50. package/chunks/{chunk-TJ56V3AR.js → chunk-MFBUJMQ3.js} +3 -3
  51. package/chunks/{chunk-SQTA6PAY.js → chunk-MVLM6PJK.js} +1 -1
  52. package/chunks/{chunk-4NEBUDWS.js → chunk-N47ZM2KI.js} +9 -9
  53. package/chunks/{chunk-5HWAJ4BK.js → chunk-NAYPZ72V.js} +1 -1
  54. package/chunks/{chunk-IZ2CMEYO.js → chunk-NKST54XA.js} +1 -1
  55. package/chunks/{chunk-IK3RYLAD.js → chunk-NYZAL2W2.js} +3 -3
  56. package/chunks/{chunk-ZPGMDT4S.js → chunk-O656RSMC.js} +19 -92
  57. package/chunks/{chunk-XD2PNH3K.js → chunk-P7LKADIT.js} +5 -5
  58. package/chunks/{chunk-JDNWIXHJ.js → chunk-PQTK2FVO.js} +3 -3
  59. package/chunks/{chunk-LSYVASZS.js → chunk-QG2ACINA.js} +1 -1
  60. package/chunks/{chunk-IWYXZAGT.js → chunk-QWUYFMAR.js} +24 -24
  61. package/chunks/{chunk-YMUZQ3MQ.js → chunk-RTWF7FF7.js} +3 -3
  62. package/chunks/{chunk-5XNO4AW7.js → chunk-SPUDIAHX.js} +11 -11
  63. package/chunks/{chunk-7M2RLFNX.js → chunk-SQ3ZJOYL.js} +11 -11
  64. package/chunks/{chunk-SJMCYCUQ.js → chunk-T4XY5CT4.js} +4 -4
  65. package/chunks/{chunk-2JBETW4S.js → chunk-TVFC3XF5.js} +5 -5
  66. package/chunks/{chunk-NLQIEY6W.js → chunk-VDLXPEI5.js} +3 -3
  67. package/chunks/{chunk-Q2V4AOQL.js → chunk-WAOLM6SQ.js} +1 -1
  68. package/chunks/{chunk-N3RERU5N.js → chunk-WIPQR44Y.js} +3 -3
  69. package/chunks/{chunk-PDDYAXL2.js → chunk-WIRAPZ62.js} +7 -0
  70. package/chunks/chunk-WOJZWRAZ.js +123 -0
  71. package/chunks/{chunk-SVIEVA3L.js → chunk-WPKIU4PA.js} +28 -3
  72. package/chunks/{chunk-K2ETEWG6.js → chunk-WVRJKSIG.js} +1 -1
  73. package/chunks/{chunk-WTM5QONI.js → chunk-WXS647W5.js} +2 -2
  74. package/chunks/{chunk-4O6HLCOF.js → chunk-X6DV3WKN.js} +1 -1
  75. package/chunks/{chunk-OGAARVN7.js → chunk-XKTCA6BW.js} +3 -3
  76. package/chunks/{chunk-FHPKHXHT.js → chunk-XNZBXQCG.js} +4 -0
  77. package/chunks/{chunk-GP4IMBX5.js → chunk-XOZ2R6XI.js} +529 -259
  78. package/chunks/{chunk-IWGMDSC3.js → chunk-XSGQKR37.js} +4 -4
  79. package/chunks/{chunk-ZLJQIGCH.js → chunk-XZCMQUOF.js} +8 -0
  80. package/chunks/{chunk-P3SLTSNY.js → chunk-Y5HIDFKZ.js} +4 -4
  81. package/chunks/{chunk-RM3F46UT.js → chunk-YUVTZ4UH.js} +6 -6
  82. package/chunks/{chunk-3P4GP4S2.js → chunk-Z5S6KH2B.js} +1 -1
  83. package/chunks/{chunk-4NNR24EP.js → chunk-ZH7G3A4U.js} +3 -3
  84. package/chunks/{chunk-CAX76R46.js → chunk-ZQL73PPE.js} +1 -1
  85. package/chunks/{computer-use-XDOGP2KA.js → computer-use-GTOP2CVH.js} +8 -7
  86. package/chunks/{config-utils-E3ZQTHGM.js → config-utils-LIRO7NSU.js} +2 -2
  87. package/chunks/{contextCommand-N3LQDCYJ.js → contextCommand-K6T6RRF3.js} +10 -9
  88. package/chunks/{core-runtime-STAFP45W.js → core-runtime-D2626QQU.js} +8 -7
  89. package/chunks/{create-sub-session-2B3JENWD.js → create-sub-session-MWUWNBM6.js} +8 -7
  90. package/chunks/{daemon-status-provider-PPAH3ATF.js → daemon-status-provider-2EHRZZVF.js} +16 -14
  91. package/chunks/{daemon-trust-policy-X6XL3MB4.js → daemon-trust-policy-B3EPDJDR.js} +13 -12
  92. package/chunks/{daemon-trust-policy-monitor-M5LBL2HD.js → daemon-trust-policy-monitor-MFM5X26G.js} +13 -12
  93. package/chunks/{deferred-core-runtime-O54YPTBU.js → deferred-core-runtime-KXN7HLN7.js} +8 -7
  94. package/chunks/{earlyInputCapture-CBIT2RGT.js → earlyInputCapture-WUNYYFOS.js} +8 -7
  95. package/chunks/{edit-KW2TOC6A.js → edit-DMFCBP2D.js} +8 -7
  96. package/chunks/{enter-worktree-YL34NEU5.js → enter-worktree-5SVBCXFC.js} +8 -7
  97. package/chunks/{enterPlanMode-JFJTDASQ.js → enterPlanMode-QUIZFQ4M.js} +8 -7
  98. package/chunks/{environment-IATU5GXG.js → environment-U6QP23VJ.js} +10 -9
  99. package/chunks/{errors-SAVRDE7Q.js → errors-GZWFA6ON.js} +10 -9
  100. package/chunks/{exit-worktree-5M43QPBB.js → exit-worktree-FUB44KAF.js} +8 -7
  101. package/chunks/{exitPlanMode-W4EICZ4N.js → exitPlanMode-XSHHYR73.js} +8 -7
  102. package/chunks/external-tool-guard-provider-5HTGOPGU.js +273 -0
  103. package/chunks/{fast-path-YQJPIKMP.js → fast-path-JHQJSIMZ.js} +5 -5
  104. package/chunks/{gemini-FUF5SSPR.js → gemini-O44ETOKT.js} +61 -46
  105. package/chunks/{geminiContentGenerator-LLLZBOUG.js → geminiContentGenerator-TTM4TZJM.js} +1 -1
  106. package/chunks/{glob-LJFFMN4D.js → glob-YECOWTRW.js} +8 -7
  107. package/chunks/{grep-Q64EAM73.js → grep-BZO4LOTA.js} +8 -7
  108. package/chunks/{handleAutoUpdate-QBMPRTSQ.js → handleAutoUpdate-TOO52D6H.js} +12 -11
  109. package/chunks/{i18n-LDUW5DMN.js → i18n-ARJYXZQ5.js} +9 -8
  110. package/chunks/{image-gen-G7RLG3KR.js → image-gen-J6Q2YBEU.js} +1 -1
  111. package/chunks/{initializer-74A7DMMD.js → initializer-CEZ4RPQV.js} +13 -12
  112. package/chunks/{installationInfo-OFDYLDFD.js → installationInfo-AEGIIQAT.js} +9 -8
  113. package/chunks/{list-JA2EWRHJ.js → list-7XLPV5GC.js} +16 -15
  114. package/chunks/{loadedSettingsAdapter-2GNJOQ3L.js → loadedSettingsAdapter-YK5SBHOT.js} +13 -12
  115. package/chunks/{loggingContentGenerator-B6B5EGB3.js → loggingContentGenerator-I7QDXS43.js} +4 -3
  116. package/chunks/{managed-npm-update-4YZHLUER.js → managed-npm-update-YSL7PA7G.js} +9 -8
  117. package/chunks/{mcp-LLK5YJVH.js → mcp-RKFQZXP6.js} +13 -12
  118. package/chunks/{monitor-NYJPAWVP.js → monitor-QHHJIKGL.js} +8 -7
  119. package/chunks/{nonInteractiveCli-HZBBBDJD.js → nonInteractiveCli-XEBIE7MG.js} +41 -39
  120. package/chunks/{notebook-edit-LLM6UXFX.js → notebook-edit-SG7X2EQA.js} +8 -7
  121. package/chunks/{openaiContentGenerator-2AEXDN55.js → openaiContentGenerator-63CVR33K.js} +5 -4
  122. package/chunks/{pidfile-3JUWX7G2.js → pidfile-I3CXJGQD.js} +8 -7
  123. package/chunks/{processUtils-JLLRVZHT.js → processUtils-LJ3DSANX.js} +2 -2
  124. package/chunks/{qwenContentGenerator-2FESCF27.js → qwenContentGenerator-JINBVCH6.js} +9 -8
  125. package/chunks/{qwenOAuth2-2KKPYA5J.js → qwenOAuth2-SY2O3NRR.js} +1 -1
  126. package/chunks/{read-file-5GVXLY74.js → read-file-PGTXF25I.js} +3 -2
  127. package/chunks/{record-artifact-L3BAHQFN.js → record-artifact-E6AWQU2Z.js} +1 -1
  128. package/chunks/{resumeHistoryUtils-Z4OFBXPM.js → resumeHistoryUtils-FB2NFVZ2.js} +11 -10
  129. package/chunks/{ripGrep-TKOJTIAB.js → ripGrep-IY3KGPM6.js} +8 -7
  130. package/chunks/{run-qwen-serve-K5W6MM6M.js → run-qwen-serve-UYEMGPKA.js} +72 -36
  131. package/chunks/{runtime-IADXMRCY.js → runtime-CG3BKRFE.js} +16 -15
  132. package/chunks/{scheduler-T7AV37LD.js → scheduler-VFUVGDE5.js} +8 -7
  133. package/chunks/{serve-ROEGMS3I.js → serve-ZCCQ2G2L.js} +14 -12
  134. package/chunks/{server-NGXMRODI.js → server-WS7LWXPP.js} +161 -54
  135. package/chunks/{session-RCDLDJA4.js → session-IQLCT32T.js} +42 -40
  136. package/chunks/{settings-E6H3AURD.js → settings-NX4EUIE6.js} +12 -11
  137. package/chunks/{shell-RHGGJ6BE.js → shell-THDYM4CS.js} +8 -7
  138. package/chunks/{skill-GQ7PBS25.js → skill-OXXZBNQB.js} +3 -2
  139. package/chunks/{skill-settings-E2F7OCBL.js → skill-settings-T3JZ33T2.js} +12 -11
  140. package/chunks/{spawnChannel-Q2IQBHME.js → spawnChannel-COLJMSA7.js} +11 -9
  141. package/chunks/{standalone-update-NYYZEHLD.js → standalone-update-ICW7H5IF.js} +10 -9
  142. package/chunks/{startInteractiveUI-IX6I3Y2Z.js → startInteractiveUI-6BDRXSMF.js} +60 -58
  143. package/chunks/{team-create-UTRVUEDA.js → team-create-BCSMDK4Z.js} +8 -7
  144. package/chunks/{team-plan-approval-YZNB4U5U.js → team-plan-approval-B5YRLJFV.js} +8 -7
  145. package/chunks/{terminal-image-renderer-QRSCS2BE.js → terminal-image-renderer-PW6Z6VFY.js} +8 -7
  146. package/chunks/{theme-manager-EKZBY34I.js → theme-manager-CMVKD2JH.js} +8 -7
  147. package/chunks/{tool-search-N2R7LVMC.js → tool-search-SQTUSG6P.js} +3 -2
  148. package/chunks/{total-session-admission-HBIYARPO.js → total-session-admission-XAXOSE46.js} +12 -10
  149. package/chunks/{trustedFolders-ZQLYRCSY.js → trustedFolders-Z2UAEG2V.js} +9 -8
  150. package/chunks/{update-relaunch-PJWXMPCR.js → update-relaunch-JBLI6LJF.js} +5 -5
  151. package/chunks/{updateCheck-ZXRCGY66.js → updateCheck-FDAVGOFT.js} +11 -10
  152. package/chunks/{useAutoAcceptIndicator-ZYQW5SGJ.js → useAutoAcceptIndicator-PDZFIYRM.js} +14 -13
  153. package/chunks/{validateNonInterActiveAuth-M7J7OTRH.js → validateNonInterActiveAuth-Q4763ONQ.js} +38 -36
  154. package/chunks/{version-2AOHMPK3.js → version-C7MPCGWD.js} +1 -1
  155. package/chunks/{web-fetch-DS34CJ3R.js → web-fetch-L7RAPOJB.js} +3 -2
  156. package/chunks/{web-search-ITFPD7V4.js → web-search-IDOYUOWX.js} +4 -3
  157. package/chunks/{workflow-LZQ4PGNS.js → workflow-HXURUJB5.js} +9 -8
  158. package/chunks/{workspace-providers-status-ZPTLKOBM.js → workspace-providers-status-JZ3GPWNU.js} +16 -15
  159. package/chunks/{workspace-registration-store-OTFKSGG7.js → workspace-registration-store-SM2PWB6L.js} +1 -1
  160. package/chunks/{workspace-registry-YZ3OXPHP.js → workspace-registry-6W4ES7BJ.js} +12 -10
  161. package/chunks/{workspace-service-OCZXOOSQ.js → workspace-service-V47ZFJRX.js} +17 -16
  162. package/chunks/{workspace-skills-status-K2ALGUCD.js → workspace-skills-status-6ZQ45XKA.js} +14 -13
  163. package/chunks/{workspace-trust-reconciler-KMRZISJP.js → workspace-trust-reconciler-6V25LMCN.js} +17 -15
  164. package/chunks/{write-file-AWBI4GJS.js → write-file-H2QOF25K.js} +8 -7
  165. package/chunks/{zoom-image-NHKN6F77.js → zoom-image-JTUSS43N.js} +3 -2
  166. package/cli-entry.js +14 -0
  167. package/cli.js +16 -12
  168. package/package.json +3 -3
  169. package/web-shell/assets/{arc-Dpg66jw7.js → arc-DtI1rZcQ.js} +1 -1
  170. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BJ4FIBxN.js → architectureDiagram-3BPJPVTR-BPZwSVct.js} +1 -1
  171. package/web-shell/assets/{blockDiagram-GPEHLZMM-VXmYdtYT.js → blockDiagram-GPEHLZMM-BIQ03j4C.js} +1 -1
  172. package/web-shell/assets/{c4Diagram-AAUBKEIU-BNLDb8FE.js → c4Diagram-AAUBKEIU-CB0RyFGm.js} +1 -1
  173. package/web-shell/assets/channel-vfbVFuM1.js +1 -0
  174. package/web-shell/assets/{chunk-2J33WTMH-DR5yHxr0.js → chunk-2J33WTMH-B3WoS-4H.js} +1 -1
  175. package/web-shell/assets/{chunk-4BX2VUAB-Czkq8UZU.js → chunk-4BX2VUAB-C98xYZ1X.js} +1 -1
  176. package/web-shell/assets/{chunk-55IACEB6-DugUgM6s.js → chunk-55IACEB6-CbTIWRwQ.js} +1 -1
  177. package/web-shell/assets/{chunk-727SXJPM-Dw6quA1K.js → chunk-727SXJPM-DWGnKTPu.js} +1 -1
  178. package/web-shell/assets/{chunk-AQP2D5EJ-BoVYOTTz.js → chunk-AQP2D5EJ-4__QyCEX.js} +1 -1
  179. package/web-shell/assets/{chunk-FMBD7UC4--Amcse-j.js → chunk-FMBD7UC4-DFtG1YCW.js} +1 -1
  180. package/web-shell/assets/{chunk-ND2GUHAM-ajaEYAC8.js → chunk-ND2GUHAM-rvAhW51N.js} +1 -1
  181. package/web-shell/assets/{chunk-QZHKN3VN-CUNDZ7im.js → chunk-QZHKN3VN-DfiU9pwZ.js} +1 -1
  182. package/web-shell/assets/classDiagram-4FO5ZUOK-Cvr8atq3.js +1 -0
  183. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Cvr8atq3.js +1 -0
  184. package/web-shell/assets/{cose-bilkent-S5V4N54A-BnfkD-m1.js → cose-bilkent-S5V4N54A-Cc4EIdxu.js} +1 -1
  185. package/web-shell/assets/{dagre-BM42HDAG-BuUdFk7Z.js → dagre-BM42HDAG-CZNj4dGW.js} +1 -1
  186. package/web-shell/assets/{diagram-2AECGRRQ-B2ZXxoab.js → diagram-2AECGRRQ-D5tiqQCr.js} +1 -1
  187. package/web-shell/assets/{diagram-5GNKFQAL-BsgOICzM.js → diagram-5GNKFQAL-pwzw0jVO.js} +1 -1
  188. package/web-shell/assets/{diagram-KO2AKTUF-DTTjG6U-.js → diagram-KO2AKTUF-4CWiM00x.js} +1 -1
  189. package/web-shell/assets/{diagram-LMA3HP47-temLf1x7.js → diagram-LMA3HP47-Dd7rc7Qf.js} +1 -1
  190. package/web-shell/assets/{diagram-OG6HWLK6-CRFjScs2.js → diagram-OG6HWLK6-_vzV52ml.js} +1 -1
  191. package/web-shell/assets/{erDiagram-TEJ5UH35-D4oaY-rQ.js → erDiagram-TEJ5UH35-CqbE2bx_.js} +1 -1
  192. package/web-shell/assets/{flowDiagram-I6XJVG4X-BqG8B49b.js → flowDiagram-I6XJVG4X-CaxNr7w4.js} +1 -1
  193. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DffQBdd5.js → ganttDiagram-6RSMTGT7-AGjrtfUA.js} +1 -1
  194. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CMDPfseF.js → gitGraphDiagram-PVQCEYII-ADG2zSkc.js} +1 -1
  195. package/web-shell/assets/{index-qTQR_smP.js → index-BOryKCqt.js} +1 -1
  196. package/web-shell/assets/{index-CaucmEO_.css → index-Cb1LjsCv.css} +1 -1
  197. package/web-shell/assets/{index-2F4RsNzd.js → index-CvJDaIy8.js} +311 -311
  198. package/web-shell/assets/{infoDiagram-5YYISTIA-Cn3T83MA.js → infoDiagram-5YYISTIA-CE3B_IoZ.js} +1 -1
  199. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-ijFs7e25.js → ishikawaDiagram-YF4QCWOH-CN-Frhoi.js} +1 -1
  200. package/web-shell/assets/{journeyDiagram-JHISSGLW-CINTv8VB.js → journeyDiagram-JHISSGLW-CGgezS93.js} +1 -1
  201. package/web-shell/assets/{kanban-definition-UN3LZRKU-CMGRZCxx.js → kanban-definition-UN3LZRKU-BqWijky5.js} +1 -1
  202. package/web-shell/assets/{linear-Co-2_37d.js → linear-D8sfpZf6.js} +1 -1
  203. package/web-shell/assets/{mermaid.core-DijbyaN5.js → mermaid.core-3PA4QrzM.js} +5 -5
  204. package/web-shell/assets/{mindmap-definition-RKZ34NQL-k_sDYDPZ.js → mindmap-definition-RKZ34NQL-D9QxwiCY.js} +1 -1
  205. package/web-shell/assets/{pieDiagram-4H26LBE5-CG-oz8V3.js → pieDiagram-4H26LBE5-Bioaf6uE.js} +1 -1
  206. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Baq7HIG2.js → quadrantDiagram-W4KKPZXB-DBb2AS73.js} +1 -1
  207. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CDM3ZvBt.js → requirementDiagram-4Y6WPE33-DXOvZ3KB.js} +1 -1
  208. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-C2dJbWKN.js → sankeyDiagram-5OEKKPKP-D9qg09Dm.js} +1 -1
  209. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Cf1_h59p.js → sequenceDiagram-3UESZ5HK-DSAUIfpw.js} +1 -1
  210. package/web-shell/assets/{stateDiagram-AJRCARHV-CI5clUEc.js → stateDiagram-AJRCARHV-BPZkzfQ3.js} +1 -1
  211. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DInOqnhZ.js +1 -0
  212. package/web-shell/assets/{timeline-definition-PNZ67QCA-B2O8cAZX.js → timeline-definition-PNZ67QCA-UDaQp9sP.js} +1 -1
  213. package/web-shell/assets/{vennDiagram-CIIHVFJN-BLsJ_h9s.js → vennDiagram-CIIHVFJN-2ouhAnHO.js} +1 -1
  214. package/web-shell/assets/{wardley-L42UT6IY-BlPU4FTA.js → wardley-L42UT6IY-Cq_WEvTK.js} +1 -1
  215. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-D_U-RdU4.js → wardleyDiagram-YWT4CUSO-Dt24aXOM.js} +1 -1
  216. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BynXGSTl.js → xychartDiagram-2RQKCTM6-A5Xk2WCH.js} +1 -1
  217. package/web-shell/index.html +2 -2
  218. package/bundled/review/DESIGN.md +0 -724
  219. package/web-shell/assets/channel-Bd9wOnaA.js +0 -1
  220. package/web-shell/assets/classDiagram-4FO5ZUOK-XhCT8FE3.js +0 -1
  221. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-XhCT8FE3.js +0 -1
  222. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDc8asKD.js +0 -1
  223. package/chunks/{channel-management-service-UHX56NBO.js → channel-management-service-5XPPTWUQ.js} +3 -3
  224. package/chunks/{chunk-LEZFUYPM.js → chunk-7GYP5COR.js} +3 -3
@@ -2,12 +2,12 @@
2
2
  "use strict";
3
3
  import {
4
4
  buildPermissionSettings
5
- } from "./chunk-4O6HLCOF.js";
5
+ } from "./chunk-X6DV3WKN.js";
6
6
  import {
7
7
  resolveVoiceStreamConfig,
8
8
  resolveVoiceTranscriptionConfig,
9
9
  transcribeVoiceAudio
10
- } from "./chunk-LMNM37OE.js";
10
+ } from "./chunk-HKNSU4WX.js";
11
11
  import {
12
12
  getVoiceSettingsScope,
13
13
  isSelectableVoiceModel,
@@ -16,7 +16,7 @@ import {
16
16
  readVoiceMode,
17
17
  readVoiceModel,
18
18
  resolveVoiceTransport
19
- } from "./chunk-TCOJPG2P.js";
19
+ } from "./chunk-7FUVSN4D.js";
20
20
  import {
21
21
  resolveSkillSettings
22
22
  } from "./chunk-Z4X5MTRT.js";
@@ -42,7 +42,7 @@ import {
42
42
  createIdleWorkspaceProvidersStatus,
43
43
  createIdleWorkspaceSkillsStatus,
44
44
  mapDomainErrorToErrorKind
45
- } from "./chunk-PDDYAXL2.js";
45
+ } from "./chunk-WIRAPZ62.js";
46
46
  import {
47
47
  McpServerNotFoundError,
48
48
  McpServerRestartFailedError,
@@ -55,15 +55,15 @@ import {
55
55
  import {
56
56
  getPersistScopeForModelSelection,
57
57
  loadSettings
58
- } from "./chunk-RM3F46UT.js";
58
+ } from "./chunk-YUVTZ4UH.js";
59
59
  import {
60
60
  getWorkspaceTrustStatus
61
- } from "./chunk-B3EBIZUY.js";
61
+ } from "./chunk-72DZPDH4.js";
62
62
  import {
63
63
  ModelsConfig,
64
64
  SkillManager,
65
65
  require_yauzl
66
- } from "./chunk-YLL3SC5S.js";
66
+ } from "./chunk-DOA7MCDY.js";
67
67
  import {
68
68
  Storage,
69
69
  createDebugLogger
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  JsonFormatter,
5
5
  parseAndFormatApiError
6
- } from "./chunk-YLL3SC5S.js";
6
+ } from "./chunk-DOA7MCDY.js";
7
7
  import {
8
8
  FatalBudgetExceededError,
9
9
  FatalCancellationError,
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-3RXUYQJI.js";
13
13
  import {
14
14
  runExitCleanup
15
- } from "./chunk-LSYVASZS.js";
15
+ } from "./chunk-QG2ACINA.js";
16
16
  import {
17
17
  writeStderrLine
18
18
  } from "./chunk-OWAK7LMW.js";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-4NFY2S7N.js";
6
6
  import {
7
7
  formatHistoryGapNotice
8
- } from "./chunk-5HWAJ4BK.js";
8
+ } from "./chunk-NAYPZ72V.js";
9
9
  import {
10
10
  isGoalStatusKind,
11
11
  isTerminalGoalStatusKind
@@ -19,12 +19,12 @@ import {
19
19
  setGoalTerminalObserver,
20
20
  setLastGoalTerminal,
21
21
  unregisterGoalHook
22
- } from "./chunk-YLL3SC5S.js";
22
+ } from "./chunk-DOA7MCDY.js";
23
23
  import {
24
24
  apiActivityTracker,
25
25
  formatVisionBridgeNoticeDisplay,
26
26
  isVisionBridgeNoticeDisplay
27
- } from "./chunk-ZPGMDT4S.js";
27
+ } from "./chunk-O656RSMC.js";
28
28
  import {
29
29
  ToolNames
30
30
  } from "./chunk-D7D7RXIJ.js";
@@ -2863,7 +2863,7 @@ async function extractMetadata(conversation, config) {
2863
2863
  const gitBranch = firstRecord?.gitBranch;
2864
2864
  let gitRepo;
2865
2865
  if (cwd) {
2866
- const { getGitRepoName } = await import("./deferred-core-runtime-O54YPTBU.js");
2866
+ const { getGitRepoName } = await import("./deferred-core-runtime-KXN7HLN7.js");
2867
2867
  gitRepo = getGitRepoName(cwd);
2868
2868
  }
2869
2869
  let model;
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-DP3IHZGG.js";
6
6
  import {
7
7
  t
8
- } from "./chunk-K64OI7S7.js";
8
+ } from "./chunk-546CDN6D.js";
9
9
  import {
10
10
  getNpmCliPath
11
- } from "./chunk-CAX76R46.js";
11
+ } from "./chunk-ZQL73PPE.js";
12
12
  import {
13
13
  getPackageJson
14
14
  } from "./chunk-VJNBRRZG.js";
@@ -5,7 +5,7 @@ import {
5
5
  isTranscribableVoiceModel,
6
6
  readVoiceLanguage,
7
7
  resolveVoiceTransport
8
- } from "./chunk-TCOJPG2P.js";
8
+ } from "./chunk-7FUVSN4D.js";
9
9
  import {
10
10
  resolvePath
11
11
  } from "./chunk-JELIWHXD.js";
@@ -6,6 +6,10 @@ import {
6
6
  DEFAULT_MAX_RETRIES,
7
7
  resolveRequestTimeout
8
8
  } from "./chunk-GLNBDYUX.js";
9
+ import {
10
+ isQwenFamilyWireModel,
11
+ isTieredEffortWireModel
12
+ } from "./chunk-WOJZWRAZ.js";
9
13
  import {
10
14
  defaultOutputCeiling,
11
15
  hasExplicitOutputLimit,
@@ -7158,10 +7162,11 @@ var DashScopeOpenAICompatibleProvider = class _DashScopeOpenAICompatibleProvider
7158
7162
  if (hasQwenEffortConfig && "reasoning" in visionResult) {
7159
7163
  delete visionResult["reasoning"];
7160
7164
  }
7161
- return {
7162
- ...visionResult,
7163
- ...extraBody ? extraBody : {}
7164
- };
7165
+ return this.mergeExtraBodyAndResolveKnobs(
7166
+ visionResult,
7167
+ extraBody,
7168
+ request.model
7169
+ );
7165
7170
  }
7166
7171
  const dashscopeExtras = {
7167
7172
  preserve_thinking: true,
@@ -7178,25 +7183,107 @@ var DashScopeOpenAICompatibleProvider = class _DashScopeOpenAICompatibleProvider
7178
7183
  if (hasQwenEffortConfig && "reasoning" in result) {
7179
7184
  delete result["reasoning"];
7180
7185
  }
7181
- return {
7186
+ return this.mergeExtraBodyAndResolveKnobs(result, extraBody, request.model);
7187
+ }
7188
+ /**
7189
+ * Shared tail for the vision and text branches: merge user extra_body
7190
+ * last, then resolve thinking-knob conflicts against the wire model.
7191
+ */
7192
+ mergeExtraBodyAndResolveKnobs(result, extraBody, model) {
7193
+ const merged = {
7182
7194
  ...result,
7183
7195
  ...extraBody ? extraBody : {}
7184
7196
  };
7197
+ this.dropConflictingThinkingKnobs(model, merged);
7198
+ return merged;
7199
+ }
7200
+ resolveWireModel(model) {
7201
+ return (model ?? this.contentGeneratorConfig.model ?? "").toLowerCase();
7185
7202
  }
7203
+ /**
7204
+ * Translate the unified reasoning effort into the wire shape the model
7205
+ * accepts. The qwen3.8-max family takes the tiered `reasoning_effort`
7206
+ * directly; older qwen hybrid models expose only the on/off
7207
+ * `enable_thinking` switch, so the effort ladder collapses to on/off
7208
+ * there. Gated to qwen-family wire models (mirroring the pipeline's
7209
+ * disable gate) so the qwen-specific fields never leak to a non-qwen
7210
+ * model sharing the DashScope endpoint.
7211
+ */
7186
7212
  buildQwenEffortConfig(model) {
7187
7213
  const reasoning = this.contentGeneratorConfig.reasoning;
7188
7214
  if (!reasoning || reasoning.effort === void 0) {
7189
7215
  return {};
7190
7216
  }
7191
- const wireModel = (model ?? this.contentGeneratorConfig.model ?? "").toLowerCase();
7192
- if (wireModel === "qwen3.8-max" || wireModel === "qwen3.8-max-preview") {
7217
+ const wireModel = this.resolveWireModel(model);
7218
+ if (isTieredEffortWireModel(wireModel)) {
7193
7219
  return { reasoning_effort: reasoning.effort };
7194
7220
  }
7195
- if (wireModel.startsWith("qwen") || wireModel === "coder-model") {
7221
+ if (isQwenFamilyWireModel(wireModel)) {
7196
7222
  return { enable_thinking: true };
7197
7223
  }
7198
7224
  return {};
7199
7225
  }
7226
+ /**
7227
+ * Resolve thinking knobs that conflict with a shipping `reasoning_effort`.
7228
+ * Preset extra_body injects `enable_thinking` for models declared with
7229
+ * enableThinking (provider-config.ts), and user extra_body merges last.
7230
+ * Only the qwen3.8-max family reads `reasoning_effort` itself — there the
7231
+ * tier ships alone: an `enable_thinking: true` alongside it is a second
7232
+ * competing knob (the shape the nested-`reasoning` strip in buildRequest
7233
+ * exists to prevent), and DashScope rejects `reasoning_effort` combined
7234
+ * with `thinking_budget`. An explicit `enable_thinking: false` is the
7235
+ * documented extra_body escape hatch winning over the config tier, so it
7236
+ * is honoured as the family's canonical disable (`reasoning_effort:
7237
+ * 'none'`, preserved by the pipeline's disable strip) rather than
7238
+ * silently deleted. Older qwen hybrids read `enable_thinking` /
7239
+ * `thinking_budget`, not `reasoning_effort`, so when an opaque
7240
+ * reasoning_effort override conflicts with a meaningful thinking_budget
7241
+ * the inert field goes and the knobs the model reads survive. Non-qwen
7242
+ * models treat `reasoning_effort` as an opaque sampling override and
7243
+ * keep every knob.
7244
+ */
7245
+ dropConflictingThinkingKnobs(model, merged) {
7246
+ const effort = merged["reasoning_effort"];
7247
+ if (typeof effort !== "string" || effort === "none") {
7248
+ return;
7249
+ }
7250
+ const wireModel = this.resolveWireModel(model);
7251
+ if (!isQwenFamilyWireModel(wireModel)) {
7252
+ return;
7253
+ }
7254
+ const dropped = [];
7255
+ if (isTieredEffortWireModel(wireModel)) {
7256
+ if ("enable_thinking" in merged) {
7257
+ if (merged["enable_thinking"] === false) {
7258
+ merged["reasoning_effort"] = "none";
7259
+ }
7260
+ dropped.push("enable_thinking");
7261
+ }
7262
+ if ("thinking_budget" in merged) {
7263
+ dropped.push("thinking_budget");
7264
+ }
7265
+ } else if ("thinking_budget" in merged) {
7266
+ dropped.push("reasoning_effort");
7267
+ }
7268
+ if (dropped.length === 0) {
7269
+ return;
7270
+ }
7271
+ for (const key of dropped) {
7272
+ delete merged[key];
7273
+ }
7274
+ if (!this.conflictingKnobDropWarned) {
7275
+ this.conflictingKnobDropWarned = true;
7276
+ debugLogger.warn(
7277
+ "DashScope: dropped extra_body thinking knobs that conflict with reasoning_effort",
7278
+ {
7279
+ model: wireModel,
7280
+ reasoningEffort: merged["reasoning_effort"],
7281
+ dropped
7282
+ }
7283
+ );
7284
+ }
7285
+ }
7286
+ conflictingKnobDropWarned = false;
7200
7287
  buildMetadata(userPromptId) {
7201
7288
  const channel = this.cliConfig.getChannel?.();
7202
7289
  return {
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  getEffectiveSupportedModes
5
- } from "./chunk-C6ARWPCG.js";
5
+ } from "./chunk-AVDEBBMI.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-6PEXNQTX.js";
9
9
  import {
10
10
  isWorkspaceTrusted
11
- } from "./chunk-B3EBIZUY.js";
11
+ } from "./chunk-72DZPDH4.js";
12
12
  import {
13
13
  require_main
14
14
  } from "./chunk-5M6IDOMF.js";
@@ -8,14 +8,14 @@ import {
8
8
  } from "./chunk-Z4X5MTRT.js";
9
9
  import {
10
10
  STATUS_SCHEMA_VERSION
11
- } from "./chunk-PDDYAXL2.js";
11
+ } from "./chunk-WIRAPZ62.js";
12
12
  import {
13
13
  loadSettings
14
- } from "./chunk-RM3F46UT.js";
14
+ } from "./chunk-YUVTZ4UH.js";
15
15
  import {
16
16
  SkillManager,
17
17
  isSafeModeEnv
18
- } from "./chunk-YLL3SC5S.js";
18
+ } from "./chunk-DOA7MCDY.js";
19
19
  import {
20
20
  writeStderrLine
21
21
  } from "./chunk-OWAK7LMW.js";
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  loadSettings,
8
8
  saveSettings
9
- } from "./chunk-RM3F46UT.js";
9
+ } from "./chunk-YUVTZ4UH.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -2,20 +2,20 @@
2
2
  "use strict";
3
3
  import {
4
4
  appEvents
5
- } from "./chunk-GP4IMBX5.js";
5
+ } from "./chunk-XOZ2R6XI.js";
6
6
  import {
7
7
  CUSTOM_SANDBOX_IMAGE_ENV_VAR,
8
8
  HOST_UPDATE_RELAUNCH_ENV_VAR,
9
9
  SKIP_UPDATE_CHECK_ENV_VAR,
10
10
  requestUpdateOnExit
11
- } from "./chunk-D7QAZ5DF.js";
11
+ } from "./chunk-CXYBX4AL.js";
12
12
  import {
13
13
  loadUndici
14
14
  } from "./chunk-3Z43GZUQ.js";
15
15
  import {
16
16
  IdeClient,
17
17
  getAllProviderBaseUrls
18
- } from "./chunk-YLL3SC5S.js";
18
+ } from "./chunk-DOA7MCDY.js";
19
19
  import {
20
20
  detectRuntime,
21
21
  getOrCreateSharedDispatcher,
@@ -231,11 +231,11 @@ function startPostRenderPrefetches(config, settings, options = {}) {
231
231
  { updateEventEmitter },
232
232
  { t }
233
233
  ] = await Promise.all([
234
- import("./updateCheck-ZXRCGY66.js"),
235
- import("./handleAutoUpdate-QBMPRTSQ.js"),
236
- import("./installationInfo-OFDYLDFD.js"),
234
+ import("./updateCheck-FDAVGOFT.js"),
235
+ import("./handleAutoUpdate-TOO52D6H.js"),
236
+ import("./installationInfo-AEGIIQAT.js"),
237
237
  import("./updateEventEmitter-5MKC7BLQ.js"),
238
- import("./i18n-LDUW5DMN.js")
238
+ import("./i18n-ARJYXZQ5.js")
239
239
  ]);
240
240
  const updateCheckSkippedMessage = /* @__PURE__ */ __name((error) => t("Update check skipped ({{reason}}) \u2014 run /update to retry.", {
241
241
  reason: describeUpdateCheckFailure(error)
@@ -308,7 +308,7 @@ ${t(
308
308
  state: "connecting"
309
309
  });
310
310
  try {
311
- const { connectIdeForStartup } = await import("./initializer-74A7DMMD.js");
311
+ const { connectIdeForStartup } = await import("./initializer-CEZ4RPQV.js");
312
312
  await withTimeout(
313
313
  connectIdeForStartup(config),
314
314
  "ide_connect",
@@ -332,7 +332,7 @@ ${t(
332
332
  }
333
333
  if (config.isInteractive()) {
334
334
  runDeferredTask("background_housekeeping", async () => {
335
- const { startBackgroundHousekeeping } = await import("./scheduler-T7AV37LD.js");
335
+ const { startBackgroundHousekeeping } = await import("./scheduler-VFUVGDE5.js");
336
336
  startBackgroundHousekeeping(config, settings);
337
337
  });
338
338
  }
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-K64OI7S7.js";
5
+ } from "./chunk-546CDN6D.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -14,7 +14,7 @@ import {
14
14
  init_esbuild_shims();
15
15
  async function getCliVersion() {
16
16
  const pkgJson = await getPackageJson();
17
- return "0.21.5";
17
+ return "0.21.6-preview.0";
18
18
  }
19
19
  __name(getCliVersion, "getCliVersion");
20
20
 
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  getCliVersion
5
- } from "./chunk-IZ2CMEYO.js";
5
+ } from "./chunk-NKST54XA.js";
6
6
  import {
7
7
  IdeClient,
8
8
  formatMemoryUsage
9
- } from "./chunk-YLL3SC5S.js";
9
+ } from "./chunk-DOA7MCDY.js";
10
10
  import {
11
11
  createDebugLogger
12
12
  } from "./chunk-3RXUYQJI.js";
@@ -25,7 +25,7 @@ import { execFile } from "node:child_process";
25
25
 
26
26
  // packages/cli/src/generated/git-commit.ts
27
27
  init_esbuild_shims();
28
- var GIT_COMMIT_INFO = "99f16aec0";
28
+ var GIT_COMMIT_INFO = "c1b61a1d4";
29
29
 
30
30
  // packages/cli/src/utils/systemInfo.ts
31
31
  var debugLogger = createDebugLogger("STATUS");
@@ -1,5 +1,8 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ defaultModalities
5
+ } from "./chunk-WOJZWRAZ.js";
3
6
  import {
4
7
  Mutex
5
8
  } from "./chunk-VGC4I5JJ.js";
@@ -19,15 +22,12 @@ import {
19
22
  } from "./chunk-D7D7RXIJ.js";
20
23
  import {
21
24
  DEFAULT_QWEN_MODEL
22
- } from "./chunk-XD2PNH3K.js";
25
+ } from "./chunk-P7LKADIT.js";
23
26
  import {
24
27
  estimateTextTokens,
25
28
  generateLegacyMcpToolName,
26
29
  normalizeToolNameForProvider
27
30
  } from "./chunk-46UV252V.js";
28
- import {
29
- normalize
30
- } from "./chunk-ZBVS26BY.js";
31
31
  import {
32
32
  InstallationManager
33
33
  } from "./chunk-TYERNYH4.js";
@@ -8982,7 +8982,7 @@ async function readTextCursorWindowFromHandle(fileHandle, request2) {
8982
8982
  let truncatedByBytes = false;
8983
8983
  let stop = false;
8984
8984
  let skipRestOfLine = false;
8985
- let sawCrlf = false;
8985
+ let sawCrlf = await precededByCrlfTerminator(fileHandle, startOffset);
8986
8986
  const emit = /* @__PURE__ */ __name((line, hadNewline) => {
8987
8987
  const separator = lines.length > 0 ? 1 : 0;
8988
8988
  const lineBytes = Buffer.byteLength(line, "utf8");
@@ -9069,6 +9069,9 @@ async function readTextCursorWindowFromHandle(fileHandle, request2) {
9069
9069
  true
9070
9070
  );
9071
9071
  consumedBytes = resumeAt - startOffset;
9072
+ if (!sawCrlf) {
9073
+ sawCrlf = await precededByCrlfTerminator(fileHandle, resumeAt);
9074
+ }
9072
9075
  }
9073
9076
  const content = lines.join("\n");
9074
9077
  const nextOffset = startOffset + consumedBytes;
@@ -9085,6 +9088,14 @@ async function readTextCursorWindowFromHandle(fileHandle, request2) {
9085
9088
  __name(readTextCursorWindowFromHandle, "readTextCursorWindowFromHandle");
9086
9089
  var UTF8_BOM_BYTES = 3;
9087
9090
  var LINE_FEED = 10;
9091
+ var CARRIAGE_RETURN = 13;
9092
+ async function precededByCrlfTerminator(fileHandle, startOffset) {
9093
+ if (startOffset < 2) return false;
9094
+ const probe = Buffer.alloc(2);
9095
+ const { bytesRead } = await fileHandle.read(probe, 0, 2, startOffset - 2);
9096
+ return bytesRead === 2 && probe[0] === CARRIAGE_RETURN && probe[1] === LINE_FEED;
9097
+ }
9098
+ __name(precededByCrlfTerminator, "precededByCrlfTerminator");
9088
9099
  async function hasUtf8Bom(fileHandle, fileSize) {
9089
9100
  if (fileSize < UTF8_BOM_BYTES) return false;
9090
9101
  const probe = Buffer.alloc(UTF8_BOM_BYTES);
@@ -14451,6 +14462,9 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
14451
14462
  if (isAbortError(error)) {
14452
14463
  return false;
14453
14464
  }
14465
+ if (this.cliConfig?.getToolInvocationGuard?.()) {
14466
+ return false;
14467
+ }
14454
14468
  if (getMCPServerStatus(this.serverName) === "disconnected" /* DISCONNECTED */) {
14455
14469
  return true;
14456
14470
  }
@@ -16086,92 +16100,6 @@ __name(getFileReadDefaultPermission, "getFileReadDefaultPermission");
16086
16100
  // packages/core/src/services/visionBridge/vision-bridge-service.ts
16087
16101
  init_esbuild_shims();
16088
16102
 
16089
- // packages/core/src/core/modalityDefaults.ts
16090
- init_esbuild_shims();
16091
- var FULL_MULTIMODAL = {
16092
- image: true,
16093
- pdf: true,
16094
- audio: true,
16095
- video: true
16096
- };
16097
- var MODALITY_PATTERNS = [
16098
- // -------------------
16099
- // Google Gemini — full multimodal
16100
- // -------------------
16101
- [/^gemini-3/, FULL_MULTIMODAL],
16102
- [/^gemini-/, FULL_MULTIMODAL],
16103
- // -------------------
16104
- // OpenAI — image by default for all gpt/o-series models
16105
- // -------------------
16106
- [/^gpt-5/, { image: true }],
16107
- [/^gpt-/, { image: true }],
16108
- [/^o\d/, { image: true }],
16109
- // -------------------
16110
- // Anthropic Claude — image + pdf
16111
- // -------------------
16112
- [/^claude-/, { image: true, pdf: true }],
16113
- // -------------------
16114
- // Alibaba / Qwen
16115
- // -------------------
16116
- // Qwen Plus models: image + video support
16117
- [/^qwen3\.5-plus/, { image: true, video: true }],
16118
- [/^qwen3\.6-plus/, { image: true, video: true }],
16119
- [/^qwen3\.7-plus/, { image: true, video: true }],
16120
- // Qwen Max models (3.8+): image support
16121
- [/^qwen3\.8-max/, { image: true }],
16122
- [/^coder-model$/, { image: true, video: true }],
16123
- // Qwen VL (vision-language) models: image + video
16124
- [/^qwen-vl-/, { image: true, video: true }],
16125
- [/^qwen3-vl-/, { image: true, video: true }],
16126
- // Qwen coder / text models: text-only
16127
- [/^qwen3-coder-/, {}],
16128
- // Qwen3.6-35B-A3B (local quant variants) — image + video
16129
- [/^qwen3\.6-35b/, { image: true, video: true }],
16130
- [/^qwen/, {}],
16131
- // -------------------
16132
- // DeepSeek — text-only
16133
- // -------------------
16134
- [/^deepseek/, {}],
16135
- // -------------------
16136
- // Zhipu GLM
16137
- // -------------------
16138
- [/^glm-4\.5v/, { image: true }],
16139
- [/^glm-5(?:-|$)/, {}],
16140
- [/^glm-/, {}],
16141
- // -------------------
16142
- // MiniMax — M3 supports image + video input; older models default to text-only
16143
- // -------------------
16144
- [/^minimax-m3/i, { image: true, video: true }],
16145
- [/^minimax-/, {}],
16146
- // -------------------
16147
- // Moonshot / Kimi
16148
- // -------------------
16149
- [/^kimi-k3/, { image: true, video: true }],
16150
- [/^kimi-k2\./, { image: true, video: true }],
16151
- [/^kimi-/, {}],
16152
- // -------------------
16153
- // ByteDance Doubao — Seed-series and *-vision / *-vl models accept image
16154
- // input; other Doubao models (pro / lite / text) are text-only.
16155
- // (QwenLM/qwen-code#4876)
16156
- // -------------------
16157
- // seedance (text→video) and seedream (text→image) are generation models with
16158
- // text-only input — exclude them before the multimodal Seed chat series.
16159
- [/^doubao-seed(ance|ream)/, {}],
16160
- [/^doubao-seed/, { image: true }],
16161
- [/^doubao-.*(vision|vl)/, { image: true }],
16162
- [/^doubao/, {}]
16163
- ];
16164
- function defaultModalities(model) {
16165
- const norm = normalize(model);
16166
- for (const [regex, modalities] of MODALITY_PATTERNS) {
16167
- if (regex.test(norm)) {
16168
- return { ...modalities };
16169
- }
16170
- }
16171
- return {};
16172
- }
16173
- __name(defaultModalities, "defaultModalities");
16174
-
16175
16103
  // packages/core/src/utils/sideQuery.ts
16176
16104
  init_esbuild_shims();
16177
16105
  import { readFile as readFile2 } from "node:fs/promises";
@@ -17025,7 +16953,6 @@ var ReadFileTool = class _ReadFileTool extends BaseDeclarativeTool {
17025
16953
  };
17026
16954
 
17027
16955
  export {
17028
- defaultModalities,
17029
16956
  runSideQuery,
17030
16957
  VISION_BRIDGE_MAX_IMAGES,
17031
16958
  VISION_BRIDGE_MAX_IMAGE_BASE64_BYTES,
@@ -407,18 +407,18 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
407
407
  try {
408
408
  if (authType === "openai" /* USE_OPENAI */) {
409
409
  loadBaseGenerator = /* @__PURE__ */ __name(async () => {
410
- const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-2AEXDN55.js");
410
+ const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-63CVR33K.js");
411
411
  return createOpenAIContentGenerator(generatorConfig, config);
412
412
  }, "loadBaseGenerator");
413
413
  } else if (authType === "qwen-oauth" /* QWEN_OAUTH */) {
414
- const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-2KKPYA5J.js");
414
+ const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-SY2O3NRR.js");
415
415
  try {
416
416
  const qwenClient = await getQwenOauthClient(
417
417
  config,
418
418
  isInitialAuth ? { requireCachedCredentials: true } : void 0
419
419
  );
420
420
  loadBaseGenerator = /* @__PURE__ */ __name(async () => {
421
- const { QwenContentGenerator } = await import("./qwenContentGenerator-2FESCF27.js");
421
+ const { QwenContentGenerator } = await import("./qwenContentGenerator-JINBVCH6.js");
422
422
  return new QwenContentGenerator(qwenClient, generatorConfig, config);
423
423
  }, "loadBaseGenerator");
424
424
  } catch (error) {
@@ -434,7 +434,7 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
434
434
  }, "loadBaseGenerator");
435
435
  } else if (authType === "gemini" /* USE_GEMINI */ || authType === "vertex-ai" /* USE_VERTEX_AI */) {
436
436
  loadBaseGenerator = /* @__PURE__ */ __name(async () => {
437
- const { createGeminiContentGenerator } = await import("./geminiContentGenerator-LLLZBOUG.js");
437
+ const { createGeminiContentGenerator } = await import("./geminiContentGenerator-TTM4TZJM.js");
438
438
  return createGeminiContentGenerator(generatorConfig, config);
439
439
  }, "loadBaseGenerator");
440
440
  } else {
@@ -450,7 +450,7 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
450
450
  try {
451
451
  const [baseGenerator, { LoggingContentGenerator }] = await Promise.all([
452
452
  loadBaseGenerator(),
453
- import("./loggingContentGenerator-B6B5EGB3.js")
453
+ import("./loggingContentGenerator-I7QDXS43.js")
454
454
  ]);
455
455
  return new LoggingContentGenerator(
456
456
  baseGenerator,
@@ -2,13 +2,13 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-K64OI7S7.js";
5
+ } from "./chunk-546CDN6D.js";
6
6
  import {
7
7
  SessionReferenceService,
8
8
  SessionService,
9
9
  readManyFiles,
10
10
  stripTerminalControlSequences
11
- } from "./chunk-YLL3SC5S.js";
11
+ } from "./chunk-DOA7MCDY.js";
12
12
  import {
13
13
  emptyMcpResourceText,
14
14
  formatMcpResourceContents,
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-ZPJWUGCS.js";
17
17
  import {
18
18
  shouldRunVisionBridge
19
- } from "./chunk-ZPGMDT4S.js";
19
+ } from "./chunk-O656RSMC.js";
20
20
  import {
21
21
  Storage,
22
22
  getErrorMessage,
@@ -64,7 +64,7 @@ async function runExitCleanup(options = {}) {
64
64
  }
65
65
  __name(runExitCleanup, "runExitCleanup");
66
66
  async function cleanupCheckpoints() {
67
- const { Storage } = await import("./deferred-core-runtime-O54YPTBU.js");
67
+ const { Storage } = await import("./deferred-core-runtime-KXN7HLN7.js");
68
68
  const storage = new Storage(process.cwd());
69
69
  const tempDir = storage.getProjectTempDir();
70
70
  const checkpointsDir = join(tempDir, "checkpoints");