@qwen-code/qwen-code 0.19.11 → 0.19.12-preview.0

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 (304) hide show
  1. package/bundled/batch/SKILL.md +6 -0
  2. package/bundled/qc-helper/docs/configuration/model-providers.md +11 -0
  3. package/bundled/qc-helper/docs/configuration/settings.md +11 -10
  4. package/bundled/qc-helper/docs/features/channels/overview.md +66 -11
  5. package/bundled/qc-helper/docs/features/sub-agents.md +8 -8
  6. package/bundled/qc-helper/docs/features/worktree.md +2 -2
  7. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +42 -7
  8. package/bundled/qc-helper/docs/qwen-serve.md +102 -40
  9. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  10. package/bundled/review/SKILL.md +60 -49
  11. package/bundled/simplify/SKILL.md +1 -1
  12. package/chunks/{MaxSizedBox-L6TGYDM3.js → MaxSizedBox-3KIWAU6Z.js} +31 -32
  13. package/chunks/{StandaloneSessionPicker-AKEQHU5P.js → StandaloneSessionPicker-TF626NO7.js} +45 -46
  14. package/chunks/acp-startup-profiler-N3RHHXJ3.js +25 -0
  15. package/chunks/{acpAgent-PTNBGJDN.js → acpAgent-JDVJXVBO.js} +1863 -507
  16. package/chunks/{agent-AJOMOZPJ.js → agent-BONWC4VY.js} +26 -27
  17. package/chunks/{agent-headless-CYKOMAXS.js → agent-headless-H7HKMGLZ.js} +26 -27
  18. package/chunks/{anthropicContentGenerator-HBRXJSP4.js → anthropicContentGenerator-ZZRGFEES.js} +35 -12
  19. package/chunks/{artifact-tool-MIZLXBLF.js → artifact-tool-PHO5XEGZ.js} +5 -5
  20. package/chunks/{askUserQuestion-XMJVPNWM.js → askUserQuestion-CEPBT47X.js} +2 -47
  21. package/chunks/{bridge-QKISWPCI.js → bridge-ATN2TLWJ.js} +31 -32
  22. package/chunks/{ca-CODEN7TD.js → ca-2SL2BXTK.js} +3 -2
  23. package/chunks/{channel-worker-group-SOUWTFHC.js → channel-worker-group-S3H5QHTI.js} +4 -4
  24. package/chunks/{channel-worker-manager-LOVSV3WW.js → channel-worker-manager-ZJ4HTMO2.js} +4 -4
  25. package/chunks/{channel-worker-supervisor-XW6MHJBQ.js → channel-worker-supervisor-JA6VZ5V5.js} +3 -3
  26. package/chunks/{chunk-ZIXOTAPZ.js → chunk-2DZ7E27L.js} +92 -3
  27. package/chunks/{chunk-L5U3ELZX.js → chunk-335ECZTA.js} +1 -1
  28. package/chunks/{chunk-2FO5GFKZ.js → chunk-3DJY4IFO.js} +1 -1
  29. package/chunks/{chunk-4AGTGMCQ.js → chunk-3PE7OY2G.js} +12 -12
  30. package/chunks/{chunk-QOTQH4CB.js → chunk-4AGBO6RB.js} +27 -10
  31. package/chunks/{chunk-Y66VOBRP.js → chunk-4CA4WUMS.js} +2 -2
  32. package/chunks/{chunk-LQIDP6K5.js → chunk-4CHDYDG3.js} +1 -1
  33. package/chunks/{chunk-574PTLMU.js → chunk-4OVECYBM.js} +407 -92
  34. package/chunks/{chunk-TV6K2FB4.js → chunk-4RPARQ5D.js} +2 -2
  35. package/chunks/{chunk-TL4R5TRK.js → chunk-4W55BHOC.js} +2 -2
  36. package/chunks/{chunk-RCEEXIOO.js → chunk-4XCVGEEX.js} +3 -3
  37. package/chunks/{chunk-3DWIFU7L.js → chunk-53UMEONK.js} +1 -1
  38. package/chunks/{chunk-AU3MFJPL.js → chunk-54KPEDM2.js} +8 -8
  39. package/chunks/{chunk-T76DGHGG.js → chunk-66F4IJ4L.js} +5 -5
  40. package/chunks/{chunk-YLSSEUAM.js → chunk-675SVDMD.js} +354 -278
  41. package/chunks/{chunk-NVTQZXR7.js → chunk-6QGZVKOO.js} +91 -52
  42. package/chunks/{chunk-NJOFRXTM.js → chunk-6TDA4EVC.js} +4200 -3450
  43. package/chunks/{chunk-BYH2JRK3.js → chunk-6WZZHJSZ.js} +5 -5
  44. package/chunks/{chunk-7X7TEQNX.js → chunk-76BFY7AF.js} +13 -0
  45. package/chunks/chunk-7KS72E2N.js +883 -0
  46. package/chunks/{chunk-CF5VJRGC.js → chunk-7LMAKIWE.js} +1 -1
  47. package/chunks/{chunk-WMNXXRGL.js → chunk-7O7WZH7N.js} +31 -31
  48. package/chunks/{chunk-7ZYHLN67.js → chunk-7OZGMFHC.js} +26 -75
  49. package/chunks/{chunk-6WPJRYLZ.js → chunk-7SX6WZNO.js} +3 -3
  50. package/chunks/{chunk-JGUT3LWZ.js → chunk-ANRANWVE.js} +4 -1
  51. package/chunks/{chunk-JD44PNGJ.js → chunk-AWOU24F6.js} +10 -5
  52. package/chunks/{chunk-6WGZDD67.js → chunk-BEFQGC6H.js} +2 -2
  53. package/chunks/{chunk-KXYJPRT5.js → chunk-BEZPRKD3.js} +28 -6
  54. package/chunks/{chunk-FYQ22K62.js → chunk-CHVH4DVN.js} +6 -5
  55. package/chunks/{chunk-LS56TX3M.js → chunk-CMHJEUVB.js} +1 -1
  56. package/chunks/{chunk-FXKOAEXP.js → chunk-CXWUXRD5.js} +14 -14
  57. package/chunks/{chunk-CAHY5ABC.js → chunk-DULSE2SH.js} +1 -1
  58. package/chunks/{chunk-SQ5BK3GO.js → chunk-DYUPBU7H.js} +1 -1
  59. package/chunks/{chunk-FNX3LGAK.js → chunk-E655RDRL.js} +1 -1
  60. package/chunks/{chunk-N5VIZTND.js → chunk-EWPLL4OT.js} +1 -1
  61. package/chunks/{chunk-FSA7ERJ2.js → chunk-F2RR4HO2.js} +1 -1
  62. package/chunks/{chunk-S63Z5V42.js → chunk-F2YCCUXI.js} +4 -4
  63. package/chunks/{chunk-3AYLDB6B.js → chunk-FEZXQXW2.js} +1 -1
  64. package/chunks/{chunk-OWT2CAEQ.js → chunk-GEHSF7MS.js} +105 -12
  65. package/chunks/{chunk-LXLTBIDP.js → chunk-HCCR43AY.js} +1 -1
  66. package/chunks/{chunk-7NMU22Q3.js → chunk-HQ7MDVBO.js} +18 -7
  67. package/chunks/{chunk-KSZKSE23.js → chunk-HVWPSGDY.js} +1 -1
  68. package/chunks/{chunk-YFVO2HOR.js → chunk-HZXU6YZW.js} +5 -5
  69. package/chunks/{chunk-HASK4LMI.js → chunk-IKLWU6YS.js} +13 -6
  70. package/chunks/{chunk-GNBBAQ6J.js → chunk-ILQ42UG6.js} +111 -40
  71. package/chunks/{chunk-THXDQSTA.js → chunk-IQRQVPGN.js} +49 -154
  72. package/chunks/{chunk-SPJQO2CE.js → chunk-J2MKYJKZ.js} +2 -2
  73. package/chunks/{chunk-SUARMD4Q.js → chunk-J6NT5YTN.js} +28 -2
  74. package/chunks/{chunk-TYLOFD2U.js → chunk-JCJPZMJV.js} +1 -1
  75. package/chunks/{chunk-BYB3GF2T.js → chunk-JCYMQU5F.js} +133 -6
  76. package/chunks/{chunk-6EDDYPI3.js → chunk-JUNVFQVY.js} +4 -4
  77. package/chunks/{chunk-CH2XVB47.js → chunk-K7P34F2J.js} +3 -3
  78. package/chunks/{chunk-5VWYKIMW.js → chunk-KANTXY7B.js} +2 -2
  79. package/chunks/{chunk-K7VD4XLT.js → chunk-LHEQDKAR.js} +1 -1
  80. package/chunks/{chunk-A2HWMJVO.js → chunk-LKR7QQ63.js} +3 -3
  81. package/chunks/{chunk-4HUDDSO5.js → chunk-LLIGYAQU.js} +4 -4
  82. package/chunks/{chunk-5Z452MMD.js → chunk-LODZMRXC.js} +154 -83
  83. package/chunks/{chunk-FBU7WRZI.js → chunk-LPHGXXZX.js} +6 -1
  84. package/chunks/{chunk-CPFIQVZJ.js → chunk-LYFDJTXE.js} +1 -1
  85. package/chunks/{chunk-TIOE2OPE.js → chunk-MCYZTKBV.js} +2 -2
  86. package/chunks/{chunk-ZQIYGQCG.js → chunk-MHEZV3OY.js} +506 -143
  87. package/chunks/{chunk-JWICTOXS.js → chunk-NGTQA57Y.js} +2 -2
  88. package/chunks/{chunk-5CNYZ7TN.js → chunk-NJQPQ4IO.js} +7 -7
  89. package/chunks/chunk-NSZJQACR.js +45 -0
  90. package/chunks/{chunk-DOPUYNXO.js → chunk-NUHSLBJZ.js} +7 -7
  91. package/chunks/{chunk-CITWNIXJ.js → chunk-NVUGS23Y.js} +5 -5
  92. package/chunks/{chunk-2Z5UX4KI.js → chunk-OSSDHJDU.js} +1 -1
  93. package/chunks/{chunk-YUZI3WAC.js → chunk-OWAK7LMW.js} +7 -0
  94. package/chunks/{chunk-Y3KFTWVX.js → chunk-OZWJAFFE.js} +6 -6
  95. package/chunks/{chunk-YGYSMY2R.js → chunk-PSISZNIT.js} +1629 -1142
  96. package/chunks/{chunk-4ROQY23C.js → chunk-PTXVHS2O.js} +7 -7
  97. package/chunks/{chunk-OKAIGAYW.js → chunk-QGONRHUS.js} +3 -3
  98. package/chunks/{chunk-PZL23GTM.js → chunk-QR6U5QPP.js} +8 -0
  99. package/chunks/chunk-QSG4ZFG4.js +257 -0
  100. package/chunks/{chunk-BXBDC476.js → chunk-R32BTEZY.js} +5 -5
  101. package/chunks/{chunk-AVEOWVOM.js → chunk-R3VWUU2E.js} +1 -1
  102. package/chunks/{chunk-RP5R7MB6.js → chunk-R4RIMOJL.js} +12 -12
  103. package/chunks/{chunk-ARKANCNX.js → chunk-SGPFJMRP.js} +1 -1
  104. package/chunks/{chunk-3M75MSVA.js → chunk-SMASS3CY.js} +1 -1
  105. package/chunks/{chunk-4IJMTYCB.js → chunk-SNONG66P.js} +818 -29
  106. package/chunks/chunk-TDKQP3M6.js +201 -0
  107. package/chunks/{chunk-VFX7EZIR.js → chunk-TFV3XVAZ.js} +8 -1
  108. package/chunks/{chunk-4LD5APFL.js → chunk-TYQMGACW.js} +1 -0
  109. package/chunks/{chunk-7NFB7LBQ.js → chunk-UE5TZ55T.js} +8 -0
  110. package/chunks/{chunk-F333XEAU.js → chunk-UOA2IHRI.js} +4 -3
  111. package/chunks/{chunk-VRR65QYW.js → chunk-V4PCIS25.js} +5 -1
  112. package/chunks/{chunk-WIEO4CWB.js → chunk-VAJS2E2D.js} +1 -1
  113. package/chunks/{chunk-GLNHPRZT.js → chunk-W4DFAUAO.js} +1 -1
  114. package/chunks/{chunk-STZQCNN3.js → chunk-W7H223ZZ.js} +1 -1
  115. package/chunks/{chunk-6Y6ORE2G.js → chunk-WACI4VES.js} +288 -20
  116. package/chunks/{chunk-WTNZ6DXB.js → chunk-WEPXQKGP.js} +1 -1
  117. package/chunks/{chunk-4BJVSIS3.js → chunk-WHQNBBWW.js} +2 -2
  118. package/chunks/{chunk-QDJ2R4CM.js → chunk-WTHRMVKB.js} +3 -3
  119. package/chunks/{chunk-L4Y55KIS.js → chunk-X6YQWCIJ.js} +1 -1
  120. package/chunks/{chunk-Q6TUALBE.js → chunk-XAAEDML2.js} +1 -1
  121. package/chunks/{chunk-BUAXJVNP.js → chunk-XACBIZJB.js} +3 -3
  122. package/chunks/{chunk-2OG646IN.js → chunk-XFJU7SVP.js} +4 -4
  123. package/chunks/{chunk-KKRTYONM.js → chunk-XSPFQQRE.js} +3 -3
  124. package/chunks/{chunk-V2DXTLUE.js → chunk-Y5UDBQYF.js} +3 -3
  125. package/chunks/{chunk-MQOVXZAF.js → chunk-YN2I5I42.js} +529 -61
  126. package/chunks/{chunk-FMNYGWOD.js → chunk-Z4ZCVYJ5.js} +14 -8
  127. package/chunks/{chunk-SY7NEYX4.js → chunk-ZFHHBRRA.js} +2 -2
  128. package/chunks/{chunk-QYG4BY6Q.js → chunk-ZPVGEMVC.js} +1 -1
  129. package/chunks/{computer-use-VZZMJEQ7.js → computer-use-UY4A72X7.js} +26 -27
  130. package/chunks/{config-utils-IQQT3GCI.js → config-utils-KWTRFP7D.js} +3 -3
  131. package/chunks/{contextCommand-PORKIZSY.js → contextCommand-3DZ2SVH6.js} +30 -31
  132. package/chunks/{create-sub-session-EAB2U5XW.js → create-sub-session-DIJOV6HV.js} +2 -2
  133. package/chunks/{create-sub-session-XVFKHAFW.js → create-sub-session-OT7WXLDO.js} +27 -28
  134. package/chunks/{cron-create-GMVKSXZT.js → cron-create-X462ERYA.js} +4 -4
  135. package/chunks/{cron-delete-VDZKUAVK.js → cron-delete-SL5UJUM3.js} +4 -4
  136. package/chunks/{cron-list-UG7C7RAR.js → cron-list-3MD6SVXI.js} +4 -4
  137. package/chunks/{daemon-IHR6WSPB.js → daemon-ZW6LHOXT.js} +91 -14
  138. package/chunks/{daemon-status-provider-ABLBA3UJ.js → daemon-status-provider-GTZOYSBO.js} +35 -36
  139. package/chunks/{de-NOXPCSYN.js → de-I7ZIYXZC.js} +3 -2
  140. package/chunks/{dist-PX2ERZ6I.js → dist-HCUUS6IH.js} +2 -2
  141. package/chunks/{dist-VYWUKURL.js → dist-O2IP3G5D.js} +1 -1
  142. package/chunks/{dist-GXJVCOS7.js → dist-RZBJT5O2.js} +2 -1
  143. package/chunks/{dist-V2YVLYOW.js → dist-Y54RURGT.js} +3 -1
  144. package/chunks/{dist-DOPL5LSQ.js → dist-YTPTCUAD.js} +1 -1
  145. package/chunks/{dist-4WCQEZIN.js → dist-ZJHKKWUD.js} +1 -1
  146. package/chunks/{earlyInputCapture-DJCU5SPU.js → earlyInputCapture-GGWVGBZ7.js} +27 -28
  147. package/chunks/{edit-O4VV5AO6.js → edit-JN467GIR.js} +27 -28
  148. package/chunks/{en-JFVULHTB.js → en-XE34GKAA.js} +7 -3
  149. package/chunks/{enter-worktree-XQYDDI2I.js → enter-worktree-MMO4VBQE.js} +26 -27
  150. package/chunks/{enterPlanMode-CESVMQBV.js → enterPlanMode-BRZOG4DB.js} +27 -30
  151. package/chunks/{environment-5KXOLZNR.js → environment-LOCDCWMZ.js} +29 -30
  152. package/chunks/{errors-EBUTCBAQ.js → errors-XXSL5HGG.js} +29 -30
  153. package/chunks/{exit-worktree-MWGNSPNX.js → exit-worktree-UD7PI5H5.js} +26 -27
  154. package/chunks/exitPlanMode-EIUETQI6.js +389 -0
  155. package/chunks/{fast-path-6V73F2T2.js → fast-path-ULGAEUVK.js} +2 -2
  156. package/chunks/{fr-HVFNU42H.js → fr-X7KDVZIY.js} +3 -2
  157. package/chunks/{gemini-TEFJZCIZ.js → gemini-KW3APZ4P.js} +133 -80
  158. package/chunks/{geminiContentGenerator-M56BEXWI.js → geminiContentGenerator-4BQ5QHPR.js} +5 -5
  159. package/chunks/{glob-DMYFEEAZ.js → glob-FPKAMR6B.js} +32 -28
  160. package/chunks/{grep-GYE47MD4.js → grep-MOGRCYB4.js} +32 -28
  161. package/chunks/{handleAutoUpdate-OLUY4L7L.js → handleAutoUpdate-QUMRZZOS.js} +33 -34
  162. package/chunks/{i18n-462JC7IY.js → i18n-F3W6YUYP.js} +28 -29
  163. package/chunks/{initializer-Y7WD4D2I.js → initializer-KLU2KAIZ.js} +33 -34
  164. package/chunks/{installationInfo-I2Z3BKCE.js → installationInfo-P3ZP2SIZ.js} +27 -28
  165. package/chunks/{ja-PY5AF544.js → ja-2ICT3KXF.js} +3 -2
  166. package/chunks/{keychain-token-storage-AU22CQI6.js → keychain-token-storage-K23CFKGN.js} +2 -2
  167. package/chunks/{list-XQ5MSAXP.js → list-4X6D5JD2.js} +35 -36
  168. package/chunks/{loadedSettingsAdapter-TQOWYE7C.js → loadedSettingsAdapter-446B6WKA.js} +32 -33
  169. package/chunks/{loop-wakeup-QXWZSCYM.js → loop-wakeup-6H7OENTB.js} +5 -5
  170. package/chunks/{ls-2OUTG3IZ.js → ls-APTSOOS5.js} +4 -4
  171. package/chunks/{lsp-4VMNXZW6.js → lsp-HPACPJAN.js} +2 -2
  172. package/chunks/{mcp-22LLEEVM.js → mcp-JYVOJZOD.js} +32 -33
  173. package/chunks/{monitor-VKG324X3.js → monitor-KY7YH7TL.js} +26 -27
  174. package/chunks/nonInteractiveCli-EK35TLVJ.js +129 -0
  175. package/chunks/{notebook-edit-FJJRBQ3S.js → notebook-edit-IHGW42QK.js} +27 -28
  176. package/chunks/{openaiContentGenerator-4T2OGTR5.js → openaiContentGenerator-FURUCKQJ.js} +13 -14
  177. package/chunks/{pidfile-XL3MDCBM.js → pidfile-WKUVXDMR.js} +27 -28
  178. package/chunks/{processUtils-7UCFN34D.js → processUtils-LHSRN76X.js} +2 -2
  179. package/chunks/{pt-A3PRQXMU.js → pt-JJ4XPIBP.js} +3 -2
  180. package/chunks/{qwenContentGenerator-PQUXJDIZ.js → qwenContentGenerator-NRLM7R36.js} +30 -31
  181. package/chunks/{qwenOAuth2-LEYOU7RU.js → qwenOAuth2-5FNX3AWH.js} +22 -5
  182. package/chunks/{read-file-3EYQML7E.js → read-file-VLEAEXFP.js} +9 -10
  183. package/chunks/{read-mcp-resource-JUFHCKSC.js → read-mcp-resource-C6NT52T6.js} +2 -2
  184. package/chunks/{record-artifact-DWSMBXYY.js → record-artifact-ENCU7QCL.js} +2 -2
  185. package/chunks/{ripGrep-S6WPGQNA.js → ripGrep-MT23EIDD.js} +26 -27
  186. package/chunks/{ru-IBCWUTOC.js → ru-STR4KTW7.js} +3 -2
  187. package/chunks/{run-qwen-serve-NSKBT3HU.js → run-qwen-serve-5HWOQFLI.js} +63 -47
  188. package/chunks/{runtime-LG5ZZ3VH.js → runtime-6IVKJSLW.js} +38 -37
  189. package/chunks/{scheduler-PLX3VVTB.js → scheduler-63GJG75U.js} +26 -27
  190. package/chunks/{send-message-JZ752NWD.js → send-message-5GZ4FX2V.js} +3 -3
  191. package/chunks/{serve-S2ZLRZZR.js → serve-3LL7RRDP.js} +32 -33
  192. package/chunks/{server-5ECMV4TM.js → server-AA24QLPA.js} +1672 -615
  193. package/chunks/{session-ILSONWG4.js → session-LRVCFQQQ.js} +102 -75
  194. package/chunks/{settings-BOE7WWSA.js → settings-ZX3OKUT4.js} +36 -37
  195. package/chunks/{shell-VW664JIZ.js → shell-KR3IMYH6.js} +26 -27
  196. package/chunks/{skill-COHV6625.js → skill-QLM2LSF7.js} +11 -12
  197. package/chunks/{spawnChannel-5UUR5XOZ.js → spawnChannel-6WFOK3SA.js} +28 -29
  198. package/chunks/{src-XPKFZ3RN.js → src-ADLNIPHD.js} +101 -72
  199. package/chunks/{standalone-update-IOOJ2NZQ.js → standalone-update-C54OTJWJ.js} +29 -30
  200. package/chunks/{startInteractiveUI-3NGJGXXS.js → startInteractiveUI-KFAOS6HC.js} +2342 -1796
  201. package/chunks/{stdioHelpers-UMY72QRP.js → stdioHelpers-HGIYTWAY.js} +3 -1
  202. package/chunks/{syntheticOutput-LELY6HAI.js → syntheticOutput-ULOVVLY4.js} +3 -3
  203. package/chunks/{task-create-QY3BIMNM.js → task-create-DUE2PMNI.js} +7 -7
  204. package/chunks/{task-list-D2U47WBJ.js → task-list-WVPNX7BZ.js} +5 -5
  205. package/chunks/{task-stop-N6E5IYLH.js → task-stop-CPEQWOT6.js} +2 -2
  206. package/chunks/{task-update-HJCQILLB.js → task-update-HY2LNFFB.js} +7 -7
  207. package/chunks/{team-create-UPLVZQFX.js → team-create-Q5B5M7UD.js} +26 -27
  208. package/chunks/{team-delete-RCWYDRF4.js → team-delete-JJV6IUOA.js} +5 -5
  209. package/chunks/{team-plan-approval-F5F432RO.js → team-plan-approval-J55PXNY2.js} +26 -27
  210. package/chunks/{theme-manager-JJE4BJ67.js → theme-manager-QWTDRPHV.js} +27 -28
  211. package/chunks/todoWrite-JHHIDOIV.js +358 -0
  212. package/chunks/{tool-search-LRXI4JLZ.js → tool-search-LSSKWZKH.js} +10 -11
  213. package/chunks/{total-session-admission-I4DHN6UP.js → total-session-admission-S6ATY5HY.js} +32 -33
  214. package/chunks/{trustedFolders-SEH7LNX2.js → trustedFolders-CY4TUPDJ.js} +28 -29
  215. package/chunks/turndown.cjs-FZHGMUTY.js +17670 -0
  216. package/chunks/{update-relaunch-T6ZKBUA6.js → update-relaunch-IOKOUV3K.js} +6 -6
  217. package/chunks/{updateCheck-FWLXZPRO.js → updateCheck-YNRFE4V7.js} +30 -31
  218. package/chunks/{validateNonInterActiveAuth-X6K2VWYT.js → validateNonInterActiveAuth-OXTECS4B.js} +68 -68
  219. package/chunks/{version-LIFSOGSE.js → version-2CZQQDL5.js} +1 -1
  220. package/chunks/web-fetch-7QTEGJI5.js +938 -0
  221. package/chunks/{workflow-NX2DFWGD.js → workflow-G3CZU256.js} +29 -30
  222. package/chunks/{workspace-providers-status-VYD6M2NE.js → workspace-providers-status-UHQOIPAZ.js} +35 -36
  223. package/chunks/{workspace-registration-store-2Y6PWOEL.js → workspace-registration-store-5WPCMX4F.js} +1 -1
  224. package/chunks/{workspace-registry-PKBDBWCA.js → workspace-registry-LAQCRQTH.js} +32 -33
  225. package/chunks/{workspace-service-HHORUHTS.js → workspace-service-6ZEUJY2Z.js} +38 -39
  226. package/chunks/{workspace-skills-status-O5Q26LIY.js → workspace-skills-status-YG6OITSM.js} +33 -34
  227. package/chunks/{write-file-NVAEZ3J2.js → write-file-E7T3PU3B.js} +60 -28
  228. package/chunks/{zh-PAUNIMHQ.js → zh-6ANG2HTL.js} +7 -3
  229. package/chunks/{zh-TW-GNEUIUFF.js → zh-TW-4RR3YHNN.js} +7 -3
  230. package/cli-entry.js +37 -2
  231. package/cli.js +17 -11
  232. package/locales/ca.js +3 -2
  233. package/locales/de.js +3 -2
  234. package/locales/en.js +10 -5
  235. package/locales/fr.js +3 -2
  236. package/locales/ja.js +3 -2
  237. package/locales/pt.js +3 -2
  238. package/locales/ru.js +3 -2
  239. package/locales/zh-TW.js +9 -3
  240. package/locales/zh.js +9 -3
  241. package/package.json +3 -3
  242. package/web-shell/assets/{arc-H74fE8UR.js → arc-_dVIKMdB.js} +1 -1
  243. package/web-shell/assets/{architectureDiagram-3BPJPVTR-DN3kEq-I.js → architectureDiagram-3BPJPVTR-MuN3nKpL.js} +1 -1
  244. package/web-shell/assets/{blockDiagram-GPEHLZMM-BrqbsFUF.js → blockDiagram-GPEHLZMM-BtmvJjzx.js} +1 -1
  245. package/web-shell/assets/{c4Diagram-AAUBKEIU-ClFhU1P-.js → c4Diagram-AAUBKEIU-Dvi58_BU.js} +1 -1
  246. package/web-shell/assets/channel-Bi5TehaT.js +1 -0
  247. package/web-shell/assets/{chunk-2J33WTMH-jCIcG0_M.js → chunk-2J33WTMH-YqxOVhS1.js} +1 -1
  248. package/web-shell/assets/{chunk-4BX2VUAB-DSkGe62-.js → chunk-4BX2VUAB-DoBgbC9z.js} +1 -1
  249. package/web-shell/assets/{chunk-55IACEB6-BxBHOGTd.js → chunk-55IACEB6-3NEQrBAr.js} +1 -1
  250. package/web-shell/assets/{chunk-727SXJPM-v_DS7dH7.js → chunk-727SXJPM-DrCZQxp0.js} +1 -1
  251. package/web-shell/assets/{chunk-AQP2D5EJ-1RzEKRPq.js → chunk-AQP2D5EJ-m_g3zjgv.js} +1 -1
  252. package/web-shell/assets/{chunk-FMBD7UC4-DyrSbLOX.js → chunk-FMBD7UC4-D1_crABJ.js} +1 -1
  253. package/web-shell/assets/{chunk-ND2GUHAM-BCmdsZiy.js → chunk-ND2GUHAM-BdhgVtBx.js} +1 -1
  254. package/web-shell/assets/{chunk-QZHKN3VN-CphHGW2D.js → chunk-QZHKN3VN-BlmThhm-.js} +1 -1
  255. package/web-shell/assets/classDiagram-4FO5ZUOK-BKhhRdd1.js +1 -0
  256. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BKhhRdd1.js +1 -0
  257. package/web-shell/assets/{cose-bilkent-S5V4N54A-D5kRC7Fi.js → cose-bilkent-S5V4N54A-Cbjm_00Z.js} +1 -1
  258. package/web-shell/assets/{dagre-BM42HDAG-DIiyJJ0U.js → dagre-BM42HDAG-C39QNVgC.js} +1 -1
  259. package/web-shell/assets/{diagram-2AECGRRQ-BOcuB8xU.js → diagram-2AECGRRQ-DNXSAixC.js} +1 -1
  260. package/web-shell/assets/{diagram-5GNKFQAL-CMgiZ4d3.js → diagram-5GNKFQAL-BCbGUPEA.js} +1 -1
  261. package/web-shell/assets/{diagram-KO2AKTUF-Ctx8pfN0.js → diagram-KO2AKTUF-1eujKSDC.js} +1 -1
  262. package/web-shell/assets/{diagram-LMA3HP47-BT5REAWC.js → diagram-LMA3HP47-DUMKXgql.js} +1 -1
  263. package/web-shell/assets/{diagram-OG6HWLK6-CJkUqXcp.js → diagram-OG6HWLK6-BFktU3_u.js} +1 -1
  264. package/web-shell/assets/{erDiagram-TEJ5UH35-DyvNNX6v.js → erDiagram-TEJ5UH35-BvJC7DLk.js} +1 -1
  265. package/web-shell/assets/{flowDiagram-I6XJVG4X-VBf8_My8.js → flowDiagram-I6XJVG4X-Cgu3PlOt.js} +1 -1
  266. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CviJnR7B.js → ganttDiagram-6RSMTGT7-DLNXN5Xh.js} +1 -1
  267. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BY66_Oze.js → gitGraphDiagram-PVQCEYII-BQFRDv6R.js} +1 -1
  268. package/web-shell/assets/index-C_ouplMQ.js +1187 -0
  269. package/web-shell/assets/{index-DhYuvi3j.js → index-CdC3pjP3.js} +1 -1
  270. package/web-shell/assets/index-XGDFJE-X.css +5 -0
  271. package/web-shell/assets/{infoDiagram-5YYISTIA-D2jaewWZ.js → infoDiagram-5YYISTIA-DT2mOSvp.js} +1 -1
  272. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BpnNTyi5.js → ishikawaDiagram-YF4QCWOH-9fy_K4bd.js} +1 -1
  273. package/web-shell/assets/{journeyDiagram-JHISSGLW-CA55GNZF.js → journeyDiagram-JHISSGLW-CoGSEuhE.js} +1 -1
  274. package/web-shell/assets/{kanban-definition-UN3LZRKU-DyiSl_Ts.js → kanban-definition-UN3LZRKU-BP9hHYIj.js} +1 -1
  275. package/web-shell/assets/{linear-B-sN3dkV.js → linear-uIroDsmp.js} +1 -1
  276. package/web-shell/assets/{mermaid.core-xf9SXDdb.js → mermaid.core-BUwoStsA.js} +5 -5
  277. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DXhr2kRk.js → mindmap-definition-RKZ34NQL-DZB-FWim.js} +1 -1
  278. package/web-shell/assets/{pieDiagram-4H26LBE5-DUXpbfGQ.js → pieDiagram-4H26LBE5-YPptloKl.js} +1 -1
  279. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-NeDQYeWw.js → quadrantDiagram-W4KKPZXB-dgk3DSzm.js} +1 -1
  280. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BSbFRL1A.js → requirementDiagram-4Y6WPE33-BH2En2i9.js} +1 -1
  281. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-gg27cAaN.js → sankeyDiagram-5OEKKPKP-BB98feeI.js} +1 -1
  282. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Bi_1TSs4.js → sequenceDiagram-3UESZ5HK-CunAIGh8.js} +1 -1
  283. package/web-shell/assets/{stateDiagram-AJRCARHV-CboCCRaf.js → stateDiagram-AJRCARHV-DTJs_-I2.js} +1 -1
  284. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DrfFMYta.js +1 -0
  285. package/web-shell/assets/{timeline-definition-PNZ67QCA-DrGpF_jn.js → timeline-definition-PNZ67QCA-Cd4AN7O0.js} +1 -1
  286. package/web-shell/assets/{vennDiagram-CIIHVFJN-DCaJU67x.js → vennDiagram-CIIHVFJN-xIG-rUU9.js} +1 -1
  287. package/web-shell/assets/{wardley-L42UT6IY-p0QcW1aP.js → wardley-L42UT6IY-D1UyjIcG.js} +1 -1
  288. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DiEVxj1W.js → wardleyDiagram-YWT4CUSO-BVM0Mb99.js} +1 -1
  289. package/web-shell/assets/{xychartDiagram-2RQKCTM6-iQB8nSlA.js → xychartDiagram-2RQKCTM6-BX31JDSz.js} +1 -1
  290. package/web-shell/index.html +2 -2
  291. package/chunks/chunk-2HRYPZT5.js +0 -25
  292. package/chunks/chunk-QAW7PIHT.js +0 -168
  293. package/chunks/chunk-RTV5TUYB.js +0 -143
  294. package/chunks/chunk-ZPAHLFZU.js +0 -172
  295. package/chunks/exitPlanMode-HYQL4XMB.js +0 -909
  296. package/chunks/nonInteractiveCli-UMYUT643.js +0 -129
  297. package/chunks/todoWrite-FKCGATPJ.js +0 -531
  298. package/chunks/web-fetch-CFCWTCAP.js +0 -5673
  299. package/web-shell/assets/channel-NFC5ADAa.js +0 -1
  300. package/web-shell/assets/classDiagram-4FO5ZUOK-DHgwjz3X.js +0 -1
  301. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DHgwjz3X.js +0 -1
  302. package/web-shell/assets/index-8xIBbHV3.js +0 -1143
  303. package/web-shell/assets/index-DLyhlZZO.css +0 -5
  304. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CXRqms6P.js +0 -1
