@qwen-code/qwen-code 0.21.8 → 0.21.9

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 (258) hide show
  1. package/README.md +2 -1
  2. package/bundled/qc-helper/docs/configuration/settings.md +32 -30
  3. package/bundled/qc-helper/docs/extension/introduction.md +15 -1
  4. package/bundled/qc-helper/docs/features/code-review.md +2 -0
  5. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
  6. package/bundled/qc-helper/docs/qwen-serve.md +42 -39
  7. package/bundled/review/SKILL.md +11 -7
  8. package/chunks/{MaxSizedBox-7PM6BGJ5.js → MaxSizedBox-6BZANW7X.js} +9 -9
  9. package/chunks/{StandaloneSessionPicker-3UQHM7GV.js → StandaloneSessionPicker-VDC5KE7T.js} +28 -25
  10. package/chunks/{acpAgent-5UWLFV6V.js → acpAgent-F2NSBCUF.js} +1433 -706
  11. package/chunks/{agent-624T2BLO.js → agent-VOHJOEBB.js} +8 -8
  12. package/chunks/{agent-headless-2EE5J2KX.js → agent-headless-J5NFOPHP.js} +8 -8
  13. package/chunks/{bridge-JENKGFFP.js → bridge-NQIZZLAS.js} +13 -13
  14. package/chunks/{channel-management-service-DDWUPHMU.js → channel-management-service-PHELKOW2.js} +4 -4
  15. package/chunks/{channel-settings-store-SA6JZSPH.js → channel-settings-store-VIY2OENO.js} +17 -15
  16. package/chunks/{channel-worker-group-E67EN3RV.js → channel-worker-group-MSHT6CWR.js} +6 -6
  17. package/chunks/{channel-worker-manager-SW4C45CF.js → channel-worker-manager-XXD3GDSK.js} +6 -6
  18. package/chunks/{channel-worker-supervisor-5SRD24FG.js → channel-worker-supervisor-IVSDIMI4.js} +4 -4
  19. package/chunks/{chunk-S3Y3GBFD.js → chunk-23VQTELM.js} +2 -2
  20. package/chunks/{chunk-XZKQT2B2.js → chunk-3WDYBTTI.js} +5 -5
  21. package/chunks/{chunk-YEF7XEO2.js → chunk-3XVDTHBJ.js} +3 -3
  22. package/chunks/{chunk-IBYULW65.js → chunk-46YJDYCU.js} +145 -10
  23. package/chunks/chunk-4JRM2BSM.js +48 -0
  24. package/chunks/{chunk-L4N6TIP7.js → chunk-4TRQPFDP.js} +4 -2
  25. package/chunks/{chunk-5ZGR6RKJ.js → chunk-4XQNB3KN.js} +3 -3
  26. package/chunks/chunk-5EJZE3FP.js +140 -0
  27. package/chunks/{chunk-XHD7CRP2.js → chunk-5RBDAGC6.js} +2 -2
  28. package/chunks/{chunk-KJZ26VBX.js → chunk-67EWJE77.js} +1 -1
  29. package/chunks/{chunk-TE3ZAJE7.js → chunk-6Q5ABMTU.js} +1 -1
  30. package/chunks/{chunk-U5SLIG7E.js → chunk-7AEPJGL4.js} +1 -1
  31. package/chunks/{chunk-OHKJVAKG.js → chunk-7GOYZQPR.js} +20 -1977
  32. package/chunks/{chunk-3SE7J4DR.js → chunk-7S4JBJLU.js} +3 -3
  33. package/chunks/{chunk-TKSZJ5BV.js → chunk-AKJQSWV4.js} +3 -3
  34. package/chunks/{chunk-E4ZBKMSF.js → chunk-ATMO54WE.js} +6 -6
  35. package/chunks/{chunk-KKDVZLGL.js → chunk-BAMN6XSD.js} +1 -1
  36. package/chunks/{chunk-IUQ52YJK.js → chunk-BIRWP6LU.js} +1 -1
  37. package/chunks/{chunk-AKA24BGO.js → chunk-BT6GQIEJ.js} +1 -1
  38. package/chunks/{chunk-ZCLLJARV.js → chunk-BZP4QPNK.js} +10 -10
  39. package/chunks/{chunk-2M5N3DHY.js → chunk-CMOBWHWW.js} +1 -1
  40. package/chunks/{chunk-WV5J6Q6N.js → chunk-D7BXVKSF.js} +1 -1
  41. package/chunks/{chunk-NLREQJFK.js → chunk-DA4HRSBW.js} +15 -0
  42. package/chunks/{chunk-GOEVOFQI.js → chunk-DH5YXSIF.js} +3 -3
  43. package/chunks/{chunk-DIWZNWZT.js → chunk-DX3RGJMS.js} +13 -2
  44. package/chunks/{chunk-PLFATELK.js → chunk-DZUO626D.js} +1 -1
  45. package/chunks/{chunk-NGYI5EF5.js → chunk-E2FPSSKP.js} +8 -8
  46. package/chunks/{chunk-ZPLALRXZ.js → chunk-FBMCDU63.js} +4 -137
  47. package/chunks/{chunk-2ILAOM2I.js → chunk-FCLHHEUK.js} +17 -16
  48. package/chunks/{chunk-SNRT2TJJ.js → chunk-G2TX5ZXC.js} +3 -3
  49. package/chunks/{chunk-C5VWPTGT.js → chunk-GAKGOXTC.js} +1 -1
  50. package/chunks/{chunk-QQWD7LZV.js → chunk-HADWBW5R.js} +4 -4
  51. package/chunks/{chunk-77QVBFCU.js → chunk-HZGBKOX3.js} +3 -3
  52. package/chunks/{chunk-RPWVIXDB.js → chunk-I5VM3SKY.js} +4 -4
  53. package/chunks/{chunk-7VUERJHS.js → chunk-II6G3EY6.js} +325 -104
  54. package/chunks/{chunk-FN6YXJOP.js → chunk-IOEZE2YT.js} +1 -1
  55. package/chunks/chunk-JUWS2Z5K.js +1995 -0
  56. package/chunks/{chunk-VXZ5HAOV.js → chunk-K4ADGWHU.js} +1 -1
  57. package/chunks/{chunk-YOM7DEGB.js → chunk-KSAFZ5TA.js} +2 -2
  58. package/chunks/{chunk-KAQCJO6Y.js → chunk-KTKYGS2P.js} +35 -9
  59. package/chunks/{chunk-GBDINRIL.js → chunk-KTQGGPGV.js} +3 -3
  60. package/chunks/{chunk-6M26GBKX.js → chunk-L2AFWWJE.js} +42 -3
  61. package/chunks/{chunk-QXVSWG66.js → chunk-LHEC5V6G.js} +2 -2
  62. package/chunks/{chunk-J26HHFI5.js → chunk-LP2QGNSP.js} +32 -2
  63. package/chunks/{chunk-HWX5HPUG.js → chunk-LZZLUCRS.js} +108 -11
  64. package/chunks/{chunk-KTJFU7RT.js → chunk-MFDYOYZZ.js} +2 -2
  65. package/chunks/{chunk-3WNQOYHQ.js → chunk-MHP476D3.js} +74 -31
  66. package/chunks/{chunk-Y4TETC74.js → chunk-MTCYGTWH.js} +4 -4
  67. package/chunks/{chunk-EN2TKTFH.js → chunk-NV3F44FL.js} +6 -2
  68. package/chunks/{chunk-BF52U4XJ.js → chunk-OGDIJKHK.js} +1 -1
  69. package/chunks/{chunk-7DVT4LVV.js → chunk-OGNFHGIG.js} +3 -3
  70. package/chunks/{chunk-IYES5WOT.js → chunk-P2FK2HBV.js} +2 -2
  71. package/chunks/{chunk-2M4K4KYS.js → chunk-P3RBMQ4P.js} +4 -4
  72. package/chunks/{chunk-FYAXKJK7.js → chunk-P4ZEZSJZ.js} +692 -106
  73. package/chunks/{chunk-UFALT4LK.js → chunk-PBRVUF5B.js} +1 -1
  74. package/chunks/{chunk-LKRMNRSN.js → chunk-PDPFQ2FO.js} +2 -0
  75. package/chunks/{chunk-6TR7CFXH.js → chunk-PNBBJOCP.js} +1 -1
  76. package/chunks/{chunk-M3STHEMM.js → chunk-PVOGHGSF.js} +5 -5
  77. package/chunks/{chunk-4WU6NY7F.js → chunk-QSNSL4R4.js} +2 -2
  78. package/chunks/{chunk-DQSDACD2.js → chunk-RBHQXGDK.js} +1 -1
  79. package/chunks/{chunk-ZHA242R4.js → chunk-RVSTTOJ4.js} +2 -2
  80. package/chunks/{chunk-EIVICVHM.js → chunk-SCAZZ3Q4.js} +4 -4
  81. package/chunks/{chunk-BF224XHL.js → chunk-T5RLUXWJ.js} +2 -2
  82. package/chunks/{chunk-B52AWKBB.js → chunk-T6HEQR2Q.js} +16 -5
  83. package/chunks/{chunk-FWBXMANW.js → chunk-THIKWITR.js} +3 -3
  84. package/chunks/{chunk-WG6542MA.js → chunk-TQCYNLNJ.js} +1 -1
  85. package/chunks/chunk-TQOF5KBL.js +71 -0
  86. package/chunks/{chunk-NPUXXRJI.js → chunk-TZ6KJ44L.js} +1 -1
  87. package/chunks/{chunk-YHJFF7KH.js → chunk-UJUM2SRN.js} +147 -47
  88. package/chunks/{chunk-4ALIARFY.js → chunk-UYAUA63Q.js} +1 -1
  89. package/chunks/chunk-VFMASYQA.js +389 -0
  90. package/chunks/chunk-VGHZT6JR.js +51 -0
  91. package/chunks/{chunk-ZWBUH5UP.js → chunk-VKJ4KTPJ.js} +1 -1
  92. package/chunks/{chunk-QGHSP65Z.js → chunk-VNNWAZSI.js} +2 -2
  93. package/chunks/{chunk-757GB46F.js → chunk-W3FSZSF2.js} +1 -1
  94. package/chunks/{chunk-GQCEQPYQ.js → chunk-WGK4TSB7.js} +3 -3
  95. package/chunks/{chunk-PG62DFWD.js → chunk-WP5VOXF7.js} +6 -127
  96. package/chunks/{chunk-NVRDQFCX.js → chunk-XTY5DN4Y.js} +1 -1
  97. package/chunks/{chunk-GXSNGY5M.js → chunk-XX7QFP34.js} +1677 -1307
  98. package/chunks/{chunk-3PY4LPJF.js → chunk-YGT2AUJ7.js} +84 -4
  99. package/chunks/{chunk-4DU3NCHG.js → chunk-YTFDX4PR.js} +8 -3
  100. package/chunks/{chunk-OA4JVLSA.js → chunk-Z7VOMGDC.js} +22 -1
  101. package/chunks/{chunk-DX5W5AON.js → chunk-ZBXGWQ4S.js} +3 -3
  102. package/chunks/chunk-ZLBIFIMV.js +1099 -0
  103. package/chunks/{chunk-HA3SAB64.js → chunk-ZOSTTOUJ.js} +1 -1
  104. package/chunks/{chunk-VWMUDKLC.js → chunk-ZTQSOV56.js} +4 -4
  105. package/chunks/{computer-use-ESQYJ3JY.js → computer-use-PMZ7ICGY.js} +8 -8
  106. package/chunks/{config-utils-XQHBJP7G.js → config-utils-ULCSRMWD.js} +4 -4
  107. package/chunks/{contextCommand-CX3YF4ZE.js → contextCommand-GEZU7YHE.js} +11 -10
  108. package/chunks/{core-runtime-DIAU7JMG.js → core-runtime-HRJI2MN6.js} +8 -8
  109. package/chunks/{create-sub-session-HDPD6HOA.js → create-sub-session-VBNVI4YU.js} +9 -9
  110. package/chunks/{daemon-VZBGJUNL.js → daemon-POSQPD3G.js} +115 -7
  111. package/chunks/{daemon-status-provider-H6O4UQ4F.js → daemon-status-provider-N4CRQKFI.js} +18 -18
  112. package/chunks/{daemon-trust-policy-BNUXG6MT.js → daemon-trust-policy-BHO3JUHM.js} +16 -14
  113. package/chunks/{daemon-trust-policy-monitor-E4EQ7GF4.js → daemon-trust-policy-monitor-YEKJ2726.js} +16 -14
  114. package/chunks/{deferred-core-runtime-CBMSHPAU.js → deferred-core-runtime-SH57E3J3.js} +8 -8
  115. package/chunks/{dist-KVISB2O2.js → dist-3NTTUAHT.js} +1 -1
  116. package/chunks/{dist-RCH3I7SS.js → dist-6BMOAE3Z.js} +2 -2
  117. package/chunks/{dist-IRL7WA5Z.js → dist-B2CGTW6T.js} +1 -1
  118. package/chunks/{dist-TUSWNE2I.js → dist-EWW3J4HQ.js} +1 -1
  119. package/chunks/{dist-HIACTZEK.js → dist-EZE3V3Q7.js} +1 -1
  120. package/chunks/{dist-EEEQGCZA.js → dist-J47AXBZC.js} +1 -1
  121. package/chunks/{dist-MKX5OSFF.js → dist-OTUO3AS2.js} +4 -1088
  122. package/chunks/{dist-MBF3I5MX.js → dist-Z3CS4OVP.js} +1 -1
  123. package/chunks/{earlyInputCapture-UIOP7OIN.js → earlyInputCapture-B2JJ2HME.js} +8 -8
  124. package/chunks/{edit-ITMZYFKA.js → edit-7FTXENAN.js} +10 -8
  125. package/chunks/{enter-worktree-S4PL5UV6.js → enter-worktree-JPHV2PBG.js} +8 -8
  126. package/chunks/{enterPlanMode-YV52NNJT.js → enterPlanMode-CGBJ3AHJ.js} +8 -8
  127. package/chunks/{environment-NGOWPRZV.js → environment-LXASZAHD.js} +11 -11
  128. package/chunks/{errors-BU26DTDX.js → errors-XIGVT2AD.js} +10 -10
  129. package/chunks/{exit-worktree-XRM6LH5F.js → exit-worktree-DKSGXW65.js} +8 -8
  130. package/chunks/{exitPlanMode-ZLI5F7KR.js → exitPlanMode-THFL2HYN.js} +8 -8
  131. package/chunks/{fast-path-UJWORIED.js → fast-path-4NXAT5UL.js} +4 -3
  132. package/chunks/{fast-path-settings-37WQD5B2.js → fast-path-settings-RPAVBD7P.js} +2 -2
  133. package/chunks/{gemini-ZSKNDUMU.js → gemini-B3N6FACU.js} +56 -60
  134. package/chunks/{geminiContentGenerator-YGEXOEKD.js → geminiContentGenerator-YYFE2HIE.js} +1 -1
  135. package/chunks/{glob-7KZG44BR.js → glob-BPHSCFJP.js} +8 -8
  136. package/chunks/{grep-6ZFC7RJ5.js → grep-ROZIRFLU.js} +8 -8
  137. package/chunks/{handleAutoUpdate-KSEL3TQS.js → handleAutoUpdate-WV6SPZQB.js} +13 -12
  138. package/chunks/{i18n-ZIUXBW5V.js → i18n-YWJWPQKD.js} +13 -11
  139. package/chunks/{image-gen-AUIZJJNK.js → image-gen-SISRZ6FS.js} +1 -1
  140. package/chunks/{initializer-7AHY3N6Q.js → initializer-66OAD6GO.js} +16 -14
  141. package/chunks/{installationInfo-VGBXMYLY.js → installationInfo-3YUGIP36.js} +9 -9
  142. package/chunks/{list-PSFKQHLB.js → list-VEYR66XB.js} +19 -17
  143. package/chunks/{loadedSettingsAdapter-FTMRCTOF.js → loadedSettingsAdapter-V2JCPCYD.js} +16 -14
  144. package/chunks/{loggingContentGenerator-MZAN52UV.js → loggingContentGenerator-RBLNDREC.js} +6 -6
  145. package/chunks/main-PXAUXNF2.js +8 -0
  146. package/chunks/{managed-npm-update-O4NHK45X.js → managed-npm-update-C5ID5R4R.js} +9 -9
  147. package/chunks/{mcp-6CFP2AYQ.js → mcp-OZ54NZJQ.js} +16 -14
  148. package/chunks/{monitor-DAKD6OU4.js → monitor-7Y4TVFTK.js} +18 -14
  149. package/chunks/{nonInteractiveCli-RC7VIUZL.js → nonInteractiveCli-QEK4LHAC.js} +51 -49
  150. package/chunks/{notebook-edit-474DPMRL.js → notebook-edit-OG35EBGY.js} +9 -8
  151. package/chunks/{openaiContentGenerator-2NFY2MWO.js → openaiContentGenerator-443BNRPJ.js} +5 -5
  152. package/chunks/{pidfile-KBFVDNQP.js → pidfile-ZK4OLRZA.js} +8 -8
  153. package/chunks/{processUtils-6GRYH4Y3.js → processUtils-4YGB4RUZ.js} +2 -2
  154. package/chunks/{qwenContentGenerator-KAHU6IZY.js → qwenContentGenerator-D5C2LCSZ.js} +9 -9
  155. package/chunks/{qwenOAuth2-RRQTCP4W.js → qwenOAuth2-Z4YQBMYN.js} +1 -1
  156. package/chunks/{read-file-3M6WXDXP.js → read-file-EXTJLWMU.js} +4 -4
  157. package/chunks/{resumeHistoryUtils-D6TAY3HX.js → resumeHistoryUtils-UPCGRJUL.js} +13 -12
  158. package/chunks/{ripGrep-PLPENT3E.js → ripGrep-QBVIRCU4.js} +8 -8
  159. package/chunks/{run-qwen-serve-ZAFIJKJC.js → run-qwen-serve-ZYGJNE3E.js} +169 -68
  160. package/chunks/{runtime-ZED7CYOZ.js → runtime-BZZ4LWCP.js} +21 -19
  161. package/chunks/{scheduler-MD3AL2W5.js → scheduler-YNQNOU2E.js} +135 -15
  162. package/chunks/{sdk-exporters-http-KHAB5JSD.js → sdk-exporters-http-XVTZQRCE.js} +2 -2
  163. package/chunks/{sdk-impl-KD7FSTC3.js → sdk-impl-7W7AKCS4.js} +7 -3
  164. package/chunks/{serve-E3VUDRZN.js → serve-LJHAXDCH.js} +18 -14
  165. package/chunks/{server-OWMEMAKR.js → server-ADMLELR6.js} +1229 -1098
  166. package/chunks/{session-HZ57QK7K.js → session-YKZXFFTM.js} +55 -53
  167. package/chunks/{settings-V7BR3RKP.js → settings-EQBUAQ7Y.js} +15 -13
  168. package/chunks/{shell-23OMNMW6.js → shell-3QZOJGTT.js} +8 -8
  169. package/chunks/{skill-6HBDYZRS.js → skill-UWSSMXE7.js} +5 -5
  170. package/chunks/{skill-settings-HWJLTU7M.js → skill-settings-T6MLB7NU.js} +15 -13
  171. package/chunks/{spawnChannel-N6KKUW5B.js → spawnChannel-VS7ZFUFP.js} +11 -11
  172. package/chunks/{standalone-update-QGIKHATD.js → standalone-update-2W26SRRO.js} +11 -10
  173. package/chunks/{startInteractiveUI-GX2CRL42.js → startInteractiveUI-CVS7K3D6.js} +86 -75
  174. package/chunks/{team-create-CFFKU7KL.js → team-create-4WFTNNUL.js} +8 -8
  175. package/chunks/{team-plan-approval-6EFOKR6A.js → team-plan-approval-DBYI33S3.js} +8 -8
  176. package/chunks/{terminal-image-renderer-TLDNACQY.js → terminal-image-renderer-S5WPPQKH.js} +8 -8
  177. package/chunks/{theme-manager-5LJ3H7VO.js → theme-manager-LI2RIOVR.js} +8 -8
  178. package/chunks/{tool-search-UJV3A24H.js → tool-search-4773EUQ4.js} +4 -4
  179. package/chunks/{total-session-admission-D63QYXGO.js → total-session-admission-PAY5CH2Z.js} +16 -15
  180. package/chunks/{trustedFolders-KZCOB53W.js → trustedFolders-FRSLE674.js} +9 -9
  181. package/chunks/{types-ML3TRJQ5.js → types-WYCFCEHR.js} +5 -3
  182. package/chunks/{update-relaunch-IFILM3SA.js → update-relaunch-ZSFQTU6M.js} +5 -5
  183. package/chunks/{updateCheck-YZ2CRCFC.js → updateCheck-AXWSO7KA.js} +12 -11
  184. package/chunks/{useAutoAcceptIndicator-AXEVNA3Q.js → useAutoAcceptIndicator-VHLXIA7U.js} +18 -16
  185. package/chunks/{validateNonInterActiveAuth-3WTOJFWA.js → validateNonInterActiveAuth-PDJECMFU.js} +48 -46
  186. package/chunks/{version-GXK7OHZY.js → version-RBN764QS.js} +1 -1
  187. package/chunks/{web-fetch-ILB4GAVR.js → web-fetch-7BJK42AF.js} +4 -4
  188. package/chunks/{web-search-HKRPGPZZ.js → web-search-L2CILQXV.js} +4 -3
  189. package/chunks/{workflow-FXIPRQQA.js → workflow-5VH2R74I.js} +170 -137
  190. package/chunks/{workspace-providers-status-NYHC7HSR.js → workspace-providers-status-OZTQ6JFH.js} +19 -17
  191. package/chunks/{workspace-registration-store-AKEB7OMW.js → workspace-registration-store-IX5RJQS5.js} +1 -1
  192. package/chunks/{workspace-registry-CDAS5TVZ.js → workspace-registry-73N4BGG4.js} +16 -15
  193. package/chunks/{workspace-service-PAMUKMAV.js → workspace-service-I5RUPSNV.js} +26 -22
  194. package/chunks/{workspace-skills-status-YQSHCCMS.js → workspace-skills-status-DMK6VYDO.js} +17 -15
  195. package/chunks/{workspace-trust-reconciler-RPTXOIY2.js → workspace-trust-reconciler-QX4RL3TC.js} +24 -21
  196. package/chunks/{write-file-CGS57TS4.js → write-file-UGDD5UTS.js} +8 -8
  197. package/chunks/{zoom-image-E7D72GYV.js → zoom-image-ZAHEO3YP.js} +4 -4
  198. package/cli.js +12 -12
  199. package/package.json +3 -3
  200. package/web-shell/assets/{arc-DybZaz32.js → arc-CHY4saMJ.js} +1 -1
  201. package/web-shell/assets/{architectureDiagram-3BPJPVTR-jN3qBd19.js → architectureDiagram-3BPJPVTR-Bu6CwvHj.js} +1 -1
  202. package/web-shell/assets/{blockDiagram-GPEHLZMM-Ct5DZPrj.js → blockDiagram-GPEHLZMM-XGt6iGf_.js} +1 -1
  203. package/web-shell/assets/{c4Diagram-AAUBKEIU-CUAFMlUG.js → c4Diagram-AAUBKEIU-CBbYl19W.js} +1 -1
  204. package/web-shell/assets/channel-B40srHOa.js +1 -0
  205. package/web-shell/assets/{chunk-2J33WTMH-CuV8n90B.js → chunk-2J33WTMH-BEhmVrdx.js} +1 -1
  206. package/web-shell/assets/{chunk-4BX2VUAB-BUzl_kls.js → chunk-4BX2VUAB-fQLyE0Bg.js} +1 -1
  207. package/web-shell/assets/{chunk-55IACEB6-BnDBLX6A.js → chunk-55IACEB6-yGdtyx4a.js} +1 -1
  208. package/web-shell/assets/{chunk-727SXJPM-B83uTOjm.js → chunk-727SXJPM-DYbX2GLo.js} +1 -1
  209. package/web-shell/assets/{chunk-AQP2D5EJ-DM3HLgpT.js → chunk-AQP2D5EJ-DyKTEsYn.js} +1 -1
  210. package/web-shell/assets/{chunk-FMBD7UC4-CSQ5hgyb.js → chunk-FMBD7UC4-D8Uy_GzX.js} +1 -1
  211. package/web-shell/assets/{chunk-ND2GUHAM-BWOF4SxX.js → chunk-ND2GUHAM-C8wNR2K7.js} +1 -1
  212. package/web-shell/assets/{chunk-QZHKN3VN-BsOH9LMi.js → chunk-QZHKN3VN-BnybNxnt.js} +1 -1
  213. package/web-shell/assets/classDiagram-4FO5ZUOK-qumcXQW_.js +1 -0
  214. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-qumcXQW_.js +1 -0
  215. package/web-shell/assets/{cose-bilkent-S5V4N54A-IENqH2iJ.js → cose-bilkent-S5V4N54A-jq4uiFRp.js} +1 -1
  216. package/web-shell/assets/{dagre-BM42HDAG--dyzDTGo.js → dagre-BM42HDAG-Bs7oye1U.js} +1 -1
  217. package/web-shell/assets/{diagram-2AECGRRQ-BE7Dcqof.js → diagram-2AECGRRQ-BHGGJNyM.js} +1 -1
  218. package/web-shell/assets/{diagram-5GNKFQAL-Cr8-5OTj.js → diagram-5GNKFQAL-BJezVLGT.js} +1 -1
  219. package/web-shell/assets/{diagram-KO2AKTUF-Bzey3uAY.js → diagram-KO2AKTUF-5JzQN_rL.js} +1 -1
  220. package/web-shell/assets/{diagram-LMA3HP47-sErl28Xb.js → diagram-LMA3HP47-BlPYOgY9.js} +1 -1
  221. package/web-shell/assets/{diagram-OG6HWLK6-Dq30ATIo.js → diagram-OG6HWLK6-CtMHEaFK.js} +1 -1
  222. package/web-shell/assets/{erDiagram-TEJ5UH35-BkCoEfVW.js → erDiagram-TEJ5UH35-CRNdq2AB.js} +1 -1
  223. package/web-shell/assets/{flowDiagram-I6XJVG4X-DHwO0rrI.js → flowDiagram-I6XJVG4X-De1WwLzu.js} +1 -1
  224. package/web-shell/assets/{ganttDiagram-6RSMTGT7-s7vAPxWq.js → ganttDiagram-6RSMTGT7-YbWfL5Zn.js} +1 -1
  225. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CQxhwPOU.js → gitGraphDiagram-PVQCEYII-DzCN8bmd.js} +1 -1
  226. package/web-shell/assets/index-BDOGGGaN.css +5 -0
  227. package/web-shell/assets/{index-CF4wApWp.js → index-CocPvF9Q.js} +1 -1
  228. package/web-shell/assets/index-DSH2KrMc.js +1771 -0
  229. package/web-shell/assets/{infoDiagram-5YYISTIA-BnFrD0bq.js → infoDiagram-5YYISTIA-DLHoopnE.js} +1 -1
  230. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Bf9zK5NK.js → ishikawaDiagram-YF4QCWOH-XnbU04SS.js} +1 -1
  231. package/web-shell/assets/{journeyDiagram-JHISSGLW-CyGAhsxi.js → journeyDiagram-JHISSGLW-CipPyEeJ.js} +1 -1
  232. package/web-shell/assets/{kanban-definition-UN3LZRKU-CbsK5akB.js → kanban-definition-UN3LZRKU-DrSeyE5d.js} +1 -1
  233. package/web-shell/assets/{linear-cQsF4P8D.js → linear-LrBKnAo_.js} +1 -1
  234. package/web-shell/assets/{mermaid.core-Z4HVqrKY.js → mermaid.core-C3U9UVmf.js} +5 -5
  235. package/web-shell/assets/{mindmap-definition-RKZ34NQL-CYnrBo_f.js → mindmap-definition-RKZ34NQL-DqRWgC9H.js} +1 -1
  236. package/web-shell/assets/{pieDiagram-4H26LBE5-CBzOfhrs.js → pieDiagram-4H26LBE5-BNXY5p6H.js} +1 -1
  237. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-D4LK1Ebn.js → quadrantDiagram-W4KKPZXB-Ccj9QzE4.js} +1 -1
  238. package/web-shell/assets/{requirementDiagram-4Y6WPE33-Bzti2Lcj.js → requirementDiagram-4Y6WPE33-CjPM2_gx.js} +1 -1
  239. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-yTBw5Z2s.js → sankeyDiagram-5OEKKPKP-C0RsvKbj.js} +1 -1
  240. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-D07UVRiZ.js → sequenceDiagram-3UESZ5HK-ClN1P5z7.js} +1 -1
  241. package/web-shell/assets/{stateDiagram-AJRCARHV-UE_lHsTn.js → stateDiagram-AJRCARHV-By0eiB2Y.js} +1 -1
  242. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Ds0WlK3F.js +1 -0
  243. package/web-shell/assets/{timeline-definition-PNZ67QCA-DRvYdiTs.js → timeline-definition-PNZ67QCA-g_iaSQgv.js} +1 -1
  244. package/web-shell/assets/{vennDiagram-CIIHVFJN-CQLIXs0u.js → vennDiagram-CIIHVFJN-y9ZqJ-TD.js} +1 -1
  245. package/web-shell/assets/{wardley-L42UT6IY-JZz_Xqse.js → wardley-L42UT6IY-BVVfaxpF.js} +1 -1
  246. package/web-shell/assets/{wardleyDiagram-YWT4CUSO--i7BiJwB.js → wardleyDiagram-YWT4CUSO-D3ooZKZT.js} +1 -1
  247. package/web-shell/assets/{xychartDiagram-2RQKCTM6-Bkc-bW0S.js → xychartDiagram-2RQKCTM6-6GXrY6M1.js} +1 -1
  248. package/web-shell/index.html +2 -2
  249. package/chunks/chunk-RXFQM6FQ.js +0 -42
  250. package/chunks/chunk-UA5H3DS2.js +0 -203
  251. package/web-shell/assets/channel-BMwLrwLW.js +0 -1
  252. package/web-shell/assets/classDiagram-4FO5ZUOK-BGDv98jY.js +0 -1
  253. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BGDv98jY.js +0 -1
  254. package/web-shell/assets/index-Bckpjr-I.css +0 -5
  255. package/web-shell/assets/index-DwEr9HEW.js +0 -1768
  256. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DC6xgXjX.js +0 -1
  257. /package/chunks/{chunk-VXZBKKQR.js → chunk-NTTBXH7U.js} +0 -0
  258. /package/chunks/{chunk-GRC5HGPI.js → chunk-OIBUG24X.js} +0 -0
