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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/README.md +2 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +12 -8
  3. package/bundled/qc-helper/docs/features/commands.md +1 -1
  4. package/bundled/qc-helper/docs/features/hooks.md +50 -0
  5. package/bundled/qc-helper/docs/integration-jetbrains.md +1 -0
  6. package/bundled/qc-helper/docs/qwen-serve.md +1 -1
  7. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +50 -36
  8. package/bundled/review/SKILL.md +24 -5
  9. package/chunks/{MaxSizedBox-COZBVNCI.js → MaxSizedBox-7PM6BGJ5.js} +13 -10
  10. package/chunks/{StandaloneSessionPicker-3OF2FS6S.js → StandaloneSessionPicker-3UQHM7GV.js} +29 -26
  11. package/chunks/{acp-startup-profiler-ORIQ2CCQ.js → acp-startup-profiler-B5BYAMYQ.js} +2 -2
  12. package/chunks/{acpAgent-3JCJ6KWG.js → acpAgent-5UWLFV6V.js} +369 -148
  13. package/chunks/{agent-DBSC47CD.js → agent-624T2BLO.js} +13 -10
  14. package/chunks/{agent-headless-ZJHZ7I3S.js → agent-headless-2EE5J2KX.js} +13 -10
  15. package/chunks/{bridge-NFBYT4ZI.js → bridge-JENKGFFP.js} +15 -12
  16. package/chunks/{ca-NYKNH222.js → ca-ZLKAB4K3.js} +6 -0
  17. package/chunks/{channel-management-service-LXSJXQGM.js → channel-management-service-DDWUPHMU.js} +1 -1
  18. package/chunks/{channel-settings-store-LABKDKSI.js → channel-settings-store-SA6JZSPH.js} +21 -18
  19. package/chunks/{channel-worker-group-MTW2AGT3.js → channel-worker-group-E67EN3RV.js} +2 -2
  20. package/chunks/{channel-worker-manager-UU6PTQSI.js → channel-worker-manager-SW4C45CF.js} +2 -2
  21. package/chunks/{chunk-CJXIIILK.js → chunk-2FRY5CRX.js} +1 -1
  22. package/chunks/{chunk-HKCYGZZ4.js → chunk-2ILAOM2I.js} +30 -13
  23. package/chunks/{chunk-LDY4J4G6.js → chunk-2M4K4KYS.js} +176 -119
  24. package/chunks/{chunk-22NBYCPD.js → chunk-3P2LV43B.js} +1 -1
  25. package/chunks/{chunk-XCG76UE6.js → chunk-3PY4LPJF.js} +17 -129
  26. package/chunks/{chunk-26ISE5EG.js → chunk-3SE7J4DR.js} +3 -3
  27. package/chunks/{chunk-APMRLB2H.js → chunk-3WNQOYHQ.js} +12 -12
  28. package/chunks/{chunk-O7VQ3F22.js → chunk-4ALIARFY.js} +1 -1
  29. package/chunks/{chunk-FJ6YHWHZ.js → chunk-4DU3NCHG.js} +47 -54
  30. package/chunks/{chunk-BGG4MBYD.js → chunk-4PYCZH2V.js} +4 -187
  31. package/chunks/{chunk-3HS6Y4UA.js → chunk-4WU6NY7F.js} +2 -2
  32. package/chunks/{chunk-JRIJOZXO.js → chunk-5ZGR6RKJ.js} +3 -3
  33. package/chunks/{chunk-3K7FH2KQ.js → chunk-67N6HB5H.js} +1310 -171
  34. package/chunks/{chunk-ZQGHESAS.js → chunk-6TR7CFXH.js} +1 -1
  35. package/chunks/{chunk-EZ53KMUN.js → chunk-757GB46F.js} +1 -1
  36. package/chunks/{chunk-5YT3Y33M.js → chunk-77QVBFCU.js} +3 -3
  37. package/chunks/{chunk-5PGKKSO6.js → chunk-7DVT4LVV.js} +35 -28
  38. package/chunks/{chunk-IMK3SJ43.js → chunk-7VUERJHS.js} +1066 -597
  39. package/chunks/{chunk-KPMB4JEZ.js → chunk-B52AWKBB.js} +64 -20
  40. package/chunks/{chunk-R2KZWK5Z.js → chunk-BF224XHL.js} +2 -2
  41. package/chunks/{chunk-TSYIQDG7.js → chunk-BF52U4XJ.js} +1 -1
  42. package/chunks/{chunk-LDUGDB5H.js → chunk-C5VWPTGT.js} +1 -1
  43. package/chunks/{chunk-W7U4ESW2.js → chunk-CG3WBKJK.js} +1 -1
  44. package/chunks/chunk-COBO5EBO.js +135 -0
  45. package/chunks/{chunk-ACHMWGC5.js → chunk-DQSDACD2.js} +1 -1
  46. package/chunks/{chunk-VT3VNFVW.js → chunk-DX5W5AON.js} +2 -2
  47. package/chunks/{chunk-JACAHYEN.js → chunk-E4ZBKMSF.js} +4 -4
  48. package/chunks/{chunk-MV7VUCIG.js → chunk-EIVICVHM.js} +4 -4
  49. package/chunks/{chunk-YHEEE624.js → chunk-EN2TKTFH.js} +1 -1
  50. package/chunks/chunk-F6WFNA7U.js +22 -0
  51. package/chunks/{chunk-Z6W3XDLN.js → chunk-FN6YXJOP.js} +1 -1
  52. package/chunks/{chunk-BJKFFPX2.js → chunk-FWBXMANW.js} +3 -3
  53. package/chunks/{chunk-764F335K.js → chunk-FYAXKJK7.js} +314 -63
  54. package/chunks/{chunk-XIDHBXUI.js → chunk-GBDINRIL.js} +3 -3
  55. package/chunks/{chunk-Z5ZAWED3.js → chunk-GOEVOFQI.js} +3 -3
  56. package/chunks/{chunk-ZKUJ4AO7.js → chunk-GQCEQPYQ.js} +3 -3
  57. package/chunks/{chunk-BFSQBXHV.js → chunk-GXSNGY5M.js} +399 -534
  58. package/chunks/{chunk-3ARO4N5G.js → chunk-HA3SAB64.js} +22 -69
  59. package/chunks/{chunk-3ULCB3NE.js → chunk-HV76SFIA.js} +1 -1
  60. package/chunks/{chunk-LMEIS6WW.js → chunk-HWX5HPUG.js} +3 -3
  61. package/chunks/{chunk-VLFX3L3X.js → chunk-IBYULW65.js} +6 -6
  62. package/chunks/{chunk-SDUDZNF4.js → chunk-IUQ52YJK.js} +1 -1
  63. package/chunks/{chunk-H2352CX2.js → chunk-IYES5WOT.js} +2 -2
  64. package/chunks/{chunk-CE5UCTKO.js → chunk-KAQCJO6Y.js} +1 -1
  65. package/chunks/{chunk-DPH3MUAP.js → chunk-KKDVZLGL.js} +1 -1
  66. package/chunks/{chunk-R574ATRM.js → chunk-M2PNLYGY.js} +41 -0
  67. package/chunks/{chunk-P7HUJDBZ.js → chunk-M3STHEMM.js} +11 -16
  68. package/chunks/{chunk-VDS2WYM5.js → chunk-NGYI5EF5.js} +2 -2
  69. package/chunks/{chunk-ALGGS7UH.js → chunk-NPQ5ZKRP.js} +82 -1
  70. package/chunks/{chunk-GUFY6D3E.js → chunk-NPUXXRJI.js} +1 -1
  71. package/chunks/{chunk-4Q6N3SNL.js → chunk-NVRDQFCX.js} +1 -1
  72. package/chunks/{chunk-77WOUGCA.js → chunk-OHKJVAKG.js} +7 -7
  73. package/chunks/{chunk-TAOSTUHI.js → chunk-PG62DFWD.js} +10 -10
  74. package/chunks/{chunk-REHWPCG2.js → chunk-PLFATELK.js} +1 -1
  75. package/chunks/{chunk-APNNM3JC.js → chunk-QGHSP65Z.js} +2 -2
  76. package/chunks/{chunk-HY2INPTA.js → chunk-QQWD7LZV.js} +4 -4
  77. package/chunks/{chunk-P74TZRXD.js → chunk-QXVSWG66.js} +1 -1
  78. package/chunks/{chunk-TX3KSSDN.js → chunk-S3Y3GBFD.js} +1 -1
  79. package/chunks/{chunk-B23P3YWE.js → chunk-SNRT2TJJ.js} +6 -23
  80. package/chunks/chunk-SR7RZ4MS.js +202 -0
  81. package/chunks/{chunk-F3LPXDJP.js → chunk-TE3ZAJE7.js} +13 -3
  82. package/chunks/{chunk-AB4A73VL.js → chunk-TKSZJ5BV.js} +1 -1
  83. package/chunks/{chunk-RZMGG3HP.js → chunk-U5SLIG7E.js} +1 -1
  84. package/chunks/chunk-UA5H3DS2.js +203 -0
  85. package/chunks/{chunk-JSJTZ6GO.js → chunk-VWMUDKLC.js} +3 -3
  86. package/chunks/{chunk-RGTB44BO.js → chunk-VXZ5HAOV.js} +1 -1
  87. package/chunks/{chunk-BCMJPTXV.js → chunk-WG6542MA.js} +1 -1
  88. package/chunks/{chunk-AG3P2RES.js → chunk-WV5J6Q6N.js} +1 -1
  89. package/chunks/{chunk-MIA37QO3.js → chunk-XHD7CRP2.js} +2 -2
  90. package/chunks/{chunk-KKRGVSHC.js → chunk-XZKQT2B2.js} +4 -4
  91. package/chunks/{chunk-4QJJHIZ5.js → chunk-Y4TETC74.js} +5 -5
  92. package/chunks/{chunk-QKJT5K4Q.js → chunk-YEF7XEO2.js} +3 -3
  93. package/chunks/{chunk-UKAYEQDU.js → chunk-YHJFF7KH.js} +131 -38
  94. package/chunks/{chunk-64YLXLMY.js → chunk-YOM7DEGB.js} +2 -2
  95. package/chunks/{chunk-BN3OROB3.js → chunk-ZCLLJARV.js} +9 -9
  96. package/chunks/{chunk-RFA6VDCR.js → chunk-ZHA242R4.js} +2 -2
  97. package/chunks/{chunk-L4OW63GW.js → chunk-ZPLALRXZ.js} +17 -9
  98. package/chunks/{computer-use-QLJ27OCZ.js → computer-use-ESQYJ3JY.js} +13 -10
  99. package/chunks/{config-utils-KIEXWA4F.js → config-utils-XQHBJP7G.js} +2 -2
  100. package/chunks/{contextCommand-JDTOJRBO.js → contextCommand-CX3YF4ZE.js} +15 -12
  101. package/chunks/{core-runtime-MZIAVYQC.js → core-runtime-DIAU7JMG.js} +13 -10
  102. package/chunks/{create-sub-session-YBBCNSHE.js → create-sub-session-HDPD6HOA.js} +13 -10
  103. package/chunks/{daemon-SCTQMM7Z.js → daemon-VZBGJUNL.js} +30 -0
  104. package/chunks/{daemon-status-provider-BZ7RD4ZJ.js → daemon-status-provider-H6O4UQ4F.js} +19 -16
  105. package/chunks/{daemon-trust-policy-2E4C3M7S.js → daemon-trust-policy-BNUXG6MT.js} +20 -17
  106. package/chunks/{daemon-trust-policy-monitor-UYLFH6RW.js → daemon-trust-policy-monitor-E4EQ7GF4.js} +20 -17
  107. package/chunks/{de-VL76CPLV.js → de-LIW4XVLN.js} +5 -0
  108. package/chunks/{deferred-core-runtime-6XZYMJZB.js → deferred-core-runtime-CBMSHPAU.js} +13 -10
  109. package/chunks/{dist-BATY7GI4.js → dist-EEEQGCZA.js} +731 -136
  110. package/chunks/{dist-26RK5XZO.js → dist-MKX5OSFF.js} +4 -3
  111. package/chunks/{earlyInputCapture-LATQCGDC.js → earlyInputCapture-UIOP7OIN.js} +13 -10
  112. package/chunks/{edit-72DP57CD.js → edit-ITMZYFKA.js} +13 -10
  113. package/chunks/{en-IRJ2WN5T.js → en-SY5GTIGX.js} +6 -0
  114. package/chunks/{enter-worktree-B4FY2ZPP.js → enter-worktree-S4PL5UV6.js} +13 -10
  115. package/chunks/{enterPlanMode-TQBWGCPL.js → enterPlanMode-YV52NNJT.js} +13 -10
  116. package/chunks/{environment-MOGZGZDS.js → environment-NGOWPRZV.js} +17 -14
  117. package/chunks/{errors-PGON5GH7.js → errors-BU26DTDX.js} +15 -12
  118. package/chunks/{exit-worktree-EYUD4YP2.js → exit-worktree-XRM6LH5F.js} +13 -10
  119. package/chunks/{exitPlanMode-4Q7BSQXR.js → exitPlanMode-ZLI5F7KR.js} +13 -10
  120. package/chunks/{fast-path-WI7D5MER.js → fast-path-UJWORIED.js} +3 -3
  121. package/chunks/{fast-path-settings-YBRL24DB.js → fast-path-settings-37WQD5B2.js} +6 -3
  122. package/chunks/{fr-GK3HQYVB.js → fr-RQFO7U4P.js} +5 -0
  123. package/chunks/{gemini-ZXURGM6Y.js → gemini-ZSKNDUMU.js} +55 -48
  124. package/chunks/{geminiContentGenerator-EOODO75Y.js → geminiContentGenerator-YGEXOEKD.js} +1 -1
  125. package/chunks/{glob-QNRIUOS6.js → glob-7KZG44BR.js} +13 -10
  126. package/chunks/{goal-tools-QSYW65HV.js → goal-tools-PXWN5VK3.js} +3 -1
  127. package/chunks/{grep-56MTW67B.js → grep-6ZFC7RJ5.js} +13 -10
  128. package/chunks/{handleAutoUpdate-XGFIPVT4.js → handleAutoUpdate-KSEL3TQS.js} +17 -14
  129. package/chunks/{i18n-RZB35L4B.js → i18n-ZIUXBW5V.js} +14 -11
  130. package/chunks/{image-gen-OE2EEKN3.js → image-gen-AUIZJJNK.js} +6 -4
  131. package/chunks/{initializer-YPVMTMKD.js → initializer-7AHY3N6Q.js} +20 -17
  132. package/chunks/{installationInfo-ZTMTMYNW.js → installationInfo-VGBXMYLY.js} +14 -11
  133. package/chunks/{ja-3FA46IKD.js → ja-KOZKHJHZ.js} +5 -0
  134. package/chunks/{list-NIW3WID5.js → list-PSFKQHLB.js} +23 -20
  135. package/chunks/{loadedSettingsAdapter-VSLILTOZ.js → loadedSettingsAdapter-FTMRCTOF.js} +20 -17
  136. package/chunks/{loggingContentGenerator-KFZYVAGV.js → loggingContentGenerator-MZAN52UV.js} +5 -3
  137. package/chunks/{managed-npm-update-WHTA2K5V.js → managed-npm-update-O4NHK45X.js} +14 -11
  138. package/chunks/{mcp-7KGK3CS3.js → mcp-6CFP2AYQ.js} +20 -17
  139. package/chunks/{monitor-FDWEJQWP.js → monitor-DAKD6OU4.js} +13 -10
  140. package/chunks/{nonInteractiveCli-2MVJ6TCS.js → nonInteractiveCli-RC7VIUZL.js} +49 -44
  141. package/chunks/{notebook-edit-ZUVK2XWE.js → notebook-edit-474DPMRL.js} +13 -10
  142. package/chunks/{openaiContentGenerator-TNLWOPH5.js → openaiContentGenerator-2NFY2MWO.js} +6 -3
  143. package/chunks/{pidfile-BB6SKPH2.js → pidfile-KBFVDNQP.js} +13 -10
  144. package/chunks/{processUtils-WKHJOPDH.js → processUtils-6GRYH4Y3.js} +2 -2
  145. package/chunks/{pt-3AOBKPIJ.js → pt-U6AOCTMF.js} +5 -0
  146. package/chunks/{qwenContentGenerator-FZS2DYF7.js → qwenContentGenerator-KAHU6IZY.js} +14 -11
  147. package/chunks/{qwenOAuth2-UYMYRXBB.js → qwenOAuth2-RRQTCP4W.js} +6 -4
  148. package/chunks/{read-file-FMTE6LPA.js → read-file-3M6WXDXP.js} +4 -2
  149. package/chunks/{resumeHistoryUtils-Z34RCZFF.js → resumeHistoryUtils-D6TAY3HX.js} +16 -13
  150. package/chunks/{ripGrep-DUIYUZGM.js → ripGrep-PLPENT3E.js} +13 -10
  151. package/chunks/{ru-VJRAMC4W.js → ru-CMX4UMYP.js} +5 -0
  152. package/chunks/{run-qwen-serve-KOHHR3F4.js → run-qwen-serve-ZAFIJKJC.js} +93 -40
  153. package/chunks/{runtime-K4NTZSAU.js → runtime-ZED7CYOZ.js} +23 -20
  154. package/chunks/{scheduler-6G6AMURS.js → scheduler-MD3AL2W5.js} +13 -10
  155. package/chunks/{serve-NMG2TM5K.js → serve-E3VUDRZN.js} +20 -17
  156. package/chunks/{server-FS7KDELS.js → server-OWMEMAKR.js} +381 -192
  157. package/chunks/{session-XZADUVKJ.js → session-HZ57QK7K.js} +141 -81
  158. package/chunks/{settings-G75R6FOA.js → settings-V7BR3RKP.js} +19 -16
  159. package/chunks/{shell-3D3PMQHE.js → shell-23OMNMW6.js} +13 -10
  160. package/chunks/{skill-TSEYMVQ2.js → skill-6HBDYZRS.js} +4 -2
  161. package/chunks/{skill-settings-HJC2CPBJ.js → skill-settings-HWJLTU7M.js} +19 -16
  162. package/chunks/{spawnChannel-YWCN74G5.js → spawnChannel-N6KKUW5B.js} +13 -10
  163. package/chunks/{standalone-update-HLYOLX6V.js → standalone-update-QGIKHATD.js} +15 -12
  164. package/chunks/{startInteractiveUI-ROUIQ5KU.js → startInteractiveUI-GX2CRL42.js} +269 -118
  165. package/chunks/{team-create-OTP5SSB2.js → team-create-CFFKU7KL.js} +13 -10
  166. package/chunks/{team-plan-approval-TQX5TMXU.js → team-plan-approval-6EFOKR6A.js} +13 -10
  167. package/chunks/{terminal-image-renderer-KF3GKNWW.js → terminal-image-renderer-TLDNACQY.js} +13 -10
  168. package/chunks/{theme-manager-XVWAAGAM.js → theme-manager-5LJ3H7VO.js} +13 -10
  169. package/chunks/{tool-search-7N4D4O56.js → tool-search-UJV3A24H.js} +4 -2
  170. package/chunks/{total-session-admission-ZQ4VKIRW.js → total-session-admission-D63QYXGO.js} +15 -12
  171. package/chunks/{trustedFolders-4XYFPWVV.js → trustedFolders-KZCOB53W.js} +17 -12
  172. package/chunks/{update-relaunch-L4GSBLUU.js → update-relaunch-IFILM3SA.js} +5 -5
  173. package/chunks/{updateCheck-PCUTVRFE.js → updateCheck-YZ2CRCFC.js} +16 -13
  174. package/chunks/{useAutoAcceptIndicator-WMXY7MND.js → useAutoAcceptIndicator-AXEVNA3Q.js} +22 -19
  175. package/chunks/{validateNonInterActiveAuth-5S3U2D56.js → validateNonInterActiveAuth-3WTOJFWA.js} +44 -41
  176. package/chunks/{version-P57IQU2T.js → version-GXK7OHZY.js} +1 -1
  177. package/chunks/{web-fetch-5ZLLLCDD.js → web-fetch-ILB4GAVR.js} +10 -6
  178. package/chunks/{web-search-NELKANTW.js → web-search-HKRPGPZZ.js} +5 -3
  179. package/chunks/{workflow-RXKBF3LO.js → workflow-FXIPRQQA.js} +735 -134
  180. package/chunks/{workspace-providers-status-HAEMNAWC.js → workspace-providers-status-NYHC7HSR.js} +22 -19
  181. package/chunks/{workspace-registration-store-U3U3YM6V.js → workspace-registration-store-AKEB7OMW.js} +1 -1
  182. package/chunks/{workspace-registry-ZFP33GVB.js → workspace-registry-CDAS5TVZ.js} +15 -12
  183. package/chunks/{workspace-service-QMISJBMA.js → workspace-service-PAMUKMAV.js} +23 -20
  184. package/chunks/{workspace-skills-status-K7EOUGXL.js → workspace-skills-status-YQSHCCMS.js} +20 -17
  185. package/chunks/{workspace-trust-reconciler-BFPKULDZ.js → workspace-trust-reconciler-RPTXOIY2.js} +22 -19
  186. package/chunks/{write-file-2F76RRFE.js → write-file-CGS57TS4.js} +13 -10
  187. package/chunks/{zh-ARWDLDLR.js → zh-AGL2FVBI.js} +6 -0
  188. package/chunks/{zh-TW-Y4RGI3P7.js → zh-TW-KI66MHQY.js} +6 -0
  189. package/chunks/{zoom-image-DPR22XWY.js → zoom-image-E7D72GYV.js} +4 -2
  190. package/cli.js +13 -13
  191. package/locales/ca.js +10 -0
  192. package/locales/de.js +9 -0
  193. package/locales/en.js +10 -0
  194. package/locales/fr.js +9 -0
  195. package/locales/ja.js +9 -0
  196. package/locales/pt.js +9 -0
  197. package/locales/ru.js +9 -0
  198. package/locales/zh-TW.js +10 -0
  199. package/locales/zh.js +10 -0
  200. package/package.json +3 -3
  201. package/web-shell/assets/{arc-CunFPPcQ.js → arc-DybZaz32.js} +1 -1
  202. package/web-shell/assets/{architectureDiagram-3BPJPVTR-D3SqCgeM.js → architectureDiagram-3BPJPVTR-jN3qBd19.js} +1 -1
  203. package/web-shell/assets/{blockDiagram-GPEHLZMM-CPRx90S_.js → blockDiagram-GPEHLZMM-Ct5DZPrj.js} +1 -1
  204. package/web-shell/assets/{c4Diagram-AAUBKEIU-CahP9Ue4.js → c4Diagram-AAUBKEIU-CUAFMlUG.js} +1 -1
  205. package/web-shell/assets/channel-BMwLrwLW.js +1 -0
  206. package/web-shell/assets/{chunk-2J33WTMH-DckIWZ12.js → chunk-2J33WTMH-CuV8n90B.js} +1 -1
  207. package/web-shell/assets/{chunk-4BX2VUAB-D2Kfctyn.js → chunk-4BX2VUAB-BUzl_kls.js} +1 -1
  208. package/web-shell/assets/{chunk-55IACEB6-DkI11FTX.js → chunk-55IACEB6-BnDBLX6A.js} +1 -1
  209. package/web-shell/assets/{chunk-727SXJPM-rR-TSCIi.js → chunk-727SXJPM-B83uTOjm.js} +1 -1
  210. package/web-shell/assets/{chunk-AQP2D5EJ-DFGKcGRO.js → chunk-AQP2D5EJ-DM3HLgpT.js} +1 -1
  211. package/web-shell/assets/{chunk-FMBD7UC4-CjWqcTPE.js → chunk-FMBD7UC4-CSQ5hgyb.js} +1 -1
  212. package/web-shell/assets/{chunk-ND2GUHAM-RXe-87UV.js → chunk-ND2GUHAM-BWOF4SxX.js} +1 -1
  213. package/web-shell/assets/{chunk-QZHKN3VN-Dz0c_Yrn.js → chunk-QZHKN3VN-BsOH9LMi.js} +1 -1
  214. package/web-shell/assets/classDiagram-4FO5ZUOK-BGDv98jY.js +1 -0
  215. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BGDv98jY.js +1 -0
  216. package/web-shell/assets/{cose-bilkent-S5V4N54A-ZHF0-jvV.js → cose-bilkent-S5V4N54A-IENqH2iJ.js} +1 -1
  217. package/web-shell/assets/{dagre-BM42HDAG-7Umz_ygJ.js → dagre-BM42HDAG--dyzDTGo.js} +1 -1
  218. package/web-shell/assets/{diagram-2AECGRRQ-DomN8nxq.js → diagram-2AECGRRQ-BE7Dcqof.js} +1 -1
  219. package/web-shell/assets/{diagram-5GNKFQAL-eebvj2OL.js → diagram-5GNKFQAL-Cr8-5OTj.js} +1 -1
  220. package/web-shell/assets/{diagram-KO2AKTUF-IR1mmn9d.js → diagram-KO2AKTUF-Bzey3uAY.js} +1 -1
  221. package/web-shell/assets/{diagram-LMA3HP47-CKysx5KF.js → diagram-LMA3HP47-sErl28Xb.js} +1 -1
  222. package/web-shell/assets/{diagram-OG6HWLK6-cBy5puHn.js → diagram-OG6HWLK6-Dq30ATIo.js} +1 -1
  223. package/web-shell/assets/{erDiagram-TEJ5UH35-B5RJagPG.js → erDiagram-TEJ5UH35-BkCoEfVW.js} +1 -1
  224. package/web-shell/assets/{flowDiagram-I6XJVG4X-CfHgDmPg.js → flowDiagram-I6XJVG4X-DHwO0rrI.js} +1 -1
  225. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DUfFF5nb.js → ganttDiagram-6RSMTGT7-s7vAPxWq.js} +1 -1
  226. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-M9dt57k5.js → gitGraphDiagram-PVQCEYII-CQxhwPOU.js} +1 -1
  227. package/web-shell/assets/{index-B8e-CkuC.css → index-Bckpjr-I.css} +1 -1
  228. package/web-shell/assets/{index-CKjO4myk.js → index-CF4wApWp.js} +1 -1
  229. package/web-shell/assets/{index-Dc-fTO0V.js → index-DwEr9HEW.js} +316 -316
  230. package/web-shell/assets/{infoDiagram-5YYISTIA-CTKMmIro.js → infoDiagram-5YYISTIA-BnFrD0bq.js} +1 -1
  231. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DJIJDP4s.js → ishikawaDiagram-YF4QCWOH-Bf9zK5NK.js} +1 -1
  232. package/web-shell/assets/{journeyDiagram-JHISSGLW-DgRnvn6S.js → journeyDiagram-JHISSGLW-CyGAhsxi.js} +1 -1
  233. package/web-shell/assets/{kanban-definition-UN3LZRKU-VUwO8yrg.js → kanban-definition-UN3LZRKU-CbsK5akB.js} +1 -1
  234. package/web-shell/assets/{linear-BCvgV5I_.js → linear-cQsF4P8D.js} +1 -1
  235. package/web-shell/assets/{mermaid.core-mv_kVV6q.js → mermaid.core-Z4HVqrKY.js} +5 -5
  236. package/web-shell/assets/{mindmap-definition-RKZ34NQL-sfnjMlOd.js → mindmap-definition-RKZ34NQL-CYnrBo_f.js} +1 -1
  237. package/web-shell/assets/{pieDiagram-4H26LBE5-BlhICse4.js → pieDiagram-4H26LBE5-CBzOfhrs.js} +1 -1
  238. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BgTQzwen.js → quadrantDiagram-W4KKPZXB-D4LK1Ebn.js} +1 -1
  239. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CZ-FTrrN.js → requirementDiagram-4Y6WPE33-Bzti2Lcj.js} +1 -1
  240. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-G5Wp_jn3.js → sankeyDiagram-5OEKKPKP-yTBw5Z2s.js} +1 -1
  241. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-C8MKZ3i1.js → sequenceDiagram-3UESZ5HK-D07UVRiZ.js} +1 -1
  242. package/web-shell/assets/{stateDiagram-AJRCARHV-Bo0ZDm7y.js → stateDiagram-AJRCARHV-UE_lHsTn.js} +1 -1
  243. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DC6xgXjX.js +1 -0
  244. package/web-shell/assets/{timeline-definition-PNZ67QCA-M3L9E01f.js → timeline-definition-PNZ67QCA-DRvYdiTs.js} +1 -1
  245. package/web-shell/assets/{vennDiagram-CIIHVFJN-DD4eHCrm.js → vennDiagram-CIIHVFJN-CQLIXs0u.js} +1 -1
  246. package/web-shell/assets/{wardley-L42UT6IY-DNEL_3g4.js → wardley-L42UT6IY-JZz_Xqse.js} +1 -1
  247. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-q484OoqI.js → wardleyDiagram-YWT4CUSO--i7BiJwB.js} +1 -1
  248. package/web-shell/assets/{xychartDiagram-2RQKCTM6-4mcNt1Yg.js → xychartDiagram-2RQKCTM6-Bkc-bW0S.js} +1 -1
  249. package/web-shell/index.html +2 -2
  250. package/chunks/chunk-ALFTV7GA.js +0 -92
  251. package/web-shell/assets/channel-zbv7GWAw.js +0 -1
  252. package/web-shell/assets/classDiagram-4FO5ZUOK-DSjLkJJZ.js +0 -1
  253. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DSjLkJJZ.js +0 -1
  254. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-31TSCPcH.js +0 -1
