@qwen-code/qwen-code 0.23.2-preview.0 → 0.23.2

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 (282) hide show
  1. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  2. package/bundled/qc-helper/docs/configuration/model-providers.md +19 -15
  3. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
  4. package/bundled/qc-helper/docs/features/channels/github.md +1 -9
  5. package/bundled/qc-helper/docs/features/channels/overview.md +26 -51
  6. package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
  7. package/bundled/qc-helper/docs/features/commands.md +48 -9
  8. package/bundled/qc-helper/docs/features/goals.md +2 -0
  9. package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
  10. package/bundled/qc-helper/docs/qwen-serve.md +62 -48
  11. package/chunks/{MaxSizedBox-ZZJT3PJF.js → MaxSizedBox-4C3BKKKY.js} +17 -16
  12. package/chunks/{StandaloneSessionPicker-DIOSZTMX.js → StandaloneSessionPicker-TXVF65YW.js} +32 -31
  13. package/chunks/{acpAgent-62JUP5A7.js → acpAgent-H5XBKGB4.js} +301 -166
  14. package/chunks/{agent-NLPEQQDZ.js → agent-T5LEFJIU.js} +10 -10
  15. package/chunks/{agent-headless-Y2GR5F2Q.js → agent-headless-VZKSRH36.js} +10 -10
  16. package/chunks/{anthropicContentGenerator-I7LQZH26.js → anthropicContentGenerator-PRJWWVYJ.js} +2 -2
  17. package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-G5LHNECG.js} +1 -1
  18. package/chunks/{bridge-Q66BD62H.js → bridge-AOX5IY44.js} +18 -17
  19. package/chunks/{channel-management-service-TRTLQTSV.js → channel-management-service-MWQGHPAS.js} +4 -4
  20. package/chunks/{channel-settings-store-R5STFWUW.js → channel-settings-store-XZCGDGHW.js} +26 -25
  21. package/chunks/{channel-worker-group-PIYPVCTF.js → channel-worker-group-SQ5FRWOH.js} +5 -5
  22. package/chunks/{channel-worker-manager-FQHEDTD2.js → channel-worker-manager-TU4ZNWOE.js} +5 -5
  23. package/chunks/{channel-worker-supervisor-XJPZZ3VK.js → channel-worker-supervisor-EMITFMCP.js} +4 -4
  24. package/chunks/{chunk-3SH53ANB.js → chunk-22GORRNY.js} +12 -0
  25. package/chunks/{chunk-7L35FKPF.js → chunk-2BMXHB6N.js} +2 -2
  26. package/chunks/chunk-2WC3Y7YY.js +1033 -0
  27. package/chunks/{chunk-WZ4YULVF.js → chunk-3OAXF3UK.js} +210 -80
  28. package/chunks/{chunk-W673V2H3.js → chunk-46MMBZHI.js} +3 -3
  29. package/chunks/{chunk-6GRDHIVI.js → chunk-4I3WFI3U.js} +4 -4
  30. package/chunks/{chunk-QXXBW2G4.js → chunk-4JNHNVAZ.js} +3 -3
  31. package/chunks/{chunk-R2266LQ5.js → chunk-4WMGYG3F.js} +2 -2
  32. package/chunks/{chunk-Y6ZWXM44.js → chunk-5BH2AIEY.js} +1 -1
  33. package/chunks/{chunk-EA4NFWVG.js → chunk-5OZUKLL7.js} +3 -3
  34. package/chunks/{chunk-RX3FYFCN.js → chunk-67XTVRVB.js} +1 -1
  35. package/chunks/{chunk-MA5OUNN6.js → chunk-6G4V7SE4.js} +1 -1
  36. package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
  37. package/chunks/{chunk-7GZCCHJL.js → chunk-7LTCFO6T.js} +3 -3
  38. package/chunks/{chunk-33MLFMCL.js → chunk-7NDZKE2M.js} +2 -2
  39. package/chunks/{chunk-5WC2ECUK.js → chunk-7PD7ZMX5.js} +17 -4
  40. package/chunks/{chunk-ZUNWKOAP.js → chunk-7SVM3RP2.js} +4 -24
  41. package/chunks/{chunk-5GD7LYOH.js → chunk-A7EFXK7P.js} +1 -1
  42. package/chunks/{chunk-RDV4NLI3.js → chunk-AO2VMS72.js} +2 -2
  43. package/chunks/{chunk-XAXTQURR.js → chunk-APXIW2TF.js} +3 -3
  44. package/chunks/{chunk-3BTHHXXE.js → chunk-AUTUFD5X.js} +1 -1
  45. package/chunks/{chunk-VH764G6B.js → chunk-B25JYXZE.js} +2 -2
  46. package/chunks/{chunk-MMMA36MN.js → chunk-BK7D2JR6.js} +3 -3
  47. package/chunks/{chunk-RPFJJ33Z.js → chunk-CALTQWTZ.js} +1 -1
  48. package/chunks/{chunk-EUXF6URV.js → chunk-CCBTNJB4.js} +16 -18
  49. package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
  50. package/chunks/{chunk-L6ZME3W7.js → chunk-CMWU6P4D.js} +1 -1
  51. package/chunks/{chunk-QJAFSFYA.js → chunk-CWVZBIZJ.js} +1 -1
  52. package/chunks/{chunk-JDPBJIKI.js → chunk-DAI65CMX.js} +1 -1
  53. package/chunks/{chunk-GM44O6F7.js → chunk-DARWOZY6.js} +1 -1
  54. package/chunks/{chunk-J4ECGDA3.js → chunk-ELD3OBPU.js} +3 -3
  55. package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
  56. package/chunks/{chunk-OIPUQE3S.js → chunk-F2NYVASI.js} +14 -1
  57. package/chunks/{chunk-ODBNTMZW.js → chunk-FAJPLSYF.js} +36 -29
  58. package/chunks/{chunk-GXIHBIHC.js → chunk-FGHPZGOP.js} +29 -24
  59. package/chunks/{chunk-TK4XHPKW.js → chunk-G37O7YO6.js} +2 -2
  60. package/chunks/{chunk-4JKLPTV6.js → chunk-G3ZUMSFS.js} +12 -5
  61. package/chunks/{chunk-743XE7N7.js → chunk-G5VOXCRX.js} +1 -1
  62. package/chunks/{chunk-BL6B2QS2.js → chunk-GOEVQADN.js} +618 -1122
  63. package/chunks/{chunk-XI7RST4D.js → chunk-GOKAOSCN.js} +1 -1
  64. package/chunks/{chunk-FDOGGKAA.js → chunk-GSFV5RQW.js} +2 -0
  65. package/chunks/{chunk-43CI6YWJ.js → chunk-HJ5UJQQL.js} +1384 -1245
  66. package/chunks/{chunk-LUVXLLMS.js → chunk-IR6JKBAP.js} +1 -1
  67. package/chunks/{chunk-CPJRFFPH.js → chunk-IRGDIDGJ.js} +558 -158
  68. package/chunks/{chunk-DCPRCDSR.js → chunk-IWABUX6T.js} +1 -1
  69. package/chunks/{chunk-DTB5BXRG.js → chunk-JO77FGNZ.js} +16 -15
  70. package/chunks/{chunk-45ROPFQY.js → chunk-JYGIJA4W.js} +1 -1
  71. package/chunks/{chunk-M6YLOETP.js → chunk-KCF2436G.js} +1 -1
  72. package/chunks/{chunk-CABDNUJ4.js → chunk-KEPC5BOL.js} +5 -5
  73. package/chunks/{chunk-RN6V5HKE.js → chunk-KFECPHLV.js} +3 -3
  74. package/chunks/{chunk-WIRYFL2L.js → chunk-LEAOJ43M.js} +17 -15
  75. package/chunks/{chunk-IUJLW6ZI.js → chunk-LUNC5KCL.js} +3 -3
  76. package/chunks/{chunk-WZS3X663.js → chunk-LWX4WDFF.js} +2 -5
  77. package/chunks/{chunk-ISPBBKJN.js → chunk-MV5DTLJV.js} +7 -2
  78. package/chunks/chunk-NFXXBWSE.js +463 -0
  79. package/chunks/{chunk-PQSCGZT2.js → chunk-NPKCVSXX.js} +26 -2
  80. package/chunks/{chunk-7RXOEUFF.js → chunk-NX7ZTXFF.js} +1 -1
  81. package/chunks/{chunk-G5QLLD53.js → chunk-OXR34GCD.js} +14 -2
  82. package/chunks/{chunk-VHPG7BH6.js → chunk-PDN7FJZV.js} +1 -1
  83. package/chunks/{chunk-UHUT4IDM.js → chunk-PFKGV6PO.js} +9 -9
  84. package/chunks/{chunk-NFIDVZND.js → chunk-QB3KS3N3.js} +2 -21
  85. package/chunks/{chunk-QLM7D7W3.js → chunk-QFJZAY7W.js} +7 -7
  86. package/chunks/{chunk-NVS4Z6GT.js → chunk-QHLHE2OT.js} +1 -1
  87. package/chunks/{chunk-B44JBZBB.js → chunk-QQK4L3UU.js} +1 -1
  88. package/chunks/{chunk-63ACHB2H.js → chunk-QTB4VP4K.js} +50 -18
  89. package/chunks/{chunk-4BLTSTF6.js → chunk-R3JIDRUL.js} +4 -4
  90. package/chunks/{chunk-VEQBVJYH.js → chunk-R457KFV7.js} +3 -3
  91. package/chunks/{chunk-CG2PDIGD.js → chunk-RM244SCQ.js} +1 -1
  92. package/chunks/{chunk-W7PXLIZJ.js → chunk-RNAJVXUG.js} +5 -5
  93. package/chunks/{chunk-VF6D6EGV.js → chunk-S5QR6CB5.js} +52 -6
  94. package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
  95. package/chunks/{chunk-5HBA2Z7V.js → chunk-TGNNLRC3.js} +2 -3
  96. package/chunks/{chunk-ORREXWOM.js → chunk-TODNHE76.js} +3 -3
  97. package/chunks/{chunk-W3ONSAYO.js → chunk-TOOOLHVS.js} +2 -2
  98. package/chunks/{chunk-EHTKOO6W.js → chunk-TRQNRP2H.js} +2 -2
  99. package/chunks/{chunk-PQWM4SX2.js → chunk-U6REWGVR.js} +2 -2
  100. package/chunks/{chunk-UXDVUFKU.js → chunk-ULZECEIP.js} +2 -2
  101. package/chunks/{chunk-6YEOCHSE.js → chunk-VBLAI2HA.js} +101 -0
  102. package/chunks/{chunk-M73KHGNR.js → chunk-VJJXG73H.js} +404 -226
  103. package/chunks/{chunk-Q2F43WTJ.js → chunk-WBU2PIZ5.js} +23 -6
  104. package/chunks/{chunk-UULHYZ4W.js → chunk-WDN64MVT.js} +74 -15
  105. package/chunks/{chunk-XVTCSVBK.js → chunk-WDVV3LRM.js} +193 -169
  106. package/chunks/{chunk-LBKYQ33T.js → chunk-WK7P62DV.js} +16 -10
  107. package/chunks/{chunk-ULY4ISY2.js → chunk-WXD7INFV.js} +19 -4
  108. package/chunks/{chunk-ZIPYCXQP.js → chunk-WXPPUPHM.js} +1 -1
  109. package/chunks/{chunk-5Z4FCEPY.js → chunk-X7LFJF5D.js} +600 -46
  110. package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
  111. package/chunks/{chunk-MWEF5MUK.js → chunk-XSOXPG2L.js} +8 -8
  112. package/chunks/{chunk-5VZFJTL2.js → chunk-YLOHCA6I.js} +2 -2
  113. package/chunks/{chunk-LN3WBOKU.js → chunk-YQGW3M6Z.js} +2 -2
  114. package/chunks/{chunk-2OR32P5M.js → chunk-ZN5TKAVR.js} +125 -10
  115. package/chunks/{chunk-XBLG564H.js → chunk-ZP5XDLSA.js} +10 -10
  116. package/chunks/{config-utils-37FHWPTP.js → config-utils-GPLIABL2.js} +21 -20
  117. package/chunks/{contextCommand-R4JUBV5N.js → contextCommand-NCUQUDBY.js} +18 -17
  118. package/chunks/{core-runtime-6U4OXU5C.js → core-runtime-WKYKWVYU.js} +23 -21
  119. package/chunks/{create-sub-session-LLUYAGZN.js → create-sub-session-PPLXB3JJ.js} +17 -16
  120. package/chunks/{daemon-UI6SQSBV.js → daemon-2CKIAO3I.js} +2 -2
  121. package/chunks/{daemon-git-worktree-guard-O2UTNFJC.js → daemon-git-worktree-guard-73ZWOLKL.js} +17 -16
  122. package/chunks/{daemon-status-provider-7GMAKSTX.js → daemon-status-provider-OK7VONJG.js} +22 -21
  123. package/chunks/{daemon-trust-policy-VNP76VMO.js → daemon-trust-policy-CAUCREG2.js} +22 -21
  124. package/chunks/{daemon-trust-policy-monitor-TD5O3BZA.js → daemon-trust-policy-monitor-3Y36OOEQ.js} +22 -21
  125. package/chunks/{deferred-core-runtime-NJM63YJS.js → deferred-core-runtime-Q7WFWYD3.js} +17 -16
  126. package/chunks/{dist-STAGIFNB.js → dist-6YDUH3BB.js} +388 -102
  127. package/chunks/{dist-XJ25G6OH.js → dist-BNQVF565.js} +2 -8
  128. package/chunks/{dist-NQ2636VT.js → dist-F34J4FZX.js} +1 -1
  129. package/chunks/{dist-OR2ZQTXZ.js → dist-F6JLAJLE.js} +1 -1
  130. package/chunks/{dist-WZTUKIDR.js → dist-NP7QKLVG.js} +2 -2
  131. package/chunks/{dist-M4CBX53H.js → dist-UFTFGI6I.js} +1 -1
  132. package/chunks/{dist-5I4HLUTO.js → dist-XLV33CLY.js} +1 -2
  133. package/chunks/{dist-24TCWK5H.js → dist-Y5KC3IHW.js} +1 -2
  134. package/chunks/{dist-FDISN4AK.js → dist-ZDNJK74R.js} +3 -7
  135. package/chunks/{edit-GL7OA6RV.js → edit-YJD6IETK.js} +10 -10
  136. package/chunks/{enterPlanMode-VC4BCSZE.js → enterPlanMode-EFPVTWIH.js} +10 -10
  137. package/chunks/{environment-BI6IBAZJ.js → environment-HP3AXFTB.js} +19 -18
  138. package/chunks/{errors-D6G2ZM2R.js → errors-22ON46G7.js} +19 -18
  139. package/chunks/{exitPlanMode-DX446CA6.js → exitPlanMode-MOQUNCBH.js} +10 -10
  140. package/chunks/{fast-path-MAYDLJIP.js → fast-path-2X7BPMXX.js} +3 -3
  141. package/chunks/{glob-TVKRFY36.js → glob-Y7ACIB3P.js} +10 -10
  142. package/chunks/{goal-tools-CA6YANRN.js → goal-tools-DABMICUC.js} +10 -10
  143. package/chunks/{handleAutoUpdate-AW4ZAHON.js → handleAutoUpdate-MCAMHYDI.js} +19 -18
  144. package/chunks/{i18n-IH5CRAY7.js → i18n-C3GDCALP.js} +17 -16
  145. package/chunks/{initializer-UBR37ZNM.js → initializer-4URDQL2G.js} +22 -21
  146. package/chunks/{installationInfo-Y52756EC.js → installationInfo-LBOL6SBV.js} +17 -16
  147. package/chunks/{list-7V5JDZPO.js → list-JOGBAC2R.js} +25 -24
  148. package/chunks/{list-agents-I5TRH3J7.js → list-agents-2CXPGJUE.js} +3 -3
  149. package/chunks/{llm-QDB6JVF5.js → llm-2KPNSAVY.js} +65 -59
  150. package/chunks/{llm-content-generator-EO6MZCEO.js → llm-content-generator-GR3FOHLB.js} +2 -2
  151. package/chunks/{loadedSettingsAdapter-I3YQKMC4.js → loadedSettingsAdapter-DVKROEJD.js} +22 -21
  152. package/chunks/{loggingContentGenerator-MNXYUGDG.js → loggingContentGenerator-P4K6K5W4.js} +12 -12
  153. package/chunks/{managed-npm-update-EA3EXPTO.js → managed-npm-update-VWBKHNIN.js} +17 -16
  154. package/chunks/{mcp-QTAJ544Y.js → mcp-6YYNSYLK.js} +22 -21
  155. package/chunks/{monitor-6FQKQOTP.js → monitor-A255TNZR.js} +10 -10
  156. package/chunks/{nonInteractiveCli-MRCTZL5X.js → nonInteractiveCli-LXGIKQAT.js} +55 -54
  157. package/chunks/{notebook-edit-BQQCKI7K.js → notebook-edit-5UYHS2DM.js} +10 -10
  158. package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
  159. package/chunks/{openaiContentGenerator-TTSKXNVH.js → openaiContentGenerator-A6MAMEO5.js} +7 -7
  160. package/chunks/{pidfile-KPIS6RIT.js → pidfile-B7DZC4TP.js} +20 -17
  161. package/chunks/{processUtils-ZCASPKK4.js → processUtils-BPZ2MCZS.js} +2 -2
  162. package/chunks/{prompt-terminal-ledger-D6HM6TV7.js → prompt-terminal-ledger-FYYTAOXS.js} +18 -17
  163. package/chunks/{qwenContentGenerator-GGZEFLBD.js → qwenContentGenerator-4IOJFD4S.js} +13 -13
  164. package/chunks/{read-file-VE5GDFLP.js → read-file-A4H4O3VQ.js} +2 -2
  165. package/chunks/{resumeHistoryUtils-HSSGMYDC.js → resumeHistoryUtils-YQQ43E4N.js} +19 -18
  166. package/chunks/{ripGrep-SEJE7AA6.js → ripGrep-W32NWFTA.js} +3 -3
  167. package/chunks/{run-qwen-serve-OJYVH7N6.js → run-qwen-serve-WBSWWIRV.js} +216 -64
  168. package/chunks/{runtime-KGMQQFJD.js → runtime-VRVBX2E5.js} +29 -26
  169. package/chunks/{scheduled-tasks-7H5HWHYD.js → scheduled-tasks-D65KJDA3.js} +20 -19
  170. package/chunks/{scheduler-BE42AKDG.js → scheduler-M2YPN7Z7.js} +19 -18
  171. package/chunks/{send-message-AWKUDJBH.js → send-message-76BKWKFZ.js} +3 -3
  172. package/chunks/{serve-KZVKYMSL.js → serve-BE3H2P6P.js} +22 -21
  173. package/chunks/{server-PJRALPJQ.js → server-FLY5JERG.js} +84 -148
  174. package/chunks/{session-IHITXU2S.js → session-JVN62R5K.js} +85 -57
  175. package/chunks/{session-attachments-root-GQ2TUI3Y.js → session-attachments-root-7ACGLHXA.js} +17 -16
  176. package/chunks/{session-pr-refresh-H43LULTE.js → session-pr-refresh-TQS57SDK.js} +19 -18
  177. package/chunks/{settings-RKEQQDFC.js → settings-D44YMZFT.js} +21 -20
  178. package/chunks/{shell-6PJ444U5.js → shell-3VE6I4V5.js} +10 -10
  179. package/chunks/{skill-Q3UP7B5V.js → skill-FHEGRRZU.js} +2 -2
  180. package/chunks/{skill-settings-LZR5YRRW.js → skill-settings-VHEJMBFL.js} +21 -20
  181. package/chunks/{spawnChannel-WM3DT2BF.js → spawnChannel-T6MX2ZDN.js} +17 -16
  182. package/chunks/{standalone-update-E5474IBI.js → standalone-update-QUGHFMCS.js} +18 -17
  183. package/chunks/{start-opentui-ui-WLWZNQ2I.js → start-opentui-ui-IHIIZ2LE.js} +438 -203
  184. package/chunks/{startInteractiveUI-FBQSGWGO.js → startInteractiveUI-LR7K2ARZ.js} +1171 -1234
  185. package/chunks/{task-create-PMAFST2T.js → task-create-MWXJFRRM.js} +3 -3
  186. package/chunks/{task-list-R2HSY2NC.js → task-list-EYO3FE57.js} +2 -2
  187. package/chunks/{task-update-JYC57USF.js → task-update-2JJJRHMT.js} +3 -3
  188. package/chunks/{team-create-VIGUFUT4.js → team-create-GY3VFY47.js} +10 -10
  189. package/chunks/{team-delete-CBHVBTPB.js → team-delete-IQZ6XGFI.js} +2 -2
  190. package/chunks/{team-plan-approval-HQVZA3MD.js → team-plan-approval-BQPGZOT5.js} +10 -10
  191. package/chunks/{terminal-image-renderer-LUKNCOVM.js → terminal-image-renderer-YNYW5CQG.js} +17 -16
  192. package/chunks/{theme-manager-LOENKYLY.js → theme-manager-U6CIK3GM.js} +17 -16
  193. package/chunks/{tool-search-ZIFAQCE2.js → tool-search-XI3QWD5I.js} +2 -2
  194. package/chunks/{total-session-admission-FUUJH3QH.js → total-session-admission-3SNSJJ32.js} +18 -17
  195. package/chunks/{trustedFolders-C76KYROP.js → trustedFolders-OVAQKNV5.js} +18 -17
  196. package/chunks/{update-relaunch-4G2SRXKX.js → update-relaunch-XV5O74E3.js} +5 -5
  197. package/chunks/{updateCheck-EIZIO7HI.js → updateCheck-CHUYWD6L.js} +17 -16
  198. package/chunks/{useAutoAcceptIndicator-EAA6KSY4.js → useAutoAcceptIndicator-VKSVIXZC.js} +23 -22
  199. package/chunks/{validateNonInterActiveAuth-BRX22QCN.js → validateNonInterActiveAuth-ZNUTD3E5.js} +53 -52
  200. package/chunks/{version-E56RU7PR.js → version-EK7VAGSI.js} +3 -1
  201. package/chunks/{web-fetch-AAUCD7RM.js → web-fetch-24KZO763.js} +2 -2
  202. package/chunks/{web-search-HFUQF44Q.js → web-search-CRNXKZ2X.js} +184 -7
  203. package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-BFDESDD4.js} +5 -4
  204. package/chunks/{workflow-3MABM53N.js → workflow-HD5NYMW5.js} +201 -65
  205. package/chunks/{workspace-providers-status-2FRLBZ5I.js → workspace-providers-status-MAM42IZS.js} +24 -23
  206. package/chunks/{workspace-registration-store-YL7HLYYI.js → workspace-registration-store-HKLJEDQX.js} +1 -2
  207. package/chunks/{workspace-registry-BNRP2ELW.js → workspace-registry-7RDDOBLN.js} +18 -17
  208. package/chunks/{workspace-runtime-coordinator-WKGF7VHS.js → workspace-runtime-coordinator-LEPDPXJO.js} +18 -17
  209. package/chunks/{workspace-service-4MYO72MM.js → workspace-service-5IFDCNN3.js} +23 -22
  210. package/chunks/{workspace-skills-status-SU66TJLZ.js → workspace-skills-status-FJ3HNH4H.js} +22 -21
  211. package/chunks/{workspace-trust-reconciler-D5QT7WQB.js → workspace-trust-reconciler-PQFHIWLR.js} +23 -22
  212. package/chunks/{write-file-NVPQE2AZ.js → write-file-ERG67ZFX.js} +11 -11
  213. package/chunks/{zoom-image-RJHC66WG.js → zoom-image-WQYEC3SR.js} +2 -2
  214. package/cli.js +12 -12
  215. package/export-transcript-document.js +82 -82
  216. package/package.json +4 -4
  217. package/web-shell/assets/{abnfDiagram-VCTEODGH-DHc6plZn.js → abnfDiagram-VCTEODGH-BRLgQbnT.js} +1 -1
  218. package/web-shell/assets/{arc-BQ9m8TDV.js → arc-qAF9_XsR.js} +1 -1
  219. package/web-shell/assets/{architectureDiagram-5GKGNRK7-D5ap3oVB.js → architectureDiagram-5GKGNRK7-BorUttEz.js} +1 -1
  220. package/web-shell/assets/{blockDiagram-NRAW4CY4-BIbnyNph.js → blockDiagram-NRAW4CY4-Bj0qZVxu.js} +1 -1
  221. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BRsdx_iG.js → c4Diagram-UCG6FXSJ-BTqJis32.js} +1 -1
  222. package/web-shell/assets/channel-COIuCrVH.js +1 -0
  223. package/web-shell/assets/{chunk-2Q5K7J3B-3lf1fNlx.js → chunk-2Q5K7J3B-RrQ5X8m-.js} +1 -1
  224. package/web-shell/assets/{chunk-5VM5RSS4-DP8VNRc4.js → chunk-5VM5RSS4-uUjDl8wO.js} +1 -1
  225. package/web-shell/assets/{chunk-F27PBJKO-DrohDmZ6.js → chunk-F27PBJKO-C3JhpyzI.js} +1 -1
  226. package/web-shell/assets/{chunk-G27WJ6UU-UZ2QhSx6.js → chunk-G27WJ6UU-C8ZNFs7F.js} +1 -1
  227. package/web-shell/assets/{chunk-JWPE2WC7-BIMHVcZK.js → chunk-JWPE2WC7-DNpXtEOs.js} +1 -1
  228. package/web-shell/assets/{chunk-LCL6LL3I-izRxdSDd.js → chunk-LCL6LL3I-DagA2ZLw.js} +1 -1
  229. package/web-shell/assets/{chunk-POPQ4Y6H-CXADD4PP.js → chunk-POPQ4Y6H-R23uH7Xm.js} +1 -1
  230. package/web-shell/assets/{chunk-SVP7TREG-B96d8Y_1.js → chunk-SVP7TREG-Qz9RN_BR.js} +1 -1
  231. package/web-shell/assets/{chunk-XXDRQBXY-CF2sVQpv.js → chunk-XXDRQBXY-jYb1_hni.js} +1 -1
  232. package/web-shell/assets/classDiagram-DTDB5LWJ-DoX6OYqu.js +1 -0
  233. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DoX6OYqu.js +1 -0
  234. package/web-shell/assets/{cose-bilkent-JH36ORCC-CT6tXVAS.js → cose-bilkent-JH36ORCC-Cv2OunpE.js} +1 -1
  235. package/web-shell/assets/{cynefin-OW5HDTMX-X1NS4vtV.js → cynefin-OW5HDTMX-LH42KFJx.js} +1 -1
  236. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DNsKNOT4.js → cynefinDiagram-5FMLGOSQ-Dha4_OoR.js} +1 -1
  237. package/web-shell/assets/{dagre-3AP2YEHR-9-AHKqsb.js → dagre-3AP2YEHR-Br5lnUKD.js} +1 -1
  238. package/web-shell/assets/{diagram-S7CK7UJ4-Bjgms7j6.js → diagram-S7CK7UJ4-dpKq2bBX.js} +1 -1
  239. package/web-shell/assets/{diagram-UQ7AKVKN-h6bCprbE.js → diagram-UQ7AKVKN-BAgHWpXr.js} +1 -1
  240. package/web-shell/assets/{diagram-VSXAHHWV-4SbQXVLt.js → diagram-VSXAHHWV-GRRzpyE2.js} +1 -1
  241. package/web-shell/assets/{diagram-VX7I27RA-B5gPCzzB.js → diagram-VX7I27RA-BNFiaYpG.js} +1 -1
  242. package/web-shell/assets/{diagram-Z3DM3KII-DFJXIA3A.js → diagram-Z3DM3KII-BisZzB_h.js} +1 -1
  243. package/web-shell/assets/{ebnfDiagram-PWID7BFC-FwyaU7VY.js → ebnfDiagram-PWID7BFC-B1xbwycf.js} +1 -1
  244. package/web-shell/assets/{erDiagram-SSCWMZ5O-8vJQh2te.js → erDiagram-SSCWMZ5O-CQMzbGE5.js} +1 -1
  245. package/web-shell/assets/{flowDiagram-A5DVABFB-BzA_1gMN.js → flowDiagram-A5DVABFB-CZ_Zondl.js} +1 -1
  246. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-Co-ABbVX.js → ganttDiagram-EL5Y4UJY-BTh2ShxS.js} +1 -1
  247. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DW_FcyrX.js → gitGraphDiagram-WWUBYQGX-oHOB-Uxt.js} +1 -1
  248. package/web-shell/assets/{index-Bu-rZoJ-.js → index-CI1ysIEv.js} +478 -474
  249. package/web-shell/assets/index-CpxXGH-8.css +36 -0
  250. package/web-shell/assets/{index-BbMXfhNG.js → index-DWoFMu5x.js} +1 -1
  251. package/web-shell/assets/{infoDiagram-RXCK75RN-BEgfhUFN.js → infoDiagram-RXCK75RN-C0QpudbG.js} +1 -1
  252. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DCsMxQmc.js → ishikawaDiagram-5VMMS53U-a6B741uT.js} +1 -1
  253. package/web-shell/assets/{journeyDiagram-EYS64GPL-DyIEYoHz.js → journeyDiagram-EYS64GPL-Dbht9ICp.js} +1 -1
  254. package/web-shell/assets/{kanban-definition-3QL26DDD-CkxjqCNr.js → kanban-definition-3QL26DDD-D4OFR8-h.js} +1 -1
  255. package/web-shell/assets/{layout-BEWc0Al9.js → layout-Dvdh5jRH.js} +1 -1
  256. package/web-shell/assets/{linear-CNuNxirL.js → linear-Dvc6KIW2.js} +1 -1
  257. package/web-shell/assets/{mermaid.core-DZBre674.js → mermaid.core-CB36RfIb.js} +6 -6
  258. package/web-shell/assets/{mindmap-definition-FBJOCRG2-CpafFz_F.js → mindmap-definition-FBJOCRG2-Fmqo1CjP.js} +1 -1
  259. package/web-shell/assets/{pegDiagram-XKGWAZYB-DfZqk_dq.js → pegDiagram-XKGWAZYB-CCxYBoA4.js} +1 -1
  260. package/web-shell/assets/{pieDiagram-E7YTZNPT-S0UWXlgC.js → pieDiagram-E7YTZNPT-BVHKQFzt.js} +1 -1
  261. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-dd37_Ohj.js → quadrantDiagram-AXDQQJYC-l95IznwR.js} +1 -1
  262. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CH8NJZ7u.js → railroadDiagram-O6MQD6OU-BlLdRdXp.js} +1 -1
  263. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CFdqWYih.js → requirementDiagram-EFPCY7ZU-BkDLBR5w.js} +1 -1
  264. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CsddcEGD.js → sankeyDiagram-P5KCCOFB-jAIqRp65.js} +1 -1
  265. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BZ270mGw.js → sequenceDiagram-WJ2MYXX4-f-soZYPr.js} +1 -1
  266. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CGaS4DBV.js → sizeCapture-X5ZJPWSS-BzOuAfB2.js} +1 -1
  267. package/web-shell/assets/{stateDiagram-HBIQ2CUA-COpIzMu6.js → stateDiagram-HBIQ2CUA-BPLSs12r.js} +1 -1
  268. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-IRul-LaT.js +1 -0
  269. package/web-shell/assets/{swimlanes-XN3QIQJK-CMF889m3.js → swimlanes-XN3QIQJK-D-9E_RIR.js} +1 -1
  270. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-D6lgKepA.js +8 -0
  271. package/web-shell/assets/{timeline-definition-24CTP7MA-BelnxYz5.js → timeline-definition-24CTP7MA-CT56K-gV.js} +1 -1
  272. package/web-shell/assets/{vennDiagram-4TSXK5OY-CU-NRqIB.js → vennDiagram-4TSXK5OY-B-vi4IyO.js} +1 -1
  273. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CDNKqWh-.js → wardleyDiagram-VM6X3IG4-C9O7Ju98.js} +1 -1
  274. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-CLqguL5D.js → xychartDiagram-S5SC5T6Z-6d8w3jg2.js} +1 -1
  275. package/web-shell/index.html +2 -2
  276. package/chunks/chunk-X35VIWWJ.js +0 -276
  277. package/web-shell/assets/channel-uMMdTrYk.js +0 -1
  278. package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +0 -1
  279. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +0 -1
  280. package/web-shell/assets/index-CsPwZ1ut.css +0 -36
  281. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +0 -1
  282. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +0 -8
