@qwen-code/qwen-code 0.21.7-nightly.20260808.4ec0371e6 → 0.21.8

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 (254) hide show
  1. package/README.md +2 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +12 -8
  3. package/bundled/qc-helper/docs/features/commands.md +1 -1
  4. package/bundled/qc-helper/docs/features/hooks.md +50 -0
  5. package/bundled/qc-helper/docs/integration-jetbrains.md +1 -0
  6. package/bundled/qc-helper/docs/qwen-serve.md +1 -1
  7. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +50 -36
  8. package/bundled/review/SKILL.md +24 -5
  9. package/chunks/{MaxSizedBox-COZBVNCI.js → MaxSizedBox-7PM6BGJ5.js} +13 -10
  10. package/chunks/{StandaloneSessionPicker-3OF2FS6S.js → StandaloneSessionPicker-3UQHM7GV.js} +29 -26
  11. package/chunks/{acp-startup-profiler-ORIQ2CCQ.js → acp-startup-profiler-B5BYAMYQ.js} +2 -2
  12. package/chunks/{acpAgent-3JCJ6KWG.js → acpAgent-5UWLFV6V.js} +369 -148
  13. package/chunks/{agent-DBSC47CD.js → agent-624T2BLO.js} +13 -10
  14. package/chunks/{agent-headless-ZJHZ7I3S.js → agent-headless-2EE5J2KX.js} +13 -10
  15. package/chunks/{bridge-NFBYT4ZI.js → bridge-JENKGFFP.js} +15 -12
  16. package/chunks/{ca-NYKNH222.js → ca-ZLKAB4K3.js} +6 -0
  17. package/chunks/{channel-management-service-LXSJXQGM.js → channel-management-service-DDWUPHMU.js} +1 -1
  18. package/chunks/{channel-settings-store-LABKDKSI.js → channel-settings-store-SA6JZSPH.js} +21 -18
  19. package/chunks/{channel-worker-group-MTW2AGT3.js → channel-worker-group-E67EN3RV.js} +2 -2
  20. package/chunks/{channel-worker-manager-UU6PTQSI.js → channel-worker-manager-SW4C45CF.js} +2 -2
  21. package/chunks/{chunk-CJXIIILK.js → chunk-2FRY5CRX.js} +1 -1
  22. package/chunks/{chunk-HKCYGZZ4.js → chunk-2ILAOM2I.js} +30 -13
  23. package/chunks/{chunk-LDY4J4G6.js → chunk-2M4K4KYS.js} +176 -119
  24. package/chunks/{chunk-22NBYCPD.js → chunk-3P2LV43B.js} +1 -1
  25. package/chunks/{chunk-XCG76UE6.js → chunk-3PY4LPJF.js} +17 -129
  26. package/chunks/{chunk-26ISE5EG.js → chunk-3SE7J4DR.js} +3 -3
  27. package/chunks/{chunk-APMRLB2H.js → chunk-3WNQOYHQ.js} +12 -12
  28. package/chunks/{chunk-O7VQ3F22.js → chunk-4ALIARFY.js} +1 -1
  29. package/chunks/{chunk-FJ6YHWHZ.js → chunk-4DU3NCHG.js} +47 -54
  30. package/chunks/{chunk-BGG4MBYD.js → chunk-4PYCZH2V.js} +4 -187
  31. package/chunks/{chunk-3HS6Y4UA.js → chunk-4WU6NY7F.js} +2 -2
  32. package/chunks/{chunk-JRIJOZXO.js → chunk-5ZGR6RKJ.js} +3 -3
  33. package/chunks/{chunk-3K7FH2KQ.js → chunk-67N6HB5H.js} +1310 -171
  34. package/chunks/{chunk-ZQGHESAS.js → chunk-6TR7CFXH.js} +1 -1
  35. package/chunks/{chunk-EZ53KMUN.js → chunk-757GB46F.js} +1 -1
  36. package/chunks/{chunk-5YT3Y33M.js → chunk-77QVBFCU.js} +3 -3
  37. package/chunks/{chunk-5PGKKSO6.js → chunk-7DVT4LVV.js} +35 -28
  38. package/chunks/{chunk-IMK3SJ43.js → chunk-7VUERJHS.js} +1066 -597
  39. package/chunks/{chunk-KPMB4JEZ.js → chunk-B52AWKBB.js} +64 -20
  40. package/chunks/{chunk-R2KZWK5Z.js → chunk-BF224XHL.js} +2 -2
  41. package/chunks/{chunk-TSYIQDG7.js → chunk-BF52U4XJ.js} +1 -1
  42. package/chunks/{chunk-LDUGDB5H.js → chunk-C5VWPTGT.js} +1 -1
  43. package/chunks/{chunk-W7U4ESW2.js → chunk-CG3WBKJK.js} +1 -1
  44. package/chunks/chunk-COBO5EBO.js +135 -0
  45. package/chunks/{chunk-ACHMWGC5.js → chunk-DQSDACD2.js} +1 -1
  46. package/chunks/{chunk-VT3VNFVW.js → chunk-DX5W5AON.js} +2 -2
  47. package/chunks/{chunk-JACAHYEN.js → chunk-E4ZBKMSF.js} +4 -4
  48. package/chunks/{chunk-MV7VUCIG.js → chunk-EIVICVHM.js} +4 -4
  49. package/chunks/{chunk-YHEEE624.js → chunk-EN2TKTFH.js} +1 -1
  50. package/chunks/chunk-F6WFNA7U.js +22 -0
  51. package/chunks/{chunk-Z6W3XDLN.js → chunk-FN6YXJOP.js} +1 -1
  52. package/chunks/{chunk-BJKFFPX2.js → chunk-FWBXMANW.js} +3 -3
  53. package/chunks/{chunk-764F335K.js → chunk-FYAXKJK7.js} +314 -63
  54. package/chunks/{chunk-XIDHBXUI.js → chunk-GBDINRIL.js} +3 -3
  55. package/chunks/{chunk-Z5ZAWED3.js → chunk-GOEVOFQI.js} +3 -3
  56. package/chunks/{chunk-ZKUJ4AO7.js → chunk-GQCEQPYQ.js} +3 -3
  57. package/chunks/{chunk-BFSQBXHV.js → chunk-GXSNGY5M.js} +399 -534
  58. package/chunks/{chunk-3ARO4N5G.js → chunk-HA3SAB64.js} +22 -69
  59. package/chunks/{chunk-3ULCB3NE.js → chunk-HV76SFIA.js} +1 -1
  60. package/chunks/{chunk-LMEIS6WW.js → chunk-HWX5HPUG.js} +3 -3
  61. package/chunks/{chunk-VLFX3L3X.js → chunk-IBYULW65.js} +6 -6
  62. package/chunks/{chunk-SDUDZNF4.js → chunk-IUQ52YJK.js} +1 -1
  63. package/chunks/{chunk-H2352CX2.js → chunk-IYES5WOT.js} +2 -2
  64. package/chunks/{chunk-CE5UCTKO.js → chunk-KAQCJO6Y.js} +1 -1
  65. package/chunks/{chunk-DPH3MUAP.js → chunk-KKDVZLGL.js} +1 -1
  66. package/chunks/{chunk-R574ATRM.js → chunk-M2PNLYGY.js} +41 -0
  67. package/chunks/{chunk-P7HUJDBZ.js → chunk-M3STHEMM.js} +11 -16
  68. package/chunks/{chunk-VDS2WYM5.js → chunk-NGYI5EF5.js} +2 -2
  69. package/chunks/{chunk-ALGGS7UH.js → chunk-NPQ5ZKRP.js} +82 -1
  70. package/chunks/{chunk-GUFY6D3E.js → chunk-NPUXXRJI.js} +1 -1
  71. package/chunks/{chunk-4Q6N3SNL.js → chunk-NVRDQFCX.js} +1 -1
  72. package/chunks/{chunk-77WOUGCA.js → chunk-OHKJVAKG.js} +7 -7
  73. package/chunks/{chunk-TAOSTUHI.js → chunk-PG62DFWD.js} +10 -10
  74. package/chunks/{chunk-REHWPCG2.js → chunk-PLFATELK.js} +1 -1
  75. package/chunks/{chunk-APNNM3JC.js → chunk-QGHSP65Z.js} +2 -2
  76. package/chunks/{chunk-HY2INPTA.js → chunk-QQWD7LZV.js} +4 -4
  77. package/chunks/{chunk-P74TZRXD.js → chunk-QXVSWG66.js} +1 -1
  78. package/chunks/{chunk-TX3KSSDN.js → chunk-S3Y3GBFD.js} +1 -1
  79. package/chunks/{chunk-B23P3YWE.js → chunk-SNRT2TJJ.js} +6 -23
  80. package/chunks/chunk-SR7RZ4MS.js +202 -0
  81. package/chunks/{chunk-F3LPXDJP.js → chunk-TE3ZAJE7.js} +13 -3
  82. package/chunks/{chunk-AB4A73VL.js → chunk-TKSZJ5BV.js} +1 -1
  83. package/chunks/{chunk-RZMGG3HP.js → chunk-U5SLIG7E.js} +1 -1
  84. package/chunks/chunk-UA5H3DS2.js +203 -0
  85. package/chunks/{chunk-JSJTZ6GO.js → chunk-VWMUDKLC.js} +3 -3
  86. package/chunks/{chunk-RGTB44BO.js → chunk-VXZ5HAOV.js} +1 -1
  87. package/chunks/{chunk-BCMJPTXV.js → chunk-WG6542MA.js} +1 -1
  88. package/chunks/{chunk-AG3P2RES.js → chunk-WV5J6Q6N.js} +1 -1
  89. package/chunks/{chunk-MIA37QO3.js → chunk-XHD7CRP2.js} +2 -2
  90. package/chunks/{chunk-KKRGVSHC.js → chunk-XZKQT2B2.js} +4 -4
  91. package/chunks/{chunk-4QJJHIZ5.js → chunk-Y4TETC74.js} +5 -5
  92. package/chunks/{chunk-QKJT5K4Q.js → chunk-YEF7XEO2.js} +3 -3
  93. package/chunks/{chunk-UKAYEQDU.js → chunk-YHJFF7KH.js} +131 -38
  94. package/chunks/{chunk-64YLXLMY.js → chunk-YOM7DEGB.js} +2 -2
  95. package/chunks/{chunk-BN3OROB3.js → chunk-ZCLLJARV.js} +9 -9
  96. package/chunks/{chunk-RFA6VDCR.js → chunk-ZHA242R4.js} +2 -2
  97. package/chunks/{chunk-L4OW63GW.js → chunk-ZPLALRXZ.js} +17 -9
  98. package/chunks/{computer-use-QLJ27OCZ.js → computer-use-ESQYJ3JY.js} +13 -10
  99. package/chunks/{config-utils-KIEXWA4F.js → config-utils-XQHBJP7G.js} +2 -2
  100. package/chunks/{contextCommand-JDTOJRBO.js → contextCommand-CX3YF4ZE.js} +15 -12
  101. package/chunks/{core-runtime-MZIAVYQC.js → core-runtime-DIAU7JMG.js} +13 -10
  102. package/chunks/{create-sub-session-YBBCNSHE.js → create-sub-session-HDPD6HOA.js} +13 -10
  103. package/chunks/{daemon-SCTQMM7Z.js → daemon-VZBGJUNL.js} +30 -0
  104. package/chunks/{daemon-status-provider-BZ7RD4ZJ.js → daemon-status-provider-H6O4UQ4F.js} +19 -16
  105. package/chunks/{daemon-trust-policy-2E4C3M7S.js → daemon-trust-policy-BNUXG6MT.js} +20 -17
  106. package/chunks/{daemon-trust-policy-monitor-UYLFH6RW.js → daemon-trust-policy-monitor-E4EQ7GF4.js} +20 -17
  107. package/chunks/{de-VL76CPLV.js → de-LIW4XVLN.js} +5 -0
  108. package/chunks/{deferred-core-runtime-6XZYMJZB.js → deferred-core-runtime-CBMSHPAU.js} +13 -10
  109. package/chunks/{dist-BATY7GI4.js → dist-EEEQGCZA.js} +731 -136
  110. package/chunks/{dist-26RK5XZO.js → dist-MKX5OSFF.js} +4 -3
  111. package/chunks/{earlyInputCapture-LATQCGDC.js → earlyInputCapture-UIOP7OIN.js} +13 -10
  112. package/chunks/{edit-72DP57CD.js → edit-ITMZYFKA.js} +13 -10
  113. package/chunks/{en-IRJ2WN5T.js → en-SY5GTIGX.js} +6 -0
  114. package/chunks/{enter-worktree-B4FY2ZPP.js → enter-worktree-S4PL5UV6.js} +13 -10
  115. package/chunks/{enterPlanMode-TQBWGCPL.js → enterPlanMode-YV52NNJT.js} +13 -10
  116. package/chunks/{environment-MOGZGZDS.js → environment-NGOWPRZV.js} +17 -14
  117. package/chunks/{errors-PGON5GH7.js → errors-BU26DTDX.js} +15 -12
  118. package/chunks/{exit-worktree-EYUD4YP2.js → exit-worktree-XRM6LH5F.js} +13 -10
  119. package/chunks/{exitPlanMode-4Q7BSQXR.js → exitPlanMode-ZLI5F7KR.js} +13 -10
  120. package/chunks/{fast-path-WI7D5MER.js → fast-path-UJWORIED.js} +3 -3
  121. package/chunks/{fast-path-settings-YBRL24DB.js → fast-path-settings-37WQD5B2.js} +6 -3
  122. package/chunks/{fr-GK3HQYVB.js → fr-RQFO7U4P.js} +5 -0
  123. package/chunks/{gemini-ZXURGM6Y.js → gemini-ZSKNDUMU.js} +55 -48
  124. package/chunks/{geminiContentGenerator-EOODO75Y.js → geminiContentGenerator-YGEXOEKD.js} +1 -1
  125. package/chunks/{glob-QNRIUOS6.js → glob-7KZG44BR.js} +13 -10
  126. package/chunks/{goal-tools-QSYW65HV.js → goal-tools-PXWN5VK3.js} +3 -1
  127. package/chunks/{grep-56MTW67B.js → grep-6ZFC7RJ5.js} +13 -10
  128. package/chunks/{handleAutoUpdate-XGFIPVT4.js → handleAutoUpdate-KSEL3TQS.js} +17 -14
  129. package/chunks/{i18n-RZB35L4B.js → i18n-ZIUXBW5V.js} +14 -11
  130. package/chunks/{image-gen-OE2EEKN3.js → image-gen-AUIZJJNK.js} +6 -4
  131. package/chunks/{initializer-YPVMTMKD.js → initializer-7AHY3N6Q.js} +20 -17
  132. package/chunks/{installationInfo-ZTMTMYNW.js → installationInfo-VGBXMYLY.js} +14 -11
  133. package/chunks/{ja-3FA46IKD.js → ja-KOZKHJHZ.js} +5 -0
  134. package/chunks/{list-NIW3WID5.js → list-PSFKQHLB.js} +23 -20
  135. package/chunks/{loadedSettingsAdapter-VSLILTOZ.js → loadedSettingsAdapter-FTMRCTOF.js} +20 -17
  136. package/chunks/{loggingContentGenerator-KFZYVAGV.js → loggingContentGenerator-MZAN52UV.js} +5 -3
  137. package/chunks/{managed-npm-update-WHTA2K5V.js → managed-npm-update-O4NHK45X.js} +14 -11
  138. package/chunks/{mcp-7KGK3CS3.js → mcp-6CFP2AYQ.js} +20 -17
  139. package/chunks/{monitor-FDWEJQWP.js → monitor-DAKD6OU4.js} +13 -10
  140. package/chunks/{nonInteractiveCli-2MVJ6TCS.js → nonInteractiveCli-RC7VIUZL.js} +49 -44
  141. package/chunks/{notebook-edit-ZUVK2XWE.js → notebook-edit-474DPMRL.js} +13 -10
  142. package/chunks/{openaiContentGenerator-TNLWOPH5.js → openaiContentGenerator-2NFY2MWO.js} +6 -3
  143. package/chunks/{pidfile-BB6SKPH2.js → pidfile-KBFVDNQP.js} +13 -10
  144. package/chunks/{processUtils-WKHJOPDH.js → processUtils-6GRYH4Y3.js} +2 -2
  145. package/chunks/{pt-3AOBKPIJ.js → pt-U6AOCTMF.js} +5 -0
  146. package/chunks/{qwenContentGenerator-FZS2DYF7.js → qwenContentGenerator-KAHU6IZY.js} +14 -11
  147. package/chunks/{qwenOAuth2-UYMYRXBB.js → qwenOAuth2-RRQTCP4W.js} +6 -4
  148. package/chunks/{read-file-FMTE6LPA.js → read-file-3M6WXDXP.js} +4 -2
  149. package/chunks/{resumeHistoryUtils-Z34RCZFF.js → resumeHistoryUtils-D6TAY3HX.js} +16 -13
  150. package/chunks/{ripGrep-DUIYUZGM.js → ripGrep-PLPENT3E.js} +13 -10
  151. package/chunks/{ru-VJRAMC4W.js → ru-CMX4UMYP.js} +5 -0
  152. package/chunks/{run-qwen-serve-KOHHR3F4.js → run-qwen-serve-ZAFIJKJC.js} +93 -40
  153. package/chunks/{runtime-K4NTZSAU.js → runtime-ZED7CYOZ.js} +23 -20
  154. package/chunks/{scheduler-6G6AMURS.js → scheduler-MD3AL2W5.js} +13 -10
  155. package/chunks/{serve-NMG2TM5K.js → serve-E3VUDRZN.js} +20 -17
  156. package/chunks/{server-FS7KDELS.js → server-OWMEMAKR.js} +381 -192
  157. package/chunks/{session-XZADUVKJ.js → session-HZ57QK7K.js} +141 -81
  158. package/chunks/{settings-G75R6FOA.js → settings-V7BR3RKP.js} +19 -16
  159. package/chunks/{shell-3D3PMQHE.js → shell-23OMNMW6.js} +13 -10
  160. package/chunks/{skill-TSEYMVQ2.js → skill-6HBDYZRS.js} +4 -2
  161. package/chunks/{skill-settings-HJC2CPBJ.js → skill-settings-HWJLTU7M.js} +19 -16
  162. package/chunks/{spawnChannel-YWCN74G5.js → spawnChannel-N6KKUW5B.js} +13 -10
  163. package/chunks/{standalone-update-HLYOLX6V.js → standalone-update-QGIKHATD.js} +15 -12
  164. package/chunks/{startInteractiveUI-ROUIQ5KU.js → startInteractiveUI-GX2CRL42.js} +269 -118
  165. package/chunks/{team-create-OTP5SSB2.js → team-create-CFFKU7KL.js} +13 -10
  166. package/chunks/{team-plan-approval-TQX5TMXU.js → team-plan-approval-6EFOKR6A.js} +13 -10
  167. package/chunks/{terminal-image-renderer-KF3GKNWW.js → terminal-image-renderer-TLDNACQY.js} +13 -10
  168. package/chunks/{theme-manager-XVWAAGAM.js → theme-manager-5LJ3H7VO.js} +13 -10
  169. package/chunks/{tool-search-7N4D4O56.js → tool-search-UJV3A24H.js} +4 -2
  170. package/chunks/{total-session-admission-ZQ4VKIRW.js → total-session-admission-D63QYXGO.js} +15 -12
  171. package/chunks/{trustedFolders-4XYFPWVV.js → trustedFolders-KZCOB53W.js} +17 -12
  172. package/chunks/{update-relaunch-L4GSBLUU.js → update-relaunch-IFILM3SA.js} +5 -5
  173. package/chunks/{updateCheck-PCUTVRFE.js → updateCheck-YZ2CRCFC.js} +16 -13
  174. package/chunks/{useAutoAcceptIndicator-WMXY7MND.js → useAutoAcceptIndicator-AXEVNA3Q.js} +22 -19
  175. package/chunks/{validateNonInterActiveAuth-5S3U2D56.js → validateNonInterActiveAuth-3WTOJFWA.js} +44 -41
  176. package/chunks/{version-P57IQU2T.js → version-GXK7OHZY.js} +1 -1
  177. package/chunks/{web-fetch-5ZLLLCDD.js → web-fetch-ILB4GAVR.js} +10 -6
  178. package/chunks/{web-search-NELKANTW.js → web-search-HKRPGPZZ.js} +5 -3
  179. package/chunks/{workflow-RXKBF3LO.js → workflow-FXIPRQQA.js} +735 -134
  180. package/chunks/{workspace-providers-status-HAEMNAWC.js → workspace-providers-status-NYHC7HSR.js} +22 -19
  181. package/chunks/{workspace-registration-store-U3U3YM6V.js → workspace-registration-store-AKEB7OMW.js} +1 -1
  182. package/chunks/{workspace-registry-ZFP33GVB.js → workspace-registry-CDAS5TVZ.js} +15 -12
  183. package/chunks/{workspace-service-QMISJBMA.js → workspace-service-PAMUKMAV.js} +23 -20
  184. package/chunks/{workspace-skills-status-K7EOUGXL.js → workspace-skills-status-YQSHCCMS.js} +20 -17
  185. package/chunks/{workspace-trust-reconciler-BFPKULDZ.js → workspace-trust-reconciler-RPTXOIY2.js} +22 -19
  186. package/chunks/{write-file-2F76RRFE.js → write-file-CGS57TS4.js} +13 -10
  187. package/chunks/{zh-ARWDLDLR.js → zh-AGL2FVBI.js} +6 -0
  188. package/chunks/{zh-TW-Y4RGI3P7.js → zh-TW-KI66MHQY.js} +6 -0
  189. package/chunks/{zoom-image-DPR22XWY.js → zoom-image-E7D72GYV.js} +4 -2
  190. package/cli.js +13 -13
  191. package/locales/ca.js +10 -0
  192. package/locales/de.js +9 -0
  193. package/locales/en.js +10 -0
  194. package/locales/fr.js +9 -0
  195. package/locales/ja.js +9 -0
  196. package/locales/pt.js +9 -0
  197. package/locales/ru.js +9 -0
  198. package/locales/zh-TW.js +10 -0
  199. package/locales/zh.js +10 -0
  200. package/package.json +3 -3
  201. package/web-shell/assets/{arc-CunFPPcQ.js → arc-DybZaz32.js} +1 -1
  202. package/web-shell/assets/{architectureDiagram-3BPJPVTR-D3SqCgeM.js → architectureDiagram-3BPJPVTR-jN3qBd19.js} +1 -1
  203. package/web-shell/assets/{blockDiagram-GPEHLZMM-CPRx90S_.js → blockDiagram-GPEHLZMM-Ct5DZPrj.js} +1 -1
  204. package/web-shell/assets/{c4Diagram-AAUBKEIU-CahP9Ue4.js → c4Diagram-AAUBKEIU-CUAFMlUG.js} +1 -1
  205. package/web-shell/assets/channel-BMwLrwLW.js +1 -0
  206. package/web-shell/assets/{chunk-2J33WTMH-DckIWZ12.js → chunk-2J33WTMH-CuV8n90B.js} +1 -1
  207. package/web-shell/assets/{chunk-4BX2VUAB-D2Kfctyn.js → chunk-4BX2VUAB-BUzl_kls.js} +1 -1
  208. package/web-shell/assets/{chunk-55IACEB6-DkI11FTX.js → chunk-55IACEB6-BnDBLX6A.js} +1 -1
  209. package/web-shell/assets/{chunk-727SXJPM-rR-TSCIi.js → chunk-727SXJPM-B83uTOjm.js} +1 -1
  210. package/web-shell/assets/{chunk-AQP2D5EJ-DFGKcGRO.js → chunk-AQP2D5EJ-DM3HLgpT.js} +1 -1
  211. package/web-shell/assets/{chunk-FMBD7UC4-CjWqcTPE.js → chunk-FMBD7UC4-CSQ5hgyb.js} +1 -1
  212. package/web-shell/assets/{chunk-ND2GUHAM-RXe-87UV.js → chunk-ND2GUHAM-BWOF4SxX.js} +1 -1
  213. package/web-shell/assets/{chunk-QZHKN3VN-Dz0c_Yrn.js → chunk-QZHKN3VN-BsOH9LMi.js} +1 -1
  214. package/web-shell/assets/classDiagram-4FO5ZUOK-BGDv98jY.js +1 -0
  215. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BGDv98jY.js +1 -0
  216. package/web-shell/assets/{cose-bilkent-S5V4N54A-ZHF0-jvV.js → cose-bilkent-S5V4N54A-IENqH2iJ.js} +1 -1
  217. package/web-shell/assets/{dagre-BM42HDAG-7Umz_ygJ.js → dagre-BM42HDAG--dyzDTGo.js} +1 -1
  218. package/web-shell/assets/{diagram-2AECGRRQ-DomN8nxq.js → diagram-2AECGRRQ-BE7Dcqof.js} +1 -1
  219. package/web-shell/assets/{diagram-5GNKFQAL-eebvj2OL.js → diagram-5GNKFQAL-Cr8-5OTj.js} +1 -1
  220. package/web-shell/assets/{diagram-KO2AKTUF-IR1mmn9d.js → diagram-KO2AKTUF-Bzey3uAY.js} +1 -1
  221. package/web-shell/assets/{diagram-LMA3HP47-CKysx5KF.js → diagram-LMA3HP47-sErl28Xb.js} +1 -1
  222. package/web-shell/assets/{diagram-OG6HWLK6-cBy5puHn.js → diagram-OG6HWLK6-Dq30ATIo.js} +1 -1
  223. package/web-shell/assets/{erDiagram-TEJ5UH35-B5RJagPG.js → erDiagram-TEJ5UH35-BkCoEfVW.js} +1 -1
  224. package/web-shell/assets/{flowDiagram-I6XJVG4X-CfHgDmPg.js → flowDiagram-I6XJVG4X-DHwO0rrI.js} +1 -1
  225. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DUfFF5nb.js → ganttDiagram-6RSMTGT7-s7vAPxWq.js} +1 -1
  226. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-M9dt57k5.js → gitGraphDiagram-PVQCEYII-CQxhwPOU.js} +1 -1
  227. package/web-shell/assets/{index-B8e-CkuC.css → index-Bckpjr-I.css} +1 -1
  228. package/web-shell/assets/{index-CKjO4myk.js → index-CF4wApWp.js} +1 -1
  229. package/web-shell/assets/{index-Dc-fTO0V.js → index-DwEr9HEW.js} +316 -316
  230. package/web-shell/assets/{infoDiagram-5YYISTIA-CTKMmIro.js → infoDiagram-5YYISTIA-BnFrD0bq.js} +1 -1
  231. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DJIJDP4s.js → ishikawaDiagram-YF4QCWOH-Bf9zK5NK.js} +1 -1
  232. package/web-shell/assets/{journeyDiagram-JHISSGLW-DgRnvn6S.js → journeyDiagram-JHISSGLW-CyGAhsxi.js} +1 -1
  233. package/web-shell/assets/{kanban-definition-UN3LZRKU-VUwO8yrg.js → kanban-definition-UN3LZRKU-CbsK5akB.js} +1 -1
  234. package/web-shell/assets/{linear-BCvgV5I_.js → linear-cQsF4P8D.js} +1 -1
  235. package/web-shell/assets/{mermaid.core-mv_kVV6q.js → mermaid.core-Z4HVqrKY.js} +5 -5
  236. package/web-shell/assets/{mindmap-definition-RKZ34NQL-sfnjMlOd.js → mindmap-definition-RKZ34NQL-CYnrBo_f.js} +1 -1
  237. package/web-shell/assets/{pieDiagram-4H26LBE5-BlhICse4.js → pieDiagram-4H26LBE5-CBzOfhrs.js} +1 -1
  238. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BgTQzwen.js → quadrantDiagram-W4KKPZXB-D4LK1Ebn.js} +1 -1
  239. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CZ-FTrrN.js → requirementDiagram-4Y6WPE33-Bzti2Lcj.js} +1 -1
  240. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-G5Wp_jn3.js → sankeyDiagram-5OEKKPKP-yTBw5Z2s.js} +1 -1
  241. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-C8MKZ3i1.js → sequenceDiagram-3UESZ5HK-D07UVRiZ.js} +1 -1
  242. package/web-shell/assets/{stateDiagram-AJRCARHV-Bo0ZDm7y.js → stateDiagram-AJRCARHV-UE_lHsTn.js} +1 -1
  243. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DC6xgXjX.js +1 -0
  244. package/web-shell/assets/{timeline-definition-PNZ67QCA-M3L9E01f.js → timeline-definition-PNZ67QCA-DRvYdiTs.js} +1 -1
  245. package/web-shell/assets/{vennDiagram-CIIHVFJN-DD4eHCrm.js → vennDiagram-CIIHVFJN-CQLIXs0u.js} +1 -1
  246. package/web-shell/assets/{wardley-L42UT6IY-DNEL_3g4.js → wardley-L42UT6IY-JZz_Xqse.js} +1 -1
  247. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-q484OoqI.js → wardleyDiagram-YWT4CUSO--i7BiJwB.js} +1 -1
  248. package/web-shell/assets/{xychartDiagram-2RQKCTM6-4mcNt1Yg.js → xychartDiagram-2RQKCTM6-Bkc-bW0S.js} +1 -1
  249. package/web-shell/index.html +2 -2
  250. package/chunks/chunk-ALFTV7GA.js +0 -92
  251. package/web-shell/assets/channel-zbv7GWAw.js +0 -1
  252. package/web-shell/assets/classDiagram-4FO5ZUOK-DSjLkJJZ.js +0 -1
  253. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DSjLkJJZ.js +0 -1
  254. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-31TSCPcH.js +0 -1
