@qwen-code/qwen-code 0.21.13 → 0.21.14-nightly.20260822.7a4566cb3b

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 (400) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +15 -7
  2. package/bundled/qc-helper/docs/extension/introduction.md +2 -0
  3. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  4. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
  5. package/bundled/qc-helper/docs/features/code-review.md +25 -3
  6. package/bundled/qc-helper/docs/features/commands.md +120 -8
  7. package/bundled/qc-helper/docs/features/markdown-rendering.md +6 -0
  8. package/bundled/qc-helper/docs/features/sub-agents.md +3 -3
  9. package/bundled/qc-helper/docs/features/terminal-images.md +50 -0
  10. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
  11. package/bundled/qc-helper/docs/qwen-serve.md +21 -4
  12. package/bundled/review/SKILL.md +113 -62
  13. package/chunks/MaxSizedBox-NCWYES5B.js +98 -0
  14. package/chunks/{StandaloneSessionPicker-KEGXNUG6.js → StandaloneSessionPicker-A4V4F64Y.js} +80 -79
  15. package/chunks/{acp-startup-profiler-NMDXYGDN.js → acp-startup-profiler-DDVSJKJK.js} +2 -2
  16. package/chunks/{acpAgent-XPES32S7.js → acpAgent-YYRH7HTQ.js} +1094 -278
  17. package/chunks/{agent-DPTOZFEM.js → agent-NEM254CJ.js} +52 -51
  18. package/chunks/agent-headless-AVFYIRPV.js +88 -0
  19. package/chunks/{anthropicContentGenerator-G7BVXTKN.js → anthropicContentGenerator-IWFTSBSV.js} +25 -25
  20. package/chunks/{artifact-tool-GEXTOPVO.js → artifact-tool-SBXMTVCB.js} +3 -3
  21. package/chunks/{askUserQuestion-B33XRSB7.js → askUserQuestion-KEQJRFD6.js} +3 -3
  22. package/chunks/{bridge-YNQBAA4Z.js → bridge-2CGOUO25.js} +59 -57
  23. package/chunks/{ca-4CQ6MYNQ.js → ca-SLZJD6QH.js} +8 -0
  24. package/chunks/{channel-management-service-GWY2GAIC.js → channel-management-service-FUJ2EFTF.js} +1 -1
  25. package/chunks/channel-settings-store-AZKNHHDC.js +103 -0
  26. package/chunks/{channel-worker-group-7LXCMZ77.js → channel-worker-group-CTE54QL6.js} +8 -7
  27. package/chunks/{channel-worker-manager-RYEME4ZZ.js → channel-worker-manager-4EHTD3T4.js} +8 -7
  28. package/chunks/{channel-worker-supervisor-OEVWBHGT.js → channel-worker-supervisor-F6I6WSWW.js} +6 -5
  29. package/chunks/{chunk-KD5BOPLP.js → chunk-2G4QF4VI.js} +125 -31
  30. package/chunks/{chunk-BHILXOC3.js → chunk-2MTIAN5Z.js} +3 -3
  31. package/chunks/{chunk-A4QRWUDE.js → chunk-2NWPB6T4.js} +6 -6
  32. package/chunks/{chunk-KV27IEHM.js → chunk-2TRNCJK4.js} +1 -1
  33. package/chunks/{chunk-EL5SXY3T.js → chunk-32CHFLGV.js} +198 -23
  34. package/chunks/{chunk-5CVO7YES.js → chunk-36OF5PRW.js} +1 -1
  35. package/chunks/{chunk-X26JYGTD.js → chunk-37BZSWEV.js} +1 -1
  36. package/chunks/{chunk-WFSTRPRO.js → chunk-3CLIDIVQ.js} +3 -3
  37. package/chunks/{chunk-A267JX7H.js → chunk-3HWN4E7N.js} +18 -18
  38. package/chunks/{chunk-ZYYTZUI2.js → chunk-3LYGXZ2H.js} +3 -3
  39. package/chunks/chunk-3SIGAHUX.js +3969 -0
  40. package/chunks/{chunk-BVJS5BSP.js → chunk-3XD4PT3B.js} +1 -1
  41. package/chunks/{chunk-6QFDQMQX.js → chunk-3ZFJUBTP.js} +1 -1
  42. package/chunks/{chunk-HUTNYWBG.js → chunk-45UD2TU4.js} +19 -11
  43. package/chunks/{chunk-4W5U2TUT.js → chunk-4F5WV4RF.js} +4 -4
  44. package/chunks/{chunk-I3G5JWBV.js → chunk-4GP3MNQ2.js} +2695 -1524
  45. package/chunks/{chunk-V26NVGAU.js → chunk-4MIDDJLJ.js} +8 -3
  46. package/chunks/{chunk-TS6625XH.js → chunk-5MK45KZ3.js} +9 -5
  47. package/chunks/{chunk-V57QC6WW.js → chunk-5OTMZVPL.js} +11 -9
  48. package/chunks/{chunk-MC4TLKEI.js → chunk-5PHLBWBL.js} +3 -3
  49. package/chunks/chunk-64LXOKG4.js +367 -0
  50. package/chunks/{chunk-6HY6IF3Z.js → chunk-6NFAEG54.js} +22 -2
  51. package/chunks/{chunk-TIGA2IVL.js → chunk-6NJIPX6W.js} +10 -298
  52. package/chunks/{chunk-MRMJCLIY.js → chunk-6RB2S4QP.js} +3 -3
  53. package/chunks/chunk-6S2OXVJT.js +369 -0
  54. package/chunks/{chunk-O4D7SPJN.js → chunk-6U46RZ25.js} +3 -3
  55. package/chunks/{chunk-JOOFMXGF.js → chunk-6UDHEIUT.js} +6 -6
  56. package/chunks/{chunk-VOQXFAY5.js → chunk-74TONY4F.js} +286 -0
  57. package/chunks/{chunk-LJQAUZMR.js → chunk-7CPJMZVJ.js} +1627 -180
  58. package/chunks/{chunk-T3CHYWJZ.js → chunk-7E7UCJHS.js} +100 -4
  59. package/chunks/{chunk-YZHRN3CF.js → chunk-7IV52LTO.js} +2 -2
  60. package/chunks/{chunk-4PKCUT7F.js → chunk-7JDGSJQH.js} +7 -7
  61. package/chunks/{chunk-GO7STP6N.js → chunk-7VITNOH6.js} +4 -4
  62. package/chunks/{chunk-CU6GJD55.js → chunk-7WLFSDLG.js} +1 -1
  63. package/chunks/{chunk-4WKAA4KS.js → chunk-A4N4FTMH.js} +1 -11
  64. package/chunks/{chunk-BUQDLC2G.js → chunk-A5F2YNO6.js} +3 -3
  65. package/chunks/{chunk-OY5RNSV4.js → chunk-AGCLK4G7.js} +3 -3
  66. package/chunks/{chunk-IA2K2HJE.js → chunk-AP3B7LKD.js} +2 -2
  67. package/chunks/{chunk-Y3YCSWG5.js → chunk-AZF6SME3.js} +2 -2
  68. package/chunks/{chunk-QFJ5JHQR.js → chunk-C72BXMJ5.js} +1 -1
  69. package/chunks/chunk-CETB5XY4.js +3654 -0
  70. package/chunks/{chunk-AA2BEKV3.js → chunk-CTAP6PO3.js} +3 -3
  71. package/chunks/{chunk-MS7GNABG.js → chunk-CXJHQVEK.js} +8 -0
  72. package/chunks/{chunk-QF2NHSPB.js → chunk-D534POS2.js} +274 -225
  73. package/chunks/{chunk-UKMR3CKV.js → chunk-D7QQ6RUB.js} +24 -9
  74. package/chunks/{chunk-DXIBNLBZ.js → chunk-DB2OKNTU.js} +2 -2
  75. package/chunks/{chunk-DGZEMW5R.js → chunk-DJEHYM4H.js} +3 -3
  76. package/chunks/{chunk-O565M6A4.js → chunk-DRVS6K7A.js} +260 -16
  77. package/chunks/{chunk-U3VNBPUO.js → chunk-DV4375RD.js} +5 -5
  78. package/chunks/{chunk-OXCMMLED.js → chunk-E63A23D7.js} +3 -3
  79. package/chunks/{chunk-4NFY2S7N.js → chunk-E7REAOTN.js} +15 -0
  80. package/chunks/{chunk-6ORZ2EDC.js → chunk-EW2IQ3ID.js} +3 -3
  81. package/chunks/{chunk-DGK6P3BQ.js → chunk-EXVK5R7X.js} +13 -13
  82. package/chunks/{chunk-NWNEANAT.js → chunk-FOGQO4FG.js} +953 -660
  83. package/chunks/{chunk-3U3VAL47.js → chunk-FV6PXZRO.js} +1 -1
  84. package/chunks/{chunk-76J3IJ3M.js → chunk-FX5TGHDE.js} +8 -8
  85. package/chunks/{chunk-QIH2HAEN.js → chunk-GXG4PYQB.js} +1 -1
  86. package/chunks/{chunk-FDGGZIYW.js → chunk-HDKCKCYO.js} +3 -3
  87. package/chunks/{chunk-RIAABG2K.js → chunk-HERHU33B.js} +2 -2
  88. package/chunks/{chunk-ZYBBISBY.js → chunk-HETN3NE2.js} +18 -15
  89. package/chunks/{chunk-XIT3GURH.js → chunk-HGBACZGD.js} +3 -3
  90. package/chunks/{chunk-UZPM4XHR.js → chunk-HGH7DXNI.js} +29 -8
  91. package/chunks/{chunk-CHHABXPE.js → chunk-HIK2OF33.js} +1 -1
  92. package/chunks/{chunk-FC4KQFCS.js → chunk-HMJ2P3SV.js} +1 -1
  93. package/chunks/chunk-HRVMTN37.js +26 -0
  94. package/chunks/{chunk-PQ36L4F5.js → chunk-HZZGYJIP.js} +1 -1
  95. package/chunks/{chunk-PT4I7NBA.js → chunk-I432KXWD.js} +1 -1
  96. package/chunks/{chunk-3EZLLVDF.js → chunk-IBJ5S45N.js} +3 -3
  97. package/chunks/{chunk-A4MFR4C5.js → chunk-IO257NUD.js} +3 -5
  98. package/chunks/{chunk-MIPFDQAF.js → chunk-ISJMN3ML.js} +1 -1
  99. package/chunks/chunk-IWOWEENB.js +9169 -0
  100. package/chunks/{chunk-XHRY7BXD.js → chunk-J6SIP2IT.js} +4 -4
  101. package/chunks/{chunk-OD2WU5QY.js → chunk-J7JQXYVL.js} +1 -1
  102. package/chunks/{chunk-NEFOOD54.js → chunk-J7VPB2HF.js} +4 -4
  103. package/chunks/{chunk-P7MPQI75.js → chunk-JGUBDRBC.js} +2 -2
  104. package/chunks/{chunk-SXCOEJO4.js → chunk-JOLJTKIG.js} +1 -1
  105. package/chunks/{chunk-NTTBXH7U.js → chunk-JS73NNWF.js} +8 -0
  106. package/chunks/{chunk-QRCNA3SR.js → chunk-JXLPQTMW.js} +50 -70
  107. package/chunks/{chunk-NNHNLJ2X.js → chunk-K2MSGB3W.js} +317 -72
  108. package/chunks/{chunk-KBXKR5R2.js → chunk-K52PZNU4.js} +1 -1
  109. package/chunks/{chunk-OOQUVWIG.js → chunk-K5OIW3I7.js} +4 -4
  110. package/chunks/{chunk-SOORFWKY.js → chunk-KSPRQSB4.js} +1 -1
  111. package/chunks/{chunk-WSH6GRKG.js → chunk-KVGR4MCF.js} +3 -3
  112. package/chunks/{chunk-6YKYPVDV.js → chunk-LC5M7YVE.js} +4 -4
  113. package/chunks/{chunk-M6NDLY2T.js → chunk-LD5VIJ7S.js} +1 -1
  114. package/chunks/{chunk-OMLJNPBE.js → chunk-LDGWX737.js} +84 -4
  115. package/chunks/{chunk-FAAUPSY2.js → chunk-LI4YHTQK.js} +1 -1
  116. package/chunks/{chunk-CXAOG665.js → chunk-LIKIJAUH.js} +2 -2
  117. package/chunks/chunk-LJZSMWOH.js +18 -0
  118. package/chunks/{chunk-BKPPWD33.js → chunk-M2IL2RTA.js} +22 -2
  119. package/chunks/{chunk-N5YPT6PH.js → chunk-MHOY756Q.js} +25 -13
  120. package/chunks/{chunk-YP5KH5Y7.js → chunk-ND7NOI4P.js} +1 -1
  121. package/chunks/{chunk-AW4TRXOC.js → chunk-NP2LV67M.js} +1 -1
  122. package/chunks/{chunk-GGDBMYGZ.js → chunk-NQB52P65.js} +5 -5
  123. package/chunks/{chunk-E3DYKPYZ.js → chunk-NUGZAFR2.js} +3 -3
  124. package/chunks/{chunk-GMIEIY3Y.js → chunk-O5BDEWBC.js} +3 -3
  125. package/chunks/{chunk-GDXET5XU.js → chunk-O5Z7EB6Y.js} +3 -3
  126. package/chunks/{chunk-5EYKMUUY.js → chunk-OTXXOZKW.js} +1 -1
  127. package/chunks/{chunk-M732YJPW.js → chunk-PALTIYXB.js} +6 -6
  128. package/chunks/{chunk-7UXUJ5T3.js → chunk-PLECQWDB.js} +1 -1
  129. package/chunks/{chunk-MLPXSYXR.js → chunk-PMIKPGDF.js} +66 -32
  130. package/chunks/{chunk-IWPYVAO2.js → chunk-PSQJ24ZZ.js} +3 -3
  131. package/chunks/{chunk-CPHEPGAO.js → chunk-PZRUV52H.js} +2 -2
  132. package/chunks/{chunk-PP4FUZNV.js → chunk-Q7RPLE33.js} +2 -2
  133. package/chunks/{chunk-S5DWMTHO.js → chunk-QQUVPMMZ.js} +2 -0
  134. package/chunks/{chunk-JUEPY766.js → chunk-RNGTMHKN.js} +3 -3
  135. package/chunks/{chunk-TUGSVUJB.js → chunk-ROV6B34L.js} +6 -6
  136. package/chunks/{chunk-RVOJ2FBP.js → chunk-RPJOOK6N.js} +1576 -10633
  137. package/chunks/{chunk-AXN7UPYQ.js → chunk-RQJJZQOH.js} +2 -2
  138. package/chunks/{chunk-AFSG32D5.js → chunk-RRRCWDFO.js} +1 -1
  139. package/chunks/{chunk-2M55OBEB.js → chunk-S3G6YFQC.js} +1 -1
  140. package/chunks/{chunk-4S5337WV.js → chunk-SVU5KGR7.js} +6527 -3314
  141. package/chunks/chunk-TBVSALA3.js +1109 -0
  142. package/chunks/{chunk-QUGAUQGJ.js → chunk-TBWQLLFO.js} +2 -0
  143. package/chunks/{chunk-AS5IN4GK.js → chunk-THK3QUU6.js} +5 -5
  144. package/chunks/{chunk-JNDY2MDR.js → chunk-TLDZKNZP.js} +1 -1
  145. package/chunks/{chunk-ZZO74WKW.js → chunk-TNAIZBPQ.js} +115 -28
  146. package/chunks/{chunk-3Z43GZUQ.js → chunk-TXASDT2M.js} +1 -1
  147. package/chunks/{chunk-CZBYX5MY.js → chunk-U53XZHAE.js} +1 -1
  148. package/chunks/{chunk-HIBNSEJE.js → chunk-UDG5EZJI.js} +0 -2
  149. package/chunks/{chunk-QNQAPSN2.js → chunk-URN2JIAQ.js} +4 -1
  150. package/chunks/{chunk-EZ5RP345.js → chunk-UYQTX2P6.js} +44 -13
  151. package/chunks/{chunk-BZ263IKX.js → chunk-UZPYR3EV.js} +1 -1
  152. package/chunks/{chunk-YZOSNW4R.js → chunk-VFACN2CE.js} +1 -1
  153. package/chunks/{chunk-RWDNJBWN.js → chunk-VLRBJ24J.js} +2 -2
  154. package/chunks/{chunk-NHDR76JX.js → chunk-VMJL7RH6.js} +4 -4
  155. package/chunks/{chunk-E23IPNGS.js → chunk-VOTDAZR7.js} +35 -6
  156. package/chunks/{chunk-XLLKYULU.js → chunk-VSNPOSDN.js} +2 -2
  157. package/chunks/{chunk-25EYDK42.js → chunk-VUMLT7E5.js} +2 -2
  158. package/chunks/{chunk-H4A72DE5.js → chunk-W4CRPSC5.js} +1 -1
  159. package/chunks/{chunk-NM5V5OVW.js → chunk-WJJYJVQE.js} +3 -3
  160. package/chunks/{chunk-ROIYNTHJ.js → chunk-WRT324N6.js} +3 -3
  161. package/chunks/chunk-WZAD4ZNJ.js +59 -0
  162. package/chunks/{chunk-SG7ZP5PG.js → chunk-WZDM44SB.js} +4 -4
  163. package/chunks/{chunk-JE7KQ2UP.js → chunk-XIQ5HQ2F.js} +469 -77
  164. package/chunks/{chunk-QV5YN5YD.js → chunk-XJOHLP2A.js} +5 -5
  165. package/chunks/{chunk-XUJNK7Y6.js → chunk-XL5K4SVK.js} +1 -1
  166. package/chunks/{chunk-CKSJECTU.js → chunk-XZJKSETB.js} +9 -5
  167. package/chunks/{chunk-YEYY7TEP.js → chunk-Y2FEAXLP.js} +7 -7
  168. package/chunks/{chunk-2B2BF7P7.js → chunk-YDJRMQU4.js} +3 -3
  169. package/chunks/{chunk-46UV252V.js → chunk-YHC2EYYG.js} +35 -38
  170. package/chunks/{chunk-OVZPVYZB.js → chunk-YMVFIYHV.js} +96 -18
  171. package/chunks/{chunk-WGHHA7ZH.js → chunk-Z3JMO2CH.js} +1 -1
  172. package/chunks/{chunk-MA2HEDVP.js → chunk-ZRYQMWEP.js} +3 -3
  173. package/chunks/{chunk-IGGGG5CX.js → chunk-ZTAT23TL.js} +15948 -10201
  174. package/chunks/{computer-use-77C5FHMW.js → computer-use-H2T7IFYX.js} +55 -54
  175. package/chunks/{config-utils-IVHRSXWI.js → config-utils-3DY73VIJ.js} +2 -2
  176. package/chunks/contextCommand-5AAZFFFV.js +94 -0
  177. package/chunks/{core-runtime-7VMIKUTG.js → core-runtime-JWFNKO2S.js} +57 -55
  178. package/chunks/{create-sub-session-2L5MQRN4.js → create-sub-session-33HIYIJE.js} +58 -56
  179. package/chunks/{create-sub-session-KRQULJE6.js → create-sub-session-XBCVGNFU.js} +6 -4
  180. package/chunks/{cron-create-H7UEPDSN.js → cron-create-IKA56DAF.js} +5 -5
  181. package/chunks/{cron-delete-6SZK7YFM.js → cron-delete-K5Q62EGH.js} +5 -5
  182. package/chunks/{cron-list-H25JIHEZ.js → cron-list-QBFGAMP7.js} +5 -5
  183. package/chunks/{daemon-2KTG7ZBN.js → daemon-NNCQ3HWT.js} +806 -147
  184. package/chunks/{daemon-git-worktree-guard-DXYIMWFT.js → daemon-git-worktree-guard-6233JAPJ.js} +54 -53
  185. package/chunks/daemon-status-provider-3EI2KALQ.js +104 -0
  186. package/chunks/daemon-trust-policy-QWWU7CON.js +100 -0
  187. package/chunks/{daemon-trust-policy-monitor-RYYGCQ3J.js → daemon-trust-policy-monitor-FH7GBAKN.js} +60 -59
  188. package/chunks/{de-UBEBKG6V.js → de-AH4LGCF5.js} +8 -0
  189. package/chunks/{deferred-core-runtime-3SGXFXEQ.js → deferred-core-runtime-EDUZQRME.js} +52 -51
  190. package/chunks/{discovery-ORA5J7YP.js → discovery-X2NV535U.js} +1 -1
  191. package/chunks/{display-image-ON3EYFRD.js → display-image-OEJMJV3S.js} +5 -5
  192. package/chunks/{dist-YEPL4RAW.js → dist-5EV2G6MC.js} +2 -3
  193. package/chunks/{dist-MAQXAQ2Y.js → dist-EQ3Q5XHX.js} +45337 -32756
  194. package/chunks/{dist-WJ4BHIEW.js → dist-ESS34DHC.js} +72 -0
  195. package/chunks/{dist-JWMKPWT5.js → dist-EUOUPUFO.js} +3 -4
  196. package/chunks/{dist-IYYN3RUT.js → dist-UOFRXJT6.js} +2798 -1250
  197. package/chunks/{earlyInputCapture-KJMLFVQV.js → earlyInputCapture-VSP42LUR.js} +53 -52
  198. package/chunks/{edit-I4LQFAEC.js → edit-ZTLO5ASX.js} +60 -58
  199. package/chunks/{en-X6YV7GME.js → en-MD3GP5YL.js} +8 -0
  200. package/chunks/{enter-worktree-YNPOJSRH.js → enter-worktree-TMTPDS2S.js} +55 -54
  201. package/chunks/{enterPlanMode-XCPK62ER.js → enterPlanMode-UBAXFMYI.js} +55 -54
  202. package/chunks/{environment-S7CTIHMX.js → environment-C2CZN7CB.js} +55 -54
  203. package/chunks/{errors-7HB2AIDS.js → errors-ZUNFQINF.js} +54 -53
  204. package/chunks/{exit-worktree-AIIY7SR6.js → exit-worktree-572NWEPJ.js} +55 -54
  205. package/chunks/exitPlanMode-QTIXFGZT.js +86 -0
  206. package/chunks/{fast-path-NDJV3ZFJ.js → fast-path-CEEVHQL3.js} +3 -3
  207. package/chunks/{fast-path-settings-LNOFM2YP.js → fast-path-settings-WHX3J3ZI.js} +2 -2
  208. package/chunks/{fr-VENTC2BS.js → fr-ZEML2JWS.js} +8 -0
  209. package/chunks/{gemini-RSUFP5OE.js → gemini-I2YR6GMS.js} +114 -112
  210. package/chunks/{geminiContentGenerator-SQ5XBPZ7.js → geminiContentGenerator-GQWNDZQF.js} +7 -7
  211. package/chunks/getMachineId-bsd-FBOAYNSY.js +48 -0
  212. package/chunks/{getMachineId-bsd-FG7IUY6U.js → getMachineId-bsd-YH7RURBZ.js} +4 -4
  213. package/chunks/{getMachineId-darwin-GLCJI2RA.js → getMachineId-darwin-H6USQYNI.js} +4 -4
  214. package/chunks/getMachineId-darwin-RNJLJUXY.js +47 -0
  215. package/chunks/{getMachineId-linux-O6OPPAKO.js → getMachineId-linux-HF2N63ET.js} +3 -3
  216. package/chunks/getMachineId-linux-UEVRAIAB.js +41 -0
  217. package/chunks/getMachineId-unsupported-FWXYJ7HW.js +31 -0
  218. package/chunks/{getMachineId-unsupported-S6CKYVGC.js → getMachineId-unsupported-NYA5DXRB.js} +3 -3
  219. package/chunks/getMachineId-win-LRVGMHLW.js +50 -0
  220. package/chunks/{getMachineId-win-X5SRNEH7.js → getMachineId-win-SMEGY2DW.js} +4 -4
  221. package/chunks/{glob-J4RUJAHX.js → glob-XFBL2RVT.js} +58 -57
  222. package/chunks/{goal-tools-VHTNVOKK.js → goal-tools-TLJCE7YZ.js} +6 -6
  223. package/chunks/{grep-VJWPLFOT.js → grep-U675LEXE.js} +55 -54
  224. package/chunks/handleAutoUpdate-R6RUCIA2.js +97 -0
  225. package/chunks/{i18n-RM5YOICI.js → i18n-SJCZDZ4C.js} +53 -52
  226. package/chunks/{image-gen-EXECB5XM.js → image-gen-6VY7CA7C.js} +14 -14
  227. package/chunks/initializer-CRDZXJOG.js +101 -0
  228. package/chunks/installationInfo-EW3NEJDZ.js +95 -0
  229. package/chunks/{ja-QHT4EQTO.js → ja-UM5B2HMD.js} +8 -0
  230. package/chunks/{keychain-token-storage-3XFJ5ZB2.js → keychain-token-storage-MTFTAESK.js} +3 -3
  231. package/chunks/list-TZEMTXDH.js +104 -0
  232. package/chunks/{list-agents-OSVDFI6S.js → list-agents-43XUEXJV.js} +6 -6
  233. package/chunks/loadedSettingsAdapter-47DG424L.js +98 -0
  234. package/chunks/{loggingContentGenerator-WF4ZOJEZ.js → loggingContentGenerator-77C6O5VW.js} +31 -29
  235. package/chunks/{loop-wakeup-WQS6JYAG.js → loop-wakeup-E54KDUXC.js} +6 -6
  236. package/chunks/{ls-D3HUFHDP.js → ls-CGL2UC3H.js} +7 -7
  237. package/chunks/{lsp-3QDDJTCS.js → lsp-5IKUO5DX.js} +3 -3
  238. package/chunks/{managed-npm-update-E7IW6N7V.js → managed-npm-update-AJ5GZRUA.js} +53 -52
  239. package/chunks/mcp-AQK656Y4.js +98 -0
  240. package/chunks/{monitor-EE2UYMGE.js → monitor-UDZXKYT3.js} +55 -54
  241. package/chunks/nonInteractiveCli-6NC3NLZM.js +166 -0
  242. package/chunks/{notebook-edit-NTDY4QDU.js → notebook-edit-G6WZI2YT.js} +59 -57
  243. package/chunks/{openaiContentGenerator-YNFVJMRJ.js → openaiContentGenerator-IHVHP3VB.js} +32 -32
  244. package/chunks/{pidfile-4XSFLYBZ.js → pidfile-EBKS2HBK.js} +53 -52
  245. package/chunks/{processUtils-WDA2MJFD.js → processUtils-B7M35ZLR.js} +2 -2
  246. package/chunks/prompt-terminal-ledger-5JYOPOII.js +93 -0
  247. package/chunks/{pt-VL3I5RNY.js → pt-5BMJ3XYH.js} +8 -0
  248. package/chunks/{qwenContentGenerator-434M7QKY.js → qwenContentGenerator-WCJPPTED.js} +59 -58
  249. package/chunks/{qwenOAuth2-GMYZOO6A.js → qwenOAuth2-S2CLBSEZ.js} +10 -10
  250. package/chunks/read-file-WFM53FTW.js +33 -0
  251. package/chunks/{read-mcp-resource-XD54ZQMC.js → read-mcp-resource-XYES2B42.js} +3 -3
  252. package/chunks/{record-artifact-SEYFJEJF.js → record-artifact-W3IBTGL7.js} +10 -6
  253. package/chunks/{resumeHistoryUtils-EVG3WYK2.js → resumeHistoryUtils-CK4ZC6YO.js} +59 -58
  254. package/chunks/ripGrep-B3PBLEQ3.js +86 -0
  255. package/chunks/{ru-4RCKL4PY.js → ru-6GL66ORV.js} +8 -0
  256. package/chunks/{run-qwen-serve-3QSGRXAN.js → run-qwen-serve-DC5RXI6N.js} +537 -185
  257. package/chunks/{runtime-5MLLZ7DC.js → runtime-UVEETF54.js} +63 -62
  258. package/chunks/{scheduler-RPBJ63CH.js → scheduler-MWT3UMVN.js} +54 -53
  259. package/chunks/{sdk-exporters-grpc-54L4LS5L.js → sdk-exporters-grpc-6J5CKOMO.js} +194 -75
  260. package/chunks/{sdk-exporters-http-XUVP63H6.js → sdk-exporters-http-Q3YZ4752.js} +40 -45
  261. package/chunks/{sdk-impl-YXUEN2Z2.js → sdk-impl-BOMCAN2Z.js} +7211 -5454
  262. package/chunks/{send-message-VZENRWRH.js → send-message-J4VT46OI.js} +8 -8
  263. package/chunks/{serve-HS3XLPXU.js → serve-AKM75GTE.js} +60 -61
  264. package/chunks/{server-TC4A7AAZ.js → server-KU7XIDVT.js} +2221 -399
  265. package/chunks/{session-UBOFXVMN.js → session-DKVYIRWN.js} +108 -105
  266. package/chunks/{settings-D5644OM5.js → settings-NS3PXZDP.js} +63 -62
  267. package/chunks/{shell-3PZULQQV.js → shell-UXCNM2OK.js} +52 -51
  268. package/chunks/{skill-PEVVXQ3L.js → skill-KV7YCCTM.js} +30 -28
  269. package/chunks/{skill-settings-J65JKKES.js → skill-settings-EXW7ESWJ.js} +59 -58
  270. package/chunks/{spawnChannel-IYGXRHSQ.js → spawnChannel-FCP44P4V.js} +55 -54
  271. package/chunks/{standalone-update-IFM53PE7.js → standalone-update-RGW3B2DX.js} +55 -54
  272. package/chunks/{startInteractiveUI-3AVH7L6H.js → startInteractiveUI-UZMF2BIJ.js} +615 -392
  273. package/chunks/{syntheticOutput-7GWFIDXT.js → syntheticOutput-JAXMIMZP.js} +4 -4
  274. package/chunks/{task-create-FCBDX7UH.js → task-create-I2H322E4.js} +12 -12
  275. package/chunks/{task-list-YIYIUFUA.js → task-list-3OLIWFTQ.js} +21 -7
  276. package/chunks/{task-stop-X37KYTKB.js → task-stop-JAUY6MSY.js} +3 -3
  277. package/chunks/{task-update-MYPFVOVM.js → task-update-B3XO4CPI.js} +87 -16
  278. package/chunks/{team-create-ZAIA7KAV.js → team-create-77XY3KAE.js} +56 -56
  279. package/chunks/{team-delete-6UMU4XLS.js → team-delete-Q7GE7RRI.js} +6 -6
  280. package/chunks/{team-plan-approval-UNIUS7OD.js → team-plan-approval-TAQANDQG.js} +55 -54
  281. package/chunks/{terminal-image-renderer-G343P2RV.js → terminal-image-renderer-V4LIF5NS.js} +54 -53
  282. package/chunks/theme-manager-KKBAJ574.js +90 -0
  283. package/chunks/{todoWrite-U2R4NVF4.js → todoWrite-FJJTY2TI.js} +7 -7
  284. package/chunks/{tool-search-5R2OE4C7.js → tool-search-GZJYRK4I.js} +25 -24
  285. package/chunks/{total-session-admission-4KBHMQQ2.js → total-session-admission-NIBNWXHE.js} +59 -57
  286. package/chunks/{trustedFolders-LK6T4XC7.js → trustedFolders-7GEI2NYC.js} +53 -52
  287. package/chunks/{undici-PYHBDDPN.js → undici-S7WJSKGJ.js} +962 -391
  288. package/chunks/{update-relaunch-UBKROIC6.js → update-relaunch-OA3OEBMD.js} +5 -5
  289. package/chunks/{updateCheck-W4Y2GFSD.js → updateCheck-QVHQEVIY.js} +56 -55
  290. package/chunks/{useAutoAcceptIndicator-C7BEICBF.js → useAutoAcceptIndicator-WZ27J7NY.js} +64 -63
  291. package/chunks/{validateNonInterActiveAuth-LTEI2TB6.js → validateNonInterActiveAuth-OXJA2JWG.js} +99 -96
  292. package/chunks/{version-G5A5DGVS.js → version-KJO64WD7.js} +1 -1
  293. package/chunks/{web-fetch-RTEQTR5Z.js → web-fetch-CC5INI2R.js} +25 -23
  294. package/chunks/{web-search-5OXHEZPV.js → web-search-MOAUAN6N.js} +18 -18
  295. package/chunks/{web-shell-static-O73YPVVC.js → web-shell-static-3NUTRHAH.js} +4 -5
  296. package/chunks/{workflow-ISQJHPG2.js → workflow-BN2ZEJMK.js} +366 -105
  297. package/chunks/workspace-providers-status-R5QTZFK3.js +101 -0
  298. package/chunks/{workspace-registration-store-CYNY6IP6.js → workspace-registration-store-WMSLM36M.js} +1 -1
  299. package/chunks/{workspace-registry-34GTUUHB.js → workspace-registry-J3RUCXH6.js} +59 -57
  300. package/chunks/{workspace-service-XCDQLE2Y.js → workspace-service-JJZFPKM4.js} +66 -65
  301. package/chunks/workspace-skills-status-DRIOZRIA.js +101 -0
  302. package/chunks/{workspace-trust-reconciler-AYGXC7A3.js → workspace-trust-reconciler-YAYSN6CX.js} +69 -67
  303. package/chunks/write-file-7HXHFFOY.js +88 -0
  304. package/chunks/{zh-TW-SQ4HTSCW.js → zh-TW-LVLBK4KF.js} +8 -0
  305. package/chunks/{zh-LMSTK4WD.js → zh-UBMWS2BJ.js} +8 -0
  306. package/chunks/{zoom-image-4BFYJ3HG.js → zoom-image-EFMQMU4G.js} +24 -22
  307. package/cli.js +15 -15
  308. package/locales/ca.js +13 -0
  309. package/locales/de.js +12 -0
  310. package/locales/en.js +11 -0
  311. package/locales/fr.js +13 -0
  312. package/locales/ja.js +13 -0
  313. package/locales/pt.js +12 -0
  314. package/locales/ru.js +12 -0
  315. package/locales/zh-TW.js +11 -0
  316. package/locales/zh.js +11 -0
  317. package/package.json +3 -3
  318. package/web-shell/assets/{arc-CgOpDKvm.js → arc-BCP1f-bN.js} +1 -1
  319. package/web-shell/assets/{architectureDiagram-3BPJPVTR-0Ag_m34F.js → architectureDiagram-3BPJPVTR-D-6ajMay.js} +1 -1
  320. package/web-shell/assets/{blockDiagram-GPEHLZMM-IwTwFau0.js → blockDiagram-GPEHLZMM-CcLlnVnf.js} +1 -1
  321. package/web-shell/assets/{c4Diagram-AAUBKEIU-DLa5GUv8.js → c4Diagram-AAUBKEIU-C_Sp9UwQ.js} +1 -1
  322. package/web-shell/assets/channel-BcImYzbA.js +1 -0
  323. package/web-shell/assets/{chunk-2J33WTMH-DcYP-WFG.js → chunk-2J33WTMH-CG0ngvo9.js} +1 -1
  324. package/web-shell/assets/{chunk-4BX2VUAB-C8MVPMiQ.js → chunk-4BX2VUAB-D43LsVdk.js} +1 -1
  325. package/web-shell/assets/{chunk-55IACEB6-BUi4Yfv3.js → chunk-55IACEB6-BqNIn5rz.js} +1 -1
  326. package/web-shell/assets/{chunk-727SXJPM-Cy3Su2YY.js → chunk-727SXJPM-BSHmO08Y.js} +1 -1
  327. package/web-shell/assets/{chunk-AQP2D5EJ-Dp8Teqv6.js → chunk-AQP2D5EJ-CMUbr5tQ.js} +1 -1
  328. package/web-shell/assets/{chunk-FMBD7UC4-BDTDM-4j.js → chunk-FMBD7UC4-Cm6JflnZ.js} +1 -1
  329. package/web-shell/assets/{chunk-ND2GUHAM-7HfDt0r2.js → chunk-ND2GUHAM-CBR39YQZ.js} +1 -1
  330. package/web-shell/assets/{chunk-QZHKN3VN-BIBU0uCF.js → chunk-QZHKN3VN-CWnqaLb-.js} +1 -1
  331. package/web-shell/assets/classDiagram-4FO5ZUOK-OWx0rDRW.js +1 -0
  332. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-OWx0rDRW.js +1 -0
  333. package/web-shell/assets/{cose-bilkent-S5V4N54A-DRLdcg9p.js → cose-bilkent-S5V4N54A-DJlTdnfD.js} +1 -1
  334. package/web-shell/assets/{dagre-BM42HDAG-DCCgDwqW.js → dagre-BM42HDAG-1AFN1uVc.js} +1 -1
  335. package/web-shell/assets/{diagram-2AECGRRQ-CsBTBmk3.js → diagram-2AECGRRQ-gC0GGNSW.js} +1 -1
  336. package/web-shell/assets/{diagram-5GNKFQAL-C9qjH8Lt.js → diagram-5GNKFQAL-CPmRPT1s.js} +1 -1
  337. package/web-shell/assets/{diagram-KO2AKTUF-Brjs_lj2.js → diagram-KO2AKTUF-atigp6Hr.js} +1 -1
  338. package/web-shell/assets/{diagram-LMA3HP47-DtiWCl_F.js → diagram-LMA3HP47-BJnJFSRQ.js} +1 -1
  339. package/web-shell/assets/{diagram-OG6HWLK6-DmfKLkBT.js → diagram-OG6HWLK6-CyvJ4fG2.js} +1 -1
  340. package/web-shell/assets/{erDiagram-TEJ5UH35-Bve_4deH.js → erDiagram-TEJ5UH35-CZac_jT6.js} +1 -1
  341. package/web-shell/assets/{flowDiagram-I6XJVG4X-C2_kXCcV.js → flowDiagram-I6XJVG4X-pd-LQxWB.js} +1 -1
  342. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BSBIjiTF.js → ganttDiagram-6RSMTGT7-CvB1at7l.js} +1 -1
  343. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CyebwI55.js → gitGraphDiagram-PVQCEYII-B5Y6nkil.js} +1 -1
  344. package/web-shell/assets/index-Bg3DAn8Z.js +1788 -0
  345. package/web-shell/assets/{index-d0yfnV1M.js → index-Bj3ZSUHL.js} +1 -1
  346. package/web-shell/assets/index-mp32EO88.css +5 -0
  347. package/web-shell/assets/{infoDiagram-5YYISTIA-CSDGnWxU.js → infoDiagram-5YYISTIA-BdyWvU4P.js} +1 -1
  348. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BK4jU13p.js → ishikawaDiagram-YF4QCWOH-CaHbUdvN.js} +1 -1
  349. package/web-shell/assets/{journeyDiagram-JHISSGLW-D_W6j-oF.js → journeyDiagram-JHISSGLW-DR9F3FpG.js} +1 -1
  350. package/web-shell/assets/{kanban-definition-UN3LZRKU-C7xf-SdC.js → kanban-definition-UN3LZRKU-BoEUbkw2.js} +1 -1
  351. package/web-shell/assets/{linear-DQmzxpxd.js → linear-DUbfzV4T.js} +1 -1
  352. package/web-shell/assets/{mermaid.core-9P7AGOLG.js → mermaid.core-CLLkPcpD.js} +5 -5
  353. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DgcgMyPk.js → mindmap-definition-RKZ34NQL-FuKI3Stt.js} +1 -1
  354. package/web-shell/assets/{pieDiagram-4H26LBE5-3wWGb9eG.js → pieDiagram-4H26LBE5-CVAHL7l5.js} +1 -1
  355. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BeCXnQw9.js → quadrantDiagram-W4KKPZXB-BkGi5fRj.js} +1 -1
  356. package/web-shell/assets/{requirementDiagram-4Y6WPE33-Bi1UOHDz.js → requirementDiagram-4Y6WPE33-B5ghV8-K.js} +1 -1
  357. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-lrLUjjbb.js → sankeyDiagram-5OEKKPKP-CKFbVhkQ.js} +1 -1
  358. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-BFuqKz6Q.js → sequenceDiagram-3UESZ5HK-C5P9ujPd.js} +1 -1
  359. package/web-shell/assets/{stateDiagram-AJRCARHV-8DemQLhu.js → stateDiagram-AJRCARHV-CsDn-Rez.js} +1 -1
  360. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DpGKD1ez.js +1 -0
  361. package/web-shell/assets/{timeline-definition-PNZ67QCA-uzEuVQXg.js → timeline-definition-PNZ67QCA-B6oLBkTr.js} +1 -1
  362. package/web-shell/assets/{vennDiagram-CIIHVFJN-BQTeZ_-o.js → vennDiagram-CIIHVFJN-DvtBkYwp.js} +1 -1
  363. package/web-shell/assets/{wardley-L42UT6IY-B6yM5Im7.js → wardley-L42UT6IY-D2UwTX16.js} +1 -1
  364. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-ChM8bmgn.js → wardleyDiagram-YWT4CUSO-FnnfCxYI.js} +1 -1
  365. package/web-shell/assets/{xychartDiagram-2RQKCTM6-oNG6HyB1.js → xychartDiagram-2RQKCTM6-C1SaMQ7d.js} +1 -1
  366. package/web-shell/index.html +2 -2
  367. package/chunks/MaxSizedBox-UQALOVVT.js +0 -97
  368. package/chunks/agent-headless-GJCQMURW.js +0 -87
  369. package/chunks/channel-settings-store-WNWYFHG7.js +0 -102
  370. package/chunks/chunk-AZQ3DT76.js +0 -10017
  371. package/chunks/chunk-CR3C7WXL.js +0 -113
  372. package/chunks/chunk-K5IDV3PC.js +0 -519
  373. package/chunks/chunk-MPHPFVKK.js +0 -48
  374. package/chunks/chunk-RLKC46YT.js +0 -3582
  375. package/chunks/chunk-UPDOZBWO.js +0 -358
  376. package/chunks/contextCommand-PJ77GBWL.js +0 -93
  377. package/chunks/daemon-status-provider-ZDOYJCU6.js +0 -102
  378. package/chunks/daemon-trust-policy-E67OYUK2.js +0 -99
  379. package/chunks/exitPlanMode-R4JY7V2O.js +0 -85
  380. package/chunks/handleAutoUpdate-POCX2MNB.js +0 -94
  381. package/chunks/initializer-Z2AFGBNR.js +0 -100
  382. package/chunks/installationInfo-4I5FXNMH.js +0 -92
  383. package/chunks/list-ZMBFIGZA.js +0 -103
  384. package/chunks/loadedSettingsAdapter-T6TV4YJ7.js +0 -97
  385. package/chunks/mcp-6UNYX4HG.js +0 -97
  386. package/chunks/nonInteractiveCli-WAY237O4.js +0 -163
  387. package/chunks/read-file-TAFBKMNI.js +0 -32
  388. package/chunks/ripGrep-WOEK2PXS.js +0 -85
  389. package/chunks/theme-manager-Z3RIT7DB.js +0 -89
  390. package/chunks/undici-3FJYTMOF.js +0 -25914
  391. package/chunks/workspace-providers-status-2ZPZPUPZ.js +0 -100
  392. package/chunks/workspace-skills-status-RS4O7AIJ.js +0 -100
  393. package/chunks/write-file-EWXKVVXF.js +0 -87
  394. package/web-shell/assets/channel-BrGVBa2L.js +0 -1
  395. package/web-shell/assets/classDiagram-4FO5ZUOK-B5TUzJzI.js +0 -1
  396. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B5TUzJzI.js +0 -1
  397. package/web-shell/assets/index-CIDsgxTe.js +0 -1792
  398. package/web-shell/assets/index-DiQnWi_E.css +0 -5
  399. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DhM5ixYd.js +0 -1
  400. package/chunks/{dist-BROOP2EG.js → dist-LZO24N3E.js} +1 -1