@@ -15,16 +15,21 @@ import {
15
15
  getToolInvalidReasons,
16
16
  isToolValid,
17
17
  normalizeModelIds,
18
+ pickAsciiArtTier,
19
+ resolveCustomBanner,
20
+ shortAsciiLogo,
18
21
  useFollowupSuggestionsCLI,
22
+ useGitBranchName,
19
23
  useLogger,
24
+ usePhraseCycler,
20
25
  useProviderSetupFlow,
21
26
  writeTerminalTitle
22
- } from "./chunk-CPJRFFPH.js";
27
+ } from "./chunk-IRGDIDGJ.js";
23
28
  import "./chunk-CALNF3Z3.js";
24
- import "./chunk-4BLTSTF6.js";
29
+ import "./chunk-R3JIDRUL.js";
25
30
  import {
26
31
  startPostRenderPrefetches
27
- } from "./chunk-XBLG564H.js";
32
+ } from "./chunk-ZP5XDLSA.js";
28
33
  import {
29
34
  STATUS_LINE_PRESET_ITEMS,
30
35
  SessionStatsProvider,
@@ -37,16 +42,18 @@ import {
37
42
  getStatusColor,
38
43
  keyMatchers,
39
44
  useSessionStats
40
- } from "./chunk-VH764G6B.js";
45
+ } from "./chunk-B25JYXZE.js";
41
46
  import {
42
47
  ICON,
48
+ SPINNER_FRAMES,
49
+ SPINNER_INTERVAL_MS,
43
50
  applyCollapsePolicyAndSummary,
44
51
  buildResumedHistoryItems,
45
52
  coalesceFindingsHistoryItems,
46
53
  isFindingsListDisplay,
47
54
  shouldDisplayGoalStateCause,
48
55
  waitForGoalRuntime
49
- } from "./chunk-ULY4ISY2.js";
56
+ } from "./chunk-WXD7INFV.js";
50
57
  import {
51
58
  stopAndGetCapturedInput
52
59
  } from "./chunk-EWNKP4V4.js";
