@qwen-code/qwen-code 0.21.2-nightly.20260801.bc382c3ff → 0.21.3

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 (271) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +34 -32
  2. package/bundled/qc-helper/docs/features/code-review.md +78 -23
  3. package/bundled/qc-helper/docs/features/commands.md +1 -0
  4. package/bundled/qc-helper/docs/features/skills.md +32 -1
  5. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +12 -12
  6. package/bundled/qc-helper/docs/support/troubleshooting.md +6 -1
  7. package/bundled/review/DESIGN.md +167 -32
  8. package/bundled/review/SKILL.md +156 -32
  9. package/chunks/{MaxSizedBox-CDHTDITS.js → MaxSizedBox-OJR636GP.js} +14 -13
  10. package/chunks/{StandaloneSessionPicker-L63HUAHP.js → StandaloneSessionPicker-AMMBF5UY.js} +34 -32
  11. package/chunks/{acpAgent-6WVVT2P3.js → acpAgent-M57LVIQA.js} +80 -78
  12. package/chunks/{agent-KDM4CBOU.js → agent-PE37ARLM.js} +13 -12
  13. package/chunks/{agent-headless-AS7K2K57.js → agent-headless-45ASME4R.js} +13 -12
  14. package/chunks/{artifact-tool-ANV4CFCR.js → artifact-tool-TBOYEKTY.js} +1 -1
  15. package/chunks/{askUserQuestion-MALEB47H.js → askUserQuestion-23Y5WZFJ.js} +1 -1
  16. package/chunks/{bridge-JNEW6FES.js → bridge-K3ZRPO4D.js} +14 -13
  17. package/chunks/{channel-management-service-QOO7TD3T.js → channel-management-service-IXJ2MZTS.js} +6 -6
  18. package/chunks/{channel-settings-store-4CSMTR4L.js → channel-settings-store-PEAR3IME.js} +19 -18
  19. package/chunks/{channel-worker-group-ERSUOPIR.js → channel-worker-group-NDG4WOOZ.js} +4 -4
  20. package/chunks/{channel-worker-manager-X247YDQ7.js → channel-worker-manager-ZCW6UW34.js} +4 -4
  21. package/chunks/{channel-worker-supervisor-ORJIEEPP.js → channel-worker-supervisor-ATGFTZRN.js} +3 -3
  22. package/chunks/{chunk-LAPK3GLC.js → chunk-22YFMJBW.js} +24 -6
  23. package/chunks/{chunk-UHTJC7O3.js → chunk-24ER7UV4.js} +1 -1
  24. package/chunks/{chunk-3WXMXT7C.js → chunk-2LZCLQIS.js} +5 -5
  25. package/chunks/{chunk-NZB4NDJL.js → chunk-2MI7ZTRT.js} +4 -4
  26. package/chunks/{chunk-C4L2MEIT.js → chunk-3MWNROHB.js} +3 -3
  27. package/chunks/{chunk-2PNQQ4UR.js → chunk-3XF4WT3B.js} +1 -1
  28. package/chunks/{chunk-TNVKFQXQ.js → chunk-4AGGSHCH.js} +383 -153
  29. package/chunks/{chunk-M2F5PLOW.js → chunk-4K3RV3OA.js} +3 -3
  30. package/chunks/{chunk-5UJ6A3CH.js → chunk-5JPVOYWA.js} +5 -5
  31. package/chunks/{chunk-AYB4HSBI.js → chunk-5VYFXHY2.js} +3 -3
  32. package/chunks/{chunk-AQEWCKX4.js → chunk-6NE5NTHJ.js} +1 -1
  33. package/chunks/{chunk-XSA5EKTJ.js → chunk-BKGA75MU.js} +1 -1
  34. package/chunks/{chunk-MBKPUM5Y.js → chunk-BKXTHMOZ.js} +1 -1
  35. package/chunks/{chunk-LL4U3BSH.js → chunk-BSKUTHLO.js} +3 -3
  36. package/chunks/{chunk-I5GNT6ZS.js → chunk-CFDR3GNL.js} +11 -2
  37. package/chunks/{chunk-DVGTU5TC.js → chunk-CIUUYB23.js} +2 -2
  38. package/chunks/{chunk-BKUN5QHP.js → chunk-D2GPKXCQ.js} +4 -4
  39. package/chunks/{chunk-GB3AB7TR.js → chunk-DIEFUBV6.js} +1 -0
  40. package/chunks/{chunk-KXSYDCP2.js → chunk-DSGJLHM3.js} +3 -3
  41. package/chunks/{chunk-PHODQP2V.js → chunk-EGYJRIDF.js} +2 -2
  42. package/chunks/{chunk-XCLLRKY5.js → chunk-EIMKVOSF.js} +1 -1
  43. package/chunks/{chunk-QTERJVPZ.js → chunk-EKTCKZV5.js} +1 -0
  44. package/chunks/{chunk-42IKVPST.js → chunk-FF75UUB2.js} +1 -1
  45. package/chunks/{chunk-FJHA23GM.js → chunk-FG63DZQA.js} +9 -9
  46. package/chunks/{chunk-5UZITEHA.js → chunk-FHPKHXHT.js} +2 -2
  47. package/chunks/{chunk-25QQVOCG.js → chunk-FXVHVCNA.js} +1 -1
  48. package/chunks/{chunk-7MY2AR5A.js → chunk-GMSBXEH4.js} +9 -9
  49. package/chunks/{chunk-TFFMATHX.js → chunk-H35Q5CEG.js} +5 -5
  50. package/chunks/{chunk-WISQLM4Q.js → chunk-H6FIBBXK.js} +1177 -1806
  51. package/chunks/{chunk-DUIJ2IXG.js → chunk-H6ZYP74A.js} +1 -1
  52. package/chunks/{chunk-XFDPIC4P.js → chunk-HEBW74ZW.js} +3 -3
  53. package/chunks/{chunk-6FMJLI5M.js → chunk-HFVW54NL.js} +41 -6
  54. package/chunks/{chunk-3MHPWQ2M.js → chunk-HIXVWF7I.js} +37 -8
  55. package/chunks/{chunk-GVISB2OH.js → chunk-HUIQ4FYC.js} +2 -2
  56. package/chunks/{chunk-K5Q62CGR.js → chunk-IF6K42YJ.js} +1 -1
  57. package/chunks/{chunk-VWF42XC6.js → chunk-IWGTGH4G.js} +4 -4
  58. package/chunks/{chunk-SWEBEXPI.js → chunk-K2J5JZ6B.js} +1 -1
  59. package/chunks/{chunk-CHCLO3M7.js → chunk-KXWERR6P.js} +4 -4
  60. package/chunks/{chunk-OCRM53TT.js → chunk-L7FTDKCD.js} +3 -3
  61. package/chunks/{chunk-2CTKGIFR.js → chunk-LGT3YMLN.js} +4 -4
  62. package/chunks/{chunk-7IYLHTTM.js → chunk-LZV2BZPL.js} +2 -2
  63. package/chunks/{chunk-434YCHSV.js → chunk-M5LIY7Y6.js} +1 -1
  64. package/chunks/{chunk-JRIDA5HF.js → chunk-MCXMWLFT.js} +5 -5
  65. package/chunks/{chunk-433VD3HX.js → chunk-MTR4JWQJ.js} +4 -4
  66. package/chunks/{chunk-WP4HGHFG.js → chunk-MUEJ4R3E.js} +3 -3
  67. package/chunks/{chunk-UHQ3L6GC.js → chunk-N42C2FU3.js} +1 -1
  68. package/chunks/{chunk-KG22G46Y.js → chunk-NW57GHNL.js} +69 -5
  69. package/chunks/chunk-PWCQRLM5.js +1170 -0
  70. package/chunks/{chunk-H4DSRWAS.js → chunk-Q3G5L5KF.js} +4 -4
  71. package/chunks/{chunk-SK2UKB45.js → chunk-QDWLUXKP.js} +1 -1
  72. package/chunks/{chunk-VS3GXRNZ.js → chunk-QPSYIV2O.js} +3114 -512
  73. package/chunks/{chunk-GHJM2C2T.js → chunk-QWDVZH24.js} +3 -3
  74. package/chunks/{chunk-UWLG4UCE.js → chunk-QWW6I2UO.js} +13 -13
  75. package/chunks/{chunk-W7XZ3KP5.js → chunk-R7XNRHYD.js} +1 -1
  76. package/chunks/{chunk-PGP7Y3RQ.js → chunk-RCXCGZG6.js} +4 -4
  77. package/chunks/{chunk-MSIVKDRC.js → chunk-RL6J3BPE.js} +3 -3
  78. package/chunks/{chunk-H6MC6VQX.js → chunk-RR224BUP.js} +4 -3
  79. package/chunks/{chunk-7K2WTPQO.js → chunk-SKSF3LGQ.js} +4 -4
  80. package/chunks/{chunk-II6WPWHY.js → chunk-SQ3YD5MI.js} +1 -1
  81. package/chunks/{chunk-PGEGUNH5.js → chunk-SRY26X4H.js} +22 -199
  82. package/chunks/{chunk-OBAIHYFT.js → chunk-TXABHVZD.js} +1 -1
  83. package/chunks/chunk-TZTBZ25J.js +222 -0
  84. package/chunks/{chunk-BV4QX43X.js → chunk-UEJESCS7.js} +1 -1
  85. package/chunks/{chunk-NGWYUZZO.js → chunk-UQDFEU47.js} +318 -125
  86. package/chunks/{chunk-CWEIMFFW.js → chunk-VA5NLVPT.js} +1 -1
  87. package/chunks/{chunk-UOFFZNXV.js → chunk-VUNRNRN6.js} +65 -37
  88. package/chunks/{chunk-K4CGQN4Q.js → chunk-VWOVHOTT.js} +1 -1
  89. package/chunks/{chunk-I6FAHB4N.js → chunk-WUC6ZFXO.js} +1 -1
  90. package/chunks/{chunk-2A6MHYIA.js → chunk-WY2ENRDN.js} +1 -1
  91. package/chunks/{chunk-MYT7N6QH.js → chunk-X6QNZOTC.js} +1 -1
  92. package/chunks/{chunk-ZTN6OA5J.js → chunk-X6WUYMOV.js} +8 -8
  93. package/chunks/{chunk-RGJ4JWSU.js → chunk-XMJO6C44.js} +3 -3
  94. package/chunks/{chunk-PXA5AWHY.js → chunk-XUMAD5IT.js} +1 -1
  95. package/chunks/{chunk-GALUTA2C.js → chunk-YPUHMQXV.js} +1 -1
  96. package/chunks/{chunk-A2A34TSB.js → chunk-YU6TBRTA.js} +2 -2
  97. package/chunks/{chunk-ZRFJ75D7.js → chunk-YWMDTMAU.js} +2 -2
  98. package/chunks/{chunk-LRJWFR6L.js → chunk-ZGSUFIL5.js} +1 -1
  99. package/chunks/{chunk-H4346YW5.js → chunk-ZJES4C3I.js} +5 -5
  100. package/chunks/{computer-use-Z4NCIIJN.js → computer-use-UJMK6JQU.js} +13 -12
  101. package/chunks/{config-utils-64LM6OEQ.js → config-utils-7COTJMWK.js} +4 -4
  102. package/chunks/{contextCommand-HVM7XFCB.js → contextCommand-4YABGF4S.js} +16 -15
  103. package/chunks/{core-runtime-NL3ZBHBU.js → core-runtime-7M4VM3DA.js} +13 -12
  104. package/chunks/{create-sub-session-XHSCDYFU.js → create-sub-session-HOFDW4N7.js} +13 -12
  105. package/chunks/{create-sub-session-AM32K2HD.js → create-sub-session-J32WC64U.js} +1 -1
  106. package/chunks/{cron-create-HPXYE6C5.js → cron-create-HMFSHIAR.js} +1 -1
  107. package/chunks/{cron-delete-FPVNTKPK.js → cron-delete-ZJFHOX57.js} +1 -1
  108. package/chunks/{cron-list-ZEI6PAAV.js → cron-list-ZEX2NBMN.js} +1 -1
  109. package/chunks/{daemon-PCNCI5YU.js → daemon-CCIX4BMG.js} +47 -6
  110. package/chunks/{daemon-status-provider-XD23SNAM.js → daemon-status-provider-W2U5Q3J5.js} +18 -17
  111. package/chunks/{daemon-trust-policy-NOHK7IW5.js → daemon-trust-policy-IFICWPXP.js} +18 -17
  112. package/chunks/{daemon-trust-policy-monitor-ZBTSR333.js → daemon-trust-policy-monitor-GX7EO6FW.js} +18 -17
  113. package/chunks/{deferred-core-runtime-JJBHKM2C.js → deferred-core-runtime-U36OOOKE.js} +13 -12
  114. package/chunks/display-image-VS3TXYQH.js +184 -0
  115. package/chunks/{dist-BH76AT7N.js → dist-3BMEUGTG.js} +1 -1
  116. package/chunks/{dist-BXA3JXVQ.js → dist-4KAX7CCL.js} +1 -1
  117. package/chunks/{dist-4T4NCJFL.js → dist-7JGAAQSC.js} +2 -2
  118. package/chunks/{dist-4LAMY2SK.js → dist-A7H2KKUC.js} +1 -1
  119. package/chunks/{dist-OEEFI6UU.js → dist-DPPHJAVL.js} +3 -3
  120. package/chunks/{dist-SMLVOWKV.js → dist-HVBMEYWK.js} +1 -1
  121. package/chunks/{dist-7KOL6OMD.js → dist-NEBRI7WO.js} +1 -1
  122. package/chunks/{dist-V2RK6S6Q.js → dist-SFQ34F4M.js} +24 -6
  123. package/chunks/{earlyInputCapture-KLAZDAIP.js → earlyInputCapture-5ZWDH3SB.js} +13 -12
  124. package/chunks/{edit-YQZWCISX.js → edit-J7SW6UP6.js} +13 -12
  125. package/chunks/{en-RESOFG55.js → en-L4UQDLWW.js} +11 -1
  126. package/chunks/{enter-worktree-WLVWI3FP.js → enter-worktree-NRLOHRB6.js} +13 -12
  127. package/chunks/{enterPlanMode-6RYXFQUD.js → enterPlanMode-GDSTEFSM.js} +13 -12
  128. package/chunks/{environment-DXJTXSVT.js → environment-KHYEKG5W.js} +15 -14
  129. package/chunks/{errors-XGAGG2S2.js → errors-VNLAJV3O.js} +15 -14
  130. package/chunks/{exit-worktree-C4276VPP.js → exit-worktree-ARVID7DF.js} +13 -12
  131. package/chunks/{exitPlanMode-MM5HIRUF.js → exitPlanMode-4ZFY7KUH.js} +13 -12
  132. package/chunks/{fast-path-PIXYOHCH.js → fast-path-KA65VREJ.js} +5 -5
  133. package/chunks/{gemini-43RLVUNP.js → gemini-5PMCNPF7.js} +56 -55
  134. package/chunks/{geminiContentGenerator-PNQ4TSID.js → geminiContentGenerator-NFSYJ4HA.js} +1 -1
  135. package/chunks/{glob-ZMBQKAU5.js → glob-F3EAUDAX.js} +13 -12
  136. package/chunks/{goal-tools-Y767F7LZ.js → goal-tools-SPQ5M6D3.js} +2 -2
  137. package/chunks/{grep-HSV37W2Q.js → grep-UJMPVZER.js} +13 -12
  138. package/chunks/{handleAutoUpdate-QDHZPBAY.js → handleAutoUpdate-MG4FRZPN.js} +18 -17
  139. package/chunks/{i18n-ME22A6RN.js → i18n-EVHV4ZF3.js} +14 -13
  140. package/chunks/{image-gen-IFC7ZWSB.js → image-gen-UC7XVHI7.js} +2 -2
  141. package/chunks/{initializer-J7H2CHVB.js → initializer-O5B6HUBI.js} +18 -17
  142. package/chunks/{installationInfo-R7FXPQN5.js → installationInfo-2LIKCNVX.js} +14 -13
  143. package/chunks/{list-OYDIBA4N.js → list-BPKIE3Z4.js} +21 -20
  144. package/chunks/{list-agents-GATIBBQQ.js → list-agents-TWEGRJWO.js} +1 -1
  145. package/chunks/{loadedSettingsAdapter-OK6GK2GE.js → loadedSettingsAdapter-NGLFF4V4.js} +18 -17
  146. package/chunks/{loggingContentGenerator-U4ZEG4GL.js → loggingContentGenerator-7TFESRG5.js} +5 -5
  147. package/chunks/{loop-wakeup-3DZMQQQQ.js → loop-wakeup-6LLEOQYV.js} +2 -2
  148. package/chunks/{ls-7F4GHXIH.js → ls-H5WX22VK.js} +1 -1
  149. package/chunks/{lsp-6FEHVBWI.js → lsp-G6FXYEIS.js} +1 -1
  150. package/chunks/{managed-npm-update-PGKAJLLO.js → managed-npm-update-CLZGGV7F.js} +14 -13
  151. package/chunks/{mcp-S4DXJD2G.js → mcp-X5OZOOXX.js} +18 -17
  152. package/chunks/{monitor-E5ZFMT74.js → monitor-TGSVSAZZ.js} +13 -12
  153. package/chunks/{nonInteractiveCli-HNOHKEPE.js → nonInteractiveCli-GUMJ5JLG.js} +54 -53
  154. package/chunks/{notebook-edit-6QDN6VZJ.js → notebook-edit-EZISE7IC.js} +13 -12
  155. package/chunks/{openaiContentGenerator-3NLB2C5O.js → openaiContentGenerator-ZAKS5A6P.js} +5 -5
  156. package/chunks/{pidfile-ZMOIUGG6.js → pidfile-PCMBX4LR.js} +13 -12
  157. package/chunks/{processUtils-E4QGQVWW.js → processUtils-2CSVE5BW.js} +2 -2
  158. package/chunks/{qwenContentGenerator-2LFRWJTM.js → qwenContentGenerator-S3H6PIC4.js} +14 -13
  159. package/chunks/{qwenOAuth2-N32BUQDC.js → qwenOAuth2-MNU425VE.js} +1 -1
  160. package/chunks/{read-file-GLDCWZBG.js → read-file-HXJXHBI6.js} +4 -4
  161. package/chunks/{read-mcp-resource-AFS3UKZO.js → read-mcp-resource-DRZSI3HE.js} +1 -1
  162. package/chunks/{record-artifact-ECZSCEG5.js → record-artifact-IPIRWMFY.js} +2 -2
  163. package/chunks/{resumeHistoryUtils-F5BE5QDW.js → resumeHistoryUtils-4QAMC2S6.js} +18 -17
  164. package/chunks/{ripGrep-T23Y4AGY.js → ripGrep-MCETPF2E.js} +13 -12
  165. package/chunks/{run-qwen-serve-TI2HGLLU.js → run-qwen-serve-3NMODTXV.js} +43 -43
  166. package/chunks/{runtime-WCWM3DO7.js → runtime-AQOV7DVP.js} +23 -22
  167. package/chunks/{scheduler-2QZO5AV5.js → scheduler-DN7SZ6ZE.js} +13 -12
  168. package/chunks/{send-message-X7G2JSII.js → send-message-HGCVVDTZ.js} +3 -2
  169. package/chunks/{serve-DZOMYUFU.js → serve-WZB45HVT.js} +18 -17
  170. package/chunks/{server-N4AJRKIQ.js → server-GOTZFEEZ.js} +86 -54
  171. package/chunks/{session-GS6AKMN7.js → session-23LOFLWN.js} +55 -54
  172. package/chunks/{settings-CUN3SELH.js → settings-LI2ORVXC.js} +17 -16
  173. package/chunks/{shell-NGBFVXC5.js → shell-GLC6OP3C.js} +13 -12
  174. package/chunks/{skill-SC2BSO75.js → skill-C7W6M4GO.js} +4 -4
  175. package/chunks/{skill-settings-XVPCPW5K.js → skill-settings-W25NCK5I.js} +17 -16
  176. package/chunks/{spawnChannel-RILO4YY3.js → spawnChannel-OHJLEBLD.js} +13 -12
  177. package/chunks/{standalone-update-TMLT6LVJ.js → standalone-update-E4V5V7WT.js} +15 -14
  178. package/chunks/{startInteractiveUI-J45WOEOU.js → startInteractiveUI-FKILLW7Q.js} +1419 -414
  179. package/chunks/{syntheticOutput-FHRY3BPQ.js → syntheticOutput-EYL7DWO7.js} +2 -2
  180. package/chunks/{task-create-LAQXBIHC.js → task-create-CSCEG4SM.js} +4 -3
  181. package/chunks/{task-list-V6K5DRDH.js → task-list-6CVQPORX.js} +1 -1
  182. package/chunks/{task-stop-LQXE52L6.js → task-stop-Y5ZTFVRX.js} +1 -1
  183. package/chunks/{task-update-NXRCXSPB.js → task-update-C52LNFU5.js} +4 -3
  184. package/chunks/{team-create-W3EVWCTA.js → team-create-HBIJ7NHT.js} +13 -12
  185. package/chunks/{team-delete-Z4KGO7RC.js → team-delete-CE7DC53R.js} +1 -1
  186. package/chunks/{team-plan-approval-URYVKJF4.js → team-plan-approval-IBJOKS4J.js} +13 -12
  187. package/chunks/terminal-image-renderer-BOQJPVLB.js +89 -0
  188. package/chunks/{theme-manager-CUAMS2NI.js → theme-manager-NSS7VLUD.js} +13 -12
  189. package/chunks/{todoWrite-OFIZDI7P.js → todoWrite-YKAA57W2.js} +104 -33
  190. package/chunks/{tool-search-DCICFL32.js → tool-search-DEAS54VG.js} +6 -5
  191. package/chunks/{total-session-admission-3ZTAXVUK.js → total-session-admission-4LWTX3WD.js} +14 -13
  192. package/chunks/{trustedFolders-EVCN36O5.js → trustedFolders-NF3J2TA7.js} +14 -13
  193. package/chunks/{update-relaunch-XLW46RHQ.js → update-relaunch-WUHRH5V3.js} +5 -5
  194. package/chunks/{updateCheck-ZHVXDAIH.js → updateCheck-7EG4BLBH.js} +17 -16
  195. package/chunks/{useAutoAcceptIndicator-ZGD6BJSP.js → useAutoAcceptIndicator-ZRV56GVP.js} +21 -20
  196. package/chunks/{validateNonInterActiveAuth-R3BAQFDY.js → validateNonInterActiveAuth-WC2FPE3I.js} +51 -50
  197. package/chunks/{version-PMWREGCG.js → version-6SS7KCUP.js} +1 -1
  198. package/chunks/{web-fetch-PGN27SGF.js → web-fetch-Y5QQMPKA.js} +4 -4
  199. package/chunks/{web-search-KW4UNMRE.js → web-search-QKKEU723.js} +3 -3
  200. package/chunks/{workflow-SN3TJBTJ.js → workflow-PWIU6Q2M.js} +102 -37
  201. package/chunks/{workspace-providers-status-O3HUZGGR.js → workspace-providers-status-B2DM6FNK.js} +20 -19
  202. package/chunks/{workspace-registration-store-M3FJ74RS.js → workspace-registration-store-7Y33TTHJ.js} +1 -1
  203. package/chunks/{workspace-registry-U7ISW23N.js → workspace-registry-TSNJKLPC.js} +14 -13
  204. package/chunks/{workspace-service-VH6IWADT.js → workspace-service-4I2QHDX4.js} +22 -21
  205. package/chunks/{workspace-skills-status-XANARSZS.js → workspace-skills-status-HVXNWVGR.js} +19 -18
  206. package/chunks/{workspace-trust-reconciler-35EFR4GC.js → workspace-trust-reconciler-RDBBGMWP.js} +19 -18
  207. package/chunks/{write-file-NCRSGUDT.js → write-file-RQ4DG5RY.js} +13 -12
  208. package/chunks/{zh-OHX23Q44.js → zh-72XPUG5P.js} +11 -1
  209. package/chunks/{zh-TW-4G7YKDAQ.js → zh-TW-LTB4SRH3.js} +11 -1
  210. package/chunks/{zoom-image-X7CIADYC.js → zoom-image-O5YCB7WN.js} +4 -4
  211. package/cli.js +26 -15
  212. package/locales/en.js +17 -2
  213. package/locales/zh-TW.js +15 -2
  214. package/locales/zh.js +15 -2
  215. package/package.json +3 -3
  216. package/web-shell/assets/{arc-CaMTqKio.js → arc-Bd7d781i.js} +1 -1
  217. package/web-shell/assets/{architectureDiagram-3BPJPVTR-Bjxztij2.js → architectureDiagram-3BPJPVTR-CpnOJqNE.js} +1 -1
  218. package/web-shell/assets/{blockDiagram-GPEHLZMM-BYJzeHi9.js → blockDiagram-GPEHLZMM-NxVTiWnk.js} +1 -1
  219. package/web-shell/assets/{c4Diagram-AAUBKEIU-fYAa-Eil.js → c4Diagram-AAUBKEIU-BWT75l82.js} +1 -1
  220. package/web-shell/assets/channel-A434sWK5.js +1 -0
  221. package/web-shell/assets/{chunk-2J33WTMH-B1OTlTml.js → chunk-2J33WTMH-Dzz03hk6.js} +1 -1
  222. package/web-shell/assets/{chunk-4BX2VUAB-DNj4uy6k.js → chunk-4BX2VUAB-DRF-egfm.js} +1 -1
  223. package/web-shell/assets/{chunk-55IACEB6-DAqNmg3c.js → chunk-55IACEB6-Co15vq5x.js} +1 -1
  224. package/web-shell/assets/{chunk-727SXJPM-BwB4ddxE.js → chunk-727SXJPM-DHSUk1J7.js} +1 -1
  225. package/web-shell/assets/{chunk-AQP2D5EJ-DmHR_UZs.js → chunk-AQP2D5EJ-Br8u_E2R.js} +1 -1
  226. package/web-shell/assets/{chunk-FMBD7UC4-BlfOXumo.js → chunk-FMBD7UC4-DXbPTnqF.js} +1 -1
  227. package/web-shell/assets/{chunk-ND2GUHAM-BKogiSy7.js → chunk-ND2GUHAM-BleQdi4d.js} +1 -1
  228. package/web-shell/assets/{chunk-QZHKN3VN-DEclVrOF.js → chunk-QZHKN3VN-CqgBf-95.js} +1 -1
  229. package/web-shell/assets/classDiagram-4FO5ZUOK-CwPuhldB.js +1 -0
  230. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwPuhldB.js +1 -0
  231. package/web-shell/assets/{cose-bilkent-S5V4N54A-CwtS21WT.js → cose-bilkent-S5V4N54A-WS7b13Yg.js} +1 -1
  232. package/web-shell/assets/{dagre-BM42HDAG-BAAIlB4p.js → dagre-BM42HDAG-v_55ki8o.js} +1 -1
  233. package/web-shell/assets/{diagram-2AECGRRQ-ChljtF_V.js → diagram-2AECGRRQ-DaYAjbdK.js} +1 -1
  234. package/web-shell/assets/{diagram-5GNKFQAL-BIXVd31-.js → diagram-5GNKFQAL-D_Hy-L64.js} +1 -1
  235. package/web-shell/assets/{diagram-KO2AKTUF-BEiBaS15.js → diagram-KO2AKTUF-dB06cZyD.js} +1 -1
  236. package/web-shell/assets/{diagram-LMA3HP47-C-g4tWKM.js → diagram-LMA3HP47-DzSluD4F.js} +1 -1
  237. package/web-shell/assets/{diagram-OG6HWLK6-CNCCbNQG.js → diagram-OG6HWLK6-Cvb6CeXQ.js} +1 -1
  238. package/web-shell/assets/{erDiagram-TEJ5UH35-v8ysnsdI.js → erDiagram-TEJ5UH35-7eB2Hmov.js} +1 -1
  239. package/web-shell/assets/{flowDiagram-I6XJVG4X-LKVlLjwA.js → flowDiagram-I6XJVG4X-B08iGCw_.js} +1 -1
  240. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DA5MrKYG.js → ganttDiagram-6RSMTGT7-BgsrCHq-.js} +1 -1
  241. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Cyg5fe6d.js → gitGraphDiagram-PVQCEYII-DQLurQ2i.js} +1 -1
  242. package/web-shell/assets/{index-CKdUkVVS.js → index-B_1Z0Mgr.js} +1 -1
  243. package/web-shell/assets/index-Bi1dP2mU.css +5 -0
  244. package/web-shell/assets/index-DJ-z1Oba.js +1756 -0
  245. package/web-shell/assets/{infoDiagram-5YYISTIA-SLsfu3Qd.js → infoDiagram-5YYISTIA-DXZGO8qB.js} +1 -1
  246. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CmHOmTNx.js → ishikawaDiagram-YF4QCWOH-g7gbuH2w.js} +1 -1
  247. package/web-shell/assets/{journeyDiagram-JHISSGLW-C3gM_HFQ.js → journeyDiagram-JHISSGLW-euefICGn.js} +1 -1
  248. package/web-shell/assets/{kanban-definition-UN3LZRKU-BbHD7duM.js → kanban-definition-UN3LZRKU-Dws8-mjG.js} +1 -1
  249. package/web-shell/assets/{linear-CSBvm435.js → linear-C63F0tyh.js} +1 -1
  250. package/web-shell/assets/{mermaid.core-CPMw15lU.js → mermaid.core-fLrhp_4-.js} +5 -5
  251. package/web-shell/assets/{mindmap-definition-RKZ34NQL-C_tNqXQW.js → mindmap-definition-RKZ34NQL-qRkydfT-.js} +1 -1
  252. package/web-shell/assets/{pieDiagram-4H26LBE5-DH_N-8yY.js → pieDiagram-4H26LBE5-BZ0wQaKN.js} +1 -1
  253. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CRbS8UkN.js → quadrantDiagram-W4KKPZXB-Fjq6GbSZ.js} +1 -1
  254. package/web-shell/assets/{requirementDiagram-4Y6WPE33-DJgdZPZn.js → requirementDiagram-4Y6WPE33-CqWvjLHU.js} +1 -1
  255. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-vhL1y5zx.js → sankeyDiagram-5OEKKPKP-VcXX6PVZ.js} +1 -1
  256. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-UQthhFwd.js → sequenceDiagram-3UESZ5HK-BJSRtxFr.js} +1 -1
  257. package/web-shell/assets/{stateDiagram-AJRCARHV-CAywEm20.js → stateDiagram-AJRCARHV-Dt9zUwmZ.js} +1 -1
  258. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CCxQt56w.js +1 -0
  259. package/web-shell/assets/{timeline-definition-PNZ67QCA-CLO8b3FD.js → timeline-definition-PNZ67QCA-DQwlNRws.js} +1 -1
  260. package/web-shell/assets/{vennDiagram-CIIHVFJN-BNAAh0Mu.js → vennDiagram-CIIHVFJN-DwxjUEtQ.js} +1 -1
  261. package/web-shell/assets/{wardley-L42UT6IY-CUY7bLpN.js → wardley-L42UT6IY-D3QdMSpJ.js} +1 -1
  262. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-CSg_ORdW.js → wardleyDiagram-YWT4CUSO-BddN8oK8.js} +1 -1
  263. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BjffV208.js → xychartDiagram-2RQKCTM6-BUNuBrRJ.js} +1 -1
  264. package/web-shell/index.html +2 -2
  265. package/web-shell/assets/channel-LEZei0-5.js +0 -1
  266. package/web-shell/assets/classDiagram-4FO5ZUOK-BiaRhfvf.js +0 -1
  267. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BiaRhfvf.js +0 -1
  268. package/web-shell/assets/index-BgOcEaVt.js +0 -1756
  269. package/web-shell/assets/index-DA5Lvscv.css +0 -5
  270. package/web-shell/assets/insert-DmRbh9Rv.svg +0 -1
  271. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-lfJQHw-7.js +0 -1
