@qwen-code/qwen-code 0.21.3 → 0.21.4

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 (241) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +13 -0
  2. package/bundled/qc-helper/docs/features/channels/github.md +12 -8
  3. package/bundled/qc-helper/docs/features/code-review.md +14 -1
  4. package/bundled/qc-helper/docs/features/commands.md +46 -40
  5. package/bundled/qc-helper/docs/qwen-serve.md +27 -26
  6. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +50 -19
  7. package/bundled/review/SKILL.md +67 -22
  8. package/chunks/{MaxSizedBox-OJR636GP.js → MaxSizedBox-5XDFQHTQ.js} +8 -7
  9. package/chunks/{StandaloneSessionPicker-AMMBF5UY.js → StandaloneSessionPicker-DLADA54K.js} +21 -20
  10. package/chunks/{acpAgent-M57LVIQA.js → acpAgent-MVEFZSBS.js} +48 -42
  11. package/chunks/{agent-PE37ARLM.js → agent-RB6LCRZX.js} +8 -7
  12. package/chunks/{agent-headless-45ASME4R.js → agent-headless-272ZACJV.js} +8 -7
  13. package/chunks/{anthropicContentGenerator-WCBYB6JG.js → anthropicContentGenerator-3CAHEZBM.js} +4 -2
  14. package/chunks/{bridge-K3ZRPO4D.js → bridge-GXUXFSHK.js} +9 -8
  15. package/chunks/{ca-4OJN75WT.js → ca-NYKNH222.js} +4 -0
  16. package/chunks/{channel-management-service-IXJ2MZTS.js → channel-management-service-UHX56NBO.js} +1 -1
  17. package/chunks/{channel-settings-store-PEAR3IME.js → channel-settings-store-5UA2SABE.js} +14 -13
  18. package/chunks/{chunk-IWGTGH4G.js → chunk-2CCUHZP5.js} +2 -2
  19. package/chunks/{chunk-HUIQ4FYC.js → chunk-2JN5V3I7.js} +3 -3
  20. package/chunks/{chunk-BSKUTHLO.js → chunk-2ON2O4MD.js} +16 -3
  21. package/chunks/{chunk-QPSYIV2O.js → chunk-2T3RYG4L.js} +2039 -563
  22. package/chunks/{chunk-ZGSUFIL5.js → chunk-3PHUGFPH.js} +1 -1
  23. package/chunks/{chunk-QWW6I2UO.js → chunk-4CTV3FZH.js} +400 -33
  24. package/chunks/{chunk-6NE5NTHJ.js → chunk-4PZ7SPD5.js} +1 -1
  25. package/chunks/{chunk-2LZCLQIS.js → chunk-5XGI4IPK.js} +4 -4
  26. package/chunks/{chunk-GMSBXEH4.js → chunk-6KQUOXT5.js} +6 -6
  27. package/chunks/{chunk-2MI7ZTRT.js → chunk-6ME3PVMM.js} +4 -4
  28. package/chunks/{chunk-SRY26X4H.js → chunk-7UXI6P72.js} +11 -2
  29. package/chunks/{chunk-YU6TBRTA.js → chunk-A7PONO5G.js} +1 -1
  30. package/chunks/{chunk-N42C2FU3.js → chunk-AFJSRJTO.js} +1 -1
  31. package/chunks/{chunk-H6FIBBXK.js → chunk-AWTLFUVN.js} +11 -11
  32. package/chunks/{chunk-HIXVWF7I.js → chunk-B3EBXISV.js} +2 -2
  33. package/chunks/{chunk-3XF4WT3B.js → chunk-BC4LTKEG.js} +1 -1
  34. package/chunks/{chunk-ZJES4C3I.js → chunk-BOWKLLWA.js} +2 -2
  35. package/chunks/{chunk-SKSF3LGQ.js → chunk-C5YFS6VR.js} +3 -3
  36. package/chunks/{chunk-IF6K42YJ.js → chunk-C6FU76AA.js} +1 -1
  37. package/chunks/{chunk-VUNRNRN6.js → chunk-DHNFB7NC.js} +4 -4
  38. package/chunks/{chunk-LZV2BZPL.js → chunk-DJA7YBLJ.js} +2 -2
  39. package/chunks/{chunk-K2J5JZ6B.js → chunk-DOCBJIBL.js} +1 -1
  40. package/chunks/{chunk-X6WUYMOV.js → chunk-DTAPI453.js} +2 -2
  41. package/chunks/{chunk-XUMAD5IT.js → chunk-DZPOYHBT.js} +1 -1
  42. package/chunks/{chunk-UQDFEU47.js → chunk-E2SYUEIA.js} +463 -114
  43. package/chunks/{chunk-DSGJLHM3.js → chunk-EIAPOG76.js} +3 -3
  44. package/chunks/{chunk-EGYJRIDF.js → chunk-EJXATV5R.js} +2 -2
  45. package/chunks/{chunk-BKGA75MU.js → chunk-FPPVCCAH.js} +1 -1
  46. package/chunks/{chunk-KXWERR6P.js → chunk-FV4TUUDE.js} +10 -10
  47. package/chunks/{chunk-WY2ENRDN.js → chunk-G6KI6B5L.js} +1 -1
  48. package/chunks/{chunk-H6ZYP74A.js → chunk-GDREW3U5.js} +1 -1
  49. package/chunks/{chunk-BKXTHMOZ.js → chunk-HBCKZF2A.js} +1 -1
  50. package/chunks/chunk-HGCQ5SE7.js +136 -0
  51. package/chunks/{chunk-HEBW74ZW.js → chunk-HI4YGRJD.js} +3 -3
  52. package/chunks/{chunk-5JPVOYWA.js → chunk-I32URQI7.js} +4 -4
  53. package/chunks/{chunk-5VYFXHY2.js → chunk-IMGNGOGC.js} +3 -3
  54. package/chunks/{chunk-4K3RV3OA.js → chunk-JDJ7SC4E.js} +7 -3
  55. package/chunks/{chunk-22YFMJBW.js → chunk-KB6VSG2U.js} +58 -6
  56. package/chunks/{chunk-R7XNRHYD.js → chunk-KHSJSMFS.js} +1 -1
  57. package/chunks/{chunk-LGT3YMLN.js → chunk-LEZFUYPM.js} +1 -1
  58. package/chunks/{chunk-TZTBZ25J.js → chunk-LLMGP5IC.js} +1 -1
  59. package/chunks/{chunk-NW57GHNL.js → chunk-LPLMUGIM.js} +3 -3
  60. package/chunks/{chunk-L7FTDKCD.js → chunk-M2L4TMH3.js} +21 -3
  61. package/chunks/{chunk-RCXCGZG6.js → chunk-M6RNMBUO.js} +3 -3
  62. package/chunks/{chunk-D2GPKXCQ.js → chunk-O4IWFYUW.js} +4 -4
  63. package/chunks/{chunk-Q3G5L5KF.js → chunk-OOPFAIWP.js} +1 -1
  64. package/chunks/{chunk-MTR4JWQJ.js → chunk-P5UJMCVS.js} +4 -4
  65. package/chunks/{chunk-FF75UUB2.js → chunk-PCVMRBLN.js} +1 -1
  66. package/chunks/{chunk-XMJO6C44.js → chunk-PQ5JFCNL.js} +3 -3
  67. package/chunks/{chunk-SQ3YD5MI.js → chunk-PQEIKQXN.js} +1 -1
  68. package/chunks/{chunk-3MWNROHB.js → chunk-QXTGHZCX.js} +3 -3
  69. package/chunks/{chunk-TXABHVZD.js → chunk-QZQ72YF6.js} +1 -1
  70. package/chunks/{chunk-YPUHMQXV.js → chunk-RL2NPV5E.js} +1 -1
  71. package/chunks/{chunk-FXVHVCNA.js → chunk-RNKGMZEW.js} +1 -1
  72. package/chunks/{chunk-EIMKVOSF.js → chunk-SBBHZ3YT.js} +1 -1
  73. package/chunks/{chunk-QDWLUXKP.js → chunk-SV5X2EUV.js} +1 -1
  74. package/chunks/{chunk-YWMDTMAU.js → chunk-THLV7YGY.js} +2 -2
  75. package/chunks/{chunk-H35Q5CEG.js → chunk-TXZDRD36.js} +6 -6
  76. package/chunks/{chunk-MUEJ4R3E.js → chunk-UATJZOAJ.js} +3 -3
  77. package/chunks/{chunk-M5LIY7Y6.js → chunk-URVJ4AZC.js} +1 -1
  78. package/chunks/{chunk-4AGGSHCH.js → chunk-WDLQGFWP.js} +196 -52
  79. package/chunks/{chunk-RL6J3BPE.js → chunk-XGA6XHH3.js} +3 -3
  80. package/chunks/{chunk-QWDVZH24.js → chunk-XPAY4EMH.js} +3 -3
  81. package/chunks/{chunk-MCXMWLFT.js → chunk-XSOAW7FC.js} +5 -5
  82. package/chunks/{chunk-RR224BUP.js → chunk-ZLJQIGCH.js} +45 -1
  83. package/chunks/{chunk-FG63DZQA.js → chunk-ZRQY5BBS.js} +9 -9
  84. package/chunks/{computer-use-UJMK6JQU.js → computer-use-MDOMIVTL.js} +8 -7
  85. package/chunks/{config-utils-7COTJMWK.js → config-utils-E3ZQTHGM.js} +2 -2
  86. package/chunks/{contextCommand-4YABGF4S.js → contextCommand-FCK3CB37.js} +10 -9
  87. package/chunks/{core-runtime-7M4VM3DA.js → core-runtime-UHRHHU2O.js} +8 -7
  88. package/chunks/{create-sub-session-HOFDW4N7.js → create-sub-session-MIXUVLWW.js} +20 -13
  89. package/chunks/{daemon-status-provider-W2U5Q3J5.js → daemon-status-provider-6LC7LUNR.js} +13 -12
  90. package/chunks/{daemon-trust-policy-IFICWPXP.js → daemon-trust-policy-Y36HGRAM.js} +13 -12
  91. package/chunks/{daemon-trust-policy-monitor-GX7EO6FW.js → daemon-trust-policy-monitor-ROTBBDOH.js} +13 -12
  92. package/chunks/{de-A6TI4LBB.js → de-VL76CPLV.js} +4 -0
  93. package/chunks/{deferred-core-runtime-U36OOOKE.js → deferred-core-runtime-ZQ4JIAJD.js} +8 -7
  94. package/chunks/{display-image-VS3TXYQH.js → display-image-2WOG27DY.js} +1 -1
  95. package/chunks/{dist-NEBRI7WO.js → dist-C5U4LJKW.js} +95 -0
  96. package/chunks/{dist-4KAX7CCL.js → dist-IKGVITP3.js} +401 -24
  97. package/chunks/{earlyInputCapture-5ZWDH3SB.js → earlyInputCapture-GPRUNXTP.js} +8 -7
  98. package/chunks/{edit-J7SW6UP6.js → edit-YK3UP6D2.js} +8 -7
  99. package/chunks/{en-L4UQDLWW.js → en-IRJ2WN5T.js} +4 -0
  100. package/chunks/{enter-worktree-NRLOHRB6.js → enter-worktree-QMVQW7UG.js} +8 -7
  101. package/chunks/{enterPlanMode-GDSTEFSM.js → enterPlanMode-TZAYQ5MP.js} +8 -7
  102. package/chunks/{environment-KHYEKG5W.js → environment-3UQURCZG.js} +10 -9
  103. package/chunks/{errors-VNLAJV3O.js → errors-VBIMTNNI.js} +10 -9
  104. package/chunks/{exit-worktree-ARVID7DF.js → exit-worktree-4EC7LBBC.js} +8 -7
  105. package/chunks/{exitPlanMode-4ZFY7KUH.js → exitPlanMode-K5Y3REU2.js} +8 -7
  106. package/chunks/{fast-path-KA65VREJ.js → fast-path-KS6IE7YR.js} +11 -2
  107. package/chunks/{fr-QF7RI5ZE.js → fr-GK3HQYVB.js} +4 -0
  108. package/chunks/{gemini-5PMCNPF7.js → gemini-LTUCUOJH.js} +42 -40
  109. package/chunks/{geminiContentGenerator-NFSYJ4HA.js → geminiContentGenerator-M3HJTHKR.js} +1 -1
  110. package/chunks/{glob-F3EAUDAX.js → glob-SKUYGTF2.js} +8 -7
  111. package/chunks/{grep-UJMPVZER.js → grep-SQ7RD7SV.js} +8 -7
  112. package/chunks/{handleAutoUpdate-MG4FRZPN.js → handleAutoUpdate-OK7OX23A.js} +12 -11
  113. package/chunks/{i18n-EVHV4ZF3.js → i18n-P77YBKY4.js} +9 -8
  114. package/chunks/{image-gen-UC7XVHI7.js → image-gen-2ZWPS42A.js} +1 -1
  115. package/chunks/{initializer-O5B6HUBI.js → initializer-PIOYXVW7.js} +13 -12
  116. package/chunks/{installationInfo-2LIKCNVX.js → installationInfo-IWMM6DPV.js} +9 -8
  117. package/chunks/{ja-URQESVGW.js → ja-3FA46IKD.js} +4 -0
  118. package/chunks/{list-BPKIE3Z4.js → list-3DCR4TRI.js} +16 -15
  119. package/chunks/{loadedSettingsAdapter-NGLFF4V4.js → loadedSettingsAdapter-EJC6CU5N.js} +13 -12
  120. package/chunks/{loggingContentGenerator-7TFESRG5.js → loggingContentGenerator-2JEFU25T.js} +3 -3
  121. package/chunks/{managed-npm-update-CLZGGV7F.js → managed-npm-update-EGVQPSBR.js} +9 -8
  122. package/chunks/{mcp-X5OZOOXX.js → mcp-KFFH2MBV.js} +13 -12
  123. package/chunks/{monitor-TGSVSAZZ.js → monitor-6Y3NDMTI.js} +8 -7
  124. package/chunks/{nonInteractiveCli-GUMJ5JLG.js → nonInteractiveCli-426IQDPE.js} +40 -38
  125. package/chunks/{notebook-edit-EZISE7IC.js → notebook-edit-373IQQLE.js} +8 -7
  126. package/chunks/{openaiContentGenerator-ZAKS5A6P.js → openaiContentGenerator-PGFSOMIQ.js} +3 -3
  127. package/chunks/{pidfile-PCMBX4LR.js → pidfile-Y4INDMHG.js} +8 -7
  128. package/chunks/{processUtils-2CSVE5BW.js → processUtils-6BCPCJZW.js} +2 -2
  129. package/chunks/{pt-EEEQXRUI.js → pt-3AOBKPIJ.js} +4 -0
  130. package/chunks/{qwenContentGenerator-S3H6PIC4.js → qwenContentGenerator-QC3KSHSX.js} +8 -8
  131. package/chunks/{qwenOAuth2-MNU425VE.js → qwenOAuth2-IOAXKJ3L.js} +1 -1
  132. package/chunks/{read-file-HXJXHBI6.js → read-file-2T54FYZV.js} +2 -2
  133. package/chunks/{resumeHistoryUtils-4QAMC2S6.js → resumeHistoryUtils-O62RDCZ3.js} +11 -10
  134. package/chunks/{ripGrep-MCETPF2E.js → ripGrep-3H72KY7S.js} +8 -7
  135. package/chunks/{ru-WGZDYQAB.js → ru-VJRAMC4W.js} +4 -0
  136. package/chunks/{run-qwen-serve-3NMODTXV.js → run-qwen-serve-3AIDNNHO.js} +82 -35
  137. package/chunks/{runtime-AQOV7DVP.js → runtime-AZ4EHHFV.js} +16 -15
  138. package/chunks/{scheduler-DN7SZ6ZE.js → scheduler-L4UUCU4Z.js} +8 -7
  139. package/chunks/{send-message-HGCVVDTZ.js → send-message-LHJLVWFD.js} +2 -2
  140. package/chunks/{serve-WZB45HVT.js → serve-CLXGSYOE.js} +14 -12
  141. package/chunks/{server-GOTZFEEZ.js → server-MEAE3WMM.js} +36 -34
  142. package/chunks/{session-23LOFLWN.js → session-OSLD2LT5.js} +41 -39
  143. package/chunks/{settings-LI2ORVXC.js → settings-ILWAOKA4.js} +12 -11
  144. package/chunks/{shell-GLC6OP3C.js → shell-RT5DBH6B.js} +8 -7
  145. package/chunks/{skill-C7W6M4GO.js → skill-LVGA3ATZ.js} +2 -2
  146. package/chunks/{skill-settings-W25NCK5I.js → skill-settings-WTZE7EPE.js} +12 -11
  147. package/chunks/{spawnChannel-OHJLEBLD.js → spawnChannel-BOBS7DVM.js} +8 -7
  148. package/chunks/{standalone-update-E4V5V7WT.js → standalone-update-Y5JB4S2K.js} +10 -9
  149. package/chunks/{startInteractiveUI-FKILLW7Q.js → startInteractiveUI-ZV25CD2S.js} +62 -50
  150. package/chunks/{task-create-CSCEG4SM.js → task-create-4ALZMGP5.js} +3 -3
  151. package/chunks/{task-update-C52LNFU5.js → task-update-IKCEEWJ6.js} +3 -3
  152. package/chunks/{team-create-HBIJ7NHT.js → team-create-ZVPQIXCP.js} +8 -7
  153. package/chunks/{team-plan-approval-IBJOKS4J.js → team-plan-approval-5UHUBY3W.js} +8 -7
  154. package/chunks/{terminal-image-renderer-BOQJPVLB.js → terminal-image-renderer-NWC2RALG.js} +8 -7
  155. package/chunks/{theme-manager-NSS7VLUD.js → theme-manager-5KICSBOB.js} +8 -7
  156. package/chunks/{todoWrite-YKAA57W2.js → todoWrite-FTZWQRZH.js} +2 -1
  157. package/chunks/{tool-search-DEAS54VG.js → tool-search-2AOU77H4.js} +4 -4
  158. package/chunks/{total-session-admission-4LWTX3WD.js → total-session-admission-FR7RMHVL.js} +9 -8
  159. package/chunks/{trustedFolders-NF3J2TA7.js → trustedFolders-V7UUPQXO.js} +9 -8
  160. package/chunks/{update-relaunch-WUHRH5V3.js → update-relaunch-TBWRMQD6.js} +5 -5
  161. package/chunks/{updateCheck-7EG4BLBH.js → updateCheck-42SPCLH7.js} +11 -10
  162. package/chunks/{useAutoAcceptIndicator-ZRV56GVP.js → useAutoAcceptIndicator-4C2KM345.js} +14 -13
  163. package/chunks/{validateNonInterActiveAuth-WC2FPE3I.js → validateNonInterActiveAuth-UVFRXV3Z.js} +37 -35
  164. package/chunks/{version-6SS7KCUP.js → version-HKTV6TPN.js} +1 -1
  165. package/chunks/{web-fetch-Y5QQMPKA.js → web-fetch-ZRXSV5AN.js} +2 -2
  166. package/chunks/{web-search-QKKEU723.js → web-search-WOLV3L6T.js} +2 -2
  167. package/chunks/{workflow-PWIU6Q2M.js → workflow-F63ES3OB.js} +9 -8
  168. package/chunks/{workspace-providers-status-B2DM6FNK.js → workspace-providers-status-PJMGMYMC.js} +15 -14
  169. package/chunks/{workspace-registration-store-7Y33TTHJ.js → workspace-registration-store-LNBOX5TJ.js} +1 -1
  170. package/chunks/{workspace-registry-TSNJKLPC.js → workspace-registry-4PR7VDQ3.js} +9 -8
  171. package/chunks/{workspace-service-4I2QHDX4.js → workspace-service-PVI3VUNQ.js} +16 -15
  172. package/chunks/{workspace-skills-status-HVXNWVGR.js → workspace-skills-status-2Q5ZISO6.js} +13 -12
  173. package/chunks/{workspace-trust-reconciler-RDBBGMWP.js → workspace-trust-reconciler-NOILUH3C.js} +14 -13
  174. package/chunks/{write-file-RQ4DG5RY.js → write-file-MOM4JDHG.js} +8 -7
  175. package/chunks/{zh-72XPUG5P.js → zh-ARWDLDLR.js} +4 -0
  176. package/chunks/{zh-TW-LTB4SRH3.js → zh-TW-Y4RGI3P7.js} +4 -0
  177. package/chunks/{zoom-image-O5YCB7WN.js → zoom-image-E3VHRCFU.js} +2 -2
  178. package/cli.js +12 -12
  179. package/locales/ca.js +8 -0
  180. package/locales/de.js +8 -0
  181. package/locales/en.js +8 -0
  182. package/locales/fr.js +8 -0
  183. package/locales/ja.js +8 -0
  184. package/locales/pt.js +8 -0
  185. package/locales/ru.js +8 -0
  186. package/locales/zh-TW.js +7 -0
  187. package/locales/zh.js +7 -0
  188. package/package.json +3 -3
  189. package/web-shell/assets/{arc-Bd7d781i.js → arc-GpdmhIxr.js} +1 -1
  190. package/web-shell/assets/{architectureDiagram-3BPJPVTR-CpnOJqNE.js → architectureDiagram-3BPJPVTR-C-LhCgH_.js} +1 -1
  191. package/web-shell/assets/{blockDiagram-GPEHLZMM-NxVTiWnk.js → blockDiagram-GPEHLZMM-CzNdTCm-.js} +1 -1
  192. package/web-shell/assets/{c4Diagram-AAUBKEIU-BWT75l82.js → c4Diagram-AAUBKEIU-Ce7hbrRM.js} +1 -1
  193. package/web-shell/assets/channel-95y6Rcp3.js +1 -0
  194. package/web-shell/assets/{chunk-2J33WTMH-Dzz03hk6.js → chunk-2J33WTMH-BBSEn1PK.js} +1 -1
  195. package/web-shell/assets/{chunk-4BX2VUAB-DRF-egfm.js → chunk-4BX2VUAB-_llgjfe5.js} +1 -1
  196. package/web-shell/assets/{chunk-55IACEB6-Co15vq5x.js → chunk-55IACEB6-9fJZ_oZE.js} +1 -1
  197. package/web-shell/assets/{chunk-727SXJPM-DHSUk1J7.js → chunk-727SXJPM-DgEzQWOu.js} +1 -1
  198. package/web-shell/assets/{chunk-AQP2D5EJ-Br8u_E2R.js → chunk-AQP2D5EJ-B4RthUTc.js} +1 -1
  199. package/web-shell/assets/{chunk-FMBD7UC4-DXbPTnqF.js → chunk-FMBD7UC4-CDI-emMW.js} +1 -1
  200. package/web-shell/assets/{chunk-ND2GUHAM-BleQdi4d.js → chunk-ND2GUHAM-jM2-yOd8.js} +1 -1
  201. package/web-shell/assets/{chunk-QZHKN3VN-CqgBf-95.js → chunk-QZHKN3VN-XGZHlKPF.js} +1 -1
  202. package/web-shell/assets/classDiagram-4FO5ZUOK-pfzVkmjQ.js +1 -0
  203. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-pfzVkmjQ.js +1 -0
  204. package/web-shell/assets/{cose-bilkent-S5V4N54A-WS7b13Yg.js → cose-bilkent-S5V4N54A-90nbW1xQ.js} +1 -1
  205. package/web-shell/assets/{dagre-BM42HDAG-v_55ki8o.js → dagre-BM42HDAG-BtzlyqZ9.js} +1 -1
  206. package/web-shell/assets/{diagram-2AECGRRQ-DaYAjbdK.js → diagram-2AECGRRQ-DAaqGWaH.js} +1 -1
  207. package/web-shell/assets/{diagram-5GNKFQAL-D_Hy-L64.js → diagram-5GNKFQAL-CxlzSIFa.js} +1 -1
  208. package/web-shell/assets/{diagram-KO2AKTUF-dB06cZyD.js → diagram-KO2AKTUF-8kj-1H6u.js} +1 -1
  209. package/web-shell/assets/{diagram-LMA3HP47-DzSluD4F.js → diagram-LMA3HP47-6NhjFwRF.js} +1 -1
  210. package/web-shell/assets/{diagram-OG6HWLK6-Cvb6CeXQ.js → diagram-OG6HWLK6-Bn9kvInz.js} +1 -1
  211. package/web-shell/assets/{erDiagram-TEJ5UH35-7eB2Hmov.js → erDiagram-TEJ5UH35-CaRoGsAt.js} +1 -1
  212. package/web-shell/assets/{flowDiagram-I6XJVG4X-B08iGCw_.js → flowDiagram-I6XJVG4X-TkLweHdf.js} +1 -1
  213. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BgsrCHq-.js → ganttDiagram-6RSMTGT7-ruwhCKBl.js} +1 -1
  214. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DQLurQ2i.js → gitGraphDiagram-PVQCEYII-DNI_PxoU.js} +1 -1
  215. package/web-shell/assets/{index-DJ-z1Oba.js → index-T4KluHvu.js} +336 -336
  216. package/web-shell/assets/{index-Bi1dP2mU.css → index-WxSvj2tI.css} +2 -2
  217. package/web-shell/assets/{index-B_1Z0Mgr.js → index-p1gz-sxE.js} +1 -1
  218. package/web-shell/assets/{infoDiagram-5YYISTIA-DXZGO8qB.js → infoDiagram-5YYISTIA-DarXq1-A.js} +1 -1
  219. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-g7gbuH2w.js → ishikawaDiagram-YF4QCWOH-GxDaDlT0.js} +1 -1
  220. package/web-shell/assets/{journeyDiagram-JHISSGLW-euefICGn.js → journeyDiagram-JHISSGLW-mDEoGBzY.js} +1 -1
  221. package/web-shell/assets/{kanban-definition-UN3LZRKU-Dws8-mjG.js → kanban-definition-UN3LZRKU-Ds0t-Mup.js} +1 -1
  222. package/web-shell/assets/{linear-C63F0tyh.js → linear-05nJ0xZ7.js} +1 -1
  223. package/web-shell/assets/{mermaid.core-fLrhp_4-.js → mermaid.core-Bua24ThM.js} +5 -5
  224. package/web-shell/assets/{mindmap-definition-RKZ34NQL-qRkydfT-.js → mindmap-definition-RKZ34NQL-D_zRdvUS.js} +1 -1
  225. package/web-shell/assets/{pieDiagram-4H26LBE5-BZ0wQaKN.js → pieDiagram-4H26LBE5-DZHr1x16.js} +1 -1
  226. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Fjq6GbSZ.js → quadrantDiagram-W4KKPZXB-HA06Wf0h.js} +1 -1
  227. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CqWvjLHU.js → requirementDiagram-4Y6WPE33-DH3urmJf.js} +1 -1
  228. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-VcXX6PVZ.js → sankeyDiagram-5OEKKPKP-C4xgz0TT.js} +1 -1
  229. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-BJSRtxFr.js → sequenceDiagram-3UESZ5HK-DAUoZWgv.js} +1 -1
  230. package/web-shell/assets/{stateDiagram-AJRCARHV-Dt9zUwmZ.js → stateDiagram-AJRCARHV-v7NzXy4l.js} +1 -1
  231. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CtdFexEf.js +1 -0
  232. package/web-shell/assets/{timeline-definition-PNZ67QCA-DQwlNRws.js → timeline-definition-PNZ67QCA-B3GTYR2W.js} +1 -1
  233. package/web-shell/assets/{vennDiagram-CIIHVFJN-DwxjUEtQ.js → vennDiagram-CIIHVFJN-BWHjSPAq.js} +1 -1
  234. package/web-shell/assets/{wardley-L42UT6IY-D3QdMSpJ.js → wardley-L42UT6IY-m9r6IUBC.js} +1 -1
  235. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BddN8oK8.js → wardleyDiagram-YWT4CUSO-kT0FkVfK.js} +1 -1
  236. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BUNuBrRJ.js → xychartDiagram-2RQKCTM6-CYRm10z5.js} +1 -1
  237. package/web-shell/index.html +2 -2
  238. package/web-shell/assets/channel-A434sWK5.js +0 -1
  239. package/web-shell/assets/classDiagram-4FO5ZUOK-CwPuhldB.js +0 -1
  240. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwPuhldB.js +0 -1
  241. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CCxQt56w.js +0 -1