@@ -1,86 +1,18 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import {
4
- classifyApiError,
5
- fireSessionDeleteHook
6
- } from "./chunk-P5Y23G2L.js";
7
3
  import {
8
4
  buildPermissionSuggestions
9
5
  } from "./chunk-43T5WDQ7.js";
10
6
  import {
11
7
  TUI_CHAT_RECORDING_FAILURE_MESSAGE,
12
8
  reportChatRecordingFailureToAdapter
13
- } from "./chunk-RIAABG2K.js";
14
- import {
15
- MAX_SUGGESTIONS_TO_SHOW,
16
- SESSION_MENTION_PREFIX,
17
- buildMcpResourceRef,
18
- buildMcpServerRef,
19
- buildSessionRef,
20
- getExtensionSuggestions,
21
- handleAtCommand,
22
- matchMcpServerPrefix,
23
- resolveAtCommandQuery,
24
- sanitizeDisplayText
25
- } from "./chunk-76J3IJ3M.js";
9
+ } from "./chunk-HERHU33B.js";
26
10
  import {
27
11
  StreamJsonOutputAdapter
28
- } from "./chunk-UZPM4XHR.js";
29
- import {
30
- BuiltinCommandLoader,
31
- BundledSkillLoader,
32
- CommandService,
33
- DISPLAY_HOOK_EVENTS,
34
- FileCommandLoader,
35
- MAX_STACKED_SKILLS,
36
- McpPromptLoader,
37
- SavedWorkflowLoader,
38
- SkillCommandLoader,
39
- addConfigToMatcherGroup,
40
- appendUserPromptExpansionAdditionalContext,
41
- buildBackgroundWorkBlockedMessage,
42
- copyToClipboard,
43
- createEmptyHookEventInfo,
44
- dayKey,
45
- findMidInputSlashCommand,
46
- findSlashCommandTokens,
47
- formatApprovalModeDescription,
48
- formatApprovalModeName,
49
- formatEffortChangeMessage,
50
- formatUserPromptExpansionBlockedMessage,
51
- getAllConfigs,
52
- getBestSlashCommandMatch,
53
- getTranslatedSourceDisplayMap,
54
- hasBlockingBackgroundWork,
55
- hasSlashCommandPathSeparator,
56
- isAtCommand,
57
- isBtwCommand,
58
- isMidInputCompletableCommand,
59
- isPickerOnlyModelInvocation,
60
- isSlashCommand,
61
- isStackedSkillCompletableCommand,
62
- isValidStackedSkillPrefix,
63
- normalizePartList,
64
- parseDayKey,
65
- parseSlashCommand,
66
- parseStackedSlashCommands,
67
- recordAutoSkillCommandUsage,
68
- refreshExtensionContentRuntime,
69
- resetBackgroundStateForSessionSwitch,
70
- serializeUserPromptExpansionPrompt,
71
- supportsMatchers
72
- } from "./chunk-NNHNLJ2X.js";
73
- import "./chunk-N5YPT6PH.js";
12
+ } from "./chunk-HGH7DXNI.js";
74
13
  import {
75
14
  startPostRenderPrefetches
76
- } from "./chunk-DGK6P3BQ.js";
77
- import {
78
- EXTENSION_RELOAD_FAILED_REASON,
79
- ExtensionRefreshState,
80
- appEvents,
81
- cleanupReviewWorktreeLeases,
82
- loadHierarchicalGeminiMemory
83
- } from "./chunk-IGGGG5CX.js";
15
+ } from "./chunk-EXVK5R7X.js";
84
16
  import {
85
17
  AboutBox,
86
18
  BaseSelectionList,
@@ -158,21 +90,7 @@ import {
158
90
  useUIActions,
159
91
  useUIState,
160
92
  useVirtualViewport
161
- } from "./chunk-QF2NHSPB.js";
162
- import {
163
- getCommandDisplayName,
164
- getCommandSourceBadge
165
- } from "./chunk-AFSG32D5.js";
166
- import {
167
- computeSessionStats,
168
- levelLabel
169
- } from "./chunk-O4D7SPJN.js";
170
- import "./chunk-4WGODMVR.js";
171
- import {
172
- MaxSizedBox,
173
- OverflowProvider,
174
- useOverflowState
175
- } from "./chunk-BHILXOC3.js";
93
+ } from "./chunk-D534POS2.js";
176
94
  import {
177
95
  GeminiRespondingSpinner,
178
96
  GeminiSpinner,
@@ -189,33 +107,109 @@ import {
189
107
  useStreamingContext,
190
108
  waitForGoalRuntime,
191
109
  wrapAnsi
192
- } from "./chunk-ZYBBISBY.js";
110
+ } from "./chunk-HETN3NE2.js";
111
+ import {
112
+ stopAndGetCapturedInput
113
+ } from "./chunk-VFACN2CE.js";
114
+ import {
115
+ useAutoAcceptIndicator
116
+ } from "./chunk-6RB2S4QP.js";
117
+ import {
118
+ KeypressProvider,
119
+ useFocus,
120
+ useKeypress,
121
+ useKeypressContext
122
+ } from "./chunk-PALTIYXB.js";
123
+ import {
124
+ classifyApiError,
125
+ fireSessionDeleteHook
126
+ } from "./chunk-P5Y23G2L.js";
127
+ import {
128
+ MAX_SUGGESTIONS_TO_SHOW,
129
+ SESSION_MENTION_PREFIX,
130
+ buildMcpResourceRef,
131
+ buildMcpServerRef,
132
+ buildSessionRef,
133
+ getExtensionSuggestions,
134
+ handleAtCommand,
135
+ matchMcpServerPrefix,
136
+ resolveAtCommandQuery,
137
+ sanitizeDisplayText
138
+ } from "./chunk-FX5TGHDE.js";
139
+ import {
140
+ BuiltinCommandLoader,
141
+ BundledSkillLoader,
142
+ CONTEXT_FILES_ANNOUNCEMENT_PREFIX,
143
+ CommandService,
144
+ DISPLAY_HOOK_EVENTS,
145
+ FileCommandLoader,
146
+ MAX_STACKED_SKILLS,
147
+ McpPromptLoader,
148
+ SLASH_COMMANDS_SKIP_RECORDING,
149
+ SavedWorkflowLoader,
150
+ SkillCommandLoader,
151
+ addConfigToMatcherGroup,
152
+ appendUserPromptExpansionAdditionalContext,
153
+ buildBackgroundWorkBlockedMessage,
154
+ consumesContextAnnouncementLatch,
155
+ copyToClipboard,
156
+ createEmptyHookEventInfo,
157
+ dayKey,
158
+ findMidInputSlashCommand,
159
+ findSlashCommandTokens,
160
+ formatApprovalModeDescription,
161
+ formatApprovalModeName,
162
+ formatEffortChangeMessage,
163
+ formatUserPromptExpansionBlockedMessage,
164
+ getAllConfigs,
165
+ getBestSlashCommandMatch,
166
+ getTranslatedSourceDisplayMap,
167
+ hasBlockingBackgroundWork,
168
+ hasSlashCommandPathSeparator,
169
+ isAtCommand,
170
+ isBtwCommand,
171
+ isContextFilesAnnouncement,
172
+ isMidInputCompletableCommand,
173
+ isPickerOnlyModelInvocation,
174
+ isSlashCommand,
175
+ isStackedSkillCompletableCommand,
176
+ isValidStackedSkillPrefix,
177
+ normalizePartList,
178
+ parseDayKey,
179
+ parseSlashCommand,
180
+ parseStackedSlashCommands,
181
+ recordAutoSkillCommandUsage,
182
+ refreshExtensionContentRuntime,
183
+ resetBackgroundStateForSessionSwitch,
184
+ serializeUserPromptExpansionPrompt,
185
+ supportsMatchers
186
+ } from "./chunk-K2MSGB3W.js";
187
+ import {
188
+ EXTENSION_RELOAD_FAILED_REASON,
189
+ ExtensionRefreshState,
190
+ appEvents,
191
+ cleanupReviewWorktreeLeases,
192
+ loadHierarchicalGeminiMemory
193
+ } from "./chunk-ZTAT23TL.js";
194
+ import {
195
+ getCommandDisplayName,
196
+ getCommandSourceBadge
197
+ } from "./chunk-RRRCWDFO.js";
198
+ import {
199
+ computeSessionStats,
200
+ levelLabel
201
+ } from "./chunk-6U46RZ25.js";
193
202
  import {
194
203
  formatDuration,
195
204
  formatRelativeTime,
196
205
  formatTokenCount
197
206
  } from "./chunk-3SH53ANB.js";