@@ -6,13 +6,13 @@ import {
6
6
  import {
7
7
  TUI_CHAT_RECORDING_FAILURE_MESSAGE,
8
8
  reportChatRecordingFailureToAdapter
9
- } from "./chunk-RZMGG3HP.js";
9
+ } from "./chunk-U5SLIG7E.js";
10
10
  import {
11
11
  StreamJsonOutputAdapter
12
- } from "./chunk-5YT3Y33M.js";
12
+ } from "./chunk-77QVBFCU.js";
13
13
  import {
14
14
  startPostRenderPrefetches
15
- } from "./chunk-BN3OROB3.js";
15
+ } from "./chunk-ZCLLJARV.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-APMRLB2H.js";
93
+ } from "./chunk-3WNQOYHQ.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-5PGKKSO6.js";
109
+ } from "./chunk-7DVT4LVV.js";
110
110
  import {
111
111
  stopAndGetCapturedInput
112
112
  } from "./chunk-TZEZYNYD.js";
113
113
  import {
114
114
  useAutoAcceptIndicator
115
- } from "./chunk-64YLXLMY.js";
115
+ } from "./chunk-YOM7DEGB.js";
116
116
  import {
117
117
  KeypressProvider,
118
118
  useFocus,
119
119
  useKeypress,
120
120
  useKeypressContext
121
- } from "./chunk-APNNM3JC.js";
121
+ } from "./chunk-QGHSP65Z.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-BJKFFPX2.js";
137
+ } from "./chunk-FWBXMANW.js";
138
138
  import {
139
139
  BuiltinCommandLoader,
140
140
  BundledSkillLoader,
@@ -175,22 +175,23 @@ import {
175
175
  resetBackgroundStateForSessionSwitch,
176
176
  serializeUserPromptExpansionPrompt,
177
177
  supportsMatchers
178
- } from "./chunk-UKAYEQDU.js";
178
+ } from "./chunk-YHJFF7KH.js";
179
179
  import {
180
180
  EXTENSION_RELOAD_FAILED_REASON,
181
181
  ExtensionRefreshState,
182
182
  appEvents,
183
183
  cleanupReviewWorktreeLeases,
184
+ isValidSessionId,
184
185
  loadHierarchicalGeminiMemory
185
- } from "./chunk-IMK3SJ43.js";
186
+ } from "./chunk-7VUERJHS.js";
186
187
  import {
187
188
  getCommandDisplayName,
188
189
  getCommandSourceBadge
189
- } from "./chunk-4Q6N3SNL.js";
190
+ } from "./chunk-NVRDQFCX.js";
190
191
  import {
191
192
  computeSessionStats,
192
193
  levelLabel
193
- } from "./chunk-MIA37QO3.js";
194
+ } from "./chunk-XHD7CRP2.js";
194
195
  import {
195
196
  disableKittyProtocol,
196
197
  isKittyProtocolEnabled,
@@ -209,10 +210,10 @@ import {
209
210
  oscKittyNotify,
210
211
  saveClipboardImage,
211
212
  writeOsc52
212
- } from "./chunk-YHEEE624.js";
213
- import "./chunk-Z5ZAWED3.js";
213
+ } from "./chunk-EN2TKTFH.js";
214
+ import "./chunk-GOEVOFQI.js";
214
215
  import "./chunk-4WGODMVR.js";