package/README.md CHANGED
@@ -148,6 +148,8 @@ https://raw.githubusercontent.com/QwenLM/qwen-code/refs/heads/main/.qwen/skills/
148
148
  Then follow the instructions inside to install, authenticate, and use Qwen Code via acpx for all coding tasks.
149
149
  ```
150
150
 
151
+ - [**Aliyun Model Studio CLI**](https://github.com/modelstudioai/cli) — Official CLI for Aliyun's AI platform (`bailian-cli`). Extends Qwen Code with image/video generation, knowledge retrieval, app orchestration, and model deployment
152
+
151
153
  ## Contributing
152
154
 
153
155
  Contributions are welcome! See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
@@ -575,13 +575,13 @@ Persistent sub-session concurrency settings for [`qwen serve`](../qwen-serve). C
575
575
 
576
576
  #### advanced
577
577
 
578
- | Setting | Type | Description | Default |
579
- | ------------------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
580
- | `advanced.autoConfigureMemory` | boolean | Automatically configure Node.js memory limits. | `false` |
581
- | `advanced.dnsResolutionOrder` | string | The DNS resolution order. | `undefined` |
582
- | `advanced.excludedEnvVars` | array of strings | Environment variables to exclude from project context. Specifies environment variables that should be excluded from being loaded from project `.env` files. This prevents project-specific environment variables (like `DEBUG=true`) from interfering with the CLI behavior. Variables from `.qwen/.env` files are never excluded. | `["DEBUG","DEBUG_MODE"]` |
583
- | `advanced.bugCommand` | object | Configuration for the bug report command. Overrides the default URL for the `/bug` command. Properties: `urlTemplate` (string): A URL that can contain `{title}` and `{info}` placeholders. Example: `"bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }` | `undefined` |
584
- | `plansDirectory` | string | Custom directory for approved Plan Mode files. Relative paths are resolved from the project root, and the resolved path must stay within the project root. If unset, plan files are stored in `~/.qwen/plans`. **Requires restart.** If the directory is inside the project root, add it to `.gitignore` to avoid committing plan files. | `undefined` |
578
+ | Setting | Type | Description | Default |
579
+ | ------------------------------ | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
580
+ | `advanced.autoConfigureMemory` | boolean | Automatically configure Node.js memory limits. | `false` |
581
+ | `advanced.dnsResolutionOrder` | string | The DNS resolution order. | `undefined` |
582
+ | `advanced.excludedEnvVars` | array of strings | Environment variables to exclude from project context. Specifies environment variables that should be excluded from being loaded from project `.env` files. This prevents project-specific environment variables (like `DEBUG=true`) from interfering with the CLI behavior. Variables from `.qwen/.env` files are never excluded by this list; loader-affecting variables are always rejected from every `.env` scope (see below). | `["DEBUG","DEBUG_MODE"]` |
583
+ | `advanced.bugCommand` | object | Configuration for the bug report command. Overrides the default URL for the `/bug` command. Properties: `urlTemplate` (string): A URL that can contain `{title}` and `{info}` placeholders. Example: `"bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }` | `undefined` |
584
+ | `plansDirectory` | string | Custom directory for approved Plan Mode files. Relative paths are resolved from the project root, and the resolved path must stay within the project root. If unset, plan files are stored in `~/.qwen/plans`. **Requires restart.** If the directory is inside the project root, add it to `.gitignore` to avoid committing plan files. | `undefined` |
585
585
 