@@ -0,0 +1,389 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ writeStderrLineSafe
5
+ } from "./chunk-KGJGEEVR.js";
6
+ import {
7
+ init_esbuild_shims
8
+ } from "./chunk-5O2XNYP6.js";
9
+ import {
10
+ __name
11
+ } from "./chunk-J2S4EL5Y.js";
12
+
13
+ // packages/cli/src/config/acp-channel-fallback.ts
14
+ init_esbuild_shims();
15
+ var QWEN_CODE_SERVE_ENV = "QWEN_CODE_SERVE";
16
+ var QWEN_CODE_DESKTOP_ENV = "QWEN_CODE_DESKTOP";
17
+ function resolveAcpChannelFallback(env = process.env) {
18
+ if (env[QWEN_CODE_DESKTOP_ENV] === "1") {
19
+ return "desktop";
20
+ }
21
+ if (env[QWEN_CODE_SERVE_ENV] === "1") {
22
+ return "daemon";
23
+ }
24
+ return "ACP";
25
+ }
26
+ __name(resolveAcpChannelFallback, "resolveAcpChannelFallback");
27
+
28
+ // packages/cli/src/config/shared-env-keys.ts
29
+ init_esbuild_shims();
30
+ var DEFAULT_EXCLUDED_ENV_VARS = ["DEBUG", "DEBUG_MODE"];
31
+ var ENV_CORRUPTED_PATH = "QWEN_CODE_SETTINGS_CORRUPTED_PATH";
32
+ var ENV_WAS_RECOVERED = "QWEN_CODE_SETTINGS_WAS_RECOVERED";
33
+ var ENV_ACP_REPEATED_TOOL_FAILURE_GUARD = "QWEN_CODE_ACP_REPEATED_TOOL_FAILURE_GUARD";
34
+ var PROJECT_ENV_HARDCODED_EXCLUSIONS = [
35
+ "QWEN_HOME",
36
+ "QWEN_RUNTIME_DIR",
37
+ "QWEN_CODE_MCP_APPROVALS_PATH",
38
+ "QWEN_CODE_TRUSTED_FOLDERS_PATH",
39
+ // Runtime attribution markers are stamped by trusted launchers. A project
40
+ // `.env` must not spoof client channel telemetry.
41
+ QWEN_CODE_SERVE_ENV,
42
+ QWEN_CODE_DESKTOP_ENV,
43
+ ENV_CORRUPTED_PATH,
44
+ ENV_WAS_RECOVERED,
45
+ // This is an operator rollout policy. A project must not be able to promote
46
+ // itself from the default shadow cohort into warning or enforcement.
47
+ ENV_ACP_REPEATED_TOOL_FAILURE_GUARD,
48
+ // QWEN_TLS_INSECURE (and NODE_TLS_REJECT_UNAUTHORIZED, which it mirrors)
49
+ // disable TLS certificate verification for all outbound API connections. A
50
+ // project `.env` must never enable either — that would let an untrusted repo
51
+ // silently turn off MITM protection. Opt-in stays with the user via the
52
+ // `--insecure` flag, the shell environment, or a home `.env`. The initial
53
+ // `.env` load only consults this list, so both keys must be here (not just
54
+ // RELOAD_EXCLUDED_KEYS, which only applies on reload).
55
+ "QWEN_TLS_INSECURE",
56
+ "NODE_TLS_REJECT_UNAUTHORIZED",
57
+ // NODE_EXTRA_CA_CERTS reaches the same outcome by adding a TLS trust
58
+ // anchor instead of disabling verification.
59
+ "NODE_EXTRA_CA_CERTS",
60
+ // The non-Node TLS trust-anchor vars reach the SAME MITM outcome for the
61
+ // curl/git/openssl/python tools a session subprocess routinely shells out
62
+ // to: they are honored unconditionally as a CA bundle/dir, and npm/pip
63
+ // honor their own equivalents (npm_config_cafile / npm_config_ca / PIP_CERT
64
+ // as attacker CAs, npm_config_strict_ssl=false disables verification with
65
+ // no CA at all; GIT_SSL_CAPATH is git's directory-form twin of
66
+ // GIT_SSL_CAINFO). A project `.env` pointing any of them at an attacker CA
67
+ // lets an untrusted repo silently intercept token-bearing traffic
68
+ // (git/npm/pip fetches) for every workspace's sessions — the exact outcome
69
+ // NODE_EXTRA_CA_CERTS is blocked for. Like NODE_EXTRA_CA_CERTS these stay
70
+ // reject-from-project-`.env` only: a value the operator set in their own
71
+ // login shell or home `.env` is their trusted choice and is preserved.
72
+ "SSL_CERT_FILE",
73
+ "SSL_CERT_DIR",
74
+ "CURL_CA_BUNDLE",
75
+ "REQUESTS_CA_BUNDLE",
76
+ "GIT_SSL_CAINFO",
77
+ "GIT_SSL_CAPATH",
78
+ "npm_config_cafile",
79
+ "npm_config_ca",
80
+ // npm treats underscore/hyphen spellings of a config key as the same key
81
+ // (see canonicalLoaderKey below), so both forms of strict-ssl are listed.
82
+ "npm_config_strict_ssl",
83
+ "npm_config_strict-ssl",
84
+ "PIP_CERT",
85
+ // CURL_HOME / WGETRC redirect curl/wget at attacker rc files
86
+ // (`$CURL_HOME/.curlrc`, the file WGETRC names) whose `proxy`, `cacert`, or
87
+ // `insecure` directives intercept or downgrade the same token-bearing
88
+ // traffic — the config-file-redirect class this list already blocks for npm
89
+ // (`npm_config_userconfig`), git (`GIT_CONFIG_GLOBAL`), and OpenSSL
90
+ // (`OPENSSL_CONF`).
91
+ "CURL_HOME",
92
+ "WGETRC",
93
+ // PIP_CONFIG_FILE redirects all of pip's configuration at the file it
94
+ // names — index-url, trusted-host, proxy, cert, or client-cert in an
95
+ // attacker file sends session pip traffic or credentials to attacker
96
+ // infrastructure — the same config-file-redirect class as
97
+ // npm_config_userconfig and GIT_CONFIG_GLOBAL.
98
+ "PIP_CONFIG_FILE",
99
+ // The git command-execution env family: git runs these on any invocation in
100
+ // a session subprocess. GIT_SSH_COMMAND / GIT_SSH (its documented legacy
101
+ // counterpart, still exec'd by git for SSH transports) / GIT_EXTERNAL_DIFF
102
+ // execute a command directly; GIT_ASKPASS / GIT_PROXY_COMMAND / GIT_EDITOR
103
+ // / GIT_SEQUENCE_EDITOR are exec'd conditionally (credential prompt, proxy
104
+ // transport, editor, `git rebase -i` todo-list edit);
105
+ // GIT_EXEC_PATH redirects git's own remote-helper/subcommand lookup at an
106
+ // attacker directory and GIT_TEMPLATE_DIR plants hooks that run after the
107
+ // next clone/init; GIT_CONFIG_* injects arbitrary config (`core.hooksPath`,
108
+ // `core.fsmonitor`, …) that turns a routine `git commit` into
109
+ // attacker-code execution as the daemon user — GIT_CONFIG_PARAMETERS
110
+ // carries the same injection as one quoted string, so it is blocked with
111
+ // GIT_CONFIG_COUNT and the numbered pairs. core/utils/git-branches.ts
112
+ // scrubs the config-injection subset from the repo's own git invocations,
113
+ // so a project `.env` setting this family contradicts that model. Numbered
114
+ // GIT_CONFIG_KEY_<n>/GIT_CONFIG_VALUE_<n> pairs are matched by numeric
115
+ // suffix below.
116
+ "GIT_SSH_COMMAND",
117
+ "GIT_SSH",
118
+ "GIT_EXEC_PATH",
119
+ "GIT_TEMPLATE_DIR",
120
+ "GIT_ASKPASS",
121
+ "GIT_PROXY_COMMAND",
122
+ "GIT_EDITOR",
123
+ "GIT_SEQUENCE_EDITOR",
124
+ "GIT_EXTERNAL_DIFF",
125
+ "GIT_CONFIG_GLOBAL",
126
+ "GIT_CONFIG_SYSTEM",
127
+ // git merges `$XDG_CONFIG_HOME/git/config` with `~/.gitconfig`, so a
128
+ // project `.env` redirecting XDG_CONFIG_HOME plants the same config
129
+ // injection (`core.hooksPath`, …) the GIT_CONFIG_* keys block — without
130
+ // naming a git config file at all.
131
+ "XDG_CONFIG_HOME",
132
+ "GIT_CONFIG_COUNT",
133
+ "GIT_CONFIG_PARAMETERS",
134
+ // git falls back to executing $SSH_ASKPASS for passphrase prompts (its
135
+ // askpass order is GIT_ASKPASS > core.askPass > SSH_ASKPASS, and ssh runs
136
+ // it whenever SSH_ASKPASS_REQUIRE=force or no terminal is available), so a
137
+ // project `.env` pointing it at an attacker script is code execution on
138
+ // any git/ssh auth challenge. SSH_ASKPASS_REQUIRE stays settable: it only
139
+ // selects *when* the askpass program runs, and with SSH_ASKPASS
140
+ // project-blocked it has no program to execute.
141
+ "SSH_ASKPASS",
142
+ // less executes $LESSOPEN as an input preprocessor on every file a session
143
+ // views (and $LESSCLOSE on exit whenever the preprocessor ran), so a
144
+ // project `.env` setting either is attacker command execution the first
145
+ // time a session runs `less`.
146
+ "LESSOPEN",
147
+ "LESSCLOSE",
148
+ // node-gyp interpreter selection: node-gyp's find-python.js executes
149
+ // NODE_GYP_FORCE_PYTHON / npm_config_python / PYTHON as the build Python,
150
+ // so a project `.env` pointing them at an attacker script is code execution
151
+ // during any native-addon `npm install` in another workspace's session.
152
+ // Unlike the pure-injection loader keys these have a legitimate
153
+ // operator-shell use (selecting a real interpreter), so they are
154
+ // reject-from-project-`.env` only, not scrubbed from the launch env.
155
+ "NODE_GYP_FORCE_PYTHON",
156
+ "npm_config_python",
157
+ "PYTHON",
158
+ // CPython executes $PYTHONSTARTUP at interactive startup — the Python
159
+ // analogue of NODE_REPL_EXTERNAL_MODULE. It stays reject-only (like
160
+ // PYTHON) because operators legitimately set it in their own shells.
161
+ "PYTHONSTARTUP",
162
+ // git's documented editor fallback chain (GIT_EDITOR → core.editor →
163
+ // $VISUAL → $EDITOR) executes these exactly like the blocked GIT_EDITOR,
164
+ // and the CLI's own useLaunchEditor spawns them from ordinary interactive
165
+ // flows.
166
+ "VISUAL",
167
+ "EDITOR",
168
+ // npm runs `$npm_config_git` as the git binary for install-from-git and
169
+ // similar flows, so a project `.env` pointing it at an attacker script is
170
+ // the same exec redirect as the interpreter keys above.
171
+ "npm_config_git",
172
+ // The CLI itself execs $BROWSER via openBrowserSecurely (core/utils/
173
+ // secure-browser-launcher.ts) before any CI/DISPLAY gate, so a project
174
+ // `.env` pointing it at an attacker script runs on any browser-launch
175
+ // flow.
176
+ "BROWSER",
177
+ // QWEN_CLI_ENTRY is the script path daemon-spawned session processes run.
178
+ // A project `.env` or settings.env fixing it turns
179
+ // `cd <untrusted repo> && qwen serve` into code execution as the daemon
180
+ // via an attacker-chosen ACP entrypoint, for every workspace's sessions.
181
+ "QWEN_CLI_ENTRY",
182
+ // QWEN_CDP_MCP_COMMAND is the command the daemon spawns as the
183
+ // browser-automation MCP adapter, and QWEN_SERVE_CDP_TUNNEL_OVER_WS
184
+ // switches that tunnel surface on. A project `.env` or settings.env fixing
185
+ // either hijacks the daemon the same way QWEN_CLI_ENTRY does; values the
186
+ // operator set in the daemon's launch env still apply.
187
+ "QWEN_CDP_MCP_COMMAND",
188
+ "QWEN_SERVE_CDP_TUNNEL_OVER_WS",
189
+ // DEV gates the daemon's inherited-loader-env scrub (run-qwen-serve.ts);
190
+ // only the dev harness (scripts/dev.js) stamps it into the launch env. A
191
+ // project file setting it would silently keep loader vars in the base env
192
+ // distributed to every workspace's session children — reopening the #8653
193
+ // vector for any repo whose .env happens to carry DEV=true.
194
+ "DEV"
195
+ ];
196
+ var HARDCODED_PROJECT_ENV_EXCLUSIONS = new Set(
197
+ PROJECT_ENV_HARDCODED_EXCLUSIONS.map((key) => key.toLowerCase())
198
+ );
199
+ var HARDCODED_PROJECT_ENV_EXCLUSION_PATTERNS = [
200
+ /^git_config_key_\d+$/u,
201
+ /^git_config_value_\d+$/u
202
+ ];
203
+ function isHardcodedProjectEnvExclusion(key) {
204
+ const lowerKey = key.toLowerCase();
205
+ return HARDCODED_PROJECT_ENV_EXCLUSIONS.has(lowerKey) || HARDCODED_PROJECT_ENV_EXCLUSION_PATTERNS.some(
206
+ (pattern) => pattern.test(lowerKey)
207
+ );
208
+ }
209
+ __name(isHardcodedProjectEnvExclusion, "isHardcodedProjectEnvExclusion");
210
+ var HOME_ENV_BOOTSTRAP_KEYS = [
211
+ "QWEN_HOME",
212
+ "QWEN_RUNTIME_DIR",
213
+ "QWEN_CODE_MCP_APPROVALS_PATH",
214
+ "QWEN_CODE_TRUSTED_FOLDERS_PATH"
215
+ ];
216
+ var INHERITED_LOADER_ENV_KEYS = [
217
+ "NODE_OPTIONS",
218
+ // npm maps its `node-options` config onto npm_config_node_options in the
219
+ // environment, and `npm run` lifecycle scripts apply it like NODE_OPTIONS —
220
+ // the same hijack through an adjacent key. The config-file keys are the
221
+ // same hijack one level up: they point npm at an attacker-chosen .npmrc
222
+ // that can itself set node-options/script-shell/ignore-scripts, and `npm
223
+ // run` itself exports them into the script environment.
224
+ "npm_config_node_options",
225
+ "npm_config_userconfig",
226
+ "npm_config_globalconfig",
227
+ "npm_config_script_shell",
228
+ "npm_config_prefix",
229
+ "NODE_PATH",
230
+ // OPENSSL_CONF points Node's startup crypto init at an attacker `.cnf`
231
+ // whose `nodejs_conf` section can dlopen an arbitrary engine/provider `.so`
232
+ // before any user code runs — a pure code-injection vector with no benign
233
+ // cross-workspace inheritance, so it is scrubbed like NODE_OPTIONS.
234
+ "OPENSSL_CONF",
235
+ // NODE_REPL_EXTERNAL_MODULE makes a spawned `node` REPL require() an
236
+ // attacker file at startup. npm_config_node_gyp overrides the node-gyp
237
+ // *script* npm's shim runs verbatim (`"$npm_config_node_gyp" "$@"`), and
238
+ // npm_config_init_module is require()d by `npm init` (even `-y`). All three
239
+ // are executable/module redirects with no legitimate login-shell use, so
240
+ // they join the scrubbed loader set rather than the reject-only tier.
241
+ "NODE_REPL_EXTERNAL_MODULE",
242
+ "npm_config_node_gyp",
243
+ "npm_config_init_module",
244
+ "LD_PRELOAD",
245
+ "LD_AUDIT",
246
+ "DYLD_INSERT_LIBRARIES",
247
+ "BASH_ENV",
248
+ // zsh sources $ZDOTDIR/.zshenv on every invocation, including
249
+ // non-interactive `zsh -c` — the zsh analogue of BASH_ENV.
250
+ "ZDOTDIR"
251
+ // BASH_FUNC_* exported-function definitions are bash's other env-driven
252
+ // code-import channel (non-interactive `bash -c` still imports them);
253
+ // matched by prefix in isLoaderEnvKey, not listed here.
254
+ ];
255
+ var canonicalLoaderKey = /* @__PURE__ */ __name((key) => key.toLowerCase().replace(/_/gu, "-"), "canonicalLoaderKey");
256
+ var LOADER_ENV_KEYS = new Set(
257
+ INHERITED_LOADER_ENV_KEYS.map(canonicalLoaderKey)
258
+ );
259
+ function isLoaderEnvKey(key) {
260
+ const canonical = canonicalLoaderKey(key);
261
+ return canonical.startsWith("bash-func-") || LOADER_ENV_KEYS.has(canonical);
262
+ }
263
+ __name(isLoaderEnvKey, "isLoaderEnvKey");
264
+ function scrubInheritedLoaderEnv(env, snapshotInto) {
265
+ const removedKeys = [];
266
+ for (const key of Object.keys(env)) {
267
+ if (isLoaderEnvKey(key)) {
268
+ const value = env[key];
269
+ if (snapshotInto && value !== void 0) snapshotInto.set(key, value);
270
+ delete env[key];
271
+ removedKeys.push(key);
272
+ }
273
+ }
274
+ return removedKeys;
275
+ }
276
+ __name(scrubInheritedLoaderEnv, "scrubInheritedLoaderEnv");
277
+ function scrubAndReportInheritedLoaderEnv(env, commandLabel, processLabel, snapshotInto) {
278
+ const removedKeys = scrubInheritedLoaderEnv(env, snapshotInto);
279
+ if (removedKeys.length > 0) {
280
+ writeStderrLineSafe(
281
+ `${commandLabel}: scrubbed inherited loader env vars from the ${processLabel} process; session subprocesses will not inherit them: ${removedKeys.join(", ")}`
282
+ );
283
+ }
284
+ return removedKeys;
285
+ }
286
+ __name(scrubAndReportInheritedLoaderEnv, "scrubAndReportInheritedLoaderEnv");
287
+ var sharedProcessEnvScrubDepth = 0;
288
+ var sharedProcessEnvScrubOriginals = /* @__PURE__ */ new Map();
289
+ function acquireInheritedLoaderEnvScrub(env, commandLabel, processLabel) {
290
+ sharedProcessEnvScrubDepth++;
291
+ const removedKeys = scrubAndReportInheritedLoaderEnv(
292
+ env,
293
+ commandLabel,
294
+ processLabel,
295
+ sharedProcessEnvScrubOriginals
296
+ );
297
+ let released = false;
298
+ return {
299
+ removedKeys,
300
+ release() {
301
+ if (released) return;
302
+ released = true;
303
+ sharedProcessEnvScrubDepth--;
304
+ if (sharedProcessEnvScrubDepth > 0) return;
305
+ for (const [key, value] of sharedProcessEnvScrubOriginals) {
306
+ if (!Object.hasOwn(env, key)) env[key] = value;
307
+ }
308
+ sharedProcessEnvScrubOriginals.clear();
309
+ }
310
+ };
311
+ }
312
+ __name(acquireInheritedLoaderEnvScrub, "acquireInheritedLoaderEnvScrub");
313
+ var reportedLoaderKeyRejections = /* @__PURE__ */ new Map();
314
+ var loaderKeyRejectionReporter;
315
+ function setLoaderKeyRejectionReporter(reporter) {
316
+ loaderKeyRejectionReporter = reporter;
317
+ }
318
+ __name(setLoaderKeyRejectionReporter, "setLoaderKeyRejectionReporter");
319
+ function clearLoaderKeyRejectionReporterIfCurrent(reporter) {
320
+ if (loaderKeyRejectionReporter === reporter) {
321
+ loaderKeyRejectionReporter = void 0;
322
+ }
323
+ }
324
+ __name(clearLoaderKeyRejectionReporterIfCurrent, "clearLoaderKeyRejectionReporterIfCurrent");
325
+ function reportRejectedLoaderKeys(source, candidateKeys) {
326
+ const rejectedKeys = candidateKeys.filter(isLoaderEnvKey);
327
+ const warnedKeys = reportedLoaderKeyRejections.get(source) ?? /* @__PURE__ */ new Set();
328
+ const freshKeys = rejectedKeys.filter((key) => !warnedKeys.has(key));
329
+ if (freshKeys.length === 0) return rejectedKeys;
330
+ for (const key of freshKeys) warnedKeys.add(key);
331
+ reportedLoaderKeyRejections.set(source, warnedKeys);
332
+ if (loaderKeyRejectionReporter) {
333
+ loaderKeyRejectionReporter(source, freshKeys);
334
+ } else {
335
+ writeStderrLineSafe(
336
+ `qwen: ${source} cannot set loader-affecting env vars; ignored: ` + freshKeys.join(", ")
337
+ );
338
+ }
339
+ return rejectedKeys;
340
+ }
341
+ __name(reportRejectedLoaderKeys, "reportRejectedLoaderKeys");
342
+ function resetLoaderKeyRejectionReportingForTesting() {
343
+ reportedLoaderKeyRejections.clear();
344
+ }
345
+ __name(resetLoaderKeyRejectionReportingForTesting, "resetLoaderKeyRejectionReportingForTesting");
346
+
347
+ // packages/cli/src/config/compile-cache.ts
348
+ init_esbuild_shims();
349
+ var PENDING_COMPILE_CACHE_ENV = "QWEN_CODE_PENDING_COMPILE_CACHE";
350
+ function publishPendingCompileCache(env = process.env) {
351
+ const pendingDirectory = env[PENDING_COMPILE_CACHE_ENV];
352
+ delete env[PENDING_COMPILE_CACHE_ENV];
353
+ if (pendingDirectory && !env["NODE_COMPILE_CACHE"] && env["NODE_DISABLE_COMPILE_CACHE"] !== "1") {
354
+ env["NODE_COMPILE_CACHE"] = pendingDirectory;
355
+ }
356
+ }
357
+ __name(publishPendingCompileCache, "publishPendingCompileCache");
358
+
359
+ export {
360
+ QWEN_CODE_SERVE_ENV,
361
+ QWEN_CODE_DESKTOP_ENV,
362
+ resolveAcpChannelFallback,
363
+ DEFAULT_EXCLUDED_ENV_VARS,
364
+ ENV_CORRUPTED_PATH,
365
+ ENV_WAS_RECOVERED,
366
+ ENV_ACP_REPEATED_TOOL_FAILURE_GUARD,
367
+ PROJECT_ENV_HARDCODED_EXCLUSIONS,
368
+ isHardcodedProjectEnvExclusion,
369
+ HOME_ENV_BOOTSTRAP_KEYS,
370
+ isLoaderEnvKey,
371
+ scrubInheritedLoaderEnv,
372
+ scrubAndReportInheritedLoaderEnv,
373
+ acquireInheritedLoaderEnvScrub,
374
+ setLoaderKeyRejectionReporter,
375
+ clearLoaderKeyRejectionReporterIfCurrent,
376
+ reportRejectedLoaderKeys,
377
+ resetLoaderKeyRejectionReportingForTesting,
378
+ publishPendingCompileCache
379
+ };
380
+ /**
381
+ * @license
382
+ * Copyright 2026 Qwen Team
383
+ * SPDX-License-Identifier: Apache-2.0
384
+ */
385
+ /**
386
+ * @license
387
+ * Copyright 2025 Qwen Team
388
+ * SPDX-License-Identifier: Apache-2.0
389
+ */
@@ -0,0 +1,51 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-5O2XNYP6.js";
6
+ import {
7
+ __name
8
+ } from "./chunk-J2S4EL5Y.js";
9
+
10
+ // packages/core/dist/src/services/tool-write-origin.js
11
+ init_esbuild_shims();
12
+ var TOOL_WRITE_ORIGIN_META_KEY = "qwen-code/tool-write-origin";
13
+ var TOOL_WRITE_ORIGINS = [
14
+ "write_file",
15
+ "edit",
16
+ "notebook_edit",
17
+ "shell_sed_edit"
18
+ ];
19
+ var TOOL_WRITE_ORIGIN_SET = new Set(TOOL_WRITE_ORIGINS);
20
+ function buildToolWriteOriginMeta(meta, source) {
21
+ const sanitized = { ...meta };
22
+ delete sanitized[TOOL_WRITE_ORIGIN_META_KEY];
23
+ if (source !== void 0) {
24
+ sanitized[TOOL_WRITE_ORIGIN_META_KEY] = { version: 1, source };
25
+ }
26
+ return Object.keys(sanitized).length > 0 ? sanitized : void 0;
27
+ }
28
+ __name(buildToolWriteOriginMeta, "buildToolWriteOriginMeta");
29
+ function parseToolWriteOriginMeta(meta) {
30
+ const marker = meta?.[TOOL_WRITE_ORIGIN_META_KEY];
31
+ if (typeof marker !== "object" || marker === null || Array.isArray(marker)) {
32
+ return void 0;
33
+ }
34
+ const keys = Object.keys(marker);
35
+ if (keys.length !== 2 || !Object.hasOwn(marker, "version") || !Object.hasOwn(marker, "source")) {
36
+ return void 0;
37
+ }
38
+ const record = marker;
39
+ return record["version"] === 1 && typeof record["source"] === "string" && TOOL_WRITE_ORIGIN_SET.has(record["source"]) ? record["source"] : void 0;
40
+ }
41
+ __name(parseToolWriteOriginMeta, "parseToolWriteOriginMeta");
42
+
43
+ export {
44
+ buildToolWriteOriginMeta,
45
+ parseToolWriteOriginMeta
46
+ };
47
+ /**
48
+ * @license
49
+ * Copyright 2025 Google LLC
50
+ * SPDX-License-Identifier: Apache-2.0
51
+ */
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  getGlobalQwenDir
5
- } from "./chunk-DIWZNWZT.js";
5
+ } from "./chunk-DX3RGJMS.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -16,7 +16,7 @@ import {
16
16
  MODIFIER_SHIFT_BIT,