198
- import {
199
- theme
200
- } from "./chunk-6QFDQMQX.js";
201
- import {
202
- stopAndGetCapturedInput
203
- } from "./chunk-YZOSNW4R.js";
204
207
  import {
205
208
  disableKittyProtocol,
206
209
  isKittyProtocolEnabled,
207
210
  isKittyProtocolSupported,
208
211
  pushKittyProtocolFlags
209
212
  } from "./chunk-NYX53SV4.js";
210
- import {
211
- useAutoAcceptIndicator
212
- } from "./chunk-MRMJCLIY.js";
213
- import {
214
- KeypressProvider,
215
- useFocus,
216
- useKeypress,
217
- useKeypressContext
218
- } from "./chunk-M732YJPW.js";
219
213
  import {
220
214
  BEL,
221
215
  OSC_PREFIX,
@@ -228,7 +222,19 @@ import {
228
222
  oscKittyNotify,
229
223
  saveClipboardImage,
230
224
  writeOsc52
231
- } from "./chunk-DXIBNLBZ.js";
225
+ } from "./chunk-DB2OKNTU.js";
226
+ import "./chunk-MHOY756Q.js";
227
+ import "./chunk-4WGODMVR.js";
228
+ import "./chunk-THK3QUU6.js";
229
+ import "./chunk-KW7NOTN6.js";
230
+ import {
231
+ MaxSizedBox,
232
+ OverflowProvider,
233
+ useOverflowState
234
+ } from "./chunk-2MTIAN5Z.js";
235
+ import {
236
+ theme
237
+ } from "./chunk-3ZFJUBTP.js";
232
238
  import {
233
239
  require_jsx_runtime
234
240
  } from "./chunk-SV5PQVQE.js";
@@ -246,47 +252,46 @@ import {
246
252
  use_stdin_default,
247
253
  use_stdout_default
248
254
  } from "./chunk-2IIJTXYF.js";
255
+ import {
256
+ require_react
257
+ } from "./chunk-5QWWOFGG.js";
258
+ import "./chunk-DV4375RD.js";
259
+ import "./chunk-AP3B7LKD.js";
260
+ import {
261
+ MAX_INLINE_IMAGES_PER_ITEM,
262
+ collectInlineImages,
263
+ getInlineImageData
264
+ } from "./chunk-JOLJTKIG.js";
249
265
  import {
250
266
  relaunchApp
251
- } from "./chunk-PQ36L4F5.js";
267
+ } from "./chunk-HZZGYJIP.js";
252
268
  import {
253
269
  setUpdateHandler
254
- } from "./chunk-UKMR3CKV.js";
270
+ } from "./chunk-D7QQ6RUB.js";
255
271
  import {
256
272
  isHistoryItemVisibleAfterRestore
257
273
  } from "./chunk-EKTCKZV5.js";
258
- import "./chunk-AS5IN4GK.js";
274
+ import "./chunk-J7VPB2HF.js";
275
+ import "./chunk-YAF2MQZ6.js";
259
276
  import {
260
277
  AUTO_THEME_NAME,
261
278
  DEFAULT_THEME,
262
279
  themeManager
263
- } from "./chunk-2M55OBEB.js";
264
- import "./chunk-KW7NOTN6.js";
265
- import {
266
- require_react
267
- } from "./chunk-5QWWOFGG.js";
268
- import "./chunk-GO7STP6N.js";
280
+ } from "./chunk-S3G6YFQC.js";
281
+ import "./chunk-JXLPQTMW.js";
282
+ import "./chunk-6H67XLET.js";
283
+ import "./chunk-7VITNOH6.js";
269
284
  import {
270
285
  getErrorMessage as getErrorMessage2
271
- } from "./chunk-JUEPY766.js";
272
- import "./chunk-U3VNBPUO.js";
273
- import "./chunk-NEFOOD54.js";
274
- import "./chunk-YAF2MQZ6.js";
275
- import "./chunk-IA2K2HJE.js";
276
- import {
277
- MAX_INLINE_IMAGES_PER_ITEM,
278
- collectInlineImages,
279
- getInlineImageData
280
- } from "./chunk-SXCOEJO4.js";
281
- import "./chunk-QRCNA3SR.js";
282
- import "./chunk-6H67XLET.js";
286
+ } from "./chunk-RNGTMHKN.js";
283
287
  import {
284
288
  openQwenAsrRealtimeStream,
285
289
  openVoiceStream,
286
290
  openVoiceStreamWithRetry
287
- } from "./chunk-AXN7UPYQ.js";
288
- import "./chunk-RLKC46YT.js";
289
- import "./chunk-BZ263IKX.js";
291
+ } from "./chunk-RQJJZQOH.js";
292
+ import "./chunk-3SIGAHUX.js";
293
+ import "./chunk-UZPYR3EV.js";
294
+ import "./chunk-FV6PXZRO.js";
290
295
  import {
291
296
  cpLen,
292
297
  cpSlice,
@@ -298,13 +303,12 @@ import {
298
303
  sanitizeTerminalText,
299
304
  stripUnsafeCharacters,
300
305
  toCodePoints
301
- } from "./chunk-4NFY2S7N.js";
302
- import "./chunk-3U3VAL47.js";
306
+ } from "./chunk-E7REAOTN.js";
303
307
  import {
304
308
  stringWidth
305
309
  } from "./chunk-2MIN6GRR.js";