586
586
  #### experimental
587
587
 
@@ -720,7 +720,11 @@ For authentication-related variables (like `OPENAI_*`) and the recommended `.qwe
720
720
 
721
721
  > [!tip]
722
722
  >
723
- > **Environment Variable Exclusion:** Some environment variables (like `DEBUG` and `DEBUG_MODE`) are automatically excluded from project `.env` files by default to prevent interference with the CLI behavior. Variables from `.qwen/.env` files are never excluded. You can customize this behavior using the `advanced.excludedEnvVars`setting in your `settings.json` file.
723
+ > **Environment Variable Exclusion:** Some environment variables (like `DEBUG` and `DEBUG_MODE`) are automatically excluded from project `.env` files by default to prevent interference with the CLI behavior. Variables from `.qwen/.env` files are never excluded by this default list. You can customize this behavior using the `advanced.excludedEnvVars`setting in your `settings.json` file.
724
+
725
+ > [!warning]
726
+ >
727
+ > **Loader-affecting variables are always rejected:** Variables that make a spawned Node.js process or OS loader execute an attacker-chosen file — `NODE_OPTIONS`, `npm_config_node_options` (and npm's config-file redirects `npm_config_userconfig`, `npm_config_globalconfig`, `npm_config_script_shell`, `npm_config_prefix`), `NODE_PATH`, `LD_PRELOAD`, `LD_AUDIT`, `DYLD_INSERT_LIBRARIES`, `BASH_ENV`, `ZDOTDIR`, and exported bash function definitions (`BASH_FUNC_*`) — are never loaded from `.env` files (any scope, including `.qwen/.env` and user-level files) or from the top-level `settings.json` `env` section. A workspace-controlled value there could hijack module resolution for every subprocess Qwen Code spawns, so Qwen Code prints a warning when it rejects such a key (once per process, per key and source — in a multi-workspace daemon each workspace's rejection is reported separately). To use one of these variables, export it in the environment you launch Qwen Code from; sessions hosted by a `qwen serve` daemon deliberately do not inherit them, while direct editor (ACP) sessions and the plain CLI keep the exported value. Library _search_ paths (`LD_LIBRARY_PATH`, `DYLD_LIBRARY_PATH`) and the interactive-shell-only `ENV` are intentionally not on this list — rejecting them breaks mainstream toolchains (`ENV=production`, conda/CUDA library dirs) — but a project `.env` still cannot apply them on reload. This rejection applies to the top-level `env` section only: per-server `mcpServers[].env` and per-hook `hooks[].env` are intentionally scoped to that server or hook and still apply (both surfaces are gated by folder trust for workspace-provided configs). Separately, a project `.env` can never set `QWEN_CLI_ENTRY` (the daemon's session-process entrypoint), `NODE_EXTRA_CA_CERTS`, or `DEV` (the dev-harness launch marker); those stay settable from the shell environment or a user-level `.env`. Upgrade note: before this denylist existed, some of these keys could load from `.env` files or `settings.json` `env` on some paths; they are now rejected everywhere with a warning, and a `qwen serve` daemon no longer passes inherited values of them to session subprocesses.
724
728
 
725
729
  ### Environment Variables Table
726
730
 
@@ -119,7 +119,7 @@ Commands for managing AI tools and models.
119
119
  | `/arena` | Manage Arena sessions | `/arena start`, `/arena stop`, `/arena status`, `/arena select` (alias `choose`) |
120
120
  | `/goal` | Set a goal — keep working until condition met | `/goal <condition>`, `/goal clear` |
121
121
  | `/tasks` | List background tasks | `/tasks` |
122
- | `/workflows` | Inspect workflow runs | `/workflows`, `/workflows <runId>` |
122
+ | `/workflows` | Inspect workflow runs; cooperatively pause/resume a background run | `/workflows`, `/workflows <runId>`, `/workflows p <runId>` |
123
123
  | `/lsp` | Show LSP server status | `/lsp` |
124
124
  | `/trust` | Manage folder trust settings | `/trust` |
125
125
 
@@ -636,6 +636,56 @@ When both fields are present, prompt-hook payloads contain overlapping text and
636
636
 
637
637
  Sequential UserPromptSubmit hooks can append `additionalContext` to `prompt`; `submitted_prompt` continues to represent the captured submission. Function hooks are trusted same-process code and are not constrained by an immutability guarantee.
638
638
 
639
+ When the final hook output contains non-empty `additionalContext`, Qwen first
640
+ sanitizes the value and then sends it to the model as a separate text part:
641
+
642
+ ```xml
643
+ <qwen:user-prompt-submit-context>
644
+ sanitized hook context
645
+ </qwen:user-prompt-submit-context>
646
+ ```
647
+
648
+ The tag tells the model and transcript consumers that the part came from a
649
+ configured hook rather than from the user prompt. It is a provenance marker,
650
+ not authentication, authorization, or a general trust boundary.
651
+
652
+ For a `UserQuery` with this added context, the session JSONL record preserves
653
+ the model-bound parts, including the tagged part, and adds the following
654
+ `systemPayload`:
655
+
656
+ ```json
657
+ {
658
+ "displayText": "pre-hook display projection",
659
+ "hookContext": "sanitized hook context"
660
+ }
661
+ ```
662
+
663
+ This two-field payload is written only for this kind of user-prompt record.
664
+ `hookContext` intentionally duplicates the tagged part so offline and
665
+ third-party consumers can identify its provenance without parsing model text.
666
+ `displayText` is the pre-hook display projection and never includes the hook
667
+ context. For a supported interactive TUI submission it is the raw composer
668
+ projection carried by `submitted_prompt`; ACP, headless, `serve`, SDK, remote
669
+ input, and other paths without that provenance record the expanded pre-hook
670
+ prompt instead.
671
+
672
+ Transcript display consumers treat `displayText` as this user-prompt projection
673
+ when `systemPayload.hookContext` is a string. For compatibility with released
674
+ `displayText`-only user-prompt records, a complete tagged context in the final
675
+ part after at least one other part is equivalent pairing evidence. Notification,
676
+ cron, and mid-turn records can also have `displayText`, but those values are
677
+ compact display labels and must not be substituted for their model-bound text
678
+ without that evidence.
679
+ Legacy bare-context records keep their model-bound display behavior because the
680
+ context cannot be separated reliably. For metadata-free records that use the
681
+ current tagged shape, compatibility consumers may remove the same complete
682
+ final tagged part; they must not infer that arbitrary tag-like user text is hook
683
+ provenance.
684
+
685
+ Sensitive prompt telemetry attributes, when enabled, and managed auto-memory
686
+ recall both use the pre-hook prompt. They do not include
687
+ `UserPromptSubmit`-added context.
688
+
639
689
  **Output Options**:
640
690
 
641
691
  - `decision`: "allow", "deny", "block", or "ask"
@@ -8,6 +8,7 @@
8
8
  - **Agent Client Protocol**: Full support for ACP enabling advanced IDE interactions
9
9
  - **Symbol management**: #-mention files to add them to the conversation context
10
10
  - **Conversation history**: Access to past conversations within the IDE
11
+ - **Context usage**: See the current context-window occupancy while Qwen Code works
11
12
 
12
13
  ### Requirements
13
14
 
@@ -556,7 +556,7 @@ provider decision with their normal tool policy and isolation boundary.
556
556
  - **Host header allowlist** — on **loopback** binds the daemon checks `Host:` matches `localhost:port` / `127.0.0.1:port` / `[::1]:port` / `host.docker.internal:port` (case-insensitive per RFC 7230 §5.4) to defend against DNS rebinding. **Non-loopback binds (`--hostname 0.0.0.0`) intentionally bypass the Host allowlist** — the operator has chosen the surface area, so the bearer-token gate is the sole authentication layer; reverse proxies / SNI / client cert pinning are the operator's responsibility, not the daemon's. If you need Host-based isolation on a non-loopback bind, terminate TLS + check Host at a front proxy.
557
557
  - **CORS denies any browser Origin by default** — returns `403` JSON. Pass **`--allow-origin <pattern>`** (repeatable, T2.4 #4514) to opt specific browser origins through. Each value is either the literal `*` (any origin — boot refuses if no bearer token is configured; `--require-auth` on loopback is recommended for full hardening since `/health` and `/demo` remain pre-auth on loopback by default) or a canonical URL origin (`<scheme>://<host>[:<port>]`, no trailing slash / path / userinfo). Matched origins receive proper CORS response headers (`Access-Control-Allow-Origin: <echoed>`, `Vary: Origin`, plus standard methods / headers / max-age and exposed `Retry-After`); unmatched origins still get a 403 with the same envelope as the default wall. `caps.features.allow_origin` is advertised conditionally so SDK / webui clients can pre-flight whether the daemon honors cross-origin hits before issuing them. Example: `qwen serve --allow-origin http://localhost:3000 --allow-origin http://localhost:5173`. Loopback self-origin hits (e.g. the `/demo` page) are unaffected — a separate Origin-strip shim handles them regardless of `--allow-origin`. **Browser webuis without `--allow-origin` configured** still fall back to the same Stage 1 options as before: package as a native shell (Electron/Tauri) so no `Origin` header is sent, or front the daemon with a same-origin reverse proxy.
