@qwen-code/qwen-code 0.21.13 → 0.21.14-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 (293) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +13 -7
  2. package/bundled/qc-helper/docs/features/code-review.md +5 -1
  3. package/bundled/qc-helper/docs/features/commands.md +120 -8
  4. package/bundled/qc-helper/docs/features/sub-agents.md +2 -2
  5. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
  6. package/bundled/qc-helper/docs/qwen-serve.md +20 -3
  7. package/bundled/review/SKILL.md +50 -30
  8. package/chunks/{MaxSizedBox-UQALOVVT.js → MaxSizedBox-3PZITE2Y.js} +24 -23
  9. package/chunks/{StandaloneSessionPicker-KEGXNUG6.js → StandaloneSessionPicker-2C34PNGO.js} +41 -40
  10. package/chunks/{acp-startup-profiler-NMDXYGDN.js → acp-startup-profiler-HUYGO57H.js} +2 -2
  11. package/chunks/{acpAgent-XPES32S7.js → acpAgent-3J4NHAYT.js} +626 -141
  12. package/chunks/{agent-DPTOZFEM.js → agent-VFX4RPP5.js} +22 -21
  13. package/chunks/{agent-headless-GJCQMURW.js → agent-headless-6WCF4J6N.js} +22 -21
  14. package/chunks/{anthropicContentGenerator-G7BVXTKN.js → anthropicContentGenerator-M7XRJMSK.js} +3 -3
  15. package/chunks/{bridge-YNQBAA4Z.js → bridge-XR5ZSR7U.js} +26 -25
  16. package/chunks/{ca-4CQ6MYNQ.js → ca-SLZJD6QH.js} +8 -0
  17. package/chunks/{channel-management-service-GWY2GAIC.js → channel-management-service-X6LCQUAD.js} +1 -1
  18. package/chunks/{channel-settings-store-WNWYFHG7.js → channel-settings-store-Z7BUEUJE.js} +30 -29
  19. package/chunks/{channel-worker-group-7LXCMZ77.js → channel-worker-group-TJ35JDPE.js} +2 -2
  20. package/chunks/{channel-worker-manager-RYEME4ZZ.js → channel-worker-manager-G5LKWGOG.js} +2 -2
  21. package/chunks/{chunk-MLPXSYXR.js → chunk-25GHLMQQ.js} +25 -16
  22. package/chunks/chunk-2C6HJMG3.js +757 -0
  23. package/chunks/{chunk-TUGSVUJB.js → chunk-2JXDFSVE.js} +5 -5
  24. package/chunks/{chunk-AS5IN4GK.js → chunk-2OA3JMRD.js} +3 -3
  25. package/chunks/chunk-3PWCMXIR.js +9169 -0
  26. package/chunks/{chunk-U3VNBPUO.js → chunk-4KQ2TI2K.js} +2 -2
  27. package/chunks/{chunk-NEFOOD54.js → chunk-4V4DFJBS.js} +2 -2
  28. package/chunks/{chunk-OMLJNPBE.js → chunk-4ZMS3JCR.js} +1 -0
  29. package/chunks/{chunk-PP4FUZNV.js → chunk-55PIFSP2.js} +2 -2
  30. package/chunks/{chunk-3U3VAL47.js → chunk-57KOJ2KZ.js} +1 -1
  31. package/chunks/{chunk-A4QRWUDE.js → chunk-5IYS4WWR.js} +1 -1
  32. package/chunks/{chunk-TS6625XH.js → chunk-5MK45KZ3.js} +9 -5
  33. package/chunks/{chunk-CU6GJD55.js → chunk-6DFPR7CS.js} +1 -1
  34. package/chunks/{chunk-V57QC6WW.js → chunk-6LAPGPVA.js} +5 -3
  35. package/chunks/{chunk-OOQUVWIG.js → chunk-6PDOHRN6.js} +4 -4
  36. package/chunks/{chunk-UZPM4XHR.js → chunk-6VDPDHIP.js} +29 -8
  37. package/chunks/{chunk-O4D7SPJN.js → chunk-73G3Z7QS.js} +3 -3
  38. package/chunks/{chunk-QIH2HAEN.js → chunk-7OCSX7FC.js} +1 -1
  39. package/chunks/{chunk-OVZPVYZB.js → chunk-AKBOLMUF.js} +95 -17
  40. package/chunks/{chunk-DGK6P3BQ.js → chunk-AQBHJ2IG.js} +10 -10
  41. package/chunks/{chunk-JNDY2MDR.js → chunk-BOJNAPUE.js} +1 -1
  42. package/chunks/{chunk-NHDR76JX.js → chunk-BQWNIPTE.js} +1 -1
  43. package/chunks/{chunk-AA2BEKV3.js → chunk-CH5OFRV7.js} +1 -1
  44. package/chunks/{chunk-MS7GNABG.js → chunk-CXJHQVEK.js} +8 -0
  45. package/chunks/{chunk-K5IDV3PC.js → chunk-D34RDOLP.js} +12 -2
  46. package/chunks/{chunk-OXCMMLED.js → chunk-DGJ7O55J.js} +1 -1
  47. package/chunks/{chunk-BKPPWD33.js → chunk-DRKYT2TR.js} +1 -1
  48. package/chunks/{chunk-P7MPQI75.js → chunk-DVR7XKO5.js} +1 -1
  49. package/chunks/{chunk-MRMJCLIY.js → chunk-DZCV3ZYU.js} +2 -2
  50. package/chunks/{chunk-EZ5RP345.js → chunk-E5RS7LF4.js} +40 -9
  51. package/chunks/{chunk-4NFY2S7N.js → chunk-E7REAOTN.js} +15 -0
  52. package/chunks/chunk-EOCQCNV4.js +3887 -0
  53. package/chunks/{chunk-BVJS5BSP.js → chunk-FCTLOVYW.js} +1 -1
  54. package/chunks/{chunk-DGZEMW5R.js → chunk-FS5NGKWC.js} +1 -1
  55. package/chunks/{chunk-XHRY7BXD.js → chunk-G6FFFICU.js} +3 -3
  56. package/chunks/{chunk-NM5V5OVW.js → chunk-GV3OIADZ.js} +2 -2
  57. package/chunks/{chunk-QV5YN5YD.js → chunk-HGPMOXLZ.js} +5 -5
  58. package/chunks/{chunk-GMIEIY3Y.js → chunk-I3N2Z25H.js} +1 -1
  59. package/chunks/{chunk-RIAABG2K.js → chunk-I7NTHW4C.js} +1 -1
  60. package/chunks/{chunk-HUTNYWBG.js → chunk-IOTPI425.js} +18 -10
  61. package/chunks/{chunk-ZYYTZUI2.js → chunk-ISRHAMNL.js} +3 -3
  62. package/chunks/{chunk-BHILXOC3.js → chunk-J63PKMYA.js} +1 -1
  63. package/chunks/{chunk-KD5BOPLP.js → chunk-J6YS7Z25.js} +98 -4
  64. package/chunks/{chunk-GO7STP6N.js → chunk-K3CECR5C.js} +4 -4
  65. package/chunks/{chunk-RVOJ2FBP.js → chunk-KC4WMLZO.js} +1486 -10574
  66. package/chunks/{chunk-IGGGG5CX.js → chunk-KSGWAYNE.js} +4580 -1652
  67. package/chunks/{chunk-X26JYGTD.js → chunk-L6CCLB3G.js} +1 -1
  68. package/chunks/{chunk-M6NDLY2T.js → chunk-LD5VIJ7S.js} +1 -1
  69. package/chunks/{chunk-ZYBBISBY.js → chunk-LLR424CQ.js} +15 -12
  70. package/chunks/{chunk-JUEPY766.js → chunk-LRDB2OLB.js} +2 -2
  71. package/chunks/{chunk-PQ36L4F5.js → chunk-MCG53LWC.js} +1 -1
  72. package/chunks/{chunk-OD2WU5QY.js → chunk-NRPXRNN4.js} +1 -1
  73. package/chunks/{chunk-76J3IJ3M.js → chunk-NV6LW6FT.js} +3 -3
  74. package/chunks/{chunk-CKSJECTU.js → chunk-NVRMCWTP.js} +8 -4
  75. package/chunks/{chunk-Y3YCSWG5.js → chunk-OBJYN4MX.js} +1 -1
  76. package/chunks/{chunk-WFSTRPRO.js → chunk-OJOP26ET.js} +1 -1
  77. package/chunks/{chunk-A267JX7H.js → chunk-OLZSWUZR.js} +6 -6
  78. package/chunks/{chunk-TIGA2IVL.js → chunk-OO4FKHLO.js} +2 -2
  79. package/chunks/{chunk-OY5RNSV4.js → chunk-OSAFWBNR.js} +3 -3
  80. package/chunks/{chunk-BZ263IKX.js → chunk-OVY67CYC.js} +1 -1
  81. package/chunks/{chunk-YEYY7TEP.js → chunk-P425IVUK.js} +5 -5
  82. package/chunks/{chunk-AFSG32D5.js → chunk-PMS7O6SA.js} +1 -1
  83. package/chunks/{chunk-6ORZ2EDC.js → chunk-PPTM4O4R.js} +1 -1
  84. package/chunks/{chunk-JOOFMXGF.js → chunk-QECSDJET.js} +5 -5
  85. package/chunks/{chunk-CZBYX5MY.js → chunk-QEJZUXSK.js} +1 -1
  86. package/chunks/{chunk-4PKCUT7F.js → chunk-QIHHJKXT.js} +6 -6
  87. package/chunks/{chunk-QRCNA3SR.js → chunk-RAQBBGS6.js} +49 -69
  88. package/chunks/{chunk-M732YJPW.js → chunk-RXHBTKMG.js} +2 -2
  89. package/chunks/{chunk-XIT3GURH.js → chunk-S6CXQKDD.js} +3 -3
  90. package/chunks/{chunk-GGDBMYGZ.js → chunk-SA7GBPEA.js} +3 -3
  91. package/chunks/{chunk-7UXUJ5T3.js → chunk-SBRIBTYN.js} +1 -1
  92. package/chunks/{chunk-MC4TLKEI.js → chunk-SGLPDKRT.js} +2 -2
  93. package/chunks/{chunk-WSH6GRKG.js → chunk-SLILKYV2.js} +2 -2
  94. package/chunks/{chunk-DXIBNLBZ.js → chunk-SNQZZ765.js} +1 -1
  95. package/chunks/{chunk-5EYKMUUY.js → chunk-SR2LYSMT.js} +1 -1
  96. package/chunks/{chunk-AW4TRXOC.js → chunk-TNPWODIZ.js} +1 -1
  97. package/chunks/{chunk-QF2NHSPB.js → chunk-U6RZRKNM.js} +233 -184
  98. package/chunks/{chunk-QNQAPSN2.js → chunk-UC67T4SF.js} +3 -1
  99. package/chunks/{chunk-O565M6A4.js → chunk-UYDGFWIJ.js} +199 -14
  100. package/chunks/{chunk-LJQAUZMR.js → chunk-VGAAAMRD.js} +925 -92
  101. package/chunks/{chunk-UKMR3CKV.js → chunk-VHPMDDPT.js} +3 -3
  102. package/chunks/{chunk-S5DWMTHO.js → chunk-WP4WIUOJ.js} +2 -0
  103. package/chunks/{chunk-25EYDK42.js → chunk-WPVUOVYX.js} +1 -1
  104. package/chunks/{chunk-AXN7UPYQ.js → chunk-WSSH2BNO.js} +1 -1
  105. package/chunks/{chunk-6YKYPVDV.js → chunk-WVIABDXV.js} +3 -3
  106. package/chunks/chunk-WZAD4ZNJ.js +59 -0
  107. package/chunks/{chunk-N5YPT6PH.js → chunk-X3YA3YGG.js} +7 -4
  108. package/chunks/{chunk-4S5337WV.js → chunk-XC377TLN.js} +4312 -2704
  109. package/chunks/{chunk-NNHNLJ2X.js → chunk-XO24LIZC.js} +240 -42
  110. package/chunks/{chunk-EL5SXY3T.js → chunk-XT4RKHVE.js} +2 -2
  111. package/chunks/{chunk-FDGGZIYW.js → chunk-YECDICIO.js} +2 -2
  112. package/chunks/{chunk-E23IPNGS.js → chunk-YFPZ3NNC.js} +12 -3
  113. package/chunks/{chunk-46UV252V.js → chunk-YHC2EYYG.js} +35 -38
  114. package/chunks/{chunk-V26NVGAU.js → chunk-YIWH3MKK.js} +8 -3
  115. package/chunks/{chunk-IWPYVAO2.js → chunk-YXC7JYUI.js} +2 -2
  116. package/chunks/{chunk-A4MFR4C5.js → chunk-ZIGC3MUS.js} +2 -4
  117. package/chunks/{chunk-ZZO74WKW.js → chunk-ZXEAEZFN.js} +24 -18
  118. package/chunks/{computer-use-77C5FHMW.js → computer-use-ABECHPS5.js} +22 -21
  119. package/chunks/{config-utils-IVHRSXWI.js → config-utils-NJQA5YLJ.js} +2 -2
  120. package/chunks/{contextCommand-PJ77GBWL.js → contextCommand-4CD5HZQQ.js} +24 -23
  121. package/chunks/{core-runtime-7VMIKUTG.js → core-runtime-2MOVQ4VX.js} +22 -21
  122. package/chunks/{create-sub-session-2L5MQRN4.js → create-sub-session-L6NNHG5N.js} +26 -24
  123. package/chunks/{cron-create-H7UEPDSN.js → cron-create-NFRZEOQX.js} +2 -2
  124. package/chunks/{cron-delete-6SZK7YFM.js → cron-delete-GFVSVO7C.js} +2 -2
  125. package/chunks/{cron-list-H25JIHEZ.js → cron-list-NRW34CLU.js} +2 -2
  126. package/chunks/{daemon-2KTG7ZBN.js → daemon-XH76IXOC.js} +356 -21
  127. package/chunks/{daemon-git-worktree-guard-DXYIMWFT.js → daemon-git-worktree-guard-BLXFEG4Q.js} +24 -23
  128. package/chunks/{daemon-status-provider-ZDOYJCU6.js → daemon-status-provider-XGD3TPTO.js} +31 -30
  129. package/chunks/{daemon-trust-policy-E67OYUK2.js → daemon-trust-policy-THEGCWPO.js} +29 -28
  130. package/chunks/{daemon-trust-policy-monitor-RYYGCQ3J.js → daemon-trust-policy-monitor-L7L4ACWQ.js} +29 -28
  131. package/chunks/{de-UBEBKG6V.js → de-AH4LGCF5.js} +8 -0
  132. package/chunks/{deferred-core-runtime-3SGXFXEQ.js → deferred-core-runtime-YQLHDUGE.js} +22 -21
  133. package/chunks/{discovery-ORA5J7YP.js → discovery-X2NV535U.js} +1 -1
  134. package/chunks/{dist-WJ4BHIEW.js → dist-ESS34DHC.js} +72 -0
  135. package/chunks/{earlyInputCapture-KJMLFVQV.js → earlyInputCapture-PCTXNW7N.js} +22 -21
  136. package/chunks/{edit-I4LQFAEC.js → edit-QX2EGWYW.js} +25 -23
  137. package/chunks/{en-X6YV7GME.js → en-MD3GP5YL.js} +8 -0
  138. package/chunks/{enter-worktree-YNPOJSRH.js → enter-worktree-EM3ZZ2SB.js} +22 -21
  139. package/chunks/{enterPlanMode-XCPK62ER.js → enterPlanMode-ESCMVAKB.js} +22 -21
  140. package/chunks/{environment-S7CTIHMX.js → environment-TOJI56YV.js} +25 -24
  141. package/chunks/{errors-7HB2AIDS.js → errors-DZ5FWWEM.js} +24 -23
  142. package/chunks/{exit-worktree-AIIY7SR6.js → exit-worktree-KUIJ36XA.js} +22 -21
  143. package/chunks/{exitPlanMode-R4JY7V2O.js → exitPlanMode-NFVY54FV.js} +22 -21
  144. package/chunks/{fast-path-NDJV3ZFJ.js → fast-path-JLQXJSH6.js} +3 -3
  145. package/chunks/{fast-path-settings-LNOFM2YP.js → fast-path-settings-WHX3J3ZI.js} +2 -2
  146. package/chunks/{fr-VENTC2BS.js → fr-ZEML2JWS.js} +8 -0
  147. package/chunks/{gemini-RSUFP5OE.js → gemini-I7OT4FWL.js} +62 -61
  148. package/chunks/{geminiContentGenerator-SQ5XBPZ7.js → geminiContentGenerator-GRIS77NJ.js} +3 -3
  149. package/chunks/{glob-J4RUJAHX.js → glob-7TBUUV6R.js} +22 -21
  150. package/chunks/{goal-tools-VHTNVOKK.js → goal-tools-K5OHOJ6B.js} +1 -1
  151. package/chunks/{grep-VJWPLFOT.js → grep-743SYWCZ.js} +22 -21
  152. package/chunks/{handleAutoUpdate-POCX2MNB.js → handleAutoUpdate-GAOYUYOD.js} +26 -25
  153. package/chunks/{i18n-RM5YOICI.js → i18n-2ITURYX6.js} +23 -22
  154. package/chunks/{image-gen-EXECB5XM.js → image-gen-4OIWDZD6.js} +2 -2
  155. package/chunks/{initializer-Z2AFGBNR.js → initializer-OC7LWA6X.js} +29 -28
  156. package/chunks/{installationInfo-4I5FXNMH.js → installationInfo-CO47QX3Q.js} +23 -22
  157. package/chunks/{ja-QHT4EQTO.js → ja-UM5B2HMD.js} +8 -0
  158. package/chunks/{list-ZMBFIGZA.js → list-ATR2SFWT.js} +32 -31
  159. package/chunks/{loadedSettingsAdapter-T6TV4YJ7.js → loadedSettingsAdapter-NK4B7AGK.js} +29 -28
  160. package/chunks/{loggingContentGenerator-WF4ZOJEZ.js → loggingContentGenerator-3WXBU5TQ.js} +12 -10
  161. package/chunks/{loop-wakeup-WQS6JYAG.js → loop-wakeup-HWVUU5CF.js} +3 -3
  162. package/chunks/{managed-npm-update-E7IW6N7V.js → managed-npm-update-4SSBWI2D.js} +23 -22
  163. package/chunks/{mcp-6UNYX4HG.js → mcp-C62AE2QI.js} +29 -28
  164. package/chunks/{monitor-EE2UYMGE.js → monitor-FEYEGASA.js} +22 -21
  165. package/chunks/{nonInteractiveCli-WAY237O4.js → nonInteractiveCli-AJEV5ZWO.js} +59 -57
  166. package/chunks/{notebook-edit-NTDY4QDU.js → notebook-edit-SLLTEY4O.js} +26 -24
  167. package/chunks/{openaiContentGenerator-YNFVJMRJ.js → openaiContentGenerator-WLUGIAPX.js} +12 -11
  168. package/chunks/{pidfile-4XSFLYBZ.js → pidfile-TV2VWUMB.js} +22 -21
  169. package/chunks/{processUtils-WDA2MJFD.js → processUtils-3IN2ZR55.js} +2 -2
  170. package/chunks/{pt-VL3I5RNY.js → pt-5BMJ3XYH.js} +8 -0
  171. package/chunks/{qwenContentGenerator-434M7QKY.js → qwenContentGenerator-GSGRFPJE.js} +25 -24
  172. package/chunks/{qwenOAuth2-GMYZOO6A.js → qwenOAuth2-JLSTIS4Z.js} +3 -3
  173. package/chunks/{read-file-TAFBKMNI.js → read-file-6PZZRGZZ.js} +9 -7
  174. package/chunks/{record-artifact-SEYFJEJF.js → record-artifact-GLU3UWBV.js} +3 -1
  175. package/chunks/{resumeHistoryUtils-EVG3WYK2.js → resumeHistoryUtils-5GEWKOOO.js} +25 -24
  176. package/chunks/{ripGrep-WOEK2PXS.js → ripGrep-FX7GBGFN.js} +22 -21
  177. package/chunks/{ru-4RCKL4PY.js → ru-6GL66ORV.js} +8 -0
  178. package/chunks/{run-qwen-serve-3QSGRXAN.js → run-qwen-serve-7RHU3NSV.js} +49 -40
  179. package/chunks/{runtime-5MLLZ7DC.js → runtime-EPOXAMLP.js} +32 -31
  180. package/chunks/{scheduler-RPBJ63CH.js → scheduler-F4Y7ENVV.js} +24 -23
  181. package/chunks/{sdk-exporters-http-XUVP63H6.js → sdk-exporters-http-NC746HLT.js} +2 -2
  182. package/chunks/{sdk-impl-YXUEN2Z2.js → sdk-impl-YVL7BP6Y.js} +2 -2
  183. package/chunks/{send-message-VZENRWRH.js → send-message-TNBG5EVA.js} +1 -1
  184. package/chunks/{serve-HS3XLPXU.js → serve-LQV4TN5A.js} +29 -30
  185. package/chunks/{server-TC4A7AAZ.js → server-IZCKLIYQ.js} +1267 -165
  186. package/chunks/{session-UBOFXVMN.js → session-52ZGTDVB.js} +60 -58
  187. package/chunks/{settings-D5644OM5.js → settings-WCVB34HW.js} +28 -27
  188. package/chunks/{shell-3PZULQQV.js → shell-33BIUBLH.js} +22 -21
  189. package/chunks/{skill-PEVVXQ3L.js → skill-IYVQ2QNK.js} +11 -9
  190. package/chunks/{skill-settings-J65JKKES.js → skill-settings-YG4ZS4OZ.js} +28 -27
  191. package/chunks/{spawnChannel-IYGXRHSQ.js → spawnChannel-BLA4YT4W.js} +24 -23
  192. package/chunks/{standalone-update-IFM53PE7.js → standalone-update-ALRIPWSM.js} +24 -23
  193. package/chunks/{startInteractiveUI-3AVH7L6H.js → startInteractiveUI-PISBXWKA.js} +262 -191
  194. package/chunks/{task-create-FCBDX7UH.js → task-create-EILHJJB7.js} +4 -4
  195. package/chunks/{task-list-YIYIUFUA.js → task-list-WGJR6YL5.js} +18 -4
  196. package/chunks/{task-update-MYPFVOVM.js → task-update-XZAHVXJ5.js} +79 -8
  197. package/chunks/{team-create-ZAIA7KAV.js → team-create-CIQDCC6A.js} +23 -23
  198. package/chunks/{team-delete-6UMU4XLS.js → team-delete-UEP4QOOT.js} +3 -3
  199. package/chunks/{team-plan-approval-UNIUS7OD.js → team-plan-approval-664XCRB4.js} +22 -21
  200. package/chunks/{terminal-image-renderer-G343P2RV.js → terminal-image-renderer-TEBO6ONY.js} +22 -21
  201. package/chunks/{theme-manager-Z3RIT7DB.js → theme-manager-3CIFH2JV.js} +22 -21
  202. package/chunks/{todoWrite-U2R4NVF4.js → todoWrite-ATS62CAP.js} +1 -1
  203. package/chunks/{tool-search-5R2OE4C7.js → tool-search-IJX5JHJB.js} +9 -7
  204. package/chunks/{total-session-admission-4KBHMQQ2.js → total-session-admission-XBK2NVRV.js} +26 -25
  205. package/chunks/{trustedFolders-LK6T4XC7.js → trustedFolders-OOFNLRWK.js} +23 -22
  206. package/chunks/{update-relaunch-UBKROIC6.js → update-relaunch-EIG7EYAQ.js} +5 -5
  207. package/chunks/{updateCheck-W4Y2GFSD.js → updateCheck-KYDCBLSF.js} +25 -24
  208. package/chunks/{useAutoAcceptIndicator-C7BEICBF.js → useAutoAcceptIndicator-RFX3KNBN.js} +31 -30
  209. package/chunks/{validateNonInterActiveAuth-LTEI2TB6.js → validateNonInterActiveAuth-MZXSAITU.js} +56 -54
  210. package/chunks/{version-G5A5DGVS.js → version-PJC6ZNXV.js} +1 -1
  211. package/chunks/{web-fetch-RTEQTR5Z.js → web-fetch-XXICVGKQ.js} +11 -8
  212. package/chunks/{web-search-5OXHEZPV.js → web-search-LHPM6QWC.js} +2 -2
  213. package/chunks/{workflow-ISQJHPG2.js → workflow-4CUO2BV7.js} +139 -37
  214. package/chunks/{workspace-providers-status-2ZPZPUPZ.js → workspace-providers-status-G4MUGH3X.js} +32 -31
  215. package/chunks/{workspace-registration-store-CYNY6IP6.js → workspace-registration-store-QMDMFWBE.js} +1 -1
  216. package/chunks/{workspace-registry-34GTUUHB.js → workspace-registry-FKBB4MZK.js} +26 -25
  217. package/chunks/{workspace-service-XCDQLE2Y.js → workspace-service-TIDTTA65.js} +33 -32
  218. package/chunks/{workspace-skills-status-RS4O7AIJ.js → workspace-skills-status-LBC2TZKM.js} +30 -29
  219. package/chunks/{workspace-trust-reconciler-AYGXC7A3.js → workspace-trust-reconciler-4KJ567XP.js} +33 -32
  220. package/chunks/{write-file-EWXKVVXF.js → write-file-R6LAEER5.js} +22 -21
  221. package/chunks/{zh-TW-SQ4HTSCW.js → zh-TW-LVLBK4KF.js} +8 -0
  222. package/chunks/{zh-LMSTK4WD.js → zh-UBMWS2BJ.js} +8 -0
  223. package/chunks/{zoom-image-4BFYJ3HG.js → zoom-image-XLCK6DDK.js} +14 -11
  224. package/cli.js +13 -13
  225. package/locales/ca.js +13 -0
  226. package/locales/de.js +12 -0
  227. package/locales/en.js +11 -0
  228. package/locales/fr.js +13 -0
  229. package/locales/ja.js +13 -0
  230. package/locales/pt.js +12 -0
  231. package/locales/ru.js +12 -0
  232. package/locales/zh-TW.js +11 -0
  233. package/locales/zh.js +11 -0
  234. package/package.json +3 -3
  235. package/web-shell/assets/{arc-CgOpDKvm.js → arc-DItbX0DI.js} +1 -1
  236. package/web-shell/assets/{architectureDiagram-3BPJPVTR-0Ag_m34F.js → architectureDiagram-3BPJPVTR-CmnIlH8y.js} +1 -1
  237. package/web-shell/assets/{blockDiagram-GPEHLZMM-IwTwFau0.js → blockDiagram-GPEHLZMM-pObnB9kw.js} +1 -1
  238. package/web-shell/assets/{c4Diagram-AAUBKEIU-DLa5GUv8.js → c4Diagram-AAUBKEIU-BNBmMS0Y.js} +1 -1
  239. package/web-shell/assets/channel-hZnMfWA9.js +1 -0
  240. package/web-shell/assets/{chunk-2J33WTMH-DcYP-WFG.js → chunk-2J33WTMH-Dz4JBOO6.js} +1 -1
  241. package/web-shell/assets/{chunk-4BX2VUAB-C8MVPMiQ.js → chunk-4BX2VUAB-Cz2GnvAR.js} +1 -1
  242. package/web-shell/assets/{chunk-55IACEB6-BUi4Yfv3.js → chunk-55IACEB6-CC6kOQYx.js} +1 -1
  243. package/web-shell/assets/{chunk-727SXJPM-Cy3Su2YY.js → chunk-727SXJPM-Z4lY4gbh.js} +1 -1
  244. package/web-shell/assets/{chunk-AQP2D5EJ-Dp8Teqv6.js → chunk-AQP2D5EJ-Yz0hZr3D.js} +1 -1
  245. package/web-shell/assets/{chunk-FMBD7UC4-BDTDM-4j.js → chunk-FMBD7UC4-nKmTWTv9.js} +1 -1
  246. package/web-shell/assets/{chunk-ND2GUHAM-7HfDt0r2.js → chunk-ND2GUHAM-CjZz0f6Y.js} +1 -1
  247. package/web-shell/assets/{chunk-QZHKN3VN-BIBU0uCF.js → chunk-QZHKN3VN-Bab3FpuS.js} +1 -1
  248. package/web-shell/assets/classDiagram-4FO5ZUOK-BRnxm8DX.js +1 -0
  249. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BRnxm8DX.js +1 -0
  250. package/web-shell/assets/{cose-bilkent-S5V4N54A-DRLdcg9p.js → cose-bilkent-S5V4N54A-BuSAGFox.js} +1 -1
  251. package/web-shell/assets/{dagre-BM42HDAG-DCCgDwqW.js → dagre-BM42HDAG-CRZXTg3g.js} +1 -1
  252. package/web-shell/assets/{diagram-2AECGRRQ-CsBTBmk3.js → diagram-2AECGRRQ-BFx1Ayrz.js} +1 -1
  253. package/web-shell/assets/{diagram-5GNKFQAL-C9qjH8Lt.js → diagram-5GNKFQAL-B2hMZ3gS.js} +1 -1
  254. package/web-shell/assets/{diagram-KO2AKTUF-Brjs_lj2.js → diagram-KO2AKTUF-DKxAQLmc.js} +1 -1
  255. package/web-shell/assets/{diagram-LMA3HP47-DtiWCl_F.js → diagram-LMA3HP47-Bo1xGqVY.js} +1 -1
  256. package/web-shell/assets/{diagram-OG6HWLK6-DmfKLkBT.js → diagram-OG6HWLK6-B9NG78d-.js} +1 -1
  257. package/web-shell/assets/{erDiagram-TEJ5UH35-Bve_4deH.js → erDiagram-TEJ5UH35-DltQKiqQ.js} +1 -1
  258. package/web-shell/assets/{flowDiagram-I6XJVG4X-C2_kXCcV.js → flowDiagram-I6XJVG4X-5xXGmS4I.js} +1 -1
  259. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BSBIjiTF.js → ganttDiagram-6RSMTGT7-bhGL5n0l.js} +1 -1
  260. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CyebwI55.js → gitGraphDiagram-PVQCEYII-ZYnz9hgh.js} +1 -1
  261. package/web-shell/assets/{index-d0yfnV1M.js → index-CBBeUArD.js} +1 -1
  262. package/web-shell/assets/index-CbgU-jUo.css +5 -0
  263. package/web-shell/assets/index-_nhzXqab.js +1750 -0
  264. package/web-shell/assets/{infoDiagram-5YYISTIA-CSDGnWxU.js → infoDiagram-5YYISTIA-Cg-jamQf.js} +1 -1
  265. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BK4jU13p.js → ishikawaDiagram-YF4QCWOH-CcmvKlyq.js} +1 -1
  266. package/web-shell/assets/{journeyDiagram-JHISSGLW-D_W6j-oF.js → journeyDiagram-JHISSGLW-BRsOQZp1.js} +1 -1
  267. package/web-shell/assets/{kanban-definition-UN3LZRKU-C7xf-SdC.js → kanban-definition-UN3LZRKU-xW-dmEHK.js} +1 -1
  268. package/web-shell/assets/{linear-DQmzxpxd.js → linear-ClBfEZH2.js} +1 -1
  269. package/web-shell/assets/{mermaid.core-9P7AGOLG.js → mermaid.core-D65NDkzc.js} +5 -5
  270. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DgcgMyPk.js → mindmap-definition-RKZ34NQL-CyvFslYa.js} +1 -1
  271. package/web-shell/assets/{pieDiagram-4H26LBE5-3wWGb9eG.js → pieDiagram-4H26LBE5-BwSefMyG.js} +1 -1
  272. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BeCXnQw9.js → quadrantDiagram-W4KKPZXB-GqBJspFS.js} +1 -1
  273. package/web-shell/assets/{requirementDiagram-4Y6WPE33-Bi1UOHDz.js → requirementDiagram-4Y6WPE33-B137PlTJ.js} +1 -1
  274. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-lrLUjjbb.js → sankeyDiagram-5OEKKPKP-maHkkt8i.js} +1 -1
  275. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-BFuqKz6Q.js → sequenceDiagram-3UESZ5HK-DJ1mRaG3.js} +1 -1
  276. package/web-shell/assets/{stateDiagram-AJRCARHV-8DemQLhu.js → stateDiagram-AJRCARHV-aRmP7Q4i.js} +1 -1
  277. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Db39gvZ_.js +1 -0
  278. package/web-shell/assets/{timeline-definition-PNZ67QCA-uzEuVQXg.js → timeline-definition-PNZ67QCA-CIQ3BRPA.js} +1 -1
  279. package/web-shell/assets/{vennDiagram-CIIHVFJN-BQTeZ_-o.js → vennDiagram-CIIHVFJN-DR9VPd5h.js} +1 -1
  280. package/web-shell/assets/{wardley-L42UT6IY-B6yM5Im7.js → wardley-L42UT6IY-ZcfIbT4D.js} +1 -1
  281. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-ChM8bmgn.js → wardleyDiagram-YWT4CUSO-D0jgPi4T.js} +1 -1
  282. package/web-shell/assets/{xychartDiagram-2RQKCTM6-oNG6HyB1.js → xychartDiagram-2RQKCTM6-BGWU4s5o.js} +1 -1
  283. package/web-shell/index.html +2 -2
  284. package/chunks/chunk-MPHPFVKK.js +0 -48
  285. package/chunks/chunk-RLKC46YT.js +0 -3582
  286. package/chunks/chunk-UPDOZBWO.js +0 -358
  287. package/web-shell/assets/channel-BrGVBa2L.js +0 -1
  288. package/web-shell/assets/classDiagram-4FO5ZUOK-B5TUzJzI.js +0 -1
  289. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B5TUzJzI.js +0 -1
  290. package/web-shell/assets/index-CIDsgxTe.js +0 -1792
  291. package/web-shell/assets/index-DiQnWi_E.css +0 -5
  292. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DhM5ixYd.js +0 -1
  293. /package/chunks/{chunk-NTTBXH7U.js → chunk-UGK4K2N2.js} +0 -0
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  contextCommand
5
- } from "./chunk-N5YPT6PH.js";
5
+ } from "./chunk-X3YA3YGG.js";
6
6
  import {
7
7
  ExtensionRefreshState,
8
8
  clearSkillArgs,
@@ -11,7 +11,7 @@ import {
11
11
  staleArgsWarning,
12
12
  validateAuthMethod,
13
13
  writeSkillArgs
14
- } from "./chunk-IGGGG5CX.js";
14
+ } from "./chunk-KSGWAYNE.js";
15
15
  import {
16
16
  calculateCost,
17
17
  computeSessionStats,
@@ -20,7 +20,7 @@ import {
20
20
  findInlineMathExpressions,
21
21
  getSystemInfoFields,
22
22
  levelLabel
23
- } from "./chunk-O4D7SPJN.js";
23
+ } from "./chunk-73G3Z7QS.js";
24
24
  import {
25
25
  formatDuration,
26
26
  formatTokenCount
@@ -32,16 +32,16 @@ import {
32
32
  VSCODE_SHIFT_ENTER_SEQUENCE,
33
33
  isWaylandSession,
34
34
  writeOsc52
35
- } from "./chunk-DXIBNLBZ.js";
35
+ } from "./chunk-SNQZZ765.js";
36
36
  import {
37
37
  themeManager
38
38
  } from "./chunk-2M55OBEB.js";