215
- import "./chunk-JRIJOZXO.js";
216
+ import "./chunk-5ZGR6RKJ.js";
216
217
  import "./chunk-KW7NOTN6.js";
217
218
  import {
218
219
  MaxSizedBox,
@@ -242,7 +243,7 @@ import {
242
243
  import {
243
244
  require_react
244
245
  } from "./chunk-5QWWOFGG.js";
245
- import "./chunk-R2KZWK5Z.js";
246
+ import "./chunk-BF224XHL.js";
246
247
  import "./chunk-S6HYI3MF.js";
247
248
  import {
248
249
  MAX_INLINE_IMAGES_PER_ITEM,
@@ -251,31 +252,31 @@ import {
251
252
  } from "./chunk-PJRW65JO.js";
252
253
  import {
253
254
  relaunchApp
254
- } from "./chunk-GUFY6D3E.js";
255
+ } from "./chunk-NPUXXRJI.js";
255
256
  import {
256
257
  setUpdateHandler
257
- } from "./chunk-ZKUJ4AO7.js";
258
- import "./chunk-RFA6VDCR.js";
258
+ } from "./chunk-GQCEQPYQ.js";
259
+ import "./chunk-ZHA242R4.js";
259
260
  import "./chunk-YAF2MQZ6.js";
260
261
  import {
261
262
  AUTO_THEME_NAME,
262
263
  DEFAULT_THEME,
263
264
  themeManager
264
265
  } from "./chunk-CTJLZLB5.js";
265
- import "./chunk-LMEIS6WW.js";
266
+ import "./chunk-HWX5HPUG.js";
266
267
  import "./chunk-6H67XLET.js";
267
- import "./chunk-MV7VUCIG.js";
268
+ import "./chunk-EIVICVHM.js";
268
269
  import {
269
270
  getErrorMessage as getErrorMessage2
270
- } from "./chunk-H2352CX2.js";
271
+ } from "./chunk-IYES5WOT.js";
271
272
  import {
272
273
  openQwenAsrRealtimeStream,
273
274
  openVoiceStream,
274
275
  openVoiceStreamWithRetry
275
276
  } from "./chunk-Q3JQ7OSU.js";
