@qwen-code/qwen-code 0.23.1-preview.1 → 0.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/bundled/computer-use/SKILL.md +189 -116
  2. package/bundled/goal-draft/SKILL.md +23 -13
  3. package/bundled/qc-helper/docs/_meta.ts +1 -0
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +47 -1
  5. package/bundled/qc-helper/docs/configuration/settings.md +57 -7
  6. package/bundled/qc-helper/docs/conversations-recovery.md +102 -0
  7. package/bundled/qc-helper/docs/features/channels/dingtalk.md +26 -0
  8. package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
  9. package/bundled/qc-helper/docs/features/commands.md +71 -6
  10. package/bundled/qc-helper/docs/features/computer-use.md +9 -7
  11. package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
  12. package/bundled/qc-helper/docs/features/goals.md +15 -3
  13. package/bundled/qc-helper/docs/features/skills.md +40 -0
  14. package/bundled/qc-helper/docs/qwen-serve.md +19 -1
  15. package/chunks/{MaxSizedBox-5ARLO5PR.js → MaxSizedBox-UDO6Y7RB.js} +35 -36
  16. package/chunks/{StandaloneSessionPicker-T6B322CB.js → StandaloneSessionPicker-D4CUOO4H.js} +55 -56
  17. package/chunks/{acp-startup-profiler-6ULXXQMS.js → acp-startup-profiler-KEU6VAYR.js} +2 -2
  18. package/chunks/{acpAgent-WTDEY5KD.js → acpAgent-KWLJFADK.js} +210 -131
  19. package/chunks/{agent-NXPUXEVZ.js → agent-GSUPGEOL.js} +24 -25
  20. package/chunks/{agent-headless-QQZTWOKO.js → agent-headless-HNYCQUJB.js} +24 -25
  21. package/chunks/{anthropicContentGenerator-6XDHXIII.js → anthropicContentGenerator-I7LQZH26.js} +30 -7
  22. package/chunks/{artifact-tool-DFVVJXL2.js → artifact-tool-P52OKKEF.js} +1 -1
  23. package/chunks/{askUserQuestion-GF7VQ44M.js → askUserQuestion-I5W5S3D6.js} +2 -2
  24. package/chunks/{bridge-OHY5OGOZ.js → bridge-B7CV6RVI.js} +40 -41
  25. package/chunks/{channel-management-service-ZDDG3G5S.js → channel-management-service-TRTLQTSV.js} +4 -4
  26. package/chunks/{channel-settings-store-7BJAS2SU.js → channel-settings-store-FW45IRUP.js} +46 -47
  27. package/chunks/{channel-worker-group-2ISMRENV.js → channel-worker-group-PIYPVCTF.js} +6 -6
  28. package/chunks/{channel-worker-manager-VSRPVPRH.js → channel-worker-manager-FQHEDTD2.js} +6 -6
  29. package/chunks/{channel-worker-supervisor-SRJBK72Z.js → channel-worker-supervisor-XJPZZ3VK.js} +3 -3
  30. package/chunks/{chunk-2WGJG2KW.js → chunk-25CBAK3H.js} +4 -4
  31. package/chunks/{chunk-XUSOYE2I.js → chunk-27LTEY6D.js} +1 -1
  32. package/chunks/{chunk-WTW36TJ3.js → chunk-2EKVPSIJ.js} +1 -1
  33. package/chunks/{chunk-NAKALAL4.js → chunk-2TMJRF46.js} +116 -15
  34. package/chunks/{chunk-E4L5BM2B.js → chunk-2YS3NU4A.js} +4 -4
  35. package/chunks/chunk-2Z3T52OC.js +82 -0
  36. package/chunks/{chunk-ER273QE6.js → chunk-2ZFO5JD7.js} +21 -4
  37. package/chunks/{chunk-WXC6OAWD.js → chunk-3BTHHXXE.js} +1 -1
  38. package/chunks/{chunk-GXZHYPHZ.js → chunk-3LPJ776W.js} +5 -2
  39. package/chunks/{chunk-XY3USGFE.js → chunk-3VDLQUR2.js} +1 -1
  40. package/chunks/{chunk-LK7S2D6V.js → chunk-3VWPPK5Q.js} +58 -4
  41. package/chunks/{chunk-IKLFS6SC.js → chunk-3YQMUBTS.js} +3 -3
  42. package/chunks/{chunk-P4RUUG64.js → chunk-45ROPFQY.js} +1 -1
  43. package/chunks/{chunk-W4LL5RZO.js → chunk-4ALNJDHL.js} +52 -13
  44. package/chunks/{chunk-D6PIMKY3.js → chunk-4VY3ITHR.js} +4 -4
  45. package/chunks/{chunk-H3UDNQLO.js → chunk-5CVY5Q2P.js} +3 -3
  46. package/chunks/{chunk-6UIACMGH.js → chunk-5DQ4YTIZ.js} +1 -1
  47. package/chunks/{chunk-P6LATTDG.js → chunk-5IL2BZHW.js} +3 -3
  48. package/chunks/{chunk-537SQ2AI.js → chunk-5WC2ECUK.js} +104 -16
  49. package/chunks/{chunk-HFTB354P.js → chunk-5Z4FCEPY.js} +60 -6
  50. package/chunks/{chunk-3K65MUKD.js → chunk-65I7S4Z3.js} +2 -1
  51. package/chunks/{chunk-AQ5NAGWI.js → chunk-66JBCTJF.js} +8 -7
  52. package/chunks/{chunk-54TF2ZIQ.js → chunk-6JXHO7LG.js} +3 -3
  53. package/chunks/{chunk-YCDL2SAS.js → chunk-6QILGINT.js} +2 -2
  54. package/chunks/{chunk-P5LDR7FI.js → chunk-6QV7Z74P.js} +3 -3
  55. package/chunks/{chunk-4HC4DYKN.js → chunk-6RZX2HIH.js} +1 -1
  56. package/chunks/{chunk-O45WBTNS.js → chunk-6SADVYQQ.js} +3 -3
  57. package/chunks/{chunk-KE3Q4JMY.js → chunk-6TPVIESH.js} +5 -7
  58. package/chunks/{chunk-2LD5U7Q3.js → chunk-6YEOCHSE.js} +29 -1
  59. package/chunks/{chunk-QWZOOIR3.js → chunk-75LBC7SV.js} +69 -12
  60. package/chunks/{chunk-7BZS4ZDV.js → chunk-7SL55L5H.js} +25 -18
  61. package/chunks/{chunk-O2GG7H4C.js → chunk-ARYNBBBM.js} +3 -3
  62. package/chunks/{chunk-CZACBHAW.js → chunk-B3EL44K3.js} +5 -5
  63. package/chunks/{chunk-VY6UVU7G.js → chunk-CABDNUJ4.js} +2 -2
  64. package/chunks/{chunk-RVNS7NWN.js → chunk-CALNF3Z3.js} +1 -1
  65. package/chunks/{chunk-MWHY26G3.js → chunk-CHVU543W.js} +1 -1
  66. package/chunks/{chunk-GZWW2QWR.js → chunk-CIKL2DQP.js} +2 -2
  67. package/chunks/{chunk-R355CUNQ.js → chunk-CLKE4IY3.js} +1 -77
  68. package/chunks/{chunk-MUZCSTOO.js → chunk-CRZBDVP2.js} +5 -4
  69. package/chunks/{chunk-SFMCYMVF.js → chunk-D6AQNMUA.js} +4 -4
  70. package/chunks/{chunk-D4CU6DKR.js → chunk-DO5SMV52.js} +10 -8
  71. package/chunks/{chunk-ZAZ3NFL6.js → chunk-DXQ6Z7AH.js} +315 -63
  72. package/chunks/{chunk-IXSGOSEG.js → chunk-DZ6D4B3K.js} +28 -25
  73. package/chunks/{chunk-GMNLYQOS.js → chunk-E6TI726I.js} +1 -1
  74. package/chunks/{chunk-JBTZUFR4.js → chunk-E7XSUYCZ.js} +6 -6
  75. package/chunks/{chunk-AHBLRVD5.js → chunk-EEKU6COG.js} +4 -4
  76. package/chunks/{chunk-47BZVBTE.js → chunk-EHTKOO6W.js} +4 -4
  77. package/chunks/{chunk-HJ34U5J4.js → chunk-ENZDGHGJ.js} +4 -4
  78. package/chunks/{chunk-IFD3BTEA.js → chunk-EOET4H7C.js} +3 -3
  79. package/chunks/{chunk-ZTAVGFKA.js → chunk-ERXNTINK.js} +1 -1
  80. package/chunks/{chunk-F47DITLZ.js → chunk-FAWTMDX7.js} +14 -0
  81. package/chunks/{chunk-KPXRFTT7.js → chunk-FETY36NQ.js} +1 -1
  82. package/chunks/{chunk-5JLQWQK6.js → chunk-FV4DM2M4.js} +2 -2
  83. package/chunks/{chunk-4F2QRVW6.js → chunk-FW4E4QPG.js} +1 -1
  84. package/chunks/{chunk-KJJPJYHI.js → chunk-FWRRUITH.js} +8 -8
  85. package/chunks/{chunk-4VUVBN3Y.js → chunk-G6UUOCUT.js} +87 -0
  86. package/chunks/{chunk-4JAGXZR3.js → chunk-GM44O6F7.js} +1 -1
  87. package/chunks/{chunk-4MCY33Y2.js → chunk-GNY7B3CA.js} +1 -1
  88. package/chunks/{chunk-VEFRT7NX.js → chunk-H3Q3RSKZ.js} +1 -1
  89. package/chunks/{chunk-43NOB5NM.js → chunk-HIXUUCGY.js} +188 -13
  90. package/chunks/{chunk-EJNYBDYC.js → chunk-HNLMYDQE.js} +1 -1
  91. package/chunks/{chunk-JOPC3FND.js → chunk-HUX2DOTF.js} +5 -5
  92. package/chunks/{chunk-GCFZ2LAX.js → chunk-HZ2HUXX7.js} +2 -2
  93. package/chunks/{chunk-CWNC7M73.js → chunk-IKG2YVRZ.js} +2 -2
  94. package/chunks/{chunk-L4R7BCVV.js → chunk-J3TJH52D.js} +1 -1
  95. package/chunks/{chunk-QMFOYPGV.js → chunk-J3VZF2AL.js} +2 -2
  96. package/chunks/{chunk-ZJ2LM2SI.js → chunk-JGDRB4FP.js} +104 -33
  97. package/chunks/{chunk-LMJQSPWB.js → chunk-KA5HR3G2.js} +1 -1
  98. package/chunks/{chunk-G34YLYCS.js → chunk-L7V52QEZ.js} +10 -10
  99. package/chunks/{chunk-GVVCLL2P.js → chunk-LNCNUMJ5.js} +451 -396
  100. package/chunks/{chunk-RDKXZ2LS.js → chunk-LYT2OU7D.js} +1 -1
  101. package/chunks/{chunk-SAZS4IWW.js → chunk-LZGFVUWZ.js} +3 -3
  102. package/chunks/{chunk-32YDNYXP.js → chunk-M73KHGNR.js} +13 -66
  103. package/chunks/{chunk-ADJD4LZF.js → chunk-MA5OUNN6.js} +1 -1
  104. package/chunks/{chunk-2RYWGYB3.js → chunk-MFYH2VXV.js} +3 -3
  105. package/chunks/{chunk-RPBMP6BN.js → chunk-MWIO7MF6.js} +3 -0
  106. package/chunks/{chunk-OECNP26L.js → chunk-N6S3NUYJ.js} +1 -1
  107. package/chunks/{chunk-5MTARK4Y.js → chunk-N7YQEKGX.js} +6 -6
  108. package/chunks/{chunk-XOVVCGZX.js → chunk-NB3NDQQK.js} +1 -1
  109. package/chunks/chunk-NOO4QFXM.js +171 -0
  110. package/chunks/{chunk-NGX4NUNP.js → chunk-O2FEO2CB.js} +131 -6
  111. package/chunks/{chunk-XHGGYCTA.js → chunk-O2JBJQCF.js} +1 -1
  112. package/chunks/{chunk-LPBQODMR.js → chunk-OESZTXTG.js} +4 -4
  113. package/chunks/{chunk-UKADFFL2.js → chunk-OFVAS4AR.js} +1 -1
  114. package/chunks/{chunk-TDP7UULF.js → chunk-OPMKGOLD.js} +1 -1
  115. package/chunks/{chunk-LDS57224.js → chunk-OWCFKIFQ.js} +1 -1
  116. package/chunks/{chunk-I72PHOKL.js → chunk-PDUMGZ2P.js} +1524 -1382
  117. package/chunks/{chunk-JRYL3T2O.js → chunk-PQSCGZT2.js} +1 -1
  118. package/chunks/{chunk-WEXA2DNG.js → chunk-PSPAM24S.js} +14 -0
  119. package/chunks/{chunk-UKKYOIVT.js → chunk-QAZ2MGYT.js} +2 -2
  120. package/chunks/{chunk-J3O5I5ZD.js → chunk-QK4K76T6.js} +3 -3
  121. package/chunks/{chunk-NUQFUXOG.js → chunk-QTNCGZHQ.js} +2 -0
  122. package/chunks/{chunk-5YY5MZT6.js → chunk-QZOXVQPK.js} +1 -1
  123. package/chunks/{chunk-QJVZLILI.js → chunk-R7OO56VZ.js} +1 -1
  124. package/chunks/{chunk-IQN2CCIE.js → chunk-RNYENHN5.js} +398 -55
  125. package/chunks/{chunk-64MQTIX7.js → chunk-RPFJJ33Z.js} +2 -2
  126. package/chunks/{chunk-4VZCORNT.js → chunk-RXT4QBDX.js} +1 -1
  127. package/chunks/{chunk-SN5FV4FY.js → chunk-S6QVI3MV.js} +3 -3
  128. package/chunks/{chunk-NXWYCSPL.js → chunk-SOA4HKRJ.js} +1 -1
  129. package/chunks/{chunk-JLWFGYXU.js → chunk-T2IHCZLS.js} +2 -2
  130. package/chunks/{chunk-DNPHKA72.js → chunk-TGC4264Q.js} +6 -6
  131. package/chunks/{chunk-PZV2FASB.js → chunk-TRWQQBVH.js} +1 -1
  132. package/chunks/{chunk-Y3ZKI4RQ.js → chunk-TWAMIEQ2.js} +85 -22
  133. package/chunks/{chunk-KK2GZGBK.js → chunk-TWWS7XUW.js} +14 -11
  134. package/chunks/{chunk-4IQKBLTQ.js → chunk-UHUT4IDM.js} +18 -9
  135. package/chunks/{chunk-BKNY7PDI.js → chunk-USN6VNTO.js} +1 -1
  136. package/chunks/{chunk-TMWB67LS.js → chunk-UXDVUFKU.js} +3 -3
  137. package/chunks/{chunk-HY3DXYZK.js → chunk-UYDQYDW2.js} +1 -1
  138. package/chunks/{chunk-3K456UJF.js → chunk-VF6D6EGV.js} +12 -4
  139. package/chunks/{chunk-PZUOHCWI.js → chunk-WAASYFPK.js} +2 -2
  140. package/chunks/{chunk-OHOO527W.js → chunk-WG7BL3FY.js} +52 -2
  141. package/chunks/{chunk-JPEAQJNS.js → chunk-WJDXKQIO.js} +1 -1
  142. package/chunks/{chunk-MNEYUNOE.js → chunk-WNISCNTA.js} +40 -2
  143. package/chunks/{chunk-Z6WZPXQH.js → chunk-WQMUGQ6G.js} +2 -2
  144. package/chunks/{chunk-N7VURC4O.js → chunk-WXFCI3O5.js} +2 -2
  145. package/chunks/{chunk-VU7O7CGQ.js → chunk-XDNFODER.js} +1 -1
  146. package/chunks/{chunk-N7EYO2E7.js → chunk-XQ4RDO5B.js} +1 -1
  147. package/chunks/{chunk-VDXYYVCD.js → chunk-XVTCSVBK.js} +579 -57
  148. package/chunks/{chunk-PTFFWTTO.js → chunk-XZ3Z43XL.js} +3 -3
  149. package/chunks/{chunk-QSC5YOEC.js → chunk-YAC7H4K3.js} +2 -2
  150. package/chunks/{chunk-43JNQAHO.js → chunk-YCEKI7QX.js} +51 -10
  151. package/chunks/{chunk-7IKXTGZT.js → chunk-YI2YCNSP.js} +1 -1
  152. package/chunks/{chunk-VUSSAGKI.js → chunk-YZTGGCEE.js} +10 -2
  153. package/chunks/{chunk-WR3SH3EY.js → chunk-ZNO5BUAD.js} +149 -66
  154. package/chunks/{chunk-URSCX7S7.js → chunk-ZPL2TZNA.js} +353 -11
  155. package/chunks/{chunk-UEZOXZNI.js → chunk-ZU2T5JIS.js} +804 -371
  156. package/chunks/{config-utils-QXDOTXEQ.js → config-utils-KTDSQ4MU.js} +39 -40
  157. package/chunks/{contextCommand-RN4KARWC.js → contextCommand-UQ3KRYGK.js} +37 -38
  158. package/chunks/{core-runtime-NAZCOKHB.js → core-runtime-JR34JAFH.js} +35 -36
  159. package/chunks/{create-sub-session-BCSM4WKB.js → create-sub-session-RGPJOI4S.js} +45 -40
  160. package/chunks/{create-sub-session-BQ3SE4TX.js → create-sub-session-TGIX63YU.js} +2 -2
  161. package/chunks/{cron-create-D6HQ7I7I.js → cron-create-GTPVMJCF.js} +1 -1
  162. package/chunks/{cron-delete-KK3D2SQV.js → cron-delete-ZBK27Z4K.js} +1 -1
  163. package/chunks/{cron-list-VBF3IZMF.js → cron-list-KTFKFDKC.js} +1 -1
  164. package/chunks/{daemon-LCUELM6E.js → daemon-UI6SQSBV.js} +1 -1
  165. package/chunks/{daemon-git-worktree-guard-3K5CAU36.js → daemon-git-worktree-guard-H3OA26KQ.js} +35 -36
  166. package/chunks/{daemon-status-provider-4X3ZZQTZ.js → daemon-status-provider-6WZLKSZU.js} +45 -46
  167. package/chunks/{daemon-trust-policy-R45CFUJA.js → daemon-trust-policy-3EDP2BYD.js} +42 -43
  168. package/chunks/{daemon-trust-policy-monitor-DSSFCO3K.js → daemon-trust-policy-monitor-CRHZPK52.js} +42 -43
  169. package/chunks/{deferred-core-runtime-UO2M6WYI.js → deferred-core-runtime-LO5NTQQ4.js} +35 -36
  170. package/chunks/{discovery-TUM3ZQ6U.js → discovery-XP4RMDUM.js} +4 -2
  171. package/chunks/{display-image-EVVTBVYE.js → display-image-CTNHJRZC.js} +4 -4
  172. package/chunks/{dist-SIHF5MU2.js → dist-24TCWK5H.js} +1 -1
  173. package/chunks/{dist-AFH3BMZZ.js → dist-5I4HLUTO.js} +1 -1
  174. package/chunks/{dist-3T5MDUHP.js → dist-FDISN4AK.js} +1 -1
  175. package/chunks/{dist-SB2XRXZA.js → dist-M4CBX53H.js} +1 -1
  176. package/chunks/{dist-UVHW2U56.js → dist-NQ2636VT.js} +1 -1
  177. package/chunks/{dist-PH5RSTEA.js → dist-OR2ZQTXZ.js} +1 -1
  178. package/chunks/{dist-MK5PPBRF.js → dist-STAGIFNB.js} +1099 -67
  179. package/chunks/{dist-R5Y34V6T.js → dist-WZTUKIDR.js} +2 -2
  180. package/chunks/{dist-QUU7TVE3.js → dist-XJ25G6OH.js} +1 -1
  181. package/chunks/{edit-VNBCTRWP.js → edit-LB7Z7XK5.js} +24 -25
  182. package/chunks/{en-JMR535HP.js → en-YJNRUQG4.js} +1 -1
  183. package/chunks/{enter-worktree-CEVK7MQ2.js → enter-worktree-YFTKHXHZ.js} +4 -4
  184. package/chunks/{enterPlanMode-4KMZMUIA.js → enterPlanMode-P6TVUFIY.js} +24 -25
  185. package/chunks/{environment-S2HYQDON.js → environment-QATJNNKI.js} +38 -39
  186. package/chunks/{errors-DAAN5TL7.js → errors-3XJ37PS2.js} +37 -38
  187. package/chunks/{exit-worktree-D3YE6MUN.js → exit-worktree-NF2XEMES.js} +5 -5
  188. package/chunks/{exitPlanMode-HR36HG3D.js → exitPlanMode-A3OKL5UO.js} +24 -25
  189. package/chunks/{fast-path-4IWSW3UV.js → fast-path-DBIT5YQQ.js} +3 -3
  190. package/chunks/{fast-path-settings-ISEJPRYE.js → fast-path-settings-SATXY3PD.js} +3 -3
  191. package/chunks/{glob-IZYB2XH2.js → glob-73EDTXUE.js} +24 -25
  192. package/chunks/{goal-tools-VGUPKQDJ.js → goal-tools-DFI6YMSD.js} +24 -25
  193. package/chunks/{grep-OUVLNXG7.js → grep-BLHF2S5D.js} +2 -2
  194. package/chunks/{handleAutoUpdate-D56FMDTW.js → handleAutoUpdate-2FUNJO3B.js} +38 -39
  195. package/chunks/{i18n-BKE5WO6T.js → i18n-FDIA6KFI.js} +38 -37
  196. package/chunks/{image-gen-SHVQ3XID.js → image-gen-XP4NNIYG.js} +5 -5
  197. package/chunks/{initializer-MS4SGEHF.js → initializer-4MJTJOTW.js} +42 -43
  198. package/chunks/{installationInfo-542MGC4S.js → installationInfo-232RA2OK.js} +35 -36
  199. package/chunks/{list-H6XTKUWL.js → list-WN6WSGEB.js} +45 -46
  200. package/chunks/{list-agents-ULYBGJXC.js → list-agents-I5TRH3J7.js} +2 -2
  201. package/chunks/{llm-3NUC4EJY.js → llm-UDFWQWZA.js} +77 -78
  202. package/chunks/{llm-content-generator-R4NL3OQN.js → llm-content-generator-VLMZ2A7A.js} +23 -8
  203. package/chunks/{loadedSettingsAdapter-3XLKYDVT.js → loadedSettingsAdapter-OBQEIXM7.js} +42 -43
  204. package/chunks/{loggingContentGenerator-ZYSWVNEO.js → loggingContentGenerator-RGVUMUVX.js} +26 -27
  205. package/chunks/{loop-wakeup-B27BEYRL.js → loop-wakeup-HL6XOWI4.js} +2 -2
  206. package/chunks/{ls-3IIMMVKF.js → ls-YV7RKLKY.js} +1 -1
  207. package/chunks/{lsp-VJAT7XKS.js → lsp-NO3AMRZT.js} +1 -1
  208. package/chunks/{managed-npm-update-L2I53ZAI.js → managed-npm-update-QBAJYCFU.js} +35 -36
  209. package/chunks/{mcp-4PIXQASW.js → mcp-OTIZZCPY.js} +42 -43
  210. package/chunks/{monitor-O2YQTOZZ.js → monitor-BV5XF6LL.js} +24 -25
  211. package/chunks/{nonInteractiveCli-LV7CDBA2.js → nonInteractiveCli-W6MUKDVJ.js} +79 -77
  212. package/chunks/{notebook-edit-4RE2ALH4.js → notebook-edit-HGBEKGTE.js} +24 -25
  213. package/chunks/{openaiContentGenerator-7ND7K5CP.js → openaiContentGenerator-NSU3ERBH.js} +15 -15
  214. package/chunks/{pidfile-UFTLQ7NP.js → pidfile-LE3TU4GE.js} +35 -36
  215. package/chunks/{processUtils-3XBB4FYV.js → processUtils-YFBGJK67.js} +2 -2
  216. package/chunks/{prompt-terminal-ledger-2QASOGMM.js → prompt-terminal-ledger-4W4W7DSO.js} +36 -37
  217. package/chunks/{qwenContentGenerator-AELTUTH6.js → qwenContentGenerator-HTA57WFC.js} +28 -29
  218. package/chunks/{qwenOAuth2-BS5D2LYV.js → qwenOAuth2-KX6LVYQ3.js} +4 -4
  219. package/chunks/{read-file-PDWHZPHX.js → read-file-KHPQ2MB6.js} +4 -4
  220. package/chunks/{read-mcp-resource-YXJZ75UB.js → read-mcp-resource-D3N75DGF.js} +1 -1
  221. package/chunks/{record-artifact-WJDOV6XU.js → record-artifact-Q5CRGJTP.js} +2 -2
  222. package/chunks/{report-findings-Q4UACKWR.js → report-findings-TJ34R7QK.js} +3 -3
  223. package/chunks/{request-shutdown-2YZ3E3GH.js → request-shutdown-LRKMTBAD.js} +6 -6
  224. package/chunks/{resumeHistoryUtils-QRXZEEBA.js → resumeHistoryUtils-K7RV3QBN.js} +39 -40
  225. package/chunks/{ripGrep-KSOOLE6H.js → ripGrep-NBBVCMG4.js} +7 -7
  226. package/chunks/{run-qwen-serve-RTAREPT6.js → run-qwen-serve-A3JBOZCM.js} +58 -60
  227. package/chunks/{runtime-ESFSCJRZ.js → runtime-7YOU2KJ3.js} +47 -48
  228. package/chunks/{scheduled-tasks-6ZHRNBH6.js → scheduled-tasks-52LXK7LN.js} +42 -43
  229. package/chunks/{scheduler-DQI6KV7T.js → scheduler-J44M72VM.js} +37 -38
  230. package/chunks/{send-message-PQCVSVMN.js → send-message-AWKUDJBH.js} +8 -8
  231. package/chunks/{serve-FY7ZEW52.js → serve-TRC6XJUB.js} +42 -43
  232. package/chunks/{server-KNDY6K5F.js → server-YPNTJLX2.js} +1314 -841
  233. package/chunks/{session-MCEPXAZP.js → session-FMMIBFYX.js} +98 -84
  234. package/chunks/{session-attachments-root-OLNAE6GF.js → session-attachments-root-LDJMNK7K.js} +35 -36
  235. package/chunks/{session-pr-refresh-HKJHQQQK.js → session-pr-refresh-NLR4EK2J.js} +41 -42
  236. package/chunks/{settings-VXO4WBMK.js → settings-A46L577J.js} +41 -42
  237. package/chunks/{shell-U263OTES.js → shell-Q5LSQPPY.js} +24 -25
  238. package/chunks/{skill-SDODGBKL.js → skill-75KPJRCM.js} +10 -57
  239. package/chunks/{skill-settings-YEIA22QJ.js → skill-settings-775YT4YR.js} +41 -42
  240. package/chunks/{spawnChannel-4WJZVFPP.js → spawnChannel-XY73I5CU.js} +37 -38
  241. package/chunks/{standalone-update-ZWVQUO64.js → standalone-update-L46XXNQ2.js} +37 -38
  242. package/chunks/{start-opentui-ui-BFYCJQRZ.js → start-opentui-ui-WLV43247.js} +2007 -1003
  243. package/chunks/{startInteractiveUI-JYAFCMHL.js → startInteractiveUI-F5DKMLOV.js} +1231 -1528
  244. package/chunks/{syntheticOutput-AUAJBNXR.js → syntheticOutput-D2P5V6RG.js} +2 -2
  245. package/chunks/{task-create-LD5ISM3E.js → task-create-PMAFST2T.js} +7 -7
  246. package/chunks/{task-list-YISJ4RJA.js → task-list-R2HSY2NC.js} +1 -1
  247. package/chunks/{task-stop-65ZOVATJ.js → task-stop-BFSKRTGV.js} +1 -1
  248. package/chunks/{task-update-AAN4ZVEY.js → task-update-JYC57USF.js} +7 -7
  249. package/chunks/{team-create-KU7MABNO.js → team-create-2PATB77U.js} +24 -25
  250. package/chunks/{team-delete-XFRRTJTT.js → team-delete-CBHVBTPB.js} +1 -1
  251. package/chunks/{team-plan-approval-DPB377A3.js → team-plan-approval-QTANEWOS.js} +24 -25
  252. package/chunks/{terminal-image-renderer-WGWRENOF.js → terminal-image-renderer-OGULCFNF.js} +37 -38
  253. package/chunks/{theme-manager-GBUFULSO.js → theme-manager-CNO3QERP.js} +35 -36
  254. package/chunks/{todoWrite-G7NT4IFP.js → todoWrite-5ERKFWAK.js} +3 -5
  255. package/chunks/{tool-search-6YUXHBPT.js → tool-search-VXWEOZE7.js} +9 -9
  256. package/chunks/{total-session-admission-54R2JQ5L.js → total-session-admission-4KAADZPB.js} +41 -42
  257. package/chunks/{trustedFolders-KAJIDJTH.js → trustedFolders-PPJSOPOT.js} +36 -37
  258. package/chunks/{update-relaunch-XM4IWBFD.js → update-relaunch-4PT4MW7B.js} +5 -5
  259. package/chunks/{updateCheck-W6UZFURI.js → updateCheck-WAVFLWNG.js} +37 -38
  260. package/chunks/{useAutoAcceptIndicator-LAWYHY3U.js → useAutoAcceptIndicator-XNED4NRB.js} +44 -45
  261. package/chunks/{validateNonInterActiveAuth-7WCKHRN2.js → validateNonInterActiveAuth-J676DUQ2.js} +74 -74
  262. package/chunks/{version-3ZU43RJ6.js → version-J6SRRQB2.js} +1 -1
  263. package/chunks/{web-fetch-QHI2SQL4.js → web-fetch-FMZZYX44.js} +7 -7
  264. package/chunks/{web-search-3KZZKWNY.js → web-search-3G2KXCX5.js} +19 -8
  265. package/chunks/{workflow-HRW7Y2X4.js → workflow-PPZZICQ7.js} +26 -27
  266. package/chunks/{workspace-providers-status-KTGCWCPC.js → workspace-providers-status-IIYTAQST.js} +46 -47
  267. package/chunks/{workspace-registration-store-LHLPPWNE.js → workspace-registration-store-VHCDXAV7.js} +1 -1
  268. package/chunks/{workspace-registry-X34MLN52.js → workspace-registry-I7VQIPS2.js} +41 -42
  269. package/chunks/{workspace-runtime-coordinator-U4PW4P7K.js → workspace-runtime-coordinator-DBGNY32G.js} +41 -42
  270. package/chunks/{workspace-service-KD7BCGYL.js → workspace-service-QSKB2T54.js} +47 -48
  271. package/chunks/{workspace-skills-status-YJGO6Y3T.js → workspace-skills-status-T7GPT65J.js} +43 -44
  272. package/chunks/{workspace-trust-reconciler-EUYHISCH.js → workspace-trust-reconciler-2PKRDAU4.js} +48 -49
  273. package/chunks/{write-file-EBSB34NJ.js → write-file-L76CGFTQ.js} +26 -27
  274. package/chunks/{zh-TW-W2GNP2IU.js → zh-TW-N2TBF2F2.js} +1 -1
  275. package/chunks/{zh-DVFYHRK5.js → zh-VBFCRQBL.js} +1 -1
  276. package/chunks/{zoom-image-UJ5VKWKP.js → zoom-image-TDJJY2VZ.js} +4 -4
  277. package/cli.js +13 -13
  278. package/export-transcript-document.js +126 -122
  279. package/locales/en.js +2 -2
  280. package/locales/zh-TW.js +2 -2
  281. package/locales/zh.js +2 -2
  282. package/package.json +3 -3
  283. package/web-shell/assets/{abnfDiagram-VCTEODGH-Dur--luQ.js → abnfDiagram-VCTEODGH-DHc6plZn.js} +1 -1
  284. package/web-shell/assets/{arc-tYLobxFi.js → arc-BQ9m8TDV.js} +1 -1
  285. package/web-shell/assets/{architectureDiagram-5GKGNRK7-IG6aXD03.js → architectureDiagram-5GKGNRK7-D5ap3oVB.js} +1 -1
  286. package/web-shell/assets/{blockDiagram-NRAW4CY4-C6eBSkfA.js → blockDiagram-NRAW4CY4-BIbnyNph.js} +1 -1
  287. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BrX3HJqB.js → c4Diagram-UCG6FXSJ-BRsdx_iG.js} +1 -1
  288. package/web-shell/assets/channel-uMMdTrYk.js +1 -0
  289. package/web-shell/assets/{chunk-2Q5K7J3B-B3fcJ8ee.js → chunk-2Q5K7J3B-3lf1fNlx.js} +1 -1
  290. package/web-shell/assets/{chunk-5VM5RSS4-CeC90yKM.js → chunk-5VM5RSS4-DP8VNRc4.js} +1 -1
  291. package/web-shell/assets/{chunk-F27PBJKO-CW44RVki.js → chunk-F27PBJKO-DrohDmZ6.js} +1 -1
  292. package/web-shell/assets/{chunk-G27WJ6UU-D1PAMukD.js → chunk-G27WJ6UU-UZ2QhSx6.js} +1 -1
  293. package/web-shell/assets/{chunk-JWPE2WC7-Dt3Y2Fvx.js → chunk-JWPE2WC7-BIMHVcZK.js} +1 -1
  294. package/web-shell/assets/{chunk-LCL6LL3I-CZHw2lLI.js → chunk-LCL6LL3I-izRxdSDd.js} +1 -1
  295. package/web-shell/assets/{chunk-POPQ4Y6H-ysNAdTGx.js → chunk-POPQ4Y6H-CXADD4PP.js} +1 -1
  296. package/web-shell/assets/{chunk-SVP7TREG-BdNXW6YQ.js → chunk-SVP7TREG-B96d8Y_1.js} +1 -1
  297. package/web-shell/assets/{chunk-XXDRQBXY-DgqQ9UA8.js → chunk-XXDRQBXY-CF2sVQpv.js} +1 -1
  298. package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +1 -0
  299. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +1 -0
  300. package/web-shell/assets/{cose-bilkent-JH36ORCC-BILImXzJ.js → cose-bilkent-JH36ORCC-CT6tXVAS.js} +1 -1
  301. package/web-shell/assets/csv-CX7rUNeC.svg +1 -0
  302. package/web-shell/assets/{cynefin-OW5HDTMX-DR88Pund.js → cynefin-OW5HDTMX-X1NS4vtV.js} +1 -1
  303. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BYFbfkA6.js → cynefinDiagram-5FMLGOSQ-DNsKNOT4.js} +1 -1
  304. package/web-shell/assets/{dagre-3AP2YEHR-rfpyc6sX.js → dagre-3AP2YEHR-9-AHKqsb.js} +1 -1
  305. package/web-shell/assets/{diagram-S7CK7UJ4-BJxLmEwH.js → diagram-S7CK7UJ4-Bjgms7j6.js} +1 -1
  306. package/web-shell/assets/{diagram-UQ7AKVKN-H34xm7k3.js → diagram-UQ7AKVKN-h6bCprbE.js} +1 -1
  307. package/web-shell/assets/{diagram-VSXAHHWV-HYxhwNLx.js → diagram-VSXAHHWV-4SbQXVLt.js} +1 -1
  308. package/web-shell/assets/{diagram-VX7I27RA-BJazso8F.js → diagram-VX7I27RA-B5gPCzzB.js} +1 -1
  309. package/web-shell/assets/{diagram-Z3DM3KII-Clje1aNy.js → diagram-Z3DM3KII-DFJXIA3A.js} +1 -1
  310. package/web-shell/assets/{ebnfDiagram-PWID7BFC-M93YBkFh.js → ebnfDiagram-PWID7BFC-FwyaU7VY.js} +1 -1
  311. package/web-shell/assets/{erDiagram-SSCWMZ5O-DY8XzSHU.js → erDiagram-SSCWMZ5O-8vJQh2te.js} +1 -1
  312. package/web-shell/assets/{flowDiagram-A5DVABFB-CE6Aylcq.js → flowDiagram-A5DVABFB-BzA_1gMN.js} +1 -1
  313. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DI-5LL22.js → ganttDiagram-EL5Y4UJY-Co-ABbVX.js} +1 -1
  314. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-C7BZWElk.js → gitGraphDiagram-WWUBYQGX-DW_FcyrX.js} +1 -1
  315. package/web-shell/assets/{index-DclFHns9.js → index-BbMXfhNG.js} +1 -1
  316. package/web-shell/assets/{index-CVyqwW7y.js → index-Bu-rZoJ-.js} +483 -475
  317. package/web-shell/assets/index-CsPwZ1ut.css +36 -0
  318. package/web-shell/assets/{infoDiagram-RXCK75RN-CGUSy4Pc.js → infoDiagram-RXCK75RN-BEgfhUFN.js} +1 -1
  319. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-B5BVks9q.js → ishikawaDiagram-5VMMS53U-DCsMxQmc.js} +1 -1
  320. package/web-shell/assets/{journeyDiagram-EYS64GPL-CFh6Tf7h.js → journeyDiagram-EYS64GPL-DyIEYoHz.js} +1 -1
  321. package/web-shell/assets/{kanban-definition-3QL26DDD-B7TlxP7c.js → kanban-definition-3QL26DDD-CkxjqCNr.js} +1 -1
  322. package/web-shell/assets/{layout-Br_pZq2Q.js → layout-BEWc0Al9.js} +1 -1
  323. package/web-shell/assets/{linear-BVlP6fte.js → linear-CNuNxirL.js} +1 -1
  324. package/web-shell/assets/{mermaid.core-TrcYWoiF.js → mermaid.core-DZBre674.js} +6 -6
  325. package/web-shell/assets/{mindmap-definition-FBJOCRG2-BJ4LzqjZ.js → mindmap-definition-FBJOCRG2-CpafFz_F.js} +1 -1
  326. package/web-shell/assets/{pegDiagram-XKGWAZYB-1b_MxlOl.js → pegDiagram-XKGWAZYB-DfZqk_dq.js} +1 -1
  327. package/web-shell/assets/{pieDiagram-E7YTZNPT-B8zl0YhY.js → pieDiagram-E7YTZNPT-S0UWXlgC.js} +1 -1
  328. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-CIZO8ukl.js → quadrantDiagram-AXDQQJYC-dd37_Ohj.js} +1 -1
  329. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CepHSbCj.js → railroadDiagram-O6MQD6OU-CH8NJZ7u.js} +1 -1
  330. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BCgxkcSW.js → requirementDiagram-EFPCY7ZU-CFdqWYih.js} +1 -1
  331. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CE5CcoMM.js → sankeyDiagram-P5KCCOFB-CsddcEGD.js} +1 -1
  332. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DvgHi-d5.js → sequenceDiagram-WJ2MYXX4-BZ270mGw.js} +1 -1
  333. package/web-shell/assets/{sizeCapture-X5ZJPWSS-T-fAsCPX.js → sizeCapture-X5ZJPWSS-CGaS4DBV.js} +1 -1
  334. package/web-shell/assets/{stateDiagram-HBIQ2CUA-DYHaul-5.js → stateDiagram-HBIQ2CUA-COpIzMu6.js} +1 -1
  335. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +1 -0
  336. package/web-shell/assets/{swimlanes-XN3QIQJK-Dbz3Qiej.js → swimlanes-XN3QIQJK-CMF889m3.js} +1 -1
  337. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +8 -0
  338. package/web-shell/assets/{timeline-definition-24CTP7MA-9NVRts3N.js → timeline-definition-24CTP7MA-BelnxYz5.js} +1 -1
  339. package/web-shell/assets/{vennDiagram-4TSXK5OY-C7cb7vnH.js → vennDiagram-4TSXK5OY-CU-NRqIB.js} +1 -1
  340. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CG-8Ddjm.js → wardleyDiagram-VM6X3IG4-CDNKqWh-.js} +1 -1
  341. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-iGeYAcP4.js → xychartDiagram-S5SC5T6Z-CLqguL5D.js} +1 -1
  342. package/web-shell/index.html +6 -3
  343. package/chunks/chunk-3UMWOKJC.js +0 -78
  344. package/chunks/chunk-FKJM6JKY.js +0 -98
  345. package/chunks/chunk-IQAFKVXS.js +0 -22
  346. package/web-shell/assets/channel-uEkvKckd.js +0 -1
  347. package/web-shell/assets/classDiagram-DTDB5LWJ-DuPsnhWS.js +0 -1
  348. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DuPsnhWS.js +0 -1
  349. package/web-shell/assets/index-FO7JXPnH.css +0 -36
  350. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-BcYho9a4.js +0 -1
  351. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-D6HsOIgX.js +0 -8
