@qwen-code/qwen-code 0.21.7 → 0.21.8-nightly.20260810.55e20db328

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 (334) hide show
  1. package/README.md +2 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +73 -59
  3. package/bundled/qc-helper/docs/extension/introduction.md +15 -1
  4. package/bundled/qc-helper/docs/features/channels/dingtalk.md +40 -2
  5. package/bundled/qc-helper/docs/features/channels/feishu.md +13 -2
  6. package/bundled/qc-helper/docs/features/channels/github.md +13 -11
  7. package/bundled/qc-helper/docs/features/channels/gitlab.md +13 -11
  8. package/bundled/qc-helper/docs/features/channels/overview.md +49 -31
  9. package/bundled/qc-helper/docs/features/channels/plugins.md +2 -2
  10. package/bundled/qc-helper/docs/features/channels/qqbot.md +4 -2
  11. package/bundled/qc-helper/docs/features/channels/telegram.md +4 -2
  12. package/bundled/qc-helper/docs/features/channels/wecom.md +1 -1
  13. package/bundled/qc-helper/docs/features/code-review.md +4 -0
  14. package/bundled/qc-helper/docs/features/commands.md +1 -1
  15. package/bundled/qc-helper/docs/features/hooks.md +52 -0
  16. package/bundled/qc-helper/docs/integration-jetbrains.md +1 -0
  17. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
  18. package/bundled/qc-helper/docs/qwen-serve.md +10 -5
  19. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +50 -36
  20. package/bundled/review/SKILL.md +32 -5
  21. package/chunks/{MaxSizedBox-ANWZBPTS.js → MaxSizedBox-A52T4GEU.js} +29 -25
  22. package/chunks/{StandaloneSessionPicker-XKS3VU3A.js → StandaloneSessionPicker-4J654SOB.js} +48 -44
  23. package/chunks/{acp-startup-profiler-ORIQ2CCQ.js → acp-startup-profiler-B5BYAMYQ.js} +2 -2
  24. package/chunks/{acpAgent-KUAZ3GCZ.js → acpAgent-65AM4AOR.js} +1833 -843
  25. package/chunks/{agent-T6PTGX5R.js → agent-SVQ7U7NJ.js} +28 -24
  26. package/chunks/{agent-headless-PR7YCB7S.js → agent-headless-XXGY2SQO.js} +28 -24
  27. package/chunks/{artifact-tool-U4VOZIK5.js → artifact-tool-N652YE4L.js} +1 -1
  28. package/chunks/{askUserQuestion-XOBQLPFA.js → askUserQuestion-ONW74PKJ.js} +1 -1
  29. package/chunks/{bridge-NU6YEEHK.js → bridge-Y32B5S3G.js} +34 -30
  30. package/chunks/{ca-NYKNH222.js → ca-ZLKAB4K3.js} +6 -0
  31. package/chunks/{channel-management-service-FSQ7SHYI.js → channel-management-service-PHELKOW2.js} +19 -10
  32. package/chunks/{channel-settings-store-35VQVUVV.js → channel-settings-store-OW43U6VB.js} +36 -32
  33. package/chunks/{channel-worker-group-JWQK224X.js → channel-worker-group-MSHT6CWR.js} +7 -7
  34. package/chunks/{channel-worker-manager-77E3OXRQ.js → channel-worker-manager-XXD3GDSK.js} +7 -7
  35. package/chunks/{channel-worker-supervisor-62YWUGP2.js → channel-worker-supervisor-IVSDIMI4.js} +4 -4
  36. package/chunks/{chunk-HYRDKNUY.js → chunk-2545EHZR.js} +1 -1
  37. package/chunks/{chunk-SPMY6CX6.js → chunk-2ASQDZSJ.js} +3 -3
  38. package/chunks/{chunk-CJXIIILK.js → chunk-2FRY5CRX.js} +1 -1
  39. package/chunks/{chunk-CNIID3TV.js → chunk-2UUMVNYT.js} +1 -1
  40. package/chunks/{chunk-KXSDEOFU.js → chunk-3KJQZEN3.js} +1 -1
  41. package/chunks/{chunk-22NBYCPD.js → chunk-3P2LV43B.js} +1 -1
  42. package/chunks/{chunk-Y7E5LNLO.js → chunk-47ZUMGGY.js} +2634 -2114
  43. package/chunks/{chunk-LA7YLSR6.js → chunk-4EOURKA4.js} +839 -153
  44. package/chunks/chunk-4JRM2BSM.js +48 -0
  45. package/chunks/{chunk-BGG4MBYD.js → chunk-4PYCZH2V.js} +4 -187
  46. package/chunks/{chunk-L4N6TIP7.js → chunk-4TRQPFDP.js} +4 -2
  47. package/chunks/{chunk-6XJMFJ4D.js → chunk-5WZL724W.js} +177 -120
  48. package/chunks/{chunk-23RZCH76.js → chunk-5ZTS3OQ3.js} +3 -3
  49. package/chunks/{chunk-VWOVHOTT.js → chunk-67EWJE77.js} +1 -1
  50. package/chunks/{chunk-3K7FH2KQ.js → chunk-67N6HB5H.js} +1310 -171
  51. package/chunks/{chunk-CXE7E23H.js → chunk-6Q5ABMTU.js} +45 -17
  52. package/chunks/{chunk-NG2R4N5O.js → chunk-6ZRFAKXK.js} +1 -1
  53. package/chunks/{chunk-RERATVSK.js → chunk-7XX5IBXL.js} +145 -10
  54. package/chunks/{chunk-S7CV4KO6.js → chunk-AKJQSWV4.js} +4 -4
  55. package/chunks/{chunk-5KH532V7.js → chunk-AUWN7BAG.js} +1 -1
  56. package/chunks/{chunk-DBOFL3LQ.js → chunk-BL65MO72.js} +10 -10
  57. package/chunks/{chunk-AKA24BGO.js → chunk-BT6GQIEJ.js} +1 -1
  58. package/chunks/{chunk-W7U4ESW2.js → chunk-CG3WBKJK.js} +1 -1
  59. package/chunks/{chunk-2M5N3DHY.js → chunk-CMOBWHWW.js} +1 -1
  60. package/chunks/chunk-COBO5EBO.js +135 -0
  61. package/chunks/chunk-CPG6P4GG.js +82 -0
  62. package/chunks/{chunk-3NB7TSE2.js → chunk-D2D7J3EW.js} +1 -1
  63. package/chunks/{chunk-NLREQJFK.js → chunk-DA4HRSBW.js} +15 -0
  64. package/chunks/{chunk-RNVQB725.js → chunk-DPMJLKUP.js} +2 -2
  65. package/chunks/{chunk-DIEFUBV6.js → chunk-DX3RGJMS.js} +218 -37
  66. package/chunks/{chunk-33ACCIIY.js → chunk-DZUO626D.js} +1 -1
  67. package/chunks/chunk-E2FPSSKP.js +244 -0
  68. package/chunks/{chunk-72LNFGUY.js → chunk-E2N554HK.js} +3 -3
  69. package/chunks/{chunk-6EOI4HOK.js → chunk-E2T7FLDU.js} +12 -17
  70. package/chunks/{chunk-EUQTXRKZ.js → chunk-EISUQQPS.js} +6 -6
  71. package/chunks/{chunk-H2UQ2M5Z.js → chunk-EUVOKP6Y.js} +96 -22
  72. package/chunks/{chunk-RMH5OWLD.js → chunk-F3II4BTZ.js} +1 -1
  73. package/chunks/{chunk-P3LEG54R.js → chunk-F6TUUA2U.js} +3 -3
  74. package/chunks/chunk-F6WFNA7U.js +22 -0
  75. package/chunks/{chunk-RZHU3ILK.js → chunk-FAD7OC7V.js} +4 -4
  76. package/chunks/{chunk-OMKQH5C5.js → chunk-FWWQIFDT.js} +6 -23
  77. package/chunks/{chunk-TLV2IMHR.js → chunk-FYB4GIDW.js} +3 -3
  78. package/chunks/{chunk-ZJ3VGYHK.js → chunk-GY24H6IA.js} +40 -22
  79. package/chunks/{chunk-P2AJ7FTI.js → chunk-H4JC7LZX.js} +1 -1
  80. package/chunks/{chunk-55LYDVPU.js → chunk-HDYQYYWB.js} +1 -1
  81. package/chunks/{chunk-PQBHU2IA.js → chunk-HKI3KHAO.js} +11 -11
  82. package/chunks/{chunk-Y4NGLFGJ.js → chunk-HUWENAHO.js} +1 -1
  83. package/chunks/{chunk-3ULCB3NE.js → chunk-HV76SFIA.js} +1 -1
  84. package/chunks/{chunk-CSZEXZBE.js → chunk-HWXGX534.js} +3 -3
  85. package/chunks/{chunk-E33LOKRA.js → chunk-I5VM3SKY.js} +22 -5
  86. package/chunks/{chunk-LZC3B5N2.js → chunk-IA7TGCN2.js} +2 -2
  87. package/chunks/{chunk-RGSBTHSU.js → chunk-KMS57JDD.js} +137 -7
  88. package/chunks/{chunk-VOARQPTA.js → chunk-KP25NJNM.js} +65 -21
  89. package/chunks/{chunk-6M26GBKX.js → chunk-L2AFWWJE.js} +42 -3
  90. package/chunks/{chunk-ZXU5UHMI.js → chunk-LHEC5V6G.js} +2 -2
  91. package/chunks/{chunk-J26HHFI5.js → chunk-LP2QGNSP.js} +32 -2
  92. package/chunks/{chunk-R574ATRM.js → chunk-M2PNLYGY.js} +41 -0
  93. package/chunks/{chunk-MKVZE4ZJ.js → chunk-MFDYOYZZ.js} +3 -2
  94. package/chunks/{chunk-ALGGS7UH.js → chunk-NPQ5ZKRP.js} +82 -1
  95. package/chunks/{chunk-YHEEE624.js → chunk-NV3F44FL.js} +7 -3
  96. package/chunks/{chunk-6GONZVLS.js → chunk-NZMXUSKS.js} +1 -1
  97. package/chunks/{chunk-HQB2KUAN.js → chunk-O277O7U6.js} +1 -1
  98. package/chunks/{chunk-Y4EWSQF7.js → chunk-OBP6QWD5.js} +2 -2
  99. package/chunks/{chunk-CYR3HI5X.js → chunk-OQTXYMKW.js} +2 -2
  100. package/chunks/{chunk-TYKC75AX.js → chunk-OR6R3IUW.js} +2 -2
  101. package/chunks/{chunk-TRLYP7OF.js → chunk-OSVH4SMN.js} +16 -141
  102. package/chunks/{chunk-FPM27XN4.js → chunk-OW2BWT2P.js} +4 -4
  103. package/chunks/{chunk-TDXGKHDN.js → chunk-P5ULXPK5.js} +2 -2
  104. package/chunks/{chunk-24ER7UV4.js → chunk-PBRVUF5B.js} +1 -1
  105. package/chunks/{chunk-LKRMNRSN.js → chunk-PDPFQ2FO.js} +2 -0
  106. package/chunks/{chunk-2VSTGY6M.js → chunk-PJRW65JO.js} +1 -1
  107. package/chunks/{chunk-6HVUFDS2.js → chunk-PNVPFARW.js} +22 -13
  108. package/chunks/{chunk-IC4Z6LX6.js → chunk-PYQADEFD.js} +5 -0
  109. package/chunks/chunk-R4ZA6GBK.js +208 -0
  110. package/chunks/{chunk-KR4ZSC7K.js → chunk-RMPLEWF3.js} +3 -3
  111. package/chunks/{chunk-EORNAQDT.js → chunk-RQ6U2JJQ.js} +1 -1
  112. package/chunks/{chunk-AE77C5ZU.js → chunk-RYQMJCUO.js} +1 -1
  113. package/chunks/{chunk-6UWFTUQL.js → chunk-S5CULOHB.js} +75 -31
  114. package/chunks/{chunk-7UFKAV7Y.js → chunk-S6HYI3MF.js} +2 -2
  115. package/chunks/chunk-SAH4BD2J.js +92 -0
  116. package/chunks/chunk-SR7RZ4MS.js +202 -0
  117. package/chunks/{chunk-QETYKPMG.js → chunk-T2O6NIOY.js} +1 -1
  118. package/chunks/chunk-TQOF5KBL.js +71 -0
  119. package/chunks/{chunk-OHJLEW5J.js → chunk-TWFFY5BP.js} +4 -4
  120. package/chunks/{chunk-SCI7K3GM.js → chunk-TXO5BMR2.js} +19 -10
  121. package/chunks/{chunk-YJQCUTT2.js → chunk-UAB6J2IE.js} +4 -4
  122. package/chunks/{chunk-OFI7IGST.js → chunk-UGUKH3SU.js} +10 -10
  123. package/chunks/{chunk-SHZYHGQH.js → chunk-V2226RFW.js} +1 -1
  124. package/chunks/{chunk-KKJJB5X6.js → chunk-V47QNK5W.js} +1526 -833
  125. package/chunks/{chunk-W4B7UBUS.js → chunk-VHXPSL57.js} +6 -6
  126. package/chunks/{chunk-WUC6ZFXO.js → chunk-VKJ4KTPJ.js} +1 -1
  127. package/chunks/{chunk-MAJS7AT4.js → chunk-VNNWAZSI.js} +2 -2
  128. package/chunks/{chunk-BVWVWGLE.js → chunk-WAUGQKUU.js} +4 -64
  129. package/chunks/{chunk-OH2VKQXH.js → chunk-WH6QMLUW.js} +37 -30
  130. package/chunks/{chunk-PJOBIWUG.js → chunk-WQYWK4DG.js} +1 -1
  131. package/chunks/{chunk-LEMXGVEP.js → chunk-YFRFZCIP.js} +3 -3
  132. package/chunks/{chunk-2U3WZGZG.js → chunk-YGT2AUJ7.js} +103 -135
  133. package/chunks/{chunk-6XU3PH66.js → chunk-YR7ZQ4RD.js} +22 -69
  134. package/chunks/{chunk-OA4JVLSA.js → chunk-Z7VOMGDC.js} +22 -1
  135. package/chunks/{chunk-RUL4S3K3.js → chunk-ZCJBCKL5.js} +175 -60
  136. package/chunks/{chunk-GSS34377.js → chunk-ZI5IH2HP.js} +2 -2
  137. package/chunks/{chunk-CB2464BK.js → chunk-ZIKTCMQF.js} +117 -10
  138. package/chunks/chunk-ZLBIFIMV.js +1099 -0
  139. package/chunks/{chunk-D3UEZIQH.js → chunk-ZSNBQXMZ.js} +48 -55
  140. package/chunks/{chunk-FZBZSYKU.js → chunk-ZV7LTLFE.js} +1 -1
  141. package/chunks/{computer-use-KEAPATUY.js → computer-use-SLN7DV2E.js} +28 -24
  142. package/chunks/{config-utils-K7SCOWHD.js → config-utils-ULCSRMWD.js} +4 -4
  143. package/chunks/{contextCommand-ZJA6A5K5.js → contextCommand-EHFYX6FW.js} +30 -26
  144. package/chunks/{core-runtime-QMJPWHCI.js → core-runtime-FBSP5IIG.js} +33 -29
  145. package/chunks/{create-sub-session-E4PBYXV5.js → create-sub-session-QIDZUOPU.js} +1 -1
  146. package/chunks/{create-sub-session-DJE6XICH.js → create-sub-session-WC7YGVSL.js} +29 -25
  147. package/chunks/{cron-create-GRBWYMIJ.js → cron-create-VONA5JYY.js} +1 -1
  148. package/chunks/{cron-delete-4CMKBR2M.js → cron-delete-5JXSP2MI.js} +1 -1
  149. package/chunks/{cron-list-W7K4ASOA.js → cron-list-KE4F2CIR.js} +1 -1
  150. package/chunks/{daemon-SCTQMM7Z.js → daemon-VSX3FHTY.js} +119 -4
  151. package/chunks/{daemon-status-provider-FSWDPE2G.js → daemon-status-provider-WW2AD2T7.js} +39 -35
  152. package/chunks/{daemon-trust-policy-P5L5VFAY.js → daemon-trust-policy-E4MAYWPI.js} +35 -31
  153. package/chunks/{daemon-trust-policy-monitor-73JYN6ET.js → daemon-trust-policy-monitor-XVIDV6T4.js} +35 -31
  154. package/chunks/{de-VL76CPLV.js → de-LIW4XVLN.js} +5 -0
  155. package/chunks/{deferred-core-runtime-BWRCCFTE.js → deferred-core-runtime-5SVUC6UC.js} +28 -24
  156. package/chunks/{display-image-O2XFPQTC.js → display-image-NQRSIBXM.js} +2 -2
  157. package/chunks/{dist-HVBMEYWK.js → dist-3NTTUAHT.js} +1 -1
  158. package/chunks/{dist-7JGAAQSC.js → dist-6BMOAE3Z.js} +2 -2
  159. package/chunks/{dist-3BMEUGTG.js → dist-B2CGTW6T.js} +1 -1
  160. package/chunks/{dist-C5U4LJKW.js → dist-EWW3J4HQ.js} +5 -4
  161. package/chunks/{dist-K4WWQBHS.js → dist-EZE3V3Q7.js} +55 -15
  162. package/chunks/{dist-DPPHJAVL.js → dist-J47AXBZC.js} +918 -142
  163. package/chunks/{dist-SFQ34F4M.js → dist-OTUO3AS2.js} +8 -1091
  164. package/chunks/{dist-KS4O2NKE.js → dist-Z3CS4OVP.js} +14 -8
  165. package/chunks/{earlyInputCapture-L5ST23A6.js → earlyInputCapture-72FYHYRD.js} +28 -24
  166. package/chunks/{edit-LHHRFNFK.js → edit-SWVVWHXW.js} +28 -24
  167. package/chunks/{en-IRJ2WN5T.js → en-SY5GTIGX.js} +6 -0
  168. package/chunks/{enter-worktree-6NXCRZPF.js → enter-worktree-2HF6WQEO.js} +28 -24
  169. package/chunks/{enterPlanMode-ZVQT4U7D.js → enterPlanMode-OW6S7L4P.js} +28 -24
  170. package/chunks/{environment-GJ2HWJOS.js → environment-LRTBTDXH.js} +32 -28
  171. package/chunks/{errors-6RLH3XXC.js → errors-4CO2DME6.js} +30 -26
  172. package/chunks/{exit-worktree-I2YLUHHY.js → exit-worktree-GHJEIRGL.js} +28 -24
  173. package/chunks/{exitPlanMode-7CCWKO7I.js → exitPlanMode-JVP4FNNK.js} +28 -24
  174. package/chunks/{fast-path-DVFD4HQD.js → fast-path-HCCY7GR2.js} +24 -3
  175. package/chunks/{fast-path-settings-WQJU2LAT.js → fast-path-settings-MN5QQQET.js} +6 -3
  176. package/chunks/{fr-GK3HQYVB.js → fr-RQFO7U4P.js} +5 -0
  177. package/chunks/{gemini-7FWGOYD4.js → gemini-V3YVRKXU.js} +85 -72
  178. package/chunks/{geminiContentGenerator-V2WVLIXU.js → geminiContentGenerator-LVPMQUWX.js} +1 -1
  179. package/chunks/{glob-3N6GGI75.js → glob-7HRXHYDR.js} +28 -24
  180. package/chunks/{goal-tools-APOW6UXL.js → goal-tools-PXWN5VK3.js} +4 -2
  181. package/chunks/{grep-V43ILZVX.js → grep-BITQUON5.js} +28 -24
  182. package/chunks/{handleAutoUpdate-A5WFVWIA.js → handleAutoUpdate-DKFY454S.js} +32 -28
  183. package/chunks/{i18n-PLVQ4FBZ.js → i18n-53BQIQSH.js} +29 -25
  184. package/chunks/{image-gen-7C6IK6DC.js → image-gen-H62FLDFB.js} +7 -5
  185. package/chunks/{initializer-CVAIKZYL.js → initializer-Q7NUQRSU.js} +35 -31
  186. package/chunks/{installationInfo-J6QDHNTK.js → installationInfo-BWFHT7WU.js} +29 -25
  187. package/chunks/{ja-3FA46IKD.js → ja-KOZKHJHZ.js} +5 -0
  188. package/chunks/{list-ZZ4OUUWV.js → list-OWQKR6JK.js} +38 -34
  189. package/chunks/{list-agents-KFFIIS2G.js → list-agents-Z4WABFDZ.js} +1 -1
  190. package/chunks/{loadedSettingsAdapter-QRYRJSWL.js → loadedSettingsAdapter-HNPKQMFA.js} +35 -31
  191. package/chunks/{loggingContentGenerator-OJCO75HM.js → loggingContentGenerator-A5I3VQUC.js} +10 -8
  192. package/chunks/{loop-wakeup-TLMJPMMP.js → loop-wakeup-UZ5RL5Y2.js} +2 -2
  193. package/chunks/{ls-UVVE2XGE.js → ls-TVHDGIES.js} +1 -1
  194. package/chunks/{lsp-QMEA2VLB.js → lsp-CVN6OQPI.js} +1 -1
  195. package/chunks/main-PXAUXNF2.js +8 -0
  196. package/chunks/{managed-npm-update-PCOSCP2N.js → managed-npm-update-CUUJGUTV.js} +29 -25
  197. package/chunks/{mcp-M3WKKWKY.js → mcp-GJSC7ZPO.js} +35 -31
  198. package/chunks/{monitor-GN24FH6C.js → monitor-TZ2II7JM.js} +38 -30
  199. package/chunks/{nonInteractiveCli-KPTU3VSQ.js → nonInteractiveCli-22RS4EVH.js} +72 -66
  200. package/chunks/{notebook-edit-4YM65BBO.js → notebook-edit-YZC3YPY2.js} +36 -24
  201. package/chunks/{openaiContentGenerator-EDQT6GTV.js → openaiContentGenerator-OIGO5XNF.js} +21 -11
  202. package/chunks/{pidfile-JOIIRN2C.js → pidfile-QJQ65RJ2.js} +28 -24
  203. package/chunks/{process-registry-2CHQBXH5.js → process-registry-PMJOA5CO.js} +15 -0
  204. package/chunks/{processUtils-5SV4MX3Q.js → processUtils-V5VSDIKS.js} +2 -2
  205. package/chunks/{pt-3AOBKPIJ.js → pt-U6AOCTMF.js} +5 -0
  206. package/chunks/{qwenContentGenerator-ODRJSUGR.js → qwenContentGenerator-HXM25BGB.js} +35 -30
  207. package/chunks/{qwenOAuth2-NESCMZ47.js → qwenOAuth2-7MTMS2Z5.js} +7 -5
  208. package/chunks/{read-file-HPSODLPK.js → read-file-PMGXB3ZB.js} +8 -6
  209. package/chunks/{read-mcp-resource-2TNSJTC3.js → read-mcp-resource-PZ4ZF6YL.js} +1 -1
  210. package/chunks/{record-artifact-RAON52FC.js → record-artifact-P4HFMS7X.js} +2 -2
  211. package/chunks/{resumeHistoryUtils-TXCOFFMQ.js → resumeHistoryUtils-YUTPLHUH.js} +33 -29
  212. package/chunks/{ripGrep-ZKQGTQAO.js → ripGrep-XUS66YIV.js} +28 -24
  213. package/chunks/{ru-VJRAMC4W.js → ru-CMX4UMYP.js} +5 -0
  214. package/chunks/{run-qwen-serve-ZPKPKECF.js → run-qwen-serve-4NVSU75L.js} +261 -62
  215. package/chunks/{runtime-2FLNNM36.js → runtime-QLRVP6HM.js} +40 -36
  216. package/chunks/{scheduler-365PJHNR.js → scheduler-PBB2NSOP.js} +28 -24
  217. package/chunks/{sdk-exporters-http-KHAB5JSD.js → sdk-exporters-http-XVTZQRCE.js} +2 -2
  218. package/chunks/{sdk-impl-KD7FSTC3.js → sdk-impl-7W7AKCS4.js} +7 -3
  219. package/chunks/{send-message-ZM7MRUGP.js → send-message-CAMSLG2L.js} +4 -3
  220. package/chunks/{serve-QD2RNLKJ.js → serve-BWKTRX72.js} +37 -31
  221. package/chunks/{server-XLJVLTYM.js → server-E7CH7WPK.js} +1437 -593
  222. package/chunks/{session-3VTUHH4Q.js → session-QEKSJ6YU.js} +166 -105
  223. package/chunks/{settings-KULVPCQC.js → settings-BRAOSJIM.js} +34 -30
  224. package/chunks/{shell-3SWW22MH.js → shell-OF3CK4AT.js} +28 -24
  225. package/chunks/{skill-KDHWYS7W.js → skill-HLH2NO2H.js} +9 -7
  226. package/chunks/{skill-settings-NMY4JEJC.js → skill-settings-DRPU7YI5.js} +34 -30
  227. package/chunks/{spawnChannel-ZKS4Q5OU.js → spawnChannel-4KO7YTFM.js} +31 -27
  228. package/chunks/{standalone-update-7CXPGAQ4.js → standalone-update-DJN2R3YW.js} +30 -26
  229. package/chunks/{startInteractiveUI-2QQLEKM6.js → startInteractiveUI-O3WQQ2WC.js} +384 -173
  230. package/chunks/{syntheticOutput-ZLCUTKO2.js → syntheticOutput-PEBJQYJV.js} +2 -2
  231. package/chunks/{task-create-CQP5UEA3.js → task-create-5NWCQSJF.js} +5 -4
  232. package/chunks/{task-list-XLEZOJXP.js → task-list-53265TRZ.js} +1 -1
  233. package/chunks/{task-stop-7ZQM5CFF.js → task-stop-FPCOIRYX.js} +1 -1
  234. package/chunks/{task-update-JA75U2SN.js → task-update-5HN577LS.js} +5 -4
  235. package/chunks/{team-create-2WTNGAOX.js → team-create-2E4ACBJD.js} +28 -24
  236. package/chunks/{team-delete-MHY3UZGY.js → team-delete-MMQB4OSC.js} +1 -1
  237. package/chunks/{team-plan-approval-LZTYLEG4.js → team-plan-approval-LWIDXYOA.js} +28 -24
  238. package/chunks/{terminal-image-renderer-R5HHAFJN.js → terminal-image-renderer-PJM7663W.js} +30 -26
  239. package/chunks/{theme-manager-PAUCSJFF.js → theme-manager-FDQTM3RP.js} +28 -24
  240. package/chunks/{todoWrite-UPVOHYGD.js → todoWrite-JGV6VLOX.js} +1 -1
  241. package/chunks/{tool-search-2BFCGLI6.js → tool-search-TL5ZXBF4.js} +11 -8
  242. package/chunks/{total-session-admission-MK4SINFK.js → total-session-admission-LS6EY5KT.js} +37 -32
  243. package/chunks/{trustedFolders-TJ5S26N7.js → trustedFolders-5RWP5OB7.js} +32 -26
  244. package/chunks/{types-ML3TRJQ5.js → types-WYCFCEHR.js} +5 -3
  245. package/chunks/{update-relaunch-N7AYLARF.js → update-relaunch-HWQ4USKY.js} +5 -5
  246. package/chunks/{updateCheck-QRZ3DVT5.js → updateCheck-EZMBTEIR.js} +31 -27
  247. package/chunks/{useAutoAcceptIndicator-DBJ7Y5AF.js → useAutoAcceptIndicator-JDMI627A.js} +37 -33
  248. package/chunks/{validateNonInterActiveAuth-6ZQWUDS3.js → validateNonInterActiveAuth-RRUHC5RO.js} +67 -63
  249. package/chunks/{version-AJQGQWXC.js → version-XS4UTKUX.js} +1 -1
  250. package/chunks/{web-fetch-QWJYRXFL.js → web-fetch-2JV7H6OM.js} +14 -10
  251. package/chunks/{web-search-2AOXJGHU.js → web-search-RCTN2GAM.js} +10 -7
  252. package/chunks/{workflow-ERH3SJG2.js → workflow-6MKLKQ6R.js} +909 -273
  253. package/chunks/{workspace-providers-status-HZ474RA4.js → workspace-providers-status-YZ2IJ4DK.js} +38 -34
  254. package/chunks/{workspace-registration-store-6EUP4JXG.js → workspace-registration-store-IYN72LBS.js} +1 -1
  255. package/chunks/{workspace-registry-R4APRRNC.js → workspace-registry-7LFBZQLT.js} +37 -32
  256. package/chunks/{workspace-service-HFIFDMU7.js → workspace-service-2EHSPRJB.js} +45 -39
  257. package/chunks/{workspace-skills-status-HAHEIHGK.js → workspace-skills-status-5VJ2D5HN.js} +36 -32
  258. package/chunks/{workspace-trust-reconciler-65GTAGDK.js → workspace-trust-reconciler-X2LZ6XCI.js} +44 -39
  259. package/chunks/{write-file-B34CDELV.js → write-file-CJK6SCCF.js} +28 -24
  260. package/chunks/{zh-ARWDLDLR.js → zh-AGL2FVBI.js} +6 -0
  261. package/chunks/{zh-TW-Y4RGI3P7.js → zh-TW-KI66MHQY.js} +6 -0
  262. package/chunks/{zoom-image-HPRBZHSS.js → zoom-image-BVW4RFYW.js} +8 -6
  263. package/cli.js +13 -13
  264. package/locales/ca.js +10 -0
  265. package/locales/de.js +9 -0
  266. package/locales/en.js +10 -0
  267. package/locales/fr.js +9 -0
  268. package/locales/ja.js +9 -0
  269. package/locales/pt.js +9 -0
  270. package/locales/ru.js +9 -0
  271. package/locales/zh-TW.js +10 -0
  272. package/locales/zh.js +10 -0
  273. package/package.json +3 -3
  274. package/web-shell/assets/{arc-Ip-FFDJ0.js → arc-DDtoJrAW.js} +1 -1
  275. package/web-shell/assets/{architectureDiagram-3BPJPVTR-CChqgwIb.js → architectureDiagram-3BPJPVTR-BAInIW4O.js} +1 -1
  276. package/web-shell/assets/{blockDiagram-GPEHLZMM-BHN-Tfss.js → blockDiagram-GPEHLZMM-ChPDk7fP.js} +1 -1
  277. package/web-shell/assets/{c4Diagram-AAUBKEIU-BhyjzDjN.js → c4Diagram-AAUBKEIU-Cd9BJuUy.js} +1 -1
  278. package/web-shell/assets/channel-0OQklTfP.js +1 -0
  279. package/web-shell/assets/{chunk-2J33WTMH-BB9eyHrx.js → chunk-2J33WTMH-COQkLp56.js} +1 -1
  280. package/web-shell/assets/{chunk-4BX2VUAB-BeV7ce_J.js → chunk-4BX2VUAB-GUJshQ_l.js} +1 -1
  281. package/web-shell/assets/{chunk-55IACEB6-DO7kXDiV.js → chunk-55IACEB6-Boaa7c10.js} +1 -1
  282. package/web-shell/assets/{chunk-727SXJPM-B27MPznD.js → chunk-727SXJPM-CcRXaly2.js} +1 -1
  283. package/web-shell/assets/{chunk-AQP2D5EJ-DHIjqjD_.js → chunk-AQP2D5EJ-BY0OARHh.js} +1 -1
  284. package/web-shell/assets/{chunk-FMBD7UC4-DabMqyN2.js → chunk-FMBD7UC4-DLFQfv0S.js} +1 -1
  285. package/web-shell/assets/{chunk-ND2GUHAM-Dw7Nnnxc.js → chunk-ND2GUHAM-C_S0u-D2.js} +1 -1
  286. package/web-shell/assets/{chunk-QZHKN3VN-DdaZew1Q.js → chunk-QZHKN3VN-DP9m64hw.js} +1 -1
  287. package/web-shell/assets/classDiagram-4FO5ZUOK-CZ4-apsu.js +1 -0
  288. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CZ4-apsu.js +1 -0
  289. package/web-shell/assets/{cose-bilkent-S5V4N54A-CgBpCYH5.js → cose-bilkent-S5V4N54A-CGY6zGE1.js} +1 -1
  290. package/web-shell/assets/{dagre-BM42HDAG-BB4IU8G0.js → dagre-BM42HDAG-yB7whKNn.js} +1 -1
  291. package/web-shell/assets/{diagram-2AECGRRQ-BcUTHU37.js → diagram-2AECGRRQ-Bdlc59La.js} +1 -1
  292. package/web-shell/assets/{diagram-5GNKFQAL-B6Lyihyv.js → diagram-5GNKFQAL-BUClP18L.js} +1 -1
  293. package/web-shell/assets/{diagram-KO2AKTUF-CRIJOjpG.js → diagram-KO2AKTUF-aZm08kjn.js} +1 -1
  294. package/web-shell/assets/{diagram-LMA3HP47-DdNiwWWT.js → diagram-LMA3HP47-7DGwEkxC.js} +1 -1
  295. package/web-shell/assets/{diagram-OG6HWLK6-Dz4b32Do.js → diagram-OG6HWLK6-CAGKayxx.js} +1 -1
  296. package/web-shell/assets/{erDiagram-TEJ5UH35-D-8NGw77.js → erDiagram-TEJ5UH35-CptoHHQi.js} +1 -1
  297. package/web-shell/assets/{flowDiagram-I6XJVG4X-Dun26LyM.js → flowDiagram-I6XJVG4X-CNOH0s7Q.js} +1 -1
  298. package/web-shell/assets/{ganttDiagram-6RSMTGT7-F10Hu1Gc.js → ganttDiagram-6RSMTGT7-CCQuCU3y.js} +1 -1
  299. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Bf8Ez6-D.js → gitGraphDiagram-PVQCEYII-B7gv9f4E.js} +1 -1
  300. package/web-shell/assets/{index-BXqw-nGq.js → index-BoUPVvpf.js} +1 -1
  301. package/web-shell/assets/index-D1YQXYsB.css +5 -0
  302. package/web-shell/assets/index-J4N7zCmU.js +1768 -0
  303. package/web-shell/assets/{infoDiagram-5YYISTIA-DVgTMLvj.js → infoDiagram-5YYISTIA-Bb3KYEbR.js} +1 -1
  304. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-uT-KepvK.js → ishikawaDiagram-YF4QCWOH-DWEzbAGi.js} +1 -1
  305. package/web-shell/assets/{journeyDiagram-JHISSGLW-Vg_XadQf.js → journeyDiagram-JHISSGLW-CmxwEqeb.js} +1 -1
  306. package/web-shell/assets/{kanban-definition-UN3LZRKU-Dyv1ESBE.js → kanban-definition-UN3LZRKU-Ci0gDD8O.js} +1 -1
  307. package/web-shell/assets/{linear-BMIepYX3.js → linear-BqxZqGhS.js} +1 -1
  308. package/web-shell/assets/{mermaid.core-zA8pJ9ag.js → mermaid.core-BDAFffHv.js} +5 -5
  309. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BCW_BZ_5.js → mindmap-definition-RKZ34NQL-Btvx-xvS.js} +1 -1
  310. package/web-shell/assets/{pieDiagram-4H26LBE5-DseNEGp2.js → pieDiagram-4H26LBE5-CKAg7yG7.js} +1 -1
  311. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-6Z7wr1Fi.js → quadrantDiagram-W4KKPZXB-DIt8E1mC.js} +1 -1
  312. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CVOlCRPf.js → requirementDiagram-4Y6WPE33-BA7mQWQJ.js} +1 -1
  313. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CGhgrUJZ.js → sankeyDiagram-5OEKKPKP-D0JppnVU.js} +1 -1
  314. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-dlqmpLuQ.js → sequenceDiagram-3UESZ5HK-29DIQFjB.js} +1 -1
  315. package/web-shell/assets/{stateDiagram-AJRCARHV-B9EW10Xb.js → stateDiagram-AJRCARHV-iiXMdK--.js} +1 -1
  316. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CEGK3l80.js +1 -0
  317. package/web-shell/assets/{timeline-definition-PNZ67QCA-BBRh0mgZ.js → timeline-definition-PNZ67QCA-CeF7ngSW.js} +1 -1
  318. package/web-shell/assets/{vennDiagram-CIIHVFJN-B8Gs-REP.js → vennDiagram-CIIHVFJN-Beilq8D6.js} +1 -1
  319. package/web-shell/assets/{wardley-L42UT6IY-D_y80Ur7.js → wardley-L42UT6IY-DOYjY4zO.js} +1 -1
  320. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-D-CNfHJ-.js → wardleyDiagram-YWT4CUSO-Dtqp8o18.js} +1 -1
  321. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DQ5CvELo.js → xychartDiagram-2RQKCTM6-cdAc0Dfv.js} +1 -1
  322. package/web-shell/index.html +2 -2
  323. package/chunks/chunk-6PEXNQTX.js +0 -68
  324. package/chunks/chunk-IUFV6FYU.js +0 -81
  325. package/chunks/chunk-RXFQM6FQ.js +0 -42
  326. package/web-shell/assets/channel-Cu8qd6OB.js +0 -1
  327. package/web-shell/assets/classDiagram-4FO5ZUOK-BI3KrXhq.js +0 -1
  328. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BI3KrXhq.js +0 -1
  329. package/web-shell/assets/index-QQlUCJGg.css +0 -5
  330. package/web-shell/assets/index-hcgjV7vS.js +0 -1768
  331. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CJTZJJ5X.js +0 -1
  332. package/chunks/{anthropicContentGenerator-DTMVEL5M.js → anthropicContentGenerator-SSFE2753.js} +9 -9
  333. /package/chunks/{chunk-VXZBKKQR.js → chunk-NTTBXH7U.js} +0 -0
  334. /package/chunks/{chunk-GRC5HGPI.js → chunk-OIBUG24X.js} +0 -0