276
- import "./chunk-LDY4J4G6.js";
277
+ import "./chunk-2M4K4KYS.js";
277
278
  import "./chunk-OWMAZHIX.js";
278
- import "./chunk-O7VQ3F22.js";
279
+ import "./chunk-4ALIARFY.js";
279
280
  import {
280
281
  cpLen,
281
282
  cpSlice,
@@ -300,36 +301,36 @@ import "./chunk-RXFQM6FQ.js";
300
301
  import "./chunk-HGCQ5SE7.js";
301
302
  import {
302
303
  isInlineModelOverrideAllowed
303
- } from "./chunk-XIDHBXUI.js";
304
+ } from "./chunk-GBDINRIL.js";
304
305
  import {
305
306
  assertVoiceBaseUrlNetworkAllowed,
306
307
  isKeytermEcho,
307
308
  isStreamingVoiceModel,
308
309
  resolveVoiceStreamConfig,
309
310
  transcribeVoiceAudio
310
- } from "./chunk-ACHMWGC5.js";
311
+ } from "./chunk-DQSDACD2.js";
311
312
  import {
312
313
  formatUnsupportedVoiceModelMessage,
313
314
  isSelectableVoiceModel
314
- } from "./chunk-LDUGDB5H.js";
315
+ } from "./chunk-C5VWPTGT.js";
315
316
  import "./chunk-AOHJKPKL.js";
316
317
  import {
317
318
  computeWorkspaceSkillListUpdates,
318
319
  resolveSkillSettings,
319
320
  skillSettingStrings
320
321
  } from "./chunk-Z4X5MTRT.js";
321
- import "./chunk-JACAHYEN.js";
322
+ import "./chunk-E4ZBKMSF.js";
322
323
  import {
323
324
  requestConsentInteractive,
324
325
  requestConsentOrFail
325
- } from "./chunk-HY2INPTA.js";
326
+ } from "./chunk-QQWD7LZV.js";
326
327
  import "./chunk-57OAHC2Y.js";
327
328
  import {
328
329
  createLoadedSettingsAdapter
329
- } from "./chunk-AG3P2RES.js";
330
+ } from "./chunk-WV5J6Q6N.js";
330
331
  import {
331
332
  getExtendedSystemInfo
332
- } from "./chunk-26ISE5EG.js";
333
+ } from "./chunk-3SE7J4DR.js";
333
334
  import {
334
335
  formatDuration,
335
336
  formatRelativeTime,
@@ -337,9 +338,9 @@ import {
337
338
  } from "./chunk-3SH53ANB.js";
338
339
  import "./chunk-MZSJ43WV.js";
339
340
  import "./chunk-XCGIMOLN.js";
340
- import "./chunk-P74TZRXD.js";
341
+ import "./chunk-QXVSWG66.js";
341
342
  import "./chunk-KJZ26VBX.js";
342
- import "./chunk-VDS2WYM5.js";
343
+ import "./chunk-NGYI5EF5.js";
343
344
  import "./chunk-V6WHFGST.js";
344
345
  import "./chunk-DP3IHZGG.js";
345
346
  import "./chunk-6PLDPT2C.js";
@@ -356,7 +357,7 @@ import "./chunk-DIWZNWZT.js";
356
357
  import "./chunk-UDXSXLER.js";
357
358
  import {
358
359
  loadMcpApprovals
359
- } from "./chunk-4QJJHIZ5.js";
360
+ } from "./chunk-Y4TETC74.js";
360
361
  import {
361
362
  CORRUPTED_SUFFIX,
362
363
  SettingScope,
@@ -379,7 +380,7 @@ import {
379
380
  settingExistsInScope,
380
381
  validateSettingValue,
381
382
  writeOutputLanguageAndRegisterPath
382
- } from "./chunk-77WOUGCA.js";
383
+ } from "./chunk-OHKJVAKG.js";
383
384
  import "./chunk-RKUWKYED.js";
384
385
  import "./chunk-GOXKNSDZ.js";
385
386
  import "./chunk-IDS7MSUP.js";
@@ -388,21 +389,21 @@ import {
388
389
  localizeToolDisplayName,
389
390
  t,
390
391
  ta
391
- } from "./chunk-TAOSTUHI.js";
392
- import "./chunk-KPMB4JEZ.js";
393
- import "./chunk-ALFTV7GA.js";
394
- import "./chunk-SDUDZNF4.js";
392
+ } from "./chunk-PG62DFWD.js";
393
+ import "./chunk-B52AWKBB.js";
394
+ import "./chunk-UA5H3DS2.js";
395
+ import "./chunk-IUQ52YJK.js";
395
396
  import {
396
397
  getCliVersion
397
- } from "./chunk-Z6W3XDLN.js";
398
+ } from "./chunk-FN6YXJOP.js";
398
399
  import "./chunk-VJNBRRZG.js";
399
400
  import {
400
401
  isWorkspaceTrusted,
401
402
  loadTrustedFolders
402
- } from "./chunk-3ARO4N5G.js";
403
+ } from "./chunk-HA3SAB64.js";
403
404
  import {
404
405
  require_strip_json_comments
405
- } from "./chunk-ALGGS7UH.js";
406
+ } from "./chunk-NPQ5ZKRP.js";
406
407
  import "./chunk-MR3PXB6E.js";
407
408
  import "./chunk-XFSFZCM5.js";
408
409
  import "./chunk-URK542T4.js";