17
17
  MODIFIER_SUPER_BIT,
18
18
  clipboardHasImage
19
- } from "./chunk-EN2TKTFH.js";
19
+ } from "./chunk-NV3F44FL.js";
20
20
  import {
21
21
  noteInteraction
22
22
  } from "./chunk-KW7NOTN6.js";
@@ -33,7 +33,7 @@ import {
33
33
  import {
34
34
  KittySequenceOverflowEvent,
35
35
  logKittySequenceOverflow
36
- } from "./chunk-3PY4LPJF.js";
36
+ } from "./chunk-YGT2AUJ7.js";
37
37
  import {
38
38
  createDebugLogger
39
39
  } from "./chunk-OIVKILPI.js";
@@ -563,7 +563,7 @@ var WorkspaceRegistrationStore = class {
563
563
  return removed;
564
564
  }
565
565
  async update(mutate) {
566
- const { atomicWriteFile } = await import("./deferred-core-runtime-CBMSHPAU.js");
566
+ const { atomicWriteFile } = await import("./deferred-core-runtime-SH57E3J3.js");
567
567
  return withInProcessLock(this.filePath, async () => {
568
568
  const lock = await acquireFileLock(this.filePath);
569
569
  let committed = false;
@@ -2,17 +2,17 @@
2
2
  "use strict";
3
3
  import {
4
4
  performStandaloneUpdate
5
- } from "./chunk-ZHA242R4.js";
5
+ } from "./chunk-RVSTTOJ4.js";
6
6
  import {
7
7
  updateEventEmitter
8
8
  } from "./chunk-YAF2MQZ6.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-PG62DFWD.js";
11
+ } from "./chunk-WP5VOXF7.js";
12
12
  import {
13
13
  getInstallationInfo,
14
14
  resolveUpdateCommand
15
- } from "./chunk-IUQ52YJK.js";
15
+ } from "./chunk-BIRWP6LU.js";
16
16
  import {
17
17
  createDebugLogger
18
18
  } from "./chunk-OIVKILPI.js";