558
558
  - **Chrome extension browser automation is separate from framing.** `qwen serve --allow-origin chrome-extension://<id>` lets the extension frame the Web Shell and connect to the daemon. Console/network/screenshot/click tools require an external CDP MCP adapter command: `QWEN_CDP_MCP_COMMAND=/path/to/cdp-mcp-adapter qwen serve --allow-origin chrome-extension://<id>`. The main CLI package does not bundle a browser automation adapter; clients can check `caps.features.includes('browser_automation_mcp')` before presenting those tools as available.
559
- - **A spawned `qwen --acp` child receives its owning runtime's effective environment.** The daemon freezes a process-env base, applies that workspace's settings/env-file overlay to a runtime-local snapshot, and never writes the overlay back to `process.env`; same-named keys in another runtime do not cross over. `QWEN_SERVER_TOKEN` is scrubbed before spawn because the agent does not need the daemon bearer. Base credentials such as `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `QWEN_*`, and `DASHSCOPE_API_KEY` otherwise pass through unless the runtime overlay changes them. **This is intentional, not a sandbox.** The agent runs as the same UID with shell-tool access, so anything in `~/.bashrc`, `~/.aws/credentials`, or `~/.npmrc` is reachable by prompt injection regardless. Environment isolation between runtimes is not an operating-system security boundary; do not run `qwen serve` under an identity that has credentials you would not trust the agent with.
559
+ - **A spawned `qwen --acp` child receives its owning runtime's effective environment.** The daemon freezes a process-env base, applies that workspace's settings/env-file overlay to a runtime-local snapshot, and never writes the overlay back to `process.env`; same-named keys in another runtime do not cross over. `QWEN_SERVER_TOKEN` is scrubbed before spawn because the agent does not need the daemon bearer. Loader-affecting variables (`NODE_OPTIONS`, `npm_config_node_options` and npm's config-file redirects, `NODE_PATH`, `LD_PRELOAD`, `LD_AUDIT`, `DYLD_INSERT_LIBRARIES`, `BASH_ENV`, `ZDOTDIR`, exported bash function definitions `BASH_FUNC_*`) are likewise never passed to session subprocesses — the daemon scrubs them from its own `process.env` and from the frozen base env that session-hosting children spawn with (the base env keeps them only under the `DEV=true` harness, whose `.ts` entries still need the tsx loader), and `.env` / `settings.json` `env` sources reject them (see [settings](./configuration/settings.md)); this applies to every session the daemon hosts. Base credentials such as `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `QWEN_*`, and `DASHSCOPE_API_KEY` otherwise pass through unless the runtime overlay changes them. **This is intentional, not a sandbox.** The agent runs as the same UID with shell-tool access, so anything in `~/.bashrc`, `~/.aws/credentials`, or `~/.npmrc` is reachable by prompt injection regardless. Environment isolation between runtimes is not an operating-system security boundary; do not run `qwen serve` under an identity that has credentials you would not trust the agent with.
560
560
  - **Agent text reads are child-local and follow the regular CLI permission rules, not the workspace filesystem boundary.** Direct `read_file` can reach host text paths outside every registered workspace: external paths default to confirmation, and allow rules or approval modes may approve them automatically. Approved reads use the configurable CLI output limits rather than the workspace filesystem's returned-output, full-snapshot, and large-text scan caps. This applies to every shared text-read consumer, so the pre-reads performed by write, edit, notebook, sed, and artifact operations lose those caps together with the workspace filesystem's read audit, symlink rejection, and read-side TOCTOU protections — see [the design doc](../design/daemon-local-text-reads.md) for the exact list. Because a confirmation payload is built by reading the file, an out-of-workspace diff is fanned out to **every** attached SSE subscriber before anyone approves it — in the interactive CLI that content is seen only by the person at the terminal. Treat authenticated daemon clients as the same security principal. HTTP filesystem routes remain workspace-scoped and still refuse these paths, agent discovery-tool behavior is unchanged, and final ACP `writeTextFile` content writes continue through the workspace filesystem.