@@ -7,10 +7,10 @@ import {
7
7
  jsonStringPayloadByteLength,
8
8
  observeAcpToolResultProjection,
9
9
  truncateJsonStringPayload
10
- } from "./chunk-KK2GZGBK.js";
10
+ } from "./chunk-TWWS7XUW.js";
11
11
  import {
12
12
  isA2uiToolMeta
13
- } from "./chunk-NAKALAL4.js";
13
+ } from "./chunk-2TMJRF46.js";
14
14
  import {
15
15
  redactLogCredentials
16
16
  } from "./chunk-M5GB774H.js";
@@ -20,7 +20,7 @@ import {
20
20
  parseGoalSnapshotV2,
21
21
  parseGoalStateCause,
22
22
  restorableAskUserQuestionCallIds
23
- } from "./chunk-I72PHOKL.js";
23
+ } from "./chunk-PDUMGZ2P.js";
24
24
  import {
25
25
  init_esbuild_shims
26
26
  } from "./chunk-5O2XNYP6.js";
@@ -2,10 +2,10 @@
2
2
  "use strict";
3
3
  import {
4
4
  getRateLimitErrorDetails
5
- } from "./chunk-W4LL5RZO.js";
5
+ } from "./chunk-4ALNJDHL.js";
6
6
  import {
7
7
  isInternalPromptId
8
- } from "./chunk-P5LDR7FI.js";
8
+ } from "./chunk-6QV7Z74P.js";
9
9
  import {
10
10
  createDebugLogger
11
11
  } from "./chunk-ZAFYHRVY.js";