@@ -2,13 +2,13 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-KXWERR6P.js";
5
+ } from "./chunk-FV4TUUDE.js";
6
6
  import {
7
7
  SessionReferenceService,
8
8
  SessionService,
9
9
  readManyFiles,
10
10
  stripTerminalControlSequences
11
- } from "./chunk-UQDFEU47.js";
11
+ } from "./chunk-E2SYUEIA.js";
12
12
  import {
13
13
  emptyMcpResourceText,
14
14
  formatMcpResourceContents,
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-ZPJWUGCS.js";
17
17
  import {
18
18
  shouldRunVisionBridge
19
- } from "./chunk-4K3RV3OA.js";
19
+ } from "./chunk-JDJ7SC4E.js";
20
20
  import {
21
21
  Storage,
22
22
  getErrorMessage,
@@ -41,7 +41,7 @@ import {
41
41
  import {
42
42
  ProtocolTagSanitizedEvent,
43
43
  logProtocolTagSanitized
44
- } from "./chunk-4K3RV3OA.js";
44
+ } from "./chunk-JDJ7SC4E.js";
45
45
  import {
46
46
  reconcileMaxTokens
47
47
  } from "./chunk-ZBVS26BY.js";
@@ -2,17 +2,17 @@
2
2
  "use strict";
3
3
  import {
4
4
  performStandaloneUpdate
5
- } from "./chunk-YWMDTMAU.js";
5
+ } from "./chunk-THLV7YGY.js";
6
6
  import {
7
7
  updateEventEmitter
8
8
  } from "./chunk-YAF2MQZ6.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-KXWERR6P.js";