@@ -6,13 +6,13 @@ import {
6
6
  import {
7
7
  TUI_CHAT_RECORDING_FAILURE_MESSAGE,
8
8
  reportChatRecordingFailureToAdapter
9
- } from "./chunk-3NB7TSE2.js";
9
+ } from "./chunk-D2D7J3EW.js";
10
10
  import {
11
11
  StreamJsonOutputAdapter
12
- } from "./chunk-72LNFGUY.js";
12
+ } from "./chunk-E2N554HK.js";
13
13
  import {
14
14
  startPostRenderPrefetches
15
- } from "./chunk-OFI7IGST.js";
15
+ } from "./chunk-UGUKH3SU.js";
16
16
  import {
17
17
  AboutBox,
18
18
  BaseSelectionList,
@@ -90,7 +90,7 @@ import {
90
90
  useUIActions,
91
91
  useUIState,
92
92
  useVirtualViewport
93
- } from "./chunk-6UWFTUQL.js";
93
+ } from "./chunk-S5CULOHB.js";
94
94
  import {
95
95
  GeminiRespondingSpinner,
96
96
  GeminiSpinner,
@@ -106,19 +106,19 @@ import {
106
106
  shouldDisplayGoalStateCause,
107
107
  useStreamingContext,
108
108
  waitForGoalRuntime
109
- } from "./chunk-OH2VKQXH.js";
109
+ } from "./chunk-WH6QMLUW.js";
110
110
  import {
111
111
  stopAndGetCapturedInput
112
112
  } from "./chunk-TZEZYNYD.js";