@@ -57,7 +64,7 @@ import {
57
64
  MAX_SUGGESTIONS_TO_SHOW,
58
65
  handleAtCommand,
59
66
  sanitizeDisplayText
60
- } from "./chunk-QXXBW2G4.js";
67
+ } from "./chunk-4JNHNVAZ.js";
61
68
  import {
62
69
  BuiltinCommandLoader,
63
70
  BundledSkillLoader,
@@ -72,6 +79,7 @@ import {
72
79
  applyOutputStyleSelection,
73
80
  buildBackgroundWorkBlockedMessage,
74
81
  findMidInputSlashCommand,
82
+ formatApprovalModeName,
75
83
  formatUserPromptExpansionBlockedMessage,
76
84
  hasBlockingBackgroundWork,
77
85
  hasSlashCommandPathSeparator,
@@ -89,18 +97,18 @@ import {
89
97
  refreshExtensionContentRuntime,
90
98
  resetBackgroundStateForSessionSwitch,
91
99
  serializeUserPromptExpansionPrompt
92
- } from "./chunk-ODBNTMZW.js";
100
+ } from "./chunk-FAJPLSYF.js";
93
101
  import {
94
102
  EXTENSION_RELOAD_FAILED_REASON,
95
103
  ExtensionRefreshState
96
- } from "./chunk-WZ4YULVF.js";
104
+ } from "./chunk-3OAXF3UK.js";
97
105
  import {
98
106
  formatSupportedModes,
99
107
  getCommandDisplayName,
100
108
  getCommandSourceBadge,
101
109
  getCommandSourceGroup,
102
110
  getCommandSubcommandNames
103
- } from "./chunk-QJAFSFYA.js";
111
+ } from "./chunk-CWVZBIZJ.js";
104
112
  import {
105
113
  calculateCost,
106
114
  computeSessionStats,
@@ -108,10 +116,12 @@ import {
108
116
  getSystemInfoFields,
109
117
  levelLabel,
110
118
  redactProxy
111
- } from "./chunk-W3ONSAYO.js";
119
+ } from "./chunk-TOOOLHVS.js";
112
120
  import {
113
- formatDuration
114
- } from "./chunk-3SH53ANB.js";
121
+ contextUsageLabel,
122
+ formatDuration,
123
+ formatPercentageUsed
124
+ } from "./chunk-22GORRNY.js";
115
125
  import "./chunk-NYX53SV4.js";