11
+ } from "./chunk-FV4TUUDE.js";
12
12
  import {
13
13
  getInstallationInfo,
14
14
  resolveUpdateCommand
15
- } from "./chunk-FXVHVCNA.js";
15
+ } from "./chunk-RNKGMZEW.js";
16
16
  import {
17
17
  createDebugLogger
18
18
  } from "./chunk-3RXUYQJI.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  getEffectiveSupportedModes
5
- } from "./chunk-LZV2BZPL.js";
5
+ } from "./chunk-DJA7YBLJ.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  parseRule
5
- } from "./chunk-UQDFEU47.js";
5
+ } from "./chunk-E2SYUEIA.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  isGitRepository
5
- } from "./chunk-UQDFEU47.js";
5
+ } from "./chunk-E2SYUEIA.js";
6
6
  import {
7
7
  createDebugLogger
8
8
  } from "./chunk-3RXUYQJI.js";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-6O5DVH27.js";
6
6
  import {
7
7
  isInternalPromptId
8
- } from "./chunk-4K3RV3OA.js";
8
+ } from "./chunk-JDJ7SC4E.js";
9
9
  import {
10
10
  createDebugLogger
11
11
  } from "./chunk-3RXUYQJI.js";
@@ -64,7 +64,7 @@ async function runExitCleanup(options = {}) {
64
64
  }