113
113
  import {
114
114
  useAutoAcceptIndicator
115
- } from "./chunk-23RZCH76.js";
115
+ } from "./chunk-5ZTS3OQ3.js";
116
116
  import {
117
117
  KeypressProvider,
118
118
  useFocus,
119
119
  useKeypress,
120
120
  useKeypressContext
121
- } from "./chunk-MAJS7AT4.js";
121
+ } from "./chunk-VNNWAZSI.js";
122
122
  import {
123
123
  classifyApiError,
124
124
  fireSessionDeleteHook
@@ -134,7 +134,7 @@ import {
134
134
  matchMcpServerPrefix,
135
135
  resolveAtCommandQuery,
136
136
  sanitizeDisplayText
137
- } from "./chunk-KR4ZSC7K.js";
137
+ } from "./chunk-RMPLEWF3.js";
138
138
  import {
139
139
  BuiltinCommandLoader,
140
140
  BundledSkillLoader,
@@ -175,22 +175,22 @@ import {
175
175
  resetBackgroundStateForSessionSwitch,
176
176
  serializeUserPromptExpansionPrompt,
177
177
  supportsMatchers
178
- } from "./chunk-RUL4S3K3.js";
178
+ } from "./chunk-ZCJBCKL5.js";
179
179
  import {
180
180
  EXTENSION_RELOAD_FAILED_REASON,
181
181
  ExtensionRefreshState,
182
182
  appEvents,
183
183
  cleanupReviewWorktreeLeases,
184
184
  loadHierarchicalGeminiMemory
185
- } from "./chunk-KKJJB5X6.js";
185
+ } from "./chunk-V47QNK5W.js";
186
186
  import {
187
187
  getCommandDisplayName,
188
188
  getCommandSourceBadge
189
- } from "./chunk-QETYKPMG.js";
189
+ } from "./chunk-T2O6NIOY.js";
190
190
  import {
191
191
  computeSessionStats,
192
192
  levelLabel
193
- } from "./chunk-RNVQB725.js";
193
+ } from "./chunk-DPMJLKUP.js";
194
194
  import {
195
195
  disableKittyProtocol,
196
196
  isKittyProtocolEnabled,
@@ -209,10 +209,10 @@ import {
209
209
  oscKittyNotify,
210
210
  saveClipboardImage,
211
211
  writeOsc52
212
- } from "./chunk-YHEEE624.js";
213
- import "./chunk-SCI7K3GM.js";
212
+ } from "./chunk-NV3F44FL.js";
213
+ import "./chunk-TXO5BMR2.js";
214
214
  import "./chunk-4WGODMVR.js";