@@ -0,0 +1,184 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ isInForkExecution
5
+ } from "./chunk-SRY26X4H.js";
6
+ import "./chunk-K623ENWT.js";
7
+ import "./chunk-AQ37AY7B.js";
8
+ import "./chunk-432XCUHF.js";
9
+ import {
10
+ BaseDeclarativeTool,
11
+ BaseToolInvocation,
12
+ MAX_TERMINAL_IMAGE_BYTES,
13
+ ToolDisplayNames,
14
+ ToolNames
15
+ } from "./chunk-CFDR3GNL.js";
16
+ import {
17
+ makeRelative,
18
+ shortenPath,
19
+ unescapePath
20
+ } from "./chunk-3RXUYQJI.js";
21
+ import "./chunk-QUGAUQGJ.js";
22
+ import {
23
+ init_esbuild_shims
24
+ } from "./chunk-5O2XNYP6.js";
25
+ import {
26
+ __name
27
+ } from "./chunk-J2S4EL5Y.js";
28
+
29
+ // packages/core/src/tools/display-image.ts
30
+ init_esbuild_shims();
31
+ import fs from "node:fs/promises";
32
+ import path from "node:path";
33
+ var PNG_SIGNATURE = "89504e470d0a1a0a";
34
+ function errorResult(message, type) {
35
+ return {
36
+ llmContent: message,
37
+ returnDisplay: `Error: ${message}`,
38
+ error: { message, type }
39
+ };
40
+ }
41
+ __name(errorResult, "errorResult");
42
+ var DisplayImageInvocation = class extends BaseToolInvocation {
43
+ constructor(config, params) {
44
+ super(params);
45
+ this.config = config;
46
+ }
47
+ static {
48
+ __name(this, "DisplayImageInvocation");
49
+ }
50
+ getDescription() {
51
+ return shortenPath(
52
+ makeRelative(this.params.file_path, this.config.getTargetDir())
53
+ );
54
+ }
55
+ toolLocations() {
56
+ return [{ path: this.params.file_path }];
57
+ }
58
+ async execute(signal) {
59
+ signal.throwIfAborted();
60
+ if (isInForkExecution()) {
61
+ return errorResult(
62
+ "display_image can only be executed by the main agent.",
63
+ "execution_denied" /* EXECUTION_DENIED */
64
+ );
65
+ }
66
+ const filePath = path.resolve(this.params.file_path);
67
+ let stat;
68
+ try {
69
+ stat = await fs.stat(filePath);
70
+ } catch (error) {
71
+ const message = error.code === "ENOENT" ? `Image file not found: ${filePath}` : `Unable to access image file "${filePath}": ${error instanceof Error ? error.message : String(error)}`;
72
+ return errorResult(
73
+ message,
74
+ error.code === "ENOENT" ? "file_not_found" /* FILE_NOT_FOUND */ : "read_content_failure" /* READ_CONTENT_FAILURE */
75
+ );
76
+ }
77
+ if (stat.isDirectory()) {
78
+ return errorResult(
79
+ `Image path is a directory: ${filePath}`,
80
+ "target_is_directory" /* TARGET_IS_DIRECTORY */
81
+ );
82
+ }
83
+ if (!stat.isFile()) {
84
+ return errorResult(
85
+ `Image path is not a regular file: ${filePath}`,
86
+ "target_not_regular_file" /* TARGET_NOT_REGULAR_FILE */
87
+ );
88
+ }
89
+ if (stat.size > MAX_TERMINAL_IMAGE_BYTES) {
90
+ return errorResult(
91
+ `Image exceeds the ${MAX_TERMINAL_IMAGE_BYTES} byte display limit: ${filePath}`,
92
+ "file_too_large" /* FILE_TOO_LARGE */
93
+ );
94
+ }
95
+ signal.throwIfAborted();
96
+ let fileHandle;
97
+ try {
98
+ fileHandle = await fs.open(filePath, "r");
99
+ const header = Buffer.alloc(24);
100
+ const { bytesRead } = await fileHandle.read(header, 0, header.length, 0);
101
+ if (bytesRead !== header.length || header.subarray(0, 8).toString("hex") !== PNG_SIGNATURE) {
102
+ return errorResult(
103
+ `Only PNG images are supported by display_image: ${filePath}`,
104
+ "invalid_tool_params" /* INVALID_TOOL_PARAMS */
105
+ );
106
+ }
107
+ } catch (error) {
108
+ return errorResult(
109
+ `Unable to read image file "${filePath}": ${error instanceof Error ? error.message : String(error)}`,
110
+ "read_content_failure" /* READ_CONTENT_FAILURE */
111
+ );
112
+ } finally {
113
+ await fileHandle?.close();
114
+ }
115
+ const renderSupport = await this.config.getTerminalImageRenderSupport();
116
+ if (!renderSupport.available) {
117
+ return errorResult(
118
+ `The image was not displayed: ${renderSupport.reason}`,
119
+ "execution_failed" /* EXECUTION_FAILED */
120
+ );
121
+ }
122
+ const display = {
123
+ type: "terminal_image",
124
+ filePath,
125
+ mimeType: "image/png"
126
+ };
127
+ return {
128
+ llmContent: `The terminal renderer accepted "${path.basename(filePath)}" for display. This display-only tool does not provide the image contents to you; use read_file if you need to inspect the image.`,
129
+ returnDisplay: display,
130
+ resultFilePaths: [filePath]
131
+ };
132
+ }
133
+ };
134
+ var DisplayImageTool = class _DisplayImageTool extends BaseDeclarativeTool {
135
+ constructor(config) {
136
+ super(
137
+ _DisplayImageTool.Name,
138
+ ToolDisplayNames.DISPLAY_IMAGE,
139
+ "Displays an existing workspace PNG in the user\u2019s interactive terminal. Only the main agent can execute this tool. This is only a user-visible preview: it does not return image contents to you. Use read_file when you need to inspect or understand the image. The file_path must be absolute.",
140
+ "read" /* Read */,
141
+ {
142
+ type: "object",
143
+ properties: {
144
+ file_path: {
145
+ type: "string",
146
+ description: "Absolute path to a PNG inside the current workspace."
147
+ }
148
+ },
149
+ required: ["file_path"],
150
+ additionalProperties: false
151
+ },
152
+ false
153
+ );
154
+ this.config = config;
155
+ }
156
+ static {
157
+ __name(this, "DisplayImageTool");
158
+ }
159
+ static Name = ToolNames.DISPLAY_IMAGE;
160
+ validateToolParamValues(params) {
161
+ params.file_path = unescapePath(params.file_path.trim());
162
+ if (!params.file_path) {
163
+ return 'Missing or empty "file_path".';
164
+ }
165
+ if (!path.isAbsolute(params.file_path)) {
166
+ return `File path must be absolute: ${params.file_path}`;
167
+ }
168
+ if (!this.config.getWorkspaceContext().isPathWithinWorkspace(params.file_path)) {
169
+ return `Image path is outside the current workspace: ${params.file_path}`;
170
+ }
171
+ return null;
172
+ }
173
+ createInvocation(params) {
174
+ return new DisplayImageInvocation(this.config, params);
175
+ }
176
+ };
177
+ export {
178
+ DisplayImageTool
179
+ };
180
+ /**
181
+ * @license
182
+ * Copyright 2026 Qwen Team
183
+ * SPDX-License-Identifier: Apache-2.0
184
+ */
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  ChannelBase,
5
5
  isTerminalTaskLifecycleType