65
65
  __name(runExitCleanup, "runExitCleanup");
66
66
  async function cleanupCheckpoints() {
67
- const { Storage } = await import("./deferred-core-runtime-U36OOOKE.js");
67
+ const { Storage } = await import("./deferred-core-runtime-ZQ4JIAJD.js");
68
68
  const storage = new Storage(process.cwd());
69
69
  const tempDir = storage.getProjectTempDir();
70
70
  const checkpointsDir = join(tempDir, "checkpoints");
@@ -8,10 +8,10 @@ import {
8
8
  } from "./chunk-3Z43GZUQ.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-KXWERR6P.js";
11
+ } from "./chunk-FV4TUUDE.js";
12
12
  import {
13
13
  So
14
- } from "./chunk-UQDFEU47.js";
14
+ } from "./chunk-E2SYUEIA.js";
15
15
  import {
16
16
  createDebugLogger
17
17
  } from "./chunk-3RXUYQJI.js";
@@ -407,18 +407,18 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
407
407
  try {
408
408
  if (authType === "openai" /* USE_OPENAI */) {
409
409
  loadBaseGenerator = /* @__PURE__ */ __name(async () => {
410
- const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-ZAKS5A6P.js");
410
+ const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-PGFSOMIQ.js");
411
411
  return createOpenAIContentGenerator(generatorConfig, config);
412
412
  }, "loadBaseGenerator");
413
413
  } else if (authType === "qwen-oauth" /* QWEN_OAUTH */) {
414
- const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-MNU425VE.js");
414
+ const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-IOAXKJ3L.js");
415
415
  try {
416
416
  const qwenClient = await getQwenOauthClient(
417
417
  config,
418
418
  isInitialAuth ? { requireCachedCredentials: true } : void 0
419
419
  );
420
420
  loadBaseGenerator = /* @__PURE__ */ __name(async () => {
421
- const { QwenContentGenerator } = await import("./qwenContentGenerator-S3H6PIC4.js");
421
+ const { QwenContentGenerator } = await import("./qwenContentGenerator-QC3KSHSX.js");
422
422
  return new QwenContentGenerator(qwenClient, generatorConfig, config);
423
423
  }, "loadBaseGenerator");
424
424
  } catch (error) {
@@ -429,12 +429,12 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
429
429
  }
430
430
  } else if (authType === "anthropic" /* USE_ANTHROPIC */) {
431
431
  loadBaseGenerator = /* @__PURE__ */ __name(async () => {
432
- const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-WCBYB6JG.js");
432
+ const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-3CAHEZBM.js");
433
433
  return createAnthropicContentGenerator(generatorConfig, config);
434
434
  }, "loadBaseGenerator");
435
435
  } else if (authType === "gemini" /* USE_GEMINI */ || authType === "vertex-ai" /* USE_VERTEX_AI */) {
436
436
  loadBaseGenerator = /* @__PURE__ */ __name(async () => {
437
- const { createGeminiContentGenerator } = await import("./geminiContentGenerator-NFSYJ4HA.js");
437
+ const { createGeminiContentGenerator } = await import("./geminiContentGenerator-M3HJTHKR.js");
438
438
  return createGeminiContentGenerator(generatorConfig, config);
439
439
  }, "loadBaseGenerator");
440
440
  } else {
@@ -450,7 +450,7 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
450
450
  try {
451
451
  const [baseGenerator, { LoggingContentGenerator }] = await Promise.all([
452
452
  loadBaseGenerator(),
453
- import("./loggingContentGenerator-7TFESRG5.js")
453
+ import("./loggingContentGenerator-2JEFU25T.js")
454
454
  ]);
455
455
  return new LoggingContentGenerator(
456
456
  baseGenerator,
@@ -8,16 +8,16 @@ import {
8
8
  initializeI18n,
9
9
  resolveLanguageSetting,
10
10
  t
11
- } from "./chunk-KXWERR6P.js";
11
+ } from "./chunk-FV4TUUDE.js";
12
12
  import {
13
13
  IdeClient
14
- } from "./chunk-UQDFEU47.js";
14
+ } from "./chunk-E2SYUEIA.js";
15
15
  import {
16
16
  AuthEvent,
17
17
  IdeConnectionEvent,
18
18
  logAuth,
19
19
  logIdeConnection
20
- } from "./chunk-4K3RV3OA.js";
20
+ } from "./chunk-JDJ7SC4E.js";
21
21
  import {
22
22
  getErrorMessage
23
23
  } from "./chunk-3RXUYQJI.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-MR3PXB6E.js";
11
11
  import {
12
12
  ideContextStore
13
- } from "./chunk-UQDFEU47.js";
13
+ } from "./chunk-E2SYUEIA.js";
14
14
  import {
15
15
  require_proper_lockfile
16
16
  } from "./chunk-KRXPRVGL.js";