215
- import "./chunk-TLV2IMHR.js";
215
+ import "./chunk-FYB4GIDW.js";
216
216
  import "./chunk-KW7NOTN6.js";
217
217
  import {
218
218
  MaxSizedBox,
@@ -225,6 +225,11 @@ import {
225
225
  import {
226
226
  require_jsx_runtime
227
227
  } from "./chunk-SV5PQVQE.js";
228
+ import {
229
+ AUTO_THEME_NAME,
230
+ DEFAULT_THEME,
231
+ themeManager
232
+ } from "./chunk-CTJLZLB5.js";
228
233
  import {
229
234
  Box_default,
230
235
  Static,
@@ -242,40 +247,35 @@ import {
242
247
  import {
243
248
  require_react
244
249
  } from "./chunk-5QWWOFGG.js";
245
- import "./chunk-Y4EWSQF7.js";
246
- import "./chunk-7UFKAV7Y.js";
250
+ import "./chunk-OW2BWT2P.js";
251
+ import "./chunk-OBP6QWD5.js";
252
+ import "./chunk-S6HYI3MF.js";
247
253
  import {
248
254
  MAX_INLINE_IMAGES_PER_ITEM,
249
255
  collectInlineImages,
250
256
  getInlineImageData
251
- } from "./chunk-2VSTGY6M.js";
257
+ } from "./chunk-PJRW65JO.js";
252
258
  import {
253
259
  relaunchApp
254
- } from "./chunk-HQB2KUAN.js";
260
+ } from "./chunk-O277O7U6.js";
255
261
  import {
256
262
  setUpdateHandler
257
- } from "./chunk-LEMXGVEP.js";
258
- import "./chunk-GSS34377.js";
263
+ } from "./chunk-YFRFZCIP.js";
264
+ import "./chunk-ZI5IH2HP.js";
259
265
  import "./chunk-YAF2MQZ6.js";
260
- import {
261
- AUTO_THEME_NAME,
262
- DEFAULT_THEME,
263
- themeManager
264
- } from "./chunk-CTJLZLB5.js";
265
- import "./chunk-CB2464BK.js";
266
+ import "./chunk-ZIKTCMQF.js";
266
267
  import "./chunk-6H67XLET.js";
267
- import "./chunk-FPM27XN4.js";
268
268
  import {
269
269
  getErrorMessage as getErrorMessage2
270
- } from "./chunk-TDXGKHDN.js";
270
+ } from "./chunk-P5ULXPK5.js";
271
271
  import {
272
272
  openQwenAsrRealtimeStream,
273
273
  openVoiceStream,
274
274
  openVoiceStreamWithRetry
275
275
  } from "./chunk-Q3JQ7OSU.js";
276
- import "./chunk-6XJMFJ4D.js";
276
+ import "./chunk-5WZL724W.js";
277
277
  import "./chunk-OWMAZHIX.js";
278
- import "./chunk-KXSDEOFU.js";
278
+ import "./chunk-3KJQZEN3.js";
279
279
  import {
280
280
  cpLen,
281
281
  cpSlice,
@@ -296,67 +296,69 @@ import {
296
296
  isHistoryItemVisibleAfterRestore
297
297
  } from "./chunk-EKTCKZV5.js";
298
298
  import "./chunk-3Z43GZUQ.js";
299
- import "./chunk-RXFQM6FQ.js";
300
- import "./chunk-HGCQ5SE7.js";
301
299
  import {
302
- isInlineModelOverrideAllowed
303
- } from "./chunk-CSZEXZBE.js";
300
+ isValidSessionId
301
+ } from "./chunk-TQOF5KBL.js";
302
+ import "./chunk-HGCQ5SE7.js";
304
303
  import {
305
304
  assertVoiceBaseUrlNetworkAllowed,
306
305
  isKeytermEcho,
307
306
  isStreamingVoiceModel,
308
307
  resolveVoiceStreamConfig,
309
308
  transcribeVoiceAudio
310
- } from "./chunk-AE77C5ZU.js";
309
+ } from "./chunk-RYQMJCUO.js";
311
310
  import {
312
311
  formatUnsupportedVoiceModelMessage,
313
312
  isSelectableVoiceModel
314
- } from "./chunk-55LYDVPU.js";
313
+ } from "./chunk-HDYQYYWB.js";
315
314
  import "./chunk-AOHJKPKL.js";
315
+ import {
316
+ getExtendedSystemInfo
317
+ } from "./chunk-2ASQDZSJ.js";
318
+ import {
319
+ formatDuration,
320
+ formatRelativeTime,
321
+ formatTokenCount
322
+ } from "./chunk-3SH53ANB.js";
323
+ import {
324
+ isInlineModelOverrideAllowed
325
+ } from "./chunk-HWXGX534.js";
316
326
  import {
317
327
  computeWorkspaceSkillListUpdates,
318
328
  resolveSkillSettings,
319
329
  skillSettingStrings
320
330
  } from "./chunk-Z4X5MTRT.js";
321
- import "./chunk-EUQTXRKZ.js";
331
+ import "./chunk-EISUQQPS.js";
322
332
  import {
323
333
  requestConsentInteractive,
324
334
  requestConsentOrFail
325
- } from "./chunk-OHJLEW5J.js";
335
+ } from "./chunk-TWFFY5BP.js";
326
336
  import "./chunk-57OAHC2Y.js";
337
+ import "./chunk-LHEC5V6G.js";
338
+ import "./chunk-67EWJE77.js";
339
+ import "./chunk-E2FPSSKP.js";
327
340
  import {
328
341
  createLoadedSettingsAdapter
329
- } from "./chunk-5KH532V7.js";
330
- import {
331
- getExtendedSystemInfo
332
- } from "./chunk-SPMY6CX6.js";
333
- import {
334
- formatDuration,
335
- formatRelativeTime,
336
- formatTokenCount
337
- } from "./chunk-3SH53ANB.js";
342
+ } from "./chunk-AUWN7BAG.js";
338
343
  import "./chunk-MZSJ43WV.js";
339
344
  import "./chunk-XCGIMOLN.js";
340
- import "./chunk-ZXU5UHMI.js";
341
- import "./chunk-VWOVHOTT.js";
342
- import "./chunk-IUFV6FYU.js";
345
+ import "./chunk-VKJ4KTPJ.js";
343
346
  import "./chunk-V6WHFGST.js";
344
347
  import "./chunk-DP3IHZGG.js";
345
348
  import "./chunk-6PLDPT2C.js";
346
349
  import "./chunk-FYJ7W2PI.js";
347
350
  import "./chunk-YP5KH5Y7.js";
348
- import "./chunk-24ER7UV4.js";
351
+ import "./chunk-PBRVUF5B.js";
349
352
  import "./chunk-ALMR3E6Q.js";
350
353
  import "./chunk-HIBNSEJE.js";
351
- import "./chunk-BKHCW2BI.js";
352
354
  import "./chunk-M5GB774H.js";
355
+ import "./chunk-BKHCW2BI.js";
353
356
  import "./chunk-UVX4Y6IN.js";
354
- import "./chunk-WUC6ZFXO.js";
355
- import "./chunk-DIEFUBV6.js";
357
+ import "./chunk-DX3RGJMS.js";
356
358
  import "./chunk-UDXSXLER.js";
357
359
  import {
358
360
  loadMcpApprovals
359
- } from "./chunk-6HVUFDS2.js";
361
+ } from "./chunk-PNVPFARW.js";
360
362
  import {
361
363
  CORRUPTED_SUFFIX,
362
364
  SettingScope,
@@ -379,7 +381,7 @@ import {
379
381
  settingExistsInScope,
380
382
  validateSettingValue,
381
383
  writeOutputLanguageAndRegisterPath
382
- } from "./chunk-PQBHU2IA.js";
384
+ } from "./chunk-HKI3KHAO.js";
383
385
  import "./chunk-RKUWKYED.js";
384
386
  import "./chunk-GOXKNSDZ.js";
385
387
  import "./chunk-IDS7MSUP.js";
@@ -388,21 +390,21 @@ import {
388
390
  localizeToolDisplayName,
389
391
  t,
390
392
  ta
391
- } from "./chunk-DBOFL3LQ.js";
392
- import "./chunk-VOARQPTA.js";
393
- import "./chunk-6PEXNQTX.js";
394
- import "./chunk-HYRDKNUY.js";
393
+ } from "./chunk-BL65MO72.js";
394
+ import "./chunk-KP25NJNM.js";
395
+ import "./chunk-R4ZA6GBK.js";
396
+ import "./chunk-2545EHZR.js";
395
397
  import {
396
398
  getCliVersion
397
- } from "./chunk-FZBZSYKU.js";
399
+ } from "./chunk-ZV7LTLFE.js";
398
400
  import "./chunk-VJNBRRZG.js";
399
401
  import {
400
402
  isWorkspaceTrusted,
401
403
  loadTrustedFolders
402
- } from "./chunk-6XU3PH66.js";
404
+ } from "./chunk-YR7ZQ4RD.js";
403
405
  import {
404
406
  require_strip_json_comments
405
- } from "./chunk-ALGGS7UH.js";
407
+ } from "./chunk-NPQ5ZKRP.js";
406
408
  import "./chunk-MR3PXB6E.js";
407
409
  import "./chunk-XFSFZCM5.js";
408
410
  import "./chunk-URK542T4.js";
@@ -452,6 +454,7 @@ import {
452
454
  createInstructionsLoadedCallback,
453
455
  customProvider,
454
456
  detectAutonomousSentinel,
457
+ didWriteProjectContextFile,
455
458
  fetchGitDiff,
456
459
  fetchGitDiffHunks,
457
460
  finalizeToolResponses,
@@ -474,14 +477,17 @@ import {
474
477
  getWelcomeBackState,
475
478
  glob,
476
479
  ideContextStore,
480
+ isActiveWorkflowStatus,
477
481
  isBinary,
478
482
  isEditorAvailable,
479
483
  isExtensionCommittedWithWarningsError,
480
484
  isGatedMcpScope,
481
485
  isSessionRuntimeActive,
482
486
  isSettledStatus,
487
+ isSignalTermination,
483
488
  isSuccessStatus,
484
489
  isTerminalStatus,
490
+ isTerminalWorkflowStatus,
485
491
  loadUsageHistory,
486
492
  markDuplicateProviderToolCallResponseSent,
487
493
  matchesAnyServerPattern,
@@ -495,6 +501,7 @@ import {
495
501
  readWorktreeSessionMarker,
496
502
  redactUrlCredentials,
497
503
  refreshMemoryAfterManagedWrite,
504
+ refreshMemoryInstruction,
498
505
  resolveBaseUrl,
499
506
  resolveBranchName,
500
507
  resolveMetadataKey,
@@ -508,23 +515,23 @@ import {
508
515
  validateWorkflowName,
509
516
  watchRepoBranch,
510
517
  writeRuntimeStatus
511
- } from "./chunk-Y7E5LNLO.js";
518
+ } from "./chunk-47ZUMGGY.js";
512
519
  import "./chunk-GOFAQQZA.js";
513
520
  import "./chunk-5M6IDOMF.js";
514
521
  import "./chunk-TWPJO254.js";
515
522
  import "./chunk-H6XPXXMH.js";
516
- import "./chunk-CNIID3TV.js";
523
+ import "./chunk-2UUMVNYT.js";
517
524
  import "./chunk-MVUQRLOH.js";
518
525
  import "./chunk-XCWO3SMQ.js";
519
526
  import "./chunk-7MH4J33A.js";
520
527
  import "./chunk-6PVPNMXU.js";
521
528
  import {
522
529
  resolveModelId
523
- } from "./chunk-RMH5OWLD.js";
530
+ } from "./chunk-F3II4BTZ.js";
524
531
  import "./chunk-IRH27ZC2.js";
525
532
  import "./chunk-QHWCP53L.js";
526
533
  import "./chunk-GNPNYXJB.js";
527
- import "./chunk-Y4NGLFGJ.js";
534
+ import "./chunk-HUWENAHO.js";
528
535
  import {
529
536
  promptIdContext
530
537
  } from "./chunk-O6GEWCJA.js";
@@ -537,36 +544,44 @@ import {
537
544
  HOOKS_CONFIG_FIELDS
538
545
  } from "./chunk-GM463R2B.js";
539
546
  import "./chunk-SEZ556DZ.js";
540
- import "./chunk-CJXIIILK.js";
547
+ import "./chunk-2FRY5CRX.js";
541
548
  import {
542
549
  elapsedActiveTime,
543
550
  goalRequiresExactPermit
544
- } from "./chunk-3K7FH2KQ.js";
551
+ } from "./chunk-67N6HB5H.js";
552
+ import {
553
+ APPROVAL_MODES
554
+ } from "./chunk-WAUGQKUU.js";
555
+ import "./chunk-DZUO626D.js";
556
+ import "./chunk-4TRQPFDP.js";
557
+ import "./chunk-SAH4BD2J.js";
545
558
  import {
546
- APPROVAL_MODES,
547
559
  runOutsideAgentContext
548
- } from "./chunk-BVWVWGLE.js";
560
+ } from "./chunk-CPG6P4GG.js";
549
561
  import "./chunk-S6LOFUVP.js";