39
39
  import {
40
40
  getErrorMessage as getErrorMessage2
41
- } from "./chunk-JUEPY766.js";
41
+ } from "./chunk-LRDB2OLB.js";
42
42
  import {
43
43
  rollbackStandaloneUpdate
44
- } from "./chunk-NEFOOD54.js";
44
+ } from "./chunk-4V4DFJBS.js";
45
45
  import {
46
46
  GITHUB_WORKFLOW_PATHS,
47
47
  INSIGHT_CSS,
@@ -54,12 +54,12 @@ import {
54
54
  toJson,
55
55
  toJsonl,
56
56
  toMarkdown
57
- } from "./chunk-RLKC46YT.js";
57
+ } from "./chunk-EOCQCNV4.js";
58
58
  import {
59
59
  stripUnsafeCharacters,
60
60
  toCodePoints,
61
61
  truncateToWidth
62
- } from "./chunk-4NFY2S7N.js";
62
+ } from "./chunk-E7REAOTN.js";
63
63
  import {
64
64
  isValidSessionId
65
65
  } from "./chunk-TQOF5KBL.js";
@@ -70,19 +70,19 @@ import {
70
70
  isVoiceEnabled,
71
71
  readVoiceMode,
72
72
  readVoiceModel
73
- } from "./chunk-QIH2HAEN.js";
73
+ } from "./chunk-7OCSX7FC.js";
74
74
  import {
75
75
  getExtendedSystemInfo,
76
76
  getGitVersion,
77
77
  getNpmVersion
78
- } from "./chunk-XHRY7BXD.js";
78
+ } from "./chunk-G6FFFICU.js";
79
79
  import {
80
80
  isInlineModelOverrideAllowed,
81
81
  parseAcpModelOption
82
- } from "./chunk-ZYYTZUI2.js";
82
+ } from "./chunk-ISRHAMNL.js";
83
83
  import {
84
84
  getInstallationInfo
85
- } from "./chunk-BKPPWD33.js";
85
+ } from "./chunk-DRKYT2TR.js";
86
86
  import {
87
87
  OUTPUT_LANGUAGE_AUTO,
88
88
  getAllSettingKeys,
@@ -94,12 +94,12 @@ import {
94
94
  resolveOutputLanguageOrPreserveAuto,
95
95
  validateSettingValue,
96
96
  writeOutputLanguageAndRegisterPath
97
- } from "./chunk-A267JX7H.js";
97
+ } from "./chunk-OLZSWUZR.js";
98
98
  import {
99
99
  getCurrentLanguage,
100
100
  setLanguageAsync,
101
101
  t
102
- } from "./chunk-HUTNYWBG.js";
102
+ } from "./chunk-IOTPI425.js";
103
103
  import {
104
104
  SUPPORTED_LANGUAGES,
105
105
  getSupportedLanguageIds,
@@ -108,7 +108,7 @@ import {
108
108
  import {
109
109
  isFolderTrustEnabled,
110
110
  loadTrustedFolders
111
- } from "./chunk-IWPYVAO2.js";
111
+ } from "./chunk-YXC7JYUI.js";
112
112
  import {
113
113
  require_strip_json_comments
114
114
  } from "./chunk-NPQ5ZKRP.js";
@@ -178,13 +178,13 @@ import {
178
178
  resolveSlimmingConfig,
179
179
  runForkedAgent,
180
180
  tryGenerateSessionTitle
181
- } from "./chunk-4S5337WV.js";
181
+ } from "./chunk-XC377TLN.js";
182
182
  import {
183
183
  external_exports
184
184
  } from "./chunk-CQ35AJ4Z.js";