6
- } from "./chunk-GB3AB7TR.js";
6
+ } from "./chunk-DIEFUBV6.js";
7
7
  import "./chunk-UDXSXLER.js";
8
8
  import "./chunk-H6XPXXMH.js";
9
9
  import {
@@ -5,7 +5,7 @@ import {
5
5
  getGlobalQwenDir,
6
6
  getWorkspaceScopeDirName,
7
7
  sanitizeLogText
8
- } from "./chunk-GB3AB7TR.js";
8
+ } from "./chunk-DIEFUBV6.js";
9
9
  import "./chunk-UDXSXLER.js";
10
10
  import "./chunk-H6XPXXMH.js";
11
11
  import {
@@ -11,11 +11,11 @@ import {
11
11
  sendMessage,
12
12
  sendTyping,
13
13
  uploadToCdn
14
- } from "./chunk-I6FAHB4N.js";
14
+ } from "./chunk-WUC6ZFXO.js";
15
15
  import {
16
16
  ChannelBase,
17
17
  isTerminalTaskLifecycleType
18
- } from "./chunk-GB3AB7TR.js";
18
+ } from "./chunk-DIEFUBV6.js";
19
19
  import "./chunk-UDXSXLER.js";
20
20
  import "./chunk-H6XPXXMH.js";