562
+ import "./chunk-2J3OJGTL.js";
550
563
  import {
551
564
  getStartupContextLength,
552
565
  isSystemReminderContent
553
- } from "./chunk-LZC3B5N2.js";
566
+ } from "./chunk-IA7TGCN2.js";
554
567
  import "./chunk-K623ENWT.js";
555
568
  import "./chunk-AQ37AY7B.js";
556
569
  import {
557
570
  isPathWithinRoot
558
571
  } from "./chunk-EQL65XGA.js";
559
- import "./chunk-IIJEYBNH.js";
560
572
  import {
561
573
  osc8Hyperlink,
562
574
  qwenOAuth2Events,
563
575
  sanitizeForOsc,
564
576
  supportsHyperlinks,
565
577
  wrapForMultiplexer
566
- } from "./chunk-22NBYCPD.js";
578
+ } from "./chunk-3P2LV43B.js";
567
579
  import "./chunk-NAVJD2PQ.js";
568
- import "./chunk-3ULCB3NE.js";
569
- import "./chunk-BGG4MBYD.js";
580
+ import "./chunk-HV76SFIA.js";
581
+ import "./chunk-4PYCZH2V.js";
582
+ import "./chunk-P3QQPMQA.js";
583
+ import "./chunk-SR7RZ4MS.js";
584
+ import "./chunk-M6HMMKVG.js";
570
585
  import {
571
586
  REASONING_EFFORT_TIERS
572
587
  } from "./chunk-DGEIYUC3.js";
@@ -575,13 +590,8 @@ import {
575
590
  isSupportedImageMimeType
576
591
  } from "./chunk-MPHPFVKK.js";
577
592
  import "./chunk-AXMWHKXA.js";
578
- import "./chunk-DJ2GSRLV.js";
579
- import "./chunk-33ACCIIY.js";
580
- import "./chunk-L4N6TIP7.js";
581
- import "./chunk-2J3OJGTL.js";
582
- import "./chunk-P3QQPMQA.js";
583
- import "./chunk-M6HMMKVG.js";
584
593
  import "./chunk-GLCZKT5V.js";
594
+ import "./chunk-DJ2GSRLV.js";
585
595
  import "./chunk-EI3HZX6C.js";
586
596
  import {
587
597
  ApiCancelEvent,
@@ -619,11 +629,10 @@ import {
619
629
  recordSkillInvocation,
620
630
  removeMCPServerStatus,
621
631
  removeMCPStatusChangeListener,
622
- runSideQuery,
623
632
  runVisionBridge,
624
633
  shouldRunVisionBridge,
625
634
  splitImageParts
626
- } from "./chunk-2U3WZGZG.js";
635
+ } from "./chunk-YGT2AUJ7.js";
627
636
  import "./chunk-WOJZWRAZ.js";
628
637
  import "./chunk-VGC4I5JJ.js";
629
638
  import {
@@ -633,14 +642,18 @@ import {
633
642
  getUserAutoMemoryRoot,
634
643
  isAnyAutoMemPath
635
644
  } from "./chunk-FVKHVJZQ.js";
636
- import "./chunk-NG2R4N5O.js";
645
+ import {
646
+ runSideQuery
647
+ } from "./chunk-COBO5EBO.js";
648
+ import "./chunk-6ZRFAKXK.js";
637
649
  import {
638
650
  ToolNames,
639
651
  isShellProgressData
640
- } from "./chunk-IC4Z6LX6.js";
652
+ } from "./chunk-PYQADEFD.js";
653
+ import "./chunk-E2T7FLDU.js";
641
654
  import {
642
655
  MAINLINE_CODER_MODEL
643
- } from "./chunk-6EOI4HOK.js";
656
+ } from "./chunk-F6WFNA7U.js";
644
657
  import "./chunk-46UV252V.js";