@@ -475,6 +476,7 @@ import {
475
476
  getWelcomeBackState,
476
477
  glob,
477
478
  ideContextStore,
479
+ isActiveWorkflowStatus,
478
480
  isBinary,
479
481
  isEditorAvailable,
480
482
  isExtensionCommittedWithWarningsError,
@@ -484,6 +486,7 @@ import {
484
486
  isSignalTermination,
485
487
  isSuccessStatus,
486
488
  isTerminalStatus,
489
+ isTerminalWorkflowStatus,
487
490
  loadUsageHistory,
488
491
  markDuplicateProviderToolCallResponseSent,
489
492
  matchesAnyServerPattern,
@@ -511,7 +514,7 @@ import {
511
514
  validateWorkflowName,
512
515
  watchRepoBranch,
513
516
  writeRuntimeStatus
514
- } from "./chunk-BFSQBXHV.js";
517
+ } from "./chunk-GXSNGY5M.js";
515
518
  import "./chunk-GOFAQQZA.js";
516
519
  import "./chunk-5M6IDOMF.js";
517
520
  import "./chunk-TWPJO254.js";
@@ -523,7 +526,7 @@ import "./chunk-7MH4J33A.js";
523
526
  import "./chunk-6PVPNMXU.js";
524
527
  import {
525
528
  resolveModelId
526
- } from "./chunk-RGTB44BO.js";
529
+ } from "./chunk-VXZ5HAOV.js";
527
530
  import "./chunk-IRH27ZC2.js";
528
531
  import "./chunk-QHWCP53L.js";
529
532
  import "./chunk-GNPNYXJB.js";
@@ -540,15 +543,15 @@ import {
540
543
  HOOKS_CONFIG_FIELDS
541
544
  } from "./chunk-GM463R2B.js";
542
545
  import "./chunk-SEZ556DZ.js";
543
- import "./chunk-CJXIIILK.js";
546
+ import "./chunk-2FRY5CRX.js";
544
547
  import {
545
548
  elapsedActiveTime,
546
549
  goalRequiresExactPermit
547
- } from "./chunk-3K7FH2KQ.js";
550
+ } from "./chunk-67N6HB5H.js";
548
551
  import {
549
552
  APPROVAL_MODES
550
553
  } from "./chunk-WAUGQKUU.js";
551
- import "./chunk-REHWPCG2.js";
554
+ import "./chunk-PLFATELK.js";
552
555
  import "./chunk-L4N6TIP7.js";
553
556
  import "./chunk-SAH4BD2J.js";
554
557
  import {
@@ -571,11 +574,12 @@ import {
571
574
  sanitizeForOsc,
572
575
  supportsHyperlinks,
573
576
  wrapForMultiplexer
574
- } from "./chunk-22NBYCPD.js";
577
+ } from "./chunk-3P2LV43B.js";
575
578
  import "./chunk-NAVJD2PQ.js";
576
- import "./chunk-3ULCB3NE.js";
577
- import "./chunk-BGG4MBYD.js";
579
+ import "./chunk-HV76SFIA.js";
580
+ import "./chunk-4PYCZH2V.js";
578
581
  import "./chunk-P3QQPMQA.js";
582
+ import "./chunk-SR7RZ4MS.js";
579
583
  import "./chunk-M6HMMKVG.js";
580
584
  import {
581
585
  REASONING_EFFORT_TIERS
@@ -624,11 +628,10 @@ import {
624
628
  recordSkillInvocation,
625
629
  removeMCPServerStatus,
626
630
  removeMCPStatusChangeListener,
627
- runSideQuery,
628
631
  runVisionBridge,
629
632
  shouldRunVisionBridge,
630
633
  splitImageParts
631
- } from "./chunk-XCG76UE6.js";
634
+ } from "./chunk-3PY4LPJF.js";
632
635
  import "./chunk-WOJZWRAZ.js";
633
636
  import "./chunk-VGC4I5JJ.js";
634
637
  import {
@@ -638,14 +641,18 @@ import {
638
641
  getUserAutoMemoryRoot,
639
642
  isAnyAutoMemPath
640
643
  } from "./chunk-FVKHVJZQ.js";
644
+ import {
645
+ runSideQuery
646
+ } from "./chunk-COBO5EBO.js";
641
647
  import "./chunk-6ZRFAKXK.js";
642
648
  import {
643
649
  ToolNames,
644
650
  isShellProgressData
645
651
  } from "./chunk-PYQADEFD.js";
652
+ import "./chunk-M3STHEMM.js";
646
653
  import {
647
654
  MAINLINE_CODER_MODEL
648
- } from "./chunk-P7HUJDBZ.js";
655
+ } from "./chunk-F6WFNA7U.js";
649
656
  import "./chunk-46UV252V.js";