306
310
  import "./chunk-QHTIBUWB.js";
307
- import "./chunk-3Z43GZUQ.js";
311
+ import "./chunk-TXASDT2M.js";
308
312
  import {
309
313
  isValidSessionId
310
314
  } from "./chunk-TQOF5KBL.js";
@@ -315,55 +319,54 @@ import {
315
319
  isStreamingVoiceModel,
316
320
  resolveVoiceStreamConfig,
317
321
  transcribeVoiceAudio
318
- } from "./chunk-6ORZ2EDC.js";
322
+ } from "./chunk-EW2IQ3ID.js";
319
323
  import {
320
324
  formatUnsupportedVoiceModelMessage,
321
325
  isSelectableVoiceModel
322
- } from "./chunk-QIH2HAEN.js";
323
- import "./chunk-WGHHA7ZH.js";
326
+ } from "./chunk-GXG4PYQB.js";
327
+ import "./chunk-Z3JMO2CH.js";
328
+ import {
329
+ computeWorkspaceSkillListUpdates,
330
+ resolveSkillSettings,
331
+ skillSettingStrings
332
+ } from "./chunk-Z4X5MTRT.js";
333
+ import {
334
+ createLoadedSettingsAdapter
335
+ } from "./chunk-3XD4PT3B.js";
324
336
  import {
325
337
  getExtendedSystemInfo
326
- } from "./chunk-XHRY7BXD.js";
338
+ } from "./chunk-J6SIP2IT.js";
327
339
  import "./chunk-7U5G6JXI.js";
328
340
  import "./chunk-WCCLLK7X.js";
329
341
  import {
330
342
  isInlineModelOverrideAllowed
331
- } from "./chunk-ZYYTZUI2.js";
332
- import {
333
- computeWorkspaceSkillListUpdates,
334
- resolveSkillSettings,
335
- skillSettingStrings
336
- } from "./chunk-Z4X5MTRT.js";
337
- import "./chunk-TUGSVUJB.js";
343
+ } from "./chunk-3LYGXZ2H.js";
344
+ import "./chunk-ROV6B34L.js";
338
345
  import {
339
346
  requestConsentInteractive,
340
347
  requestConsentOrFail
341
- } from "./chunk-QV5YN5YD.js";
348
+ } from "./chunk-XJOHLP2A.js";
342
349
  import "./chunk-57OAHC2Y.js";
343
- import "./chunk-OD2WU5QY.js";
350
+ import "./chunk-J7JQXYVL.js";
344
351
  import "./chunk-45NQKMYB.js";
345
- import "./chunk-A4QRWUDE.js";
352
+ import "./chunk-2NWPB6T4.js";
346
353
  import "./chunk-V6WHFGST.js";
347
- import {
348
- createLoadedSettingsAdapter
349
- } from "./chunk-BVJS5BSP.js";
350
- import "./chunk-ZLCT4C5A.js";
351
- import "./chunk-2AUM35J5.js";
352
- import "./chunk-BKPPWD33.js";
354
+ import "./chunk-QQUVPMMZ.js";
353
355
  import "./chunk-6PLDPT2C.js";
354
356
  import "./chunk-FYJ7W2PI.js";
355
- import "./chunk-YP5KH5Y7.js";
357
+ import "./chunk-ND7NOI4P.js";
356
358
  import "./chunk-A6NRNRKE.js";
357
359
  import "./chunk-ALMR3E6Q.js";
358
- import "./chunk-HIBNSEJE.js";
359
- import "./chunk-M5GB774H.js";
360
+ import "./chunk-UDG5EZJI.js";
360
361
  import "./chunk-3VUENPWF.js";
362
+ import "./chunk-M5GB774H.js";
363
+ import "./chunk-W4CRPSC5.js";
364
+ import "./chunk-ZLCT4C5A.js";
361
365
  import "./chunk-AW27A43Y.js";
362
366
  import "./chunk-IW6RQPQB.js";
363
- import "./chunk-H4A72DE5.js";
364
367
  import {
365
368
  loadMcpApprovals
366
- } from "./chunk-JOOFMXGF.js";
369
+ } from "./chunk-6UDHEIUT.js";
367
370
  import {
368
371
  CORRUPTED_SUFFIX,
369
372
  SettingScope,
@@ -385,36 +388,39 @@ import {
385
388
  settingExistsInScope,
386
389
  validateSettingValue,
387
390
  writeOutputLanguageAndRegisterPath
388
- } from "./chunk-A267JX7H.js";
389
- import "./chunk-RKUWKYED.js";
391
+ } from "./chunk-3HWN4E7N.js";
390
392
  import {
391
393
  TOGGLE_TYPES
392
- } from "./chunk-E23IPNGS.js";
393
- import "./chunk-GOXKNSDZ.js";
394
- import "./chunk-IDS7MSUP.js";
394
+ } from "./chunk-VOTDAZR7.js";
395
+ import "./chunk-RKUWKYED.js";
395
396
  import {
396
397
  getCurrentLanguage,
397
398
  localizeToolDisplayName,
398
399
  t,
399
400
  ta
400
- } from "./chunk-HUTNYWBG.js";
401
+ } from "./chunk-45UD2TU4.js";
401
402
  import "./chunk-5EJZE3FP.js";
402
- import "./chunk-MC4TLKEI.js";
403
- import "./chunk-MS7GNABG.js";
403
+ import "./chunk-5PHLBWBL.js";
404
+ import "./chunk-2AUM35J5.js";
405
+ import "./chunk-M2IL2RTA.js";
406
+ import "./chunk-GOXKNSDZ.js";
407
+ import "./chunk-IDS7MSUP.js";
408
+ import "./chunk-CXJHQVEK.js";
409
+ import "./chunk-XFSFZCM5.js";
404
410
  import "./chunk-NF5J2WFA.js";
405
411
  import {
406
412
  getCliVersion
407
- } from "./chunk-CU6GJD55.js";
413
+ } from "./chunk-7WLFSDLG.js";
408
414
  import "./chunk-WZMH7II3.js";
409
415
  import {
410
416
  isWorkspaceTrusted,
411
417
  loadTrustedFolders
412
- } from "./chunk-IWPYVAO2.js";
418
+ } from "./chunk-PSQJ24ZZ.js";
413
419
  import {
414
420
  require_strip_json_comments
415
421
  } from "./chunk-NPQ5ZKRP.js";
416
422
  import "./chunk-MR3PXB6E.js";
417
- import "./chunk-XFSFZCM5.js";
423
+ import "./chunk-LJZSMWOH.js";
418
424
  import {
419
425
  ALIBABA_PROVIDERS,
420
426
  AsyncFzf,
@@ -474,6 +480,7 @@ import {
474
480
  generatePromptSuggestion,
475
481
  generateSessionRecap,
476
482
  generateToolUseSummary,
483
+ getCachedToolCallFingerprint,
477
484
  getDefaultBaseUrlForProtocol,
478
485
  getDefaultModelIds,
479
486
  getExtensionDisplayName,
@@ -485,9 +492,11 @@ import {
485
492
  glob,
486
493
  ideContextStore,
487
494
  isActiveWorkflowStatus,
495
+ isClearedMediaPlaceholder,
488
496
  isEditorAvailable,
489
497
  isExtensionCommittedWithWarningsError,
490
498
  isGatedMcpScope,
499
+ isReplayOfHandledToolCall,
491
500
  isSessionRuntimeActive,
492
501
  isSettledStatus,
493
502
  isSignalTermination,
@@ -505,8 +514,10 @@ import {
505
514
  parseVisionModelSetting,
506
515
  readWorktreeSession,
507
516
  readWorktreeSessionMarker,
517
+ recordHandledToolCall,
508
518
  refreshMemoryAfterManagedWrite,
509
519
  refreshMemoryInstruction,
520
+ registerSession,
510
521
  resolveBaseUrl,
511
522
  resolveBranchName,
512
523
  resolveMetadataKey,
@@ -520,88 +531,76 @@ import {
520
531
  validateWorkflowName,
521
532
  watchRepoBranch,
522
533
  writeRuntimeStatus
523
- } from "./chunk-4S5337WV.js";
534
+ } from "./chunk-SVU5KGR7.js";
524
535
  import "./chunk-GOFAQQZA.js";
525
- import "./chunk-5M6IDOMF.js";
526
536
  import {
527
537
  stripAnsi
528
538
  } from "./chunk-TWPJO254.js";
529
539
  import "./chunk-CQ35AJ4Z.js";
530
- import "./chunk-DGZEMW5R.js";
531
- import "./chunk-WSH6GRKG.js";
532
- import "./chunk-CKSJECTU.js";
533
- import "./chunk-OVZPVYZB.js";
540
+ import "./chunk-5M6IDOMF.js";
541
+ import "./chunk-KVGR4MCF.js";
542
+ import "./chunk-XZJKSETB.js";
543
+ import "./chunk-YMVFIYHV.js";
534
544
  import "./chunk-6PVPNMXU.js";
535
545
  import {
536
546
  resolveModelId
537
- } from "./chunk-5EYKMUUY.js";
547
+ } from "./chunk-OTXXOZKW.js";
548
+ import "./chunk-DJEHYM4H.js";
538
549
  import "./chunk-IRH27ZC2.js";
539
550
  import "./chunk-QHWCP53L.js";
540
- import "./chunk-Y3YCSWG5.js";
541
- import "./chunk-UPDOZBWO.js";
551
+ import "./chunk-AZF6SME3.js";
552
+ import "./chunk-TBVSALA3.js";
542
553
  import {
543
554
  promptIdContext
544
555
  } from "./chunk-O6GEWCJA.js";
545
556
  import "./chunk-T26EAKDL.js";
546
- import "./chunk-ZPJWUGCS.js";
547
557
  import "./chunk-CPBF7KYF.js";
548
- import {
549
- APPROVAL_MODES
550
- } from "./chunk-RWDNJBWN.js";
551
- import "./chunk-25EYDK42.js";
558
+ import "./chunk-VUMLT7E5.js";
552
559
  import {
553
560
  HOOKS_CONFIG_FIELDS
554
- } from "./chunk-MIPFDQAF.js";
555
- import "./chunk-MLXTMF7H.js";
556
- import "./chunk-KV27IEHM.js";
557
- import "./chunk-E3DYKPYZ.js";
561
+ } from "./chunk-ISJMN3ML.js";
562
+ import "./chunk-2TRNCJK4.js";
563
+ import "./chunk-NUGZAFR2.js";
558
564
  import {
559
565
  elapsedActiveTime,
560
566
  goalRequiresExactPermit
561
- } from "./chunk-OMLJNPBE.js";
562
- import "./chunk-OXCMMLED.js";
563
- import "./chunk-TIGA2IVL.js";
564
- import "./chunk-SAH4BD2J.js";
565
- import "./chunk-XLLKYULU.js";
566
- import {
567
- runOutsideAgentContext
568
- } from "./chunk-PT4I7NBA.js";
569
- import "./chunk-S6LOFUVP.js";
570
- import "./chunk-2J3OJGTL.js";
567
+ } from "./chunk-LDGWX737.js";
571
568
  import {
572
- getStartupContextLength,
573
- isSystemReminderContent
574
- } from "./chunk-SG7ZP5PG.js";
575
- import "./chunk-K623ENWT.js";
576
- import "./chunk-AQ37AY7B.js";
577
- import {
578
- isPathWithinRoot
579
- } from "./chunk-KBXKR5R2.js";
569
+ APPROVAL_MODES
570
+ } from "./chunk-VLRBJ24J.js";
571
+ import "./chunk-ZPJWUGCS.js";
572
+ import "./chunk-MLXTMF7H.js";
580
573
  import {
581
574
  osc8Hyperlink,
582
575
  qwenOAuth2Events,
583
576
  sanitizeForOsc,
584
577
  supportsHyperlinks,
585
578
  wrapForMultiplexer
586
- } from "./chunk-GMIEIY3Y.js";
579
+ } from "./chunk-O5BDEWBC.js";
587
580
  import "./chunk-NAVJD2PQ.js";
588
- import "./chunk-ROIYNTHJ.js";
589
- import "./chunk-2B2BF7P7.js";
590
- import "./chunk-P3QQPMQA.js";
591
- import "./chunk-YZHRN3CF.js";
592
- import "./chunk-FAAUPSY2.js";
581
+ import "./chunk-WRT324N6.js";
582
+ import "./chunk-YDJRMQU4.js";
593
583
  import {
594
584
  REASONING_EFFORT_TIERS,
595
585
  applyReasoningEffort
596
586
  } from "./chunk-KM73TBQ4.js";
587
+ import "./chunk-E63A23D7.js";
588
+ import "./chunk-6NJIPX6W.js";
589
+ import "./chunk-P3QQPMQA.js";
590
+ import "./chunk-6S2OXVJT.js";
591
+ import "./chunk-SAH4BD2J.js";
592
+ import "./chunk-VSNPOSDN.js";
597
593
  import {
598
- getUnsupportedImageFormatWarning,
599
- isSupportedImageMimeType
600
- } from "./chunk-MPHPFVKK.js";
594
+ runOutsideAgentContext
595
+ } from "./chunk-I432KXWD.js";
596
+ import "./chunk-S6LOFUVP.js";
597
+ import "./chunk-7IV52LTO.js";
601
598
  import "./chunk-AXMWHKXA.js";
602
- import "./chunk-GLCZKT5V.js";
603
599
  import "./chunk-DJ2GSRLV.js";
604
- import "./chunk-QFJ5JHQR.js";
600
+ import "./chunk-2J3OJGTL.js";
601
+ import "./chunk-LI4YHTQK.js";
602
+ import "./chunk-GLCZKT5V.js";
603
+ import "./chunk-C72BXMJ5.js";
605
604
  import {
606
605
  ApiCancelEvent,
607
606
  AuthEvent,
@@ -617,7 +616,6 @@ import {
617
616
  addMCPStatusChangeListener,
618
617
  formatFullTurnVisionNotice,
619
618
  formatVisionBridgeNotice,
620
- getAllGeminiMdFilenames,
621
619
  getAllMCPServerStatuses,
622
620
  getFullTurnVisionModelSelector,
623
621
  getMCPServerStatus,
@@ -641,45 +639,61 @@ import {
641
639
  runVisionBridge,
642
640
  shouldRunVisionBridge,
643
641
  splitImageParts
644
- } from "./chunk-RVOJ2FBP.js";
642
+ } from "./chunk-RPJOOK6N.js";
645
643
  import "./chunk-YRLW2MSX.js";
646
644
  import "./chunk-VGC4I5JJ.js";
645
+ import {
646
+ getAllGeminiMdFilenames
647
+ } from "./chunk-IWOWEENB.js";
647
648
  import {
648
649
  AUTO_MEMORY_INDEX_FILENAME,
649
650
  getAutoMemoryProjectStateDir,
650
651
  getAutoMemoryRoot,
651
652
  getUserAutoMemoryRoot,
652
653
  isAnyAutoMemPath
653
- } from "./chunk-CHHABXPE.js";
654
+ } from "./chunk-HIK2OF33.js";
654
655
  import {
655
656
  runSideQuery
656
- } from "./chunk-MA2HEDVP.js";
657
- import "./chunk-XUJNK7Y6.js";
658
- import {
659
- ToolNames,
660
- isShellProgressData
661
- } from "./chunk-6HY6IF3Z.js";
662
- import "./chunk-4PKCUT7F.js";
657
+ } from "./chunk-ZRYQMWEP.js";
658
+ import "./chunk-7JDGSJQH.js";
663
659
  import {
664
660
  MAINLINE_CODER_MODEL
665
661
  } from "./chunk-F6WFNA7U.js";
666
- import "./chunk-46UV252V.js";
662
+ import "./chunk-WZAD4ZNJ.js";
667
663
  import {
668
664
  DEFAULT_TOKEN_LIMIT
669
665
  } from "./chunk-FPGTNKCP.js";
670
- import "./chunk-CPHEPGAO.js";
671
- import "./chunk-P7MPQI75.js";
666
+ import {
667
+ getUnsupportedImageFormatWarning,
668
+ isSupportedImageMimeType
669
+ } from "./chunk-YHC2EYYG.js";
670
+ import "./chunk-PZRUV52H.js";
671
+ import "./chunk-JGUBDRBC.js";
672
672
  import {
673
673
  atomicWriteFileSync
674
- } from "./chunk-FDGGZIYW.js";
674
+ } from "./chunk-HDKCKCYO.js";
675
+ import "./chunk-HHJLM3WQ.js";
675
676
  import {
676
677
  endInteractionSpan,
677
678
  getActiveInteractionSpan,
678
679
  isBinary,
679
680
  redactUrlCredentials
680
- } from "./chunk-EL5SXY3T.js";
681
- import "./chunk-HHJLM3WQ.js";
682
- import "./chunk-K5IDV3PC.js";
681
+ } from "./chunk-32CHFLGV.js";
682
+ import "./chunk-74TONY4F.js";
683
+ import "./chunk-XL5K4SVK.js";
684
+ import {
685
+ getStartupContextLength,
686
+ isSystemReminderContent
687
+ } from "./chunk-WZDM44SB.js";
688
+ import "./chunk-K623ENWT.js";
689
+ import "./chunk-AQ37AY7B.js";
690
+ import {
691
+ isPathWithinRoot
692
+ } from "./chunk-K52PZNU4.js";
693
+ import {
694
+ ToolNames,
695
+ isShellProgressData
696
+ } from "./chunk-6NFAEG54.js";
683
697
  import {
684
698
  Storage,
685
699
  UnauthorizedError,
@@ -691,18 +705,17 @@ import {
691
705
  isNodeError,
692
706
  shortenPath,
693
707
  tildeifyPath
694
- } from "./chunk-BUQDLC2G.js";
695
- import "./chunk-VOQXFAY5.js";
696
- import "./chunk-AW4TRXOC.js";
697
- import {
698
- registerCleanup,
699
- runExitCleanup
700
- } from "./chunk-X26JYGTD.js";
708
+ } from "./chunk-A5F2YNO6.js";
709
+ import "./chunk-NP2LV67M.js";
701
710
  import {
702
711
  finalizeStartupProfile,
703
712
  profileCheckpoint
704
713
  } from "./chunk-QILD6R27.js";
705
714
  import "./chunk-JVEGA3MM.js";