561
561
  - **Per-subscriber bounded SSE queues** — a slow client that overflows its queue gets a `client_evicted` terminal frame and is closed; one stuck consumer can't pin the daemon.
562
562
  - **Per-session prompt admission cap** — defaults to 5 accepted-but-unsettled prompts per session. A buggy client cannot enqueue unbounded prompt promises or temporary SSE waits for one session.
@@ -18,42 +18,42 @@ This document lists the available keyboard shortcuts in Qwen Code.
18
18
 
19
19
  ## Input Prompt
20
20
 
21
- | Shortcut | Description |
22
- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
23
- | `!` | Toggle shell mode when the input is empty. |
24
- | `?` | Toggle keyboard shortcuts display when the input is empty. |
25
- | `/` | Open slash-command completion. |
26
- | `@` | Open completion for files, folders, and other context. |
27
- | `Space` (empty prompt) | Start voice dictation when it and a voice model are configured; hold or tap behavior follows `general.voice.mode`. |
28
- | `Ctrl+Enter` / `Cmd+Enter` / `Shift+Enter` / `Ctrl+J` | Insert a newline. |
29
- | `Down Arrow` | Row down, then snap to end, then history next. |
30
- | `Enter` | Submit the current prompt. While a response is running, steer the current turn. |
31
- | `Ctrl+Q` | Queue the current prompt or command for the next turn instead of steering; it runs after Qwen Code returns to idle. |
32
- | `Up Arrow` (at the top) / `Esc` | When queued messages are present, move them back into the input for editing. |
33
- | `Meta+D` / `Meta+Delete` / `Ctrl+Delete` | Delete the word to the right of the cursor. |
34
- | `Tab` | Autocomplete the current suggestion if one exists. |
35
- | `Up Arrow` | Row up, then snap to start, then history prev. |
36
- | `Ctrl+A` / `Home` | Move the cursor to the beginning of the line. |
37
- | `Ctrl+B` / `Left Arrow` | Move the cursor one character to the left. |
38
- | `Ctrl+C` | Clear the input prompt |
39
- | `Esc` (double press) | Clear the input prompt. |
40
- | `Ctrl+D` / `Delete` | Delete the character to the right of the cursor. |
41
- | `Ctrl+E` / `End` | Move the cursor to the end of the line. |
42
- | `Ctrl+F` / `Right Arrow` | Move the cursor one character to the right. |
43
- | `Ctrl+H` / `Backspace` | Delete the character to the left of the cursor. |
44
- | `Ctrl+K` | Delete from the cursor to the end of the line. |
45
- | `Ctrl+Left Arrow` / `Meta+Left Arrow` / `Meta+B` | Move the cursor one word to the left. |
46
- | `Ctrl+N` | Row down, then snap to end, then history next. |
47
- | `Ctrl+P` | Row up, then snap to start, then history prev. |
48
- | `Ctrl+R` | Reverse search through input/shell history. |
49
- | `Ctrl+Y` | Retry the last failed request. |
50
- | `Ctrl+Right Arrow` / `Meta+Right Arrow` / `Meta+F` | Move the cursor one word to the right. |
51
- | `Ctrl+U` | Delete from the cursor to the beginning of the line. |
52
- | `Ctrl+V` / `Option+V` (Windows: `Alt+V`) | Paste clipboard content. If the clipboard contains an image, it will be saved and a reference to it will be inserted in the prompt. |
53
- | `Ctrl+W` / `Meta+Backspace` / `Ctrl+Backspace` | Delete the word to the left of the cursor. |
54
- | `Ctrl+X` | Open the current input in an external editor. |
55
- | `Ctrl+Z` | Undo the last input edit. |
56
- | `Ctrl+Shift+Z` | Redo the last undone input edit. |
21
+ | Shortcut | Description |
22
+ | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
23
+ | `!` | Toggle shell mode when the input is empty. |
24
+ | `?` | Toggle keyboard shortcuts display when the input is empty. |
25
+ | `/` | Open slash-command completion. |
26
+ | `@` | Open completion for files, folders, and other context. |
27
+ | `Space` (empty prompt) | Start voice dictation when it and a voice model are configured; hold or tap behavior follows `general.voice.mode`. |
28
+ | `Ctrl+Enter` / `Cmd+Enter` / `Shift+Enter` / `Ctrl+J` | Insert a newline. |
29
+ | `Down Arrow` | Row down, then snap to end, then history next. |
30
+ | `Enter` | Submit the current prompt. While a response is running, steer the current turn. |
31
+ | `Ctrl+Q` | Queue the current prompt or command for the next turn instead of steering; it runs after Qwen Code returns to idle. |
32
+ | `Up Arrow` (at the top) / `Esc` | When queued messages are present, move them back into the input for editing (`Up Arrow` at the top whenever the input is shown; `Esc` only when the agent is idle). While the agent is responding and the input is empty, `Esc` cancels the ongoing request instead (queued messages are then moved back into the input). |
33
+ | `Meta+D` / `Meta+Delete` / `Ctrl+Delete` | Delete the word to the right of the cursor. |
34
+ | `Tab` | Autocomplete the current suggestion if one exists. |
35
+ | `Up Arrow` | Row up, then snap to start, then history prev. |
36
+ | `Ctrl+A` / `Home` | Move the cursor to the beginning of the line. |
37
+ | `Ctrl+B` / `Left Arrow` | Move the cursor one character to the left. |
38
+ | `Ctrl+C` | Clear the input prompt |
39
+ | `Esc` (double press) | Clear the input prompt. |
40
+ | `Ctrl+D` / `Delete` | Delete the character to the right of the cursor. |
41
+ | `Ctrl+E` / `End` | Move the cursor to the end of the line. |
42
+ | `Ctrl+F` / `Right Arrow` | Move the cursor one character to the right. |
43
+ | `Ctrl+H` / `Backspace` | Delete the character to the left of the cursor. |
44
+ | `Ctrl+K` | Delete from the cursor to the end of the line. |
45
+ | `Ctrl+Left Arrow` / `Meta+Left Arrow` / `Meta+B` | Move the cursor one word to the left. |
46
+ | `Ctrl+N` | Row down, then snap to end, then history next. |
47
+ | `Ctrl+P` | Row up, then snap to start, then history prev. |
48
+ | `Ctrl+R` | Reverse search through input/shell history. |
49
+ | `Ctrl+Y` | Retry the last failed request. |
50
+ | `Ctrl+Right Arrow` / `Meta+Right Arrow` / `Meta+F` | Move the cursor one word to the right. |
51
+ | `Ctrl+U` | Delete from the cursor to the beginning of the line. |
52
+ | `Ctrl+V` / `Option+V` (Windows: `Alt+V`) | Paste clipboard content. If the clipboard contains an image, it will be saved and a reference to it will be inserted in the prompt. |
53
+ | `Ctrl+W` / `Meta+Backspace` / `Ctrl+Backspace` | Delete the word to the left of the cursor. |
54
+ | `Ctrl+X` | Open the current input in an external editor. |
55
+ | `Ctrl+Z` | Undo the last input edit. |
56
+ | `Ctrl+Shift+Z` | Redo the last undone input edit. |
57
57
 