650
657
  import {
651
658
  DEFAULT_TOKEN_LIMIT
@@ -671,7 +678,7 @@ import {
671
678
  tildeifyPath
672
679
  } from "./chunk-OIVKILPI.js";
673
680
  import "./chunk-VOQXFAY5.js";
674
- import "./chunk-TSYIQDG7.js";
681
+ import "./chunk-BF52U4XJ.js";
675
682
  import {
676
683
  finalizeStartupProfile,
677
684
  profileCheckpoint
@@ -680,11 +687,12 @@ import "./chunk-Q7YDKOGY.js";
680
687
  import {
681
688
  registerCleanup,
682
689
  runExitCleanup
683
- } from "./chunk-ZQGHESAS.js";
690
+ } from "./chunk-6TR7CFXH.js";
684
691
  import {
685
692
  clearScreen,
686
693
  writeStderrLine,
687
- writeStderrLineSafe
694
+ writeStderrLineSafe,
695
+ writeStdoutLine
688
696
  } from "./chunk-KGJGEEVR.js";
689
697
  import "./chunk-75DOP5OR.js";
690
698
  import "./chunk-DMTGGOSA.js";
@@ -706,6 +714,7 @@ import {
706
714
 
707
715
  // packages/cli/src/ui/startInteractiveUI.tsx
708
716
  init_esbuild_shims();
717
+ import { stat as stat2 } from "node:fs/promises";
709
718
  import { basename as basename4 } from "node:path";
710
719
  var import_react163 = __toESM(require_react(), 1);
711
720
 
@@ -1086,8 +1095,8 @@ var RemoteInputWatcher = class {
1086
1095
  }
1087
1096
  startWatching() {
1088
1097
  try {
1089
- const stat2 = statSync(this.filePath);
1090
- this.bytesRead = stat2.size;
1098
+ const stat3 = statSync(this.filePath);
1099
+ this.bytesRead = stat3.size;
1091
1100
  this.consumedPrefixHash = this.hashFilePrefix(this.bytesRead);
1092
1101
  } catch {
1093
1102
  this.bytesRead = 0;
@@ -1112,8 +1121,8 @@ var RemoteInputWatcher = class {
1112
1121
  if (!this.active || this.reading) return Promise.resolve();
1113
1122
  let currentSize;
1114
1123
  try {
1115
- const stat2 = statSync(this.filePath);
1116
- currentSize = stat2.size;
1124
+ const stat3 = statSync(this.filePath);
1125
+ currentSize = stat3.size;
1117
1126
  } catch {
1118
1127
  return Promise.resolve();
1119
1128
  }
@@ -1697,19 +1706,19 @@ function readArtFile(absolutePath) {
1697
1706
  }
1698
1707
  const flags = typeof fs.constants.O_NOFOLLOW === "number" ? fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW : fs.constants.O_RDONLY;
1699
1708
  fd = fs.openSync(absolutePath, flags);
1700
- const stat2 = fs.fstatSync(fd);
1701
- if (!stat2.isFile()) {
1709
+ const stat3 = fs.fstatSync(fd);
1710
+ if (!stat3.isFile()) {
1702
1711
  debugLogger3.warn(
1703
1712
  `Ignoring ui.customAsciiArt: ${absolutePath} is not a regular file.`
1704
1713
  );
1705
1714
  return void 0;
1706
1715
  }
1707
- const size = Math.min(stat2.size, MAX_FILE_BYTES);
1716
+ const size = Math.min(stat3.size, MAX_FILE_BYTES);
1708
1717
  const buffer = Buffer.alloc(size);
1709
1718
  fs.readSync(fd, buffer, 0, size, 0);
1710
- if (stat2.size > MAX_FILE_BYTES) {
1719
+ if (stat3.size > MAX_FILE_BYTES) {
1711
1720
  debugLogger3.warn(
1712
- `Truncated ui.customAsciiArt at ${absolutePath}: file is ${stat2.size} bytes, capped at ${MAX_FILE_BYTES}.`
1721
+ `Truncated ui.customAsciiArt at ${absolutePath}: file is ${stat3.size} bytes, capped at ${MAX_FILE_BYTES}.`
1713
1722
  );
1714
1723
  }
1715
1724
  return buffer.toString("utf8");
@@ -2512,6 +2521,14 @@ function findLastLE(arr, target) {
2512
2521
  return upperBound(arr, target) - 1;
2513
2522
  }
2514
2523
  __name(findLastLE, "findLastLE");
2524
+ function firstIndexOfOffsetRun(offsets, index) {
2525
+ let i = index;
2526
+ while (i > 0 && offsets[i - 1] === offsets[i]) {
2527
+ i--;
2528
+ }
2529
+ return i;
2530
+ }
2531
+ __name(firstIndexOfOffsetRun, "firstIndexOfOffsetRun");
2515
2532
  var VirtualizedListItem = (0, import_react10.memo)(
2516
2533
  ({
2517
2534
  content,
@@ -2529,7 +2546,7 @@ var VirtualizedListItem = (0, import_react10.memo)(
2529
2546
  onHeightChangeRef.current = onHeightChange;
2530
2547
  (0, import_react10.useLayoutEffect)(() => {
2531
2548
  const measuredHeight = itemRef.current?.yogaNode?.getComputedHeight() ?? height;
2532
- if (hasMeasured && measuredHeight > 0) {
2549
+ if (hasMeasured) {
2533
2550
  onHeightChangeRef.current(itemKey, measuredHeight);
2534
2551
  }
2535
2552
  }, [itemKey, height, hasMeasured, content]);
@@ -2649,10 +2666,11 @@ function VirtualizedList(props, ref) {
2649
2666
  const scrollableContainerHeight = containerHeight;
2650
2667
  const getAnchorForScrollTop = (0, import_react10.useCallback)(
2651
2668
  (scrollTop2, offsets2) => {
2652
- const index = findLastLE(offsets2, scrollTop2);
2653
- if (index === -1) {
2669
+ const found = findLastLE(offsets2, scrollTop2);
2670
+ if (found === -1) {
2654
2671
  return { index: 0, offset: 0 };
2655
2672
  }
2673
+ const index = firstIndexOfOffsetRun(offsets2, found);
2656
2674
  return { index, offset: scrollTop2 - offsets2[index] };
2657
2675
  },
2658
2676
  []
@@ -2660,7 +2678,7 @@ function VirtualizedList(props, ref) {
2660
2678
  const [prevTargetScrollIndex, setPrevTargetScrollIndex] = (0, import_react10.useState)(
2661
2679
  props.targetScrollIndex
2662
2680
  );
2663
- const prevOffsetsLength = (0, import_react10.useRef)(offsets.length);
2681
+ const prevOffsetsLength = (0, import_react10.useRef)(1);
2664
2682
  const target = props.targetScrollIndex;
2665
2683
  if (target !== void 0 && offsets.length > 1) {
2666
2684
  const targetChanged = target !== prevTargetScrollIndex;
@@ -2672,8 +2690,12 @@ function VirtualizedList(props, ref) {
2672
2690
  if (isStickingToBottom) {
2673
2691
  setIsStickingToBottom(false);
2674
2692
  }
2675
- if (scrollAnchor.index !== target || scrollAnchor.offset !== 0) {
2676
- setScrollAnchor({ index: target, offset: 0 });
2693
+ const anchoredIndex = firstIndexOfOffsetRun(
2694
+ offsets,
2695
+ Math.max(0, Math.min(data.length - 1, target))
2696
+ );
2697
+ if (scrollAnchor.index !== anchoredIndex || scrollAnchor.offset !== 0) {
2698
+ setScrollAnchor({ index: anchoredIndex, offset: 0 });
2677
2699
  }
2678
2700
  }
2679
2701
  }
@@ -2793,11 +2815,19 @@ function VirtualizedList(props, ref) {
2793
2815
  heights,
2794
2816
  props.targetScrollIndex
2795
2817
  ]);
2796
- const startIndex = Math.max(0, findLastLE(offsets, actualScrollTop) - 1);
2818
+ const maxScroll = Math.max(0, totalHeight - scrollableContainerHeight);
2819
+ const clampedScrollTop = Math.min(
2820
+ Math.max(0, isStickingToBottom ? maxScroll : actualScrollTop),
2821
+ maxScroll
2822
+ );
2823
+ const startIndex = firstIndexOfOffsetRun(
2824
+ offsets,
2825
+ Math.max(0, findLastLE(offsets, clampedScrollTop) - 1)
2826
+ );
2797
2827
  const viewHeightForEndIndex = scrollableContainerHeight > 0 ? scrollableContainerHeight : 50;
2798
2828
  const endIndexOffsetRaw = upperBound(
2799
2829
  offsets,
2800
- actualScrollTop + viewHeightForEndIndex
2830
+ clampedScrollTop + viewHeightForEndIndex
2801
2831
  );
2802
2832
  const endIndex = endIndexOffsetRaw >= offsets.length ? data.length - 1 : Math.min(data.length - 1, endIndexOffsetRaw);
2803
2833
  const topSpacerHeight = renderStatic === true ? 0 : offsets[startIndex] ?? 0;
@@ -2861,11 +2891,6 @@ function VirtualizedList(props, ref) {
2861
2891
  onHeightChange
2862
2892
  ]);
2863
2893
  const { getScrollTop, setPendingScrollTop } = useBatchedScroll(scrollTop);
2864
- const maxScroll = Math.max(0, totalHeight - scrollableContainerHeight);
2865
- const clampedScrollTop = Math.min(
2866
- Math.max(0, isStickingToBottom ? maxScroll : actualScrollTop),
2867
- maxScroll
2868
- );
2869
2894
  const getScrollbarGeometry = (0, import_react10.useCallback)(() => {
2870
2895
  const shouldShowScrollbar = (props.showScrollbar ?? true) && maxScroll > 0;
2871
2896
  if (!shouldShowScrollbar || !rootRef.current || scrollableContainerHeight <= 0) {
@@ -10185,7 +10210,7 @@ function TrustDialog({
10185
10210
  "Current Level: ",
10186
10211
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Text, { bold: true, children: currentTrustLevel || "Not Set" })
10187
10212
  ] }),
10188
- 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." }),
10213
+ 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." }),
10189
10214
  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." })
10190
10215
  ] }),
10191
10216
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
@@ -22892,8 +22917,8 @@ __name(statusGlyph, "statusGlyph");
22892
22917
  // packages/cli/src/ui/hooks/useBackgroundTaskView.ts
22893
22918
  var MAX_RETAINED_TERMINAL_DREAMS = 3;
22894
22919
  function compareActiveThenTerminal(a, b) {
22895
- const aActive = a.status === "running" || a.status === "paused";
22896
- const bActive = b.status === "running" || b.status === "paused";
22920
+ const aActive = a.status === "running" || a.status === "pausing" || a.status === "paused";
22921
+ const bActive = b.status === "running" || b.status === "pausing" || b.status === "paused";
22897
22922
  if (aActive !== bActive) return aActive ? -1 : 1;
22898
22923
  if (aActive) return b.startTime - a.startTime;
22899
22924
  return (b.endTime ?? b.startTime) - (a.endTime ?? a.startTime);
@@ -23033,6 +23058,7 @@ var DEFAULT_ACTIONS = {
23033
23058
  cancelSelected: noop,
23034
23059
  resumeSelected: /* @__PURE__ */ __name(async () => {
23035
23060
  }, "resumeSelected"),
23061
+ toggleSelectedWorkflowPause: /* @__PURE__ */ __name(() => null, "toggleSelectedWorkflowPause"),
23036
23062
  setPillFocused: noop,
23037
23063
  setLivePanelFocused: noop,
23038
23064
  setLivePanelSelectedIndex: noop,
@@ -23150,6 +23176,18 @@ function BackgroundTaskViewProvider({
23150
23176
  }
23151
23177
  await config.resumeBackgroundAgent(target.agentId);
23152
23178
  }, [config, entries, selectedIndex]);
23179
+ const toggleSelectedWorkflowPause = (0, import_react75.useCallback)(() => {
23180
+ if (!config) return null;
23181
+ const target = entries[selectedIndex];
23182
+ if (!target || target.kind !== "workflow" || !target.isBackgrounded) {
23183
+ return null;
23184
+ }
23185
+ const registry = config.getWorkflowRunRegistry();
23186
+ if (target.status === "running") return registry.pause(target.runId);
23187
+ if (target.status === "paused") return registry.resume(target.runId);
23188
+ if (target.status === "pausing") return registry.pause(target.runId);
23189
+ return null;
23190
+ }, [config, entries, selectedIndex]);
23153
23191
  const state = (0, import_react75.useMemo)(
23154
23192
  () => ({
23155
23193
  entries,
@@ -23181,6 +23219,7 @@ function BackgroundTaskViewProvider({
23181
23219
  exitDetail,
23182
23220
  cancelSelected,
23183
23221
  resumeSelected,
23222
+ toggleSelectedWorkflowPause,
23184
23223
  setPillFocused,
23185
23224
  setLivePanelFocused,
23186
23225
  setLivePanelSelectedIndex,
@@ -23196,6 +23235,7 @@ function BackgroundTaskViewProvider({
23196
23235
  exitDetail,
23197
23236
  cancelSelected,
23198
23237
  resumeSelected,
23238
+ toggleSelectedWorkflowPause,
23199
23239
  setPillFocused,
23200
23240
  setLivePanelFocused,
23201
23241
  setLivePanelSelectedIndex,
@@ -23369,6 +23409,8 @@ function statusVerb(status) {
23369
23409
  switch (status) {
23370
23410
  case "running":
23371
23411
  return t("Running");
23412
+ case "pausing":
23413
+ return t("Pausing");
23372
23414
  case "paused":
23373
23415
  return t("Paused");
23374
23416
  case "completed":
@@ -23411,8 +23453,14 @@ function formatDreamRowLabel(entry) {
23411
23453
  });
23412
23454
  }
23413
23455
  __name(formatDreamRowLabel, "formatDreamRowLabel");
23414
- function terminalStatusPresentation(status) {
23456
+ function statusPresentation(status) {
23415
23457
  switch (status) {
23458
+ case "pausing":
23459
+ return {
23460
+ icon: "\u2026",
23461
+ color: theme.status.warning,
23462
+ labelColor: theme.status.warningDim
23463
+ };
23416
23464
  case "paused":
23417
23465
  return {
23418
23466
  icon: "\u23F8",
@@ -23441,7 +23489,23 @@ function terminalStatusPresentation(status) {
23441
23489
  return null;
23442
23490
  }
23443
23491
  }
23444
- __name(terminalStatusPresentation, "terminalStatusPresentation");
23492
+ __name(statusPresentation, "statusPresentation");
23493
+ function isStoppableEntry(entry) {
23494
+ return entry.status === "running" || entry.kind === "workflow" && isActiveWorkflowStatus(entry.status);
23495
+ }
23496
+ __name(isStoppableEntry, "isStoppableEntry");
23497
+ function workflowPauseHint(entry) {
23498
+ if (entry?.kind !== "workflow" || !entry.isBackgrounded) return void 0;
23499
+ switch (entry.status) {
23500
+ case "running":
23501
+ return "p pause (cooperative)";
23502
+ case "paused":
23503
+ return "p resume (cooperative)";
23504
+ default:
23505
+ return void 0;
23506
+ }
23507
+ }
23508
+ __name(workflowPauseHint, "workflowPauseHint");
23445
23509
  var FOREGROUND_ROW_PREFIX = "[blocking]";
23446
23510
  var SHELL_ROW_PREFIX = "[shell]";
23447
23511
  function rowLabel(entry, userBlocking) {
@@ -23554,8 +23618,8 @@ var ListBody = /* @__PURE__ */ __name(({ entries, selectedIndex, maxRows }) => {
23554
23618
  visible.map((entry, visibleIdx) => {
23555
23619
  const idx = windowStart + visibleIdx;
23556
23620
  const isSelected = idx === selectedIndex;
23557
- const terminal = terminalStatusPresentation(entry.status);
23558
- const labelColor = isSelected ? theme.text.accent : terminal ? terminal.labelColor : theme.text.primary;
23621
+ const presentation2 = statusPresentation(entry.status);
23622
+ const labelColor = isSelected ? theme.text.accent : presentation2 ? presentation2.labelColor : theme.text.primary;
23559
23623
  const treePrefix = entry.kind === "agent" ? treeRowPrefix(entry, treeInfo.get(entry.agentId)) : "";
23560
23624
  return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { flexDirection: "row", paddingX: 1, children: [
23561
23625
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: isSelected ? theme.text.accent : void 0, children: isSelected ? "> " : " " }),
@@ -23629,7 +23693,7 @@ var DetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
23629
23693
  }, "DetailBody");
23630
23694
  var DreamDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
23631
23695
  const title = t("Dream");
23632
- const terminal = terminalStatusPresentation(entry.status);
23696
+ const presentation2 = statusPresentation(entry.status);
23633
23697
  const dimSubtitleParts = [elapsedFor(entry)];
23634
23698
  if (entry.sessionCount !== void 0) {
23635
23699
  dimSubtitleParts.push(formatSessionCount(entry.sessionCount));
@@ -23651,7 +23715,7 @@ var DreamDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23651
23715
  children: [
23652
23716
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
23653
23717
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
23654
- terminal && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: terminal.color, children: `${terminal.icon} ${statusVerb(entry.status)} \xB7 ` }),
23718
+ presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
23655
23719
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
23656
23720
  ] }),
23657
23721
  entry.sessionCount !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
@@ -23708,7 +23772,7 @@ var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23708
23772
  const title = escapeAnsiCtrlCodes(
23709
23773
  `${entry.subagentType ?? "Agent"} \u203A ${buildBackgroundEntryLabel(entry, { includePrefix: false })}`
23710
23774
  );
23711
- const terminal = terminalStatusPresentation(entry.status);
23775
+ const presentation2 = statusPresentation(entry.status);
23712
23776
  const dimSubtitleParts = [elapsedFor(entry)];
23713
23777
  if (entry.stats?.outputTokens) {
23714
23778
  dimSubtitleParts.push(
@@ -23780,7 +23844,7 @@ var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23780
23844
  children: [
23781
23845
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
23782
23846
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
23783
- terminal && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: terminal.color, children: `${terminal.icon} ${statusVerb(entry.status)} \xB7 ` }),
23847
+ presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
23784
23848
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
23785
23849
  ] }),
23786
23850
  parentLine !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
@@ -23857,7 +23921,7 @@ var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23857
23921
  }, "AgentDetailBody");
23858
23922
  var ShellDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
23859
23923
  const title = `${t("Shell")} \u203A ${entry.command}`;
23860
- const terminal = terminalStatusPresentation(entry.status);
23924
+ const presentation2 = statusPresentation(entry.status);
23861
23925
  const dimSubtitleParts = [elapsedFor(entry)];
23862
23926
  if (entry.pid !== void 0) {
23863
23927
  dimSubtitleParts.push(t("pid {{pid}}", { pid: String(entry.pid) }));
@@ -23877,7 +23941,7 @@ var ShellDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23877
23941
  children: [
23878
23942
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
23879
23943
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
23880
- terminal && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: terminal.color, children: `${terminal.icon} ${statusVerb(entry.status)} \xB7 ` }),
23944
+ presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
23881
23945
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
23882
23946
  ] }),
23883
23947
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
@@ -23897,7 +23961,7 @@ var ShellDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
23897
23961
  }, "ShellDetailBody");
23898
23962
  var MonitorDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
23899
23963
  const title = `${t("Monitor")} \u203A ${entry.description}`;
23900
- const terminal = terminalStatusPresentation(entry.status);
23964
+ const presentation2 = statusPresentation(entry.status);
23901
23965
  const dimSubtitleParts = [elapsedFor(entry)];
23902
23966
  if (entry.pid !== void 0) {
23903
23967
  dimSubtitleParts.push(t("pid {{pid}}", { pid: String(entry.pid) }));
@@ -23925,7 +23989,7 @@ var MonitorDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth })
23925
23989
  children: [
23926
23990
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
23927
23991
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
23928
- terminal && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: terminal.color, children: `${terminal.icon} ${statusVerb(entry.status)} \xB7 ` }),
23992
+ presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
23929
23993
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
23930
23994
  ] }),
23931
23995
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
@@ -23944,7 +24008,7 @@ var MAX_VISIBLE_PHASES = 20;
23944
24008
  var MAX_VISIBLE_LOG_LINES = 10;
23945
24009
  var WorkflowDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
23946
24010
  const title = `${t("Workflow")} \u203A ${entry.meta?.name ?? entry.runId}`;
23947
- const terminal = terminalStatusPresentation(entry.status);
24011
+ const presentation2 = statusPresentation(entry.status);
23948
24012
  const dimSubtitleParts = [elapsedFor(entry)];
23949
24013
  if (entry.agentsDispatched > 0) {
23950
24014
  dimSubtitleParts.push(
@@ -23976,19 +24040,27 @@ var WorkflowDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth })
23976
24040
  children: [
23977
24041
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, color: theme.text.accent, children: title }) }),
23978
24042
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { children: [
23979
- terminal && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: terminal.color, children: `${terminal.icon} ${statusVerb(entry.status)} \xB7 ` }),
24043
+ presentation2 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: presentation2.color, children: `${presentation2.icon} ${statusVerb(entry.status)} \xB7 ` }),
23980
24044
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
23981
24045
  ] }),
23982
24046
  entry.meta?.description && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
23983
24047
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
23984
24048
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { wrap: "wrap", children: entry.meta.description }) })
23985
24049
  ] }),