@@ -1,8 +1,11 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ resolveSupportedLanguage
5
+ } from "./chunk-5EJZE3FP.js";
3
6
  import {
4
7
  resolveBundleDir
5
- } from "./chunk-GXSNGY5M.js";
8
+ } from "./chunk-XX7QFP34.js";
6
9
  import {
7
10
  Storage
8
11
  } from "./chunk-OIVKILPI.js";
@@ -23,125 +26,6 @@ import * as fs from "node:fs";
23
26
  import * as path from "node:path";
24
27
  import { pathToFileURL } from "node:url";
25
28
 
26
- // packages/cli/src/i18n/languages.ts
27
- init_esbuild_shims();
28
- var SUPPORTED_LANGUAGES = [
29
- {
30
- code: "en",
31
- id: "en-US",
32
- fullName: "English",
33
- nativeName: "English"
34
- },
35
- {
36
- code: "zh-TW",
37
- id: "zh-TW",
38
- fullName: "Traditional Chinese",
39
- nativeName: "\u7E41\u9AD4\u4E2D\u6587",
40
- strictParity: true
41
- },
42
- {
43
- code: "zh",
44
- id: "zh-CN",
45
- fullName: "Chinese",
46
- nativeName: "\u4E2D\u6587",
47
- strictParity: true
48
- },
49
- {
50
- code: "ru",
51
- id: "ru-RU",
52
- fullName: "Russian",
53
- nativeName: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439"
54
- },
55
- {
56
- code: "de",
57
- id: "de-DE",
58
- fullName: "German",
59
- nativeName: "Deutsch"
60
- },
61
- {
62
- code: "ja",
63
- id: "ja-JP",
64
- fullName: "Japanese",
65
- nativeName: "\u65E5\u672C\u8A9E"
66
- },
67
- {
68
- code: "pt",
69
- id: "pt-BR",
70
- fullName: "Portuguese",
71
- nativeName: "Portugu\xEAs"
72
- },
73
- {
74
- code: "fr",
75
- id: "fr-FR",
76
- fullName: "French",
77
- nativeName: "Fran\xE7ais"
78
- },
79
- {
80
- code: "ca",
81
- id: "ca-ES",
82
- fullName: "Catalan",
83
- nativeName: "Catal\xE0"
84
- }
85
- ];
86
- function normalizeLanguageCandidate(input) {
87
- return input.trim().replace(/_/g, "-").toLowerCase();
88
- }
89
- __name(normalizeLanguageCandidate, "normalizeLanguageCandidate");
90
- function matchesLocaleToken(candidate, token) {
91
- return candidate === token || candidate.startsWith(`${token}-`) || candidate.startsWith(`${token}.`) || candidate.startsWith(`${token}@`);
92
- }
93
- __name(matchesLocaleToken, "matchesLocaleToken");
94
- function getMatchedLocaleTokenLength(candidate, language) {
95
- const code = language.code.toLowerCase();
96
- const id = language.id.toLowerCase();
97
- if (matchesLocaleToken(candidate, id)) {
98
- return id.length;
99
- }
100
- if (matchesLocaleToken(candidate, code)) {
101
- return code.length;
102
- }
103
- return void 0;
104
- }
105
- __name(getMatchedLocaleTokenLength, "getMatchedLocaleTokenLength");
106
- function resolveSupportedLanguage(input) {
107
- const normalized = normalizeLanguageCandidate(input);
108
- if (!normalized) {
109
- return void 0;
110
- }
111
- let bestMatch;
112
- for (const language of SUPPORTED_LANGUAGES) {
113
- if (normalized === language.fullName.toLowerCase() || language.nativeName && normalized === language.nativeName.toLowerCase()) {
114
- return language.code;
115
- }
116
- const tokenLength = getMatchedLocaleTokenLength(normalized, language);
117
- if (tokenLength !== void 0 && (!bestMatch || tokenLength > bestMatch.tokenLength)) {
118
- bestMatch = { code: language.code, tokenLength };
119
- }
120
- }
121
- return bestMatch?.code;
122
- }
123
- __name(resolveSupportedLanguage, "resolveSupportedLanguage");
124
- function getLanguageNameFromLocale(locale) {
125
- const resolved = resolveSupportedLanguage(locale);
126
- const lang = resolved ? SUPPORTED_LANGUAGES.find((language) => language.code === resolved) : void 0;
127
- return lang?.fullName || "English";
128
- }
129
- __name(getLanguageNameFromLocale, "getLanguageNameFromLocale");
130
- function getLanguageSettingsOptions() {
131
- return [
132
- { value: "auto", label: "Auto (detect from system)" },
133
- ...SUPPORTED_LANGUAGES.map((l) => ({
134
- value: l.code,
135
- label: l.nativeName ? `${l.nativeName} (${l.fullName})` : `${l.fullName} (${l.id})`
136
- }))
137
- ];
138
- }
139
- __name(getLanguageSettingsOptions, "getLanguageSettingsOptions");
140
- function getSupportedLanguageIds(separator = "|") {
141
- return SUPPORTED_LANGUAGES.map((l) => l.id).join(separator);
142
- }
143
- __name(getSupportedLanguageIds, "getSupportedLanguageIds");
144
-
145
29
  // packages/cli/src/i18n/translationDict.ts