185
185
  import {
186
186
  resolveModelId
187
- } from "./chunk-5EYKMUUY.js";
187
+ } from "./chunk-SR2LYSMT.js";
188
188
  import {
189
189
  APPROVAL_MODES
190
190
  } from "./chunk-RWDNJBWN.js";
@@ -195,7 +195,7 @@ import {
195
195
  restoreArchivedAutoSkill,
196
196
  runAutoSkillCurator,
197
197
  setAutoSkillPinned
198
- } from "./chunk-25EYDK42.js";
198
+ } from "./chunk-WPVUOVYX.js";
199
199
  import {
200
200
  HookEventName,
201
201
  sanitizeUserPromptExpansionAdditionalContext
@@ -204,10 +204,10 @@ import {
204
204
  GoalPersistenceUnavailableError,
205
205
  emptyGoalSnapshot,
206
206
  projectUserTranscriptForDisplay
207
- } from "./chunk-OMLJNPBE.js";
207
+ } from "./chunk-4ZMS3JCR.js";
208
208
  import {
209
209
  resolveOpenAILogDir
210
- } from "./chunk-OXCMMLED.js";
210
+ } from "./chunk-DGJ7O55J.js";
211
211
  import {
212
212
  FORK_SUBAGENT_TYPE,
213
213
  stripStartupContext
@@ -229,7 +229,6 @@ import {
229
229
  IdeConnectionEvent,
230
230
  formatTokenUsageSummaryAsCsv,
231
231
  formatTokenUsageSummaryAsJson,
232
- getCurrentGeminiMdFilename,
233
232
  getMCPServerStatus,
234
233
  isImageCapable,
235
234
  logIdeConnection,
@@ -237,7 +236,10 @@ import {
237
236
  read,
238
237
  recordSkillInvocation,
239
238
  uiTelemetryService
240
- } from "./chunk-RVOJ2FBP.js";
239
+ } from "./chunk-KC4WMLZO.js";
240
+ import {
241
+ getCurrentGeminiMdFilename
242
+ } from "./chunk-3PWCMXIR.js";
241
243
  import {
242
244
  getAutoMemoryRoot
243
245
  } from "./chunk-CHHABXPE.js";
@@ -253,7 +255,7 @@ import {
253
255
  import {
254
256
  normalizeContent,
255
257
  redactUrlCredentials
256
- } from "./chunk-EL5SXY3T.js";
258
+ } from "./chunk-XT4RKHVE.js";
257
259
  import {
258
260
  Storage,
259
261
  createDebugLogger,
@@ -267,7 +269,7 @@ import {
267
269
  isCpuProfileRecording,
268
270
  startCpuProfile,
269
271
  stopCpuProfile
270
- } from "./chunk-AW4TRXOC.js";
272
+ } from "./chunk-TNPWODIZ.js";
271
273
  import {
272
274
  init_esbuild_shims
273
275
  } from "./chunk-5O2XNYP6.js";
@@ -392,6 +394,18 @@ var isAtCommand = /* @__PURE__ */ __name((query) => (
392
394
  query.startsWith("@") || /\s@/.test(query)
393
395
  ), "isAtCommand");
394
396
  var SLASH_PATH_SEPARATOR_RE = /[/\\]/;
397
+ var SLASH_COMMANDS_SKIP_RECORDING = /* @__PURE__ */ new Set([
398
+ "quit",
399
+ "exit",
400
+ "clear",
401
+ "reset",
402
+ "new",
403
+ "resume",
404
+ "delete",
405
+ "branch",
406
+ "btw",
407
+ "history"
408
+ ]);
395
409
  var getSlashCommandFirstToken = /* @__PURE__ */ __name((query) => query.slice(1).trimStart().split(/\s+/u)[0] ?? "", "getSlashCommandFirstToken");
396
410
  var hasSlashCommandPathSeparator = /* @__PURE__ */ __name((query) => SLASH_PATH_SEPARATOR_RE.test(getSlashCommandFirstToken(query)), "hasSlashCommandPathSeparator");
397
411
  var isSlashCommand = /* @__PURE__ */ __name((query) => {
@@ -925,6 +939,174 @@ var aboutCommand = {
925
939
  ]
926
940
  };
927
941
 
942
+ // packages/cli/src/ui/commands/advisor-command.ts
943
+ init_esbuild_shims();
944
+ var ADVISOR_SCHEMA = {
945
+ type: "object",
946
+ additionalProperties: false,
947
+ properties: {
948
+ verdict: { type: "string", minLength: 1 },
949
+ risks: { type: "string", minLength: 1 },
950
+ missingEvidence: { type: "string", minLength: 1 },
951
+ recommendation: { type: "string", minLength: 1 }
952
+ },
953
+ required: ["verdict", "risks", "missingEvidence", "recommendation"]
954
+ };
955
+ function buildAdvisorPrompt(focus) {
956
+ return [
957
+ "<system-reminder>",
958
+ "You are acting as an ADVISOR \u2014 an independent senior reviewer giving a second opinion on the conversation so far. The transcript above may be truncated to the most recent turns; treat what is shown as the evidence available to you.",
959
+ "",
960
+ "CRITICAL CONSTRAINTS:",
961
+ "- You have NO tools. Base every claim strictly on evidence present in the transcript; never claim to have verified something you could not observe.",
962
+ "- Do not perform the task or write the implementation. Review only.",
963
+ "- Be direct about problems: flawed assumptions, premature conclusions, unverified claims, risky next steps.",
964
+ "- The main conversation is NOT interrupted; your review is shown to the user only.",
965
+ "",
966
+ "Return exactly one JSON object with these string fields and no markdown fence, preamble, extra key, or commentary:",
967
+ "- verdict: one short paragraph stating whether the current approach or conclusion is sound.",
968
+ '- risks: concrete risks or flawed assumptions, each citing transcript evidence. Write "None found" if none.',
969
+ "- missingEvidence: claims asserted but not verified in the visible transcript (earlier verification may exist outside the shown window).",
970
+ "- recommendation: the single most valuable next action.",
971
+ "</system-reminder>",
972
+ "",
973
+ focus || "Review the conversation above."
974
+ ].join("\n");
975
+ }
976
+ __name(buildAdvisorPrompt, "buildAdvisorPrompt");
977
+ function formatAdvisorReview(value) {
978
+ const fields = ["verdict", "risks", "missingEvidence", "recommendation"];
979
+ if (!value || Object.keys(value).length !== fields.length || fields.some((field) => {
980
+ const fieldValue = value[field];
981
+ return typeof fieldValue !== "string" || fieldValue.trim().length === 0;
982
+ })) {
983
+ throw new Error("Advisor returned invalid structured output.");
984
+ }
985
+ const review = value;
986
+ return [
987
+ "## Verdict",
988
+ review.verdict.trim(),
989
+ "## Risks",
990
+ review.risks.trim(),
991
+ "## Missing evidence",
992
+ review.missingEvidence.trim(),
993
+ "## Recommendation",
994
+ review.recommendation.trim()
995
+ ].join("\n\n");
996
+ }
997
+ __name(formatAdvisorReview, "formatAdvisorReview");
998
+ function formatAdvisorError(error) {
999
+ return t("Advisor review failed: {{error}}", {
1000
+ error: error instanceof Error ? error.message : String(error || "Unknown error")
1001
+ });
1002
+ }
1003
+ __name(formatAdvisorError, "formatAdvisorError");
1004
+ async function askAdvisor(context, focus, abortSignal) {
1005
+ const { config } = context.services;
1006
+ if (!config) throw new Error(t("Config not loaded."));
1007
+ const cacheSafeParams = buildBtwCacheSafeParams(config);
1008
+ if (!cacheSafeParams || config.getGeminiClient().getHistoryForForkWindow().length === 0) {
1009
+ throw new Error(t("No conversation context available for /advisor"));
1010
+ }
1011
+ const advisorModel = context.services.settings.merged.advisorModel?.trim() || void 0;
1012
+ const result = await runForkedAgent({
1013
+ config,
1014
+ userMessage: buildAdvisorPrompt(focus),
1015
+ cacheSafeParams,
1016
+ jsonSchema: ADVISOR_SCHEMA,
1017
+ ...advisorModel ? { model: advisorModel } : {},
1018
+ abortSignal,
1019
+ disableModelFallbacks: true
1020
+ });
1021
+ return {
1022
+ text: formatAdvisorReview(result.jsonResult),
1023
+ model: result.model
1024
+ };
1025
+ }
1026
+ __name(askAdvisor, "askAdvisor");
1027
+ var advisorCommand = {
1028
+ name: "advisor",
1029
+ get description() {
1030
+ return t(
1031
+ "Get a second opinion on the current conversation from a reviewer model"
1032
+ );
1033
+ },
1034
+ kind: "built-in" /* BUILT_IN */,
1035
+ supportedModes: ["interactive", "acp"],
1036
+ action: /* @__PURE__ */ __name(async (context, args) => {
1037
+ const focus = args.trim();
1038
+ if (focus.length > BTW_MAX_INPUT_LENGTH) {
1039
+ return {
1040
+ type: "message",
1041
+ messageType: "error",
1042
+ content: t("Focus too long (max {{max}} chars)", {
1043
+ max: String(BTW_MAX_INPUT_LENGTH)
1044
+ })
1045
+ };
1046
+ }
1047
+ const { config } = context.services;
1048
+ const { ui } = context;
1049
+ if (!config) {
1050
+ return {
1051
+ type: "message",
1052
+ messageType: "error",
1053
+ content: t("Config not loaded.")
1054
+ };
1055
+ }
1056
+ if (!config.getModel()) {
1057
+ return {
1058
+ type: "message",
1059
+ messageType: "error",
1060
+ content: t("No model configured.")
1061
+ };
1062
+ }
1063
+ const abortSignal = context.abortSignal ?? new AbortController().signal;
1064
+ const executionMode = context.executionMode ?? "interactive";
1065
+ if (executionMode !== "interactive") {
1066
+ try {
1067
+ const review = await askAdvisor(context, focus, abortSignal);
1068
+ return { type: "message", messageType: "info", content: review.text };
1069
+ } catch (error) {
1070
+ return {
1071
+ type: "message",
1072
+ messageType: "error",
1073
+ content: formatAdvisorError(error)
1074
+ };
1075
+ }
1076
+ }
1077
+ const turnInFlight = !ui.isIdleRef.current || ui.pendingItem !== null;
1078
+ if (turnInFlight) {
1079
+ return {
1080
+ type: "message",
1081
+ messageType: "error",
1082
+ content: t(
1083
+ "Another operation is in progress, wait for it to complete before running /advisor"
1084
+ )
1085
+ };
1086
+ }
1087
+ try {
1088
+ ui.setPendingItem({
1089
+ type: "info" /* INFO */,
1090
+ text: t("Consulting advisor...")
1091
+ });
1092
+ const review = await askAdvisor(context, focus, abortSignal);
1093
+ if (abortSignal.aborted) return;
1094
+ ui.addItem(
1095
+ { type: "advisor" /* ADVISOR */, text: review.text, model: review.model },
1096
+ Date.now()
1097
+ );
1098
+ } catch (error) {
1099
+ if (abortSignal.aborted) return;
1100
+ ui.addItem(
1101
+ { type: "error" /* ERROR */, text: formatAdvisorError(error) },
1102
+ Date.now()
1103
+ );
1104
+ } finally {
1105
+ if (!abortSignal.aborted) ui.setPendingItem(null);
1106
+ }
1107
+ }, "action")
1108
+ };
1109
+
928
1110
  // packages/cli/src/ui/commands/tasksCommand.ts
929
1111
  init_esbuild_shims();
930
1112
  function statusLabel(entry) {
@@ -2057,7 +2239,7 @@ var approvalModeCommand = {
2057
2239
  };
2058
2240
  }
2059
2241
  }
2060
- const autoModeNotices = mode === "auto" /* AUTO */ && priorMode !== "auto" /* AUTO */ && config ? await import("./useAutoAcceptIndicator-C7BEICBF.js") : void 0;
2242
+ const autoModeNotices = mode === "auto" /* AUTO */ && priorMode !== "auto" /* AUTO */ && config ? await import("./useAutoAcceptIndicator-RFX3KNBN.js") : void 0;
2061
2243
  if (config) {
2062
2244
  try {
2063
2245
  config.setApprovalMode(mode);
@@ -6848,7 +7030,7 @@ var expandNowCommand = {
6848
7030
  content: t("History is already expanded in this session.")
6849
7031
  };
6850
7032
  }
6851
- const { expandCollapsedHistory } = await import("./resumeHistoryUtils-EVG3WYK2.js");
7033
+ const { expandCollapsedHistory } = await import("./resumeHistoryUtils-5GEWKOOO.js");
6852
7034
  const updated = expandCollapsedHistory(history);
6853
7035
  loadHistory(updated);
6854
7036
  refreshStatic();
@@ -14119,10 +14301,10 @@ var updateCommand = {
14119
14301
  { performStandaloneUpdate },
14120
14302
  installationInfo
14121
14303
  ] = await Promise.all([
14122
- import("./updateCheck-W4Y2GFSD.js"),
14123
- import("./processUtils-WDA2MJFD.js"),
14124
- import("./standalone-update-IFM53PE7.js"),
14125
- import("./installationInfo-4I5FXNMH.js")
14304
+ import("./updateCheck-KYDCBLSF.js"),
14305
+ import("./processUtils-3IN2ZR55.js"),
14306
+ import("./standalone-update-ALRIPWSM.js"),
14307
+ import("./installationInfo-CO47QX3Q.js")
14126
14308
  ]);
14127
14309
  const { formatUpdateInstructions, getInstallationInfo: getInstallationInfo2 } = installationInfo;
14128
14310
  const settings = context.services.settings;
@@ -14270,6 +14452,7 @@ var BuiltinCommandLoader = class {
14270
14452
  }
14271
14453
  const allDefinitions = [
14272
14454
  aboutCommand,
14455
+ advisorCommand,
14273
14456
  agentsCommand,
14274
14457
  tasksCommand,
14275
14458
  // Gated behind isWorkflowsEnabled — feature flag honors
@@ -15968,6 +16151,10 @@ var handleSlashCommand = /* @__PURE__ */ __name(async (rawQuery, abortController
15968
16151
  if (!commandToExecute.action) {
15969
16152
  return { type: "no_command" };
15970
16153
  }
16154
+ const resolvedCommand = {
16155
+ name: commandToExecute.name,
16156
+ kind: commandToExecute.kind
16157
+ };
15971
16158
  const sessionStats = {
15972
16159
  sessionId: config?.getSessionId(),
15973
16160
  sessionStartTime: /* @__PURE__ */ new Date(),
@@ -15984,6 +16171,7 @@ var handleSlashCommand = /* @__PURE__ */ __name(async (rawQuery, abortController
15984
16171
  };
15985
16172
  const context = {
15986
16173
  executionMode,
16174
+ abortSignal: commandToExecute.name === "advisor" ? abortController.signal : void 0,
15987
16175
  services: {
15988
16176
  config,
15989
16177
  settings,
@@ -16024,7 +16212,8 @@ var handleSlashCommand = /* @__PURE__ */ __name(async (rawQuery, abortController
16024
16212
  return {
16025
16213
  type: "message",
16026
16214
  messageType: "info",
16027
- content: "Command executed successfully."
16215
+ content: "Command executed successfully.",
16216
+ resolvedCommand
16028
16217
  };
16029
16218
  }
16030
16219
  if (result.type === "submit_prompt") {
@@ -16043,16 +16232,22 @@ var handleSlashCommand = /* @__PURE__ */ __name(async (rawQuery, abortController
16043
16232
  }
16044
16233
  if (hookResult.blockedResult) {
16045
16234
  recordSkillCommandInvocation(false);
16046
- return hookResult.blockedResult;
16235
+ return { ...hookResult.blockedResult, resolvedCommand };
16047
16236
  }
16048
16237
  recordSkillCommandInvocation(true);
16049
16238
  void recordAutoSkillCommandUsage(config, commandToExecute);
16050
- return handleCommandResult(
16051
- { ...result, content: hookResult.content },
16052
- outputHistoryItems
16053
- );
16239
+ return {
16240
+ ...handleCommandResult(
16241
+ { ...result, content: hookResult.content },
16242
+ outputHistoryItems
16243
+ ),
16244
+ resolvedCommand
16245
+ };
16054
16246
  }
16055
- return handleCommandResult(result, outputHistoryItems);
16247
+ return {
16248
+ ...handleCommandResult(result, outputHistoryItems),
16249
+ resolvedCommand
16250
+ };
16056
16251
  }, "handleSlashCommand");
16057
16252
  var getAvailableCommands = /* @__PURE__ */ __name(async (config, abortSignal, mode = "acp", settings) => {
16058
16253
  try {
@@ -16257,7 +16452,8 @@ function createAgentToolProgressHandler(config, agentToolCallId, adapter) {
16257
16452
  error: toolCall.status === "failed" ? new Error(toolCall.error || "Tool execution failed") : void 0,
16258
16453
  errorType: toolCall.status === "failed" ? "execution_failed" /* EXECUTION_FAILED */ : void 0,
16259
16454
  resultDisplay: toolCall.resultDisplay,
16260
- responseParts: toolCall.responseParts || []
16455
+ responseParts: toolCall.responseParts || [],
16456
+ boundaryArtifact: toolCall.boundaryArtifact
16261
16457
  }), "buildResponse");
16262
16458
  const hasResultContent = /* @__PURE__ */ __name((toolCall) => {
16263
16459
  if (typeof toolCall.resultDisplay === "string" && toolCall.resultDisplay.trim().length > 0) {
@@ -16382,6 +16578,8 @@ export {
16382
16578
  resetBackgroundStateForSessionSwitch,
16383
16579
  buildBackgroundWorkBlockedMessage,
16384
16580
  isAtCommand,
16581
+ SLASH_COMMANDS_SKIP_RECORDING,
16582
+ getSlashCommandFirstToken,
16385
16583
  hasSlashCommandPathSeparator,
16386
16584
  isSlashCommand,
16387
16585
  isBtwCommand,
@@ -16430,22 +16628,22 @@ export {
16430
16628
  */
16431
16629
  /**
16432
16630
  * @license
16433
- * Copyright 2026 Qwen Team
16631
+ * Copyright 2025 Qwen Code
16434
16632
  * SPDX-License-Identifier: Apache-2.0
16435
16633
  */
16436
16634
  /**
16437
16635
  * @license
16438
- * Copyright 2025 Qwen
16636
+ * Copyright 2026 Qwen Team
16439
16637
  * SPDX-License-Identifier: Apache-2.0
16440
16638
  */
16441
16639
  /**
16442
16640
  * @license
16443
- * Copyright 2025 Qwen Team
16641
+ * Copyright 2025 Qwen
16444
16642
  * SPDX-License-Identifier: Apache-2.0
16445
16643
  */
16446
16644
  /**
16447
16645
  * @license
16448
- * Copyright 2025 Qwen Code
16646
+ * Copyright 2025 Qwen Team
16449
16647
  * SPDX-License-Identifier: Apache-2.0
16450
16648
  */
16451
16649
  /**
@@ -16,7 +16,7 @@ import {
16
16
  TOOL_FAILURE_KIND_CANCELLED,
17
17
  require_src,
18
18
  sessionIdContext
19
- } from "./chunk-K5IDV3PC.js";
19
+ } from "./chunk-D34RDOLP.js";
20
20
  import {
21
21
  createDebugLogger,
22
22
  getCurrentSessionId,
@@ -992,7 +992,7 @@ function initializeTelemetry(config) {
992
992
  telemetryInitPromise ??= (async () => {
993
993
  const debugLogger3 = createDebugLogger("OTEL");
994
994
  try {
995
- const { startTelemetrySdk } = await import("./sdk-impl-YXUEN2Z2.js");
995
+ const { startTelemetrySdk } = await import("./sdk-impl-YVL7BP6Y.js");
996
996
  if (telemetryInitialized) return;
997
997
  const started = await startTelemetrySdk(config);
998
998
  if (!started) return;
@@ -82,7 +82,7 @@ async function atomicWriteFile(filePath, data, options, _testFs) {
82
82
  });
83
83
  let existingStat;
84
84
  try {
85
- existingStat = await fs.stat(targetPath);
85
+ existingStat = options?.noFollow ? await fs.lstat(targetPath) : await fs.stat(targetPath);
86
86
  } catch (err) {
87
87
  if (!isNodeError(err) || err.code !== "ENOENT") {
88
88
  throw err;
@@ -90,7 +90,7 @@ async function atomicWriteFile(filePath, data, options, _testFs) {
90
90
  }
91
91
  let existingMode;
92
92
  if (!options?.forceMode || options?.mode === void 0) {
93
- existingMode = existingStat !== void 0 ? existingStat.mode & 4095 : void 0;
93
+ existingMode = existingStat !== void 0 && (!options?.noFollow || existingStat.isFile()) ? existingStat.mode & 4095 : void 0;
94
94
  }
95
95
  const desiredMode = existingMode ?? options?.mode;
96
96
  const writeOptions = {};
@@ -11,14 +11,14 @@ import {
11
11
  DEFAULT_TOOL_RESULTS_TOTAL_CHARS_THRESHOLD,
12
12
  DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES,
13
13
  DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD
14
- } from "./chunk-4S5337WV.js";
14
+ } from "./chunk-XC377TLN.js";
15
15
  import {
16
16
  DEFAULT_QWEN_CUSTOM_IGNORE_FILE_NAMES
17
17
  } from "./chunk-KBXKR5R2.js";
18
18
  import {
19
19
  DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH,
20
20
  SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT
21
- } from "./chunk-K5IDV3PC.js";
21
+ } from "./chunk-D34RDOLP.js";
22
22
  import {
23
23
  init_esbuild_shims
24
24
  } from "./chunk-5O2XNYP6.js";
@@ -519,7 +519,7 @@ var SETTINGS_SCHEMA = {
519
519
  category: "General",
520
520
  requiresRestart: false,
521
521
  default: true,
522
- description: 'Append the attribution footer naming the model and CLI version (e.g. "_\u2014 qwen3-coder via Qwen Code /review (v0.21.2)_") to review bodies and inline comments posted to GitHub. Disable to post reviews without AI attribution. Note: with the footer off, presubmit duplicate detection still recognizes earlier posts by the same GitHub account, but footer-less posts from other accounts escape it. Only honored from User, System, and SystemDefaults settings scopes; values set in Workspace settings are ignored, so a repository cannot set review policy for its reviewers.',
522
+ description: `Append the attribution footer naming the model and CLI version (e.g. "_\u2014 qwen3-coder via Qwen Code /review (v0.21.2)_") to review bodies and inline comments posted to GitHub. Disable to post reviews without VISIBLE AI attribution: no footer, and no "**[Critical]**"/"**[Suggestion]**" severity markers on posted comments and body lists. Unattributed posts stay identifiable in the raw source: each posted comment carries an invisible severity marker ("<!-- qwen-review critical -->") and the review body carries a ledger marker ("<!-- qwen-review-ledger ... -->") \u2014 anything reading comment bodies (GitHub API automation, the workflows this setting couples to) still recognizes a /review artifact, and presubmit duplicate detection recognizes the reviewing account's earlier posts by the severity marker, though unattributed posts from other accounts escape it. Another consequence: qwen-autofix's Critical-only mode (engaged after round 5, or earlier when a counting window's diff-growth budget trips) no longer recognizes the posted findings as Critical and defers them. Only honored from User, System, and SystemDefaults settings scopes; values set in Workspace settings are ignored, so a repository cannot set review policy for its reviewers.`,
523
523
  showInDialog: true
524
524
  },
525
525
  effort: {
@@ -1151,6 +1151,15 @@ var SETTINGS_SCHEMA = {
1151
1151
  description: "Model used for generating prompt suggestions and speculative execution. Leave empty to use the main model. A smaller/faster model (e.g., qwen3-coder-flash) reduces latency and cost.",
1152
1152
  showInDialog: true
1153
1153
  },
1154
+ advisorModel: {
1155
+ type: "string",
1156
+ label: "Advisor Model",
1157
+ category: "Model",
1158
+ requiresRestart: false,
1159
+ default: "",
1160
+ description: "Model used by /advisor for second-opinion reviews of the conversation. Leave empty to use the main model. A model at least as capable as the main model is recommended. Setting this sends the recent conversation transcript to that model, even when it uses another provider.",
1161
+ showInDialog: true
1162
+ },
1154
1163
  visionModel: {
1155
1164
  type: "string",
1156
1165
  label: "Vision Model",
@@ -72,54 +72,51 @@ var TextTokenizer = class {
72
72
  }
73
73
  };
74
74
 
75
- // packages/core/src/utils/tool-name-utils.ts
75
+ // packages/core/src/utils/request-tokenizer/supportedImageFormats.ts
76
76
  init_esbuild_shims();
77
- var MAX_TOOL_NAME_LENGTH = 63;
78
- var PROVIDER_SAFE_TOOL_NAME = /^[A-Za-z][A-Za-z0-9_-]*$/;
79
- function normalizeToolNameForProvider(name) {
80
- if (name.length <= MAX_TOOL_NAME_LENGTH && PROVIDER_SAFE_TOOL_NAME.test(name)) {
81
- return name;
82
- }
83
- const normalized = sanitizeToolNameForProvider(name);
84
- const suffix = `_${stableToolNameHash(name)}`;
85
- return `${normalized.slice(0, MAX_TOOL_NAME_LENGTH - suffix.length)}${suffix}`;
86
- }
87
- __name(normalizeToolNameForProvider, "normalizeToolNameForProvider");
88
- function sanitizeToolNameForProvider(name) {
89
- const sanitized = name.replace(/[^A-Za-z0-9_-]/g, "_");
90
- return /^[A-Za-z]/.test(sanitized) ? sanitized : `tool_${sanitized}`;
77
+ var SUPPORTED_IMAGE_MIME_TYPES = [
78
+ "image/bmp",
79
+ "image/gif",
80
+ "image/jpeg",
81
+ "image/jpg",
82
+ // Alternative MIME type for JPEG
83
+ "image/png",
84
+ "image/tiff",
85
+ "image/webp",
86
+ "image/heic"
87
+ ];
88
+ var PIPELINE_IMAGE_MIME_TYPES = [
89
+ "image/gif",
90
+ "image/jpeg",
91
+ "image/jpg",
92
+ "image/png",
93
+ "image/webp"
94
+ ];
95
+ function isSupportedImageMimeType(mimeType) {
96
+ return SUPPORTED_IMAGE_MIME_TYPES.includes(
97
+ mimeType
98
+ );
91
99
  }
92
- __name(sanitizeToolNameForProvider, "sanitizeToolNameForProvider");
93
- function normalizeMcpToolName(name) {
94
- return name.startsWith("mcp__") ? normalizeToolNameForProvider(name) : name;
100
+ __name(isSupportedImageMimeType, "isSupportedImageMimeType");
101
+ function getSupportedImageFormatsString() {
102
+ return PIPELINE_IMAGE_MIME_TYPES.map(
103
+ (type) => type.replace("image/", "").toUpperCase()
104
+ ).join(", ");
95
105
  }
96
- __name(normalizeMcpToolName, "normalizeMcpToolName");
97
- function generateLegacyMcpToolName(name) {
98
- let legacyName = name.replace(/[^A-Za-z0-9_.-]/g, "_");
99
- if (legacyName.length > MAX_TOOL_NAME_LENGTH) {
100
- legacyName = legacyName.slice(0, 28) + "___" + legacyName.slice(-32);
101
- }
102
- return legacyName;
103
- }
104
- __name(generateLegacyMcpToolName, "generateLegacyMcpToolName");
105
- function stableToolNameHash(name) {
106
- let hash = 2166136261;
107
- for (let index = 0; index < name.length; index += 1) {
108
- hash = Math.imul(hash ^ name.charCodeAt(index), 16777619);
109
- }
110
- return (hash >>> 0).toString(36).padStart(7, "0");
106
+ __name(getSupportedImageFormatsString, "getSupportedImageFormatsString");
107
+ function getUnsupportedImageFormatWarning() {
108
+ return `Only the following image formats are supported: ${getSupportedImageFormatsString()}. Other formats may not work as expected.`;
111
109
  }
112
- __name(stableToolNameHash, "stableToolNameHash");
110
+ __name(getUnsupportedImageFormatWarning, "getUnsupportedImageFormatWarning");
113
111
 
114
112
  export {
115
113
  TOKEN_ESTIMATE_UNITS_PER_TOKEN,
116
114
  estimateTextTokens,
117
115
  estimateTextTokenUnits,
118
116
  TextTokenizer,
119
- normalizeToolNameForProvider,
120
- sanitizeToolNameForProvider,
121
- normalizeMcpToolName,
122
- generateLegacyMcpToolName
117
+ PIPELINE_IMAGE_MIME_TYPES,
118
+ isSupportedImageMimeType,
119
+ getUnsupportedImageFormatWarning
123
120
  };
124
121
  /**
125
122
  * @license