@@ -9,13 +9,13 @@ import {
9
9
  staleArgsWarning,
10
10
  validateAuthMethod,
11
11
  writeSkillArgs
12
- } from "./chunk-QPSYIV2O.js";
12
+ } from "./chunk-2T3RYG4L.js";
13
13
  import {
14
14
  isKittyProtocolEnabled
15
15
  } from "./chunk-NYX53SV4.js";
16
16
  import {
17
17
  contextCommand
18
- } from "./chunk-SKSF3LGQ.js";
18
+ } from "./chunk-C5YFS6VR.js";
19
19
  import {
20
20
  calculateCost,
21
21
  computeSessionStats,
@@ -24,20 +24,20 @@ import {
24
24
  findInlineMathExpressions,
25
25
  getSystemInfoFields,
26
26
  levelLabel
27
- } from "./chunk-LZV2BZPL.js";
27
+ } from "./chunk-DJA7YBLJ.js";
28
28
  import {
29
29
  VSCODE_SHIFT_ENTER_SEQUENCE,
30
30
  writeOsc52
31
31
  } from "./chunk-3LGZEYOF.js";
32
32
  import {
33
33
  rollbackStandaloneUpdate
34
- } from "./chunk-YWMDTMAU.js";
34
+ } from "./chunk-THLV7YGY.js";
35
35
  import {
36
36
  themeManager
37
37
  } from "./chunk-KKN2IE7Q.js";