116
126
  import {
117
127
  CTRL_EXIT_PROMPT_DURATION_MS,
@@ -119,7 +129,7 @@ import {
119
129
  clipboardHasImage,
120
130
  saveClipboardImage
121
131
  } from "./chunk-UYDQYDW2.js";
122
- import "./chunk-7L35FKPF.js";
132
+ import "./chunk-2BMXHB6N.js";
123
133
  import "./chunk-4WGODMVR.js";
124
134
  import "./chunk-4LIPOIXS.js";
125
135
  import {
@@ -136,33 +146,35 @@ import {
136
146
  import {
137
147
  require_react
138
148
  } from "./chunk-5QWWOFGG.js";
139
- import "./chunk-W673V2H3.js";
149
+ import "./chunk-46MMBZHI.js";
140
150
  import {
141
151
  getErrorMessage as getErrorMessage2
142
- } from "./chunk-VEQBVJYH.js";
143
- import "./chunk-CG2PDIGD.js";
152
+ } from "./chunk-R457KFV7.js";
153
+ import "./chunk-RM244SCQ.js";
144
154
  import "./chunk-XQ4RDO5B.js";
145
155
  import {
146
156
  setUpdateHandler
147
- } from "./chunk-VHPG7BH6.js";
157
+ } from "./chunk-PDN7FJZV.js";
148
158
  import "./chunk-EKTCKZV5.js";
149
- import "./chunk-LUVXLLMS.js";
159
+ import "./chunk-IR6JKBAP.js";
150
160
  import "./chunk-YAF2MQZ6.js";
151
161
  import "./chunk-24FVUD5P.js";
152
- import "./chunk-QLM7D7W3.js";
162
+ import "./chunk-QFJZAY7W.js";
153
163
  import "./chunk-6H67XLET.js";
154
- import "./chunk-UULHYZ4W.js";
164
+ import "./chunk-WDN64MVT.js";
155
165
  import "./chunk-M3JGHRMQ.js";
156
166
  import "./chunk-VFFQAOPR.js";
157
167
  import "./chunk-ERXNTINK.js";
158
168
  import {
159
169
  cpLen,
160
170
  escapeAnsiCtrlCodes,
171
+ getAsciiArtWidth,
161
172
  getCachedStringWidth,
162
173
  sanitizeMultilineForDisplay,
163
174
  sanitizeSensitiveText,
164
175
  sanitizeTerminalText,
165
- toCodePoints
176
+ toCodePoints,
177
+ truncateToWidth
166
178
  } from "./chunk-47ECGEJC.js";
167
179
  import "./chunk-2MIN6GRR.js";
168
180
  import "./chunk-QHTIBUWB.js";
@@ -181,47 +193,47 @@ import {
181
193
  import "./chunk-Y53DG2HA.js";
182
194
  import {
183
195
  getExtendedSystemInfo
184
- } from "./chunk-EA4NFWVG.js";
185
- import "./chunk-R2266LQ5.js";
196
+ } from "./chunk-5OZUKLL7.js";
197
+ import "./chunk-4WMGYG3F.js";
186
198
  import "./chunk-7U5G6JXI.js";
187
199
  import "./chunk-WCCLLK7X.js";
188
200
  import {
189
201
  getReasoningEffortsForConfig
190
- } from "./chunk-2OR32P5M.js";
191
- import "./chunk-7GZCCHJL.js";
202
+ } from "./chunk-ZN5TKAVR.js";
203
+ import "./chunk-7LTCFO6T.js";
192
204
  import "./chunk-HWVUSYSN.js";
193
- import "./chunk-5WC2ECUK.js";
194
- import "./chunk-4JKLPTV6.js";
195
- import "./chunk-ORREXWOM.js";
205
+ import "./chunk-7PD7ZMX5.js";
206
+ import "./chunk-G3ZUMSFS.js";
207
+ import "./chunk-TODNHE76.js";
196
208
  import "./chunk-57OAHC2Y.js";
197
- import "./chunk-UXDVUFKU.js";
198
- import "./chunk-UHUT4IDM.js";
199
- import "./chunk-3BTHHXXE.js";
209
+ import "./chunk-ULZECEIP.js";
210
+ import "./chunk-PFKGV6PO.js";
211
+ import "./chunk-AUTUFD5X.js";
200
212
  import "./chunk-V6WHFGST.js";
201
213
  import {
202
214
  createLoadedSettingsAdapter
203
- } from "./chunk-NVS4Z6GT.js";
204
- import "./chunk-45ROPFQY.js";
215
+ } from "./chunk-QHLHE2OT.js";
216
+ import "./chunk-JYGIJA4W.js";
205
217
  import "./chunk-2AUM35J5.js";
206
218
  import "./chunk-N6VQ37ZZ.js";
207
219
  import "./chunk-PSPAM24S.js";
208
220
  import "./chunk-6PLDPT2C.js";
209
221
  import "./chunk-FYJ7W2PI.js";
210
222
  import "./chunk-STUJ7IMZ.js";
211
- import "./chunk-GM44O6F7.js";
223
+ import "./chunk-DARWOZY6.js";
212
224
  import "./chunk-GYTKQYDB.js";
213
225
  import "./chunk-ALMR3E6Q.js";
214
226
  import "./chunk-RKFGE7JH.js";
215
227
  import "./chunk-UDG5EZJI.js";
216
228
  import "./chunk-M5GB774H.js";
217
229
  import "./chunk-3VUENPWF.js";
218
- import "./chunk-XVTCSVBK.js";
230
+ import "./chunk-TGNNLRC3.js";
231
+ import "./chunk-WDVV3LRM.js";
219
232
  import "./chunk-IW6RQPQB.js";
220
- import "./chunk-5HBA2Z7V.js";
221
- import "./chunk-X35VIWWJ.js";
233
+ import "./chunk-NFXXBWSE.js";
222
234
  import {
223
235
  loadMcpApprovals
224
- } from "./chunk-W7PXLIZJ.js";
236
+ } from "./chunk-RNAJVXUG.js";
225
237
  import {
226
238
  getDefaultValue,
227
239
  getDialogSettingKeys,
@@ -233,14 +245,15 @@ import {
233
245
  getSettingDefinition,
234
246
  isAutoLanguage,
235
247
  isDefaultValue,
248
+ nextBooleanSettingValue,
236
249
  requiresRestart,
237
250
  saveModifiedSettings,
238
251
  setPendingSettingValueAny,
239
252
  validateSettingValue
240
- } from "./chunk-Q2F43WTJ.js";
253
+ } from "./chunk-WBU2PIZ5.js";
241
254
  import {
242
255
  TOGGLE_TYPES
243
- } from "./chunk-MWEF5MUK.js";
256
+ } from "./chunk-XSOXPG2L.js";
244
257
  import "./chunk-RKUWKYED.js";
245
258
  import "./chunk-BW4333PP.js";
246
259
  import "./chunk-IDS7MSUP.js";
@@ -248,50 +261,53 @@ import {
248
261
  t
249
262
  } from "./chunk-CRZBDVP2.js";
250
263
  import "./chunk-5EJZE3FP.js";
251
- import "./chunk-Y6ZWXM44.js";
264
+ import "./chunk-5BH2AIEY.js";
252
265
  import "./chunk-QTNCGZHQ.js";
253
266
  import "./chunk-2EAZ43JQ.js";
254
267
  import "./chunk-NF5J2WFA.js";
255
268
  import {
269
+ formatVersionLabel,
256
270
  getCliVersion
257
- } from "./chunk-ISPBBKJN.js";
271
+ } from "./chunk-MV5DTLJV.js";
258
272
  import "./chunk-W3N5XAZ6.js";
259
- import "./chunk-7RXOEUFF.js";
273
+ import "./chunk-NX7ZTXFF.js";
260
274
  import "./chunk-NPQ5ZKRP.js";
261
275
  import "./chunk-MR3PXB6E.js";
262
276
  import {
263
- ALIBABA_PROVIDERS,
264
277
  FileSearchFactory,
265
278
  Fzf,
266
- THIRD_PARTY_PROVIDERS,
267
279
  applyProviderInstallPlan,
268
- buildInstallPlan,
269
280
  buildSessionRecoveryPlan,
270
- customProvider,
271
- findExistingProviderModels,
272
- findProviderByCredentials,
273
- findProviderById,
274
- generatePromptSuggestion,
275
- getDefaultModelIds,
276
- resolveMetadataKey
277
- } from "./chunk-BL6B2QS2.js";
281
+ generatePromptSuggestion
282
+ } from "./chunk-GOEVQADN.js";
278
283
  import "./chunk-GELRJXE2.js";
279
284
  import "./chunk-32CM56LO.js";
280
- import "./chunk-G5QLLD53.js";
285
+ import "./chunk-OXR34GCD.js";
281
286
  import "./chunk-XFSFZCM5.js";
282
287
  import "./chunk-2EKVPSIJ.js";
283
288
  import "./chunk-LJZSMWOH.js";
284
289
  import "./chunk-YZTGGCEE.js";
285
- import "./chunk-DCPRCDSR.js";
290
+ import {
291
+ ALIBABA_PROVIDERS,
292
+ THIRD_PARTY_PROVIDERS,
293
+ buildInstallPlan,
294
+ customProvider,
295
+ findExistingProviderModels,
296
+ findProviderByCredentials,
297
+ findProviderById,
298
+ getDefaultModelIds,
299
+ resolveMetadataKey
300
+ } from "./chunk-2WC3Y7YY.js";
301
+ import "./chunk-IWABUX6T.js";
286
302
  import "./chunk-DJXSOEFB.js";
287
- import "./chunk-LN3WBOKU.js";
303
+ import "./chunk-YQGW3M6Z.js";
288
304
  import "./chunk-J3VZF2AL.js";
289
305
  import "./chunk-OWCFKIFQ.js";
290
306
  import "./chunk-ZPJWUGCS.js";
291
- import "./chunk-5Z4FCEPY.js";
307
+ import "./chunk-X7LFJF5D.js";
292
308
  import "./chunk-BUQN5LTI.js";
293
309
  import "./chunk-XDNFODER.js";
294
- import "./chunk-XI7RST4D.js";
310
+ import "./chunk-GOKAOSCN.js";
295
311
  import "./chunk-VNOVK4I7.js";
296
312
  import {
297
313
  CoreToolScheduler,
@@ -322,15 +338,15 @@ import {
322
338
  parseRule,
323
339
  parseVisionModelSetting,
324
340
  refreshMemoryInstruction
325
- } from "./chunk-43CI6YWJ.js";
341
+ } from "./chunk-HJ5UJQQL.js";
326
342
  import "./chunk-GOFAQQZA.js";
327
343
  import "./chunk-65I7S4Z3.js";
328
344
  import "./chunk-6HUXPLB5.js";
329
345
  import "./chunk-TWPJO254.js";
330
346
  import "./chunk-CQ35AJ4Z.js";
331
- import "./chunk-YHDGABDC.js";
347
+ import "./chunk-XKBFYTCD.js";
332
348
  import "./chunk-LYT2OU7D.js";
333
- import "./chunk-B54PFQS5.js";
349
+ import "./chunk-7CLLH5TI.js";
334
350
  import {
335
351
  writeRuntimeStatus
336
352
  } from "./chunk-HIXUUCGY.js";
@@ -338,7 +354,7 @@ import "./chunk-6PVPNMXU.js";
338
354
  import {
339
355
  resolveModelId
340
356
  } from "./chunk-565U2ANU.js";
341
- import "./chunk-FDOGGKAA.js";
357
+ import "./chunk-GSFV5RQW.js";
342
358
  import "./chunk-IRH27ZC2.js";
343
359
  import "./chunk-QHWCP53L.js";
344
360
  import "./chunk-F53KKZUD.js";
@@ -354,8 +370,8 @@ import {
354
370
  import "./chunk-QAZ2MGYT.js";
355
371
  import {
356
372
  registerSession
357
- } from "./chunk-B44JBZBB.js";
358
- import "./chunk-BF3RUIVP.js";
373
+ } from "./chunk-QQK4L3UU.js";
374
+ import "./chunk-CH2YDT6X.js";
359
375
  import {
360
376
  APPROVAL_MODES
361
377
  } from "./chunk-JX6XHPTX.js";
@@ -366,7 +382,7 @@ import "./chunk-MLXTMF7H.js";
366
382
  import "./chunk-3LPJ776W.js";
367
383
  import "./chunk-3CZ2BQV6.js";
368
384
  import "./chunk-PQEISIKS.js";
369
- import "./chunk-VF6D6EGV.js";
385
+ import "./chunk-S5QR6CB5.js";
370
386
  import "./chunk-H3Q3RSKZ.js";
371
387
  import "./chunk-S6LOFUVP.js";
372
388
  import "./chunk-NAVJD2PQ.js";
@@ -377,7 +393,7 @@ import "./chunk-CFKIH3D3.js";
377
393
  import {
378
394
  REASONING_EFFORT_TIERS,
379
395
  applyReasoningEffort
380
- } from "./chunk-6YEOCHSE.js";
396
+ } from "./chunk-VBLAI2HA.js";
381
397
  import "./chunk-DJ2GSRLV.js";
382
398
  import "./chunk-4ALNJDHL.js";
383
399
  import "./chunk-NOO4QFXM.js";
@@ -406,7 +422,7 @@ import {
406
422
  shouldRunVisionBridge,
407
423
  splitImageParts,
408
424
  uiTelemetryService
409
- } from "./chunk-OIPUQE3S.js";
425
+ } from "./chunk-F2NYVASI.js";
410
426
  import "./chunk-5ETULJLP.js";
411
427
  import "./chunk-XBVNNDPK.js";
412
428
  import "./chunk-VGC4I5JJ.js";
@@ -420,7 +436,7 @@ import "./chunk-HD7O6WLV.js";
420
436
  import "./chunk-WZAD4ZNJ.js";
421
437
  import "./chunk-FPGTNKCP.js";
422
438
  import "./chunk-TIGXX4PA.js";