58
58
  ## Foreground Shell
59
59
 
@@ -65,6 +65,20 @@ These shortcuts apply while an interactive foreground shell command is running.
65
65
  | `Ctrl+Shift+Up` / `Ctrl+Shift+Down` | Scroll the focused shell up or down. |
66
66
  | `Ctrl+B` | Promote the shell to a background task. The child keeps running, the agent's turn unblocks, and the shell appears in `/tasks` and the Background tasks dialog. |
67
67
 
68
+ ## Background tasks dialog
69
+
70
+ Focus the Background tasks pill in the footer (use `Down Arrow` from an empty composer — this moves through the live-agent panel and, if present, the Arena tab bar first) and press `Enter` to open the dialog. It lists background agents, shells, monitors, workflow runs, and memory dreams.
71
+
72
+ | Shortcut | Description |
73
+ | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
74
+ | `Up Arrow` / `Down Arrow` | Move the selection between tasks. |
75
+ | `Enter` | Open the detail view for the selected task. |
76
+ | `x` | Stop the selected task (abandon a paused agent). A foreground agent that blocks your turn needs a second `x` to confirm. |
77
+ | `r` | Resume the selected paused agent. |
78
+ | `p` | Cooperatively pause or resume the selected background workflow run. No new agents start while paused, but script code between agent calls keeps running. |
79
+ | `s` | Save the script of a finished (completed, failed, or cancelled) workflow run (detail view only). |
80
+ | `Left Arrow` / `Esc` | Return to the list from the detail view, or close the dialog. |
81
+
68
82
  ## Suggestions
69
83
 
70
84
  | Shortcut | Description |
@@ -80,7 +80,15 @@ At every effort level, the mechanics of obtaining the diff — worktree flow, di
80
80
 
81
81
  The parser already classified the target, so there is nothing to disambiguate by hand. For a `pr-url` target, determine if the local repo can access this PR:
82
82
 
83
- 1. Check if any git remote matches the URL's **host and owner/repo — by exact segment equality, never substring**: run `git remote -v` and parse each remote URL structurally (`git@<host>:<owner>/<repo>.git` and `https://<host>/<owner>/<repo>(.git)` are the two shapes). A remote matches only when its host equals the verdict's `host` AND its `<owner>/<repo>` (with any `.git` suffix stripped) equals the verdict's `owner/repo`, both compared case-insensitively as whole segments — `shao/qwen-code` does NOT match a `wenshao/qwen-code` remote, and a `github.com` PR does not match a same-named repo on another host. Substring "contains" matching once allowed exactly those, which is reviewing one repository and posting to another. This still handles forks — a local clone with an `upstream` remote pointing to the target repository matches that repository's PRs exactly.
83
+ 1. Run the remote matcher it applies the exact host + owner/repo segment-equality rule in code, and you do not re-derive it (a substring comparison once matched `shao/qwen-code` against a `wenshao/qwen-code` remote — one review read one repository and posted to another; a `github.com` PR matching a same-named repo on another host is the same bug wearing a host):
84
+
85
+ ```bash
86
+ "${QWEN_CODE_CLI:-qwen}" review match-remote \
87
+ --owner <the verdict's owner> --repo <the verdict's repo> --host <the verdict's host>
88
+ ```
89
+
90
+ Exit 0 prints the matching remote's name — forks included: a clone whose `upstream` points to the target repository matches that repository's PRs exactly. Exit 6 means no remote matches — go to item 3. Exit 7 means several match; tell the user and stop rather than picking one. Any other exit is fail-closed like the other gates: report it and stop.
91
+
84
92
  2. If a matching remote is found, proceed with the **normal worktree flow** — use that remote name (instead of hardcoded `origin`) for `git fetch <remote> pull/<number>/head:qwen-review/pr-<number>`. In Step 7, use the owner/repo from the URL for posting comments.
85
93
 
86
94
  For a `pr-url` whose `host` is not `github.com` (GitHub Enterprise), **pass `--host <host>` to every review subcommand that talks to GitHub — `fetch-pr`, `pr-context`, `comment-status`, `presubmit`, and `compose-review`** — which routes all of their `gh` calls via GH_HOST in code; a forgotten host cannot silently retarget them at github.com. The `gh` commands you run directly are still yours to route: prefix Agent 0's `gh pr view`/`gh issue view`, Step 6's residual body fetch, and the Step 7 submission with `GH_HOST=<host> ` (e.g. `GH_HOST=github.example.com gh api ...`). `gh` defaults to `github.com`, so a dropped host makes a call read from and post to the wrong site's `owner/repo`.
@@ -114,12 +122,21 @@ Based on the parsed `target.type`:
114
122
  **Where `<owner>/<repo>` and `<remote>` come from — do not guess either.** For a `pr-url` target both are already decided: the URL carries the owner/repo, and the remote is the one matched against it above. For a bare **`pr-number`** there is no URL, and a PR number alone says nothing about which repository it belongs to. Derive it:
115
123
 
116
124
  ```bash
117
- gh repo view --json owner,name --jq '"\(.owner.login)/\(.name)"'
125
+ gh repo view --json owner,name,url \
126
+ --jq '"\(.owner.login)/\(.name) \(.url | sub("^[a-z]+://"; "") | split("/")[0])"'
118
127
  ```
119
128
 
120
- That is the same command Step 7 already uses to decide where to post, and it resolves through `gh`'s default-repo which in a fork clone is the **upstream**, where the PR actually lives. Then pick the remote **whose URL is that owner/repo**, by the same exact-segment parse of `git remote -v` described above. Do not default to `origin`: in the standard fork layout `origin` is the _fork_, which has no `pull/<n>/head` ref for an upstream PR, and `fetch-pr` fails. In an upstream-as-`origin` clone the same rule lands on `origin` anyway, so one procedure is correct for both.
129
+ That is the same `gh repo view` resolution Step 7 already uses to decide where to post it resolves through `gh`'s default-repo, which in a fork clone is the **upstream**, where the PR actually lives and the second token is the host `gh` resolved that repo at (the URL's authority; an explicit port survives, and the matcher strips it). Pass that host to the matcher: `gh` also resolves a host through its own auth config (`gh auth login --hostname …`, no GH_HOST exported), which the matcher cannot see, so omitting `--host` would compare such a GHE repo against the github.com default and stop at exit 6 even though every later `gh` call routes at the GHE host. Then resolve the remote with the same matcher Step 1's pr-url path uses same rule, same exit codes:
121
130
 