21
21
  import {
@@ -12,7 +12,7 @@ import {
12
12
  isTerminalTaskLifecycleType,
13
13
  sanitizeLogText,
14
14
  sanitizeSenderName
15
- } from "./chunk-GB3AB7TR.js";
15
+ } from "./chunk-DIEFUBV6.js";
16
16
  import "./chunk-UDXSXLER.js";
17
17
  import "./chunk-H6XPXXMH.js";
18
18
  import "./chunk-CR3C7WXL.js";
@@ -4,18 +4,18 @@ import {
4
4
  require_axios,
5
5
  require_ws
6
6
  } from "./chunk-I3G5JWBV.js";
7
+ import "./chunk-JE7KQ2UP.js";
8
+ import "./chunk-K6KS3LTN.js";
7
9
  import {
8
10
  require_lib
9
11
  } from "./chunk-FC4KQFCS.js";
10
- import "./chunk-JE7KQ2UP.js";
11
- import "./chunk-K6KS3LTN.js";
12
12
  import "./chunk-T3CHYWJZ.js";
13
13
  import {
14
14
  ChannelBase,
15
15
  ChannelProactiveDeliveryError,
16
16
  isChannelProactiveDeliveryError,
17
17
  isTerminalTaskLifecycleType
18
- } from "./chunk-GB3AB7TR.js";
18
+ } from "./chunk-DIEFUBV6.js";
19
19
  import "./chunk-UDXSXLER.js";