146
30
  init_esbuild_shims();
147
31
  function getTranslationModuleExport(module) {
@@ -484,11 +368,6 @@ function resolveLanguageSetting(settingsLanguage) {
484
368
  __name(resolveLanguageSetting, "resolveLanguageSetting");
485
369
 
486
370
  export {
487
- SUPPORTED_LANGUAGES,
488
- resolveSupportedLanguage,
489
- getLanguageNameFromLocale,
490
- getLanguageSettingsOptions,
491
- getSupportedLanguageIds,
492
371
  MUST_TRANSLATE_KEYS,
493
372
  getUserLocalesDirectory,
494
373
  detectSystemLanguage,
@@ -503,11 +382,11 @@ export {
503
382
  };
504
383
  /**
505
384
  * @license
506
- * Copyright 2025 Qwen team
385
+ * Copyright 2026 Qwen Team
507
386
  * SPDX-License-Identifier: Apache-2.0
508
387
  */
509
388
  /**
510
389
  * @license
511
- * Copyright 2026 Qwen Team
390
+ * Copyright 2025 Qwen team
512
391
  * SPDX-License-Identifier: Apache-2.0
513
392
  */
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  getEffectiveSupportedModes
5
- } from "./chunk-XHD7CRP2.js";
5
+ } from "./chunk-5RBDAGC6.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";