122
- Guessing the owner/repo here is not a recoverable mistake — a guessed repo has already stopped a review before it read a line of code (measured; DESIGN.md — The guessed fork repo). If `gh repo view` and the remote scan disagree, or no remote matches, say so and stop rather than picking one.
131
+ ```bash
132
+ "${QWEN_CODE_CLI:-qwen}" review match-remote \
133
+ --owner <owner from gh repo view> --repo <repo from gh repo view> \
134
+ --host <host from gh repo view>
135
+ ```
136
+
137
+ Do not default to `origin`: in the standard fork layout `origin` is the _fork_, which has no `pull/<n>/head` ref for an upstream PR, and `fetch-pr` fails. In an upstream-as-`origin` clone the matcher lands on `origin` anyway, so one procedure is correct for both.
138
+
139
+ Guessing the owner/repo here is not a recoverable mistake — a guessed repo has already stopped a review before it read a line of code (measured; DESIGN.md — The guessed fork repo). If `gh repo view` fails, or the matcher exits 6 (no remote matches) or 7 (several do), say so and stop rather than picking one.
123
140
 
124
141
  Read `.qwen/tmp/qwen-review-pr-<n>-fetch.json` for: `worktreePath`, `baseRefName`, `headRefName`, `fetchedSha` (use as the **HEAD commit SHA** for Step 7), `isCrossRepository`, `diffStat` (files / additions / deletions), `emptyDiff` (**stop here**: the branch tree is byte-identical to its merge base — the work already landed or was superseded; tell the user and recommend close-as-superseded instead of fanning out agents over zero hunks), `collapsedFromUpstream` (disclose in the summary: overlapping merged PRs have collapsed this one to a residual — the review scope is the recomputed diff, and body claims about the rest are description-of-history, which Agent 0 should read accordingly), and `prDescriptionHasHan` (the PR description contains Chinese — every posted inline comment must then be bilingual; see Step 7). If the command fails (auth, network, PR not found), inform the user and stop.
125
142
 
@@ -194,7 +211,7 @@ Read from it:
194
211
  - `diffLines`, `diffChars`, and `srcDiffLines` / `testDiffLines` / `docsDiffLines` / `generatedDiffLines`
195
212
  - `chunks[]` — contiguous, non-overlapping line ranges tiling the whole diff. Each entry has `id`, `startLine`, `endLine` (1-based, inclusive), `lines`, `chars`, an `oversized` flag, and `files[]` naming the source files and new-side line ranges it covers. A chunk with `oversized: true` may exceed what one `read_file` call returns.
196
213
  - `files[]` — per-file `kind` (`source` / `test` / `generated`), `hunks[]` new-side ranges (Step 7 validates comment anchors against these), `addedRanges[]` and `diffRange` (present only on `heavy` files — the exact lines the PR wrote, and where that file's own diff lives, so an invariant agent can see what was deleted), change counts, and the `heavy` flag
197
- - `budget` — how much walking the **size-elastic** parts of this run owe, derived from `srcDiffLines` the same way the topology gate is, and recorded here rather than passed as a flag so every reader sees one number. `inlineAngles` and `sweep` scope Step 3C's low pass; `specialistCap` is the Agent 8 ceiling (**0** below 80 source lines — "one domain dominates the diff" is a judgement, and a judgement made about forty lines finds a dominant domain every time, because forty lines are usually all one thing); `verifyShard` is Step 4's findings-per-verifier. **It never scales a dimension away** — which agents a review owes is the roster's answer and the roster reads `effort`, so a size input cannot become a back door into shrinking coverage. Nothing here is yours to override: a budget the caller can inflate is a budget that gets inflated. **A plan with no `budget` field** (written by an older CLI — the version-skew this skill has already measured once) falls back to the pre-budget flat behaviour, which errs toward more coverage, never less: walk all six angles, run the sweep, cap Agent 8 at 2, shard verification at 8.
214
+ - `budget` — how much walking the **size-elastic** parts of this run owe, derived from `srcDiffLines` the same way the topology gate is, and recorded here rather than passed as a flag so every reader sees one number. `inlineAngles` and `sweep` scope Step 3C's low pass; `specialistCap` is the Agent 8 ceiling (**0** below 80 source lines — "one domain dominates the diff" is a judgement, and a judgement made about forty lines finds a dominant domain every time, because forty lines are usually all one thing); `verifyShard` is Step 4's findings-per-verifier; `agentToolBudget` is the base rate of the soft tool-call ceiling `agent-prompt` bakes into every finder and auditor brief — not the verifier's, not Agent 7's, and not Agent 0's, whose mandatory work scales with the linked issues rather than the diff. The ceiling is per **launch**: a scoped agent (a chunk, a heavy file) gets an allowance derived from its own territory — never above the plan's recorded allowance, which is clamped into the budget's own band in both directions, so the plan stays the one number every launch answers to — and every launch's assigned reads ride on top of the allowance rather than inside it, so a huge diff's mandatory chunk reads can never exhaust the exploration a whole-diff role owes — because a wave's wall clock is its slowest agent and the slowest agent is reliably one that kept exploring past any recall gain: the same 14-agent fan-out has measured 11.7 and 41 minutes on comparable diffs, the difference being individual agents spending 40-100 calls walking the tree (measured; DESIGN.md — The forty-one minute wave). The ceiling is soft and the briefs restate the recall rule beside it: at the budget an agent stops **exploring**, never reporting — findings in hand are filed, and each stopped check is disclosed on its own line in the fixed form `Budget gap: <the check>`, which `check-coverage` parses out of the transcripts (its report's `budgetGaps`) — see Step 3D for the ruling each gap is owed. **It never scales a dimension away** — which agents a review owes is the roster's answer and the roster reads `effort`, so a size input cannot become a back door into shrinking coverage. Nothing here is yours to override: a budget the caller can inflate is a budget that gets inflated. **A plan with no `budget` field** (written by an older CLI — the version-skew this skill has already measured once) falls back to the pre-budget flat behaviour, which errs toward more coverage, never less: walk all six angles, run the sweep, cap Agent 8 at 2, shard verification at 8.
198
215
 
199
216
  A chunk is read with `read_file(file_path=diffPathAbsolute, offset=startLine - 1, limit=endLine - startLine + 1)` — `offset` is 0-based.
200
217
 
@@ -413,6 +430,8 @@ It reads the harness's own per-agent transcripts: a record you do not author, ar
413
430
 
414
431
  Why this is a command and not a paragraph: **the review approved a pull request that no agent read.** Every prose defence against exactly this failure went unperformed in a real dogfood (measured; DESIGN.md — The Approve over an unread diff).
415
432
 
433
+ **The coverage report also carries `budgetGaps`** — the `Budget gap: <the check>` lines agents disclosed when the soft tool-call ceiling stopped a check (the format is fixed so this detection is a parse, not a memory; it never fails the gate, because failing on disclosure teaches agents not to disclose). Detection is the CLI's; the ruling is yours, exactly as with whiffs: a gap that names an incomplete **required** trace — the callers of a changed export, a security path, the re-establishment of removed behaviour — joins `unreviewedDimensions`, which forbids an Approve; a gap naming only optional depth is carried into the report's "Not reviewed" section — `compose-review` renders every parsed gap there mechanically, so the disclosure reaches the author even if you relay nothing; your ruling adds only the capping entries. A budget gap is the ceiling working, not an agent failing — never relaunch an agent over one. A disclosure costs no coverage credit and never fails the gate — an arithmetic that only ever bites the discloser teaches agents not to disclose. One consequence is the CLI's, not yours: the reverse-audit retirement judges a receipt with its `Budget gap:` lines stripped, so the disclosure can neither serve as the receipt's substance (a return whose only substance is its gaps does not retire its chunk) nor block a receipt that is substantive without it (a proven territory walk that found nothing new still retires — the gap is ruled on, not re-audited). When your ruling promotes a gap into `unreviewedDimensions`, write it self-explained, with the gap's own text as the scope — `<the gap's text> — stopped at the agent tool budget` — the em-dash reason renders verbatim instead of under the whiffed-agent explanation, and `compose-review` drops its own mechanical line for any gap your entry echoes, so the body never says it twice.
434
+
416
435
  The roll-call below is still worth writing for your own reading — but it is not what stops this any more:
417
436
 
418
437
  ```
@@ -14,7 +14,7 @@ import "./chunk-4NFY2S7N.js";
14
14
  import "./chunk-2MIN6GRR.js";
15
15
  import "./chunk-QHTIBUWB.js";
16
16
  import "./chunk-RKUWKYED.js";
17
- import "./chunk-BFSQBXHV.js";
17
+ import "./chunk-GXSNGY5M.js";
18
18
  import "./chunk-GOFAQQZA.js";
19
19
  import "./chunk-5M6IDOMF.js";
20
20
  import "./chunk-TWPJO254.js";
@@ -24,7 +24,7 @@ import "./chunk-MVUQRLOH.js";
24
24
  import "./chunk-XCWO3SMQ.js";
25
25
  import "./chunk-7MH4J33A.js";
26
26
  import "./chunk-6PVPNMXU.js";
27
- import "./chunk-RGTB44BO.js";
27
+ import "./chunk-VXZ5HAOV.js";
28
28
  import "./chunk-IRH27ZC2.js";
29
29
  import "./chunk-QHWCP53L.js";
30
30
  import "./chunk-GNPNYXJB.js";
@@ -37,10 +37,10 @@ import "./chunk-J6SZID63.js";
37
37
  import "./chunk-KRXPRVGL.js";
38
38
  import "./chunk-GM463R2B.js";
39
39
  import "./chunk-SEZ556DZ.js";
40
- import "./chunk-CJXIIILK.js";
41
- import "./chunk-3K7FH2KQ.js";
40
+ import "./chunk-2FRY5CRX.js";
41
+ import "./chunk-67N6HB5H.js";
42
42
  import "./chunk-WAUGQKUU.js";
43
- import "./chunk-REHWPCG2.js";
43
+ import "./chunk-PLFATELK.js";
44
44
  import "./chunk-L4N6TIP7.js";
45
45
  import "./chunk-SAH4BD2J.js";
46
46
  import "./chunk-CPG6P4GG.js";
@@ -50,11 +50,12 @@ import "./chunk-IA7TGCN2.js";
50
50
  import "./chunk-K623ENWT.js";
51
51
  import "./chunk-AQ37AY7B.js";
52
52
  import "./chunk-EQL65XGA.js";
53
- import "./chunk-22NBYCPD.js";
53
+ import "./chunk-3P2LV43B.js";
54
54
  import "./chunk-NAVJD2PQ.js";
55
- import "./chunk-3ULCB3NE.js";
56
- import "./chunk-BGG4MBYD.js";
55
+ import "./chunk-HV76SFIA.js";
56
+ import "./chunk-4PYCZH2V.js";
57
57
  import "./chunk-P3QQPMQA.js";
58
+ import "./chunk-SR7RZ4MS.js";
58
59
  import "./chunk-M6HMMKVG.js";
59
60
  import "./chunk-DGEIYUC3.js";
60
61
  import "./chunk-MPHPFVKK.js";
@@ -62,13 +63,15 @@ import "./chunk-AXMWHKXA.js";
62
63
  import "./chunk-GLCZKT5V.js";
63
64
  import "./chunk-DJ2GSRLV.js";
64
65
  import "./chunk-EI3HZX6C.js";
65
- import "./chunk-XCG76UE6.js";
66
+ import "./chunk-3PY4LPJF.js";
66
67
  import "./chunk-WOJZWRAZ.js";
67
68
  import "./chunk-VGC4I5JJ.js";
68
69
  import "./chunk-FVKHVJZQ.js";
70
+ import "./chunk-COBO5EBO.js";
69
71
  import "./chunk-6ZRFAKXK.js";
70
72
  import "./chunk-PYQADEFD.js";
71
- import "./chunk-P7HUJDBZ.js";
73
+ import "./chunk-M3STHEMM.js";
74
+ import "./chunk-F6WFNA7U.js";
72
75
  import "./chunk-46UV252V.js";
73
76
  import "./chunk-ZBVS26BY.js";
74
77
  import "./chunk-KKBPOU75.js";
@@ -4,14 +4,14 @@ import {
4
4
  ConfigContext,
5
5
  SessionPicker,
6
6
  SettingsContext
7
- } from "./chunk-APMRLB2H.js";
8
- import "./chunk-5PGKKSO6.js";
7
+ } from "./chunk-3WNQOYHQ.js";
8
+ import "./chunk-7DVT4LVV.js";
9
9
  import {
10
10
  KeypressProvider
11
- } from "./chunk-APNNM3JC.js";
12
- import "./chunk-4Q6N3SNL.js";
13
- import "./chunk-MIA37QO3.js";
14
- import "./chunk-YHEEE624.js";
11
+ } from "./chunk-QGHSP65Z.js";
12
+ import "./chunk-NVRDQFCX.js";
13
+ import "./chunk-XHD7CRP2.js";
14
+ import "./chunk-EN2TKTFH.js";
15
15
  import "./chunk-4WGODMVR.js";