@@ -11,9 +11,10 @@ import {
11
11
  getCommandSourceBadge,
12
12
  getCommandSourceGroup,
13
13
  getCommandSubcommandNames,
14
+ parseCodeFenceInfo,
14
15
  splitMarkdownTableRow,
15
16
  useSessionStats
16
- } from "./chunk-BYB3GF2T.js";
17
+ } from "./chunk-JCYMQU5F.js";
17
18
  import {
18
19
  Colors,
19
20
  RowMouseController,
@@ -23,7 +24,7 @@ import {
23
24
  useMouseEvents,
24
25
  useSettings,
25
26
  useTerminalSize
26
- } from "./chunk-FYQ22K62.js";
27
+ } from "./chunk-CHVH4DVN.js";
27
28
  import {
28
29
  CompactToolGroupDisplay,
29
30
  SCREEN_READER_MODEL_PREFIX,
@@ -48,11 +49,11 @@ import {
48
49
  useKeypress,
49
50
  wrapAnsi,
50
51
  wrapForMultiplexer
51
- } from "./chunk-NVTQZXR7.js";
52
+ } from "./chunk-6QGZVKOO.js";
52
53
  import {
53
54
  MINIMUM_MAX_HEIGHT,
54
55
  MaxSizedBox
55
- } from "./chunk-DOPUYNXO.js";
56
+ } from "./chunk-NUHSLBJZ.js";
56
57
  import {
57
58
  Box_default,
58
59
  Static,
@@ -62,33 +63,35 @@ import {
62
63
  theme,
63
64
  use_is_screen_reader_enabled_default,
64
65
  use_stdin_default
65
- } from "./chunk-OWT2CAEQ.js";
66
- import {
67
- relaunchApp
68
- } from "./chunk-LS56TX3M.js";
69
- import {
70
- isTerminalGoalStatusKind
71
- } from "./chunk-7X7TEQNX.js";
72
- import {
73
- require_react
74
- } from "./chunk-HTHUX2T5.js";
66
+ } from "./chunk-GEHSF7MS.js";
75
67
  import {
76
68
  resolveColor,
77
69
  themeManager
78
- } from "./chunk-Q6TUALBE.js";
70
+ } from "./chunk-XAAEDML2.js";
71
+ import {
72
+ relaunchApp
73
+ } from "./chunk-CMHJEUVB.js";
79
74
  import {
80
75
  cpLen,
81
76
  cpSlice,
82
77
  escapeAnsiCtrlCodes,
83
78
  getCachedStringWidth,
79
+ sanitizeFilenameForDisplay,
84
80
  sanitizeMultilineForDisplay,
85
81
  sanitizeSensitiveText,
86
82
  sanitizeTerminalText,
87
83
  stringWidth,
88
84
  stripUnsafeCharacters,
89
85
  toCodePoints,
86
+ truncateToWidth,
90
87
  wrapToVisualLines
91
- } from "./chunk-SUARMD4Q.js";
88
+ } from "./chunk-J6NT5YTN.js";
89
+ import {
90
+ isTerminalGoalStatusKind
91
+ } from "./chunk-76BFY7AF.js";
92
+ import {
93
+ require_react
94
+ } from "./chunk-HTHUX2T5.js";
92
95
  import {
93
96
  formatDuration,
94
97
  formatMemoryUsage,
@@ -101,18 +104,18 @@ import {
101
104
  } from "./chunk-57OAHC2Y.js";
102
105
  import {
103
106
  createLoadedSettingsAdapter
104
- } from "./chunk-SQ5BK3GO.js";
107
+ } from "./chunk-DYUPBU7H.js";
105
108
  import {
106
109
  getPersistScopeForModelSelection
107
- } from "./chunk-GNBBAQ6J.js";
110
+ } from "./chunk-ILQ42UG6.js";
108
111
  import {
109
112
  getCurrentLanguage,
110
113
  localizeToolDisplayName,
111
114
  t
112
- } from "./chunk-4AGTGMCQ.js";
115
+ } from "./chunk-3PE7OY2G.js";
113
116
  import {
114
117
  isWorkspaceTrusted
115
- } from "./chunk-2OG646IN.js";
118
+ } from "./chunk-XFJU7SVP.js";
116
119
  import {
117
120
  ALL_PROVIDERS,
118
121
  IdeClient,
@@ -132,7 +135,7 @@ import {
132
135
  resolveBaseUrl,
133
136
  resolveMetadataKey,
134
137
  resolveOwnsModel
135
- } from "./chunk-NJOFRXTM.js";
138
+ } from "./chunk-6TDA4EVC.js";
136
139
  import {
137
140
  stripAnsi
138
141
  } from "./chunk-T4TZQJ7W.js";