645
658
  import {
646
659
  DEFAULT_TOKEN_LIMIT
@@ -650,9 +663,9 @@ import "./chunk-EUNWC2VS.js";
650
663
  import {
651
664
  atomicWriteFileSync
652
665
  } from "./chunk-FOGU3LJX.js";
653
- import "./chunk-6M26GBKX.js";
666
+ import "./chunk-L2AFWWJE.js";
654
667
  import "./chunk-W4RQUHY3.js";
655
- import "./chunk-LKRMNRSN.js";
668
+ import "./chunk-PDPFQ2FO.js";
656
669
  import {
657
670
  Storage,
658
671
  UnauthorizedError,
@@ -666,7 +679,7 @@ import {
666
679
  tildeifyPath
667
680
  } from "./chunk-OIVKILPI.js";
668
681
  import "./chunk-VOQXFAY5.js";
669
- import "./chunk-PJOBIWUG.js";
682
+ import "./chunk-WQYWK4DG.js";
670
683
  import {
671
684
  finalizeStartupProfile,
672
685
  profileCheckpoint
@@ -675,11 +688,12 @@ import "./chunk-Q7YDKOGY.js";
675
688
  import {
676
689
  registerCleanup,
677
690
  runExitCleanup
678
- } from "./chunk-EORNAQDT.js";
691
+ } from "./chunk-RQ6U2JJQ.js";
679
692
  import {
680
693
  clearScreen,
681
694
  writeStderrLine,
682
- writeStderrLineSafe
695
+ writeStderrLineSafe,
696
+ writeStdoutLine
683
697
  } from "./chunk-KGJGEEVR.js";
684
698
  import "./chunk-75DOP5OR.js";
685
699
  import "./chunk-DMTGGOSA.js";
@@ -701,6 +715,7 @@ import {
701
715
 
702
716
  // packages/cli/src/ui/startInteractiveUI.tsx
703
717
  init_esbuild_shims();
718
+ import { stat as stat2 } from "node:fs/promises";
704
719
  import { basename as basename4 } from "node:path";
705
720
  var import_react163 = __toESM(require_react(), 1);
706
721
 
@@ -1081,8 +1096,8 @@ var RemoteInputWatcher = class {
1081
1096
  }
1082
1097
  startWatching() {
1083
1098
  try {
1084
- const stat2 = statSync(this.filePath);
1085
- this.bytesRead = stat2.size;
1099
+ const stat3 = statSync(this.filePath);
1100
+ this.bytesRead = stat3.size;
1086
1101
  this.consumedPrefixHash = this.hashFilePrefix(this.bytesRead);
1087
1102
  } catch {
1088
1103
  this.bytesRead = 0;
@@ -1107,8 +1122,8 @@ var RemoteInputWatcher = class {
1107
1122
  if (!this.active || this.reading) return Promise.resolve();
1108
1123
  let currentSize;
1109
1124
  try {
1110
- const stat2 = statSync(this.filePath);
1111
- currentSize = stat2.size;
1125
+ const stat3 = statSync(this.filePath);
1126
+ currentSize = stat3.size;
1112
1127
  } catch {
1113
1128
  return Promise.resolve();
1114
1129
  }
@@ -1692,19 +1707,19 @@ function readArtFile(absolutePath) {
1692
1707
  }
1693
1708
  const flags = typeof fs.constants.O_NOFOLLOW === "number" ? fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW : fs.constants.O_RDONLY;
1694
1709
  fd = fs.openSync(absolutePath, flags);
1695
- const stat2 = fs.fstatSync(fd);
1696
- if (!stat2.isFile()) {
1710
+ const stat3 = fs.fstatSync(fd);
1711
+ if (!stat3.isFile()) {
1697
1712
  debugLogger3.warn(
1698
1713
  `Ignoring ui.customAsciiArt: ${absolutePath} is not a regular file.`
1699
1714
  );
1700
1715
  return void 0;
1701
1716
  }
1702
- const size = Math.min(stat2.size, MAX_FILE_BYTES);
1717
+ const size = Math.min(stat3.size, MAX_FILE_BYTES);
1703
1718
  const buffer = Buffer.alloc(size);
1704
1719
  fs.readSync(fd, buffer, 0, size, 0);
1705
- if (stat2.size > MAX_FILE_BYTES) {
1720
+ if (stat3.size > MAX_FILE_BYTES) {
1706
1721
  debugLogger3.warn(
1707
- `Truncated ui.customAsciiArt at ${absolutePath}: file is ${stat2.size} bytes, capped at ${MAX_FILE_BYTES}.`
1722
+ `Truncated ui.customAsciiArt at ${absolutePath}: file is ${stat3.size} bytes, capped at ${MAX_FILE_BYTES}.`
1708
1723
  );
1709
1724
  }
1710
1725
  return buffer.toString("utf8");
@@ -2507,6 +2522,14 @@ function findLastLE(arr, target) {
2507
2522
  return upperBound(arr, target) - 1;
2508
2523
  }
2509
2524
  __name(findLastLE, "findLastLE");
2525
+ function firstIndexOfOffsetRun(offsets, index) {
2526
+ let i = index;
2527
+ while (i > 0 && offsets[i - 1] === offsets[i]) {
2528
+ i--;
2529
+ }
2530
+ return i;
2531
+ }
2532
+ __name(firstIndexOfOffsetRun, "firstIndexOfOffsetRun");
2510
2533
  var VirtualizedListItem = (0, import_react10.memo)(
2511
2534
  ({
2512
2535
  content,
@@ -2523,10 +2546,11 @@ var VirtualizedListItem = (0, import_react10.memo)(
2523
2546
  const onHeightChangeRef = (0, import_react10.useRef)(onHeightChange);
2524
2547
  onHeightChangeRef.current = onHeightChange;
2525
2548
  (0, import_react10.useLayoutEffect)(() => {
2526
- if (hasMeasured && height > 0) {
2527
- onHeightChangeRef.current(itemKey, height);
2549
+ const measuredHeight = itemRef.current?.yogaNode?.getComputedHeight() ?? height;
2550
+ if (hasMeasured) {
2551
+ onHeightChangeRef.current(itemKey, measuredHeight);
2528
2552
  }
2529
- }, [itemKey, height, hasMeasured]);
2553
+ }, [itemKey, height, hasMeasured, content]);
2530
2554
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { width: "100%", flexDirection: "column", flexShrink: 0, ref: itemRef, children: shouldBeStatic ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2531
2555
  StaticRender,
2532
2556
  {
@@ -2582,12 +2606,28 @@ function VirtualizedList(props, ref) {
2582
2606
  const containerHeight = props.containerHeight ?? measuredContainerHeight;
2583
2607
  const containerWidth = measuredContainerWidth;
2584
2608
  const [heights, setHeights] = (0, import_react10.useState)({});
2609
+ const measureAtFullHeight = props.measureAtFullHeight === true;
2610
+ const [fullHeightMeasurementPending, setFullHeightMeasurementPending] = (0, import_react10.useState)(measureAtFullHeight);
2611
+ const [previousMeasurementInputs, setPreviousMeasurementInputs] = (0, import_react10.useState)({
2612
+ enabled: measureAtFullHeight,
2613
+ data,
2614
+ renderItem
2615
+ });
2616
+ if (previousMeasurementInputs.enabled !== measureAtFullHeight || measureAtFullHeight && (previousMeasurementInputs.data !== data || previousMeasurementInputs.renderItem !== renderItem)) {
2617
+ setPreviousMeasurementInputs({
2618
+ enabled: measureAtFullHeight,
2619
+ data,
2620
+ renderItem
2621
+ });
2622
+ setFullHeightMeasurementPending(measureAtFullHeight);
2623
+ }
2585
2624
  const isInitialScrollSet = (0, import_react10.useRef)(false);
2586
2625
  const onHeightChange = (0, import_react10.useCallback)((key, height) => {
2587
2626
  setHeights((prev) => {
2588
2627
  if (prev[key] === height) return prev;
2589
2628
  return { ...prev, [key]: height };
2590
2629
  });
2630
+ setFullHeightMeasurementPending(false);
2591
2631
  }, []);
2592
2632
  (0, import_react10.useLayoutEffect)(() => {
2593
2633
  setHeights((prev) => {
@@ -2627,10 +2667,11 @@ function VirtualizedList(props, ref) {
2627
2667
  const scrollableContainerHeight = containerHeight;
2628
2668
  const getAnchorForScrollTop = (0, import_react10.useCallback)(
2629
2669
  (scrollTop2, offsets2) => {
2630
- const index = findLastLE(offsets2, scrollTop2);
2631
- if (index === -1) {
2670
+ const found = findLastLE(offsets2, scrollTop2);
2671
+ if (found === -1) {
2632
2672
  return { index: 0, offset: 0 };
2633
2673
  }
2674
+ const index = firstIndexOfOffsetRun(offsets2, found);
2634
2675
  return { index, offset: scrollTop2 - offsets2[index] };
2635
2676
  },
2636
2677
  []
@@ -2638,7 +2679,7 @@ function VirtualizedList(props, ref) {
2638
2679
  const [prevTargetScrollIndex, setPrevTargetScrollIndex] = (0, import_react10.useState)(
2639
2680
  props.targetScrollIndex
2640
2681
  );
2641
- const prevOffsetsLength = (0, import_react10.useRef)(offsets.length);
2682
+ const prevOffsetsLength = (0, import_react10.useRef)(1);
2642
2683
  const target = props.targetScrollIndex;
2643
2684
  if (target !== void 0 && offsets.length > 1) {
2644
2685
  const targetChanged = target !== prevTargetScrollIndex;
@@ -2650,8 +2691,12 @@ function VirtualizedList(props, ref) {
2650
2691
  if (isStickingToBottom) {
2651
2692
  setIsStickingToBottom(false);
2652
2693
  }
2653
- if (scrollAnchor.index !== target || scrollAnchor.offset !== 0) {
2654
- setScrollAnchor({ index: target, offset: 0 });
2694
+ const anchoredIndex = firstIndexOfOffsetRun(
2695
+ offsets,
2696
+ Math.max(0, Math.min(data.length - 1, target))
2697
+ );
2698
+ if (scrollAnchor.index !== anchoredIndex || scrollAnchor.offset !== 0) {
2699
+ setScrollAnchor({ index: anchoredIndex, offset: 0 });
2655
2700
  }
2656
2701
  }
2657
2702
  }
@@ -2771,11 +2816,19 @@ function VirtualizedList(props, ref) {
2771
2816
  heights,
2772
2817
  props.targetScrollIndex
2773
2818
  ]);
2774
- const startIndex = Math.max(0, findLastLE(offsets, actualScrollTop) - 1);
2819
+ const maxScroll = Math.max(0, totalHeight - scrollableContainerHeight);
2820
+ const clampedScrollTop = Math.min(
2821
+ Math.max(0, isStickingToBottom ? maxScroll : actualScrollTop),
2822
+ maxScroll
2823
+ );
2824
+ const startIndex = firstIndexOfOffsetRun(
2825
+ offsets,
2826
+ Math.max(0, findLastLE(offsets, clampedScrollTop) - 1)
2827
+ );
2775
2828
  const viewHeightForEndIndex = scrollableContainerHeight > 0 ? scrollableContainerHeight : 50;
2776
2829
  const endIndexOffsetRaw = upperBound(
2777
2830
  offsets,
2778
- actualScrollTop + viewHeightForEndIndex
2831
+ clampedScrollTop + viewHeightForEndIndex
2779
2832
  );
2780
2833
  const endIndex = endIndexOffsetRaw >= offsets.length ? data.length - 1 : Math.min(data.length - 1, endIndexOffsetRaw);
2781
2834
  const topSpacerHeight = renderStatic === true ? 0 : offsets[startIndex] ?? 0;
@@ -2839,11 +2892,6 @@ function VirtualizedList(props, ref) {
2839
2892
  onHeightChange
2840
2893
  ]);
2841
2894
  const { getScrollTop, setPendingScrollTop } = useBatchedScroll(scrollTop);
2842
- const maxScroll = Math.max(0, totalHeight - scrollableContainerHeight);
2843
- const clampedScrollTop = Math.min(
2844
- Math.max(0, isStickingToBottom ? maxScroll : actualScrollTop),
2845
- maxScroll
2846
- );
2847
2895
  const getScrollbarGeometry = (0, import_react10.useCallback)(() => {
2848
2896
  const shouldShowScrollbar = (props.showScrollbar ?? true) && maxScroll > 0;
2849
2897
  if (!shouldShowScrollbar || !rootRef.current || scrollableContainerHeight <= 0) {
@@ -3065,7 +3113,7 @@ function VirtualizedList(props, ref) {
3065
3113
  maxScroll,
3066
3114
  scrollbarThumbActive
3067
3115
  ]);
3068
- const rootHeight = props.containerHeight !== void 0 ? Math.min(props.containerHeight, totalHeight) : "100%";
3116
+ const rootHeight = props.containerHeight !== void 0 ? fullHeightMeasurementPending ? props.containerHeight : Math.min(props.containerHeight, totalHeight) : "100%";
3069
3117
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { ref: rootRef, width: "100%", height: rootHeight, flexDirection: "row", children: [
3070
3118
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3071
3119
  Box_default,
@@ -3863,17 +3911,19 @@ var MainContent = /* @__PURE__ */ __name(() => {
3863
3911
  const pendingStateRef = (0, import_react14.useRef)({
3864
3912
  activePtyId: uiState.activePtyId,
3865
3913
  embeddedShellFocused: uiState.embeddedShellFocused,
3866
- isEditorDialogOpen: uiState.isEditorDialogOpen,
3867
- constrainHeight: uiState.constrainHeight,
3868
- availableTerminalHeight
3914
+ isEditorDialogOpen: uiState.isEditorDialogOpen
3869
3915
  });
3870
3916
  pendingStateRef.current = {
3871
3917
  activePtyId: uiState.activePtyId,
3872
3918
  embeddedShellFocused: uiState.embeddedShellFocused,
3873
- isEditorDialogOpen: uiState.isEditorDialogOpen,
3874
- constrainHeight: uiState.constrainHeight,
3875
- availableTerminalHeight
3919
+ isEditorDialogOpen: uiState.isEditorDialogOpen
3876
3920
  };
3921
+ const pendingAvailableTerminalHeight = pendingHistoryItems.length > 0 && uiState.constrainHeight ? availableTerminalHeight : void 0;
3922
+ const hasPendingPlainTextConfirmation = pendingHistoryItems.some(
3923
+ (item) => item.type === "tool_group" && item.tools.some(
3924
+ (tool) => tool.status === "Confirming" /* Confirming */ && tool.confirmationDetails?.type === "info" && tool.confirmationDetails.renderPromptAsPlainText === true
3925
+ )
3926
+ );
3877
3927
  const pendingSourceCopyOffsetsRef = (0, import_react14.useRef)(pendingSourceCopyOffsetsByIndex);
3878
3928
  pendingSourceCopyOffsetsRef.current = pendingSourceCopyOffsetsByIndex;
3879
3929
  const renderVirtualItem = (0, import_react14.useCallback)(
@@ -3894,7 +3944,7 @@ var MainContent = /* @__PURE__ */ __name(() => {
3894
3944
  {
3895
3945
  terminalWidth,
3896
3946
  mainAreaWidth,
3897
- availableTerminalHeight: ps.constrainHeight ? ps.availableTerminalHeight : void 0,
3947
+ availableTerminalHeight: pendingAvailableTerminalHeight,
3898
3948
  item: { ...item, id: 0 },
3899
3949
  isPending: true,
3900
3950
  isFocused: !ps.isEditorDialogOpen,
@@ -3929,7 +3979,8 @@ var MainContent = /* @__PURE__ */ __name(() => {
3929
3979
  staticAreaMaxItemHeight,
3930
3980
  uiState.slashCommands,
3931
3981
  sourceCopyOffsetsByHistoryItem,
3932
- fullDetail
3982
+ fullDetail,
3983
+ pendingAvailableTerminalHeight
3933
3984
  ]
3934
3985
  );
3935
3986
  if (useVirtualScroll) {
@@ -3950,6 +4001,7 @@ var MainContent = /* @__PURE__ */ __name(() => {
3950
4001
  initialScrollIndex: allVirtualItems.length <= 1 ? 0 : SCROLL_TO_ITEM_END,
3951
4002
  isStaticItem: virtualIsStaticItem,
3952
4003
  containerHeight: scrollContainerHeight,
4004
+ measureAtFullHeight: hasPendingPlainTextConfirmation,
3953
4005
  showScrollbar
3954
4006
  }
3955
4007
  ),
@@ -10159,7 +10211,7 @@ function TrustDialog({
10159
10211
  "Current Level: ",
10160
10212
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Text, { bold: true, children: currentTrustLevel || "Not Set" })
10161
10213
  ] }),
10162
- isInheritedTrustFromParent && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Text, { color: theme.text.secondary, children: "Note: This folder behaves as a trusted folder because one of the parent folders is trusted. It will remain trusted even if you set a different trust level here. To change this, you need to modify the trust setting in the parent folder." }),
10214
+ isInheritedTrustFromParent && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Text, { color: theme.text.secondary, children: "Note: This folder currently inherits trust from a parent folder. A more-specific trust rule here can override that decision." }),
10163
10215
  isInheritedTrustFromIde && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Text, { color: theme.text.secondary, children: "Note: This folder behaves as a trusted folder because the connected IDE workspace is trusted. It will remain trusted even if you set a different trust level here." })
10164
10216
  ] }),
10165
10217
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
@@ -22866,8 +22918,8 @@ __name(statusGlyph, "statusGlyph");
22866
22918
  // packages/cli/src/ui/hooks/useBackgroundTaskView.ts
22867
22919
  var MAX_RETAINED_TERMINAL_DREAMS = 3;
22868
22920
  function compareActiveThenTerminal(a, b) {
22869
- const aActive = a.status === "running" || a.status === "paused";
22870
- const bActive = b.status === "running" || b.status === "paused";
22921
+ const aActive = a.status === "running" || a.status === "pausing" || a.status === "paused";
22922
+ const bActive = b.status === "running" || b.status === "pausing" || b.status === "paused";
22871
22923
  if (aActive !== bActive) return aActive ? -1 : 1;
22872
22924
  if (aActive) return b.startTime - a.startTime;
22873
22925
  return (b.endTime ?? b.startTime) - (a.endTime ?? a.startTime);
@@ -23007,6 +23059,7 @@ var DEFAULT_ACTIONS = {
23007
23059
  cancelSelected: noop,
23008
23060
  resumeSelected: /* @__PURE__ */ __name(async () => {
23009
23061
  }, "resumeSelected"),
23062
+ toggleSelectedWorkflowPause: /* @__PURE__ */ __name(() => null, "toggleSelectedWorkflowPause"),
23010
23063
  setPillFocused: noop,
23011
23064
  setLivePanelFocused: noop,
23012
23065
  setLivePanelSelectedIndex: noop,
@@ -23124,6 +23177,18 @@ function BackgroundTaskViewProvider({
23124
23177
  }
23125
23178
  await config.resumeBackgroundAgent(target.agentId);
23126
23179
  }, [config, entries, selectedIndex]);
23180
+ const toggleSelectedWorkflowPause = (0, import_react75.useCallback)(() => {
23181
+ if (!config) return null;
23182
+ const target = entries[selectedIndex];
23183
+ if (!target || target.kind !== "workflow" || !target.isBackgrounded) {
23184
+ return null;
23185
+ }
23186
+ const registry = config.getWorkflowRunRegistry();
23187
+ if (target.status === "running") return registry.pause(target.runId);
23188
+ if (target.status === "paused") return registry.resume(target.runId);
23189
+ if (target.status === "pausing") return registry.pause(target.runId);
23190
+ return null;
23191
+ }, [config, entries, selectedIndex]);
23127
23192
  const state = (0, import_react75.useMemo)(
23128
23193
  () => ({
23129
23194
  entries,
@@ -23155,6 +23220,7 @@ function BackgroundTaskViewProvider({
23155
23220
  exitDetail,
23156
23221
  cancelSelected,
23157
23222
  resumeSelected,
23223
+ toggleSelectedWorkflowPause,
23158
23224
  setPillFocused,
23159
23225
  setLivePanelFocused,
23160
23226
  setLivePanelSelectedIndex,
@@ -23170,6 +23236,7 @@ function BackgroundTaskViewProvider({
23170
23236
  exitDetail,
23171
23237
  cancelSelected,
23172
23238
  resumeSelected,
23239
+ toggleSelectedWorkflowPause,
23173
23240
  setPillFocused,
23174
23241
  setLivePanelFocused,
23175
23242
  setLivePanelSelectedIndex,
@@ -23343,6 +23410,8 @@ function statusVerb(status) {
23343
23410
  switch (status) {
23344
23411
  case "running":
23345
23412
  return t("Running");
23413
+ case "pausing":
23414
+ return t("Pausing");
23346
23415
  case "paused":
23347
23416
  return t("Paused");
23348
23417
  case "completed":
@@ -23385,8 +23454,14 @@ function formatDreamRowLabel(entry) {
23385
23454
  });
23386
23455
  }
23387
23456
  __name(formatDreamRowLabel, "formatDreamRowLabel");
23388
- function terminalStatusPresentation(status) {
23457
+ function statusPresentation(status) {
23389
23458
  switch (status) {
23459
+ case "pausing":
23460
+ return {
23461
+ icon: "\u2026",
23462
+ color: theme.status.warning,
23463
+ labelColor: theme.status.warningDim
23464
+ };
23390
23465
  case "paused":
23391
23466
  return {
23392
23467
  icon: "\u23F8",
@@ -23415,7 +23490,23 @@ function terminalStatusPresentation(status) {
23415
23490
  return null;
23416
23491
  }
23417
23492
  }
23418
- __name(terminalStatusPresentation, "terminalStatusPresentation");
23493
+ __name(statusPresentation, "statusPresentation");
23494
+ function isStoppableEntry(entry) {
23495
+ return entry.status === "running" || entry.kind === "workflow" && isActiveWorkflowStatus(entry.status);
23496
+ }
23497
+ __name(isStoppableEntry, "isStoppableEntry");
23498
+ function workflowPauseHint(entry) {
23499
+ if (entry?.kind !== "workflow" || !entry.isBackgrounded) return void 0;
23500
+ switch (entry.status) {
23501
+ case "running":
23502
+ return "p pause (cooperative)";
23503
+ case "paused":
23504
+ return "p resume (cooperative)";
23505
+ default:
23506
+ return void 0;
23507
+ }
23508
+ }
23509
+ __name(workflowPauseHint, "workflowPauseHint");
23419
23510
  var FOREGROUND_ROW_PREFIX = "[blocking]";
23420
23511
  var SHELL_ROW_PREFIX = "[shell]";
23421
23512
  function rowLabel(entry, userBlocking) {
@@ -23528,8 +23619,8 @@ var ListBody = /* @__PURE__ */ __name(({ entries, selectedIndex, maxRows }) => {
23528
23619
  visible.map((entry, visibleIdx) => {
23529
23620
  const idx = windowStart + visibleIdx;
23530
23621
  const isSelected = idx === selectedIndex;
23531
- const terminal = terminalStatusPresentation(entry.status);
23532
- const labelColor = isSelected ? theme.text.accent : terminal ? terminal.labelColor : theme.text.primary;
23622
+ const presentation2 = statusPresentation(entry.status);
23623
+ const labelColor = isSelected ? theme.text.accent : presentation2 ? presentation2.labelColor : theme.text.primary;
23533
23624
  const treePrefix = entry.kind === "agent" ? treeRowPrefix(entry, treeInfo.get(entry.agentId)) : "";
23534
23625
  return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { flexDirection: "row", paddingX: 1, children: [
23535
23626
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: isSelected ? theme.text.accent : void 0, children: isSelected ? "> " : " " }),
@@ -23603,7 +23694,7 @@ var DetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
23603
23694
  }, "DetailBody");
23604
23695
  var DreamDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
23605
23696
  const title = t("Dream");
23606
- const terminal = terminalStatusPresentation(entry.status);
23697
+ const presentation2 = statusPresentation(entry.status);
23607
23698
  const dimSubtitleParts = [elapsedFor(entry)];
23608
23699
  if (entry.sessionCount !== void 0) {
23609
23700
  dimSubtitleParts.push(formatSessionCount(entry.sessionCount));
@@ -23625,7 +23716,7 @@ var DreamDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23625
23716
  children: [
23626
23717
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
23627
23718
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
23628
- terminal && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: terminal.color, children: `${terminal.icon} ${statusVerb(entry.status)} \xB7 ` }),
23719
+ presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
23629
23720
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
23630
23721
  ] }),
23631
23722
  entry.sessionCount !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
@@ -23682,7 +23773,7 @@ var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23682
23773
  const title = escapeAnsiCtrlCodes(
23683
23774
  `${entry.subagentType ?? "Agent"} \u203A ${buildBackgroundEntryLabel(entry, { includePrefix: false })}`
23684
23775
  );
23685
- const terminal = terminalStatusPresentation(entry.status);
23776
+ const presentation2 = statusPresentation(entry.status);
23686
23777
  const dimSubtitleParts = [elapsedFor(entry)];
23687
23778
  if (entry.stats?.outputTokens) {
23688
23779
  dimSubtitleParts.push(
@@ -23754,7 +23845,7 @@ var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23754
23845
  children: [
23755
23846
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
23756
23847
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
23757
- terminal && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: terminal.color, children: `${terminal.icon} ${statusVerb(entry.status)} \xB7 ` }),
23848
+ presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
23758
23849
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
23759
23850
  ] }),
23760
23851
  parentLine !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
@@ -23831,7 +23922,7 @@ var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23831
23922
  }, "AgentDetailBody");
23832
23923
  var ShellDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
23833
23924
  const title = `${t("Shell")} \u203A ${entry.command}`;
23834
- const terminal = terminalStatusPresentation(entry.status);
23925
+ const presentation2 = statusPresentation(entry.status);
23835
23926
  const dimSubtitleParts = [elapsedFor(entry)];
23836
23927
  if (entry.pid !== void 0) {
23837
23928
  dimSubtitleParts.push(t("pid {{pid}}", { pid: String(entry.pid) }));
@@ -23851,7 +23942,7 @@ var ShellDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23851
23942
  children: [
23852
23943
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
23853
23944
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
23854
- terminal && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: terminal.color, children: `${terminal.icon} ${statusVerb(entry.status)} \xB7 ` }),
23945
+ presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
23855
23946
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
23856
23947
  ] }),
23857
23948
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
@@ -23871,7 +23962,7 @@ var ShellDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23871
23962
  }, "ShellDetailBody");
23872
23963
  var MonitorDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
23873
23964
  const title = `${t("Monitor")} \u203A ${entry.description}`;
23874
- const terminal = terminalStatusPresentation(entry.status);
23965
+ const presentation2 = statusPresentation(entry.status);
23875
23966
  const dimSubtitleParts = [elapsedFor(entry)];
23876
23967
  if (entry.pid !== void 0) {
23877
23968
  dimSubtitleParts.push(t("pid {{pid}}", { pid: String(entry.pid) }));
@@ -23899,7 +23990,7 @@ var MonitorDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth })
23899
23990
  children: [
23900
23991
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
23901
23992
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
23902
- terminal && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: terminal.color, children: `${terminal.icon} ${statusVerb(entry.status)} \xB7 ` }),
23993
+ presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
23903
23994
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
23904
23995
  ] }),
23905
23996
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
@@ -23918,7 +24009,7 @@ var MAX_VISIBLE_PHASES = 20;
23918
24009
  var MAX_VISIBLE_LOG_LINES = 10;
23919
24010
  var WorkflowDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
23920
24011
  const title = `${t("Workflow")} \u203A ${entry.meta?.name ?? entry.runId}`;
23921
- const terminal = terminalStatusPresentation(entry.status);
24012
+ const presentation2 = statusPresentation(entry.status);
23922
24013
  const dimSubtitleParts = [elapsedFor(entry)];
23923
24014
  if (entry.agentsDispatched > 0) {
23924
24015
  dimSubtitleParts.push(
@@ -23950,19 +24041,27 @@ var WorkflowDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth })
23950
24041
  children: [
23951
24042
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
23952
24043
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
23953
- terminal && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: terminal.color, children: `${terminal.icon} ${statusVerb(entry.status)} \xB7 ` }),
24044
+ presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
23954
24045
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
23955
24046
  ] }),
23956
24047
  entry.meta?.description && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
23957
24048
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
23958
24049
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { wrap: "wrap", children: entry.meta.description }) })
23959
24050
  ] }),
24051
+ (entry.status === "pausing" || entry.status === "paused") && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
24052
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
24053
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.status.warning, children: entry.status === "pausing" ? t(
24054
+ "Pause is cooperative; in-flight work may finish before the workflow is paused. An agent call waiting on a tool approval keeps the run in this state and still counts against the active-time limit until the approval is answered."
24055
+ ) : t(
24056
+ "Paused: no new agents will start; script code between agent calls keeps running. Press p to resume. /clear, /branch, and switching sessions cancel paused runs."
24057
+ ) }) })
24058
+ ] }),
23960
24059
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
23961
24060
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, dimColor: true, children: t("Phases") }) }),
23962
24061
  entry.phases.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { dimColor: true, children: t("(no phase recorded yet)") }) }) : /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