16
16
  import "./chunk-KW7NOTN6.js";
17
17
  import "./chunk-ONSZH6VM.js";
@@ -29,30 +29,30 @@ import {
29
29
  } from "./chunk-5QWWOFGG.js";
30
30
  import "./chunk-S6HYI3MF.js";
31
31
  import "./chunk-PJRW65JO.js";
32
- import "./chunk-GUFY6D3E.js";
32
+ import "./chunk-NPUXXRJI.js";
33
33
  import "./chunk-CTJLZLB5.js";
34
- import "./chunk-O7VQ3F22.js";
34
+ import "./chunk-4ALIARFY.js";
35
35
  import "./chunk-4NFY2S7N.js";
36
36
  import "./chunk-2MIN6GRR.js";
37
37
  import "./chunk-QHTIBUWB.js";
38
38
  import "./chunk-EKTCKZV5.js";
39
39
  import "./chunk-57OAHC2Y.js";
40
- import "./chunk-AG3P2RES.js";
40
+ import "./chunk-WV5J6Q6N.js";
41
41
  import "./chunk-3SH53ANB.js";
42
- import "./chunk-77WOUGCA.js";
42
+ import "./chunk-OHKJVAKG.js";
43
43
  import "./chunk-RKUWKYED.js";
44
44
  import "./chunk-GOXKNSDZ.js";
45
45
  import "./chunk-IDS7MSUP.js";
46
- import "./chunk-TAOSTUHI.js";
47
- import "./chunk-KPMB4JEZ.js";
48
- import "./chunk-ALFTV7GA.js";
49
- import "./chunk-3ARO4N5G.js";
50
- import "./chunk-ALGGS7UH.js";
46
+ import "./chunk-PG62DFWD.js";
47
+ import "./chunk-B52AWKBB.js";
48
+ import "./chunk-UA5H3DS2.js";
49
+ import "./chunk-HA3SAB64.js";
50
+ import "./chunk-NPQ5ZKRP.js";
51
51
  import "./chunk-MR3PXB6E.js";
52
52
  import {
53
53
  SessionService,
54
54
  getGitBranch
55
- } from "./chunk-BFSQBXHV.js";
55
+ } from "./chunk-GXSNGY5M.js";
56
56
  import "./chunk-GOFAQQZA.js";
57
57
  import "./chunk-5M6IDOMF.js";
58
58
  import "./chunk-TWPJO254.js";
@@ -62,7 +62,7 @@ import "./chunk-MVUQRLOH.js";
62
62
  import "./chunk-XCWO3SMQ.js";
63
63
  import "./chunk-7MH4J33A.js";
64
64
  import "./chunk-6PVPNMXU.js";
65
- import "./chunk-RGTB44BO.js";
65
+ import "./chunk-VXZ5HAOV.js";
66
66
  import "./chunk-IRH27ZC2.js";
67
67
  import "./chunk-QHWCP53L.js";
68
68
  import "./chunk-GNPNYXJB.js";
@@ -75,10 +75,10 @@ import "./chunk-J6SZID63.js";
75
75
  import "./chunk-KRXPRVGL.js";
76
76
  import "./chunk-GM463R2B.js";
77
77
  import "./chunk-SEZ556DZ.js";
78
- import "./chunk-CJXIIILK.js";
79
- import "./chunk-3K7FH2KQ.js";
78
+ import "./chunk-2FRY5CRX.js";
79
+ import "./chunk-67N6HB5H.js";
80
80
  import "./chunk-WAUGQKUU.js";
81
- import "./chunk-REHWPCG2.js";
81
+ import "./chunk-PLFATELK.js";
82
82
  import "./chunk-L4N6TIP7.js";
83
83
  import "./chunk-SAH4BD2J.js";
84
84
  import "./chunk-CPG6P4GG.js";
@@ -88,11 +88,12 @@ import "./chunk-IA7TGCN2.js";
88
88
  import "./chunk-K623ENWT.js";
89
89
  import "./chunk-AQ37AY7B.js";
90
90
  import "./chunk-EQL65XGA.js";
91
- import "./chunk-22NBYCPD.js";
91
+ import "./chunk-3P2LV43B.js";
92
92
  import "./chunk-NAVJD2PQ.js";
93
- import "./chunk-3ULCB3NE.js";
94
- import "./chunk-BGG4MBYD.js";
93
+ import "./chunk-HV76SFIA.js";
94
+ import "./chunk-4PYCZH2V.js";
95
95
  import "./chunk-P3QQPMQA.js";
96
+ import "./chunk-SR7RZ4MS.js";
96
97
  import "./chunk-M6HMMKVG.js";
97
98
  import "./chunk-DGEIYUC3.js";
98
99
  import "./chunk-MPHPFVKK.js";
@@ -100,13 +101,15 @@ import "./chunk-AXMWHKXA.js";
100
101
  import "./chunk-GLCZKT5V.js";
101
102
  import "./chunk-DJ2GSRLV.js";
102
103
  import "./chunk-EI3HZX6C.js";
103
- import "./chunk-XCG76UE6.js";
104
+ import "./chunk-3PY4LPJF.js";
104
105
  import "./chunk-WOJZWRAZ.js";
105
106
  import "./chunk-VGC4I5JJ.js";
106
107
  import "./chunk-FVKHVJZQ.js";
108
+ import "./chunk-COBO5EBO.js";
107
109
  import "./chunk-6ZRFAKXK.js";
108
110
  import "./chunk-PYQADEFD.js";
109
- import "./chunk-P7HUJDBZ.js";
111
+ import "./chunk-M3STHEMM.js";
112
+ import "./chunk-F6WFNA7U.js";
110
113
  import "./chunk-46UV252V.js";
111
114
  import "./chunk-ZBVS26BY.js";
112
115
  import "./chunk-KKBPOU75.js";
@@ -117,7 +120,7 @@ import "./chunk-W4RQUHY3.js";
117
120
  import "./chunk-LKRMNRSN.js";
118
121
  import "./chunk-OIVKILPI.js";
119
122
  import "./chunk-VOQXFAY5.js";
120
- import "./chunk-ZQGHESAS.js";
123
+ import "./chunk-6TR7CFXH.js";
121
124
  import {
122
125
  writeStdoutLine
123
126
  } from "./chunk-KGJGEEVR.js";
@@ -9,8 +9,8 @@ import {
9
9
  markAcpStartup,
10
10
  recordAcpConfigStartupEvent,
11
11
  resetAcpStartupProfilerForTesting
12
- } from "./chunk-W7U4ESW2.js";
13
- import "./chunk-R574ATRM.js";
12
+ } from "./chunk-CG3WBKJK.js";
13
+ import "./chunk-M2PNLYGY.js";
14
14
  import "./chunk-5O2XNYP6.js";
15
15
  import "./chunk-J2S4EL5Y.js";
16
16
  export {