423
- import "./chunk-DTB5BXRG.js";
439
+ import "./chunk-JO77FGNZ.js";
424
440
  import "./chunk-XFFRI3WM.js";
425
441
  import "./chunk-4HOEU2OR.js";
426
442
  import "./chunk-HHJLM3WQ.js";
@@ -445,14 +461,16 @@ import {
445
461
  createDebugLogger,
446
462
  escapePath,
447
463
  getErrorMessage,
448
- isDebugLogFileEnabled
464
+ isDebugLogFileEnabled,
465
+ shortenPath,
466
+ tildeifyPath
449
467
  } from "./chunk-ZAFYHRVY.js";
450
- import "./chunk-L6ZME3W7.js";
468
+ import "./chunk-CMWU6P4D.js";
451
469
  import "./chunk-HRPFBHW7.js";
452
470
  import {
453
471
  registerCleanup,
454
472
  runExitCleanup
455
- } from "./chunk-JDPBJIKI.js";
473
+ } from "./chunk-DAI65CMX.js";
456
474
  import {
457
475
  profileCheckpoint
458
476
  } from "./chunk-QILD6R27.js";
@@ -504,7 +522,7 @@ var require_jsx_dev_runtime = __commonJS({
504
522
 
505
523
  // packages/cli/src/ui/opentui/start-opentui-ui.tsx
506
524
  init_esbuild_shims();
507
- var import_react55 = __toESM(require_react(), 1);
525
+ var import_react59 = __toESM(require_react(), 1);
508
526
  import { stat as stat2 } from "node:fs/promises";
509
527
  import { basename as basename3 } from "node:path";
510
528
 
@@ -8533,12 +8551,12 @@ function resolveWorkerImportSpecifier(specifier) {
8533
8551
  if (isRuntimeSpecifier(specifier)) {
8534
8552
  return specifier;
8535
8553
  }
8536
- const nodePath2 = getBuiltinModule("node:path");
8554
+ const nodePath3 = getBuiltinModule("node:path");
8537
8555
  const nodeUrl = getBuiltinModule("node:url");
8538
- if (!nodePath2 || !nodeUrl) {
8556
+ if (!nodePath3 || !nodeUrl) {
8539
8557
  throw new Error(WORKER_UNAVAILABLE);
8540
8558
  }
8541
- const absolutePath = nodePath2.isAbsolute(specifier) ? specifier : nodePath2.resolve(specifier);
8559
+ const absolutePath = nodePath3.isAbsolute(specifier) ? specifier : nodePath3.resolve(specifier);
8542
8560
  return nodeUrl.pathToFileURL(absolutePath).href;
8543
8561
  }
8544
8562
  __name(resolveWorkerImportSpecifier, "resolveWorkerImportSpecifier");
@@ -41024,7 +41042,7 @@ __name(useUpdateNoticeFlush, "useUpdateNoticeFlush");
41024
41042
 
41025
41043
  // packages/cli/src/ui/opentui/opentui-app-shell.tsx
41026
41044
  init_esbuild_shims();
41027
- var import_react50 = __toESM(require_react(), 1);
41045
+ var import_react54 = __toESM(require_react(), 1);
41028
41046
 
41029
41047
  // packages/cli/src/ui/opentui/opentui-host.ts
41030
41048
  init_esbuild_shims();
@@ -47184,7 +47202,7 @@ __name(filterSettingsItems, "filterSettingsItems");
47184
47202
  function nextToggleValue(definition, currentValue) {
47185
47203
  if (!definition || !TOGGLE_TYPES.has(definition.type)) return void 0;
47186
47204
  if (definition.type === "boolean") {
47187
- return !currentValue;
47205
+ return nextBooleanSettingValue(currentValue, definition.default);
47188
47206
  }
47189
47207
  if (definition.type === "enum" && definition.options) {
47190
47208
  const options = definition.options;
@@ -53464,9 +53482,212 @@ ${current}` : popped);
53464
53482
  }
53465
53483
  __name(OpenTuiInputPrompt, "OpenTuiInputPrompt");
53466
53484
 
53467
- // packages/cli/src/ui/opentui/dialogs-confirm.tsx
53485
+ // packages/cli/src/ui/opentui/opentui-header.tsx
53468
53486
  init_esbuild_shims();
53469
53487
  var import_react48 = __toESM(require_react(), 1);
53488
+ var LOGO_GRADIENT = ["#4796E4", "#847ACE", "#C3677F"];
53489
+ function lerpHex(a, b3, t3) {
53490
+ const pa = [1, 3, 5].map((i) => parseInt(a.slice(i, i + 2), 16));
53491
+ const pb = [1, 3, 5].map((i) => parseInt(b3.slice(i, i + 2), 16));
53492
+ return "#" + pa.map(
53493
+ (v3, i) => Math.round(v3 + (pb[i] - v3) * t3).toString(16).padStart(2, "0")
53494
+ ).join("");
53495
+ }
53496
+ __name(lerpHex, "lerpHex");
53497
+ function gradientAt(stops, t3) {
53498
+ if (stops.length === 0) return C2.accent;
53499
+ if (stops.length === 1) return stops[0];
53500
+ const seg = Math.min(stops.length - 1, Math.floor(t3 * (stops.length - 1)));
53501
+ const lt = t3 * (stops.length - 1) - seg;
53502
+ return lerpHex(stops[seg], stops[seg + 1], lt);
53503
+ }
53504
+ __name(gradientAt, "gradientAt");
53505
+ function GradientLogo({ logo }) {
53506
+ const lines = logo.replace(/^\n/, "").split("\n");
53507
+ const w3 = Math.max(...lines.map((l) => [...l].length), 1);
53508
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { flexDirection: "column", flexShrink: 0, children: lines.map((line, li) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { flexDirection: "row", children: [...line].map((ch, ci) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: gradientAt(LOGO_GRADIENT, ci / w3), children: ch }, ci)) }, li)) });
53509
+ }
53510
+ __name(GradientLogo, "GradientLogo");
53511
+ function buildBanner(config, settings, width) {
53512
+ const versionLabel = formatVersionLabel(config.getCliVersion() ?? "unknown");
53513
+ const cg = config.getContentGeneratorConfig();
53514
+ const model = config.getModelDisplayName();
53515
+ const targetDir = config.getTargetDir();
53516
+ let authLabel = "";
53517
+ try {
53518
+ if (cg?.authType) {
53519
+ const matched = findProviderByCredentials(cg.baseUrl, cg.apiKeyEnvKey);
53520
+ authLabel = matched && resolveMetadataKey(matched) && matched.label || (cg.authType === "qwen-oauth" ? "Qwen OAuth" : "API Key");
53521
+ }
53522
+ } catch {
53523
+ authLabel = "";
53524
+ }
53525
+ const authModelText = authLabel ? `${authLabel} | ${model}` : model;
53526
+ const hint = " (/model to change)";
53527
+ const custom = resolveCustomBanner(settings);
53528
+ const containerMarginX = 2;
53529
+ const logoGap = 2;
53530
+ const infoPanelChromeWidth = 2 + 1 * 2;
53531
+ const minInfoPanelWidth = 40 + infoPanelChromeWidth;
53532
+ const available = Math.max(0, width - containerMarginX * 2);
53533
+ const hasCustomArt = Boolean(custom.asciiArt.small || custom.asciiArt.large);
53534
+ const customTier = pickAsciiArtTier(
53535
+ custom.asciiArt.small,
53536
+ custom.asciiArt.large,
53537
+ available,
53538
+ logoGap,
53539
+ minInfoPanelWidth,
53540
+ getAsciiArtWidth
53541
+ );
53542
+ const displayLogo = customTier ?? (hasCustomArt ? "" : shortAsciiLogo);
53543
+ const logoWidth = getAsciiArtWidth(displayLogo);
53544
+ const showLogo = displayLogo !== "" && available >= logoWidth + logoGap + minInfoPanelWidth;
53545
+ const maxInfoPanelWidth = 60;
53546
+ const infoPanelWidth = showLogo ? Math.min(available - logoWidth - logoGap, maxInfoPanelWidth) : available;
53547
+ const maxPathLength = Math.max(0, infoPanelWidth - infoPanelChromeWidth);
53548
+ const infoPanelContentWidth = Math.max(
53549
+ 0,
53550
+ infoPanelWidth - infoPanelChromeWidth
53551
+ );
53552
+ const showModelHint = infoPanelContentWidth > 0 && getCachedStringWidth(authModelText + hint) <= infoPanelContentWidth;
53553
+ const shortenedPath = shortenPath(
53554
+ tildeifyPath(targetDir),
53555
+ Math.max(3, maxPathLength)
53556
+ );
53557
+ const displayPath = maxPathLength <= 0 ? "" : shortenedPath.length > maxPathLength ? shortenedPath.slice(0, maxPathLength) : shortenedPath;
53558
+ const infoPanel = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
53559
+ "box",
53560
+ {
53561
+ flexDirection: "column",
53562
+ borderStyle: "single",
53563
+ paddingX: 1,
53564
+ width: infoPanelWidth,
53565
+ flexGrow: showLogo ? 0 : 1,
53566
+ children: [
53567
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "row", children: [
53568
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.accent, attributes: 1, children: custom.title ?? ">_ Qwen Code" }),
53569
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: ` (${versionLabel})` })
53570
+ ] }),
53571
+ custom.subtitle ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: custom.subtitle }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { children: " " }),
53572
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "row", children: [
53573
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: authModelText }),
53574
+ showModelHint && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: hint })
53575
+ ] }),
53576
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: displayPath })
53577
+ ]
53578
+ }
53579
+ );
53580
+ if (!showLogo) {
53581
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
53582
+ "box",
53583
+ {
53584
+ marginLeft: containerMarginX,
53585
+ marginRight: containerMarginX,
53586
+ flexShrink: 0,
53587
+ children: infoPanel
53588
+ }
53589
+ );
53590
+ }
53591
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
53592
+ "box",
53593
+ {
53594
+ flexDirection: "row",
53595
+ alignItems: "center",
53596
+ marginLeft: containerMarginX,
53597
+ marginRight: containerMarginX,
53598
+ flexShrink: 0,
53599
+ children: [
53600
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(GradientLogo, { logo: displayLogo }),
53601
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { width: logoGap }),
53602
+ infoPanel
53603
+ ]
53604
+ }
53605
+ );
53606
+ }
53607
+ __name(buildBanner, "buildBanner");
53608
+ function OpenTuiBanner({ config, settings }) {
53609
+ const { width } = useTerminalDimensions();
53610
+ const showBanner = !config.getScreenReader() && !settings.merged.ui?.hideBanner;
53611
+ const banner = (0, import_react48.useMemo)(
53612
+ () => showBanner ? buildBanner(config, settings, width) : null,
53613
+ [showBanner, config, settings, width]
53614
+ );
53615
+ return banner;
53616
+ }
53617
+ __name(OpenTuiBanner, "OpenTuiBanner");
53618
+
53619
+ // packages/cli/src/ui/opentui/opentui-footer.tsx
53620
+ init_esbuild_shims();
53621
+ var import_react50 = __toESM(require_react(), 1);
53622
+ import nodePath2 from "node:path";
53623
+ function Spinner() {
53624
+ const [frame, setFrame] = (0, import_react50.useState)(0);
53625
+ (0, import_react50.useEffect)(() => {
53626
+ const spin = setInterval(() => setFrame((f2) => f2 + 1), SPINNER_INTERVAL_MS);
53627
+ return () => clearInterval(spin);
53628
+ }, []);
53629
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { width: 2, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: SPINNER_FRAMES[frame % SPINNER_FRAMES.length] }) });
53630
+ }
53631
+ __name(Spinner, "Spinner");
53632
+ function OpenTuiLoadingIndicator({
53633
+ streaming
53634
+ }) {
53635
+ const [elapsed, setElapsed] = (0, import_react50.useState)(0);
53636
+ const { width } = useTerminalDimensions();
53637
+ const phrase = usePhraseCycler(streaming, false);
53638
+ (0, import_react50.useEffect)(() => {
53639
+ if (!streaming) return;
53640
+ setElapsed(0);
53641
+ const tick = setInterval(() => setElapsed((s) => s + 1), 1e3);
53642
+ return () => clearInterval(tick);
53643
+ }, [streaming]);
53644
+ if (!streaming) return null;
53645
+ const suffix2 = t("({{time}}{{tokens}} \xB7 esc to cancel)", {
53646
+ time: `${elapsed}s`,
53647
+ tokens: ""
53648
+ });
53649
+ const phraseBudget = Math.max(0, width - 5 - getCachedStringWidth(suffix2));
53650
+ const line = [truncateToWidth(phrase, phraseBudget), suffix2].filter(Boolean).join(" ");
53651
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { paddingLeft: 1, paddingRight: 1, flexDirection: "row", children: [
53652
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Spinner, {}),
53653
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: line })
53654
+ ] });
53655
+ }
53656
+ __name(OpenTuiLoadingIndicator, "OpenTuiLoadingIndicator");
53657
+ function OpenTuiFooter({
53658
+ config,
53659
+ streaming,
53660
+ queueLength = 0,
53661
+ sessionName = null,
53662
+ approvalMode
53663
+ }) {
53664
+ const { width } = useTerminalDimensions();
53665
+ const targetDir = config.getTargetDir();
53666
+ const gitBranch = useGitBranchName(targetDir) ?? "";
53667
+ const footerModel = config.getModel();
53668
+ const promptTokenCount = uiTelemetryService.getLastPromptTokenCount();
53669
+ const contextWindowSize = config.getContentGeneratorConfig()?.contextWindowSize;
53670
+ const contextLabel = contextWindowSize && promptTokenCount > 0 ? ` \xB7 ${fmtTokens(contextWindowSize)} ${formatPercentageUsed(
53671
+ promptTokenCount / contextWindowSize
53672
+ )}${contextUsageLabel(width)}` : "";
53673
+ const footerLine1 = `\u279C ${nodePath2.basename(targetDir)}` + (sessionName ? ` \xB7 ${sessionName}` : "") + (gitBranch ? ` \xB7 git:(${gitBranch})` : "") + (footerModel ? ` \xB7 ${footerModel}` : "") + contextLabel;
53674
+ const hintSegments = [
53675
+ streaming ? t("Enter to steer \xB7 Ctrl+Q to queue") : null,
53676
+ approvalMode ? formatApprovalModeName(approvalMode) : null,
53677
+ queueLength > 0 ? `\u23F3 ${t("{{count}} queued", { count: String(queueLength) })}` : null
53678
+ ].filter((segment) => segment !== null);
53679
+ const footerLine2 = hintSegments.join(" \xB7 ");
53680
+ const rowBudget = Math.max(0, width - 2);
53681
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", paddingLeft: 1, paddingRight: 1, flexShrink: 0, children: [
53682
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: truncateToWidth(footerLine1, rowBudget) }),
53683
+ footerLine2 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: truncateToWidth(footerLine2, rowBudget) })
53684
+ ] });
53685
+ }
53686
+ __name(OpenTuiFooter, "OpenTuiFooter");
53687
+
53688
+ // packages/cli/src/ui/opentui/dialogs-confirm.tsx
53689
+ init_esbuild_shims();
53690
+ var import_react52 = __toESM(require_react(), 1);
53470
53691
 
53471
53692
  // packages/cli/src/ui/opentui/diff-render.ts
53472
53693
  init_esbuild_shims();
@@ -53587,7 +53808,7 @@ function buildOutcomeOptions(details) {
53587
53808
  }
53588
53809
  __name(buildOutcomeOptions, "buildOutcomeOptions");
53589
53810
  function DiffBody({ fileDiff }) {
53590
- const lines = (0, import_react48.useMemo)(() => renderDiffBody(fileDiff), [fileDiff]);
53811
+ const lines = (0, import_react52.useMemo)(() => renderDiffBody(fileDiff), [fileDiff]);
53591
53812
  const window = tailWindow(lines, MAX_BODY_ROWS);
53592
53813
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", children: [
53593
53814
  window.hiddenCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -53602,14 +53823,14 @@ function DiffBody({ fileDiff }) {
53602
53823
  }
53603
53824
  __name(DiffBody, "DiffBody");
53604
53825
  function TextBody({ text }) {
53605
- const [expanded, setExpanded] = (0, import_react48.useState)(false);
53826
+ const [expanded, setExpanded] = (0, import_react52.useState)(false);
53606
53827
  const { width, height } = useTerminalDimensions();
53607
- const rows = (0, import_react48.useMemo)(() => sanitizeTerminalText(text).split("\n"), [text]);
53608
- const window = (0, import_react48.useMemo)(
53828
+ const rows = (0, import_react52.useMemo)(() => sanitizeTerminalText(text).split("\n"), [text]);
53829
+ const window = (0, import_react52.useMemo)(
53609
53830
  () => headWindowPhysical(rows, width, MAX_BODY_ROWS),
53610
53831
  [rows, width]
53611
53832
  );
53612
- const expandedWindow = (0, import_react48.useMemo)(
53833
+ const expandedWindow = (0, import_react52.useMemo)(
53613
53834
  () => tailWindowPhysical(
53614
53835
  rows,
53615
53836
  width,
@@ -53691,7 +53912,7 @@ function ConfirmationBody({
53691
53912
  }
53692
53913
  __name(ConfirmationBody, "ConfirmationBody");
53693
53914
  function OutcomeSelect(props) {
53694
- const items = (0, import_react48.useMemo)(
53915
+ const items = (0, import_react52.useMemo)(
53695
53916
  () => props.options.map((option, index) => ({
53696
53917
  key: `${option.value}-${index}`,
53697
53918
  value: option.value,
@@ -53724,8 +53945,8 @@ __name(OutcomeSelect, "OutcomeSelect");
53724
53945
  function OpenTuiToolConfirmation(props) {
53725
53946
  const { call, onSettled } = props;
53726
53947
  const details = call.confirmationDetails;
53727
- const settledRef = (0, import_react48.useRef)(false);
53728
- const settle = (0, import_react48.useCallback)(
53948
+ const settledRef = (0, import_react52.useRef)(false);
53949
+ const settle = (0, import_react52.useCallback)(
53729
53950
  (outcome, payload) => {
53730
53951
  if (settledRef.current) return;
53731
53952
  settledRef.current = true;
@@ -53779,12 +54000,12 @@ function OpenTuiToolConfirmation(props) {
53779
54000
  __name(OpenTuiToolConfirmation, "OpenTuiToolConfirmation");
53780
54001
  function AskUserQuestionFlow(props) {
53781
54002
  const { details, onAnswered } = props;
53782
- const [index, setIndex] = (0, import_react48.useState)(0);
53783
- const [answers, setAnswers] = (0, import_react48.useState)({});
53784
- const [selected, setSelected] = (0, import_react48.useState)(/* @__PURE__ */ new Set());
54003
+ const [index, setIndex] = (0, import_react52.useState)(0);
54004
+ const [answers, setAnswers] = (0, import_react52.useState)({});
54005
+ const [selected, setSelected] = (0, import_react52.useState)(/* @__PURE__ */ new Set());
53785
54006
  const question = details.questions[index];
53786
54007
  const isMulti = question?.multiSelect === true;
53787
- const commitQuestion = (0, import_react48.useCallback)(
54008
+ const commitQuestion = (0, import_react52.useCallback)(
53788
54009
  (value) => {
53789
54010
  if (value === void 0) return;
53790
54011
  const nextAnswers = { ...answers, [index]: value };
@@ -53802,7 +54023,7 @@ function AskUserQuestionFlow(props) {
53802
54023
  },
53803
54024
  [answers, index, details.questions.length, onAnswered]
53804
54025
  );
53805
- const items = (0, import_react48.useMemo)(
54026
+ const items = (0, import_react52.useMemo)(
53806
54027
  () => (question?.options ?? []).map((option, i) => ({
53807
54028
  key: `${option.label}-${i}`,
53808
54029
  value: option.label
@@ -53837,7 +54058,7 @@ function AskUserQuestionFlow(props) {
53837
54058
  commitQuestion([...selected].join(", "));
53838
54059
  }
53839
54060
  });
53840
- (0, import_react48.useEffect)(() => {
54061
+ (0, import_react52.useEffect)(() => {
53841
54062
  if (details.questions.length === 0 || !question?.options?.length) {
53842
54063
  onAnswered(null);
53843
54064
  }
@@ -53880,7 +54101,7 @@ function AskUserQuestionFlow(props) {
53880
54101
  __name(AskUserQuestionFlow, "AskUserQuestionFlow");
53881
54102
  function OpenTuiShellConfirmation(props) {
53882
54103
  const { commands, onResolve } = props;
53883
- const options = (0, import_react48.useMemo)(
54104
+ const options = (0, import_react52.useMemo)(
53884
54105
  () => [
53885
54106
  {
53886
54107
  label: t("Yes, allow once"),
@@ -53927,7 +54148,7 @@ function OpenTuiShellConfirmation(props) {
53927
54148
  __name(OpenTuiShellConfirmation, "OpenTuiShellConfirmation");
53928
54149
  function OpenTuiActionConfirmation(props) {
53929
54150
  const { prompt, onResolve } = props;
53930
- const options = (0, import_react48.useMemo)(
54151
+ const options = (0, import_react52.useMemo)(
53931
54152
  () => [
53932
54153
  { key: "yes", value: true },
53933
54154
  { key: "no", value: false }
@@ -53995,22 +54216,22 @@ function OpenTuiApp(props) {
53995
54216
  onPromptSuggestionDismiss,
53996
54217
  onPromptSuggestionAbort
53997
54218
  } = props;
53998
- const [dialog, setDialog] = (0, import_react50.useState)(
54219
+ const [dialog, setDialog] = (0, import_react54.useState)(
53999
54220
  props.initialDialog ?? null
54000
54221
  );
54001
- const [noticeText, setNoticeText] = (0, import_react50.useState)(null);
54002
- const [commandList, setCommandList] = (0, import_react50.useState)(
54222
+ const [noticeText, setNoticeText] = (0, import_react54.useState)(null);
54223
+ const [commandList, setCommandList] = (0, import_react54.useState)(
54003
54224
  commands ?? []
54004
54225
  );
54005
- const notify = (0, import_react50.useCallback)((text) => setNoticeText(text), []);
54006
- const [shellModeActive, setShellModeActive] = (0, import_react50.useState)(false);
54007
- const shellControllersRef = (0, import_react50.useRef)(/* @__PURE__ */ new Set());
54226
+ const notify = (0, import_react54.useCallback)((text) => setNoticeText(text), []);
54227
+ const [shellModeActive, setShellModeActive] = (0, import_react54.useState)(false);
54228
+ const shellControllersRef = (0, import_react54.useRef)(/* @__PURE__ */ new Set());
54008
54229
  const { width: terminalWidth, height: terminalHeight } = useTerminalDimensions();
54009
- const toggleShellMode = (0, import_react50.useCallback)(
54230
+ const toggleShellMode = (0, import_react54.useCallback)(
54010
54231
  () => setShellModeActive((active) => !active),
54011
54232
  []
54012
54233
  );
54013
- const runShellCommand = (0, import_react50.useCallback)(
54234
+ const runShellCommand = (0, import_react54.useCallback)(
54014
54235
  (command) => {
54015
54236
  const emit = props.onTranscriptEvent;
54016
54237
  if (!emit) return;
@@ -54041,7 +54262,7 @@ function OpenTuiApp(props) {
54041
54262
  },
54042
54263
  [config, props.onTranscriptEvent, terminalWidth, terminalHeight]
54043
54264
  );
54044
- (0, import_react50.useEffect)(
54265
+ (0, import_react54.useEffect)(
54045
54266
  () => () => {
54046
54267
  for (const controller of shellControllersRef.current) {
54047
54268
  controller.abort();
@@ -54049,7 +54270,7 @@ function OpenTuiApp(props) {
54049
54270
  },
54050
54271
  []
54051
54272
  );
54052
- const handleSelectSetting = (0, import_react50.useCallback)((name) => {
54273
+ const handleSelectSetting = (0, import_react54.useCallback)((name) => {
54053
54274
  if (name === "ui.theme") setDialog({ dialog: "theme" });
54054
54275
  else if (name === "general.preferredEditor")
54055
54276
  setDialog({ dialog: "editor" });
@@ -54058,15 +54279,15 @@ function OpenTuiApp(props) {
54058
54279
  setDialog({ dialog: "model", mode: "vision" });
54059
54280
  else setDialog(null);
54060
54281
  }, []);
54061
- const fillComposer = (0, import_react50.useCallback)(
54282
+ const fillComposer = (0, import_react54.useCallback)(
54062
54283
  (text) => {
54063
54284
  injectCapturedInput(() => props.composerHandle?.current ?? null, text);
54064
54285
  },
54065
54286
  [props.composerHandle]
54066
54287
  );
54067
- const [modals, setModals] = (0, import_react50.useState)([]);
54068
- const modalSeq = (0, import_react50.useRef)(0);
54069
- const confirmations = (0, import_react50.useMemo)(
54288
+ const [modals, setModals] = (0, import_react54.useState)([]);
54289
+ const modalSeq = (0, import_react54.useRef)(0);
54290
+ const confirmations = (0, import_react54.useMemo)(
54070
54291
  () => ({
54071
54292
  presentShell: /* @__PURE__ */ __name((commandsToRun) => new Promise((resolve4) => {
54072
54293
  modalSeq.current += 1;
@@ -54091,14 +54312,14 @@ function OpenTuiApp(props) {
54091
54312
  []
54092
54313
  );
54093
54314
  const activeModal = modals[0] ?? null;
54094
- const closeShellModal = (0, import_react50.useCallback)(
54315
+ const closeShellModal = (0, import_react54.useCallback)(
54095
54316
  (modal, resolution) => {
54096
54317
  setModals((prev) => prev.filter((m3) => m3.id !== modal.id));
54097
54318
  modal.resolve(resolution);
54098
54319
  },
54099
54320
  []
54100
54321
  );
54101
- const closeActionModal = (0, import_react50.useCallback)(
54322
+ const closeActionModal = (0, import_react54.useCallback)(
54102
54323
  (modal, confirmed) => {
54103
54324
  setModals((prev) => prev.filter((m3) => m3.id !== modal.id));
54104
54325
  modal.resolve(confirmed);
@@ -54106,7 +54327,7 @@ function OpenTuiApp(props) {
54106
54327
  []
54107
54328
  );
54108
54329
  const activeToolCall = waitingToolCalls?.[0] ?? null;
54109
- const transcript = (0, import_react50.useMemo)(
54330
+ const transcript = (0, import_react54.useMemo)(
54110
54331
  () => ({
54111
54332
  reset: /* @__PURE__ */ __name((events) => onTranscriptReset?.(events), "reset"),
54112
54333
  // /clear semantics: a fresh transcript — the live turn's reset with an
@@ -54116,7 +54337,7 @@ function OpenTuiApp(props) {
54116
54337
  }),
54117
54338
  [onTranscriptReset, onTranscriptEvent]
54118
54339
  );
54119
- const host = (0, import_react50.useMemo)(
54340
+ const host = (0, import_react54.useMemo)(
54120
54341
  () => new OpenTuiAppHost({
54121
54342
  config,
54122
54343
  settings,
@@ -54145,27 +54366,27 @@ function OpenTuiApp(props) {
54145
54366
  getSessionStats
54146
54367
  ]
54147
54368
  );
54148
- (0, import_react50.useSyncExternalStore)(
54149
- (0, import_react50.useCallback)((cb) => host.subscribe(cb), [host]),
54150
- (0, import_react50.useCallback)(() => host.getVersion(), [host])
54369
+ (0, import_react54.useSyncExternalStore)(
54370
+ (0, import_react54.useCallback)((cb) => host.subscribe(cb), [host]),
54371
+ (0, import_react54.useCallback)(() => host.getVersion(), [host])
54151
54372
  );
54152
- (0, import_react50.useEffect)(() => {
54373
+ (0, import_react54.useEffect)(() => {
54153
54374
  host.setStreaming(!!streaming);
54154
54375
  }, [host, streaming]);
54155
- const gateway = (0, import_react50.useMemo)(() => new OpenTuiSlashGateway(), []);
54156
- const reloadRef = (0, import_react50.useRef)(null);
54157
- const deferredCommandsRef = (0, import_react50.useRef)([]);
54158
- const [deferredRevision, setDeferredRevision] = (0, import_react50.useState)(0);
54159
- const drainingRef = (0, import_react50.useRef)(false);
54160
- const streamingRef = (0, import_react50.useRef)(streaming);
54161
- (0, import_react50.useEffect)(() => {
54376
+ const gateway = (0, import_react54.useMemo)(() => new OpenTuiSlashGateway(), []);
54377
+ const reloadRef = (0, import_react54.useRef)(null);
54378
+ const deferredCommandsRef = (0, import_react54.useRef)([]);
54379
+ const [deferredRevision, setDeferredRevision] = (0, import_react54.useState)(0);
54380
+ const drainingRef = (0, import_react54.useRef)(false);
54381
+ const streamingRef = (0, import_react54.useRef)(streaming);
54382
+ (0, import_react54.useEffect)(() => {
54162
54383
  streamingRef.current = streaming;
54163
54384
  }, [streaming]);
54164
- const dialogRef = (0, import_react50.useRef)(dialog);
54165
- (0, import_react50.useEffect)(() => {
54385
+ const dialogRef = (0, import_react54.useRef)(dialog);
54386
+ (0, import_react54.useEffect)(() => {
54166
54387
  dialogRef.current = dialog;
54167
54388
  }, [dialog]);
54168
- (0, import_react50.useEffect)(() => {
54389
+ (0, import_react54.useEffect)(() => {
54169
54390
  const dispatcher = new OpenTuiSlashDispatcher(
54170
54391
  host,
54171
54392
  { config, settings, logger, extensionRefreshState },
@@ -54200,7 +54421,7 @@ function OpenTuiApp(props) {
54200
54421
  commands,
54201
54422
  extensionRefreshState
54202
54423
  ]);
54203
- const applyOutcome = (0, import_react50.useCallback)(
54424
+ const applyOutcome = (0, import_react54.useCallback)(
54204
54425
  (outcome) => {
54205
54426
  switch (outcome.kind) {
54206
54427
  case "handled":
@@ -54238,7 +54459,7 @@ function OpenTuiApp(props) {
54238
54459
  },
54239
54460
  [onSubmitPrompt, onQuit, onInterrupt, onPopQueue, notify]
54240
54461
  );
54241
- const onSubmit = (0, import_react50.useCallback)(
54462
+ const onSubmit = (0, import_react54.useCallback)(
54242
54463
  async (text, imagePaths) => {
54243
54464
  setNoticeText(null);
54244
54465
  const submission = normalizeQuitSubmission(text);
@@ -54296,7 +54517,7 @@ function OpenTuiApp(props) {
54296
54517
  runShellCommand
54297
54518
  ]
54298
54519
  );
54299
- (0, import_react50.useEffect)(() => {
54520
+ (0, import_react54.useEffect)(() => {
54300
54521
  if (isExitInProgress()) return;
54301
54522
  if (streaming || dialog || shellControllersRef.current.size > 0 || deferredCommandsRef.current.length === 0) {
54302
54523
  return;
@@ -54363,7 +54584,7 @@ function OpenTuiApp(props) {
54363
54584
  onSubmitPrompt,
54364
54585
  runShellCommand
54365
54586
  ]);
54366
- const userMessages = (0, import_react50.useMemo)(
54587
+ const userMessages = (0, import_react54.useMemo)(
54367
54588
  () => host.getHistory().filter((item) => item.type === "user").map((item) => item.text ?? ""),
54368
54589
  // eslint-disable-next-line react-hooks/exhaustive-deps
54369
54590
  [host, host.getVersion()]
@@ -54374,6 +54595,7 @@ function OpenTuiApp(props) {
54374
54595
  recordForExitEcho: true,
54375
54596
  onError: (error) => onRenderError?.(error),
54376
54597
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", flexGrow: 1, flexShrink: 0, children: [
54598
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(OpenTuiBanner, { config, settings }),
54377
54599
  renderMain ? renderMain() : null,
54378
54600
  !dialog && !activeModal && !activeToolCall && updateNotice ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { children: updateNotice }) : null,
54379
54601
  noticeText ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { children: noticeText }) : null,
@@ -54414,26 +54636,39 @@ function OpenTuiApp(props) {
54414
54636
  availableTerminalHeight: props.availableTerminalHeight
54415
54637
  },
54416
54638
  dialog.dialog
54417
- ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
54418
- OpenTuiInputPrompt,
54639
+ ) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
54640
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(OpenTuiLoadingIndicator, { streaming: Boolean(streaming) }),
54641
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
54642
+ OpenTuiInputPrompt,
54643
+ {
54644
+ onSubmit: (text, imagePaths) => {
54645
+ void onSubmit(text, imagePaths);
54646
+ },
54647
+ userMessages,
54648
+ config,
54649
+ focus: true,
54650
+ streaming,
54651
+ onInterrupt,
54652
+ approvalMode,
54653
+ queueLength,
54654
+ onPopQueue,
54655
+ composerHandle: props.composerHandle,
54656
+ promptSuggestion,
54657
+ onPromptSuggestionDismiss,
54658
+ onPromptSuggestionAbort,
54659
+ shellModeActive,
54660
+ onToggleShellMode: toggleShellMode
54661
+ }
54662
+ )
54663
+ ] }),
54664
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
54665
+ OpenTuiFooter,
54419
54666
  {
54420
- onSubmit: (text, imagePaths) => {
54421
- void onSubmit(text, imagePaths);
54422
- },
54423
- userMessages,
54424
54667
  config,
54425
- focus: true,
54426
- streaming,
54427
- onInterrupt,
54668
+ streaming: Boolean(streaming),
54428
54669
  approvalMode,
54429
54670
  queueLength,
54430
- onPopQueue,
54431
- composerHandle: props.composerHandle,
54432
- promptSuggestion,
54433
- onPromptSuggestionDismiss,
54434
- onPromptSuggestionAbort,
54435
- shellModeActive,
54436
- onToggleShellMode: toggleShellMode
54671
+ sessionName: host.sessionName
54437
54672
  }
54438
54673
  )
54439
54674
  ] })
@@ -54444,7 +54679,7 @@ __name(OpenTuiApp, "OpenTuiApp");
54444
54679
 
54445
54680
  // packages/cli/src/ui/opentui/followup-generation.ts
54446
54681
  init_esbuild_shims();
54447
- var import_react52 = __toESM(require_react(), 1);
54682
+ var import_react56 = __toESM(require_react(), 1);
54448
54683
  function useFollowupSuggestionGeneration({
54449
54684
  config,
54450
54685
  settings,
@@ -54452,12 +54687,12 @@ function useFollowupSuggestionGeneration({
54452
54687
  items,
54453
54688
  waitingCalls
54454
54689
  }) {
54455
- const [promptSuggestion, setPromptSuggestion] = (0, import_react52.useState)(null);
54456
- const abortRef = (0, import_react52.useRef)(null);
54457
- const streamingRef = (0, import_react52.useRef)(streaming);
54690
+ const [promptSuggestion, setPromptSuggestion] = (0, import_react56.useState)(null);
54691
+ const abortRef = (0, import_react56.useRef)(null);
54692
+ const streamingRef = (0, import_react56.useRef)(streaming);
54458
54693
  const followupEnabled = settings.merged.ui?.enableFollowupSuggestions !== false;
54459
54694
  const cacheSharingEnabled = settings.merged.ui?.enableCacheSharing !== false;
54460
- (0, import_react52.useEffect)(() => {
54695
+ (0, import_react56.useEffect)(() => {
54461
54696
  const wasStreaming = streamingRef.current;
54462
54697
  if (!followupEnabled || wasStreaming !== streaming) {
54463
54698
  abortRef.current?.abort();
@@ -54494,7 +54729,7 @@ function useFollowupSuggestionGeneration({
54494
54729
  items,
54495
54730
  waitingCalls
54496
54731
  ]);
54497
- (0, import_react52.useEffect)(
54732
+ (0, import_react56.useEffect)(
54498
54733
  () => () => {
54499
54734
  abortRef.current?.abort();
54500
54735
  },
@@ -54646,7 +54881,7 @@ var OpenTuiRuntime = class _OpenTuiRuntime {
54646
54881
 
54647
54882
  // packages/cli/src/ui/opentui/transcript-view.tsx
54648
54883
  init_esbuild_shims();
54649
- var import_react53 = __toESM(require_react(), 1);
54884
+ var import_react57 = __toESM(require_react(), 1);
54650
54885
 
54651
54886
  // packages/cli/src/ui/opentui/live-session-model.ts
54652
54887
  init_esbuild_shims();
@@ -55844,7 +56079,7 @@ function AssistantRow({
55844
56079
  }
55845
56080
  __name(AssistantRow, "AssistantRow");
55846
56081
  function ThinkingRow({ text, done }) {
55847
- const [expanded, setExpanded] = (0, import_react53.useState)(false);
56082
+ const [expanded, setExpanded] = (0, import_react57.useState)(false);
55848
56083
  const meta = thinkingMeta(done, expanded, false);
55849
56084
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
55850
56085
  "box",
@@ -55995,8 +56230,8 @@ function RetryRows({
55995
56230
  delayMs,
55996
56231
  startedAt
55997
56232
  }) {
55998
- const [now, setNow] = (0, import_react53.useState)(() => Date.now());
55999
- (0, import_react53.useEffect)(() => {
56233
+ const [now, setNow] = (0, import_react57.useState)(() => Date.now());
56234
+ (0, import_react57.useEffect)(() => {
56000
56235
  const timer = setInterval(() => setNow(Date.now()), 1e3);
56001
56236
  return () => clearInterval(timer);
56002
56237
  }, []);
@@ -56240,7 +56475,7 @@ __name(ArenaSessionRow, "ArenaSessionRow");
56240
56475
 
56241
56476
  // packages/cli/src/ui/opentui/live-turn.ts
56242
56477
  init_esbuild_shims();
56243
- var import_react54 = __toESM(require_react(), 1);
56478
+ var import_react58 = __toESM(require_react(), 1);
56244
56479
  import { readFileSync } from "node:fs";
56245
56480
 
56246
56481
  // packages/cli/src/ui/opentui/live-session.ts
@@ -56840,43 +57075,43 @@ function foldBatch(events) {
56840
57075
  __name(foldBatch, "foldBatch");
56841
57076
  function useOpenTuiLiveTurn(options) {
56842
57077
  const { config } = options;
56843
- const [items, setItems] = (0, import_react54.useState)([]);
56844
- const [streaming, setStreaming] = (0, import_react54.useState)(false);
56845
- const [waitingCalls, setWaitingCalls] = (0, import_react54.useState)(
57078
+ const [items, setItems] = (0, import_react58.useState)([]);
57079
+ const [streaming, setStreaming] = (0, import_react58.useState)(false);
57080
+ const [waitingCalls, setWaitingCalls] = (0, import_react58.useState)(
56846
57081
  []
56847
57082
  );
56848
- const queueRef = (0, import_react54.useRef)([]);
56849
- const [queueLength, setQueueLength] = (0, import_react54.useState)(0);
56850
- const abortRef = (0, import_react54.useRef)(null);
56851
- const streamingRef = (0, import_react54.useRef)(false);
56852
- const turnSeqRef = (0, import_react54.useRef)(0);
56853
- const waitingCallsRef = (0, import_react54.useRef)([]);
57083
+ const queueRef = (0, import_react58.useRef)([]);
57084
+ const [queueLength, setQueueLength] = (0, import_react58.useState)(0);
57085
+ const abortRef = (0, import_react58.useRef)(null);
57086
+ const streamingRef = (0, import_react58.useRef)(false);
57087
+ const turnSeqRef = (0, import_react58.useRef)(0);
57088
+ const waitingCallsRef = (0, import_react58.useRef)([]);
56854
57089
  waitingCallsRef.current = waitingCalls;
56855
- const setBusy = (0, import_react54.useCallback)((busy) => {
57090
+ const setBusy = (0, import_react58.useCallback)((busy) => {
56856
57091
  if (streamingRef.current === busy) return;
56857
57092
  streamingRef.current = busy;
56858
57093
  setStreaming(busy);
56859
57094
  }, []);
56860
- const apply = (0, import_react54.useCallback)((ev) => {
57095
+ const apply = (0, import_react58.useCallback)((ev) => {
56861
57096
  setItems((prev) => foldLiveEvent(prev, ev));
56862
57097
  }, []);
56863
- const pushQueue = (0, import_react54.useCallback)((text) => {
57098
+ const pushQueue = (0, import_react58.useCallback)((text) => {
56864
57099
  queueRef.current.push(text);
56865
57100
  setQueueLength(queueRef.current.length);
56866
57101
  }, []);
56867
- const drainQueue = (0, import_react54.useCallback)(() => {
57102
+ const drainQueue = (0, import_react58.useCallback)(() => {
56868
57103
  const drained = queueRef.current;
56869
57104
  queueRef.current = [];
56870
57105
  setQueueLength(0);
56871
57106
  return drained;
56872
57107
  }, []);
56873
- const restoreQueue = (0, import_react54.useCallback)((texts) => {
57108
+ const restoreQueue = (0, import_react58.useCallback)((texts) => {
56874
57109
  const restored = texts.map((text) => text.trim()).filter(Boolean);
56875
57110
  if (restored.length === 0) return;
56876
57111
  queueRef.current = [...restored, ...queueRef.current];
56877
57112
  setQueueLength(queueRef.current.length);
56878
57113
  }, []);
56879
- const runTurn = (0, import_react54.useCallback)(
57114
+ const runTurn = (0, import_react58.useCallback)(
56880
57115
  async (prompt, promptId, turnOptions) => {
56881
57116
  const seq = ++turnSeqRef.current;
56882
57117
  const abort = new AbortController();
@@ -56933,7 +57168,7 @@ function useOpenTuiLiveTurn(options) {
56933
57168
  },
56934
57169
  [config, apply, drainQueue, restoreQueue, setBusy]
56935
57170
  );
56936
- const submit = (0, import_react54.useCallback)(
57171
+ const submit = (0, import_react58.useCallback)(
56937
57172
  (content, imagePaths, options2) => {
56938
57173
  const text = typeof content === "string" ? content : collectText(normalizeParts(content));
56939
57174
  if (streamingRef.current) {
@@ -56957,10 +57192,10 @@ function useOpenTuiLiveTurn(options) {
56957
57192
  },
56958
57193
  [config, apply, pushQueue, runTurn]
56959
57194
  );
56960
- const interrupt = (0, import_react54.useCallback)(() => {
57195
+ const interrupt = (0, import_react58.useCallback)(() => {
56961
57196
  abortRef.current?.abort();
56962
57197
  }, []);
56963
- const resetTranscript = (0, import_react54.useCallback)(
57198
+ const resetTranscript = (0, import_react58.useCallback)(
56964
57199
  (events) => {
56965
57200
  turnSeqRef.current += 1;
56966
57201
  const abort = abortRef.current;
@@ -56979,14 +57214,14 @@ function useOpenTuiLiveTurn(options) {
56979
57214
  },
56980
57215
  [setBusy]
56981
57216
  );
56982
- const settleWaitingCall = (0, import_react54.useCallback)((callId) => {
57217
+ const settleWaitingCall = (0, import_react58.useCallback)((callId) => {
56983
57218
  setWaitingCalls((prev) => prev.filter((c2) => c2.callId !== callId));
56984
57219
  }, []);
56985
- const popQueue = (0, import_react54.useCallback)(() => {
57220
+ const popQueue = (0, import_react58.useCallback)(() => {
56986
57221
  if (queueRef.current.length === 0) return null;
56987
57222
  return drainQueue().join("\n\n");
56988
57223
  }, [drainQueue]);
56989
- (0, import_react54.useEffect)(() => () => abortRef.current?.abort(), []);
57224
+ (0, import_react58.useEffect)(() => () => abortRef.current?.abort(), []);
56990
57225
  return {
56991
57226
  items,
56992
57227
  streaming,
@@ -57076,29 +57311,29 @@ function OpenTuiEntryApp({
57076
57311
  items: live.items,
57077
57312
  waitingCalls: live.waitingCalls
57078
57313
  });
57079
- const statsRef = (0, import_react55.useRef)(stats);
57080
- (0, import_react55.useEffect)(() => {
57314
+ const statsRef = (0, import_react59.useRef)(stats);
57315
+ (0, import_react59.useEffect)(() => {
57081
57316
  statsRef.current = stats;
57082
57317
  }, [stats]);
57083
- const getSessionStats = (0, import_react55.useCallback)(() => statsRef.current, []);
57084
- const composerHandle = (0, import_react55.useRef)(null);
57085
- (0, import_react55.useEffect)(
57318
+ const getSessionStats = (0, import_react59.useCallback)(() => statsRef.current, []);
57319
+ const composerHandle = (0, import_react59.useRef)(null);
57320
+ (0, import_react59.useEffect)(
57086
57321
  () => armCapturedInputInjection(() => composerHandle.current, capturedText),
57087
57322
  [capturedText]
57088
57323
  );
57089
- (0, import_react55.useEffect)(() => {
57324
+ (0, import_react59.useEffect)(() => {
57090
57325
  const resumeEvents = resumeEventsFromConfig(config);
57091
57326
  if (resumeEvents) resetTranscript(resumeEvents);
57092
57327
  for (const warning of startupWarnings) {
57093
57328
  applyEvent({ type: "warning", text: warning });
57094
57329
  }
57095
57330
  }, []);
57096
- const [updateNotice, setUpdateNotice] = (0, import_react55.useState)(null);
57097
- const isIdleRef = (0, import_react55.useRef)(true);
57098
- (0, import_react55.useEffect)(() => {
57331
+ const [updateNotice, setUpdateNotice] = (0, import_react59.useState)(null);
57332
+ const isIdleRef = (0, import_react59.useRef)(true);
57333
+ (0, import_react59.useEffect)(() => {
57099
57334
  isIdleRef.current = !live.streaming;
57100
57335
  }, [live.streaming]);
57101
- const addUpdateItem = (0, import_react55.useCallback)(
57336
+ const addUpdateItem = (0, import_react59.useCallback)(
57102
57337
  (item) => {
57103
57338
  if (item.type === "info" /* INFO */) {
57104
57339
  applyEvent({ type: "info", text: item.text });
@@ -57110,22 +57345,22 @@ function OpenTuiEntryApp({
57110
57345
  },
57111
57346
  [applyEvent]
57112
57347
  );
57113
- const setUpdateInfo = (0, import_react55.useCallback)((info) => {
57348
+ const setUpdateInfo = (0, import_react59.useCallback)((info) => {
57114
57349
  setUpdateNotice(info?.message ?? null);
57115
57350
  }, []);
57116
57351
  useUpdateNoticeFlush(addUpdateItem, setUpdateInfo, isIdleRef, live.streaming);
57117
- const [exitHint, setExitHint] = (0, import_react55.useState)(null);
57118
- const exitGuard = (0, import_react55.useMemo)(
57352
+ const [exitHint, setExitHint] = (0, import_react59.useState)(null);
57353
+ const exitGuard = (0, import_react59.useMemo)(
57119
57354
  () => createExitGuard({ onWindowExpired: /* @__PURE__ */ __name(() => setExitHint(null), "onWindowExpired") }),
57120
57355
  []
57121
57356
  );
57122
- (0, import_react55.useEffect)(() => () => exitGuard.dispose(), [exitGuard]);
57123
- const streamingRef = (0, import_react55.useRef)(live.streaming);
57124
- (0, import_react55.useEffect)(() => {
57357
+ (0, import_react59.useEffect)(() => () => exitGuard.dispose(), [exitGuard]);
57358
+ const streamingRef = (0, import_react59.useRef)(live.streaming);
57359
+ (0, import_react59.useEffect)(() => {
57125
57360
  streamingRef.current = live.streaming;
57126
57361
  }, [live.streaming]);
57127
- const waitingCallsRef = (0, import_react55.useRef)(live.waitingCalls);
57128
- (0, import_react55.useEffect)(() => {
57362
+ const waitingCallsRef = (0, import_react59.useRef)(live.waitingCalls);
57363
+ (0, import_react59.useEffect)(() => {
57129
57364
  waitingCallsRef.current = live.waitingCalls;
57130
57365
  }, [live.waitingCalls]);
57131
57366
  useKeyboard((key) => {
@@ -57148,7 +57383,7 @@ function OpenTuiEntryApp({
57148
57383
  setExitHint(exitGuardHint(guardKey));
57149
57384
  }
57150
57385
  });
57151
- const renderMain = (0, import_react55.useCallback)(
57386
+ const renderMain = (0, import_react59.useCallback)(
57152
57387
  () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", flexGrow: 1, children: [
57153
57388
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
57154
57389
  OpenTuiTranscriptView,
@@ -57162,7 +57397,7 @@ function OpenTuiEntryApp({
57162
57397
  ] }),
57163
57398
  [live.items, width, height, exitHint]
57164
57399
  );
57165
- const handleRenderError = (0, import_react55.useCallback)(
57400
+ const handleRenderError = (0, import_react59.useCallback)(
57166
57401
  (error) => {
57167
57402
  debugLogger4.error(
57168
57403
  `[FATAL_RENDER_ERROR] ${error.message}
@@ -57174,15 +57409,15 @@ ${error.stack ?? ""}`
57174
57409
  },
57175
57410
  [config]
57176
57411
  );
57177
- const handleStartNewSession = (0, import_react55.useCallback)(
57412
+ const handleStartNewSession = (0, import_react59.useCallback)(
57178
57413
  (sessionId) => startNewSession(sessionId),
57179
57414
  [startNewSession]
57180
57415
  );
57181
- const handleSubmitPrompt = (0, import_react55.useCallback)(
57416
+ const handleSubmitPrompt = (0, import_react59.useCallback)(
57182
57417
  (content, imagePaths, options) => submit(content, imagePaths, options),
57183
57418
  [submit]
57184
57419
  );
57185
- const handleQuit = (0, import_react55.useCallback)(() => {
57420
+ const handleQuit = (0, import_react59.useCallback)(() => {
57186
57421
  void exitSession(config, 0);
57187
57422
  }, [config]);
57188
57423
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -57253,7 +57488,7 @@ async function startOpenTuiUI(config, settings, startupWarnings, workspaceRoot =
57253
57488
  // children must sit in the props object: the provider declares it as a
57254
57489
  // required prop, which createElement's rest-children overloads can't fill.
57255
57490
  // eslint-disable-next-line react/no-children-prop
57256
- (0, import_react55.createElement)(SessionStatsProvider, {
57491
+ (0, import_react59.createElement)(SessionStatsProvider, {
57257
57492
  sessionId: config.getSessionId(),
57258
57493
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
57259
57494
  OpenTuiEntryApp,