38
38
  import {
39
39
  getErrorMessage as getErrorMessage2
40
- } from "./chunk-EGYJRIDF.js";
40
+ } from "./chunk-EJXATV5R.js";
41
41
  import {
42
42
  GITHUB_WORKFLOW_PATHS,
43
43
  INSIGHT_CSS,
@@ -51,7 +51,7 @@ import {
51
51
  toJson,
52
52
  toJsonl,
53
53
  toMarkdown
54
- } from "./chunk-VUNRNRN6.js";
54
+ } from "./chunk-DHNFB7NC.js";
55
55
  import {
56
56
  stripUnsafeCharacters,
57
57
  toCodePoints
@@ -63,12 +63,12 @@ import {
63
63
  isVoiceEnabled,
64
64
  readVoiceMode,
65
65
  readVoiceModel
66
- } from "./chunk-BKGA75MU.js";
66
+ } from "./chunk-FPPVCCAH.js";
67
67
  import {
68
68
  getExtendedSystemInfo,
69
69
  getGitVersion,
70
70
  getNpmVersion
71
- } from "./chunk-QWDVZH24.js";
71
+ } from "./chunk-XPAY4EMH.js";
72
72
  import {
73
73
  formatDuration,
74
74
  formatTokenCount
@@ -76,7 +76,7 @@ import {
76
76
  import {
77
77
  isInlineModelOverrideAllowed,
78
78
  parseAcpModelOption
79
- } from "./chunk-5VYFXHY2.js";
79
+ } from "./chunk-IMGNGOGC.js";
80
80
  import {
81
81
  OUTPUT_LANGUAGE_AUTO,
82
82
  getAllSettingKeys,
@@ -88,7 +88,7 @@ import {
88
88
  resolveOutputLanguageOrPreserveAuto,
89
89
  validateSettingValue,
90
90
  writeOutputLanguageAndRegisterPath
91
- } from "./chunk-22YFMJBW.js";
91
+ } from "./chunk-KB6VSG2U.js";
92
92
  import {
93
93
  SUPPORTED_LANGUAGES,
94
94
  getCurrentLanguage,
@@ -96,14 +96,14 @@ import {
96
96
  resolveSupportedLanguage,
97
97
  setLanguageAsync,
98
98
  t
99
- } from "./chunk-KXWERR6P.js";
99
+ } from "./chunk-FV4TUUDE.js";
100
100
  import {
101
101
  getInstallationInfo
102
- } from "./chunk-FXVHVCNA.js";
102
+ } from "./chunk-RNKGMZEW.js";
103
103
  import {
104
104
  isFolderTrustEnabled,
105
105
  loadTrustedFolders
106
- } from "./chunk-M5LIY7Y6.js";
106
+ } from "./chunk-URVJ4AZC.js";
107
107
  import {
108
108
  require_strip_json_comments
109
109
  } from "./chunk-ALGGS7UH.js";
@@ -174,13 +174,13 @@ import {
174
174
  runForkedAgent,
175
175
  tryGenerateSessionTitle,
176
176
  unregisterGoalHook
177
- } from "./chunk-UQDFEU47.js";
177
+ } from "./chunk-E2SYUEIA.js";
178
178
  import {
179
179
  external_exports
180
180
  } from "./chunk-H6XPXXMH.js";
181
181
  import {
182
182
  resolveModelId
183
- } from "./chunk-XUMAD5IT.js";
183
+ } from "./chunk-DZPOYHBT.js";
184
184
  import {
185
185
  getAutoSkillCuratorStatus,
186
186
  parse,
@@ -195,11 +195,11 @@ import {
195
195
  } from "./chunk-A5YZ3FA2.js";
196
196
  import {
197
197
  APPROVAL_MODES
198
- } from "./chunk-TZTBZ25J.js";
198
+ } from "./chunk-LLMGP5IC.js";
199
199
  import {
200
200
  FORK_SUBAGENT_TYPE,
201
201
  stripStartupContext
202
- } from "./chunk-SRY26X4H.js";
202
+ } from "./chunk-7UXI6P72.js";
203
203
  import {
204
204
  applySkillAllowedTools,
205
205
  buildSkillLlmContent
@@ -213,7 +213,7 @@ import {
213
213
  } from "./chunk-DGEIYUC3.js";
214
214
  import {
215
215
  resolveOpenAILogDir
216
- } from "./chunk-EIMKVOSF.js";
216
+ } from "./chunk-SBBHZ3YT.js";
217
217
  import {
218
218
  IdeConnectionEvent,
219
219
  formatTokenUsageSummaryAsCsv,
@@ -227,7 +227,7 @@ import {
227
227
  recordSkillInvocation,
228
228
  runSideQuery,
229
229
  uiTelemetryService
230
- } from "./chunk-4K3RV3OA.js";
230
+ } from "./chunk-JDJ7SC4E.js";
231
231
  import {
232
232
  getAutoMemoryRoot
233
233
  } from "./chunk-E4WHKETF.js";
@@ -248,7 +248,7 @@ import {
248
248
  isCpuProfileRecording,
249
249
  startCpuProfile,
250
250
  stopCpuProfile
251
- } from "./chunk-R7XNRHYD.js";
251
+ } from "./chunk-KHSJSMFS.js";
252
252
  import {
253
253
  init_esbuild_shims
254
254
  } from "./chunk-5O2XNYP6.js";
@@ -1945,7 +1945,7 @@ var approvalModeCommand = {
1945
1945
  };
1946
1946
  }
1947
1947
  }