@@ -8,10 +8,10 @@ import {
8
8
  } from "./chunk-TXASDT2M.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-MUZCSTOO.js";
11
+ } from "./chunk-CRZBDVP2.js";
12
12
  import {
13
13
  So
14
- } from "./chunk-I72PHOKL.js";
14
+ } from "./chunk-PDUMGZ2P.js";
15
15
  import {
16
16
  createDebugLogger
17
17
  } from "./chunk-ZAFYHRVY.js";
@@ -93,6 +93,24 @@ function escapePS(s) {
93
93
  return s.replace(/'/g, "''");
94
94
  }
95
95
  __name(escapePS, "escapePS");
96
+ function resolveUpdateBaseUrl() {
97
+ const value = process.env["QWEN_UPDATE_BASE_URL"]?.trim();
98
+ if (!value) return void 0;
99
+ const invalidUrl = /* @__PURE__ */ __name(() => new Error(
100
+ "QWEN_UPDATE_BASE_URL must be an absolute HTTPS URL without credentials, query parameters, or a fragment."
101
+ ), "invalidUrl");
102
+ let url;
103
+ try {
104
+ url = new URL(value);
105
+ } catch {
106
+ throw invalidUrl();
107
+ }
108
+ if (!/^https:\/\//i.test(value) || url.username || url.password || /[?#\s]/.test(value)) {
109
+ throw invalidUrl();
110
+ }
111
+ return url.href.replace(/\/+$/, "");
112
+ }
113
+ __name(resolveUpdateBaseUrl, "resolveUpdateBaseUrl");
96
114
  async function tryFetch(url, timeoutMs = FETCH_TIMEOUT_MS) {
97
115
  try {
98
116
  const { fetch } = await loadUndici();
@@ -110,7 +128,17 @@ async function tryFetch(url, timeoutMs = FETCH_TIMEOUT_MS) {
110
128
  }
111
129
  }
112
130
  __name(tryFetch, "tryFetch");
113
- async function downloadWithFallback(versionPath, filename, timeoutMs = FETCH_TIMEOUT_MS) {
131
+ async function downloadWithFallback(versionPath, filename, timeoutMs = FETCH_TIMEOUT_MS, baseUrl) {
132
+ if (baseUrl) {
133
+ const result = await tryFetch(
134
+ `${baseUrl}/${versionPath}/${filename}`,
135
+ timeoutMs
136
+ );
137
+ if (result.response) return result.response;
138
+ throw new Error(
139
+ `Failed to download ${filename} from QWEN_UPDATE_BASE_URL: ${result.error.message}`
140
+ );
141
+ }
114
142
  const ossUrl = `${OSS_BASE}/${versionPath}/${filename}`;
115
143
  const ossResult = await tryFetch(ossUrl, timeoutMs);
116
144
  if (ossResult.response) return ossResult.response;
@@ -122,13 +150,23 @@ async function downloadWithFallback(versionPath, filename, timeoutMs = FETCH_TIM
122
150
  );
123
151
  }
124
152
  __name(downloadWithFallback, "downloadWithFallback");
125
- async function verifyChecksum(actualHash, filename, versionPath) {
126
- const response = await downloadWithFallback(versionPath, "SHA256SUMS");
153
+ async function verifyChecksum(actualHash, filename, versionPath, baseUrl) {
154
+ const response = await downloadWithFallback(
155
+ versionPath,
156
+ "SHA256SUMS",
157
+ FETCH_TIMEOUT_MS,
158
+ baseUrl
159
+ );
127
160
  const text = await response.text();
128
161
  const requireSig = process.env["QWEN_REQUIRE_SIGNATURE"] === "1";
129
162
  let sigResponse;
130
163
  try {
131
- sigResponse = await downloadWithFallback(versionPath, "SHA256SUMS.sig");
164
+ sigResponse = await downloadWithFallback(
165
+ versionPath,
166
+ "SHA256SUMS.sig",
167
+ FETCH_TIMEOUT_MS,
168
+ baseUrl
169
+ );
132
170
  } catch (err) {
133
171
  debugLogger.debug("SHA256SUMS.sig not available:", err);
134
172
  }
@@ -163,11 +201,12 @@ async function verifyChecksum(actualHash, filename, versionPath) {
163
201
  }
164
202
  __name(verifyChecksum, "verifyChecksum");
165
203
  var MAX_DOWNLOAD_BYTES = 512 * 1024 * 1024;
166
- async function downloadToFile(versionPath, filename, destPath) {
204
+ async function downloadToFile(versionPath, filename, destPath, baseUrl) {
167
205
  const response = await downloadWithFallback(
168
206
  versionPath,
169
207
  filename,
170
- ARCHIVE_TIMEOUT_MS
208
+ ARCHIVE_TIMEOUT_MS,
209
+ baseUrl
171
210
  );
172
211
  const body = response.body;
173
212
  if (!body) throw new Error("Empty response body");
@@ -772,6 +811,7 @@ function detectTarget() {
772
811
  __name(detectTarget, "detectTarget");
773
812
  async function performStandaloneUpdate(standaloneDir, newVersion) {
774
813
  const versionPath = normalizeVersion(newVersion);
814
+ const baseUrl = resolveUpdateBaseUrl();
775
815
  let target;
776
816
  let isFirstTimeMigration = false;
777
817
  const manifestPath = path.join(standaloneDir, "manifest.json");
@@ -823,10 +863,11 @@ async function performStandaloneUpdate(standaloneDir, newVersion) {
823
863
  const archiveHash = await downloadToFile(
824
864
  versionPath,
825
865
  filename,
826
- archivePath
866
+ archivePath,
867
+ baseUrl
827
868
  );
828
869
  debugLogger.info("Verifying checksum...");
829
- await verifyChecksum(archiveHash, filename, versionPath);
870
+ await verifyChecksum(archiveHash, filename, versionPath, baseUrl);
830
871
  debugLogger.info("Extracting archive...");
831
872
  await extractArchive(archivePath, extractDir, target);
832
873
  const newInstallDir = path.join(extractDir, "qwen-code");
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  TotalSessionLimitExceededError,
5
5
  WorkspaceDrainingError
6
- } from "./chunk-F47DITLZ.js";
6
+ } from "./chunk-FAWTMDX7.js";
7
7
  import {
8
8
  init_esbuild_shims
9
9
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  readRuntimeStatus
5
- } from "./chunk-43NOB5NM.js";
5
+ } from "./chunk-HIXUUCGY.js";
6
6
  import {
7
7
  atomicWriteJSON
8
8
  } from "./chunk-XFFRI3WM.js";
@@ -34,7 +34,7 @@ var RUNTIME_STATUS_SCAN_SKIP_DIRS = /* @__PURE__ */ new Set([
34
34
  function isValidWorktreeSession(value) {
35
35
  if (value === null || typeof value !== "object") return false;
36
36
  const v = value;
37
- return typeof v["slug"] === "string" && typeof v["worktreePath"] === "string" && typeof v["worktreeBranch"] === "string" && typeof v["originalCwd"] === "string" && (v["workspaceCwd"] === void 0 || typeof v["workspaceCwd"] === "string") && typeof v["originalBranch"] === "string" && typeof v["originalHeadCommit"] === "string";
37
+ return typeof v["slug"] === "string" && typeof v["worktreePath"] === "string" && typeof v["worktreeBranch"] === "string" && typeof v["originalCwd"] === "string" && (v["workspaceCwd"] === void 0 || typeof v["workspaceCwd"] === "string") && typeof v["originalBranch"] === "string" && typeof v["originalHeadCommit"] === "string" && (v["supersededBy"] === void 0 || typeof v["supersededBy"] === "string") && (v["supersedes"] === void 0 || typeof v["supersedes"] === "string");
38
38
  }
39
39
  __name(isValidWorktreeSession, "isValidWorktreeSession");
40
40
  async function readWorktreeSession(filePath, options = {}) {
@@ -340,6 +340,14 @@ async function restoreWorktreeContext(sidecarPath, onWarn) {
340
340
  }
341
341
  return { contextMessage: null, session: null };
342
342
  }
343
+ if (session.supersededBy !== void 0) {
344
+ onWarn?.(
345
+ new Error(
346
+ `worktree session was superseded by ${session.supersededBy}; not restoring its worktree context.`
347
+ )
348
+ );
349
+ return { contextMessage: null, session: null };
350
+ }
343
351
  const expectedParent = path.join(session.originalCwd, ".qwen", "worktrees");
344
352
  const resolvedWorktree = path.resolve(session.worktreePath);
345
353
  if (!resolvedWorktree.startsWith(expectedParent + path.sep)) {
@@ -8,7 +8,7 @@ import {
8
8
  staleArgsWarning,
9
9
  validateAuthMethod,
10
10
  writeSkillArgs
11
- } from "./chunk-ZAZ3NFL6.js";
11
+ } from "./chunk-DXQ6Z7AH.js";
12
12
  import {
13
13
  calculateCost,
14
14
  computeSessionStats,
@@ -19,7 +19,7 @@ import {
19
19
  getCompressionFailureStatusText,
20
20
  getSystemInfoFields,
21
21
  levelLabel
22
- } from "./chunk-2RYWGYB3.js";
22
+ } from "./chunk-MFYH2VXV.js";
23
23
  import {
24
24
  formatDuration,
25
25
  formatTokenCount
@@ -31,19 +31,19 @@ import {
31
31
  VSCODE_SHIFT_ENTER_SEQUENCE,
32
32
  isWaylandSession,
33
33
  writeOsc52
34
- } from "./chunk-HY3DXYZK.js";
34
+ } from "./chunk-UYDQYDW2.js";
35
35
  import {
36
36
  contextCommand
37
- } from "./chunk-JOPC3FND.js";
37
+ } from "./chunk-HUX2DOTF.js";
38
38
  import {
39
39
  themeManager
40
40
  } from "./chunk-2XRE4KE4.js";
41
41
  import {
42
42
  getErrorMessage as getErrorMessage2
43
- } from "./chunk-54TF2ZIQ.js";
43
+ } from "./chunk-6JXHO7LG.js";
44
44
  import {
45
45
  rollbackStandaloneUpdate
46
- } from "./chunk-43JNQAHO.js";
46
+ } from "./chunk-YCEKI7QX.js";
47
47
  import {
48
48
  GITHUB_WORKFLOW_PATHS,
49
49
  INSIGHT_CSS,
@@ -56,7 +56,7 @@ import {
56
56
  toJson,
57
57
  toJsonl,
58
58
  toMarkdown
59
- } from "./chunk-KK2GZGBK.js";
59
+ } from "./chunk-TWWS7XUW.js";
60
60
  import {
61
61
  stripUnsafeCharacters,
62
62
  toCodePoints,
@@ -72,16 +72,19 @@ import {
72
72
  isVoiceEnabled,
73
73
  readVoiceMode,
74
74
  readVoiceModel
75
- } from "./chunk-XOVVCGZX.js";
75
+ } from "./chunk-NB3NDQQK.js";
76
76
  import {
77
77
  getExtendedSystemInfo,
78
78
  getGitVersion,
79
79
  getNpmVersion
80
- } from "./chunk-P6LATTDG.js";
80
+ } from "./chunk-5IL2BZHW.js";
81
+ import {
82
+ getReasoningEffortsForConfig
83
+ } from "./chunk-JGDRB4FP.js";
81
84
  import {
82
85
  isInlineModelOverrideAllowed,
83
86
  parseAcpModelOption
84
- } from "./chunk-O2GG7H4C.js";
87
+ } from "./chunk-ARYNBBBM.js";
85
88
  import {
86
89
  getInstallationInfo
87
90
  } from "./chunk-N6VQ37ZZ.js";
@@ -96,12 +99,12 @@ import {
96
99
  resolveOutputLanguageOrPreserveAuto,
97
100
  validateSettingValue,
98
101
  writeOutputLanguageAndRegisterPath
99
- } from "./chunk-AQ5NAGWI.js";
102
+ } from "./chunk-66JBCTJF.js";
100
103
  import {
101
104
  getCurrentLanguage,
102
105
  setLanguageAsync,
103
106
  t
104
- } from "./chunk-MUZCSTOO.js";
107
+ } from "./chunk-CRZBDVP2.js";
105
108
  import {
106
109
  SUPPORTED_LANGUAGES,
107
110
  getSupportedLanguageIds,
@@ -110,7 +113,7 @@ import {
110
113
  import {
111
114
  isFolderTrustEnabled,
112
115
  loadTrustedFolders
113
- } from "./chunk-XY3USGFE.js";
116
+ } from "./chunk-3VDLQUR2.js";
114
117
  import {
115
118
  require_strip_json_comments
116
119
  } from "./chunk-NPQ5ZKRP.js";
@@ -135,22 +138,24 @@ import {
135
138
  getLastPeerInboxFailure,
136
139
  getMCPServerPrompts,
137
140
  isWsl,
141
+ listPeerControllers,
138
142
  loadOutputStyleCatalog,
139
143
  parseLearnVideoInput,
140
- readPathFromWorkspace
141
- } from "./chunk-UEZOXZNI.js";
144
+ readPathFromWorkspace,
145
+ removePeerController
146
+ } from "./chunk-ZU2T5JIS.js";
142
147
  import {
143
148
  listSavedWorkflows,
144
149
  listWorkflowSnapshots
145
- } from "./chunk-JPEAQJNS.js";
150
+ } from "./chunk-WJDXKQIO.js";
146
151
  import {
147
152
  canonicalizeMsgId,
148
153
  describeHoldCause,
149
154
  flattenPeerLabel
150
- } from "./chunk-HFTB354P.js";
155
+ } from "./chunk-5Z4FCEPY.js";
151
156
  import {
152
157
  resolveOpenAILogDir
153
- } from "./chunk-QSC5YOEC.js";
158
+ } from "./chunk-YAC7H4K3.js";
154
159
  import {
155
160
  ArenaManager,
156
161
  ConditionalRulesRegistry,
@@ -191,7 +196,7 @@ import {
191
196
  resolveSlimmingConfig,
192
197
  runForkedAgent,
193
198
  tryGenerateSessionTitle
194
- } from "./chunk-I72PHOKL.js";
199
+ } from "./chunk-PDUMGZ2P.js";
195
200
  import {
196
201
  external_exports
197
202
  } from "./chunk-CQ35AJ4Z.js";