20
20
  import "./chunk-H6XPXXMH.js";
21
21
  import {
@@ -10,7 +10,7 @@ import "./chunk-T3CHYWJZ.js";
10
10
  import {
11
11
  ChannelBase,
12
12
  sanitizeLogText
13
- } from "./chunk-GB3AB7TR.js";
13
+ } from "./chunk-DIEFUBV6.js";
14
14
  import "./chunk-UDXSXLER.js";
15
15
  import "./chunk-H6XPXXMH.js";
16
16
  import "./chunk-CR3C7WXL.js";
@@ -6,7 +6,7 @@ import {
6
6
  import "./chunk-T3CHYWJZ.js";
7
7
  import {
8
8
  PollingChannelBase
9
- } from "./chunk-GB3AB7TR.js";
9
+ } from "./chunk-DIEFUBV6.js";
10
10
  import "./chunk-UDXSXLER.js";
11
11
  import {
12
12
  external_exports
@@ -6,8 +6,9 @@ import {
6
6
  getGlobalQwenDir,
7
7
  sanitizeLogText,
8
8
  sanitizePromptText,
9
- sanitizeSenderName
10
- } from "./chunk-GB3AB7TR.js";
9
+ sanitizeSenderName,
10
+ truncateCodePoints
11
+ } from "./chunk-DIEFUBV6.js";
11
12
  import "./chunk-UDXSXLER.js";
12
13
  import "./chunk-H6XPXXMH.js";