24050
+ (entry.status === "pausing" || entry.status === "paused") && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
24051
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
24052
+ /* @__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(
24053
+ "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."
24054
+ ) : t(
24055
+ "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."
24056
+ ) }) })
24057
+ ] }),
23986
24058
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
23987
24059
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, dimColor: true, children: t("Phases") }) }),
23988
24060
  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: [
23989
24061
  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")}` }) }),
23990
24062
  visiblePhases.map((phaseTitle, i) => {
23991
- const isCurrent = entry.status === "running" && i === visiblePhases.length - 1 && entry.currentPhase === phaseTitle;
24063
+ const isCurrent = isActiveWorkflowStatus(entry.status) && i === visiblePhases.length - 1 && entry.currentPhase === phaseTitle;
23992
24064
  const marker = isCurrent ? "\u25B8" : "\xB7";
23993
24065
  const phaseTokens = entry.perPhaseTokens.get(phaseTitle) ?? 0;
23994
24066
  const tokenChip = phaseTokens > 0 ? ` \xB7 ${formatTokenCount(phaseTokens)}t` : "";
@@ -24026,7 +24098,9 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24026
24098
  enterDetail,
24027
24099
  exitDetail,
24028
24100
  cancelSelected,
24029
- resumeSelected
24101
+ resumeSelected,
24102
+ toggleSelectedWorkflowPause,
24103
+ setSelectedIndex
24030
24104
  } = useBackgroundTaskViewActions();
24031
24105
  const config = useConfig();
24032
24106
  const detailContentHeight = Math.max(10, availableTerminalHeight - 6);
@@ -24038,6 +24112,21 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24038
24112
  (0, import_react77.useEffect)(() => {
24039
24113
  if (!isDetailMode) setSaveActive(false);
24040
24114
  }, [isDetailMode]);
24115
+ const [pauseRejected, setPauseRejected] = (0, import_react77.useState)(null);
24116
+ (0, import_react77.useEffect)(() => {
24117
+ if (!pauseRejected) return;
24118
+ const timer = setTimeout(() => setPauseRejected(null), 3e3);
24119
+ return () => clearTimeout(timer);
24120
+ }, [pauseRejected]);
24121
+ const toggleWorkflowPauseWithFeedback = (0, import_react77.useCallback)(() => {
24122
+ const target = entries[selectedIndex];
24123
+ const verdict = toggleSelectedWorkflowPause();
24124
+ if (verdict === false && target) {
24125
+ setPauseRejected({ entryKey: entryId(target) });
24126
+ } else if (verdict === true) {
24127
+ setPauseRejected(null);
24128
+ }
24129
+ }, [entries, selectedIndex, toggleSelectedWorkflowPause]);
24041
24130
  const selectedEntry = (0, import_react77.useMemo)(() => {
24042
24131
  const fromSnapshot = entries[selectedIndex] ?? null;
24043
24132
  if (!fromSnapshot) return fromSnapshot;
@@ -24107,12 +24196,19 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24107
24196
  selectedAgentIdForActivity
24108
24197
  ]);
24109
24198
  const selectedStatus = selectedEntry?.status;
24199
+ const selectedShouldTick = selectedEntry?.kind === "workflow" ? isActiveWorkflowStatus(selectedEntry.status) : selectedStatus === "running";
24110
24200
  (0, import_react77.useEffect)(() => {
24111
- if (!dialogOpen || !isDetailMode || !selectedEntryId || selectedStatus !== "running")
24201
+ if (!dialogOpen || !isDetailMode || !selectedEntryId || !selectedShouldTick)
24112
24202
  return;
24113
24203
  const id = setInterval(() => setActivityTick((n) => n + 1), 1e3);
24114
24204
  return () => clearInterval(id);
24115
- }, [dialogOpen, dialogMode, isDetailMode, selectedEntryId, selectedStatus]);
24205
+ }, [
24206
+ dialogOpen,
24207
+ dialogMode,
24208
+ isDetailMode,
24209
+ selectedEntryId,
24210
+ selectedShouldTick
24211
+ ]);
24116
24212
  const initialDetailStatusRef = (0, import_react77.useRef)(null);
24117
24213
  (0, import_react77.useEffect)(() => {
24118
24214
  if (!dialogOpen || !isDetailMode) {
@@ -24121,11 +24217,25 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24121
24217
  }
24122
24218
  if (!selectedEntryId) {
24123
24219
  initialDetailStatusRef.current = null;
24220
+ setPendingCancelEntryId(null);
24124
24221
  exitDetail();
24125
24222
  return;
24126
24223
  }
24127
24224
  const seen = initialDetailStatusRef.current;
24128
- if (!seen || seen.entryId !== selectedEntryId) {
24225
+ if (seen && seen.entryId !== selectedEntryId) {
24226
+ const driftedIndex = entries.findIndex(
24227
+ (candidate) => entryId(candidate) === seen.entryId
24228
+ );
24229
+ if (driftedIndex >= 0) {
24230
+ setSelectedIndex(driftedIndex);
24231
+ return;
24232
+ }
24233
+ initialDetailStatusRef.current = null;
24234
+ setPendingCancelEntryId(null);
24235
+ exitDetail();
24236
+ return;
24237
+ }
24238
+ if (!seen) {
24129
24239
  if (selectedStatus) {
24130
24240
  initialDetailStatusRef.current = {
24131
24241
  entryId: selectedEntryId,
@@ -24134,7 +24244,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24134
24244
  }
24135
24245
  return;
24136
24246
  }
24137
- if (seen.status === "running" && selectedStatus && selectedStatus !== "running") {
24247
+ const seenWasActive = seen.status === "running" || seen.status === "pausing" || seen.status === "paused";
24248
+ const selectedIsTerminal = selectedStatus === "completed" || selectedStatus === "failed" || selectedStatus === "cancelled";
24249
+ if (seenWasActive && selectedIsTerminal) {
24250
+ setPendingCancelEntryId(null);
24138
24251
  exitDetail();
24139
24252
  }
24140
24253
  }, [
@@ -24143,11 +24256,13 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24143
24256
  isDetailMode,
24144
24257
  selectedEntryId,
24145
24258
  selectedStatus,
24146
- exitDetail
24259
+ exitDetail,
24260
+ entries,
24261
+ setSelectedIndex
24147
24262
  ]);
24148
24263
  const handleCancelKey = /* @__PURE__ */ __name(() => {
24149
24264
  if (!selectedEntry) return;
24150
- const isCancelable = selectedEntry.status === "running";
24265
+ const isCancelable = isStoppableEntry(selectedEntry);
24151
24266
  const isAbandonable = selectedEntry.kind === "agent" && selectedEntry.status === "paused";
24152
24267
  if (!isCancelable && !isAbandonable) return;
24153
24268
  const entryKey = entryId(selectedEntry);
@@ -24204,13 +24319,17 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24204
24319
  void resumeSelected();
24205
24320
  return;
24206
24321
  }
24322
+ if (key.sequence === "p" && !key.ctrl && !key.meta) {
24323
+ toggleWorkflowPauseWithFeedback();
24324
+ return;
24325
+ }
24207
24326
  if (key.sequence === "x" && !key.ctrl && !key.meta) {
24208
24327
  handleCancelKey();
24209
24328
  return;
24210
24329
  }
24211
24330
  return;
24212
24331
  }