23963
24062
  phaseOverflow > 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { dimColor: true, children: `+${phaseOverflow} ${t("more above")}` }) }),
23964
24063
  visiblePhases.map((phaseTitle, i) => {
23965
- const isCurrent = entry.status === "running" && i === visiblePhases.length - 1 && entry.currentPhase === phaseTitle;
24064
+ const isCurrent = isActiveWorkflowStatus(entry.status) && i === visiblePhases.length - 1 && entry.currentPhase === phaseTitle;
23966
24065
  const marker = isCurrent ? "\u25B8" : "\xB7";
23967
24066
  const phaseTokens = entry.perPhaseTokens.get(phaseTitle) ?? 0;
23968
24067
  const tokenChip = phaseTokens > 0 ? ` \xB7 ${formatTokenCount(phaseTokens)}t` : "";
@@ -24000,7 +24099,9 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24000
24099
  enterDetail,
24001
24100
  exitDetail,
24002
24101
  cancelSelected,
24003
- resumeSelected
24102
+ resumeSelected,
24103
+ toggleSelectedWorkflowPause,
24104
+ setSelectedIndex
24004
24105
  } = useBackgroundTaskViewActions();
24005
24106
  const config = useConfig();
24006
24107
  const detailContentHeight = Math.max(10, availableTerminalHeight - 6);
@@ -24012,6 +24113,21 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24012
24113
  (0, import_react77.useEffect)(() => {
24013
24114
  if (!isDetailMode) setSaveActive(false);
24014
24115
  }, [isDetailMode]);
24116
+ const [pauseRejected, setPauseRejected] = (0, import_react77.useState)(null);
24117
+ (0, import_react77.useEffect)(() => {
24118
+ if (!pauseRejected) return;
24119
+ const timer = setTimeout(() => setPauseRejected(null), 3e3);
24120
+ return () => clearTimeout(timer);
24121
+ }, [pauseRejected]);
24122
+ const toggleWorkflowPauseWithFeedback = (0, import_react77.useCallback)(() => {
24123
+ const target = entries[selectedIndex];
24124
+ const verdict = toggleSelectedWorkflowPause();
24125
+ if (verdict === false && target) {
24126
+ setPauseRejected({ entryKey: entryId(target) });
24127
+ } else if (verdict === true) {
24128
+ setPauseRejected(null);
24129
+ }
24130
+ }, [entries, selectedIndex, toggleSelectedWorkflowPause]);
24015
24131
  const selectedEntry = (0, import_react77.useMemo)(() => {
24016
24132
  const fromSnapshot = entries[selectedIndex] ?? null;
24017
24133
  if (!fromSnapshot) return fromSnapshot;
@@ -24081,12 +24197,19 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24081
24197
  selectedAgentIdForActivity
24082
24198
  ]);
24083
24199
  const selectedStatus = selectedEntry?.status;
24200
+ const selectedShouldTick = selectedEntry?.kind === "workflow" ? isActiveWorkflowStatus(selectedEntry.status) : selectedStatus === "running";
24084
24201
  (0, import_react77.useEffect)(() => {
24085
- if (!dialogOpen || !isDetailMode || !selectedEntryId || selectedStatus !== "running")
24202
+ if (!dialogOpen || !isDetailMode || !selectedEntryId || !selectedShouldTick)
24086
24203
  return;
24087
24204
  const id = setInterval(() => setActivityTick((n) => n + 1), 1e3);
24088
24205
  return () => clearInterval(id);
24089
- }, [dialogOpen, dialogMode, isDetailMode, selectedEntryId, selectedStatus]);
24206
+ }, [
24207
+ dialogOpen,
24208
+ dialogMode,
24209
+ isDetailMode,
24210
+ selectedEntryId,
24211
+ selectedShouldTick
24212
+ ]);
24090
24213
  const initialDetailStatusRef = (0, import_react77.useRef)(null);
24091
24214
  (0, import_react77.useEffect)(() => {
24092
24215
  if (!dialogOpen || !isDetailMode) {
@@ -24095,11 +24218,25 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24095
24218
  }
24096
24219
  if (!selectedEntryId) {
24097
24220
  initialDetailStatusRef.current = null;
24221
+ setPendingCancelEntryId(null);
24098
24222
  exitDetail();
24099
24223
  return;
24100
24224
  }
24101
24225
  const seen = initialDetailStatusRef.current;
24102
- if (!seen || seen.entryId !== selectedEntryId) {
24226
+ if (seen && seen.entryId !== selectedEntryId) {
24227
+ const driftedIndex = entries.findIndex(
24228
+ (candidate) => entryId(candidate) === seen.entryId
24229
+ );
24230
+ if (driftedIndex >= 0) {
24231
+ setSelectedIndex(driftedIndex);
24232
+ return;
24233
+ }
24234
+ initialDetailStatusRef.current = null;
24235
+ setPendingCancelEntryId(null);
24236
+ exitDetail();
24237
+ return;
24238
+ }
24239
+ if (!seen) {
24103
24240
  if (selectedStatus) {
24104
24241
  initialDetailStatusRef.current = {
24105
24242
  entryId: selectedEntryId,
@@ -24108,7 +24245,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24108
24245
  }
24109
24246
  return;
24110
24247
  }
24111
- if (seen.status === "running" && selectedStatus && selectedStatus !== "running") {
24248
+ const seenWasActive = seen.status === "running" || seen.status === "pausing" || seen.status === "paused";
24249
+ const selectedIsTerminal = selectedStatus === "completed" || selectedStatus === "failed" || selectedStatus === "cancelled";
24250
+ if (seenWasActive && selectedIsTerminal) {
24251
+ setPendingCancelEntryId(null);
24112
24252
  exitDetail();
24113
24253
  }
24114
24254
  }, [
@@ -24117,11 +24257,13 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24117
24257
  isDetailMode,
24118
24258
  selectedEntryId,
24119
24259
  selectedStatus,
24120
- exitDetail
24260
+ exitDetail,
24261
+ entries,
24262
+ setSelectedIndex
24121
24263
  ]);
24122
24264
  const handleCancelKey = /* @__PURE__ */ __name(() => {
24123
24265
  if (!selectedEntry) return;
24124
- const isCancelable = selectedEntry.status === "running";
24266
+ const isCancelable = isStoppableEntry(selectedEntry);
24125
24267
  const isAbandonable = selectedEntry.kind === "agent" && selectedEntry.status === "paused";
24126
24268
  if (!isCancelable && !isAbandonable) return;
24127
24269
  const entryKey = entryId(selectedEntry);
@@ -24178,13 +24320,17 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24178
24320
  void resumeSelected();
24179
24321
  return;
24180
24322
  }
24323
+ if (key.sequence === "p" && !key.ctrl && !key.meta) {
24324
+ toggleWorkflowPauseWithFeedback();
24325
+ return;
24326
+ }
24181
24327
  if (key.sequence === "x" && !key.ctrl && !key.meta) {
24182
24328
  handleCancelKey();
24183
24329
  return;
24184
24330
  }
24185
24331
  return;
24186
24332
  }
24187
- if (key.sequence === "s" && !key.ctrl && !key.meta && config && selectedEntry?.kind === "workflow" && selectedEntry.status !== "running" && !!selectedEntry.script) {
24333
+ if (key.sequence === "s" && !key.ctrl && !key.meta && config && selectedEntry?.kind === "workflow" && isTerminalWorkflowStatus(selectedEntry.status) && !!selectedEntry.script) {
24188
24334
  setSaveActive(true);
24189
24335
  return;
24190
24336
  }
@@ -24205,6 +24351,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24205
24351
  void resumeSelected();
24206
24352
  return;
24207
24353
  }
24354
+ if (key.sequence === "p" && !key.ctrl && !key.meta) {
24355
+ toggleWorkflowPauseWithFeedback();
24356
+ return;
24357
+ }
24208
24358
  if (key.sequence === "x" && !key.ctrl && !key.meta) {
24209
24359
  handleCancelKey();
24210
24360
  return;
@@ -24214,8 +24364,9 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24214
24364
  );
24215
24365
  if (!dialogOpen) return null;
24216
24366
  const selectedEntryAllowsResume = selectedEntry?.kind === "agent" && selectedEntry.status === "paused" && !selectedEntry.resumeBlockedReason;
24217
- const workflowSaveTarget = config && selectedEntry?.kind === "workflow" && selectedEntry.status !== "running" && selectedEntry.script ? selectedEntry : null;
24367
+ const workflowSaveTarget = config && selectedEntry?.kind === "workflow" && isTerminalWorkflowStatus(selectedEntry.status) && selectedEntry.script ? selectedEntry : null;
24218
24368
  const selectedEntryKey = selectedEntry ? entryId(selectedEntry) : null;
24369
+ const selectedWorkflowPauseHint = workflowPauseHint(selectedEntry);
24219
24370
  const showCancelConfirmHint = pendingCancelEntryId !== null && pendingCancelEntryId === selectedEntryKey;
24220
24371
  const hints = [];
24221
24372
  if (approvalActive) {
@@ -24230,7 +24381,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24230
24381
  );
24231
24382
  } else if (dialogMode === "list") {
24232
24383
  hints.push("\u2191/\u2193 select", "Enter view");
24233
- if (selectedEntry?.status === "running") hints.push("x stop");
24384
+ if (selectedEntry && isStoppableEntry(selectedEntry)) {
24385
+ hints.push("x stop");
24386
+ }
24387
+ if (selectedWorkflowPauseHint) hints.push(selectedWorkflowPauseHint);
24234
24388
  if (selectedEntryAllowsResume) hints.push("r resume");
24235
24389
  if (selectedEntry?.kind === "agent" && selectedEntry.status === "paused") {
24236
24390
  hints.push("x abandon");
@@ -24238,7 +24392,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24238
24392
  hints.push("\u2190/Esc close");
24239
24393
  } else {
24240
24394
  hints.push("\u2190 back", "Esc close");
24241
- if (selectedEntry?.status === "running") hints.push("x stop");
24395
+ if (selectedEntry && isStoppableEntry(selectedEntry)) {
24396
+ hints.push("x stop");
24397
+ }
24398
+ if (selectedWorkflowPauseHint) hints.push(selectedWorkflowPauseHint);
24242
24399
  if (selectedEntryAllowsResume) hints.push("r resume");
24243
24400
  if (selectedEntry?.kind === "agent" && selectedEntry.status === "paused") {
24244
24401
  hints.push("x abandon");
@@ -24298,7 +24455,9 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24298
24455
  isActive: saveActive,
24299
24456
  onClose: () => setSaveActive(false)
24300
24457
  }
24301
- ) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { marginTop: 1, paddingX: 1, children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: hints.join(" \xB7 ") }) })
24458
+ ) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { marginTop: 1, paddingX: 1, children: pauseRejected && pauseRejected.entryKey === selectedEntryKey ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.status.warning, children: t(
24459
+ "Pause/resume was rejected; the workflow state changed. Try again."
24460
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: hints.join(" \xB7 ") }) })
24302
24461
  ]