@@ -205,7 +210,7 @@ import {
205
210
  } from "./chunk-FDOGGKAA.js";
206
211
  import {
207
212
  canUseRipgrep
208
- } from "./chunk-PZV2FASB.js";
213
+ } from "./chunk-TRWQQBVH.js";
209
214
  import {
210
215
  glob
211
216
  } from "./chunk-QJNDUTOL.js";
@@ -214,7 +219,7 @@ import {
214
219
  checkCommandPermissions,
215
220
  escapeShellArg,
216
221
  getShellConfiguration
217
- } from "./chunk-OECNP26L.js";
222
+ } from "./chunk-N6S3NUYJ.js";
218
223
  import {
219
224
  escapeJsonTagCharacters,
220
225
  formatMemoryUsage
@@ -229,11 +234,7 @@ import {
229
234
  restoreArchivedAutoSkill,
230
235
  runAutoSkillCurator,
231
236
  setAutoSkillPinned
232
- } from "./chunk-R355CUNQ.js";
233
- import {
234
- HookEventName,
235
- sanitizeUserPromptExpansionAdditionalContext
236
- } from "./chunk-4VUVBN3Y.js";
237
+ } from "./chunk-CLKE4IY3.js";
237
238
  import {
238
239
  BUILT_IN_OUTPUT_STYLES,
239
240
  getArenaSystemReminder,
@@ -242,7 +243,7 @@ import {
242
243
  getProjectSummaryPrompt,
243
244
  isSystemMdActive,
244
245
  resolveMainSessionOutputStyle
245
- } from "./chunk-GXZHYPHZ.js";
246
+ } from "./chunk-3LPJ776W.js";
246
247
  import {
247
248
  openBrowserSecurely
248
249
  } from "./chunk-NAVJD2PQ.js";