1948
- const autoModeNotices = mode === "auto" /* AUTO */ && priorMode !== "auto" /* AUTO */ && config ? await import("./useAutoAcceptIndicator-ZRV56GVP.js") : void 0;
1948
+ const autoModeNotices = mode === "auto" /* AUTO */ && priorMode !== "auto" /* AUTO */ && config ? await import("./useAutoAcceptIndicator-4C2KM345.js") : void 0;
1949
1949
  if (config) {
1950
1950
  try {
1951
1951
  config.setApprovalMode(mode);
@@ -6532,12 +6532,12 @@ var goalCommand = {
6532
6532
  kind: "built-in" /* BUILT_IN */,
6533
6533
  supportedModes: ["interactive", "non_interactive", "acp"],
6534
6534
  action: /* @__PURE__ */ __name(async (context, args) => {
6535
- if (context.executionMode !== "interactive") {
6535
+ if (context.executionMode === "acp") {
6536
6536
  const operation2 = parseGoalCommand(args);
6537
6537
  if (operation2.kind === "error") return errorMessage(operation2.message);
6538
6538
  if (operation2.kind !== "status" && operation2.kind !== "clear" && operation2.kind !== "set") {
6539
6539
  return errorMessage(
6540
- `'/goal ${operation2.kind}' is only available in interactive mode.`
6540
+ `'/goal ${operation2.kind}' is not available in ACP mode.`
6541
6541
  );
6542
6542
  }
6543
6543
  const explicitSet = operation2.kind === "set";
@@ -6682,7 +6682,7 @@ var expandNowCommand = {
6682
6682
  content: t("History is already expanded in this session.")
6683
6683
  };
6684
6684
  }
6685
- const { expandCollapsedHistory } = await import("./resumeHistoryUtils-4QAMC2S6.js");
6685
+ const { expandCollapsedHistory } = await import("./resumeHistoryUtils-O62RDCZ3.js");
6686
6686
  const updated = expandCollapsedHistory(history);
6687
6687
  loadHistory(updated);
6688
6688
  refreshStatic();
@@ -11143,6 +11143,59 @@ var statsCommand = {
11143
11143
  init_esbuild_shims();
11144
11144
  import * as fsPromises from "fs/promises";
11145
11145
  import path12 from "path";
11146
+ var realpathNearestExisting3 = /* @__PURE__ */ __name(async (targetPath) => {
11147
+ let currentPath = targetPath;
11148
+ for (; ; ) {
11149
+ try {
11150
+ return await fsPromises.realpath(currentPath);
11151
+ } catch (error) {
11152
+ if (error.code !== "ENOENT") {
11153
+ throw error;
11154
+ }
11155
+ const parentPath = path12.dirname(currentPath);
11156
+ if (parentPath === currentPath) {
11157
+ return currentPath;
11158
+ }
11159
+ currentPath = parentPath;
11160
+ }
11161
+ }
11162
+ }, "realpathNearestExisting");
11163
+ var assertLeafNotSymlinkEscape = /* @__PURE__ */ __name(async (filePath, realProjectRoot) => {
11164
+ let current = filePath;
11165
+ const seen = /* @__PURE__ */ new Set();
11166
+ for (; ; ) {
11167
+ const linkStat = await fsPromises.lstat(current).catch(() => null);
11168
+ if (!linkStat?.isSymbolicLink()) break;
11169
+ if (seen.has(current)) {
11170
+ throw new Error(t("Summary path must be within the project root."));
11171
+ }
11172
+ seen.add(current);
11173
+ const linkTarget = await fsPromises.readlink(current);
11174
+ current = path12.isAbsolute(linkTarget) ? linkTarget : path12.resolve(path12.dirname(current), linkTarget);
11175
+ }
11176
+ const realTarget = await realpathNearestExisting3(current);
11177
+ if (!isSubpath(realProjectRoot, realTarget)) {
11178
+ throw new Error(t("Summary path must be within the project root."));
11179
+ }
11180
+ }, "assertLeafNotSymlinkEscape");
11181
+ var SUMMARY_FOOTER_PREFIX = "\n---\n\n## Summary Metadata\n**Update time**: ";
11182
+ var buildSummaryFooter = /* @__PURE__ */ __name((timestamp) => `${SUMMARY_FOOTER_PREFIX}${timestamp}
11183
+ `, "buildSummaryFooter");
11184
+ var readSummaryTail = /* @__PURE__ */ __name(async (p, bytes = 4096) => {
11185
+ const handle = await fsPromises.open(p, "r");
11186
+ try {
11187
+ const { size } = await handle.stat();
11188
+ const length = Math.min(size, bytes);
11189
+ const buffer = Buffer.alloc(length);
11190
+ await handle.read(buffer, 0, length, Math.max(0, size - length));
11191
+ return buffer.toString("utf8");
11192
+ } finally {
11193
+ await handle.close();
11194
+ }
11195
+ }, "readSummaryTail");
11196
+ var isGeneratedSummary = /* @__PURE__ */ __name((content) => new RegExp(
11197
+ `${SUMMARY_FOOTER_PREFIX.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}[^\\n]*\\n?$`
11198
+ ).test(content.replace(/\r\n/g, "\n")), "isGeneratedSummary");
11146
11199
  var summaryCommand = {
11147
11200
  name: "summary",
11148
11201
  get description() {
@@ -11150,9 +11203,10 @@ var summaryCommand = {
11150
11203
  "Generate a project summary and save it to .qwen/PROJECT_SUMMARY.md"
11151
11204
  );
11152
11205
  },
11206
+ argumentHint: "[path]",
11153
11207
  kind: "built-in" /* BUILT_IN */,
11154
11208
  supportedModes: ["interactive", "non_interactive", "acp"],
11155
- action: /* @__PURE__ */ __name(async (context) => {
11209
+ action: /* @__PURE__ */ __name(async (context, args) => {
11156
11210
  const { config } = context.services;
11157
11211
  const { ui } = context;
11158
11212
  const executionMode = context.executionMode ?? "interactive";
@@ -11233,25 +11287,111 @@ var summaryCommand = {
11233
11287
  }
11234
11288
  return result.text;
11235
11289
  }, "generateSummaryMarkdown");
11236
- const saveSummaryToDisk = /* @__PURE__ */ __name(async (markdownSummary) => {
11290
+ const resolveSummaryTarget = /* @__PURE__ */ __name(async () => {
11237
11291
  const projectRoot = config.getProjectRoot();
11238
- const qwenDir = path12.join(projectRoot, ".qwen");
11239
- try {
11240
- await fsPromises.mkdir(qwenDir, { recursive: true });
11241
- } catch (_err) {
11292
+ const defaultSummaryPath = path12.join(
11293
+ projectRoot,
11294
+ ".qwen",
11295
+ "PROJECT_SUMMARY.md"
11296
+ );
11297
+ const customPath = args?.trim();
11298
+ if (!customPath) {
11299
+ return {
11300
+ summaryPath: defaultSummaryPath,
11301
+ filePathForDisplay: ".qwen/PROJECT_SUMMARY.md",
11302
+ isDefaultTarget: true,
11303
+ realProjectRoot: await fsPromises.realpath(projectRoot)
11304
+ };
11305
+ }
11306
+ const resolved = resolvePath(projectRoot, customPath);
11307
+ if (!isSubpath(projectRoot, resolved)) {
11308
+ throw new Error(t("Summary path must be within the project root."));
11309
+ }
11310
+ const realProjectRoot = await fsPromises.realpath(projectRoot);
11311
+ await assertLeafNotSymlinkEscape(resolved, realProjectRoot);
11312
+ const realResolved = await realpathNearestExisting3(resolved);
11313
+ if (!isSubpath(realProjectRoot, realResolved)) {
11314
+ throw new Error(t("Summary path must be within the project root."));
11315
+ }
11316
+ const hasTrailingSep = customPath.endsWith("/") || customPath.endsWith(path12.sep);
11317
+ const resolvedStat = await fsPromises.stat(resolved).catch(() => null);
11318
+ if (hasTrailingSep && resolvedStat?.isFile()) {
11319
+ throw new Error(
11320
+ t(
11321
+ "Summary path ends with a separator but is an existing file: {{path}}",
11322
+ { path: customPath }
11323
+ )
11324
+ );
11242
11325
  }
11243
- const summaryPath = path12.join(qwenDir, "PROJECT_SUMMARY.md");
11326
+ const isDir = hasTrailingSep || (resolvedStat?.isDirectory() ?? false);
11327
+ const summaryPath = isDir ? path12.join(resolved, "PROJECT_SUMMARY.md") : resolved;
11328
+ if (isDir) {
11329
+ await assertLeafNotSymlinkEscape(summaryPath, realProjectRoot);
11330
+ }
11331
+ const filePathForDisplay = (path12.isAbsolute(customPath) ? summaryPath : path12.relative(projectRoot, summaryPath)).replaceAll(path12.sep, "/");
11332
+ const isDefaultTarget = summaryPath === defaultSummaryPath;
11333
+ const existingStat = await fsPromises.stat(summaryPath).catch(() => null);
11334
+ if (existingStat?.isDirectory()) {
11335
+ throw new Error(
11336
+ t("Summary path resolves to an existing directory: {{path}}", {
11337
+ path: filePathForDisplay
11338
+ })
11339
+ );
11340
+ }
11341
+ if (!isDefaultTarget && existingStat?.isFile() && existingStat.size > 0) {
11342
+ const existing = await readSummaryTail(summaryPath).catch(() => "");
11343
+ if (!isGeneratedSummary(existing)) {
11344
+ throw new Error(
11345
+ t(
11346
+ "Summary path already exists and is not a generated summary: {{path}}",
11347
+ { path: filePathForDisplay }
11348
+ )
11349
+ );
11350
+ }
11351
+ }
11352
+ return {
11353
+ summaryPath,
11354
+ filePathForDisplay,
11355
+ isDefaultTarget,
11356
+ realProjectRoot
11357
+ };
11358
+ }, "resolveSummaryTarget");
11359
+ const saveSummaryToDisk = /* @__PURE__ */ __name(async (markdownSummary, target) => {
11244
11360
  const summaryContent = `${markdownSummary}
11245
-
11246
- ---
11247
-
11248
- ## Summary Metadata
11249
- **Update time**: ${(/* @__PURE__ */ new Date()).toISOString()}
11250
- `;
11251
- await fsPromises.writeFile(summaryPath, summaryContent, "utf8");
11361
+ ${buildSummaryFooter(
11362
+ (/* @__PURE__ */ new Date()).toISOString()
11363
+ )}`;
11364
+ if (!target.isDefaultTarget) {
11365
+ await assertLeafNotSymlinkEscape(
11366
+ target.summaryPath,
11367
+ target.realProjectRoot
11368
+ );
11369
+ }
11370
+ const preWriteStat = await fsPromises.stat(target.summaryPath).catch(() => null);
11371
+ if (!target.isDefaultTarget && preWriteStat?.isFile() && preWriteStat.size > 0) {
11372
+ const existing = await readSummaryTail(target.summaryPath).catch(
11373
+ () => ""
11374
+ );
11375
+ if (!isGeneratedSummary(existing)) {
11376
+ throw new Error(
11377
+ t(
11378
+ "Summary path already exists and is not a generated summary: {{path}}",
11379
+ { path: target.filePathForDisplay }
11380
+ )
11381
+ );
11382
+ }
11383
+ }
11384
+ await fsPromises.mkdir(path12.dirname(target.summaryPath), {
11385
+ recursive: true,
11386
+ ...target.isDefaultTarget ? { mode: 448 } : {}
11387
+ });
11388
+ await fsPromises.writeFile(target.summaryPath, summaryContent, {
11389
+ encoding: "utf8",
11390
+ mode: 384
11391
+ });
11252
11392
  return {
11253
- filePathForDisplay: ".qwen/PROJECT_SUMMARY.md",
11254
- fullPath: summaryPath
11393
+ filePathForDisplay: target.filePathForDisplay,
11394
+ fullPath: target.summaryPath
11255
11395
  };
11256
11396
  }, "saveSummaryToDisk");
11257
11397
  const emitInteractivePending = /* @__PURE__ */ __name((stage) => {
@@ -11325,13 +11465,17 @@ var summaryCommand = {
11325
11465
  };
11326
11466
  }, "returnNoConversationMessage");
11327
11467
  const executeSummaryGeneration = /* @__PURE__ */ __name(async (history2) => {
11468
+ const target = await resolveSummaryTarget();
11328
11469
  emitInteractivePending("generating");
11329
11470
  const markdownSummary = await generateSummaryMarkdown(history2);
11330
11471
  if (abortSignal?.aborted) {
11331
11472
  throw new DOMException("Summary generation cancelled.", "AbortError");
11332
11473
  }
11333
11474
  emitInteractivePending("saving");
11334
- const { filePathForDisplay } = await saveSummaryToDisk(markdownSummary);
11475
+ const { filePathForDisplay } = await saveSummaryToDisk(
11476
+ markdownSummary,
11477
+ target
11478
+ );
11335
11479
  completeInteractive(filePathForDisplay);
11336
11480
  return { markdownSummary, filePathForDisplay };
11337
11481
  }, "executeSummaryGeneration");
@@ -11385,7 +11529,7 @@ var summaryCommand = {
11385
11529
  return {
11386
11530
  type: "message",
11387
11531
  messageType: "error",
11388
- content: formatErrorMessage3(error)
11532
+ content: executionMode === "interactive" ? "" : formatErrorMessage3(error)
11389
11533
  };
11390
11534
  }
11391
11535
  }, "action")
@@ -13750,10 +13894,10 @@ var updateCommand = {
13750
13894
  { performStandaloneUpdate },
13751
13895
  installationInfo
13752
13896
  ] = await Promise.all([
13753
- import("./updateCheck-7EG4BLBH.js"),
13754
- import("./processUtils-2CSVE5BW.js"),
13755
- import("./standalone-update-E4V5V7WT.js"),
13756
- import("./installationInfo-2LIKCNVX.js")
13897
+ import("./updateCheck-42SPCLH7.js"),
13898
+ import("./processUtils-6BCPCJZW.js"),
13899
+ import("./standalone-update-Y5JB4S2K.js"),
13900
+ import("./installationInfo-IWMM6DPV.js")
13757
13901
  ]);
13758
13902
  const { formatUpdateInstructions, getInstallationInfo: getInstallationInfo2 } = installationInfo;
13759
13903
  const settings = context.services.settings;
@@ -15307,6 +15451,12 @@ function handleCommandResult(result, outputHistoryItems) {
15307
15451
  type: "stream_messages",
15308
15452
  messages: result.messages
15309
15453
  };
15454
+ case "goal_control":
15455
+ return {
15456
+ type: "goal_control",
15457
+ operation: result.operation,
15458
+ response: result.response
15459
+ };
15310
15460
  /**
15311
15461
  * Currently return types below are never generated due to the
15312
15462
  * whitelist of allowed slash commands in ACP and non-interactive mode.
@@ -15348,12 +15498,6 @@ function handleCommandResult(result, outputHistoryItems) {
15348
15498
  reason: "Action confirmation is not supported in non-interactive mode. Commands requiring confirmation cannot be executed.",
15349
15499
  originalType: "confirm_action"
15350
15500
  };
15351
- case "goal_control":
15352
- return {
15353
- type: "unsupported",
15354
- reason: "Goal control is not supported in non-interactive mode yet.",
15355
- originalType: "goal_control"
15356
- };
15357
15501
  default: {
15358
15502
  const _exhaustive = result;
15359
15503
  return {
@@ -2,16 +2,16 @@
2
2
  "use strict";
3
3
  import {
4
4
  useKeypress
5
- } from "./chunk-Q3G5L5KF.js";
5
+ } from "./chunk-OOPFAIWP.js";
6
6
  import {
7
7
  require_react
8
8
  } from "./chunk-5QWWOFGG.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-KXWERR6P.js";
11
+ } from "./chunk-FV4TUUDE.js";
12
12
  import {
13
13
  APPROVAL_MODES
14
- } from "./chunk-TZTBZ25J.js";
14
+ } from "./chunk-LLMGP5IC.js";
15
15
  import {
16
16
  init_esbuild_shims
17
17
  } from "./chunk-5O2XNYP6.js";