24303
24462
  }
24304
24463
  );
@@ -25160,7 +25319,7 @@ function SuggestionsDisplay({
25160
25319
  {
25161
25320
  ...mode === "slash" || suggestion.description ? { width: labelColumnWidth, flexShrink: 0 } : { flexShrink: 1 },
25162
25321
  children: /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Box_default, { children: [
25163
- labelElement,
25322
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Box_default, { flexShrink: 0, children: labelElement }),
25164
25323
  suggestion.argumentHint && /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Text, { color: theme.text.secondary, children: [
25165
25324
  " ",
25166
25325
  suggestion.argumentHint
@@ -29927,7 +30086,7 @@ ${currentText}`);
29927
30086
  resetEscapeState();
29928
30087
  return true;
29929
30088
  }
29930
- if (!isAttachmentMode && uiState.messageQueue.length > 0) {
30089
+ if (!isAttachmentMode && uiState.messageQueue.length > 0 && uiState.streamingState !== "responding" /* Responding */) {
29931
30090
  if (popQueueIntoInput()) {
29932
30091
  resetEscapeState();
29933
30092
  return true;
@@ -30731,9 +30890,11 @@ function hasPendingApproval(entries) {
30731
30890
  __name(hasPendingApproval, "hasPendingApproval");
30732
30891
  function getPillLabel(entries) {
30733
30892
  if (entries.length === 0) return "";
30734
- const running = entries.filter((e) => e.status === "running");
30735
- if (running.length > 0) {
30736
- return groupAndFormat(running);
30893
+ const live = entries.filter(
30894
+ (e) => e.status === "running" || e.kind === "workflow" && (e.status === "pausing" || e.status === "paused")
30895
+ );
30896
+ if (live.length > 0) {
30897
+ return groupAndFormat(live);
30737
30898
  }
30738
30899
  const pausedAgents = entries.filter(
30739
30900
  (e) => e.kind === "agent" && e.status === "paused"
@@ -30781,9 +30942,9 @@ var BackgroundTasksPill = /* @__PURE__ */ __name(() => {
30781
30942
  const label = getPillLabel(entries);
30782
30943
  const needsApproval = hasPendingApproval(entries);
30783
30944
  return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_jsx_runtime112.Fragment, { children: [
30784
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.text.secondary, children: " \xB7 " }),
30785
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { inverse: pillFocused, children: label }),
30786
- needsApproval && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.status.warning, children: ` \u26A0 ${t("needs approval")}` })
30945
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.text.secondary, wrap: "truncate", children: " \xB7 " }),
30946
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { inverse: pillFocused, wrap: "truncate", children: label }),
30947
+ needsApproval && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.status.warning, wrap: "truncate", children: ` \u26A0 ${t("needs approval")}` })
30787
30948
  ] });
30788
30949
  }, "BackgroundTasksPill");
30789
30950
 
@@ -30843,8 +31004,8 @@ var MCPHealthPill = /* @__PURE__ */ __name(() => {
30843
31004
  const label = getPillLabel2(snapshot);
30844
31005
  if (!label) return null;
30845
31006
  return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_jsx_runtime113.Fragment, { children: [
30846
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.text.secondary, children: " \xB7 " }),
30847
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.status.warning, children: label })
31007
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.text.secondary, wrap: "truncate", children: " \xB7 " }),
31008
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.status.warning, wrap: "truncate", children: label })
30848
31009
  ] });
30849
31010
  }, "MCPHealthPill");
30850
31011
 
@@ -31620,7 +31781,10 @@ var Footer = /* @__PURE__ */ __name(() => {
31620
31781
  /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { wrap: "truncate", children: leftBottomContent }),
31621
31782
  /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(BackgroundTasksPill, {}),
31622
31783
  /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(MCPHealthPill, {}),
31623
- !uiState.isSkillReviewDialogOpen && (uiState.skillReviewPending?.skills.length ?? 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.status.warning, children: ` \u26A0 ${t("{{count}} skill(s) pending review", {
31784
+ uiState.messageQueue.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.text.secondary, wrap: "truncate", children: ` \u23F3 ${t("{{count}} queued", {
31785
+ count: String(uiState.messageQueue.length)
31786
+ })}` }),
31787
+ !uiState.isSkillReviewDialogOpen && (uiState.skillReviewPending?.skills.length ?? 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.status.warning, wrap: "truncate", children: ` \u26A0 ${t("{{count}} skill(s) pending review", {
31624
31788
  count: String(uiState.skillReviewPending.skills.length)
31625
31789
  })}` })
31626
31790
  ] })
@@ -35023,6 +35187,7 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
35023
35187
  const combinedContent = [];
35024
35188
  let firstModelOverride;
35025
35189
  const onCompleteCallbacks = [];
35190
+ let refreshContextFilesOnWrite = false;
35026
35191
  for (const skill of stackedResult.skills) {
35027
35192
  if (!skill.action) continue;
35028
35193
  const skillContext = {
@@ -35037,6 +35202,9 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
35037
35202
  if (skillResult?.type === "submit_prompt") {
35038
35203
  combinedContent.push(skillResult.content);
35039
35204
  firstModelOverride ??= skillResult.modelOverride;
35205
+ refreshContextFilesOnWrite ||= Boolean(
35206
+ skillResult.refreshContextFilesOnWrite
35207
+ );
35040
35208
  if (skillResult.onComplete) {
35041
35209
  onCompleteCallbacks.push(skillResult.onComplete);
35042
35210
  }
@@ -35077,6 +35245,7 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
35077
35245
  type: "submit_prompt",
35078
35246
  content: mergedContent,
35079
35247
  ...firstModelOverride ? { modelOverride: firstModelOverride } : {},
35248
+ ...refreshContextFilesOnWrite ? { refreshContextFilesOnWrite: true } : {},
35080
35249
  ...onCompleteCallbacks.length ? {
35081
35250
  onComplete: /* @__PURE__ */ __name(async () => {
35082
35251
  for (const cb of onCompleteCallbacks) await cb();
@@ -35374,7 +35543,8 @@ var useSlashCommandProcessor = /* @__PURE__ */ __name((config, settings, history
35374
35543
  type: "submit_prompt",
35375
35544
  content,
35376
35545
  onComplete: result.onComplete,
35377
- modelOverride: result.modelOverride
35546
+ modelOverride: result.modelOverride,
35547
+ refreshContextFilesOnWrite: result.refreshContextFilesOnWrite
35378
35548
  };
35379
35549
  }
35380
35550
  case "confirm_shell_commands": {
@@ -35858,7 +36028,7 @@ ${finalOutput}`;
35858
36028
  finalStatus = "Canceled" /* Canceled */;
35859
36029
  finalOutput = `Command was cancelled.
35860
36030
  ${finalOutput}`;
35861
- } else if (result2.signal) {
36031
+ } else if (isSignalTermination(result2.signal)) {
35862
36032
  finalStatus = "Error" /* Error */;
35863
36033
  finalOutput = `Command terminated by signal: ${result2.signal}.
35864
36034
  ${finalOutput}`;
@@ -36828,6 +36998,7 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
36828
36998
  );
36829
36999
  const processedMemoryToolsRef = (0, import_react135.useRef)(/* @__PURE__ */ new Set());
36830
37000
  const submitPromptOnCompleteRef = (0, import_react135.useRef)(null);
37001
+ const refreshContextFilesOnWriteRef = (0, import_react135.useRef)(false);
36831
37002
  const modelOverrideRef = (0, import_react135.useRef)(void 0);
36832
37003
  const inlineModelOverrideActiveRef = (0, import_react135.useRef)(false);
36833
37004
  const canUseToolResultFullTurnModel = (0, import_react135.useCallback)((model) => {
@@ -37183,6 +37354,9 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
37183
37354
  case "submit_prompt": {
37184
37355
  localQueryToSendToGemini = slashCommandResult.content;
37185
37356
  submitPromptOnCompleteRef.current = slashCommandResult.onComplete ?? null;
37357
+ refreshContextFilesOnWriteRef.current = Boolean(
37358
+ slashCommandResult.refreshContextFilesOnWrite
37359
+ );
37186
37360
  if (slashCommandResult.modelOverride) {
37187
37361
  if (isInlineModelOverrideAllowed(
37188
37362
  config,
@@ -38553,6 +38727,9 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
38553
38727
  duplicateProviderToolCallResponseIdsRef.current.clear();
38554
38728
  pendingDuplicateToolResponsesRef.current = [];
38555
38729
  immediateDuplicateToolResponsesRef.current = null;
38730
+ if (submitType !== "retry" /* Retry */ && submitType !== "notification" /* Notification */ && submitType !== "goal" /* Goal */) {
38731
+ refreshContextFilesOnWriteRef.current = false;
38732
+ }
38556
38733
  }
38557
38734
  const userMessageTimestamp = Date.now();
38558
38735
  if (submitType === "retry" /* Retry */) {
@@ -39170,15 +39347,35 @@ var useGeminiStream = /* @__PURE__ */ __name((geminiClient, history, addItem, co
39170
39347
  "runtime"
39171
39348
  );
39172
39349
  }
39173
- const didRefreshManagedMemory = await refreshMemoryAfterManagedWrite(
39174
- config,
39175
- completedAndReadyToSubmitTools.map((toolCall) => ({
39350
+ const memoryWriteCandidates = completedAndReadyToSubmitTools.map(
39351
+ (toolCall) => ({
39176
39352
  toolName: toolCall.request.name,
39177
39353
  args: toolCall.request.args,
39178
39354
  status: toolCall.status
39179
- })),
39355
+ })
39356
+ );
39357
+ const didRefreshManagedMemory = await refreshMemoryAfterManagedWrite(
39358
+ config,
39359
+ memoryWriteCandidates,
39180
39360
  { logContext: "interactive memory tool batch" }
39181
39361
  );
39362
+ if (refreshContextFilesOnWriteRef.current) {
39363
+ const matchedContextFileWrite = didWriteProjectContextFile(
39364
+ memoryWriteCandidates,
39365
+ config.getProjectRoot()
39366
+ );
39367
+ debugLogger36.debug(
39368
+ `Checked marked context-file memory tool batch; matched=${matchedContextFileWrite}`
39369
+ );
39370
+ if (matchedContextFileWrite) {
39371
+ debugLogger36.debug(
39372
+ "Refreshing memory after context-file memory write"
39373
+ );
39374
+ await refreshMemoryInstruction(config, {
39375
+ logContext: "interactive context-file memory tool batch"
39376
+ });
39377
+ }
39378
+ }
39182
39379
  if (newSuccessfulMemorySaves.length > 0) {
39183
39380
  if (!didRefreshManagedMemory) {
39184
39381
  void performMemoryRefresh().catch((err) => {
@@ -46774,6 +46971,20 @@ ${error.stack ?? ""}`
46774
46971
  Rendering error${loggedHint}: ${sanitizeTerminalText(renderError.message)}`
46775
46972
  );
46776
46973
  }
46974
+ try {
46975
+ if (process.stdout.isTTY && config.getChatRecordingService()) {
46976
+ const sessionId = config.getSessionId();
46977
+ const sessionFile = config.getTranscriptPath();
46978
+ if (isValidSessionId(sessionId) && (await stat2(sessionFile)).size > 0) {
46979
+ writeStdoutLine(
46980
+ `
46981
+ ${t("To continue this session, run")}
46982
+ qwen --resume ${sessionId}`
46983
+ );
46984
+ }
46985
+ }
46986
+ } catch {
46987
+ }
46777
46988
  });
46778
46989
  }
46779
46990
  __name(startInteractiveUI, "startInteractiveUI");