@@ -250,7 +251,7 @@ import {
250
251
  REASONING_EFFORT_TIERS,
251
252
  applyReasoningEffort,
252
253
  normalizeReasoningEffort
253
- } from "./chunk-2LD5U7Q3.js";
254
+ } from "./chunk-6YEOCHSE.js";
254
255
  import {
255
256
  COMBINED_PASS_TOLERANCE_FACTOR,
256
257
  IdeConnectionEvent,
@@ -264,7 +265,7 @@ import {
264
265
  recordSkillInvocation,
265
266
  runSideQuery,
266
267
  uiTelemetryService
267
- } from "./chunk-P5LDR7FI.js";
268
+ } from "./chunk-6QV7Z74P.js";
268
269
  import {
269
270
  getCurrentMemoryFilename
270
271
  } from "./chunk-J6MB5ZHZ.js";
@@ -281,18 +282,21 @@ import {
281
282
  import {
282
283
  FORK_SUBAGENT_TYPE,
283
284
  stripStartupContext
284
- } from "./chunk-D6PIMKY3.js";
285
+ } from "./chunk-4VY3ITHR.js";
285
286
  import {
286
- applySkillAllowedTools,
287
- buildSkillLlmContent,
288
- canApplySkillSideEffects
289
- } from "./chunk-NGX4NUNP.js";
287
+ applySkillSideEffects,
288
+ buildSkillLlmContent
289
+ } from "./chunk-O2FEO2CB.js";
290
+ import {
291
+ HookEventName,
292
+ sanitizeUserPromptExpansionAdditionalContext
293
+ } from "./chunk-G6UUOCUT.js";
290
294
  import {
291
295
  ToolDisplayNamesMigration,
292
296
  ToolNames,
293
297
  canonicalToolName,
294
298
  isShellProgressData
295
- } from "./chunk-RPBMP6BN.js";
299
+ } from "./chunk-MWIO7MF6.js";
296
300
  import {
297
301
  Storage,
298
302
  createDebugLogger,
@@ -306,7 +310,7 @@ import {
306
310
  isCpuProfileRecording,
307
311
  startCpuProfile,
308
312
  stopCpuProfile
309
- } from "./chunk-TDP7UULF.js";
313
+ } from "./chunk-OPMKGOLD.js";
310
314
  import {
311
315
  init_esbuild_shims
312
316
  } from "./chunk-5O2XNYP6.js";