24213
- if (key.sequence === "s" && !key.ctrl && !key.meta && config && selectedEntry?.kind === "workflow" && selectedEntry.status !== "running" && !!selectedEntry.script) {
24332
+ if (key.sequence === "s" && !key.ctrl && !key.meta && config && selectedEntry?.kind === "workflow" && isTerminalWorkflowStatus(selectedEntry.status) && !!selectedEntry.script) {
24214
24333
  setSaveActive(true);
24215
24334
  return;
24216
24335
  }
@@ -24231,6 +24350,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24231
24350
  void resumeSelected();
24232
24351
  return;
24233
24352
  }
24353
+ if (key.sequence === "p" && !key.ctrl && !key.meta) {
24354
+ toggleWorkflowPauseWithFeedback();
24355
+ return;
24356
+ }
24234
24357
  if (key.sequence === "x" && !key.ctrl && !key.meta) {
24235
24358
  handleCancelKey();
24236
24359
  return;
@@ -24240,8 +24363,9 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24240
24363
  );
24241
24364
  if (!dialogOpen) return null;
24242
24365
  const selectedEntryAllowsResume = selectedEntry?.kind === "agent" && selectedEntry.status === "paused" && !selectedEntry.resumeBlockedReason;
24243
- const workflowSaveTarget = config && selectedEntry?.kind === "workflow" && selectedEntry.status !== "running" && selectedEntry.script ? selectedEntry : null;
24366
+ const workflowSaveTarget = config && selectedEntry?.kind === "workflow" && isTerminalWorkflowStatus(selectedEntry.status) && selectedEntry.script ? selectedEntry : null;
24244
24367
  const selectedEntryKey = selectedEntry ? entryId(selectedEntry) : null;
24368
+ const selectedWorkflowPauseHint = workflowPauseHint(selectedEntry);
24245
24369
  const showCancelConfirmHint = pendingCancelEntryId !== null && pendingCancelEntryId === selectedEntryKey;
24246
24370
  const hints = [];
24247
24371
  if (approvalActive) {
@@ -24256,7 +24380,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24256
24380
  );
24257
24381
  } else if (dialogMode === "list") {
24258
24382
  hints.push("\u2191/\u2193 select", "Enter view");
24259
- if (selectedEntry?.status === "running") hints.push("x stop");
24383
+ if (selectedEntry && isStoppableEntry(selectedEntry)) {
24384
+ hints.push("x stop");
24385
+ }
24386
+ if (selectedWorkflowPauseHint) hints.push(selectedWorkflowPauseHint);
24260
24387
  if (selectedEntryAllowsResume) hints.push("r resume");
24261
24388
  if (selectedEntry?.kind === "agent" && selectedEntry.status === "paused") {
24262
24389
  hints.push("x abandon");
@@ -24264,7 +24391,10 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24264
24391
  hints.push("\u2190/Esc close");
24265
24392
  } else {
24266
24393
  hints.push("\u2190 back", "Esc close");
24267
- if (selectedEntry?.status === "running") hints.push("x stop");
24394
+ if (selectedEntry && isStoppableEntry(selectedEntry)) {
24395
+ hints.push("x stop");
24396
+ }
24397
+ if (selectedWorkflowPauseHint) hints.push(selectedWorkflowPauseHint);
24268
24398
  if (selectedEntryAllowsResume) hints.push("r resume");
24269
24399
  if (selectedEntry?.kind === "agent" && selectedEntry.status === "paused") {
24270
24400
  hints.push("x abandon");
@@ -24324,7 +24454,9 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
24324
24454
  isActive: saveActive,
24325
24455
  onClose: () => setSaveActive(false)
24326
24456
  }
24327
- ) : /* @__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 ") }) })
24457
+ ) : /* @__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(
24458
+ "Pause/resume was rejected; the workflow state changed. Try again."
24459
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: hints.join(" \xB7 ") }) })
24328
24460
  ]
24329
24461
  }
24330
24462
  );
@@ -29953,7 +30085,7 @@ ${currentText}`);
29953
30085
  resetEscapeState();
29954
30086
  return true;
29955
30087
  }
29956
- if (!isAttachmentMode && uiState.messageQueue.length > 0) {
30088
+ if (!isAttachmentMode && uiState.messageQueue.length > 0 && uiState.streamingState !== "responding" /* Responding */) {
29957
30089
  if (popQueueIntoInput()) {
29958
30090
  resetEscapeState();
29959
30091
  return true;
@@ -30757,9 +30889,11 @@ function hasPendingApproval(entries) {
30757
30889
  __name(hasPendingApproval, "hasPendingApproval");
30758
30890
  function getPillLabel(entries) {
30759
30891
  if (entries.length === 0) return "";
30760
- const running = entries.filter((e) => e.status === "running");
30761
- if (running.length > 0) {
30762
- return groupAndFormat(running);
30892
+ const live = entries.filter(
30893
+ (e) => e.status === "running" || e.kind === "workflow" && (e.status === "pausing" || e.status === "paused")
30894
+ );
30895
+ if (live.length > 0) {
30896
+ return groupAndFormat(live);
30763
30897
  }
30764
30898
  const pausedAgents = entries.filter(
30765
30899
  (e) => e.kind === "agent" && e.status === "paused"
@@ -30807,9 +30941,9 @@ var BackgroundTasksPill = /* @__PURE__ */ __name(() => {
30807
30941
  const label = getPillLabel(entries);
30808
30942
  const needsApproval = hasPendingApproval(entries);
30809
30943
  return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_jsx_runtime112.Fragment, { children: [
30810
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.text.secondary, children: " \xB7 " }),
30811
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { inverse: pillFocused, children: label }),
30812
- needsApproval && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.status.warning, children: ` \u26A0 ${t("needs approval")}` })
30944
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.text.secondary, wrap: "truncate", children: " \xB7 " }),
30945
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { inverse: pillFocused, wrap: "truncate", children: label }),
30946
+ needsApproval && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { color: theme.status.warning, wrap: "truncate", children: ` \u26A0 ${t("needs approval")}` })
30813
30947
  ] });
30814
30948
  }, "BackgroundTasksPill");
30815
30949
 
@@ -30869,8 +31003,8 @@ var MCPHealthPill = /* @__PURE__ */ __name(() => {
30869
31003
  const label = getPillLabel2(snapshot);
30870
31004
  if (!label) return null;
30871
31005
  return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_jsx_runtime113.Fragment, { children: [
30872
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.text.secondary, children: " \xB7 " }),
30873
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.status.warning, children: label })
31006
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.text.secondary, wrap: "truncate", children: " \xB7 " }),
31007
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { color: theme.status.warning, wrap: "truncate", children: label })
30874
31008
  ] });
30875
31009
  }, "MCPHealthPill");
30876
31010
 
@@ -31646,7 +31780,10 @@ var Footer = /* @__PURE__ */ __name(() => {
31646
31780
  /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { wrap: "truncate", children: leftBottomContent }),
31647
31781
  /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(BackgroundTasksPill, {}),
31648
31782
  /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(MCPHealthPill, {}),
31649
- !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", {
31783
+ uiState.messageQueue.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Text, { color: theme.text.secondary, wrap: "truncate", children: ` \u23F3 ${t("{{count}} queued", {
31784
+ count: String(uiState.messageQueue.length)
31785
+ })}` }),
31786
+ !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", {
31650
31787
  count: String(uiState.skillReviewPending.skills.length)
31651
31788
  })}` })
31652
31789
  ] })
@@ -46833,6 +46970,20 @@ ${error.stack ?? ""}`
46833
46970
  Rendering error${loggedHint}: ${sanitizeTerminalText(renderError.message)}`
46834
46971
  );
46835
46972
  }
46973
+ try {
46974
+ if (process.stdout.isTTY && config.getChatRecordingService()) {
46975
+ const sessionId = config.getSessionId();
46976
+ const sessionFile = config.getTranscriptPath();
46977
+ if (isValidSessionId(sessionId) && (await stat2(sessionFile)).size > 0) {
46978
+ writeStdoutLine(
46979
+ `
46980
+ ${t("To continue this session, run")}
46981
+ qwen --resume ${sessionId}`
46982
+ );
46983
+ }
46984
+ }
46985
+ } catch {
46986
+ }
46836
46987
  });
46837
46988
  }
46838
46989
  __name(startInteractiveUI, "startInteractiveUI");