@@ -141,17 +144,17 @@ import {
141
144
  formatVisionBridgeNoticeDisplay,
142
145
  getMCPServerStatus,
143
146
  isVisionBridgeNoticeDisplay
144
- } from "./chunk-MQOVXZAF.js";
147
+ } from "./chunk-YN2I5I42.js";
145
148
  import {
146
149
  ToolDisplayNames,
147
150
  ToolNames,
148
151
  ToolNamesMigration
149
- } from "./chunk-JGUT3LWZ.js";
152
+ } from "./chunk-ANRANWVE.js";
150
153
  import {
151
154
  createDebugLogger,
152
155
  escapePath,
153
156
  unescapePath
154
- } from "./chunk-7NFB7LBQ.js";
157
+ } from "./chunk-UE5TZ55T.js";
155
158
  import {
156
159
  init_esbuild_shims
157
160
  } from "./chunk-5O2XNYP6.js";
@@ -2471,14 +2474,16 @@ function colorizeLine(line, language, theme2) {
2471
2474
  );
2472
2475
  }
2473
2476
  __name(colorizeLine, "colorizeLine");
2474
- function colorizeCode(code, language, availableHeight, maxWidth, theme2, settings, tabWidth = 4) {
2477
+ function colorizeCode(code, language, availableHeight, maxWidth, options = {}) {
2478
+ const { theme: theme2, settings, tabWidth = 4, startLineNumber = 1 } = options;
2479
+ const firstLineNumber = Math.max(1, Math.trunc(startLineNumber));
2475
2480
  const codeToHighlight = code.replace(/\n$/, "").replace(/\t/g, " ".repeat(tabWidth));
2476
2481
  const activeTheme = theme2 || themeManager.getActiveTheme();
2477
2482
  const showLineNumbers = settings?.merged.ui?.showLineNumbers ?? true;
2478
2483
  const lowlight = ensureLowlightLoading();
2479
2484
  try {
2480
2485
  let lines = codeToHighlight.split("\n");
2481
- const padWidth = String(lines.length).length;
2486
+ const padWidth = String(lines.length + firstLineNumber - 1).length;
2482
2487
  let hiddenLinesCount = 0;
2483
2488
  if (availableHeight !== void 0) {
2484
2489
  availableHeight = Math.max(availableHeight, MINIMUM_MAX_HEIGHT);
@@ -2503,10 +2508,9 @@ function colorizeCode(code, language, availableHeight, maxWidth, theme2, setting
2503
2508
  lowlight
2504
2509
  );
2505
2510
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { children: [
2506
- showLineNumbers && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: activeTheme.colors.Gray, children: `${String(index + 1 + hiddenLinesCount).padStart(
2507
- padWidth,
2508
- " "
2509
- )} ` }),
2511
+ showLineNumbers && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: activeTheme.colors.Gray, children: `${String(
2512
+ index + firstLineNumber + hiddenLinesCount
2513
+ ).padStart(padWidth, " ")} ` }),
2510
2514
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: activeTheme.defaultColor, wrap: "wrap", children: contentToRender })
2511
2515
  ] }, index);