@@ -2456,7 +2460,7 @@ var approvalModeCommand = {
2456
2460
  };
2457
2461
  }
2458
2462
  }
2459
- const autoModeNotices = mode === "auto" /* AUTO */ && priorMode !== "auto" /* AUTO */ && config ? await import("./useAutoAcceptIndicator-LAWYHY3U.js") : void 0;
2463
+ const autoModeNotices = mode === "auto" /* AUTO */ && priorMode !== "auto" /* AUTO */ && config ? await import("./useAutoAcceptIndicator-XNED4NRB.js") : void 0;
2460
2464
  if (config) {
2461
2465
  try {
2462
2466
  config.setApprovalMode(mode);
@@ -2590,10 +2594,11 @@ __name(describeRemaining, "describeRemaining");
2590
2594
  function formatHeldList(held, expiryMs = null) {
2591
2595
  if (held.length === 0) return "No messages from other sessions are waiting.";
2592
2596
  const lines = held.map((entry) => {
2593
- const peerLabel = flattenPeerLabel(
2597
+ const peerLabel = entry.controller ? flattenPeerLabel(entry.controller.label) : flattenPeerLabel(
2594
2598
  entry.frame.fromName ?? entry.frame.from ?? (entry.selfSent ? "this session" : "unknown session")
2595
2599
  );
2596
- const who = `${entry.selfSent ? "[own process]" : "[peer]"} ${peerLabel}`;
2600
+ const origin = entry.controller ? "[controller]" : entry.selfSent ? "[own process]" : "[peer]";
2601
+ const who = `${origin} ${peerLabel}`;
2597
2602
  const handle = flattenPeerLabel(displayHandle(entry, held));
2598
2603
  return ` ${handle} ${who}
2599
2604
  ${preview(entry.frame.message.content)}
@@ -2621,15 +2626,91 @@ function resolveHeld(held, token) {
2621
2626
  return { kind: "one", msgId: matches[0].frame.msgId };
2622
2627
  }
2623
2628
  __name(resolveHeld, "resolveHeld");
2629
+ async function listControllers() {
2630
+ try {
2631
+ return await listPeerControllers();
2632
+ } catch (error) {
2633
+ return { error: error instanceof Error ? error.message : String(error) };
2634
+ }
2635
+ }
2636
+ __name(listControllers, "listControllers");
2637
+ function formatControllerList(controllers) {
2638
+ if (!Array.isArray(controllers)) {
2639
+ return `Could not read the trusted controllers: ${controllers.error}`;
2640
+ }
2641
+ if (controllers.length === 0) {
2642
+ return `No trusted controllers. Without an explicit "accept" setting, a message that asserts no review class is held for your review, except one from a process this session started, which is always accepted. A sender's own review-class claim is not authenticated; set agents.crossSessionInbound to "hold" to review every inbound message.
2643
+ Add one with: qwen sessions controllers add --label <name>`;
2644
+ }
2645
+ const lines = controllers.map(
2646
+ (record) => ` ${record.id} ${flattenPeerLabel(record.label)} added ${formatCreated(
2647
+ record.createdAt
2648
+ )}`
2649
+ );
2650
+ return [
2651
+ `${controllers.length} trusted controller${controllers.length === 1 ? "" : "s"}. Messages presenting one of these tokens are delivered without per-message review unless crossSessionInbound is "hold" or "refuse". A process this session started is always accepted; other senders' review-class claims are not authenticated, so set crossSessionInbound to "hold" to review every inbound message:`,
2652
+ ...lines,
2653
+ "",
2654
+ "Revoke with /peers revoke <id>."
2655
+ ].join("\n");
2656
+ }
2657
+ __name(formatControllerList, "formatControllerList");
2658
+ function formatCreated(createdAt) {
2659
+ const date = new Date(createdAt);
2660
+ return Number.isNaN(date.getTime()) ? "unknown" : date.toISOString().replace("T", " ").slice(0, 16);
2661
+ }
2662
+ __name(formatCreated, "formatCreated");
2624
2663
  var peersCommand = {
2625
2664
  name: "peers",
2626
2665
  kind: "built-in" /* BUILT_IN */,
2627
2666
  get description() {
2628
2667
  return t(
2629
- "Review messages held from other Qwen Code sessions (accept | deny)"
2668
+ "Review messages held from other Qwen Code sessions (accept | deny), and manage trusted controllers (controllers | revoke)"
2630
2669
  );
2631
2670
  },
2632
2671
  action: /* @__PURE__ */ __name(async (context, args) => {
2672
+ const [verb, ...rest] = args.trim().split(/\s+/).filter(Boolean);
2673
+ if (verb === "controllers") {
2674
+ return {
2675
+ type: "message",
2676
+ messageType: "info",
2677
+ content: formatControllerList(await listControllers())
2678
+ };
2679
+ }
2680
+ if (verb === "revoke") {
2681
+ const id = rest[0];
2682
+ if (id === void 0) {
2683
+ return {
2684
+ type: "message",
2685
+ messageType: "error",
2686
+ content: "Which controller? Use /peers revoke <id> \u2014 /peers controllers lists the ids."
2687
+ };
2688
+ }
2689
+ let removed;
2690
+ try {
2691
+ removed = await removePeerController(id);
2692
+ } catch (error) {
2693
+ return {
2694
+ type: "message",
2695
+ messageType: "error",
2696
+ content: `Could not revoke that controller: ${error instanceof Error ? error.message : String(error)}`
2697
+ };
2698
+ }
2699
+ if (!removed) {
2700
+ return {
2701
+ type: "message",
2702
+ messageType: "error",
2703
+ content: `No controller has the id "${flattenPeerLabel(id)}". Run /peers controllers to see them.`
2704
+ };
2705
+ }
2706
+ const forgotten = context.services.peerMessaging?.forgetController(removed.id) ?? 0;
2707
+ const backlog = forgotten === 0 ? "No held messages in this session used that grant." : `${forgotten} held message${forgotten === 1 ? "" : "s"} from it ${forgotten === 1 ? "remains" : "remain"} parked for review as ${forgotten === 1 ? "an ordinary peer message" : "ordinary peer messages"}.`;
2708
+ return {
2709
+ type: "message",
2710
+ messageType: "info",
2711
+ content: `Revoked the controller "${flattenPeerLabel(removed.label)}" (${removed.id}). Running sessions revalidate active connections, and new connections can no longer use its token. ${backlog}`
2712
+ };
2713
+ }
2633
2714
  const peerMessaging = context.services.peerMessaging;
2634
2715
  if (!peerMessaging) {
2635
2716
  const enabled = context.services.settings?.merged?.agents?.crossSessionMessaging === true;
@@ -2641,7 +2722,6 @@ var peersCommand = {
2641
2722
  };
2642
2723
  }
2643
2724
  const held = peerMessaging.getHeld();
2644
- const [verb, ...rest] = args.trim().split(/\s+/).filter(Boolean);
2645
2725
  if (verb === void 0 || verb === "list") {
2646
2726
  peerMessaging.recordHeldListing(held);
2647
2727
  return {
@@ -2654,7 +2734,7 @@ var peersCommand = {
2654
2734
  return {
2655
2735
  type: "message",
2656
2736
  messageType: "error",
2657
- content: `Unknown subcommand "${verb}". Use /peers, /peers accept <id|all>, or /peers deny <id|all>.`
2737
+ content: `Unknown subcommand "${verb}". Use /peers, /peers accept <id|all>, /peers deny <id|all>, /peers controllers, or /peers revoke <id>.`
2658
2738
  };
2659
2739
  }
2660
2740
  const decision = verb === "accept" ? "approve" : "deny";
@@ -6417,6 +6497,15 @@ var effortCommand = {
6417
6497
  };
6418
6498
  }
6419
6499
  const args = context.invocation?.args?.trim() || actionArgs.trim();
6500
+ const availableTiers = getReasoningEffortsForConfig(config);
6501
+ if (availableTiers.length === 0) {
6502
+ return {
6503
+ type: "message",
6504
+ messageType: "info",
6505
+ content: t("The current model does not expose reasoning effort tiers.")
6506
+ };
6507
+ }
6508
+ const availableTierList = availableTiers.join(", ");
6420
6509
  if (!args) {
6421
6510
  if (context.executionMode === "interactive") {
6422
6511
  return { type: "dialog", dialog: "effort" };
@@ -6427,21 +6516,21 @@ var effortCommand = {
6427
6516
  messageType: "info",
6428
6517
  content: current ? t(
6429
6518
  'Current reasoning effort: {{current}}\nAvailable: {{tiers}}\nUse "/effort <tier>" to change it.',
6430
- { current, tiers: TIER_LIST }
6519
+ { current, tiers: availableTierList }
6431
6520
  ) : t(
6432
6521
  'Reasoning effort: not set (using the model/provider default).\nAvailable: {{tiers}}\nUse "/effort <tier>" to set it.',
6433
- { tiers: TIER_LIST }
6522
+ { tiers: availableTierList }
6434
6523
  )
6435
6524
  };
6436
6525
  }
6437
6526
  const tier = normalizeReasoningEffort(args);
6438
- if (!tier) {
6527
+ if (!tier || !availableTiers.includes(tier)) {
6439
6528
  return {
6440
6529
  type: "message",
6441
6530
  messageType: "error",
6442
6531
  content: t(
6443
6532
  'Unknown reasoning effort "{{value}}". Choose one of: {{tiers}}.',
6444
- { value: args, tiers: TIER_LIST }
6533
+ { value: args, tiers: availableTierList }
6445
6534
  )
6446
6535
  };
6447
6536
  }
@@ -7469,7 +7558,7 @@ var expandNowCommand = {
7469
7558
  content: t("History is already expanded in this session.")
7470
7559
  };
7471
7560
  }
7472
- const { expandCollapsedHistory } = await import("./resumeHistoryUtils-QRXZEEBA.js");
7561
+ const { expandCollapsedHistory } = await import("./resumeHistoryUtils-K7RV3QBN.js");
7473
7562
  const updated = expandCollapsedHistory(history);
7474
7563
  loadHistory(updated);
7475
7564
  refreshStatic();
@@ -14957,10 +15046,10 @@ var updateCommand = {
14957
15046
  { performStandaloneUpdate },
14958
15047
  installationInfo
14959
15048
  ] = await Promise.all([
14960
- import("./updateCheck-W6UZFURI.js"),
14961
- import("./processUtils-3XBB4FYV.js"),
14962
- import("./standalone-update-ZWVQUO64.js"),
14963
- import("./installationInfo-542MGC4S.js")
15049
+ import("./updateCheck-WAVFLWNG.js"),
15050
+ import("./processUtils-YFBGJK67.js"),
15051
+ import("./standalone-update-L46XXNQ2.js"),
15052
+ import("./installationInfo-232RA2OK.js")
14964
15053
  ]);
14965
15054
  const { formatUpdateInstructions, getInstallationInfo: getInstallationInfo2 } = installationInfo;
14966
15055
  const settings = context.services.settings;
@@ -15250,10 +15339,14 @@ var BundledSkillLoader = class {
15250
15339
  level: skill.level
15251
15340
  },
15252
15341
  action: /* @__PURE__ */ __name(async (context, _args) => {
15253
- applySkillAllowedTools(
15254
- this.config?.getPermissionManager(),
15255
- skill.allowedTools
15256
- );
15342
+ if (this.config && !this.config.isSkillEnabled(skill)) {
15343
+ return {
15344
+ type: "message",
15345
+ messageType: "error",
15346
+ content: `Skill "${skill.name}" is disabled.`
15347
+ };
15348
+ }
15349
+ applySkillSideEffects(this.config, skill);
15257
15350
  let body = skill.body;
15258
15351
  const modelId = this.config?.getModel()?.trim() || "";
15259
15352
  const cliVersion = this.config?.getCliVersion()?.trim() || "unknown";
@@ -16395,17 +16488,7 @@ var SkillCommandLoader = class {
16395
16488
  content: `Skill "${skill.name}" is disabled.`
16396
16489
  };
16397
16490
  }
16398
- if (this.config && canApplySkillSideEffects(skill, this.config)) {
16399
- applySkillAllowedTools(
16400
- this.config.getPermissionManager(),
16401
- skill.allowedTools,
16402
- { trustGated: skill.level === "project" }
16403
- );
16404
- } else if (skill.allowedTools?.length) {
16405
- debugLogger20.warn(
16406
- `Skill "${skill.name}" is a project skill in an untrusted folder; ignoring its allowedTools.`
16407
- );
16408
- }
16491
+ applySkillSideEffects(this.config, skill);
16409
16492
  const body = buildSkillLlmContent(
16410
16493
  dirname3(skill.filePath),
16411
16494
  skill.body