715
+ import {
716
+ registerCleanup,
717
+ runExitCleanup
718
+ } from "./chunk-37BZSWEV.js";
706
719
  import {
707
720
  clearScreen,
708
721
  writeStderrLine,
@@ -718,7 +731,7 @@ import {
718
731
  import "./chunk-TYAMGABM.js";
719
732
  import "./chunk-FCMNKVXT.js";
720
733
  import "./chunk-AMDSOFFV.js";
721
- import "./chunk-QUGAUQGJ.js";
734
+ import "./chunk-TBWQLLFO.js";
722
735
  import {
723
736
  init_esbuild_shims
724
737
  } from "./chunk-5O2XNYP6.js";
@@ -2376,6 +2389,7 @@ function isSyntheticHistoryItem(item) {
2376
2389
  case "gemini_content":
2377
2390
  case "tool_group":
2378
2391
  case "btw":
2392
+ case "advisor":
2379
2393
  case "memory_saved":
2380
2394
  case "about":
2381
2395
  case "help":
@@ -4011,14 +4025,38 @@ var MainContent = /* @__PURE__ */ __name(({ footerRef }) => {
4011
4025
  return () => clearImmediate(handle);
4012
4026
  }, [useVirtualScroll, replayCount, visibleHistory.length]);
4013
4027
  const visibleHistoryItemsWithSourceCopyOffsets = historyItemsWithSourceCopyOffsets.length - replayCount <= PROGRESSIVE_REPLAY_CHUNK_SIZE ? historyItemsWithSourceCopyOffsets : historyItemsWithSourceCopyOffsets.slice(0, replayCount);
4014
- const allVirtualItems = (0, import_react14.useMemo)(
4015
- () => [
4028
+ const allVirtualItems = (0, import_react14.useMemo)(() => {
4029
+ const combined = [
4016
4030
  VP_BANNER_ITEM,
4017
4031
  ...visibleHistory,
4018
4032
  ...pendingHistoryItems.map((item, i) => ({ ...item, id: -(i + 1) }))
4019
- ],
4020
- [visibleHistory, pendingHistoryItems]
4021
- );
4033
+ ];
4034
+ const livePendingBatchIds = /* @__PURE__ */ new Set();
4035
+ for (const item of pendingHistoryItems) {
4036
+ if (item.type === "tool_group" && item.batchId !== void 0) {
4037
+ livePendingBatchIds.add(item.batchId);
4038
+ }
4039
+ }
4040
+ if (livePendingBatchIds.size === 0) return combined;
4041
+ const dropped = /* @__PURE__ */ new Set();
4042
+ const committedByBatchId = /* @__PURE__ */ new Map();
4043
+ const keptPendingByBatchId = /* @__PURE__ */ new Map();
4044
+ for (const item of combined) {
4045
+ if (item.type !== "tool_group" || item.batchId === void 0 || !livePendingBatchIds.has(item.batchId)) {
4046
+ continue;
4047
+ }
4048
+ if (item.id > 0) {
4049
+ committedByBatchId.set(item.batchId, item);
4050
+ } else {
4051
+ const kept = keptPendingByBatchId.get(item.batchId);
4052
+ if (kept) dropped.add(kept);
4053
+ keptPendingByBatchId.set(item.batchId, item);
4054
+ }
4055
+ }
4056
+ for (const item of committedByBatchId.values()) dropped.add(item);
4057
+ if (dropped.size === 0) return combined;
4058
+ return combined.filter((item) => !dropped.has(item));
4059
+ }, [visibleHistory, pendingHistoryItems]);
4022
4060
  const sourceCopyOffsetsByHistoryItem = (0, import_react14.useMemo)(() => {
4023
4061
  const map = /* @__PURE__ */ new Map();
4024
4062
  for (const {
@@ -21242,12 +21280,14 @@ function isUserTextContent(content) {
21242
21280
  );
21243
21281
  if (hasFunctionResponse) return false;
21244
21282
  if (isSystemReminderContent(content)) return false;
21245
- return content.parts.some((part) => "text" in part && part.text);
21283
+ return content.parts.some(
21284
+ (part) => "text" in part && !!part.text && !isClearedMediaPlaceholder(part.text)
21285
+ );
21246
21286
  }
21247
21287
  __name(isUserTextContent, "isUserTextContent");
21248
21288
  function findLastSuccessfulCompressionIndex(history) {
21249
21289
  return history.findLastIndex(
21250
- (item) => item.type === "compression" && item.compression.compressionStatus === 1 /* COMPRESSED */
21290
+ (item) => item.type === "compression" && item.compression.compressionStatus === 1 /* COMPRESSED */ && item.compression.compressionKind !== "fast"
21251
21291
  );
21252
21292
  }
21253
21293
  __name(findLastSuccessfulCompressionIndex, "findLastSuccessfulCompressionIndex");
@@ -21269,6 +21309,9 @@ function computeApiTruncationIndex(uiHistory, targetUserItemId, apiHistory) {
21269
21309
  includeCompressed: true
21270
21310
  });
21271
21311
  if (uiUserTurnCount === 0) {
21312
+ if (compressionIndex === -1 && startIndex > getStartupContextLength(apiHistory)) {
21313
+ return -1;
21314
+ }
21272
21315
  return startIndex;
21273
21316
  }
21274
21317
  let realUserPromptCount = 0;
@@ -26594,6 +26637,10 @@ __name(toCommandSuggestion, "toCommandSuggestion");
26594
26637
  function useCommandSuggestions(parserResult, commandContext, getFzfForCommands, getPrefixSuggestions, recentCommands) {
26595
26638
  const [suggestions, setSuggestions] = (0, import_react87.useState)([]);
26596
26639
  const [isLoading, setIsLoading] = (0, import_react87.useState)(false);
26640
+ const commandContextRef = (0, import_react87.useRef)(commandContext);
26641
+ (0, import_react87.useLayoutEffect)(() => {
26642
+ commandContextRef.current = commandContext;
26643
+ }, [commandContext]);
26597
26644
  (0, import_react87.useEffect)(() => {
26598
26645
  const abortController = new AbortController();
26599
26646
  const { signal } = abortController;
@@ -26621,7 +26668,7 @@ function useCommandSuggestions(parserResult, commandContext, getFzfForCommands,
26621
26668
  const argString = rawParts.slice(depth).join(" ");
26622
26669
  const results = await leafCommand.completion(
26623
26670
  {
26624
- ...commandContext,
26671
+ ...commandContextRef.current,
26625
26672
  invocation: {
26626
26673
  raw: `/${rawParts.join(" ")}`,
26627
26674
  name: leafCommand.name,
@@ -26740,13 +26787,7 @@ function useCommandSuggestions(parserResult, commandContext, getFzfForCommands,
26740
26787
  }
26741
26788
  setSuggestions([]);
26742
26789
  return () => abortController.abort();
26743
- }, [
26744
- parserResult,
26745
- commandContext,
26746
- getFzfForCommands,
26747
- getPrefixSuggestions,
26748
- recentCommands
26749
- ]);
26790
+ }, [parserResult, getFzfForCommands, getPrefixSuggestions, recentCommands]);
26750
26791
  return { suggestions, isLoading };
26751
26792
  }
26752
26793
  __name(useCommandSuggestions, "useCommandSuggestions");
@@ -27867,6 +27908,7 @@ function AgentViewProvider({
27867
27908
  const switchToAgent = (0, import_react94.useCallback)(
27868
27909
  (agentId) => {
27869
27910
  if (agents.has(agentId)) {
27911
+ setAgentShellFocused(false);
27870
27912
  setActiveView(agentId);
27871
27913
  }
27872
27914
  },
@@ -27876,14 +27918,24 @@ function AgentViewProvider({
27876
27918
  const ids = ["main", ...agents.keys()];
27877
27919
  const currentIndex = ids.indexOf(activeView);
27878
27920
  const nextIndex = (currentIndex + 1) % ids.length;
27921
+ setAgentShellFocused(false);
27879
27922
  setActiveView(ids[nextIndex]);
27880
27923
  }, [agents, activeView]);
27881
27924
  const switchToPrevious = (0, import_react94.useCallback)(() => {
27882
27925
  const ids = ["main", ...agents.keys()];
27883
27926
  const currentIndex = ids.indexOf(activeView);
27884
27927
  const prevIndex = (currentIndex - 1 + ids.length) % ids.length;
27928
+ setAgentShellFocused(false);
27885
27929
  setActiveView(ids[prevIndex]);
27886
27930
  }, [agents, activeView]);
27931
+ const initialViewRef = (0, import_react94.useRef)(true);
27932
+ (0, import_react94.useEffect)(() => {
27933
+ if (initialViewRef.current) {
27934
+ initialViewRef.current = false;
27935
+ return;
27936
+ }
27937
+ setAgentShellFocused(false);
27938
+ }, [activeView]);
27887
27939
  const registerAgent = (0, import_react94.useCallback)(
27888
27940
  (agentId, interactiveAgent, modelId, color, modelName) => {
27889
27941
  setAgents((prev) => {
@@ -33015,22 +33067,54 @@ var AgentChatMissing = /* @__PURE__ */ __name(({ label }) => /* @__PURE__ */ (0,
33015
33067
 
33016
33068
  // packages/cli/src/ui/components/agent-view/AgentChatView.tsx
33017
33069
  var import_jsx_runtime126 = __toESM(require_jsx_runtime(), 1);
33070
+ var debugLogger31 = createDebugLogger("AGENT_TAB_RENDER");
33018
33071
  var AgentChatView = /* @__PURE__ */ __name(({ agentId }) => {
33019
33072
  const { agents } = useAgentViewState();
33073
+ const { setAgentShellFocused } = useAgentViewActions();
33020
33074
  const agent = agents.get(agentId);
33021
33075
  const interactiveAgent = agent?.interactiveAgent;
33022
33076
  const core = interactiveAgent?.getCore();
33023
33077
  if (!agent || !interactiveAgent || !core) {
33024
33078
  return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(AgentChatMissing, { label: `Agent "${agentId}" not found.` });
33025
33079
  }
33026
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
33027
- AgentChatContent,
33028
- {
33029
- core,
33030
- interactiveAgent,
33031
- instanceKey: agentId,
33032
- modelName: agent.modelName
33033
- }
33080
+ return (
33081
+ // Non-fatal per-tab containment (#9290): the app-level boundary is
33082
+ // FATAL — a render error that reaches it logs [FATAL_RENDER_ERROR]
33083
+ // and exits the whole session. An errored or incomplete teammate
33084
+ // whose transcript throws during render must degrade THIS tab only,
33085
+ // keeping the session and the other tabs alive. Keyed by agentId so
33086
+ // switching tabs starts from fresh boundary state: one crashed tab
33087
+ // must not strand every later tab in its fallback.
33088
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
33089
+ ErrorBoundary,
33090
+ {
33091
+ fallback: (error) => /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(Box_default, { flexDirection: "column", paddingX: 1, children: [
33092
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.status.error, bold: true, children: "Something went wrong while rendering this agent tab." }),
33093
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, children: sanitizeTerminalText(error.message) }),
33094
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, dimColor: true, children: "The session is still running; other tabs are unaffected." }),
33095
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, dimColor: true, children: "Switch to another tab and back to retry rendering this tab." }),
33096
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { color: theme.text.secondary, dimColor: true, children: "Set QWEN_DEBUG_LOG_FILE=1 and reproduce for a full log." })
33097
+ ] }),
33098
+ onError: (error, info) => {
33099
+ setAgentShellFocused(false);
33100
+ debugLogger31.error(
33101
+ `[AGENT_TAB_RENDER_ERROR] agentId=${agentId} ${error.message}
33102
+ ${info.componentStack ?? ""}
33103
+ ${error.stack ?? ""}`
33104
+ );
33105
+ },
33106
+ children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
33107
+ AgentChatContent,
33108
+ {
33109
+ core,
33110
+ interactiveAgent,
33111
+ instanceKey: agentId,
33112
+ modelName: agent.modelName
33113
+ }
33114
+ )
33115
+ },
33116
+ agentId
33117
+ )
33034
33118
  );
33035
33119
  }, "AgentChatView");
33036
33120
 
@@ -33857,7 +33941,7 @@ function installTerminalRedrawOptimizer(stdout) {
33857
33941
  __name(installTerminalRedrawOptimizer, "installTerminalRedrawOptimizer");
33858
33942
 
33859
33943
  // packages/cli/src/ui/utils/terminal-resize-reflow.ts
33860
- var debugLogger31 = createDebugLogger("RESIZE_REFLOW");
33944
+ var debugLogger32 = createDebugLogger("RESIZE_REFLOW");
33861
33945
  var CLEAR_VIEWPORT = base_exports.clearViewport;
33862
33946
  var ESC2 = "\x1B[";
33863
33947
  var CLEAR_TERMINAL = base_exports.clearTerminal;
@@ -33935,7 +34019,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
33935
34019
  let barePrintableCount = 0;
33936
34020
  let handoffUntil = 0;
33937
34021
  let clearUntil = 0;
33938
- debugLogger31.debug("installed", { width: lastWidth, isVP });
34022
+ debugLogger32.debug("installed", { width: lastWidth, isVP });
33939
34023
  const modelFrame = /* @__PURE__ */ __name((content, bypassMin = false) => {
33940
34024
  if (!bypassMin && content.split("\n").length < MIN_FRAME_LINES) return;
33941
34025
  model.content = content;
@@ -33944,7 +34028,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
33944
34028
  }, "modelFrame");
33945
34029
  const onResize = /* @__PURE__ */ __name(() => {
33946
34030
  const width = stdout.columns ?? lastWidth;
33947
- debugLogger31.debug("resize-event", {
34031
+ debugLogger32.debug("resize-event", {
33948
34032
  width,
33949
34033
  lastWidth,
33950
34034
  modeled: model.content.length > 0
@@ -33955,7 +34039,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
33955
34039
  } else {
33956
34040
  pendingAmplify = reflowModel(model, width);
33957
34041
  }
33958
- debugLogger31.debug("shrink", {
34042
+ debugLogger32.debug("shrink", {
33959
34043
  from: lastWidth,
33960
34044
  to: width,
33961
34045
  pendingAmplify,
@@ -33983,9 +34067,9 @@ function installTerminalResizeReflow(stdout, options = {}) {
33983
34067
  barePrintableCount = 0;
33984
34068
  handoffUntil = Date.now() + HANDOFF_WINDOW_MS;
33985
34069
  }
33986
- debugLogger31.debug("match", { printable });
34070
+ debugLogger32.debug("match", { printable });
33987
34071
  if (isVP && Date.now() < clearUntil) {
33988
- debugLogger31.debug("clear-viewport");
34072
+ debugLogger32.debug("clear-viewport");
33989
34073
  chunk = chunk.slice(0, match.index) + CLEAR_VIEWPORT + chunk.slice(match.index + match[0].length);
33990
34074
  } else if (pendingAmplify > 0) {
33991
34075
  const count = countOccurrences(match[0], ERASE_LINE);
@@ -33997,7 +34081,7 @@ function installTerminalResizeReflow(stdout, options = {}) {
33997
34081
  CURSOR_DOWN_PATTERN,
33998
34082
  (_m, n) => `${ESC2}${Number(n) + delta}B`
33999
34083
  );
34000
- debugLogger31.debug("amplify", { original: count, target });
34084
+ debugLogger32.debug("amplify", { original: count, target });
34001
34085
  chunk = prefix + base_exports.eraseLines(target) + chunk.slice(match.index + match[0].length);
34002
34086
  }
34003
34087
  }
@@ -34050,7 +34134,7 @@ var import_react117 = __toESM(require_react(), 1);
34050
34134
  import process12 from "node:process";
34051
34135
  import os4 from "node:os";
34052
34136
  import v8 from "v8";
34053
- var debugLogger32 = createDebugLogger("MEMORY_MONITOR");
34137
+ var debugLogger33 = createDebugLogger("MEMORY_MONITOR");
34054
34138
  var MEMORY_WARNING_THRESHOLD = Math.min(
34055
34139
  7 * 1024 * 1024 * 1024,
34056
34140
  Math.floor(os4.totalmem() * 0.85)
@@ -34072,23 +34156,23 @@ var useMemoryMonitor = /* @__PURE__ */ __name(({
34072
34156
  const rss = memUsage.rss / 1024 / 1024;
34073
34157
  const external = memUsage.external / 1024 / 1024;
34074
34158
  const arrayBuffers = memUsage.arrayBuffers / 1024 / 1024;
34075
- if (debugLogger32.isEnabled()) {
34076
- debugLogger32.debug(
34159
+ if (debugLogger33.isEnabled()) {
34160
+ debugLogger33.debug(
34077
34161
  `[MEMORY_USAGE] heapUsed=${heapUsed.toFixed(1)}MB, heapTotal=${heapTotal.toFixed(1)}MB, rss=${rss.toFixed(1)}MB, external=${external.toFixed(1)}MB, arrayBuffers=${arrayBuffers.toFixed(1)}MB, heapUtilization=${(heapUsed / heapTotal * 100).toFixed(1)}%`
34078
34162
  );
34079
34163
  }
34080
34164
  const now = Date.now();
34081
34165
  if (compactOldItems && memUsage.heapUsed > MEMORY_UI_COMPACT_THRESHOLD() && now - lastCompactRef.current > UI_COMPACT_COOLDOWN_MS) {
34082
34166
  lastCompactRef.current = now;
34083
- if (debugLogger32.isEnabled()) {
34084
- debugLogger32.debug(
34167
+ if (debugLogger33.isEnabled()) {
34168
+ debugLogger33.debug(
34085
34169
  `[UI_COMPACT] heapUsed=${heapUsed.toFixed(1)}MB exceeds ${(MEMORY_UI_COMPACT_THRESHOLD() / 1024 / 1024).toFixed(0)}MB threshold, compacting UI history`
34086
34170
  );
34087
34171
  }
34088
34172
  try {
34089
34173
  compactOldItems();
34090
34174
  } catch (err) {
34091
- debugLogger32.error(
34175
+ debugLogger33.error(
34092
34176
  `[UI_COMPACT] compactOldItems failed: ${err instanceof Error ? err.message : String(err)}`
34093
34177
  );
34094
34178
  }
@@ -34097,7 +34181,7 @@ var useMemoryMonitor = /* @__PURE__ */ __name(({
34097
34181
  const warningIntervalId = setInterval(() => {
34098
34182
  const usage = process12.memoryUsage();
34099
34183
  if (usage.rss > MEMORY_WARNING_THRESHOLD) {
34100
- debugLogger32.warn(
34184
+ debugLogger33.warn(
34101
34185
  `[MEMORY_WARNING] High memory usage detected: ${(usage.rss / (1024 * 1024 * 1024)).toFixed(2)} GB`
34102
34186
  );
34103
34187
  addItem(
@@ -34250,7 +34334,7 @@ var FEEDBACK_SHOW_PROBABILITY = 0.25;
34250
34334
  var MIN_TOOL_CALLS = 10;
34251
34335
  var MIN_USER_MESSAGES = 5;
34252
34336
  var FEEDBACK_COOLDOWN_HOURS = 24;
34253
- var debugLogger33 = createDebugLogger("FEEDBACK_DIALOG");
34337
+ var debugLogger34 = createDebugLogger("FEEDBACK_DIALOG");
34254
34338
  var lastMessageIsAIResponse = /* @__PURE__ */ __name((history) => history.length > 0 && history[history.length - 1].type === "gemini" /* GEMINI */, "lastMessageIsAIResponse");
34255
34339
  var getFeedbackLastShownTimestampFromFile = /* @__PURE__ */ __name(() => {
34256
34340
  try {
@@ -34262,7 +34346,7 @@ var getFeedbackLastShownTimestampFromFile = /* @__PURE__ */ __name(() => {
34262
34346
  }
34263
34347
  } catch (error) {
34264
34348
  if (isNodeError(error) && error.code !== "ENOENT") {
34265
- debugLogger33.warn(
34349
+ debugLogger34.warn(
34266
34350
  "Failed to read feedbackLastShownTimestamp from settings file:",
34267
34351
  error
34268
34352
  );
@@ -34770,12 +34854,14 @@ function useResumeCommand(options) {
34770
34854
  config,
34771
34855
  settings,
34772
34856
  historyManager,
34857
+ loadHistory: loadHistoryOverride,
34773
34858
  startNewSession,
34774
34859
  clearPendingState,
34775
34860
  setSessionName,
34776
34861
  remount
34777
34862
  } = options;
34778
- const { addItem, clearItems, loadHistory } = historyManager;
34863
+ const { addItem, clearItems } = historyManager;
34864
+ const loadHistory = loadHistoryOverride ?? historyManager.loadHistory;
34779
34865
  const handleResume = (0, import_react127.useCallback)(
34780
34866
  async (sessionId) => {
34781
34867
  if (!config) {
@@ -35111,7 +35197,7 @@ __name(useDeleteCommand, "useDeleteCommand");
35111
35197
  init_esbuild_shims();
35112
35198
  var import_react129 = __toESM(require_react(), 1);
35113
35199
  import process15 from "node:process";
35114
- var debugLogger34 = createDebugLogger("SLASH_COMMAND_PROCESSOR");
35200
+ var debugLogger35 = createDebugLogger("SLASH_COMMAND_PROCESSOR");
35115
35201
  function hasUserPromptExpansionHooks(config) {
35116
35202
  return !!config && !config.getDisableAllHooks?.() && (config.hasHooksForEvent?.("UserPromptExpansion") ?? false);
35117
35203
  }
@@ -35124,18 +35210,6 @@ function serializeHistoryItemForRecording(item) {
35124
35210
  return clone;
35125
35211
  }
35126
35212
  __name(serializeHistoryItemForRecording, "serializeHistoryItemForRecording");
35127
- var SLASH_COMMANDS_SKIP_RECORDING = /* @__PURE__ */ new Set([
35128
- "quit",
35129
- "exit",
35130
- "clear",
35131
- "reset",
35132
- "new",
35133
- "resume",
35134
- "delete",
35135
- "branch",
35136
- "btw",
35137
- "history"
35138
- ]);
35139
35213
  var SLASH_COMMAND_ROOTS_HIDE_INVOCATION = /* @__PURE__ */ new Set([
35140
35214
  "auth",
35141
35215
  "diff",
@@ -35694,7 +35768,7 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
35694
35768
  }
35695
35769
  setCommands(commandService.getCommandsForMode("interactive"));
35696
35770
  } catch (error) {
35697
- debugLogger34.error("Failed to load slash commands:", error);
35771
+ debugLogger35.error("Failed to load slash commands:", error);
35698
35772
  } finally {
35699
35773
  if (!controller.signal.aborted) {
35700
35774
  resolveCommandReloads(reloadTrigger);
@@ -36126,7 +36200,7 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
36126
36200
  }
36127
36201
  invocationSentToModel = true;
36128
36202
  if (invocationItemId !== void 0) {
36129
- debugLogger34.debug(
36203
+ debugLogger35.debug(
36130
36204
  `Marked slash command invocation as model-sent: /${resolvedCommandPath.join(
36131
36205
  " "
36132
36206
  )}`
@@ -36258,7 +36332,8 @@ ${commandToExecute.subCommands.map((sc) => ` - ${sc.name}: ${sc.description ||
36258
36332
  if (config?.getChatRecordingService) {
36259
36333
  const chatRecorder = config.getChatRecordingService();
36260
36334
  const primaryCommand = resolvedCommandPath[0] || trimmed.replace(/^[/?]/, "").split(/\s+/u)[0] || trimmed;
36261
- const shouldRecord = !delegatedToRecursiveInvocation && !SLASH_COMMANDS_SKIP_RECORDING.has(primaryCommand);
36335
+ const isBuiltInAdvisor = primaryCommand === "advisor" && commandToExecute?.kind === "built-in" /* BUILT_IN */;
36336
+ const shouldRecord = !delegatedToRecursiveInvocation && !isBuiltInAdvisor && !SLASH_COMMANDS_SKIP_RECORDING.has(primaryCommand);
36262
36337
  try {
36263
36338
  if (shouldRecord) {
36264
36339
  chatRecorder?.recordSlashCommand({
@@ -36275,7 +36350,7 @@ ${commandToExecute.subCommands.map((sc) => ` - ${sc.name}: ${sc.description ||
36275
36350
  });
36276
36351
  }
36277
36352
  } catch (recordError) {
36278
- debugLogger34.error(
36353
+ debugLogger35.error(
36279
36354
  "[slashCommand] Failed to record slash command:",
36280
36355
  recordError
36281
36356
  );
@@ -36452,7 +36527,7 @@ import os5 from "node:os";
36452
36527
  import fs16 from "node:fs";
36453
36528
  var OUTPUT_UPDATE_INTERVAL_MS = 1e3;
36454
36529
  var MAX_OUTPUT_LENGTH = 1e4;
36455
- var debugLogger35 = createDebugLogger("SHELL_COMMAND_PROCESSOR");
36530
+ var debugLogger36 = createDebugLogger("SHELL_COMMAND_PROCESSOR");
36456
36531
  function copyString(value) {
36457
36532
  return value.split("").join("");
36458
36533
  }
@@ -36603,7 +36678,7 @@ var useShellCommandProcessor = /* @__PURE__ */ __name((addItemToHistory, setPend
36603
36678
  config.getShouldUseNodePtyShell(),
36604
36679
  shellExecutionConfig
36605
36680
  );
36606
- debugLogger35.debug(terminalHeight, terminalWidth);
36681
+ debugLogger36.debug(terminalHeight, terminalWidth);
36607
36682
  executionPid = pid;
36608
36683
  if (pid) {
36609
36684
  setActiveShellPtyId(pid);
@@ -36757,7 +36832,7 @@ var useStateAndRef = /* @__PURE__ */ __name((initialValue) => {
36757
36832
  init_esbuild_shims();
36758
36833
  var import_react134 = __toESM(require_react(), 1);
36759
36834
  import * as path11 from "node:path";
36760
- var debugLogger36 = createDebugLogger("REACT_TOOL_SCHEDULER");
36835
+ var debugLogger37 = createDebugLogger("REACT_TOOL_SCHEDULER");
36761
36836
  function useReactToolScheduler(onComplete, config, getPreferredEditor, onEditorClose, onToolResultFullTurnModel) {
36762
36837
  const [toolCallsForDisplay, setToolCallsForDisplay] = (0, import_react134.useState)([]);
36763
36838
  const outputUpdateHandler = (0, import_react134.useCallback)(
@@ -36836,7 +36911,7 @@ function useReactToolScheduler(onComplete, config, getPreferredEditor, onEditorC
36836
36911
  if (!modelOverride?.endsWith("\0")) {
36837
36912
  void scheduler.schedule(request, signal).catch((error) => {
36838
36913
  if (signal.aborted) return;
36839
- debugLogger36.error(
36914
+ debugLogger37.error(
36840
36915
  `Tool scheduling failed: ${error instanceof Error ? error.message : String(error)}`
36841
36916
  );
36842
36917
  });
@@ -36849,7 +36924,7 @@ function useReactToolScheduler(onComplete, config, getPreferredEditor, onEditorC
36849
36924
  });
36850
36925
  await scheduler.schedule(request, signal, runtimeView);
36851
36926
  } catch (error) {
36852
- debugLogger36.error(
36927
+ debugLogger37.error(
36853
36928
  `Full-turn tool scheduling failed: ${error instanceof Error ? error.message : String(error)}`
36854
36929
  );
36855
36930
  const message = "Full-turn tool scheduling failed. The tool was not executed.";
@@ -36917,7 +36992,7 @@ function mapCoreStatusToDisplayStatus(coreStatus) {
36917
36992
  return "Pending" /* Pending */;
36918
36993
  default: {
36919
36994
  const exhaustiveCheck = coreStatus;
36920
- debugLogger36.warn(`Unknown core status encountered: ${exhaustiveCheck}`);
36995
+ debugLogger37.warn(`Unknown core status encountered: ${exhaustiveCheck}`);
36921
36996
  return "Error" /* Error */;
36922
36997
  }
36923
36998
  }
@@ -37265,11 +37340,11 @@ function useMessageQueue() {
37265
37340
  __name(useMessageQueue, "useMessageQueue");
37266
37341
 
37267
37342
  // packages/cli/src/ui/hooks/useGeminiStream.ts
37268
- var debugLogger37 = createDebugLogger("GEMINI_STREAM");
37343
+ var debugLogger38 = createDebugLogger("GEMINI_STREAM");
37269
37344
  function applyModelOverride(modelOverrideRef, inlineActiveRef, value, isInline) {
37270
37345
  modelOverrideRef.current = value;
37271
37346
  inlineActiveRef.current = isInline;
37272
- debugLogger37.debug(
37347
+ debugLogger38.debug(
37273
37348
  `model override ${value === void 0 ? "cleared" : `set to ${value}`} (inline=${isInline})`
37274
37349
  );
37275
37350
  }
@@ -37478,20 +37553,20 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
37478
37553
  expectedRevision: binding.permit.revision
37479
37554
  });
37480
37555
  } catch (error) {
37481
- debugLogger37.warn("Failed to pause invalid Goal tool batch", error);
37556
+ debugLogger38.warn("Failed to pause invalid Goal tool batch", error);
37482
37557
  }
37483
37558
  }
37484
37559
  try {
37485
37560
  await config.getChatRecordingService()?.flush();
37486
37561
  } catch (error) {
37487
- debugLogger37.warn("Failed to flush invalid Goal tool batch", error);
37562
+ debugLogger38.warn("Failed to flush invalid Goal tool batch", error);
37488
37563
  }
37489
37564
  const currentPermit = runtime.permitForTurn(binding.turnKey);
37490
37565
  if (currentPermit && sameGoalPermit(currentPermit, binding.permit)) {
37491
37566
  await runtime.finishTurn(binding.permit);
37492
37567
  }
37493
37568
  } catch (error) {
37494
- debugLogger37.warn("Failed to close invalid Goal tool batch", error);
37569
+ debugLogger38.warn("Failed to close invalid Goal tool batch", error);
37495
37570
  } finally {
37496
37571
  releaseGoalTurn(binding);
37497
37572
  }
@@ -37505,7 +37580,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
37505
37580
  const runtime = await config.getGoalRuntimeReady();
37506
37581
  await runtime.releaseTurn(turnKey);
37507
37582
  } catch (error) {
37508
- debugLogger37.warn(
37583
+ debugLogger38.warn(
37509
37584
  `Failed to release undelivered Goal turn ${turnKey}`,
37510
37585
  error
37511
37586
  );
@@ -37653,7 +37728,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
37653
37728
  const current = modelOverrideRef.current;
37654
37729
  return !inlineModelOverrideActiveRef.current && (!current?.endsWith("\0") || current === model);
37655
37730
  }, []);
37656
- const handledProviderToolCallIdsRef = (0, import_react136.useRef)(/* @__PURE__ */ new Set());
37731
+ const handledToolCallFingerprintsRef = (0, import_react136.useRef)(/* @__PURE__ */ new Map());
37657
37732
  const duplicateProviderToolCallResponseIdsRef = (0, import_react136.useRef)(
37658
37733
  /* @__PURE__ */ new Set()
37659
37734
  );
@@ -37679,22 +37754,48 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
37679
37754
  stats: sessionStates
37680
37755
  } = useSessionStats();
37681
37756
  const storage = config.storage;
37757
+ const toolBatchIdByCallIdRef = (0, import_react136.useRef)(/* @__PURE__ */ new Map());
37758
+ const toolBatchCounterRef = (0, import_react136.useRef)(0);
37759
+ const toolBatchNonceRef = (0, import_react136.useRef)(Math.random().toString(36).slice(2));
37760
+ const registerToolBatch = (0, import_react136.useCallback)(
37761
+ (requests) => {
37762
+ const batchNumber = ++toolBatchCounterRef.current;
37763
+ const batchId = `tool-batch-${toolBatchNonceRef.current}-${batchNumber}`;
37764
+ for (const request of Array.isArray(requests) ? requests : [requests]) {
37765
+ toolBatchIdByCallIdRef.current.set(request.callId, batchId);
37766
+ }
37767
+ },
37768
+ []
37769
+ );
37770
+ const getToolBatchId = (0, import_react136.useCallback)(
37771
+ (callId) => toolBatchIdByCallIdRef.current.get(callId),
37772
+ []
37773
+ );
37682
37774
  const [toolCalls, scheduleToolCalls, markToolsAsSubmitted] = useReactToolScheduler(
37683
37775
  async (completedToolCallsFromScheduler) => {
37684
37776
  if (completedToolCallsFromScheduler.length > 0) {
37685
37777
  const releaseToolCompletionActivity = isSubmittingQueryRef.current ? retainSubmissionActivity(submissionLeaseGenerationRef.current) : void 0;
37778
+ const batchId = getToolBatchId(
37779
+ completedToolCallsFromScheduler[0].request.callId
37780
+ );
37686
37781
  try {
37687
37782
  const projectRoot = config.getProjectRoot();
37688
37783
  const toolGroupDisplay = mapToDisplay(
37689
37784
  completedToolCallsFromScheduler,
37690
37785
  projectRoot
37691
37786
  );
37787
+ toolGroupDisplay.batchId = batchId;
37692
37788
  addItem(toolGroupDisplay, Date.now());
37693
37789
  await handleCompletedTools(
37694
37790
  completedToolCallsFromScheduler
37695
37791
  );
37696
37792
  } finally {
37697
37793
  releaseToolCompletionActivity?.();
37794
+ for (const tc of completedToolCallsFromScheduler) {
37795
+ if (toolBatchIdByCallIdRef.current.get(tc.request.callId) === batchId) {
37796
+ toolBatchIdByCallIdRef.current.delete(tc.request.callId);
37797
+ }
37798
+ }
37698
37799
  }
37699
37800
  }
37700
37801
  },
@@ -37703,10 +37804,15 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
37703
37804
  onEditorClose,
37704
37805
  canUseToolResultFullTurnModel
37705
37806
  );
37706
- const pendingToolCallGroupDisplay = (0, import_react136.useMemo)(
37707
- () => toolCalls.length ? mapToDisplay(toolCalls, config.getProjectRoot()) : void 0,
37708
- [toolCalls, config]
37709
- );
37807
+ const pendingToolCallGroupDisplay = (0, import_react136.useMemo)(() => {
37808
+ if (!toolCalls.length) return void 0;
37809
+ const group = mapToDisplay(
37810
+ toolCalls,
37811
+ config.getProjectRoot()
37812
+ );
37813
+ group.batchId = getToolBatchId(toolCalls[0].request.callId);
37814
+ return group;
37815
+ }, [toolCalls, config, getToolBatchId]);
37710
37816
  const activeToolPtyId = (0, import_react136.useMemo)(() => {
37711
37817
  const executingShellTool = toolCalls?.find(
37712
37818
  (tc) => tc.status === "executing" && tc.request.name === "run_shell_command"
@@ -37944,7 +38050,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
37944
38050
  if (signal.aborted) {
37945
38051
  return { parts: null, shouldProceed: false };
37946
38052
  }
37947
- debugLogger37.debug("vision bridge: gate matched, running conversion");
38053
+ debugLogger38.debug("vision bridge: gate matched, running conversion");
37948
38054
  const fullTurnModel = config.getDefaultVisionBridgeModel();
37949
38055
  if (fullTurnModel?.agentCapable) {
37950
38056
  const fullTurnParts = (Array.isArray(parts) ? parts : [parts]).map(
@@ -37969,7 +38075,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
37969
38075
  return { parts: fullTurnParts, shouldProceed: true };
37970
38076
  }
37971
38077
  const bridgeResult = await runVisionBridge({ config, parts, signal });
37972
- debugLogger37.debug(
38078
+ debugLogger38.debug(
37973
38079
  `vision bridge: status=${bridgeResult.status} applied=${bridgeResult.applied} model=${bridgeResult.modelId ?? "(none)"}`
37974
38080
  );
37975
38081
  if (bridgeResult.status !== "skipped" || bridgeResult.egressOccurred) {
@@ -38033,6 +38139,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
38033
38139
  isClientInitiated: true,
38034
38140
  prompt_id
38035
38141
  };
38142
+ registerToolBatch(toolCallRequest);
38036
38143
  scheduleToolCalls([toolCallRequest], abortSignal);
38037
38144
  return {
38038
38145
  queryToSend: null,
@@ -38058,7 +38165,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
38058
38165
  true
38059
38166
  );
38060
38167
  } else {
38061
- debugLogger37.warn(
38168
+ debugLogger38.warn(
38062
38169
  `ignoring model override '${slashCommandResult.modelOverride}': not a model on the active provider`
38063
38170
  );
38064
38171
  }
@@ -38152,6 +38259,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
38152
38259
  handleSlashCommand,
38153
38260
  logger,
38154
38261
  shellModeActive,
38262
+ registerToolBatch,
38155
38263
  scheduleToolCalls,
38156
38264
  applyVisionBridgeIfNeeded
38157
38265
  ]
@@ -38295,8 +38403,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
38295
38403
  setThought((prev) => {
38296
38404
  const incomingDescription = incoming.description ? clampLoadingThoughtDescription(incoming.description) : incoming.description;
38297
38405
  if (!prev) {
38298
- if (debugLogger37.isEnabled()) {
38299
- debugLogger37.debug(
38406
+ if (debugLogger38.isEnabled()) {
38407
+ debugLogger38.debug(
38300
38408
  `[THOUGHT_MERGE] New thought: subjectLength=${incoming.subject?.length ?? 0}, description length=${incomingDescription?.length ?? 0}`
38301
38409
  );
38302
38410
  }
@@ -38309,8 +38417,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
38309
38417
  const description = clampLoadingThoughtDescription(
38310
38418
  `${prev.description ?? ""}${incomingDescription ?? ""}`
38311
38419
  );
38312
- if (debugLogger37.isEnabled()) {
38313
- debugLogger37.debug(
38420
+ if (debugLogger38.isEnabled()) {
38421
+ debugLogger38.debug(
38314
38422
  `[THOUGHT_MERGE] Accumulating thought: prev length=${prev.description?.length ?? 0}, incoming length=${incomingDescription?.length ?? 0}, total length=${description.length}`
38315
38423
  );
38316
38424
  }
@@ -38471,7 +38579,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
38471
38579
  eventValue.error.message,
38472
38580
  formattedErrorText
38473
38581
  ).catch((err) => {
38474
- debugLogger37.warn(`StopFailure hook failed: ${err}`);
38582
+ debugLogger38.warn(`StopFailure hook failed: ${err}`);
38475
38583
  });
38476
38584
  },
38477
38585
  [
@@ -39065,19 +39173,34 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
39065
39173
  const executableToolCallRequests = [];
39066
39174
  const duplicateResponses = [];
39067
39175
  let duplicatePromptId;
39068
- const historyCallIdsWithResponse = geminiClient ? geminiClient.getHistoryFunctionResponseIds() : /* @__PURE__ */ new Set();
39069
- const handledProviderIds = /* @__PURE__ */ new Set([
39070
- ...handledProviderToolCallIdsRef.current,
39071
- ...historyCallIdsWithResponse
39072
- ]);
39176
+ const handledToolCallFingerprints = new Map(
39177
+ geminiClient ? geminiClient.getHistoryToolCallFingerprints() : []
39178
+ );
39179
+ for (const [
39180
+ providerCallId,
39181
+ fingerprint
39182
+ ] of handledToolCallFingerprintsRef.current) {
39183
+ if (!handledToolCallFingerprints.has(providerCallId)) {
39184
+ handledToolCallFingerprints.set(providerCallId, fingerprint);
39185
+ }
39186
+ }
39187
+ const isReplayOfHandledRequest = /* @__PURE__ */ __name((request) => request.providerCallId ? isReplayOfHandledToolCall(
39188
+ handledToolCallFingerprints,
39189
+ request.providerCallId,
39190
+ getCachedToolCallFingerprint(
39191
+ request,
39192
+ request.name,
39193
+ request.args
39194
+ )
39195
+ ) : false, "isReplayOfHandledRequest");
39073
39196
  const repeatedDuplicateRequest = findRepeatedDuplicateProviderToolCall(
39074
39197
  toolCallRequests,
39075
39198
  (request) => request.providerCallId,
39076
- handledProviderIds,
39199
+ isReplayOfHandledRequest,
39077
39200
  duplicateProviderToolCallResponseIdsRef.current
39078
39201
  );
39079
39202
  if (repeatedDuplicateRequest?.providerCallId) {
39080
- debugLogger37.debug(
39203
+ debugLogger38.debug(
39081
39204
  `[processGeminiStreamEvents] Dropping batch after repeated duplicate provider tool-call id: ${repeatedDuplicateRequest.providerCallId} (tool: ${repeatedDuplicateRequest.name})`
39082
39205
  );
39083
39206
  loopDetectedRef.current = true;
@@ -39092,13 +39215,13 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
39092
39215
  executableToolCallRequests.push(request);
39093
39216
  continue;
39094
39217
  }
39095
- if (handledProviderToolCallIdsRef.current.has(providerCallId) || historyCallIdsWithResponse.has(providerCallId)) {
39218
+ if (isReplayOfHandledRequest(request)) {
39096
39219
  markDuplicateProviderToolCallResponseSent(
39097
39220
  providerCallId,
39098
39221
  duplicateProviderToolCallResponseIdsRef.current
39099
39222
  );
39100
39223
  const response = createDuplicateProviderToolCallResponse(request);
39101
- debugLogger37.debug(
39224
+ debugLogger38.debug(
39102
39225
  `[processGeminiStreamEvents] Suppressing duplicate provider tool-call id: ${providerCallId} (tool: ${request.name})`
39103
39226
  );
39104
39227
  dualOutput?.emitToolResult(request, response);
@@ -39106,7 +39229,21 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
39106
39229
  duplicatePromptId ??= request.prompt_id;
39107
39230
  continue;
39108
39231
  }
39109
- handledProviderToolCallIdsRef.current.add(providerCallId);
39232
+ const requestFingerprint = getCachedToolCallFingerprint(
39233
+ request,
39234
+ request.name,
39235
+ request.args
39236
+ );
39237
+ recordHandledToolCall(
39238
+ handledToolCallFingerprints,
39239
+ providerCallId,
39240
+ requestFingerprint
39241
+ );
39242
+ recordHandledToolCall(
39243
+ handledToolCallFingerprintsRef.current,
39244
+ providerCallId,
39245
+ requestFingerprint
39246
+ );
39110
39247
  executableToolCallRequests.push(request);
39111
39248
  }
39112
39249
  if (duplicateResponses.length > 0) {
@@ -39144,6 +39281,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
39144
39281
  }
39145
39282
  }
39146
39283
  scheduledToolContinuation = true;
39284
+ registerToolBatch(executableToolCallRequests);
39147
39285
  scheduleToolCalls(
39148
39286
  executableToolCallRequests,
39149
39287
  signal,
@@ -39161,6 +39299,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
39161
39299
  handleThoughtEvent,
39162
39300
  handleUserCancelledEvent,
39163
39301
  handleErrorEvent,
39302
+ registerToolBatch,
39164
39303
  scheduleToolCalls,
39165
39304
  geminiClient,
39166
39305
  handleChatCompressionEvent,
@@ -39436,7 +39575,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
39436
39575
  lastTurnUserItemRef.current = null;
39437
39576
  canUndoLastLoggedUserMessageRef.current = false;
39438
39577
  turnSawContentEventRef.current = false;
39439
- handledProviderToolCallIdsRef.current.clear();
39578
+ handledToolCallFingerprintsRef.current.clear();
39440
39579
  duplicateProviderToolCallResponseIdsRef.current.clear();
39441
39580
  pendingDuplicateToolResponsesRef.current = [];
39442
39581
  immediateDuplicateToolResponsesRef.current = null;
@@ -39738,8 +39877,17 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
39738
39877
  callId: request.callId,
39739
39878
  toolName: request.name,
39740
39879
  responseParts: response.responseParts,
39741
- persistedOutputFiles: response.persistedOutputFiles
39880
+ persistedOutputFiles: response.persistedOutputFiles,
39881
+ artifacts: response.artifacts
39742
39882
  })
39883
+ ),
39884
+ new Map(
39885
+ immediateDuplicateToolResponses.responses.flatMap(
39886
+ ({ request }) => {
39887
+ const promptId = request.prompt_id ?? immediateDuplicateToolResponses.promptId;
39888
+ return promptId ? [[request.callId, promptId]] : [];
39889
+ }
39890
+ )
39743
39891
  )
39744
39892
  );
39745
39893
  const responseParts = finalized.flatMap(
@@ -39754,6 +39902,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
39754
39902
  callId: request.callId,
39755
39903
  status: response.error ? "error" : "success",
39756
39904
  resultDisplay: response.resultDisplay,
39905
+ persistedOutputFiles: finalized[index].persistedOutputFiles,
39906
+ artifacts: finalized[index].artifacts,
39757
39907
  error: response.error,
39758
39908
  errorType: response.errorType,
39759
39909
  executionStatus: response.executionStatus
@@ -39795,7 +39945,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
39795
39945
  if (onComplete) {
39796
39946
  submitPromptOnCompleteRef.current = null;
39797
39947
  void onComplete().catch((err) => {
39798
- debugLogger37.error("onComplete callback failed:", err);
39948
+ debugLogger38.error("onComplete callback failed:", err);
39799
39949
  });
39800
39950
  }
39801
39951
  if (geminiClient) {
@@ -39982,7 +40132,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
39982
40132
  "proceed_once" /* ProceedOnce */
39983
40133
  );
39984
40134
  } catch (error) {
39985
- debugLogger37.error(
40135
+ debugLogger38.error(
39986
40136
  `Failed to auto-approve tool call ${call.request.callId}:`,
39987
40137
  error
39988
40138
  );
@@ -40011,7 +40161,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
40011
40161
  );
40012
40162
  const dedupedCallIds = dedupedTools.map((tc) => tc.request.callId);
40013
40163
  if (dedupedCallIds.length > 0) {
40014
- debugLogger37.warn(
40164
+ debugLogger38.warn(
40015
40165
  `[REPAIR] Dropping ${dedupedCallIds.length} late tool result(s) whose callId already has a functionResponse in history: ${dedupedCallIds.join(", ")}`
40016
40166
  );
40017
40167
  for (const tc of dedupedTools) {
@@ -40289,11 +40439,11 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
40289
40439
  memoryWriteCandidates,
40290
40440
  config.getProjectRoot()
40291
40441
  );
40292
- debugLogger37.debug(
40442
+ debugLogger38.debug(
40293
40443
  `Checked marked context-file memory tool batch; matched=${matchedContextFileWrite}`
40294
40444
  );
40295
40445
  if (matchedContextFileWrite) {
40296
- debugLogger37.debug(
40446
+ debugLogger38.debug(
40297
40447
  "Refreshing memory after context-file memory write"
40298
40448
  );
40299
40449
  await refreshMemoryInstruction(config, {
@@ -40304,7 +40454,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
40304
40454
  if (newSuccessfulMemorySaves.length > 0) {
40305
40455
  if (!didRefreshManagedMemory) {
40306
40456
  void performMemoryRefresh().catch((err) => {
40307
- debugLogger37.warn(`save_memory refresh failed: ${err}`);
40457
+ debugLogger38.warn(`save_memory refresh failed: ${err}`);
40308
40458
  });
40309
40459
  }
40310
40460
  newSuccessfulMemorySaves.forEach(
@@ -40413,8 +40563,14 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
40413
40563
  callId: request.callId,
40414
40564
  toolName: request.name,
40415
40565
  responseParts: response.responseParts,
40416
- persistedOutputFiles: response.persistedOutputFiles
40417
- }))
40566
+ persistedOutputFiles: response.persistedOutputFiles,
40567
+ artifacts: response.artifacts
40568
+ })),
40569
+ new Map(
40570
+ orderedResponses.flatMap(
40571
+ ({ request }) => request.prompt_id ? [[request.callId, request.prompt_id]] : []
40572
+ )
40573
+ )
40418
40574
  );
40419
40575
  const responsesToSend = finalizedResponses.flatMap(
40420
40576
  (entry) => entry.responseParts
@@ -40427,6 +40583,8 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
40427
40583
  callId: request.callId,
40428
40584
  status,
40429
40585
  resultDisplay: response.resultDisplay,
40586
+ persistedOutputFiles: finalizedResponses[index].persistedOutputFiles,
40587
+ artifacts: finalizedResponses[index].artifacts,
40430
40588
  error: response.error,
40431
40589
  errorType: response.errorType,
40432
40590
  executionStatus: response.executionStatus
@@ -40480,7 +40638,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
40480
40638
  for (const toolCall of geminiTools) {
40481
40639
  if ("modelOverride" in toolCall.response) {
40482
40640
  if (inlineModelOverrideActiveRef.current || modelOverrideRef.current?.endsWith("\0")) {
40483
- debugLogger37.debug(
40641
+ debugLogger38.debug(
40484
40642
  `skill-tool model override (${String(
40485
40643
  toolCall.response.modelOverride
40486
40644
  )}) blocked: ${inlineModelOverrideActiveRef.current ? "inline override active" : "full-turn override active"}`
@@ -40853,7 +41011,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
40853
41011
  try {
40854
41012
  await scheduler.enableDurable(cronSessionIdRef.current);
40855
41013
  } catch (err) {
40856
- debugLogger37.warn(
41014
+ debugLogger38.warn(
40857
41015
  `Durable cron init failed \u2014 persistent tasks will not fire in this session: ${err}`
40858
41016
  );
40859
41017
  }
@@ -41004,7 +41162,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
41004
41162
  setNotificationTrigger((n) => n + 1);
41005
41163
  }, "onGoalClaimDeferred")
41006
41164
  }).catch((error) => {
41007
- debugLogger37.warn("Failed to admit cron notification", error);
41165
+ debugLogger38.warn("Failed to admit cron notification", error);
41008
41166
  });
41009
41167
  return;
41010
41168
  }
@@ -41037,7 +41195,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
41037
41195
  setNotificationTrigger((n) => n + 1);
41038
41196
  }, "onGoalClaimDeferred")
41039
41197
  }).catch((error) => {
41040
- debugLogger37.warn("Failed to admit background notification", error);
41198
+ debugLogger38.warn("Failed to admit background notification", error);
41041
41199
  });
41042
41200
  });
41043
41201
  }
@@ -41110,7 +41268,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
41110
41268
  setTeammateTrigger((n) => n + 1);
41111
41269
  }, "onGoalClaimDeferred")
41112
41270
  }).catch((error) => {
41113
- debugLogger37.warn("Failed to admit teammate notification", error);
41271
+ debugLogger38.warn("Failed to admit teammate notification", error);
41114
41272
  });
41115
41273
  });
41116
41274
  }
@@ -41149,7 +41307,7 @@ var DIGIT_MULTIPLIER = 10;
41149
41307
  var DEFAULT_COUNT = 1;
41150
41308
  var MAX_COUNT = 9999;
41151
41309
  var DIGIT_1_TO_9 = /^[1-9]$/;
41152
- var debugLogger38 = createDebugLogger("VIM_MODE");
41310
+ var debugLogger39 = createDebugLogger("VIM_MODE");
41153
41311
  var CMD_TYPES = {
41154
41312
  DELETE_WORD_FORWARD: "dw",
41155
41313
  DELETE_WORD_BACKWARD: "db",
@@ -41292,7 +41450,7 @@ function readClipboard() {
41292
41450
  }
41293
41451
  return "";
41294
41452
  } catch (e) {
41295
- debugLogger38.warn("readClipboard failed:", e);
41453
+ debugLogger39.warn("readClipboard failed:", e);
41296
41454
  return "";
41297
41455
  }
41298
41456
  }
@@ -41338,7 +41496,7 @@ function writeClipboard(text) {
41338
41496
  const [bin, ...args] = linuxWriteCmd;
41339
41497
  const child = execFile7(bin, args, { timeout: 500 }, (err) => {
41340
41498
  if (err && !writeOsc52(text)) {
41341
- debugLogger38.warn(
41499
+ debugLogger39.warn(
41342
41500
  "writeClipboard: cached tool and OSC 52 both failed"
41343
41501
  );
41344
41502
  }
@@ -41347,11 +41505,11 @@ function writeClipboard(text) {
41347
41505
  child.unref();
41348
41506
  } else {
41349
41507
  if (!writeOsc52(text)) {
41350
- debugLogger38.warn("OSC 52 clipboard write failed - no TTY available");
41508
+ debugLogger39.warn("OSC 52 clipboard write failed - no TTY available");
41351
41509
  }
41352
41510
  }
41353
41511
  } catch (e) {
41354
- debugLogger38.warn("writeClipboard failed:", e);
41512
+ debugLogger39.warn("writeClipboard failed:", e);
41355
41513
  }
41356
41514
  }
41357
41515
  __name(writeClipboard, "writeClipboard");
@@ -42066,7 +42224,7 @@ function useVim(buffer, onSubmit) {
42066
42224
  try {
42067
42225
  normalizedKey = normalizeKey(key);
42068
42226
  } catch (error) {
42069
- debugLogger38.warn("Malformed key input in vim mode:", key, error);
42227
+ debugLogger39.warn("Malformed key input in vim mode:", key, error);
42070
42228
  return false;
42071
42229
  }
42072
42230
  const s = stateRef.current;
@@ -43399,7 +43557,7 @@ __name(useCommandMigration, "useCommandMigration");
43399
43557
 
43400
43558
  // packages/cli/src/services/notificationService.ts
43401
43559
  init_esbuild_shims();
43402
- var debugLogger39 = createDebugLogger("NOTIFICATION_SERVICE");
43560
+ var debugLogger40 = createDebugLogger("NOTIFICATION_SERVICE");
43403
43561
  var DEFAULT_TITLE = "Qwen Code";
43404
43562
  function sendNotification(opts, terminal, enabled) {
43405
43563
  if (!enabled) {
@@ -43427,7 +43585,7 @@ function sendNotification(opts, terminal, enabled) {
43427
43585
  return "terminal_bell";
43428
43586
  }
43429
43587
  } catch (error) {
43430
- debugLogger39.warn("Failed to send notification:", error);
43588
+ debugLogger40.warn("Failed to send notification:", error);
43431
43589
  return "error";
43432
43590
  }
43433
43591
  }
@@ -44379,7 +44537,7 @@ var import_jsx_runtime132 = __toESM(require_jsx_runtime(), 1);
44379
44537
  var MCP_BATCH_FLUSH_MS = 16;
44380
44538
  var STARTUP_PROFILE_FINALIZE_CAP_MS = 35e3;
44381
44539
  var CTRL_EXIT_PROMPT_DURATION_MS = 1e3;
44382
- var debugLogger40 = createDebugLogger("APP_CONTAINER");
44540
+ var debugLogger41 = createDebugLogger("APP_CONTAINER");
44383
44541
  function isRenderModeToggleKey(key) {
44384
44542
  return keyMatchers["toggleRenderMode" /* TOGGLE_RENDER_MODE */](key) || key.name === "m" && key.meta && !key.ctrl && !key.paste;
44385
44543
  }
@@ -44531,7 +44689,7 @@ function useQueuedSubmissionDrain({
44531
44689
  }
44532
44690
  );
44533
44691
  void Promise.resolve(request).catch((error) => {
44534
- debugLogger40.warn("Queued submission failed during admission", error);
44692
+ debugLogger41.warn("Queued submission failed during admission", error);
44535
44693
  }).finally(() => {
44536
44694
  queueDrainingRef.current = false;
44537
44695
  if (!admissionFailed) {
@@ -44754,6 +44912,20 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
44754
44912
  const [showWorktreeExitDialog, setShowWorktreeExitDialog] = (0, import_react162.useState)(false);
44755
44913
  const [workflowKeywordActive, setWorkflowKeywordActive] = (0, import_react162.useState)(false);
44756
44914
  const pendingWorktreeNoticeRef = (0, import_react162.useRef)(null);
44915
+ const contextFilesAnnouncedRef = (0, import_react162.useRef)(false);
44916
+ (0, import_react162.useEffect)(() => {
44917
+ contextFilesAnnouncedRef.current = false;
44918
+ }, [sessionStats.sessionId]);
44919
+ const { loadHistory: rawLoadHistory } = historyManager;
44920
+ const loadHistoryWithLatchReconciliation = (0, import_react162.useCallback)(
44921
+ (newHistory) => {
44922
+ rawLoadHistory(newHistory);
44923
+ contextFilesAnnouncedRef.current = newHistory.some(
44924
+ isContextFilesAnnouncement
44925
+ );
44926
+ },
44927
+ [rawLoadHistory]
44928
+ );
44757
44929
  const activeWorktree = (0, import_react162.useMemo)(
44758
44930
  () => worktreeSession ? {
44759
44931
  slug: worktreeSession.slug,
@@ -44773,7 +44945,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
44773
44945
  const staticExtraHeight = 3;
44774
44946
  (0, import_react162.useEffect)(() => {
44775
44947
  void loadLowlight().catch((err) => {
44776
- debugLogger40.warn(
44948
+ debugLogger41.warn(
44777
44949
  `Failed to load lowlight chunk; code blocks will render as plain text: ${err instanceof Error ? err.message : String(err)}`
44778
44950
  );
44779
44951
  });
@@ -44807,7 +44979,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
44807
44979
  collapseOnResume,
44808
44980
  collapsePreviewCount
44809
44981
  );
44810
- historyManager.loadHistory(historyItems);
44982
+ loadHistoryWithLatchReconciliation(historyItems);
44811
44983
  const userTurnCount = resumedSessionData.conversation.messages.filter(
44812
44984
  (m) => m.type === "user" && m.subtype !== "mid_turn_user_message" && m.subtype !== "realtime_message"
44813
44985
  ).length;
@@ -44855,9 +45027,9 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
44855
45027
  registerCleanup(async () => {
44856
45028
  try {
44857
45029
  await config.getHookSystem()?.fireSessionEndEvent("prompt_input_exit" /* PromptInputExit */);
44858
- debugLogger40.debug("SessionEnd event completed successfully!!!");
45030
+ debugLogger41.debug("SessionEnd event completed successfully!!!");
44859
45031
  } catch (err) {
44860
- debugLogger40.error(`SessionEnd hook failed: ${err}`);
45032
+ debugLogger41.error(`SessionEnd hook failed: ${err}`);
44861
45033
  }
44862
45034
  });
44863
45035
  registerCleanup(async () => {
@@ -44883,7 +45055,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
44883
45055
  flushTimer = null;
44884
45056
  }
44885
45057
  return geminiClient2.setTools().catch((err) => {
44886
- debugLogger40.error(
45058
+ debugLogger41.error(
44887
45059
  `setTools() batch-flush failed: ${err instanceof Error ? err.message : String(err)}`
44888
45060
  );
44889
45061
  });
@@ -44901,7 +45073,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
44901
45073
  failureSurfaced = true;
44902
45074
  const failedNames = typeof config.getFailedMcpServerNames === "function" ? config.getFailedMcpServerNames() : [];
44903
45075
  if (failedNames.length > 0) {
44904
- debugLogger40.warn(
45076
+ debugLogger41.warn(
44905
45077
  `MCP server(s) failed to start: ${failedNames.join(", ")}. Continuing with built-in tools and any servers that did connect.`
44906
45078
  );
44907
45079
  }
@@ -45209,6 +45381,10 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45209
45381
  config,
45210
45382
  settings,
45211
45383
  historyManager,
45384
+ // Route the interactive /resume through the latch-reconciling wrapper
45385
+ // so same-id resume (no sessionId change → no effect re-arm) still
45386
+ // re-arms the latch when the rebuilt history has no announcement.
45387
+ loadHistory: loadHistoryWithLatchReconciliation,
45212
45388
  startNewSession,
45213
45389
  clearPendingState: clearPendingStateFromRef,
45214
45390
  setSessionName,
@@ -45359,7 +45535,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45359
45535
  try {
45360
45536
  cancelOngoingRequestRef.current();
45361
45537
  } catch (error) {
45362
- debugLogger40.debug("Failed to cancel request while quitting:", error);
45538
+ debugLogger41.debug("Failed to cancel request while quitting:", error);
45363
45539
  }
45364
45540
  setQuittingMessages(messages);
45365
45541
  config.getGeminiClient()?.requestShutdown();
@@ -45437,7 +45613,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45437
45613
  historyManager.history,
45438
45614
  historyManager.addItem,
45439
45615
  historyManager.clearItems,
45440
- historyManager.loadHistory,
45616
+ loadHistoryWithLatchReconciliation,
45441
45617
  refreshStatic,
45442
45618
  toggleVimEnabled,
45443
45619
  isProcessing,
@@ -45527,6 +45703,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45527
45703
  if (config.isSafeMode()) {
45528
45704
  config.setUserMemory("");
45529
45705
  config.setGeminiMdFileCount(0);
45706
+ config.setContextFilePaths([]);
45530
45707
  config.setConditionalRulesRegistry(
45531
45708
  new ConditionalRulesRegistry([], config.getWorkingDir())
45532
45709
  );
@@ -45548,8 +45725,14 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45548
45725
  Date.now()
45549
45726
  );
45550
45727
  try {
45551
- const { memoryContent, fileCount, conditionalRules, projectRoot } = await loadHierarchicalGeminiMemory(
45552
- process18.cwd(),
45728
+ const {
45729
+ memoryContent,
45730
+ fileCount,
45731
+ contextFilePaths,
45732
+ conditionalRules,
45733
+ projectRoot
45734
+ } = await loadHierarchicalGeminiMemory(
45735
+ config.getWorkingDir(),
45553
45736
  settings.merged.context?.loadFromIncludeDirectories ? config.getWorkspaceContext().getDirectories() : [],
45554
45737
  config.getFileService(),
45555
45738
  config.getExtensionContextFilePaths(),
@@ -45566,6 +45749,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45566
45749
  );
45567
45750
  config.setUserMemory(memoryContent);
45568
45751
  config.setGeminiMdFileCount(fileCount);
45752
+ config.setContextFilePaths(contextFilePaths);
45569
45753
  config.setConditionalRulesRegistry(
45570
45754
  new ConditionalRulesRegistry(conditionalRules, projectRoot)
45571
45755
  );
@@ -45577,7 +45761,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45577
45761
  },
45578
45762
  Date.now()
45579
45763
  );
45580
- debugLogger40.debug(
45764
+ debugLogger41.debug(
45581
45765
  `[DEBUG] Refreshed memory content in config: ${memoryContent.substring(
45582
45766
  0,
45583
45767
  200
@@ -45592,7 +45776,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45592
45776
  },
45593
45777
  Date.now()
45594
45778
  );
45595
- debugLogger40.error("Error refreshing memory:", error);
45779
+ debugLogger41.error("Error refreshing memory:", error);
45596
45780
  }
45597
45781
  }, [config, historyManager, settings.merged]);
45598
45782
  const cancelHandlerRef = (0, import_react162.useRef)(() => {
@@ -45762,7 +45946,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45762
45946
  );
45763
45947
  });
45764
45948
  goalReservationSettlementRef.current = settlement.catch((error) => {
45765
- debugLogger40.warn(
45949
+ debugLogger41.warn(
45766
45950
  `Failed to release queued Goal turns: ${getErrorMessage(error)}`
45767
45951
  );
45768
45952
  });
@@ -45913,6 +46097,23 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45913
46097
  void handleSlashCommand("/quit");
45914
46098
  return;
45915
46099
  }
46100
+ const trimmedPrompt = userPromptText.trim();
46101
+ if (!contextFilesAnnouncedRef.current && consumesContextAnnouncementLatch(trimmedPrompt, {
46102
+ shellModeActive,
46103
+ slashCommands
46104
+ })) {
46105
+ const contextFilePaths = config.getContextFilePaths();
46106
+ if (contextFilePaths.length > 0) {
46107
+ contextFilesAnnouncedRef.current = true;
46108
+ historyManager.addItem(
46109
+ {
46110
+ type: "info" /* INFO */,
46111
+ text: `${CONTEXT_FILES_ANNOUNCEMENT_PREFIX} ${contextFilePaths.join(", ")}`
46112
+ },
46113
+ Date.now()
46114
+ );
46115
+ }
46116
+ }
45916
46117
  const recoveredAgentsNotice = !isSlashCommand(userPromptText) && !isBtwCommand(userPromptText) ? config.consumePendingRecoveredAgentsNotice() : null;
45917
46118
  if (recoveredAgentsNotice) {
45918
46119
  submittedValue = `<system-reminder>
@@ -45960,7 +46161,7 @@ ${buildWorkflowSteeringNotice()}
45960
46161
  }, "onAdmissionFailed")
45961
46162
  })
45962
46163
  ).catch((error) => {
45963
- debugLogger40.warn("Failed to admit /btw submission", error);
46164
+ debugLogger41.warn("Failed to admit /btw submission", error);
45964
46165
  });
45965
46166
  return;
45966
46167
  }
@@ -46054,7 +46255,7 @@ ${buildWorkflowSteeringNotice()}
46054
46255
  submittedPrompt === void 0 ? void 0 : { submittedPrompt }
46055
46256
  )
46056
46257
  ).catch((error) => {
46057
- debugLogger40.warn("Failed to admit slash command", error);
46258
+ debugLogger41.warn("Failed to admit slash command", error);
46058
46259
  });
46059
46260
  return;
46060
46261
  }
@@ -46073,6 +46274,7 @@ ${buildWorkflowSteeringNotice()}
46073
46274
  historyManager,
46074
46275
  settings.merged.ui?.disableWorkflowKeywordTrigger,
46075
46276
  setBufferText,
46277
+ shellModeActive,
46076
46278
  vimEnabled
46077
46279
  ]
46078
46280
  );
@@ -46131,18 +46333,18 @@ ${currentText}` : popped.modelText
46131
46333
  geminiClient?.stripOrphanedUserEntriesFromHistory?.();
46132
46334
  }
46133
46335
  if (!draftWasEmpty) {
46134
- debugLogger40.debug("auto-restore bail: buffer was non-empty");
46336
+ debugLogger41.debug("auto-restore bail: buffer was non-empty");
46135
46337
  return;
46136
46338
  }
46137
46339
  if (popped !== null) {
46138
- debugLogger40.debug(
46340
+ debugLogger41.debug(
46139
46341
  "auto-restore bail: queue had items (drained to buffer)"
46140
46342
  );
46141
46343
  return;
46142
46344
  }
46143
46345
  const cancelledTurnUserItem = info?.lastTurnUserItem;
46144
46346
  if (cancelledTurnUserItem == null) {
46145
- debugLogger40.debug(
46347
+ debugLogger41.debug(
46146
46348
  "auto-restore bail: cancelled turn did not add a user history item"
46147
46349
  );
46148
46350
  return;
@@ -46156,20 +46358,20 @@ ${currentText}` : popped.modelText
46156
46358
  buffer.setText(cancelledTurnUserItem.text);
46157
46359
  }, "restoreCancelledPrompt");
46158
46360
  if (pendingHistoryItems2.some((item) => item.type === "tool_group")) {
46159
- debugLogger40.debug(
46361
+ debugLogger41.debug(
46160
46362
  "auto-restore bail: tool execution is pending or committed"
46161
46363
  );
46162
46364
  return;
46163
46365
  }
46164
46366
  if (info?.turnProducedMeaningfulContent) {
46165
- debugLogger40.debug(
46367
+ debugLogger41.debug(
46166
46368
  "auto-restore: preserving streamed output and restoring prompt text"
46167
46369
  );
46168
46370
  restoreCancelledPrompt();
46169
46371
  return;
46170
46372
  }
46171
46373
  if (pendingHistoryItems2.some((item) => !isSyntheticHistoryItem(item))) {
46172
- debugLogger40.debug(
46374
+ debugLogger41.debug(
46173
46375
  "auto-restore bail: pending stream item has meaningful content"
46174
46376
  );
46175
46377
  return;
@@ -46177,11 +46379,11 @@ ${currentText}` : popped.modelText
46177
46379
  const history = historyRef.current;
46178
46380
  const lastUserIdx = findLastUserItemIndex(history);
46179
46381
  if (lastUserIdx === -1) {
46180
- debugLogger40.debug("auto-restore bail: no user item in history");
46382
+ debugLogger41.debug("auto-restore bail: no user item in history");
46181
46383
  return;
46182
46384
  }
46183
46385
  if (!itemsAfterAreOnlySynthetic(history, lastUserIdx)) {
46184
- debugLogger40.debug(
46386
+ debugLogger41.debug(
46185
46387
  "auto-restore: preserving committed output and restoring prompt text"
46186
46388
  );
46187
46389
  restoreCancelledPrompt();
@@ -46189,18 +46391,18 @@ ${currentText}` : popped.modelText
46189
46391
  }
46190
46392
  const lastUserItem = history[lastUserIdx];
46191
46393
  if (lastUserItem.type !== "user") {
46192
- debugLogger40.debug(
46394
+ debugLogger41.debug(
46193
46395
  "auto-restore bail: lastUserItem type narrowing failed (unexpected)"
46194
46396
  );
46195
46397
  return;
46196
46398
  }
46197
46399
  if (lastUserItem.id !== cancelledTurnUserItem.id || lastUserItem.text !== cancelledTurnUserItem.text) {
46198
- debugLogger40.debug(
46400
+ debugLogger41.debug(
46199
46401
  "auto-restore bail: lastUserItem identity does not match cancelled-turn user item"
46200
46402
  );
46201
46403
  return;
46202
46404
  }
46203
- debugLogger40.debug(
46405
+ debugLogger41.debug(
46204
46406
  "auto-restore: rewinding cancelled turn and restoring prompt"
46205
46407
  );
46206
46408
  historyManager.truncateToItem(lastUserItem.id);
@@ -46209,7 +46411,7 @@ ${currentText}` : popped.modelText
46209
46411
  geminiClient?.stripOrphanedUserEntriesFromHistory?.();
46210
46412
  if (info?.canUndoLastLoggedUserMessage) {
46211
46413
  void logger?.removeLastUserMessage().catch((err) => {
46212
- debugLogger40.debug("Failed to undo cancelled prompt from log:", err);
46414
+ debugLogger41.debug("Failed to undo cancelled prompt from log:", err);
46213
46415
  });
46214
46416
  }
46215
46417
  },
@@ -46228,6 +46430,7 @@ ${currentText}` : popped.modelText
46228
46430
  );
46229
46431
  const handleClearScreen = (0, import_react162.useCallback)(() => {
46230
46432
  clearPendingStateRef.current();
46433
+ contextFilesAnnouncedRef.current = false;
46231
46434
  historyManager.clearItems();
46232
46435
  clearScreen();
46233
46436
  remountStaticHistory();
@@ -46300,7 +46503,13 @@ ${currentText}` : popped.modelText
46300
46503
  suggestionAbortRef.current = ac;
46301
46504
  const conversationHistory = geminiClient.getHistoryTail(40, true);
46302
46505
  generatePromptSuggestion(config, conversationHistory, ac.signal, {
46303
- enableCacheSharing: settings.merged.ui?.enableCacheSharing === true
46506
+ // On by default: the schema declares `default: true`, but
46507
+ // `mergeSettings` doesn't apply schema defaults, so an unset value is
46508
+ // `undefined` and a `=== true` gate left the cache-aware fork as dead
46509
+ // code unless the flag was explicitly set (#9230). Same treatment as
46510
+ // `enableFollowupSuggestions` above — only an explicit `false` opts
46511
+ // out.
46512
+ enableCacheSharing: settings.merged.ui?.enableCacheSharing !== false
46304
46513
  }).then((result) => {
46305
46514
  if (ac.signal.aborted) return;
46306
46515
  if (result.suggestion) {
@@ -46646,7 +46855,7 @@ ${currentText}` : popped.modelText
46646
46855
  originalHistory.filter((h) => h.id < userItem.id)
46647
46856
  );
46648
46857
  clearPendingStateRef.current();
46649
- historyManager.loadHistory(truncatedUi);
46858
+ loadHistoryWithLatchReconciliation(truncatedUi);
46650
46859
  refreshStatic();
46651
46860
  if (userItem.type === "user" && userItem.text) {
46652
46861
  restoredSubmissionRef.current = null;
@@ -46705,7 +46914,13 @@ ${currentText}` : popped.modelText
46705
46914
  setIsRewindSelectorOpen(false);
46706
46915
  }
46707
46916
  },
46708
- [config, historyManager, refreshStatic, buffer]
46917
+ [
46918
+ config,
46919
+ historyManager,
46920
+ loadHistoryWithLatchReconciliation,
46921
+ refreshStatic,
46922
+ buffer
46923
+ ]
46709
46924
  );
46710
46925
  const handleDoubleEscRewind = useDoublePress(
46711
46926
  openRewindSelector,
@@ -46925,7 +47140,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
46925
47140
  const handleGlobalKeypress = (0, import_react162.useCallback)(
46926
47141
  (key) => {
46927
47142
  if (settings.merged.general?.debugKeystrokeLogging) {
46928
- debugLogger40.debug("[DEBUG] Keystroke:", JSON.stringify(key));
47143
+ debugLogger41.debug("[DEBUG] Keystroke:", JSON.stringify(key));
46929
47144
  }
46930
47145
  if (keyMatchers["toggleThinkingExpanded" /* TOGGLE_THINKING_EXPANDED */](key)) {
46931
47146
  setThoughtExpanded((prev) => !prev);
@@ -47043,7 +47258,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
47043
47258
  );
47044
47259
  if (promotableShells.length === 1) {
47045
47260
  const executingShell = promotableShells[0];
47046
- debugLogger40.debug(
47261
+ debugLogger41.debug(
47047
47262
  `Ctrl+B promote: matched executing shell tool call ${executingShell.request.callId}`
47048
47263
  );
47049
47264
  executingShell.promoteAbortController.abort({
@@ -47051,7 +47266,7 @@ ${migrationResult.failedFiles.map((f) => ` \u2022 ${f.file}: ${f.error}`).join(
47051
47266
  });
47052
47267
  return;
47053
47268
  }
47054
- debugLogger40.debug(
47269
+ debugLogger41.debug(
47055
47270
  `Ctrl+B promote: expected exactly one executing shell tool call; falling through (streamingState=${streamingState}, pendingToolCalls=${pendingToolCallsRef.current.length}, promotableShells=${promotableShells.length})`
47056
47271
  );
47057
47272
  }
@@ -47742,7 +47957,7 @@ __name(installSynchronizedOutput, "installSynchronizedOutput");
47742
47957
 
47743
47958
  // packages/cli/src/ui/startInteractiveUI.tsx
47744
47959
  var import_jsx_runtime133 = __toESM(require_jsx_runtime(), 1);
47745
- var debugLogger41 = createDebugLogger("STARTUP");
47960
+ var debugLogger42 = createDebugLogger("STARTUP");
47746
47961
  var PRESSURE_CHECK_INTERVAL_MS = 3e4;
47747
47962
  async function startInteractiveUI(config, settings, startupWarnings, workspaceRoot = process.cwd(), initializationResult, options = {}) {
47748
47963
  const version = await getCliVersion();
@@ -47780,7 +47995,7 @@ async function startInteractiveUI(config, settings, startupWarnings, workspaceRo
47780
47995
  );
47781
47996
  }
47782
47997
  } catch (err) {
47783
- debugLogger41.error("Failed to initialize dual output bridge:", err);
47998
+ debugLogger42.error("Failed to initialize dual output bridge:", err);
47784
47999
  writeStderrLine(
47785
48000
  `Warning: dual output disabled \u2014 ${err instanceof Error ? err.message : String(err)}`
47786
48001
  );
@@ -47791,7 +48006,7 @@ async function startInteractiveUI(config, settings, startupWarnings, workspaceRo
47791
48006
  try {
47792
48007
  remoteInputWatcher = new RemoteInputWatcher(inputFile);
47793
48008
  } catch (err) {
47794
- debugLogger41.error("Failed to initialize remote input watcher:", err);
48009
+ debugLogger42.error("Failed to initialize remote input watcher:", err);
47795
48010
  writeStderrLine(
47796
48011
  `Warning: remote input disabled \u2014 ${err instanceof Error ? err.message : String(err)}`
47797
48012
  );
@@ -47842,7 +48057,7 @@ async function startInteractiveUI(config, settings, startupWarnings, workspaceRo
47842
48057
  {
47843
48058
  recordForExitEcho: true,
47844
48059
  onError: (error, info) => {
47845
- debugLogger41.error(
48060
+ debugLogger42.error(
47846
48061
  `[FATAL_RENDER_ERROR] ${error.message}
47847
48062
  ${info.componentStack ?? ""}
47848
48063
  ${error.stack ?? ""}`
@@ -47920,6 +48135,14 @@ qwen --resume ${sessionId}`
47920
48135
  } catch {
47921
48136
  }
47922
48137
  });
48138
+ config.trackSessionRegistration(
48139
+ registerSession({
48140
+ sessionId: config.getSessionId(),
48141
+ cwd: config.getTargetDir(),
48142
+ qwenVersion: version
48143
+ })
48144
+ );
48145
+ registerCleanup(() => config.unregisterSessionRegistry());
47923
48146
  }
47924
48147
  __name(startInteractiveUI, "startInteractiveUI");
47925
48148
  function setWindowTitle(settings, folderName) {