2512
2516
  })
@@ -2518,7 +2522,7 @@ function colorizeCode(code, language, availableHeight, maxWidth, theme2, setting
2518
2522
  error
2519
2523
  );
2520
2524
  const lines = codeToHighlight.split("\n");
2521
- const padWidth = String(lines.length).length;
2525
+ const padWidth = String(lines.length + firstLineNumber - 1).length;
2522
2526
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2523
2527
  MaxSizedBox,
2524
2528
  {
@@ -2526,7 +2530,7 @@ function colorizeCode(code, language, availableHeight, maxWidth, theme2, setting
2526
2530
  maxWidth,
2527
2531
  overflowDirection: "top",
2528
2532
  children: lines.map((line, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { children: [
2529
- showLineNumbers && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: activeTheme.defaultColor, children: `${String(index + 1).padStart(padWidth, " ")} ` }),
2533
+ showLineNumbers && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: activeTheme.defaultColor, children: `${String(index + firstLineNumber).padStart(padWidth, " ")} ` }),
2530
2534
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: activeTheme.colors.Gray, children: line })
2531
2535
  ] }, index))
2532
2536
  }
@@ -3588,7 +3592,7 @@ function escapeRegExp(text) {
3588
3592
  return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
3589
3593
  }
3590
3594
  __name(escapeRegExp, "escapeRegExp");