13
14
  import {
@@ -1426,6 +1427,7 @@ async function sendQQMessage(base, path, accessToken, body) {
1426
1427
  __name(sendQQMessage, "sendQQMessage");
1427
1428
 
1428
1429
  // packages/channels/qqbot/dist/QQChannel.js
1430
+ var QQ_OPENID_RE = /^[A-F0-9]{32}$/i;
1429
1431
  var DeliveryError = class extends Error {
1430
1432
  static {
1431
1433
  __name(this, "DeliveryError");
@@ -1502,6 +1504,8 @@ var QQChannel = class _QQChannel extends ChannelBase {
1502
1504
  // ── Group / cron fields ────────────────────────────────────────
1503
1505
  /** Per-group bot OPENID map for multi-group support. */
1504
1506
  botOpenIdByGroup = /* @__PURE__ */ new Map();
1507
+ /** Dedup set for unexpected senderOpenId format warnings (key: `${chatId}:${senderOpenId}`). */
1508
+ warnedSenderOpenIds = /* @__PURE__ */ new Set();
1505
1509
  /** Guard: set to true after first READY + session restore completes. */
1506
1510
  _ready = false;
1507
1511
  /** Whether this process has never received READY (cold start). */
@@ -1796,7 +1800,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
1796
1800
  "- \u5B8C\u6210\u5BF9\u8BDD\u540E\u7ACB\u523B\u56DE\u5F52\u9759\u9ED8"
1797
1801
  ];
1798
1802
  if (this.qqConfig.allowMention !== false) {
1799
- parts.push("", "## @\u63D0\u53CA\u683C\u5F0F", "", "\u6D88\u606F\u5185\u5BB9\u4E2D\u7684 <@OPENID> \u6807\u7B7E\u4EE3\u8868\u7FA4\u6210\u5458\u7684 QQ \u6807\u8BC6\u3002", "\u5F53\u5176\u4ED6\u7FA4\u6210\u5458 @\u4F60\uFF08\u673A\u5668\u4EBA\uFF09\u65F6\uFF0C\u6D88\u606F\u5185\u5BB9\u4E2D\u4F1A\u51FA\u73B0 <@\u4F60\u7684BotOPENID> \u6807\u7B7E\uFF0C\u8FD9\u4EE3\u8868\u8BE5\u6D88\u606F\u662F @\u7ED9\u4F60\u7684\u3002\u673A\u5668\u4EBA\u81EA\u5DF1\u7684 OPENID \u5C06\u5728\u8FDE\u63A5\u5EFA\u7ACB\u540E\u544A\u77E5\u3002", "\u4F60\u53EF\u4EE5\u5728\u56DE\u590D\u4E2D\u4F7F\u7528 <@OPENID> \u683C\u5F0F\u6765 @\u63D0\u53CA\u7279\u5B9A\u7684\u7FA4\u6210\u5458\u3002", '\u4F8B\u5982\uFF1A\u56DE\u590D "<@ABC123DEF456> \u4F60\u597D" \u4F1A\u5728\u7FA4\u91CC @\u8BE5\u6210\u5458\u3002');
1803
+ parts.push("", "## @\u63D0\u53CA\u683C\u5F0F", "", "\u6D88\u606F\u5185\u5BB9\u4E2D\u7684 <@OPENID> \u6807\u7B7E\u4EE3\u8868\u7FA4\u6210\u5458\u7684 QQ \u6807\u8BC6\u3002", "\u6D88\u606F\u524D\u7F00 [\u6635\u79F0(OPENID)] \u4E2D\u7D27\u90BB ] \u4E4B\u524D\u7684\u62EC\u53F7\u5185\u662F\u8BE5\u53D1\u9001\u8005\u7684 32 \u4F4D\u5341\u516D\u8FDB\u5236 OPENID\uFF0C\u53EF\u7528 <@OPENID> \u56DE\u590D\u65F6 @\u4ED6\u3002", "\u6CE8\u610F\uFF1A\u7FA4\u6210\u5458\u6635\u79F0\u53EF\u80FD\u672C\u8EAB\u5305\u542B\u62EC\u53F7\u6216\u7279\u6B8A\u5B57\u7B26\uFF0C\u6635\u79F0\u4E2D\u7684\u62EC\u53F7\u5185\u5BB9\u4E0D\u662F OPENID\uFF0C\u8BF7\u52FF\u4F7F\u7528\u3002", "\u5F53\u5176\u4ED6\u7FA4\u6210\u5458 @\u4F60\uFF08\u673A\u5668\u4EBA\uFF09\u65F6\uFF0C\u6D88\u606F\u5185\u5BB9\u4E2D\u4F1A\u51FA\u73B0 <@\u4F60\u7684BotOPENID> \u6807\u7B7E\uFF0C\u8FD9\u4EE3\u8868\u8BE5\u6D88\u606F\u662F @\u7ED9\u4F60\u7684\u3002\u673A\u5668\u4EBA\u81EA\u5DF1\u7684 OPENID \u5C06\u5728\u8FDE\u63A5\u5EFA\u7ACB\u540E\u544A\u77E5\u3002", "\u4F60\u53EF\u4EE5\u5728\u56DE\u590D\u4E2D\u4F7F\u7528 <@OPENID> \u683C\u5F0F\u6765 @\u63D0\u53CA\u7279\u5B9A\u7684\u7FA4\u6210\u5458\u3002", '\u4F8B\u5982\uFF1A\u56DE\u590D "<@ABC123DEF456> \u4F60\u597D" \u4F1A\u5728\u7FA4\u91CC @\u8BE5\u6210\u5458\u3002');
1800
1804
  }
1801
1805
  this.config.instructions = parts.join("\n");
1802
1806
  }
@@ -2058,6 +2062,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
2058
2062
  this.replyMsgId.clear();
2059
2063
  this.msgSeqMap.clear();
2060
2064
  this.botOpenIdByGroup.clear();
2065
+ this.warnedSenderOpenIds.clear();
2061
2066
  this.groupActiveMsgEnabled.clear();
2062
2067
  this.seenMessages.clear();
2063
2068
  this.coldStart = true;
@@ -2451,7 +2456,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
2451
2456
  if (raw.botOpenIdByGroup) {
2452
2457
  const arr = raw.botOpenIdByGroup;
2453
2458
  const totalRaw = Array.isArray(arr) ? arr.length : 0;
2454
- this.botOpenIdByGroup = new Map(Array.isArray(arr) ? arr.filter(([k, v]) => typeof k === "string" && k.length <= 256 && typeof v === "string" && /^[A-F0-9]{32}$/i.test(v)) : []);
2459
+ this.botOpenIdByGroup = new Map(Array.isArray(arr) ? arr.filter(([k, v]) => typeof k === "string" && k.length <= 256 && typeof v === "string" && QQ_OPENID_RE.test(v)) : []);
2455
2460
  if (this.botOpenIdByGroup.size < totalRaw) {
2456
2461
  process.stderr.write(`[QQ:${this.name}] restoreQQState: accepted ${this.botOpenIdByGroup.size} botOpenIdByGroup entries (rejected ${totalRaw - this.botOpenIdByGroup.size})
2457
2462
  `);
@@ -3004,7 +3009,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
3004
3009
  if (!selfMention)
3005
3010
  return "";
3006
3011
  const botOpenId = selfMention.member_openid || selfMention.id || "";
3007
- if (!/^[A-F0-9]{32}$/i.test(botOpenId)) {
3012
+ if (!QQ_OPENID_RE.test(botOpenId)) {
3008
3013
  process.stderr.write(`[QQ:${this.name}] Invalid botOpenId format: ${sanitizeLogText(botOpenId, 64)}
3009
3014
  `);
3010
3015
  return "";
@@ -3061,7 +3066,20 @@ var QQChannel = class _QQChannel extends ChannelBase {
3061
3066
  const openIdSuffix = this.qqConfig.allowMention !== false && groupBotOpenId ? ` [botOpenId:${groupBotOpenId}]` : "";
3062
3067
  const suffixFromBotOpenId = this.qqConfig.allowMention !== false && groupBotOpenId ? `
3063
3068
  \u673A\u5668\u4EBA OPENID: ${groupBotOpenId}` : "";
3064
- const text = isSlash ? sanitizePromptText(safeCleanText) : `[atMention=${effectiveIsAtBot}]${openIdSuffix} [${safeName}${senderOpenId && /^[A-F0-9]+$/i.test(senderOpenId) ? `(${senderOpenId.slice(0, 8)}\u2026)` : ""}]: ${sanitizePromptText(this.qqConfig.allowMention !== false ? safeContent : safeCleanText)}${suffixFromBotOpenId}`;
3069
+ const showSenderOpenId = this.qqConfig.allowMention !== false && !!senderOpenId && QQ_OPENID_RE.test(senderOpenId);
3070
+ if (!showSenderOpenId && this.qqConfig.allowMention !== false && senderOpenId) {
3071
+ const dedupKey = `${chatId}:${senderOpenId}`.slice(0, 64);
3072
+ if (!this.warnedSenderOpenIds.has(dedupKey)) {
3073
+ this.warnedSenderOpenIds.add(dedupKey);
3074
+ if (this.warnedSenderOpenIds.size > 500) {
3075
+ this.warnedSenderOpenIds.clear();
3076
+ }
3077
+ process.stderr.write(`[QQ:${this.name}] Unexpected senderOpenId format: ${sanitizeLogText(senderOpenId, 64)}
3078
+ `);
3079
+ }
3080
+ }
3081
+ const senderTag = showSenderOpenId ? `(${senderOpenId})` : senderOpenId ? `(${truncateCodePoints(sanitizeSenderName(senderOpenId), 8)}\u2026)` : "";
3082
+ const text = isSlash ? sanitizePromptText(safeCleanText) : `[atMention=${effectiveIsAtBot}]${openIdSuffix} [${safeName}${senderTag}]: ${sanitizePromptText(this.qqConfig.allowMention !== false ? safeContent : safeCleanText)}${suffixFromBotOpenId}`;
3065
3083
  return {
3066
3084
  isAtBot: effectiveIsAtBot,
3067
3085
  isSlash,
@@ -8,36 +8,37 @@ import {
8
8
  stopAndGetCapturedInput,
9
9
  stopEarlyInputCapture
10
10
  } from "./chunk-KVUBYJDM.js";
11
- import "./chunk-NGWYUZZO.js";
11
+ import "./chunk-UQDFEU47.js";
12
12
  import "./chunk-GOFAQQZA.js";
13
13
  import "./chunk-5M6IDOMF.js";
14
14
  import "./chunk-TWPJO254.js";
15
15
  import "./chunk-H6XPXXMH.js";
16
- import "./chunk-CWEIMFFW.js";
16
+ import "./chunk-VA5NLVPT.js";
17
17
  import "./chunk-I7JDGNG6.js";
18
18
  import "./chunk-A6SX5TAH.js";
19
19
  import "./chunk-33FNCQSY.js";
20
20
  import "./chunk-6PVPNMXU.js";
21
- import "./chunk-PXA5AWHY.js";
21
+ import "./chunk-XUMAD5IT.js";
22
22
  import "./chunk-IRH27ZC2.js";
23
23
  import "./chunk-QHWCP53L.js";
24
24
  import "./chunk-MOHAWIAW.js";
25
- import "./chunk-MYT7N6QH.js";
25
+ import "./chunk-X6QNZOTC.js";
26
26
  import "./chunk-O6GEWCJA.js";
27
27
  import "./chunk-T26EAKDL.js";
28
+ import "./chunk-ZPJWUGCS.js";
28
29
  import "./chunk-CPBF7KYF.js";
29
30
  import "./chunk-MISUEWB4.js";
30
31
  import "./chunk-KRXPRVGL.js";
31
32
  import "./chunk-A5YZ3FA2.js";
32
33
  import "./chunk-YAVY33G4.js";
33
34
  import "./chunk-2UISUFHQ.js";
34
- import "./chunk-6FMJLI5M.js";
35
- import "./chunk-PGEGUNH5.js";
35
+ import "./chunk-HFVW54NL.js";
36
+ import "./chunk-TZTBZ25J.js";
36
37
  import "./chunk-S6LOFUVP.js";
38
+ import "./chunk-SRY26X4H.js";
37
39
  import "./chunk-K623ENWT.js";
38
40
  import "./chunk-AQ37AY7B.js";
39
41
  import "./chunk-432XCUHF.js";
40
- import "./chunk-ZPJWUGCS.js";
41
42
  import "./chunk-XC656O42.js";
42
43
  import "./chunk-NAVJD2PQ.js";
43
44
  import "./chunk-QYPT3QUD.js";
@@ -46,19 +47,19 @@ import "./chunk-DGEIYUC3.js";
46
47
  import "./chunk-MPHPFVKK.js";
47
48
  import "./chunk-GLNBDYUX.js";
48
49
  import "./chunk-DJ2GSRLV.js";
49
- import "./chunk-XCLLRKY5.js";
50
+ import "./chunk-EIMKVOSF.js";
50
51
  import "./chunk-RPYYTL7E.js";
51
52
  import "./chunk-2J3OJGTL.js";
52
53
  import "./chunk-P3QQPMQA.js";
53
54
  import "./chunk-6O5DVH27.js";
54
55
  import "./chunk-GLCZKT5V.js";
55
56
  import "./chunk-2DNKEBXY.js";
56
- import "./chunk-M2F5PLOW.js";
57
+ import "./chunk-4K3RV3OA.js";
57
58
  import "./chunk-VGC4I5JJ.js";
58
59
  import "./chunk-E4WHKETF.js";
59
- import "./chunk-BV4QX43X.js";
60
- import "./chunk-I5GNT6ZS.js";
61
- import "./chunk-TFFMATHX.js";
60
+ import "./chunk-UEJESCS7.js";
61
+ import "./chunk-CFDR3GNL.js";
62
+ import "./chunk-H35Q5CEG.js";
62
63
  import "./chunk-46UV252V.js";
63
64
  import "./chunk-ZBVS26BY.js";
64
65
  import "./chunk-BFHXDAR7.js";
@@ -11,36 +11,37 @@ import {
11
11
  getDiffStat,
12
12
  needsUtf8Bom,
13
13
  safeLiteralReplace
14
- } from "./chunk-NGWYUZZO.js";
14
+ } from "./chunk-UQDFEU47.js";
15
15
  import "./chunk-GOFAQQZA.js";
16
16
  import "./chunk-5M6IDOMF.js";
17
17
  import "./chunk-TWPJO254.js";
18
18
  import "./chunk-H6XPXXMH.js";
19
- import "./chunk-CWEIMFFW.js";
19
+ import "./chunk-VA5NLVPT.js";
20
20
  import "./chunk-I7JDGNG6.js";
21
21
  import "./chunk-A6SX5TAH.js";
22
22
  import "./chunk-33FNCQSY.js";
23
23
  import "./chunk-6PVPNMXU.js";
24
- import "./chunk-PXA5AWHY.js";
24
+ import "./chunk-XUMAD5IT.js";
25
25
  import "./chunk-IRH27ZC2.js";
26
26
  import "./chunk-QHWCP53L.js";
27
27
  import "./chunk-MOHAWIAW.js";
28
- import "./chunk-MYT7N6QH.js";
28
+ import "./chunk-X6QNZOTC.js";
29
29
  import "./chunk-O6GEWCJA.js";
30
30
  import "./chunk-T26EAKDL.js";
31
+ import "./chunk-ZPJWUGCS.js";
31
32
  import "./chunk-CPBF7KYF.js";
32
33
  import "./chunk-MISUEWB4.js";
33
34
  import "./chunk-KRXPRVGL.js";
34
35
  import "./chunk-A5YZ3FA2.js";
35
36
  import "./chunk-YAVY33G4.js";
36
37
  import "./chunk-2UISUFHQ.js";
37
- import "./chunk-6FMJLI5M.js";
38
- import "./chunk-PGEGUNH5.js";
38
+ import "./chunk-HFVW54NL.js";
39
+ import "./chunk-TZTBZ25J.js";
39
40
  import "./chunk-S6LOFUVP.js";
41
+ import "./chunk-SRY26X4H.js";
40
42
  import "./chunk-K623ENWT.js";
41
43
  import "./chunk-AQ37AY7B.js";
42
44
  import "./chunk-432XCUHF.js";
43
- import "./chunk-ZPJWUGCS.js";
44
45
  import "./chunk-XC656O42.js";
45
46
  import "./chunk-NAVJD2PQ.js";
46
47
  import "./chunk-QYPT3QUD.js";
@@ -49,7 +50,7 @@ import "./chunk-DGEIYUC3.js";
49
50
  import "./chunk-MPHPFVKK.js";
50
51
  import "./chunk-GLNBDYUX.js";
51
52
  import "./chunk-DJ2GSRLV.js";
52
- import "./chunk-XCLLRKY5.js";
53
+ import "./chunk-EIMKVOSF.js";
53
54
  import "./chunk-RPYYTL7E.js";
54
55
  import "./chunk-2J3OJGTL.js";
55
56
  import "./chunk-P3QQPMQA.js";
@@ -63,19 +64,19 @@ import {
63
64
  getLanguageFromFilePath,
64
65
  getSpecificMimeType,
65
66
  logFileOperation
66
- } from "./chunk-M2F5PLOW.js";
67
+ } from "./chunk-4K3RV3OA.js";
67
68
  import "./chunk-VGC4I5JJ.js";
68
69
  import {
69
70
  isAnyAutoMemPath,
70
71
  isTeamAutoMemPath
71
72
  } from "./chunk-E4WHKETF.js";
72
- import "./chunk-BV4QX43X.js";
73
+ import "./chunk-UEJESCS7.js";
73
74
  import {
74
75
  BaseDeclarativeTool,
75
76
  ToolDisplayNames,
76
77
  ToolNames
77
- } from "./chunk-I5GNT6ZS.js";
78
- import "./chunk-TFFMATHX.js";
78
+ } from "./chunk-CFDR3GNL.js";
79
+ import "./chunk-H35Q5CEG.js";
79
80
  import "./chunk-46UV252V.js";
80
81
  import "./chunk-ZBVS26BY.js";
81
82
  import "./chunk-BFHXDAR7.js";
@@ -158,6 +158,7 @@ var en_default = {
158
158
  "toolDisplayName.Agent": "toolDisplayName.Agent",
159
159
  "toolDisplayName.Artifact": "toolDisplayName.Artifact",
160
160
  "toolDisplayName.RecordArtifact": "toolDisplayName.RecordArtifact",
161
+ "toolDisplayName.DisplayImage": "toolDisplayName.DisplayImage",
161
162
  "toolDisplayName.Skill": "toolDisplayName.Skill",
162
163
  "toolDisplayName.EnterPlanMode": "toolDisplayName.EnterPlanMode",
163
164
  "toolDisplayName.ExitPlanMode": "toolDisplayName.ExitPlanMode",
@@ -1136,7 +1137,7 @@ var en_default = {
1136
1137
  "Switch the model for this session (--fast for suggestion model, [model-id] to switch immediately).": "Switch the model for this session (--fast for suggestion model, [model-id] to switch immediately).",
1137
1138
  "Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, [model-id] to switch immediately).": "Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, [model-id] to switch immediately).",
1138
1139
  "Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, --project to persist to project settings, --global to persist to user settings, [model-id] to switch immediately, or [model-id] [prompt] to run a one-off prompt on another model; the inline prompt is sent verbatim without @file expansion).": "Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, --project to persist to project settings, --global to persist to user settings, [model-id] to switch immediately, or [model-id] [prompt] to run a one-off prompt on another model; the inline prompt is sent verbatim without @file expansion).",
1139
- "Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, --image for the image generation model, --project to persist to project settings, --global to persist to user settings, [model-id] to switch immediately, or [model-id] [prompt] to run a one-off prompt on another model; the inline prompt is sent verbatim without @file expansion).": "Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, --image for the image generation model, --project to persist to project settings, --global to persist to user settings, [model-id] to switch immediately, or [model-id] [prompt] to run a one-off prompt on another model; the inline prompt is sent verbatim without @file expansion).",
1140
+ "Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, --compaction for chat compression model, --image for the image generation model, --project to persist to project settings, --global to persist to user settings, [model-id] to switch immediately, or [model-id] [prompt] to run a one-off prompt on another model; the inline prompt is sent verbatim without @file expansion).": "Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, --compaction for chat compression model, --image for the image generation model, --project to persist to project settings, --global to persist to user settings, [model-id] to switch immediately, or [model-id] [prompt] to run a one-off prompt on another model; the inline prompt is sent verbatim without @file expansion).",
1140
1141
  "Inline one-shot override isn't supported in this mode \u2014 run '/model {{model}}' first, then send your prompt.": "Inline one-shot override isn't supported in this mode \u2014 run '/model {{model}}' first, then send your prompt.",
1141
1142
  "Inline one-shot override can't switch providers. '{{model}}' belongs to a different provider \u2014 run '/model {{model}}' first, then send your prompt.": "Inline one-shot override can't switch providers. '{{model}}' belongs to a different provider \u2014 run '/model {{model}}' first, then send your prompt.",
1142
1143
  "\u26A0 '{{model}}' is not a known image-capable model; the vision bridge may fail on images.": "\u26A0 '{{model}}' is not a known image-capable model; the vision bridge may fail on images.",
@@ -1145,15 +1146,23 @@ var en_default = {
1145
1146
  "Set the model for voice transcription": "Set the model for voice transcription",
1146
1147
  "Set the image-capable model used to transcribe images for a text-only main model": "Set the image-capable model used to transcribe images for a text-only main model",
1147
1148
  "Set the model used to generate images": "Set the model used to generate images",
1149
+ "Set the model used for chat compression (auto-compaction)": "Set the model used for chat compression (auto-compaction)",
1148
1150
  "Persist the model selection to the project settings (workspace scope)": "Persist the model selection to the project settings (workspace scope)",
1149
1151
  "Persist the model selection to the user settings (global scope)": "Persist the model selection to the user settings (global scope)",
1150
1152
  "Select Fast Model": "Select Fast Model",
1151
1153
  "Select Vision Model": "Select Vision Model",
1152
1154
  "Select Image Model": "Select Image Model",
1155
+ "Select Compaction Model": "Select Compaction Model",
1153
1156
  "Select Voice Model": "Select Voice Model",
1154
1157
  "Vision Model": "Vision Model",
1155
1158
  "Image Model": "Image Model",
1159
+ "Compaction Model": "Compaction Model",
1160
+ "Compaction model override cleared": "Compaction model override cleared",
1161
+ 'Current compaction model: {{compactionModel}}\nUse "/model --compaction <model-id>" to set compaction model, or "/model --compaction clear" to clear the override.': 'Current compaction model: {{compactionModel}}\nUse "/model --compaction <model-id>" to set compaction model, or "/model --compaction clear" to clear the override.',
1162
+ "not set (falls back to the main model)": "not set (falls back to the main model)",
1163
+ "Configure models in settings.modelProviders and ensure the required environment variables are set. In interactive mode, run /auth to configure or switch providers, or run /model --compaction without a model to choose from configured models.": "Configure models in settings.modelProviders and ensure the required environment variables are set. In interactive mode, run /auth to configure or switch providers, or run /model --compaction without a model to choose from configured models.",
1156
1164
  "Voice Model": "Voice Model",
1165
+ "Selected compaction model is unavailable.": "Selected compaction model is unavailable.",
1157
1166
  "Selected voice model is unavailable.": "Selected voice model is unavailable.",
1158
1167
  "Selected image model is unavailable.": "Selected image model is unavailable.",
1159
1168
  "Voice model '{{model}}' is configured more than once. Remove duplicate model ids before selecting it for voice transcription.": "Voice model '{{model}}' is configured more than once. Remove duplicate model ids before selecting it for voice transcription.",
@@ -1876,6 +1885,7 @@ var en_default = {
1876
1885
  "Switch to plan mode or exit plan mode": "Switch to plan mode or exit plan mode",
1877
1886
  "Set how hard reasoning-capable models think ({{tiers}}); mapped and clamped per provider.": "Set how hard reasoning-capable models think ({{tiers}}); mapped and clamped per provider.",
1878
1887
  "Set a goal \u2014 keep working until the condition is met": "Set a goal \u2014 keep working until the condition is met",
1888
+ "Set or control a session goal": "Set or control a session goal",
1879
1889
  "Exited plan mode. Previous approval mode restored.": "Exited plan mode. Previous approval mode restored.",
1880
1890
  "Enabled plan mode. The agent will analyze and plan without executing tools.": "Enabled plan mode. The agent will analyze and plan without executing tools.",
1881
1891
  'Already in plan mode. Use "/plan exit" to exit plan mode.': 'Already in plan mode. Use "/plan exit" to exit plan mode.',
@@ -4,36 +4,37 @@ import {
4
4
  GitWorktreeService,
5
5
  writeWorktreeSession,
6
6
  writeWorktreeSessionMarker
7
- } from "./chunk-NGWYUZZO.js";
7
+ } from "./chunk-UQDFEU47.js";
8
8
  import "./chunk-GOFAQQZA.js";
9
9
  import "./chunk-5M6IDOMF.js";
10
10
  import "./chunk-TWPJO254.js";
11
11
  import "./chunk-H6XPXXMH.js";
12
- import "./chunk-CWEIMFFW.js";
12
+ import "./chunk-VA5NLVPT.js";
13
13
  import "./chunk-I7JDGNG6.js";
14
14
  import "./chunk-A6SX5TAH.js";
15
15
  import "./chunk-33FNCQSY.js";
16
16
  import "./chunk-6PVPNMXU.js";
17
- import "./chunk-PXA5AWHY.js";
17
+ import "./chunk-XUMAD5IT.js";
18
18
  import "./chunk-IRH27ZC2.js";
19
19
  import "./chunk-QHWCP53L.js";
20
20
  import "./chunk-MOHAWIAW.js";
21
- import "./chunk-MYT7N6QH.js";
21
+ import "./chunk-X6QNZOTC.js";
22
22
  import "./chunk-O6GEWCJA.js";
23
23
  import "./chunk-T26EAKDL.js";
24
+ import "./chunk-ZPJWUGCS.js";
24
25
  import "./chunk-CPBF7KYF.js";
25
26
  import "./chunk-MISUEWB4.js";
26
27
  import "./chunk-KRXPRVGL.js";
27
28
  import "./chunk-A5YZ3FA2.js";
28
29
  import "./chunk-YAVY33G4.js";
29
30
  import "./chunk-2UISUFHQ.js";
30
- import "./chunk-6FMJLI5M.js";
31
- import "./chunk-PGEGUNH5.js";
31
+ import "./chunk-HFVW54NL.js";
32
+ import "./chunk-TZTBZ25J.js";
32
33
  import "./chunk-S6LOFUVP.js";
34
+ import "./chunk-SRY26X4H.js";
33
35
  import "./chunk-K623ENWT.js";
34
36
  import "./chunk-AQ37AY7B.js";
35
37
  import "./chunk-432XCUHF.js";
36
- import "./chunk-ZPJWUGCS.js";
37
38
  import "./chunk-XC656O42.js";
38
39
  import "./chunk-NAVJD2PQ.js";
39
40
  import "./chunk-QYPT3QUD.js";
@@ -42,24 +43,24 @@ import "./chunk-DGEIYUC3.js";
42
43
  import "./chunk-MPHPFVKK.js";
43
44
  import "./chunk-GLNBDYUX.js";
44
45
  import "./chunk-DJ2GSRLV.js";
45
- import "./chunk-XCLLRKY5.js";
46
+ import "./chunk-EIMKVOSF.js";
46
47
  import "./chunk-RPYYTL7E.js";
47
48
  import "./chunk-2J3OJGTL.js";
48
49
  import "./chunk-P3QQPMQA.js";
49
50
  import "./chunk-6O5DVH27.js";
50
51
  import "./chunk-GLCZKT5V.js";
51
52
  import "./chunk-2DNKEBXY.js";
52
- import "./chunk-M2F5PLOW.js";
53
+ import "./chunk-4K3RV3OA.js";
53
54
  import "./chunk-VGC4I5JJ.js";
54
55
  import "./chunk-E4WHKETF.js";
55
- import "./chunk-BV4QX43X.js";
56
+ import "./chunk-UEJESCS7.js";
56
57
  import {
57
58
  BaseDeclarativeTool,
58
59
  BaseToolInvocation,
59
60
  ToolDisplayNames,
60
61
  ToolNames
61
- } from "./chunk-I5GNT6ZS.js";
62
- import "./chunk-TFFMATHX.js";
62
+ } from "./chunk-CFDR3GNL.js";
63
+ import "./chunk-H35Q5CEG.js";
63
64
  import "./chunk-46UV252V.js";
64
65
  import "./chunk-ZBVS26BY.js";
65
66
  import "./chunk-BFHXDAR7.js";