3591
- function truncateToWidth(text, width) {
3595
+ function truncateToWidth2(text, width) {
3592
3596
  if (width <= 0 || stringWidth(text) <= width) return text;
3593
3597
  let result = "";
3594
3598
  for (const char of text) {
@@ -3597,7 +3601,7 @@ function truncateToWidth(text, width) {
3597
3601
  }
3598
3602
  return result + "\u2026";
3599
3603
  }
3600
- __name(truncateToWidth, "truncateToWidth");
3604
+ __name(truncateToWidth2, "truncateToWidth");
3601
3605
  function center(text, width) {
3602
3606
  const padding = Math.max(0, width - stringWidth(text));
3603
3607
  const left = Math.floor(padding / 2);
@@ -3647,7 +3651,7 @@ function previewSourceFallback(source, contentWidth, type, warning) {
3647
3651
  const sourceLines = allSourceLines.slice(0, MAX_SOURCE_FALLBACK_LINES);
3648
3652
  const truncated = allSourceLines.length > sourceLines.length;
3649
3653
  const lines = ["```mermaid", ...sourceLines, "```"].map(
3650
- (line) => truncateToWidth(line, contentWidth)
3654
+ (line) => truncateToWidth2(line, contentWidth)
3651
3655
  );
3652
3656
  return {
3653
3657
  title: `Mermaid source (${type})`,
@@ -3790,7 +3794,7 @@ function normalizeFlowNodeLabels(edges) {
3790
3794
  __name(normalizeFlowNodeLabels, "normalizeFlowNodeLabels");
3791
3795
  function boxNode(node, width) {
3792
3796
  const labels = nodeLabelLines(node.label).map(
3793
- (line) => truncateToWidth(line, Math.max(3, width - 4))
3797
+ (line) => truncateToWidth2(line, Math.max(3, width - 4))
3794
3798
  );
3795
3799
  const innerWidth = Math.max(4, ...labels.map((label) => stringWidth(label)));
3796
3800
  if (node.shape === "diamond") {
@@ -4066,7 +4070,7 @@ function drawForwardVerticalEdge(canvas, from, to, label) {
4066
4070
  canvas,
4067
4071
  Math.min(canvas[midY].length - 1, from.centerX + 2),
4068
4072
  midY,
4069
- truncateToWidth(label, 14)
4073
+ truncateToWidth2(label, 14)
4070
4074
  );
4071
4075
  }
4072
4076
  return;
@@ -4082,7 +4086,7 @@ function drawForwardVerticalEdge(canvas, from, to, label) {
4082
4086
  putChar(canvas, to.centerX, bendY, targetIsRight ? "\u2510" : "\u250C", true);
4083
4087
  putChar(canvas, to.centerX, endY, "\u25BC");
4084
4088
  if (label) {
4085
- const text = truncateToWidth(label, 14);
4089
+ const text = truncateToWidth2(label, 14);
4086
4090
  const labelX = Math.abs(to.centerX - from.centerX) > stringWidth(text) + 2 ? Math.min(from.centerX, to.centerX) + Math.floor(
4087
4091
  (Math.abs(to.centerX - from.centerX) - stringWidth(text)) / 2
4088
4092
  ) : Math.min(canvas[bendY].length - stringWidth(text), from.centerX + 2);
@@ -4121,7 +4125,7 @@ function drawVerticalFork(canvas, from, targets) {
4121
4125
  putChar(canvas, target.to.centerX, forkY, targetJunction, true);
4122
4126
  putChar(canvas, target.to.centerX, endY, "\u25BC");
4123
4127
  if (target.edge.label) {
4124
- const label = `[${truncateToWidth(target.edge.label, 10)}]`;
4128
+ const label = `[${truncateToWidth2(target.edge.label, 10)}]`;
4125
4129
  const x = Math.max(
4126
4130
  0,
4127
4131
  Math.min(
@@ -4156,7 +4160,7 @@ function drawHorizontalEdge(canvas, from, to, label) {
4156
4160
  drawHorizontal(canvas, from.centerY, fromX, toX);
4157
4161
  putChar(canvas, toX, to.centerY, forward ? "\u25B6" : "\u25C0");
4158
4162
  if (label) {
4159
- const text = truncateToWidth(label, 12);
4163
+ const text = truncateToWidth2(label, 12);
4160
4164
  putText(
4161
4165
  canvas,
4162
4166
  Math.max(0, midX - Math.floor(stringWidth(text) / 2)),
@@ -4171,7 +4175,7 @@ function drawHorizontalEdge(canvas, from, to, label) {
4171
4175
  drawHorizontal(canvas, to.centerY, midX, toX);
4172
4176
  putChar(canvas, toX, to.centerY, forward ? "\u25B6" : "\u25C0");
4173
4177
  if (label) {
4174
- const text = truncateToWidth(label, 12);
4178
+ const text = truncateToWidth2(label, 12);
4175
4179
  putText(
4176
4180
  canvas,
4177
4181
  Math.max(0, midX - Math.floor(stringWidth(text) / 2)),
@@ -4182,7 +4186,7 @@ function drawHorizontalEdge(canvas, from, to, label) {
4182
4186
  }
4183
4187
  __name(drawHorizontalEdge, "drawHorizontalEdge");
4184
4188
  function canvasToLines(canvas, contentWidth) {
4185
- return canvas.map((row) => truncateToWidth(row.join("").trimEnd(), contentWidth)).filter(
4189
+ return canvas.map((row) => truncateToWidth2(row.join("").trimEnd(), contentWidth)).filter(
4186
4190
  (line, index, lines) => line.length > 0 || index < lines.length - 1
4187
4191
  );
4188
4192
  }
@@ -4236,7 +4240,7 @@ function renderLayeredFlowchart(edges, contentWidth, horizontal) {
4236
4240
  lines.push("");
4237
4241
  lines.push("Cycles:");
4238
4242
  for (const note of loopNotes) {
4239
- lines.push(truncateToWidth(` ${note}`, contentWidth));
4243
+ lines.push(truncateToWidth2(` ${note}`, contentWidth));
4240
4244
  }
4241
4245
  }
4242
4246
  return lines;
@@ -4328,7 +4332,7 @@ function renderSequence(source, contentWidth) {
4328
4332
  continue;
4329
4333
  }
4330
4334
  messages.push(
4331
- truncateToWidth(
4335
+ truncateToWidth2(
4332
4336
  `${participants.get(from) ?? from} ${arrow} ${participants.get(to) ?? to}: ${message}`,
4333
4337
  contentWidth
4334
4338
  )
@@ -4343,7 +4347,7 @@ function renderSequence(source, contentWidth) {
4343
4347
  "Sequence preview supports A->>B: message style arrows; showing source instead."
4344
4348
  );
4345
4349
  }
4346
- const lines = [truncateToWidth(header, contentWidth), ""];
4350
+ const lines = [truncateToWidth2(header, contentWidth), ""];
4347
4351
  lines.push(...messages);
4348
4352
  return {
4349
4353
  title: "Mermaid sequence diagram",
@@ -4383,7 +4387,7 @@ function renderClassDiagram(source, contentWidth) {
4383
4387
  classes.add(from);
4384
4388
  classes.add(to);
4385
4389
  relationships.push(
4386
- truncateToWidth(
4390
+ truncateToWidth2(
4387
4391
  `${from} ${relation} ${to}${label ? `: ${label}` : ""}`,
4388
4392
  contentWidth
4389
4393
  )
@@ -4394,7 +4398,7 @@ function renderClassDiagram(source, contentWidth) {
4394
4398
  if (inlineMemberMatch) {
4395
4399
  classes.add(inlineMemberMatch[1]);
4396
4400
  members.push(
4397
- truncateToWidth(
4401
+ truncateToWidth2(
4398
4402
  `${inlineMemberMatch[1]}: ${stripMermaidPunctuation(inlineMemberMatch[2])}`,
4399
4403
  contentWidth
4400
4404
  )
@@ -4403,7 +4407,7 @@ function renderClassDiagram(source, contentWidth) {
4403
4407
  }
4404
4408
  if (currentClass) {
4405
4409
  members.push(
4406
- truncateToWidth(
4410
+ truncateToWidth2(
4407
4411
  `${currentClass}: ${stripMermaidPunctuation(line)}`,
4408
4412
  contentWidth
4409
4413
  )
@@ -4419,7 +4423,7 @@ function renderClassDiagram(source, contentWidth) {
4419
4423
  );
4420
4424
  }
4421
4425
  const output = [
4422
- truncateToWidth(
4426
+ truncateToWidth2(
4423
4427
  `Classes: ${Array.from(classes).join(" | ") || "not declared"}`,
4424
4428
  contentWidth
4425
4429
  ),
@@ -4445,7 +4449,7 @@ function renderStateDiagram(source, contentWidth) {
4445
4449
  const to = stripMermaidPunctuation(transitionMatch[2]);
4446
4450
  const label = stripMermaidPunctuation(transitionMatch[3] ?? "");
4447
4451
  transitions.push(
4448
- truncateToWidth(
4452
+ truncateToWidth2(
4449
4453
  `${from} \u2192 ${to}${label ? `: ${label}` : ""}`,
4450
4454
  contentWidth
4451
4455
  )
@@ -4455,7 +4459,7 @@ function renderStateDiagram(source, contentWidth) {
4455
4459
  const stateMatch = /^state\s+(.+?)(?:\s+as\s+(.+))?$/i.exec(line);
4456
4460
  if (stateMatch) {
4457
4461
  declarations.push(
4458
- truncateToWidth(
4462
+ truncateToWidth2(
4459
4463
  stripMermaidPunctuation(stateMatch[2] ?? stateMatch[1]),
4460
4464
  contentWidth
4461
4465
  )
@@ -4505,7 +4509,7 @@ function renderErDiagram(source, contentWidth) {
4505
4509
  entities.add(relationMatch[1]);
4506
4510
  entities.add(relationMatch[3]);
4507
4511
  relationships.push(
4508
- truncateToWidth(
4512
+ truncateToWidth2(
4509
4513
  `${relationMatch[1]} ${relationMatch[2]} ${relationMatch[3]}${relationMatch[4] ? `: ${stripMermaidPunctuation(relationMatch[4])}` : ""}`,
4510
4514
  contentWidth
4511
4515
  )
@@ -4514,7 +4518,7 @@ function renderErDiagram(source, contentWidth) {
4514
4518
  }
4515
4519
  if (currentEntity) {
4516
4520
  attributes.push(
4517
- truncateToWidth(
4521
+ truncateToWidth2(
4518
4522
  `${currentEntity}: ${stripMermaidPunctuation(line)}`,
4519
4523
  contentWidth
4520
4524
  )
@@ -4532,7 +4536,7 @@ function renderErDiagram(source, contentWidth) {
4532
4536
  return {
4533
4537
  title: "Mermaid ER diagram",
4534
4538
  lines: [
4535
- truncateToWidth(
4539
+ truncateToWidth2(
4536
4540
  `Entities: ${Array.from(entities).join(" | ") || "not declared"}`,
4537
4541
  contentWidth
4538
4542
  ),
@@ -4548,7 +4552,7 @@ function renderPieDiagram(source, contentWidth) {
4548
4552
  const { lines: rawLines, truncated } = diagramLines(source, PIE_START_RE);
4549
4553
  const titleLine = rawLines.find((line) => /^title\b/i.test(line));
4550
4554
  const slices = rawLines.map((line) => /^["']?(.+?)["']?\s*:\s*([0-9.]+)\s*$/.exec(line)).filter((match) => match !== null).map(
4551
- (match) => truncateToWidth(
4555
+ (match) => truncateToWidth2(
4552
4556
  `${stripMermaidPunctuation(match[1])}: ${match[2]}`,
4553
4557
  contentWidth
4554
4558
  )
@@ -4565,7 +4569,7 @@ function renderPieDiagram(source, contentWidth) {
4565
4569
  title: "Mermaid pie chart",
4566
4570
  lines: [
4567
4571
  ...titleLine ? [
4568
- truncateToWidth(stripMermaidPunctuation(titleLine), contentWidth),
4572
+ truncateToWidth2(stripMermaidPunctuation(titleLine), contentWidth),
4569
4573
  ""
4570
4574
  ] : [],
4571
4575
  ...slices
@@ -4587,7 +4591,7 @@ function renderGanttDiagram(source, contentWidth) {
4587
4591
  if (section) {
4588
4592
  output.push("");
4589
4593
  output.push(
4590
- truncateToWidth(
4594
+ truncateToWidth2(
4591
4595
  `Section: ${stripMermaidPunctuation(section[1])}`,
4592
4596
  contentWidth
4593
4597
  )
@@ -4597,7 +4601,7 @@ function renderGanttDiagram(source, contentWidth) {
4597
4601
  const title = /^title\s+(.+)$/i.exec(line);
4598
4602
  if (title) {
4599
4603
  output.push(
4600
- truncateToWidth(
4604
+ truncateToWidth2(
4601
4605
  `Title: ${stripMermaidPunctuation(title[1])}`,
4602
4606
  contentWidth
4603
4607
  )
@@ -4605,7 +4609,7 @@ function renderGanttDiagram(source, contentWidth) {
4605
4609
  continue;
4606
4610
  }
4607
4611
  output.push(
4608
- truncateToWidth(`\u2022 ${stripMermaidPunctuation(line)}`, contentWidth)
4612
+ truncateToWidth2(`\u2022 ${stripMermaidPunctuation(line)}`, contentWidth)
4609
4613
  );
4610
4614
  }
4611
4615
  if (output.length === 0) {
@@ -4630,7 +4634,7 @@ function renderJourneyDiagram(source, contentWidth) {
4630
4634
  const title = /^title\s+(.+)$/i.exec(line);
4631
4635
  if (title) {
4632
4636
  output.push(
4633
- truncateToWidth(
4637
+ truncateToWidth2(
4634
4638
  `Title: ${stripMermaidPunctuation(title[1])}`,
4635
4639
  contentWidth
4636
4640
  )
@@ -4641,7 +4645,7 @@ function renderJourneyDiagram(source, contentWidth) {
4641
4645
  if (section) {
4642
4646
  output.push("");
4643
4647
  output.push(
4644
- truncateToWidth(
4648
+ truncateToWidth2(
4645
4649
  `Section: ${stripMermaidPunctuation(section[1])}`,
4646
4650
  contentWidth
4647
4651
  )
@@ -4649,7 +4653,7 @@ function renderJourneyDiagram(source, contentWidth) {
4649
4653
  continue;
4650
4654
  }
4651
4655
  output.push(
4652
- truncateToWidth(`\u2022 ${stripMermaidPunctuation(line)}`, contentWidth)
4656
+ truncateToWidth2(`\u2022 ${stripMermaidPunctuation(line)}`, contentWidth)
4653
4657
  );
4654
4658
  }
4655
4659
  if (output.length === 0) {
@@ -4677,7 +4681,7 @@ function renderIndentedTreeDiagram(source, contentWidth, startRe, title, sourceT
4677
4681
  const safeLine = sanitizeTerminalText2(line);
4678
4682
  const indentation = /^\s*/.exec(safeLine)?.[0].length ?? 0;
4679
4683
  const depth = Math.floor(indentation / 2);
4680
- return truncateToWidth(
4684
+ return truncateToWidth2(
4681
4685
  `${" ".repeat(depth)}\u2022 ${safeLine.trim()}`,
4682
4686
  contentWidth
4683
4687
  );
@@ -5782,7 +5786,7 @@ function countMarkdownSourceBlocks(text) {
5782
5786
  }
5783
5787
  if (codeFenceMatch) {
5784
5788
  activeCodeFence = codeFenceMatch[1];
5785
- const lang = codeFenceMatch[2]?.trim().split(/\s+/)[0]?.toLowerCase() || null;
5789
+ const lang = parseCodeFenceInfo(codeFenceMatch[2]).lang?.toLowerCase();
5786
5790
  if (lang) {
5787
5791
  codeBlockLanguageCounts.set(
5788
5792
  lang,
@@ -5917,6 +5921,7 @@ var MarkdownDisplayInternal = /* @__PURE__ */ __name(({
5917
5921
  let codeBlockIndex = 0;
5918
5922
  let currentCodeBlockIndex = 0;
5919
5923
  let currentCodeBlockLangIndex = 0;
5924
+ let currentCodeBlockStartLine = 1;
5920
5925
  const codeBlockLanguageCounts = new Map(
5921
5926
  sourceCopyIndexOffsets?.codeBlockLanguageCounts
5922
5927
  );
@@ -5954,7 +5959,8 @@ var MarkdownDisplayInternal = /* @__PURE__ */ __name(({
5954
5959
  codeBlockLangIndex: currentCodeBlockLangIndex,
5955
5960
  isPending,
5956
5961
  availableTerminalHeight,
5957
- contentWidth
5962
+ contentWidth,
5963
+ startLineNumber: currentCodeBlockStartLine
5958
5964
  },
5959
5965
  key
5960
5966
  )
@@ -6007,7 +6013,9 @@ var MarkdownDisplayInternal = /* @__PURE__ */ __name(({
6007
6013
  codeBlockIndex += 1;
6008
6014
  currentCodeBlockIndex = codeBlockIndex;
6009
6015
  codeBlockFence = codeFenceMatch[1];
6010
- codeBlockLang = codeFenceMatch[2]?.trim().split(/\s+/)[0] || null;
6016
+ const fenceInfo = parseCodeFenceInfo(codeFenceMatch[2]);
6017
+ codeBlockLang = fenceInfo.lang;
6018
+ currentCodeBlockStartLine = fenceInfo.startLine;
6011
6019
  if (codeBlockLang) {
6012
6020
  const normalizedLang = codeBlockLang.toLowerCase();
6013
6021
  const nextLangIndex = (codeBlockLanguageCounts.get(normalizedLang) ?? 0) + 1;
@@ -6231,7 +6239,8 @@ var MarkdownDisplayInternal = /* @__PURE__ */ __name(({
6231
6239
  codeBlockLangIndex: currentCodeBlockLangIndex,
6232
6240
  isPending,
6233
6241
  availableTerminalHeight,
6234
- contentWidth
6242
+ contentWidth,
6243
+ startLineNumber: currentCodeBlockStartLine
6235
6244
  },
6236
6245
  "line-eof"
6237
6246
  )
@@ -6292,7 +6301,8 @@ var RenderCodeBlockInternal = /* @__PURE__ */ __name(({
6292
6301
  codeBlockLangIndex,
6293
6302
  isPending,
6294
6303
  availableTerminalHeight,
6295
- contentWidth
6304
+ contentWidth,
6305
+ startLineNumber = 1
6296
6306
  }) => {
6297
6307
  const settings = useSettings();
6298
6308
  const { renderMode } = useRenderMode();
@@ -6336,8 +6346,7 @@ var RenderCodeBlockInternal = /* @__PURE__ */ __name(({
6336
6346
  lang,
6337
6347
  availableTerminalHeight,
6338
6348
  contentWidth - CODE_BLOCK_PREFIX_PADDING,
6339
- void 0,
6340
- settings
6349
+ { settings, startLineNumber }
6341
6350
  );
6342
6351
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Box_default, { paddingLeft: CODE_BLOCK_PREFIX_PADDING, flexDirection: "column", children: colorizedTruncatedCode });
6343
6352
  }
@@ -6347,8 +6356,7 @@ var RenderCodeBlockInternal = /* @__PURE__ */ __name(({
6347
6356
  lang,
6348
6357
  availableTerminalHeight,
6349
6358
  contentWidth - CODE_BLOCK_PREFIX_PADDING,
6350
- void 0,
6351
- settings
6359
+ { settings, startLineNumber }
6352
6360
  );
6353
6361
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
6354
6362
  Box_default,
@@ -6914,9 +6922,7 @@ var DiffRenderer = /* @__PURE__ */ __name(({
6914
6922
  language,
6915
6923
  availableTerminalHeight,
6916
6924
  contentWidth,
6917
- theme2,
6918
- settings,
6919
- tabWidth
6925
+ { theme: theme2, settings, tabWidth }
6920
6926
  );
6921
6927
  } else {
6922
6928
  renderedOutput = renderDiffContent(
@@ -7187,6 +7193,7 @@ var Command = /* @__PURE__ */ ((Command2) => {
7187
7193
  Command2["COMPLETION_UP"] = "completionUp";
7188
7194
  Command2["COMPLETION_DOWN"] = "completionDown";
7189
7195
  Command2["SUBMIT"] = "submit";
7196
+ Command2["QUEUE_MESSAGE"] = "queueMessage";
7190
7197
  Command2["NEWLINE"] = "newline";
7191
7198
  Command2["VOICE_PUSH_TO_TALK"] = "voicePushToTalk";
7192
7199
  Command2["OPEN_EXTERNAL_EDITOR"] = "openExternalEditor";
@@ -7259,7 +7266,10 @@ var defaultKeyBindings = {
7259
7266
  { key: "n", ctrl: true }
7260
7267
  ],
7261
7268
  // Auto-completion
7262
- ["acceptSuggestion" /* ACCEPT_SUGGESTION */]: [{ key: "tab" }, { key: "return", ctrl: false }],
7269
+ ["acceptSuggestion" /* ACCEPT_SUGGESTION */]: [
7270
+ { key: "tab" },
7271
+ { key: "return", ctrl: false, shift: false }
7272
+ ],
7263
7273
  // Completion navigation: arrows + readline/Vim-style Ctrl+P/Ctrl+N
7264
7274
  ["completionUp" /* COMPLETION_UP */]: [
7265
7275
  { key: "up", shift: false },
@@ -7280,6 +7290,9 @@ var defaultKeyBindings = {
7280
7290
  shift: false
7281
7291
  }
7282
7292
  ],
7293
+ ["queueMessage" /* QUEUE_MESSAGE */]: [
7294
+ { key: "q", ctrl: true, command: false, shift: false, paste: false }
7295
+ ],
7283
7296
  // Split into multiple data-driven bindings
7284
7297
  // Now also includes shift+enter for multi-line input
7285
7298
  ["newline" /* NEWLINE */]: [
@@ -10771,9 +10784,23 @@ __name(TextInput, "TextInput");
10771
10784
 
10772
10785
  // packages/cli/src/ui/components/messages/AskUserQuestionDialog.tsx
10773
10786
  var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
10787
+ function computeHeaderCap(headerWidths, available) {
10788
+ const ascending = [...headerWidths].sort((a, b) => a - b);
10789
+ let remaining = available;
10790
+ for (let i = 0; i < ascending.length; i++) {
10791
+ const cap = Math.floor(remaining / (ascending.length - i));
10792
+ if (ascending[i] > cap) {
10793
+ return Math.max(0, cap);
10794
+ }
10795
+ remaining -= ascending[i];
10796
+ }
10797
+ return Number.MAX_SAFE_INTEGER;
10798
+ }
10799
+ __name(computeHeaderCap, "computeHeaderCap");
10774
10800
  var AskUserQuestionDialog = /* @__PURE__ */ __name(({
10775
10801
  confirmationDetails,
10776
10802
  isFocused = true,
10803
+ availableWidth,
10777
10804
  onConfirm
10778
10805
  }) => {
10779
10806
  const [currentQuestionIndex, setCurrentQuestionIndex] = (0, import_react15.useState)(0);
@@ -10807,6 +10834,20 @@ var AskUserQuestionDialog = /* @__PURE__ */ __name(({
10807
10834
  }
10808
10835
  return selectedOptions[idx];
10809
10836
  }, "getAnswerForQuestion");
10837
+ const numHeaders = confirmationDetails.questions.length;
10838
+ const answeredHeaders = confirmationDetails.questions.filter(
10839
+ (_, idx) => getAnswerForQuestion(idx) !== void 0
10840
+ ).length;
10841
+ const dialogPadding = 2;
10842
+ const submitChipWidth = (isSubmitTab ? 2 : 1) + getCachedStringWidth(t("Submit"));
10843
+ const chipGaps = numHeaders;
10844
+ const headerPrefixes = 2 * numHeaders;
10845
+ const answeredMarks = 2 * answeredHeaders;
10846
+ const rowOverhead = dialogPadding + submitChipWidth + chipGaps + headerPrefixes + answeredMarks;
10847
+ const headerCap = computeHeaderCap(
10848
+ confirmationDetails.questions.map((q) => getCachedStringWidth(q.header)),
10849
+ availableWidth - rowOverhead
10850
+ );
10810
10851
  const handleSubmit = /* @__PURE__ */ __name(async () => {
10811
10852
  const answers = {};
10812
10853
  confirmationDetails.questions.forEach((_, idx) => {
@@ -10969,8 +11010,8 @@ var AskUserQuestionDialog = /* @__PURE__ */ __name(({
10969
11010
  confirmationDetails.questions.map((q, idx) => {
10970
11011
  const isAnswered = getAnswerForQuestion(idx) !== void 0;
10971
11012
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Text, { dimColor: true, children: [
10972
- isAnswered ? " " : " ",
10973
- q.header,
11013
+ " ",
11014
+ truncateToWidth(q.header, headerCap),
10974
11015
  isAnswered ? " \u2713" : ""
10975
11016
  ] }) }, idx);
10976
11017
  }),
@@ -11033,7 +11074,7 @@ var AskUserQuestionDialog = /* @__PURE__ */ __name(({
11033
11074
  dimColor: idx !== currentQuestionIndex,
11034
11075
  children: [
11035
11076
  idx === currentQuestionIndex ? "\u25B8 " : " ",
11036
- q.header,
11077
+ truncateToWidth(q.header, headerCap),
11037
11078
  isAnswered ? " \u2713" : ""
11038
11079
  ]
11039
11080
  }
@@ -11433,6 +11474,7 @@ var ToolConfirmationMessage = /* @__PURE__ */ __name(({
11433
11474
  {
11434
11475
  confirmationDetails,
11435
11476
  isFocused,
11477
+ availableWidth: contentWidth,
11436
11478
  onConfirm
11437
11479
  }
11438
11480
  );
@@ -13850,6 +13892,7 @@ var GeneralHelp = /* @__PURE__ */ __name(({ width }) => {
13850
13892
  ["Tab", t("Accept ghost text or completion")],
13851
13893
  ["Esc Esc", t("Clear input or cancel operation")],
13852
13894
  ["Ctrl+L", t("Clear the screen")],
13895
+ ["Ctrl+Q", t("Queue message for the next turn")],
13853
13896
  [
13854
13897
  process.platform === "win32" ? "Ctrl+Enter" : "Ctrl+J",
13855
13898
  t("Insert a newline")
@@ -16175,6 +16218,8 @@ var DiffRow = /* @__PURE__ */ __name(({
16175
16218
  remWidth,
16176
16219
  statColumnWidth
16177
16220
  }) => {
16221
+ const safeName = sanitizeFilenameForDisplay(row.filename);
16222
+ const safeOldPath = row.oldPath ? sanitizeFilenameForDisplay(row.oldPath) : null;
16178
16223
  if (row.isBinary) {
16179
16224
  const marker = padRight("~", statColumnWidth);
16180
16225
  const suffix2 = row.isUntracked ? t("(binary, new)") : row.isDeleted ? t("(binary, deleted)") : t("(binary)");
@@ -16182,7 +16227,11 @@ var DiffRow = /* @__PURE__ */ __name(({
16182
16227
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text, { color: theme.text.primary, children: " " }),
16183
16228
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text, { color: theme.text.secondary, children: marker }),
16184
16229
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text, { color: theme.text.primary, children: " " }),
16185
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text, { color: theme.text.primary, children: row.filename }),
16230
+ safeOldPath ? /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Text, { color: theme.text.secondary, children: [
16231
+ safeOldPath,
16232
+ " \u2192 "
16233
+ ] }) : null,
16234
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text, { color: theme.text.primary, children: safeName }),
16186
16235
  /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Text, { color: theme.text.secondary, children: [
16187
16236
  " ",
16188
16237
  suffix2
@@ -16209,7 +16258,11 @@ var DiffRow = /* @__PURE__ */ __name(({
16209
16258
  removed
16210
16259
  ] }),
16211
16260
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text, { color: theme.text.primary, children: " " }),
16212
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text, { color: theme.text.primary, children: row.filename }),
16261
+ safeOldPath ? /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Text, { color: theme.text.secondary, children: [
16262
+ safeOldPath,
16263
+ " \u2192 "
16264
+ ] }) : null,
16265
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text, { color: theme.text.primary, children: safeName }),
16213
16266
  suffix && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Text, { color: theme.text.secondary, children: [
16214
16267
  " ",
16215
16268
  suffix
@@ -16351,6 +16404,7 @@ var ClickableThinkMessage = /* @__PURE__ */ __name(({
16351
16404
  onToggle
16352
16405
  }) => {
16353
16406
  const ref = (0, import_react34.useRef)(null);
16407
+ const pressRef = (0, import_react34.useRef)(null);
16354
16408
  const { rows: terminalHeight } = useTerminalSize();
16355
16409
  const settings = useSettings();
16356
16410
  const clickable = !!settings.merged.ui?.useTerminalBuffer;
@@ -16358,11 +16412,28 @@ var ClickableThinkMessage = /* @__PURE__ */ __name(({
16358
16412
  useMouseEvents(
16359
16413
  (0, import_react34.useCallback)(
16360
16414
  (event) => {
16361
- if (event.name !== "left-press" || !ref.current) return;
16415
+ if (!ref.current) return;
16416
+ if (event.name === "move") {
16417
+ if (pressRef.current && (event.col !== pressRef.current.col || event.row !== pressRef.current.row)) {
16418
+ pressRef.current = null;
16419
+ }
16420
+ return;
16421
+ }
16422
+ if (event.name !== "left-press" && event.name !== "left-release") {
16423
+ pressRef.current = null;
16424
+ return;
16425
+ }
16362
16426
  const metrics = measureElementPosition(ref.current);
16363
16427
  const col = event.col - 1;
16364
16428
  const row = layoutRowForEvent(ref.current, event.row, terminalHeight);
16365
- if (col >= metrics.x && col < metrics.x + metrics.width && row >= metrics.y && row < metrics.y + metrics.height) {
16429
+ const isInside = col >= metrics.x && col < metrics.x + metrics.width && row >= metrics.y && row < metrics.y + metrics.height;
16430
+ if (event.name === "left-press") {
16431
+ pressRef.current = isInside ? { col: event.col, row: event.row } : null;
16432
+ return;
16433
+ }
16434
+ const press = pressRef.current;
16435
+ pressRef.current = null;
16436
+ if (isInside && press?.col === event.col && press.row === event.row) {
16366
16437
  onToggle();
16367
16438
  }
16368
16439
  },