@qwen-code/qwen-code 0.23.1 → 0.23.2-nightly.20260909.2e212144d3

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 (293) hide show
  1. package/README.md +35 -15
  2. package/bundled/computer-use/SKILL.md +1 -1
  3. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +19 -15
  5. package/bundled/qc-helper/docs/configuration/settings.md +1 -1
  6. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  7. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
  8. package/bundled/qc-helper/docs/features/channels/github.md +1 -9
  9. package/bundled/qc-helper/docs/features/channels/overview.md +26 -51
  10. package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
  11. package/bundled/qc-helper/docs/features/commands.md +79 -17
  12. package/bundled/qc-helper/docs/features/computer-use.md +1 -1
  13. package/bundled/qc-helper/docs/features/cross-session-protocol.md +291 -0
  14. package/bundled/qc-helper/docs/features/goals.md +3 -1
  15. package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
  16. package/bundled/qc-helper/docs/qwen-serve.md +62 -48
  17. package/chunks/{MaxSizedBox-UDO6Y7RB.js → MaxSizedBox-ZBGWYJZW.js} +20 -19
  18. package/chunks/{StandaloneSessionPicker-D4CUOO4H.js → StandaloneSessionPicker-NR5ACIJZ.js} +35 -34
  19. package/chunks/{acpAgent-KWLJFADK.js → acpAgent-DM6XRCDQ.js} +307 -183
  20. package/chunks/{agent-GSUPGEOL.js → agent-EF3IIYE3.js} +13 -13
  21. package/chunks/{agent-headless-HNYCQUJB.js → agent-headless-5J2KFYR4.js} +13 -13
  22. package/chunks/{anthropicContentGenerator-I7LQZH26.js → anthropicContentGenerator-VIW2FG7G.js} +4 -4
  23. package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-G5LHNECG.js} +1 -1
  24. package/chunks/{askUserQuestion-I5W5S3D6.js → askUserQuestion-R3TXY77M.js} +1 -1
  25. package/chunks/{bridge-B7CV6RVI.js → bridge-LEMQM6QE.js} +21 -20
  26. package/chunks/{channel-management-service-TRTLQTSV.js → channel-management-service-TGF6XFXT.js} +4 -4
  27. package/chunks/{channel-settings-store-FW45IRUP.js → channel-settings-store-FV365JSF.js} +29 -28
  28. package/chunks/{channel-worker-group-PIYPVCTF.js → channel-worker-group-SQ5FRWOH.js} +5 -5
  29. package/chunks/{channel-worker-manager-FQHEDTD2.js → channel-worker-manager-TU4ZNWOE.js} +5 -5
  30. package/chunks/{channel-worker-supervisor-XJPZZ3VK.js → channel-worker-supervisor-EMITFMCP.js} +4 -4
  31. package/chunks/{chunk-3SH53ANB.js → chunk-22GORRNY.js} +12 -0
  32. package/chunks/{chunk-3LPJ776W.js → chunk-2HYOOFDS.js} +9 -6
  33. package/chunks/{chunk-S6QVI3MV.js → chunk-34VPADLG.js} +2 -2
  34. package/chunks/{chunk-WJDXKQIO.js → chunk-3A2IMUDH.js} +14 -2
  35. package/chunks/{chunk-DXQ6Z7AH.js → chunk-3O77M472.js} +224 -84
  36. package/chunks/{chunk-5CVY5Q2P.js → chunk-43EUMPKQ.js} +1 -1
  37. package/chunks/{chunk-ZNO5BUAD.js → chunk-4DIMJKWU.js} +46 -37
  38. package/chunks/{chunk-O2JBJQCF.js → chunk-5HV2HPO7.js} +1 -1
  39. package/chunks/{chunk-RXT4QBDX.js → chunk-5WBA3DEF.js} +1 -1
  40. package/chunks/{chunk-ARYNBBBM.js → chunk-6GAYNM3F.js} +3 -3
  41. package/chunks/{chunk-EEKU6COG.js → chunk-6S7YYUUH.js} +3 -3
  42. package/chunks/{chunk-OPMKGOLD.js → chunk-6VIATHL7.js} +1 -1
  43. package/chunks/{chunk-ENZDGHGJ.js → chunk-76I36BEM.js} +3 -3
  44. package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
  45. package/chunks/{chunk-UHUT4IDM.js → chunk-7IDZFJAV.js} +9 -9
  46. package/chunks/{chunk-5Z4FCEPY.js → chunk-7K4GGN3D.js} +606 -109
  47. package/chunks/{chunk-ZPL2TZNA.js → chunk-7KZVXJ4U.js} +1 -1
  48. package/chunks/{chunk-FWRRUITH.js → chunk-7WCJEY3A.js} +4 -4
  49. package/chunks/{chunk-MFYH2VXV.js → chunk-A7QZIGRB.js} +2 -2
  50. package/chunks/{chunk-27LTEY6D.js → chunk-ATBLEXXV.js} +7 -2
  51. package/chunks/{chunk-3BTHHXXE.js → chunk-AUTUFD5X.js} +1 -1
  52. package/chunks/chunk-AXMWHKXA.js +42 -0
  53. package/chunks/{chunk-QZOXVQPK.js → chunk-AXWTG6R7.js} +2 -5
  54. package/chunks/{chunk-PDUMGZ2P.js → chunk-BDAVT6K2.js} +486 -409
  55. package/chunks/{chunk-2YS3NU4A.js → chunk-BDP3NTWD.js} +3 -3
  56. package/chunks/{chunk-IKG2YVRZ.js → chunk-BZUHZCUO.js} +2 -2
  57. package/chunks/{chunk-USN6VNTO.js → chunk-C24ZDDNY.js} +1 -1
  58. package/chunks/{chunk-RPFJJ33Z.js → chunk-CALTQWTZ.js} +1 -1
  59. package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
  60. package/chunks/{chunk-3VDLQUR2.js → chunk-D6AGS266.js} +1 -1
  61. package/chunks/{chunk-DO5SMV52.js → chunk-D7DFZAK2.js} +17 -11
  62. package/chunks/{chunk-GM44O6F7.js → chunk-DARWOZY6.js} +1 -1
  63. package/chunks/{chunk-HUX2DOTF.js → chunk-DGNRLJ6S.js} +3 -3
  64. package/chunks/{chunk-FW4E4QPG.js → chunk-DVOCOIS5.js} +1 -1
  65. package/chunks/{chunk-OESZTXTG.js → chunk-E4LXNQAK.js} +1 -1
  66. package/chunks/{chunk-TWAMIEQ2.js → chunk-EATP5QCN.js} +16 -18
  67. package/chunks/{chunk-DZ6D4B3K.js → chunk-EDSU3VUG.js} +12 -5
  68. package/chunks/{chunk-EOET4H7C.js → chunk-EE5ZD4XU.js} +3 -3
  69. package/chunks/{chunk-B3EL44K3.js → chunk-EN3Q2S3J.js} +3 -3
  70. package/chunks/{chunk-N7YQEKGX.js → chunk-EOLGAQ25.js} +16 -15
  71. package/chunks/{chunk-3YQMUBTS.js → chunk-EYCW6UF2.js} +7 -7
  72. package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
  73. package/chunks/{chunk-FPGTNKCP.js → chunk-F3M6P6IQ.js} +199 -1
  74. package/chunks/{chunk-B44JBZBB.js → chunk-F4SAL7WM.js} +91 -3
  75. package/chunks/{chunk-XZ3Z43XL.js → chunk-FEEVHJOR.js} +3 -3
  76. package/chunks/{chunk-CHVU543W.js → chunk-FN4KHWCL.js} +1 -1
  77. package/chunks/{chunk-6QV7Z74P.js → chunk-FRS3P7MQ.js} +15 -2
  78. package/chunks/{chunk-FDOGGKAA.js → chunk-GSFV5RQW.js} +2 -0
  79. package/chunks/{chunk-XBVNNDPK.js → chunk-GSYD7MYP.js} +8 -3
  80. package/chunks/{chunk-VF6D6EGV.js → chunk-HSO6D4KX.js} +82 -25
  81. package/chunks/{chunk-L7V52QEZ.js → chunk-HUJJFSMO.js} +10 -10
  82. package/chunks/{chunk-CIKL2DQP.js → chunk-HW4MRP4V.js} +1 -1
  83. package/chunks/{chunk-TWWS7XUW.js → chunk-HWLLUDIA.js} +108 -16
  84. package/chunks/{chunk-75LBC7SV.js → chunk-IKK6NNS6.js} +32 -29
  85. package/chunks/{chunk-UXDVUFKU.js → chunk-JFAGT5YG.js} +2 -2
  86. package/chunks/{chunk-6SADVYQQ.js → chunk-JGTMTJSQ.js} +1 -1
  87. package/chunks/{chunk-45ROPFQY.js → chunk-JYGIJA4W.js} +1 -1
  88. package/chunks/{chunk-5WC2ECUK.js → chunk-KECCLCXM.js} +42 -8
  89. package/chunks/{chunk-CABDNUJ4.js → chunk-KEPC5BOL.js} +5 -5
  90. package/chunks/{chunk-WNISCNTA.js → chunk-L5VHJYHH.js} +2 -2
  91. package/chunks/{chunk-25CBAK3H.js → chunk-LKBOBUA2.js} +2 -2
  92. package/chunks/{chunk-6QILGINT.js → chunk-LOBKNYPR.js} +2 -2
  93. package/chunks/{chunk-2ZFO5JD7.js → chunk-LOVGQ3HZ.js} +9 -9
  94. package/chunks/{chunk-QK4K76T6.js → chunk-MUF4UGPB.js} +2 -2
  95. package/chunks/{chunk-JGDRB4FP.js → chunk-N3Z6Q7KC.js} +125 -10
  96. package/chunks/chunk-NFXXBWSE.js +463 -0
  97. package/chunks/{chunk-PQSCGZT2.js → chunk-NPKCVSXX.js} +26 -2
  98. package/chunks/{chunk-YCEKI7QX.js → chunk-NV4YYXFT.js} +1 -1
  99. package/chunks/{chunk-5IL2BZHW.js → chunk-O6BFERWN.js} +3 -3
  100. package/chunks/{chunk-TGC4264Q.js → chunk-OVTPETDL.js} +5 -5
  101. package/chunks/chunk-PLEBBGHL.js +1401 -0
  102. package/chunks/{chunk-3VWPPK5Q.js → chunk-PWR6BQ3U.js} +4 -4
  103. package/chunks/{chunk-D6AQNMUA.js → chunk-QA2B26PL.js} +3 -3
  104. package/chunks/{chunk-NFIDVZND.js → chunk-QB3KS3N3.js} +2 -21
  105. package/chunks/{chunk-LNCNUMJ5.js → chunk-SK6VACCM.js} +558 -158
  106. package/chunks/{chunk-YAC7H4K3.js → chunk-SM66GFKJ.js} +1 -1
  107. package/chunks/{chunk-MA5OUNN6.js → chunk-SNMUO5Z7.js} +1 -1
  108. package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
  109. package/chunks/{chunk-6JXHO7LG.js → chunk-SYKPMH2X.js} +3 -3
  110. package/chunks/{chunk-5HBA2Z7V.js → chunk-TGNNLRC3.js} +2 -3
  111. package/chunks/{chunk-EHTKOO6W.js → chunk-TRQNRP2H.js} +2 -2
  112. package/chunks/{chunk-LZGFVUWZ.js → chunk-UQOP2APG.js} +4 -24
  113. package/chunks/{chunk-T2IHCZLS.js → chunk-VAWM3A5N.js} +1 -1
  114. package/chunks/{chunk-M73KHGNR.js → chunk-VJJXG73H.js} +404 -226
  115. package/chunks/{chunk-WAASYFPK.js → chunk-VJWJOKOQ.js} +2 -2
  116. package/chunks/{chunk-WQMUGQ6G.js → chunk-VR6Y23FW.js} +1 -1
  117. package/chunks/{chunk-E7XSUYCZ.js → chunk-VX2NR3SD.js} +19 -4
  118. package/chunks/{chunk-XVTCSVBK.js → chunk-WDVV3LRM.js} +193 -169
  119. package/chunks/{chunk-RNYENHN5.js → chunk-WEU6O6VN.js} +2 -2
  120. package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
  121. package/chunks/{chunk-66JBCTJF.js → chunk-Y7YHAY32.js} +23 -6
  122. package/chunks/{chunk-7SL55L5H.js → chunk-YIE6REQ5.js} +20 -15
  123. package/chunks/{chunk-ZU2T5JIS.js → chunk-ZEFWBG2C.js} +736 -1148
  124. package/chunks/{chunk-6TPVIESH.js → chunk-ZM2TCZZ7.js} +3 -3
  125. package/chunks/{chunk-2TMJRF46.js → chunk-ZZ7RVOTU.js} +50 -18
  126. package/chunks/{config-utils-KTDSQ4MU.js → config-utils-SXFK3G4X.js} +24 -23
  127. package/chunks/{contextCommand-UQ3KRYGK.js → contextCommand-QFPD26QO.js} +21 -20
  128. package/chunks/{core-runtime-JR34JAFH.js → core-runtime-VXKNBODM.js} +26 -24
  129. package/chunks/{create-sub-session-RGPJOI4S.js → create-sub-session-7WSQETFR.js} +20 -19
  130. package/chunks/{daemon-UI6SQSBV.js → daemon-U2456K5H.js} +2 -2
  131. package/chunks/{daemon-git-worktree-guard-H3OA26KQ.js → daemon-git-worktree-guard-I4DCSDUS.js} +20 -19
  132. package/chunks/{daemon-status-provider-6WZLKSZU.js → daemon-status-provider-5UV56RI4.js} +25 -24
  133. package/chunks/{daemon-trust-policy-3EDP2BYD.js → daemon-trust-policy-DKIBWTKU.js} +25 -24
  134. package/chunks/{daemon-trust-policy-monitor-CRHZPK52.js → daemon-trust-policy-monitor-CPSD7UKT.js} +25 -24
  135. package/chunks/{deferred-core-runtime-LO5NTQQ4.js → deferred-core-runtime-D2RF35BL.js} +20 -19
  136. package/chunks/{dist-STAGIFNB.js → dist-6YDUH3BB.js} +388 -102
  137. package/chunks/{dist-XJ25G6OH.js → dist-BNQVF565.js} +2 -8
  138. package/chunks/{dist-NQ2636VT.js → dist-F34J4FZX.js} +1 -1
  139. package/chunks/{dist-OR2ZQTXZ.js → dist-F6JLAJLE.js} +1 -1
  140. package/chunks/{dist-24TCWK5H.js → dist-K5GHMXIG.js} +2 -2
  141. package/chunks/{dist-WZTUKIDR.js → dist-NP7QKLVG.js} +2 -2
  142. package/chunks/{dist-M4CBX53H.js → dist-UFTFGI6I.js} +1 -1
  143. package/chunks/{dist-5I4HLUTO.js → dist-XLV33CLY.js} +1 -2
  144. package/chunks/{dist-FDISN4AK.js → dist-ZDNJK74R.js} +3 -7
  145. package/chunks/{edit-LB7Z7XK5.js → edit-4IBADZ3O.js} +13 -13
  146. package/chunks/{enterPlanMode-P6TVUFIY.js → enterPlanMode-YN3GPQU5.js} +13 -13
  147. package/chunks/{environment-QATJNNKI.js → environment-E272IJMF.js} +22 -21
  148. package/chunks/{errors-3XJ37PS2.js → errors-CVAH3RWQ.js} +22 -21
  149. package/chunks/{exitPlanMode-A3OKL5UO.js → exitPlanMode-24J5IHGC.js} +13 -13
  150. package/chunks/{fast-path-DBIT5YQQ.js → fast-path-M5IDBMXF.js} +3 -3
  151. package/chunks/{glob-73EDTXUE.js → glob-ERBD7JYP.js} +13 -13
  152. package/chunks/{goal-tools-DFI6YMSD.js → goal-tools-245ULLQT.js} +13 -13
  153. package/chunks/{handleAutoUpdate-2FUNJO3B.js → handleAutoUpdate-JDZHHZKK.js} +22 -21
  154. package/chunks/{i18n-FDIA6KFI.js → i18n-LA4D5IXM.js} +20 -19
  155. package/chunks/{initializer-4MJTJOTW.js → initializer-SHPTSWUZ.js} +25 -24
  156. package/chunks/{installationInfo-232RA2OK.js → installationInfo-QEQEPB3G.js} +20 -19
  157. package/chunks/{list-WN6WSGEB.js → list-IBHCQWTF.js} +28 -27
  158. package/chunks/{list-agents-I5TRH3J7.js → list-agents-EDPZCGKN.js} +5 -4
  159. package/chunks/{llm-UDFWQWZA.js → llm-JAWCQLA4.js} +68 -62
  160. package/chunks/{llm-content-generator-VLMZ2A7A.js → llm-content-generator-GOV3A23T.js} +2 -2
  161. package/chunks/{loadedSettingsAdapter-OBQEIXM7.js → loadedSettingsAdapter-RVE2GNVU.js} +25 -24
  162. package/chunks/{loggingContentGenerator-RGVUMUVX.js → loggingContentGenerator-SSHNN5YW.js} +15 -15
  163. package/chunks/{managed-npm-update-QBAJYCFU.js → managed-npm-update-BHSTITQO.js} +20 -19
  164. package/chunks/{mcp-OTIZZCPY.js → mcp-6ZZ7P2HU.js} +25 -24
  165. package/chunks/{monitor-BV5XF6LL.js → monitor-RKK6GSHG.js} +13 -13
  166. package/chunks/{nonInteractiveCli-W6MUKDVJ.js → nonInteractiveCli-UQHP3G6P.js} +58 -57
  167. package/chunks/{notebook-edit-HGBEKGTE.js → notebook-edit-YM47A7WO.js} +13 -13
  168. package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
  169. package/chunks/{openaiContentGenerator-NSU3ERBH.js → openaiContentGenerator-FHKDWNI2.js} +9 -9
  170. package/chunks/{pidfile-LE3TU4GE.js → pidfile-SIIEJEEH.js} +23 -20
  171. package/chunks/{processUtils-YFBGJK67.js → processUtils-JF7CWBJC.js} +2 -2
  172. package/chunks/{prompt-terminal-ledger-4W4W7DSO.js → prompt-terminal-ledger-FXXHAEQU.js} +21 -20
  173. package/chunks/{qwenContentGenerator-HTA57WFC.js → qwenContentGenerator-KFJ77JP6.js} +16 -16
  174. package/chunks/{read-file-KHPQ2MB6.js → read-file-S2NOCBIL.js} +4 -4
  175. package/chunks/{resumeHistoryUtils-K7RV3QBN.js → resumeHistoryUtils-QHHPSQWU.js} +22 -21
  176. package/chunks/{ripGrep-NBBVCMG4.js → ripGrep-F6TNOJUO.js} +5 -5
  177. package/chunks/{run-qwen-serve-A3JBOZCM.js → run-qwen-serve-KYBDQRDD.js} +216 -64
  178. package/chunks/{runtime-7YOU2KJ3.js → runtime-3WNOFLCR.js} +32 -29
  179. package/chunks/{scheduled-tasks-52LXK7LN.js → scheduled-tasks-RNBH56DJ.js} +23 -22
  180. package/chunks/{scheduler-J44M72VM.js → scheduler-ERMW7Q7B.js} +22 -21
  181. package/chunks/{send-message-AWKUDJBH.js → send-message-V5T3NMFM.js} +3 -3
  182. package/chunks/{serve-TRC6XJUB.js → serve-7NV46RMP.js} +25 -24
  183. package/chunks/{server-YPNTJLX2.js → server-6RZJR5QF.js} +106 -154
  184. package/chunks/{session-FMMIBFYX.js → session-Z4EV7NVV.js} +91 -63
  185. package/chunks/{session-attachments-root-LDJMNK7K.js → session-attachments-root-SG5FC52X.js} +20 -19
  186. package/chunks/{session-pr-refresh-NLR4EK2J.js → session-pr-refresh-ILC4Z3ZM.js} +22 -21
  187. package/chunks/{settings-A46L577J.js → settings-Y47SPE3X.js} +24 -23
  188. package/chunks/{shell-Q5LSQPPY.js → shell-YBVCOPVO.js} +13 -13
  189. package/chunks/{skill-75KPJRCM.js → skill-AXC63EBA.js} +4 -4
  190. package/chunks/{skill-settings-775YT4YR.js → skill-settings-AFPAYGLO.js} +24 -23
  191. package/chunks/{spawnChannel-XY73I5CU.js → spawnChannel-ZFL4J2V3.js} +20 -19
  192. package/chunks/{standalone-update-L46XXNQ2.js → standalone-update-Y2OZPLNJ.js} +21 -20
  193. package/chunks/{start-opentui-ui-WLV43247.js → start-opentui-ui-G6TKT4LI.js} +449 -210
  194. package/chunks/{startInteractiveUI-F5DKMLOV.js → startInteractiveUI-YTNDPW7J.js} +1182 -1245
  195. package/chunks/{task-create-PMAFST2T.js → task-create-MWXJFRRM.js} +3 -3
  196. package/chunks/{task-list-R2HSY2NC.js → task-list-EYO3FE57.js} +2 -2
  197. package/chunks/{task-update-JYC57USF.js → task-update-2JJJRHMT.js} +3 -3
  198. package/chunks/{team-create-2PATB77U.js → team-create-BUFLGGSH.js} +13 -13
  199. package/chunks/{team-delete-CBHVBTPB.js → team-delete-IQZ6XGFI.js} +2 -2
  200. package/chunks/{team-plan-approval-QTANEWOS.js → team-plan-approval-OUWWM42U.js} +13 -13
  201. package/chunks/{terminal-image-renderer-OGULCFNF.js → terminal-image-renderer-WH2WV5ES.js} +20 -19
  202. package/chunks/{theme-manager-CNO3QERP.js → theme-manager-5UDRARM2.js} +20 -19
  203. package/chunks/{tool-search-VXWEOZE7.js → tool-search-MCDIRPHN.js} +4 -4
  204. package/chunks/{total-session-admission-4KAADZPB.js → total-session-admission-VL27U74Z.js} +21 -20
  205. package/chunks/{trustedFolders-PPJSOPOT.js → trustedFolders-MSXT4VDD.js} +21 -20
  206. package/chunks/{update-relaunch-4PT4MW7B.js → update-relaunch-JKLEWVCB.js} +5 -5
  207. package/chunks/{updateCheck-WAVFLWNG.js → updateCheck-ARTHAJT2.js} +20 -19
  208. package/chunks/{useAutoAcceptIndicator-XNED4NRB.js → useAutoAcceptIndicator-YEAAGYVU.js} +26 -25
  209. package/chunks/{validateNonInterActiveAuth-J676DUQ2.js → validateNonInterActiveAuth-EMRQKH5S.js} +56 -55
  210. package/chunks/{version-J6SRRQB2.js → version-HFQU35WD.js} +3 -1
  211. package/chunks/{web-fetch-FMZZYX44.js → web-fetch-QBXAO6VF.js} +4 -4
  212. package/chunks/{web-search-3G2KXCX5.js → web-search-2URQXA3A.js} +186 -9
  213. package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-BFDESDD4.js} +5 -4
  214. package/chunks/{workflow-PPZZICQ7.js → workflow-JDD6WDAH.js} +204 -68
  215. package/chunks/{workspace-providers-status-IIYTAQST.js → workspace-providers-status-B4IKR6YJ.js} +27 -26
  216. package/chunks/{workspace-registration-store-VHCDXAV7.js → workspace-registration-store-PJ3YHR45.js} +1 -2
  217. package/chunks/{workspace-registry-I7VQIPS2.js → workspace-registry-WVYJ5UGB.js} +21 -20
  218. package/chunks/{workspace-runtime-coordinator-DBGNY32G.js → workspace-runtime-coordinator-DXL5YVAG.js} +21 -20
  219. package/chunks/{workspace-service-QSKB2T54.js → workspace-service-QNGAMVH7.js} +26 -25
  220. package/chunks/{workspace-skills-status-T7GPT65J.js → workspace-skills-status-BEISJIII.js} +25 -24
  221. package/chunks/{workspace-trust-reconciler-2PKRDAU4.js → workspace-trust-reconciler-ORYJF5L4.js} +26 -25
  222. package/chunks/{write-file-L76CGFTQ.js → write-file-DWLKFBTJ.js} +14 -14
  223. package/chunks/{zoom-image-TDJJY2VZ.js → zoom-image-BYVIXSNQ.js} +4 -4
  224. package/cli.js +12 -12
  225. package/export-transcript-document.js +106 -106
  226. package/package.json +4 -4
  227. package/web-shell/assets/{abnfDiagram-VCTEODGH-DHc6plZn.js → abnfDiagram-VCTEODGH-C_8kzsly.js} +1 -1
  228. package/web-shell/assets/{arc-BQ9m8TDV.js → arc-CDg7Zfpm.js} +1 -1
  229. package/web-shell/assets/{architectureDiagram-5GKGNRK7-D5ap3oVB.js → architectureDiagram-5GKGNRK7-DZzdCWyF.js} +1 -1
  230. package/web-shell/assets/{blockDiagram-NRAW4CY4-BIbnyNph.js → blockDiagram-NRAW4CY4-DI3B4gyR.js} +1 -1
  231. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BRsdx_iG.js → c4Diagram-UCG6FXSJ-CfOgwHZW.js} +1 -1
  232. package/web-shell/assets/channel-e4xwS72w.js +1 -0
  233. package/web-shell/assets/{chunk-2Q5K7J3B-3lf1fNlx.js → chunk-2Q5K7J3B-B_PUth0g.js} +1 -1
  234. package/web-shell/assets/{chunk-5VM5RSS4-DP8VNRc4.js → chunk-5VM5RSS4-CrKtvBIL.js} +1 -1
  235. package/web-shell/assets/{chunk-F27PBJKO-DrohDmZ6.js → chunk-F27PBJKO-B4z2n8Py.js} +1 -1
  236. package/web-shell/assets/{chunk-G27WJ6UU-UZ2QhSx6.js → chunk-G27WJ6UU-BUtrFEO8.js} +1 -1
  237. package/web-shell/assets/{chunk-JWPE2WC7-BIMHVcZK.js → chunk-JWPE2WC7-Cqw3aXW0.js} +1 -1
  238. package/web-shell/assets/{chunk-LCL6LL3I-izRxdSDd.js → chunk-LCL6LL3I-CZolnvls.js} +1 -1
  239. package/web-shell/assets/{chunk-POPQ4Y6H-CXADD4PP.js → chunk-POPQ4Y6H-DivgasCa.js} +1 -1
  240. package/web-shell/assets/{chunk-SVP7TREG-B96d8Y_1.js → chunk-SVP7TREG--seyb1B6.js} +1 -1
  241. package/web-shell/assets/{chunk-XXDRQBXY-CF2sVQpv.js → chunk-XXDRQBXY-D7pHtuVM.js} +1 -1
  242. package/web-shell/assets/classDiagram-DTDB5LWJ-CzXfUUOt.js +1 -0
  243. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CzXfUUOt.js +1 -0
  244. package/web-shell/assets/{cose-bilkent-JH36ORCC-CT6tXVAS.js → cose-bilkent-JH36ORCC-4MWaRF_3.js} +1 -1
  245. package/web-shell/assets/{cynefin-OW5HDTMX-X1NS4vtV.js → cynefin-OW5HDTMX-nhJhAjgD.js} +1 -1
  246. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DNsKNOT4.js → cynefinDiagram-5FMLGOSQ-NF-PwXlq.js} +1 -1
  247. package/web-shell/assets/{dagre-3AP2YEHR-9-AHKqsb.js → dagre-3AP2YEHR-Bu0ncdWP.js} +1 -1
  248. package/web-shell/assets/{diagram-S7CK7UJ4-Bjgms7j6.js → diagram-S7CK7UJ4-CsvhFHZC.js} +1 -1
  249. package/web-shell/assets/{diagram-UQ7AKVKN-h6bCprbE.js → diagram-UQ7AKVKN-Ck61sIB3.js} +1 -1
  250. package/web-shell/assets/{diagram-VSXAHHWV-4SbQXVLt.js → diagram-VSXAHHWV-D0171zrb.js} +1 -1
  251. package/web-shell/assets/{diagram-VX7I27RA-B5gPCzzB.js → diagram-VX7I27RA-DvdxY4UL.js} +1 -1
  252. package/web-shell/assets/{diagram-Z3DM3KII-DFJXIA3A.js → diagram-Z3DM3KII-CGGpseiB.js} +1 -1
  253. package/web-shell/assets/{ebnfDiagram-PWID7BFC-FwyaU7VY.js → ebnfDiagram-PWID7BFC-K8-QMvY8.js} +1 -1
  254. package/web-shell/assets/{erDiagram-SSCWMZ5O-8vJQh2te.js → erDiagram-SSCWMZ5O-D316nAem.js} +1 -1
  255. package/web-shell/assets/{flowDiagram-A5DVABFB-BzA_1gMN.js → flowDiagram-A5DVABFB-B7siy_mn.js} +1 -1
  256. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-Co-ABbVX.js → ganttDiagram-EL5Y4UJY-BZQDxzTu.js} +1 -1
  257. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DW_FcyrX.js → gitGraphDiagram-WWUBYQGX-DZynLCSV.js} +1 -1
  258. package/web-shell/assets/{index-BbMXfhNG.js → index-9ie6xLTM.js} +1 -1
  259. package/web-shell/assets/{index-Bu-rZoJ-.js → index-DirkXQEg.js} +488 -474
  260. package/web-shell/assets/index-DzdST_7L.css +36 -0
  261. package/web-shell/assets/{infoDiagram-RXCK75RN-BEgfhUFN.js → infoDiagram-RXCK75RN-B0gr769A.js} +1 -1
  262. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DCsMxQmc.js → ishikawaDiagram-5VMMS53U-0pQFfjvX.js} +1 -1
  263. package/web-shell/assets/{journeyDiagram-EYS64GPL-DyIEYoHz.js → journeyDiagram-EYS64GPL-DEGtClWb.js} +1 -1
  264. package/web-shell/assets/{kanban-definition-3QL26DDD-CkxjqCNr.js → kanban-definition-3QL26DDD-CnN8gPzw.js} +1 -1
  265. package/web-shell/assets/{layout-BEWc0Al9.js → layout-C_70RhaT.js} +1 -1
  266. package/web-shell/assets/{linear-CNuNxirL.js → linear-BJ2ZLmcq.js} +1 -1
  267. package/web-shell/assets/{mermaid.core-DZBre674.js → mermaid.core-RlY0zPNC.js} +6 -6
  268. package/web-shell/assets/{mindmap-definition-FBJOCRG2-CpafFz_F.js → mindmap-definition-FBJOCRG2-CpVAxTNl.js} +1 -1
  269. package/web-shell/assets/{pegDiagram-XKGWAZYB-DfZqk_dq.js → pegDiagram-XKGWAZYB-DmrSv3hD.js} +1 -1
  270. package/web-shell/assets/{pieDiagram-E7YTZNPT-S0UWXlgC.js → pieDiagram-E7YTZNPT-CJmgp8KJ.js} +1 -1
  271. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-dd37_Ohj.js → quadrantDiagram-AXDQQJYC-UsgOyNco.js} +1 -1
  272. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CH8NJZ7u.js → railroadDiagram-O6MQD6OU-DQ6gMs_W.js} +1 -1
  273. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CFdqWYih.js → requirementDiagram-EFPCY7ZU-DhqadamF.js} +1 -1
  274. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CsddcEGD.js → sankeyDiagram-P5KCCOFB-R4WnURaE.js} +1 -1
  275. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BZ270mGw.js → sequenceDiagram-WJ2MYXX4-D7BwMi_D.js} +1 -1
  276. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CGaS4DBV.js → sizeCapture-X5ZJPWSS-Bqngz088.js} +1 -1
  277. package/web-shell/assets/{stateDiagram-HBIQ2CUA-COpIzMu6.js → stateDiagram-HBIQ2CUA-DwaXPGqn.js} +1 -1
  278. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-8GCQZAvv.js +1 -0
  279. package/web-shell/assets/{swimlanes-XN3QIQJK-CMF889m3.js → swimlanes-XN3QIQJK-BsaLeRDY.js} +1 -1
  280. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-BoRBF2Yw.js +8 -0
  281. package/web-shell/assets/{timeline-definition-24CTP7MA-BelnxYz5.js → timeline-definition-24CTP7MA-NJ9G-NUU.js} +1 -1
  282. package/web-shell/assets/{vennDiagram-4TSXK5OY-CU-NRqIB.js → vennDiagram-4TSXK5OY-Ca3W4rSq.js} +1 -1
  283. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CDNKqWh-.js → wardleyDiagram-VM6X3IG4-OabvjC-6.js} +1 -1
  284. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-CLqguL5D.js → xychartDiagram-S5SC5T6Z-C7rbjvpc.js} +1 -1
  285. package/web-shell/index.html +2 -2
  286. package/chunks/chunk-6YEOCHSE.js +0 -142
  287. package/chunks/chunk-X35VIWWJ.js +0 -276
  288. package/web-shell/assets/channel-uMMdTrYk.js +0 -1
  289. package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +0 -1
  290. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +0 -1
  291. package/web-shell/assets/index-CsPwZ1ut.css +0 -36
  292. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +0 -1
  293. 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-LNCNUMJ5.js";
27
+ } from "./chunk-SK6VACCM.js";
23
28
  import "./chunk-CALNF3Z3.js";
24
- import "./chunk-3VWPPK5Q.js";
29
+ import "./chunk-PWR6BQ3U.js";
25
30
  import {
26
31
  startPostRenderPrefetches
27
- } from "./chunk-L7V52QEZ.js";
32
+ } from "./chunk-HUJJFSMO.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-RNYENHN5.js";
45
+ } from "./chunk-WEU6O6VN.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-E7XSUYCZ.js";
56
+ } from "./chunk-VX2NR3SD.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-ENZDGHGJ.js";
67
+ } from "./chunk-76I36BEM.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-ZNO5BUAD.js";
100
+ } from "./chunk-4DIMJKWU.js";
93
101
  import {
94
102
  EXTENSION_RELOAD_FAILED_REASON,
95
103
  ExtensionRefreshState
96
- } from "./chunk-DXQ6Z7AH.js";
104
+ } from "./chunk-3O77M472.js";
97
105
  import {
98
106
  formatSupportedModes,
99
107
  getCommandDisplayName,
100
108
  getCommandSourceBadge,
101
109
  getCommandSourceGroup,
102
110
  getCommandSubcommandNames
103
- } from "./chunk-O2JBJQCF.js";
111
+ } from "./chunk-5HV2HPO7.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-MFYH2VXV.js";
119
+ } from "./chunk-A7QZIGRB.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-HUX2DOTF.js";
132
+ import "./chunk-DGNRLJ6S.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-D6AQNMUA.js";
149
+ import "./chunk-QA2B26PL.js";
140
150
  import {
141
151
  getErrorMessage as getErrorMessage2
142
- } from "./chunk-6JXHO7LG.js";
143
- import "./chunk-RXT4QBDX.js";
152
+ } from "./chunk-SYKPMH2X.js";
153
+ import "./chunk-5WBA3DEF.js";
144
154
  import "./chunk-XQ4RDO5B.js";
145
155
  import {
146
156
  setUpdateHandler
147
- } from "./chunk-T2IHCZLS.js";
157
+ } from "./chunk-VAWM3A5N.js";
148
158
  import "./chunk-EKTCKZV5.js";
149
- import "./chunk-YCEKI7QX.js";
159
+ import "./chunk-NV4YYXFT.js";
150
160
  import "./chunk-YAF2MQZ6.js";
151
161
  import "./chunk-24FVUD5P.js";
152
- import "./chunk-3YQMUBTS.js";
162
+ import "./chunk-EYCW6UF2.js";
153
163
  import "./chunk-6H67XLET.js";
154
- import "./chunk-TWWS7XUW.js";
164
+ import "./chunk-HWLLUDIA.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-5IL2BZHW.js";
185
- import "./chunk-6QILGINT.js";
196
+ } from "./chunk-O6BFERWN.js";
197
+ import "./chunk-LOBKNYPR.js";
186
198
  import "./chunk-7U5G6JXI.js";
187
199
  import "./chunk-WCCLLK7X.js";
188
200
  import {
189
201
  getReasoningEffortsForConfig
190
- } from "./chunk-JGDRB4FP.js";
191
- import "./chunk-ARYNBBBM.js";
202
+ } from "./chunk-N3Z6Q7KC.js";
203
+ import "./chunk-6GAYNM3F.js";
192
204
  import "./chunk-HWVUSYSN.js";
193
- import "./chunk-5WC2ECUK.js";
194
- import "./chunk-DZ6D4B3K.js";
195
- import "./chunk-EEKU6COG.js";
205
+ import "./chunk-KECCLCXM.js";
206
+ import "./chunk-EDSU3VUG.js";
207
+ import "./chunk-6S7YYUUH.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-JFAGT5YG.js";
210
+ import "./chunk-7IDZFJAV.js";
211
+ import "./chunk-AUTUFD5X.js";
200
212
  import "./chunk-V6WHFGST.js";
201
213
  import {
202
214
  createLoadedSettingsAdapter
203
- } from "./chunk-FW4E4QPG.js";
204
- import "./chunk-45ROPFQY.js";
215
+ } from "./chunk-DVOCOIS5.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-TGC4264Q.js";
236
+ } from "./chunk-OVTPETDL.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-66JBCTJF.js";
253
+ } from "./chunk-Y7YHAY32.js";
241
254
  import {
242
255
  TOGGLE_TYPES
243
- } from "./chunk-2ZFO5JD7.js";
256
+ } from "./chunk-LOVGQ3HZ.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-5CVY5Q2P.js";
264
+ import "./chunk-43EUMPKQ.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-27LTEY6D.js";
271
+ } from "./chunk-ATBLEXXV.js";
258
272
  import "./chunk-W3N5XAZ6.js";
259
- import "./chunk-3VDLQUR2.js";
273
+ import "./chunk-D6AGS266.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-ZU2T5JIS.js";
281
+ generatePromptSuggestion
282
+ } from "./chunk-ZEFWBG2C.js";
278
283
  import "./chunk-GELRJXE2.js";
279
284
  import "./chunk-32CM56LO.js";
280
- import "./chunk-WJDXKQIO.js";
285
+ import "./chunk-3A2IMUDH.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-6SADVYQQ.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-PLEBBGHL.js";
301
+ import "./chunk-JGTMTJSQ.js";
286
302
  import "./chunk-DJXSOEFB.js";
287
- import "./chunk-25CBAK3H.js";
303
+ import "./chunk-LKBOBUA2.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-7K4GGN3D.js";
292
308
  import "./chunk-BUQN5LTI.js";
293
309
  import "./chunk-XDNFODER.js";
294
- import "./chunk-YAC7H4K3.js";
310
+ import "./chunk-SM66GFKJ.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-PDUMGZ2P.js";
341
+ } from "./chunk-BDAVT6K2.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-F4SAL7WM.js";
374
+ import "./chunk-CH2YDT6X.js";
359
375
  import {
360
376
  APPROVAL_MODES
361
377
  } from "./chunk-JX6XHPTX.js";
@@ -363,10 +379,10 @@ import "./chunk-CLKE4IY3.js";
363
379
  import "./chunk-ZSTCM3MX.js";
364
380
  import "./chunk-SOA4HKRJ.js";
365
381
  import "./chunk-MLXTMF7H.js";
366
- import "./chunk-3LPJ776W.js";
382
+ import "./chunk-2HYOOFDS.js";
367
383
  import "./chunk-3CZ2BQV6.js";
368
384
  import "./chunk-PQEISIKS.js";
369
- import "./chunk-VF6D6EGV.js";
385
+ import "./chunk-HSO6D4KX.js";
370
386
  import "./chunk-H3Q3RSKZ.js";
371
387
  import "./chunk-S6LOFUVP.js";
372
388
  import "./chunk-NAVJD2PQ.js";
@@ -374,10 +390,7 @@ import "./chunk-OFVAS4AR.js";
374
390
  import "./chunk-HNLMYDQE.js";
375
391
  import "./chunk-QHMLYMMS.js";
376
392
  import "./chunk-CFKIH3D3.js";
377
- import {
378
- REASONING_EFFORT_TIERS,
379
- applyReasoningEffort
380
- } from "./chunk-6YEOCHSE.js";
393
+ import "./chunk-AXMWHKXA.js";
381
394
  import "./chunk-DJ2GSRLV.js";
382
395
  import "./chunk-4ALNJDHL.js";
383
396
  import "./chunk-NOO4QFXM.js";
@@ -406,9 +419,9 @@ import {
406
419
  shouldRunVisionBridge,
407
420
  splitImageParts,
408
421
  uiTelemetryService
409
- } from "./chunk-6QV7Z74P.js";
422
+ } from "./chunk-FRS3P7MQ.js";
410
423
  import "./chunk-5ETULJLP.js";
411
- import "./chunk-XBVNNDPK.js";
424
+ import "./chunk-GSYD7MYP.js";
412
425
  import "./chunk-VGC4I5JJ.js";
413
426
  import {
414
427
  getAllGeminiMdFilenames,
@@ -418,9 +431,12 @@ import {
418
431
  import "./chunk-EDIDYZBT.js";
419
432
  import "./chunk-HD7O6WLV.js";
420
433
  import "./chunk-WZAD4ZNJ.js";
421
- import "./chunk-FPGTNKCP.js";
434
+ import {
435
+ REASONING_EFFORT_TIERS,
436
+ applyReasoningEffort
437
+ } from "./chunk-F3M6P6IQ.js";
422
438
  import "./chunk-TIGXX4PA.js";
423
- import "./chunk-N7YQEKGX.js";
439
+ import "./chunk-EOLGAQ25.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-OPMKGOLD.js";
468
+ import "./chunk-6VIATHL7.js";
451
469
  import "./chunk-HRPFBHW7.js";
452
470
  import {
453
471
  registerCleanup,
454
472
  runExitCleanup
455
- } from "./chunk-USN6VNTO.js";
473
+ } from "./chunk-C24ZDDNY.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();
@@ -41097,6 +41115,9 @@ function renderResultDisplay(display) {
41097
41115
  if (Array.isArray(o["ansiOutput"])) {
41098
41116
  return o["ansiOutput"].map((line) => line.map((t3) => t3.text ?? "").join("")).join("\n");
41099
41117
  }
41118
+ if (o["type"] === "ask_user_question_answers" && typeof o["text"] === "string") {
41119
+ return o["text"];
41120
+ }
41100
41121
  if (o["type"] === "plan_summary") {
41101
41122
  const message = typeof o["message"] === "string" ? o["message"] : "";
41102
41123
  const plan = typeof o["plan"] === "string" ? o["plan"] : "";
@@ -47184,7 +47205,7 @@ __name(filterSettingsItems, "filterSettingsItems");
47184
47205
  function nextToggleValue(definition, currentValue) {
47185
47206
  if (!definition || !TOGGLE_TYPES.has(definition.type)) return void 0;
47186
47207
  if (definition.type === "boolean") {
47187
- return !currentValue;
47208
+ return nextBooleanSettingValue(currentValue, definition.default);
47188
47209
  }
47189
47210
  if (definition.type === "enum" && definition.options) {
47190
47211
  const options = definition.options;
@@ -53464,9 +53485,212 @@ ${current}` : popped);
53464
53485
  }
53465
53486
  __name(OpenTuiInputPrompt, "OpenTuiInputPrompt");
53466
53487
 
53467
- // packages/cli/src/ui/opentui/dialogs-confirm.tsx
53488
+ // packages/cli/src/ui/opentui/opentui-header.tsx
53468
53489
  init_esbuild_shims();
53469
53490
  var import_react48 = __toESM(require_react(), 1);
53491
+ var LOGO_GRADIENT = ["#4796E4", "#847ACE", "#C3677F"];
53492
+ function lerpHex(a, b3, t3) {
53493
+ const pa = [1, 3, 5].map((i) => parseInt(a.slice(i, i + 2), 16));
53494
+ const pb = [1, 3, 5].map((i) => parseInt(b3.slice(i, i + 2), 16));
53495
+ return "#" + pa.map(
53496
+ (v3, i) => Math.round(v3 + (pb[i] - v3) * t3).toString(16).padStart(2, "0")
53497
+ ).join("");
53498
+ }
53499
+ __name(lerpHex, "lerpHex");
53500
+ function gradientAt(stops, t3) {
53501
+ if (stops.length === 0) return C2.accent;
53502
+ if (stops.length === 1) return stops[0];
53503
+ const seg = Math.min(stops.length - 1, Math.floor(t3 * (stops.length - 1)));
53504
+ const lt = t3 * (stops.length - 1) - seg;
53505
+ return lerpHex(stops[seg], stops[seg + 1], lt);
53506
+ }
53507
+ __name(gradientAt, "gradientAt");
53508
+ function GradientLogo({ logo }) {
53509
+ const lines = logo.replace(/^\n/, "").split("\n");
53510
+ const w3 = Math.max(...lines.map((l) => [...l].length), 1);
53511
+ 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)) });
53512
+ }
53513
+ __name(GradientLogo, "GradientLogo");
53514
+ function buildBanner(config, settings, width) {
53515
+ const versionLabel = formatVersionLabel(config.getCliVersion() ?? "unknown");
53516
+ const cg = config.getContentGeneratorConfig();
53517
+ const model = config.getModelDisplayName();
53518
+ const targetDir = config.getTargetDir();
53519
+ let authLabel = "";
53520
+ try {
53521
+ if (cg?.authType) {
53522
+ const matched = findProviderByCredentials(cg.baseUrl, cg.apiKeyEnvKey);
53523
+ authLabel = matched && resolveMetadataKey(matched) && matched.label || (cg.authType === "qwen-oauth" ? "Qwen OAuth" : "API Key");
53524
+ }
53525
+ } catch {
53526
+ authLabel = "";
53527
+ }
53528
+ const authModelText = authLabel ? `${authLabel} | ${model}` : model;
53529
+ const hint = " (/model to change)";
53530
+ const custom = resolveCustomBanner(settings);
53531
+ const containerMarginX = 2;
53532
+ const logoGap = 2;
53533
+ const infoPanelChromeWidth = 2 + 1 * 2;
53534
+ const minInfoPanelWidth = 40 + infoPanelChromeWidth;
53535
+ const available = Math.max(0, width - containerMarginX * 2);
53536
+ const hasCustomArt = Boolean(custom.asciiArt.small || custom.asciiArt.large);
53537
+ const customTier = pickAsciiArtTier(
53538
+ custom.asciiArt.small,
53539
+ custom.asciiArt.large,
53540
+ available,
53541
+ logoGap,
53542
+ minInfoPanelWidth,
53543
+ getAsciiArtWidth
53544
+ );
53545
+ const displayLogo = customTier ?? (hasCustomArt ? "" : shortAsciiLogo);
53546
+ const logoWidth = getAsciiArtWidth(displayLogo);
53547
+ const showLogo = displayLogo !== "" && available >= logoWidth + logoGap + minInfoPanelWidth;
53548
+ const maxInfoPanelWidth = 60;
53549
+ const infoPanelWidth = showLogo ? Math.min(available - logoWidth - logoGap, maxInfoPanelWidth) : available;
53550
+ const maxPathLength = Math.max(0, infoPanelWidth - infoPanelChromeWidth);
53551
+ const infoPanelContentWidth = Math.max(
53552
+ 0,
53553
+ infoPanelWidth - infoPanelChromeWidth
53554
+ );
53555
+ const showModelHint = infoPanelContentWidth > 0 && getCachedStringWidth(authModelText + hint) <= infoPanelContentWidth;
53556
+ const shortenedPath = shortenPath(
53557
+ tildeifyPath(targetDir),
53558
+ Math.max(3, maxPathLength)
53559
+ );
53560
+ const displayPath = maxPathLength <= 0 ? "" : shortenedPath.length > maxPathLength ? shortenedPath.slice(0, maxPathLength) : shortenedPath;
53561
+ const infoPanel = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
53562
+ "box",
53563
+ {
53564
+ flexDirection: "column",
53565
+ borderStyle: "single",
53566
+ paddingX: 1,
53567
+ width: infoPanelWidth,
53568
+ flexGrow: showLogo ? 0 : 1,
53569
+ children: [
53570
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "row", children: [
53571
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.accent, attributes: 1, children: custom.title ?? ">_ Qwen Code" }),
53572
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: ` (${versionLabel})` })
53573
+ ] }),
53574
+ custom.subtitle ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: custom.subtitle }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { children: " " }),
53575
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "row", children: [
53576
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: authModelText }),
53577
+ showModelHint && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: hint })
53578
+ ] }),
53579
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: displayPath })
53580
+ ]
53581
+ }
53582
+ );
53583
+ if (!showLogo) {
53584
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
53585
+ "box",
53586
+ {
53587
+ marginLeft: containerMarginX,
53588
+ marginRight: containerMarginX,
53589
+ flexShrink: 0,
53590
+ children: infoPanel
53591
+ }
53592
+ );
53593
+ }
53594
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
53595
+ "box",
53596
+ {
53597
+ flexDirection: "row",
53598
+ alignItems: "center",
53599
+ marginLeft: containerMarginX,
53600
+ marginRight: containerMarginX,
53601
+ flexShrink: 0,
53602
+ children: [
53603
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(GradientLogo, { logo: displayLogo }),
53604
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("box", { width: logoGap }),
53605
+ infoPanel
53606
+ ]
53607
+ }
53608
+ );
53609
+ }
53610
+ __name(buildBanner, "buildBanner");
53611
+ function OpenTuiBanner({ config, settings }) {
53612
+ const { width } = useTerminalDimensions();
53613
+ const showBanner = !config.getScreenReader() && !settings.merged.ui?.hideBanner;
53614
+ const banner = (0, import_react48.useMemo)(
53615
+ () => showBanner ? buildBanner(config, settings, width) : null,
53616
+ [showBanner, config, settings, width]
53617
+ );
53618
+ return banner;
53619
+ }
53620
+ __name(OpenTuiBanner, "OpenTuiBanner");
53621
+
53622
+ // packages/cli/src/ui/opentui/opentui-footer.tsx
53623
+ init_esbuild_shims();
53624
+ var import_react50 = __toESM(require_react(), 1);
53625
+ import nodePath2 from "node:path";
53626
+ function Spinner() {
53627
+ const [frame, setFrame] = (0, import_react50.useState)(0);
53628
+ (0, import_react50.useEffect)(() => {
53629
+ const spin = setInterval(() => setFrame((f2) => f2 + 1), SPINNER_INTERVAL_MS);
53630
+ return () => clearInterval(spin);
53631
+ }, []);
53632
+ 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] }) });
53633
+ }
53634
+ __name(Spinner, "Spinner");
53635
+ function OpenTuiLoadingIndicator({
53636
+ streaming
53637
+ }) {
53638
+ const [elapsed, setElapsed] = (0, import_react50.useState)(0);
53639
+ const { width } = useTerminalDimensions();
53640
+ const phrase = usePhraseCycler(streaming, false);
53641
+ (0, import_react50.useEffect)(() => {
53642
+ if (!streaming) return;
53643
+ setElapsed(0);
53644
+ const tick = setInterval(() => setElapsed((s) => s + 1), 1e3);
53645
+ return () => clearInterval(tick);
53646
+ }, [streaming]);
53647
+ if (!streaming) return null;
53648
+ const suffix2 = t("({{time}}{{tokens}} \xB7 esc to cancel)", {
53649
+ time: `${elapsed}s`,
53650
+ tokens: ""
53651
+ });
53652
+ const phraseBudget = Math.max(0, width - 5 - getCachedStringWidth(suffix2));
53653
+ const line = [truncateToWidth(phrase, phraseBudget), suffix2].filter(Boolean).join(" ");
53654
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { paddingLeft: 1, paddingRight: 1, flexDirection: "row", children: [
53655
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Spinner, {}),
53656
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: line })
53657
+ ] });
53658
+ }
53659
+ __name(OpenTuiLoadingIndicator, "OpenTuiLoadingIndicator");
53660
+ function OpenTuiFooter({
53661
+ config,
53662
+ streaming,
53663
+ queueLength = 0,
53664
+ sessionName = null,
53665
+ approvalMode
53666
+ }) {
53667
+ const { width } = useTerminalDimensions();
53668
+ const targetDir = config.getTargetDir();
53669
+ const gitBranch = useGitBranchName(targetDir) ?? "";
53670
+ const footerModel = config.getModel();
53671
+ const promptTokenCount = uiTelemetryService.getLastPromptTokenCount();
53672
+ const contextWindowSize = config.getContentGeneratorConfig()?.contextWindowSize;
53673
+ const contextLabel = contextWindowSize && promptTokenCount > 0 ? ` \xB7 ${fmtTokens(contextWindowSize)} ${formatPercentageUsed(
53674
+ promptTokenCount / contextWindowSize
53675
+ )}${contextUsageLabel(width)}` : "";
53676
+ const footerLine1 = `\u279C ${nodePath2.basename(targetDir)}` + (sessionName ? ` \xB7 ${sessionName}` : "") + (gitBranch ? ` \xB7 git:(${gitBranch})` : "") + (footerModel ? ` \xB7 ${footerModel}` : "") + contextLabel;
53677
+ const hintSegments = [
53678
+ streaming ? t("Enter to steer \xB7 Ctrl+Q to queue") : null,
53679
+ approvalMode ? formatApprovalModeName(approvalMode) : null,
53680
+ queueLength > 0 ? `\u23F3 ${t("{{count}} queued", { count: String(queueLength) })}` : null
53681
+ ].filter((segment) => segment !== null);
53682
+ const footerLine2 = hintSegments.join(" \xB7 ");
53683
+ const rowBudget = Math.max(0, width - 2);
53684
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", paddingLeft: 1, paddingRight: 1, flexShrink: 0, children: [
53685
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: truncateToWidth(footerLine1, rowBudget) }),
53686
+ footerLine2 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { fg: C2.dim, children: truncateToWidth(footerLine2, rowBudget) })
53687
+ ] });
53688
+ }
53689
+ __name(OpenTuiFooter, "OpenTuiFooter");
53690
+
53691
+ // packages/cli/src/ui/opentui/dialogs-confirm.tsx
53692
+ init_esbuild_shims();
53693
+ var import_react52 = __toESM(require_react(), 1);
53470
53694
 
53471
53695
  // packages/cli/src/ui/opentui/diff-render.ts
53472
53696
  init_esbuild_shims();
@@ -53587,7 +53811,7 @@ function buildOutcomeOptions(details) {
53587
53811
  }
53588
53812
  __name(buildOutcomeOptions, "buildOutcomeOptions");
53589
53813
  function DiffBody({ fileDiff }) {
53590
- const lines = (0, import_react48.useMemo)(() => renderDiffBody(fileDiff), [fileDiff]);
53814
+ const lines = (0, import_react52.useMemo)(() => renderDiffBody(fileDiff), [fileDiff]);
53591
53815
  const window = tailWindow(lines, MAX_BODY_ROWS);
53592
53816
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", children: [
53593
53817
  window.hiddenCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -53602,14 +53826,14 @@ function DiffBody({ fileDiff }) {
53602
53826
  }
53603
53827
  __name(DiffBody, "DiffBody");
53604
53828
  function TextBody({ text }) {
53605
- const [expanded, setExpanded] = (0, import_react48.useState)(false);
53829
+ const [expanded, setExpanded] = (0, import_react52.useState)(false);
53606
53830
  const { width, height } = useTerminalDimensions();
53607
- const rows = (0, import_react48.useMemo)(() => sanitizeTerminalText(text).split("\n"), [text]);
53608
- const window = (0, import_react48.useMemo)(
53831
+ const rows = (0, import_react52.useMemo)(() => sanitizeTerminalText(text).split("\n"), [text]);
53832
+ const window = (0, import_react52.useMemo)(
53609
53833
  () => headWindowPhysical(rows, width, MAX_BODY_ROWS),
53610
53834
  [rows, width]
53611
53835
  );
53612
- const expandedWindow = (0, import_react48.useMemo)(
53836
+ const expandedWindow = (0, import_react52.useMemo)(
53613
53837
  () => tailWindowPhysical(
53614
53838
  rows,
53615
53839
  width,
@@ -53691,7 +53915,7 @@ function ConfirmationBody({
53691
53915
  }
53692
53916
  __name(ConfirmationBody, "ConfirmationBody");
53693
53917
  function OutcomeSelect(props) {
53694
- const items = (0, import_react48.useMemo)(
53918
+ const items = (0, import_react52.useMemo)(
53695
53919
  () => props.options.map((option, index) => ({
53696
53920
  key: `${option.value}-${index}`,
53697
53921
  value: option.value,
@@ -53724,8 +53948,8 @@ __name(OutcomeSelect, "OutcomeSelect");
53724
53948
  function OpenTuiToolConfirmation(props) {
53725
53949
  const { call, onSettled } = props;
53726
53950
  const details = call.confirmationDetails;
53727
- const settledRef = (0, import_react48.useRef)(false);
53728
- const settle = (0, import_react48.useCallback)(
53951
+ const settledRef = (0, import_react52.useRef)(false);
53952
+ const settle = (0, import_react52.useCallback)(
53729
53953
  (outcome, payload) => {
53730
53954
  if (settledRef.current) return;
53731
53955
  settledRef.current = true;
@@ -53779,12 +54003,12 @@ function OpenTuiToolConfirmation(props) {
53779
54003
  __name(OpenTuiToolConfirmation, "OpenTuiToolConfirmation");
53780
54004
  function AskUserQuestionFlow(props) {
53781
54005
  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());
54006
+ const [index, setIndex] = (0, import_react52.useState)(0);
54007
+ const [answers, setAnswers] = (0, import_react52.useState)({});
54008
+ const [selected, setSelected] = (0, import_react52.useState)(/* @__PURE__ */ new Set());
53785
54009
  const question = details.questions[index];
53786
54010
  const isMulti = question?.multiSelect === true;
53787
- const commitQuestion = (0, import_react48.useCallback)(
54011
+ const commitQuestion = (0, import_react52.useCallback)(
53788
54012
  (value) => {
53789
54013
  if (value === void 0) return;
53790
54014
  const nextAnswers = { ...answers, [index]: value };
@@ -53802,7 +54026,7 @@ function AskUserQuestionFlow(props) {
53802
54026
  },
53803
54027
  [answers, index, details.questions.length, onAnswered]
53804
54028
  );
53805
- const items = (0, import_react48.useMemo)(
54029
+ const items = (0, import_react52.useMemo)(
53806
54030
  () => (question?.options ?? []).map((option, i) => ({
53807
54031
  key: `${option.label}-${i}`,
53808
54032
  value: option.label
@@ -53837,7 +54061,7 @@ function AskUserQuestionFlow(props) {
53837
54061
  commitQuestion([...selected].join(", "));
53838
54062
  }
53839
54063
  });
53840
- (0, import_react48.useEffect)(() => {
54064
+ (0, import_react52.useEffect)(() => {
53841
54065
  if (details.questions.length === 0 || !question?.options?.length) {
53842
54066
  onAnswered(null);
53843
54067
  }
@@ -53880,7 +54104,7 @@ function AskUserQuestionFlow(props) {
53880
54104
  __name(AskUserQuestionFlow, "AskUserQuestionFlow");
53881
54105
  function OpenTuiShellConfirmation(props) {
53882
54106
  const { commands, onResolve } = props;
53883
- const options = (0, import_react48.useMemo)(
54107
+ const options = (0, import_react52.useMemo)(
53884
54108
  () => [
53885
54109
  {
53886
54110
  label: t("Yes, allow once"),
@@ -53927,7 +54151,7 @@ function OpenTuiShellConfirmation(props) {
53927
54151
  __name(OpenTuiShellConfirmation, "OpenTuiShellConfirmation");
53928
54152
  function OpenTuiActionConfirmation(props) {
53929
54153
  const { prompt, onResolve } = props;
53930
- const options = (0, import_react48.useMemo)(
54154
+ const options = (0, import_react52.useMemo)(
53931
54155
  () => [
53932
54156
  { key: "yes", value: true },
53933
54157
  { key: "no", value: false }
@@ -53995,22 +54219,22 @@ function OpenTuiApp(props) {
53995
54219
  onPromptSuggestionDismiss,
53996
54220
  onPromptSuggestionAbort
53997
54221
  } = props;
53998
- const [dialog, setDialog] = (0, import_react50.useState)(
54222
+ const [dialog, setDialog] = (0, import_react54.useState)(
53999
54223
  props.initialDialog ?? null
54000
54224
  );
54001
- const [noticeText, setNoticeText] = (0, import_react50.useState)(null);
54002
- const [commandList, setCommandList] = (0, import_react50.useState)(
54225
+ const [noticeText, setNoticeText] = (0, import_react54.useState)(null);
54226
+ const [commandList, setCommandList] = (0, import_react54.useState)(
54003
54227
  commands ?? []
54004
54228
  );
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());
54229
+ const notify = (0, import_react54.useCallback)((text) => setNoticeText(text), []);
54230
+ const [shellModeActive, setShellModeActive] = (0, import_react54.useState)(false);
54231
+ const shellControllersRef = (0, import_react54.useRef)(/* @__PURE__ */ new Set());
54008
54232
  const { width: terminalWidth, height: terminalHeight } = useTerminalDimensions();
54009
- const toggleShellMode = (0, import_react50.useCallback)(
54233
+ const toggleShellMode = (0, import_react54.useCallback)(
54010
54234
  () => setShellModeActive((active) => !active),
54011
54235
  []
54012
54236
  );
54013
- const runShellCommand = (0, import_react50.useCallback)(
54237
+ const runShellCommand = (0, import_react54.useCallback)(
54014
54238
  (command) => {
54015
54239
  const emit = props.onTranscriptEvent;
54016
54240
  if (!emit) return;
@@ -54041,7 +54265,7 @@ function OpenTuiApp(props) {
54041
54265
  },
54042
54266
  [config, props.onTranscriptEvent, terminalWidth, terminalHeight]
54043
54267
  );
54044
- (0, import_react50.useEffect)(
54268
+ (0, import_react54.useEffect)(
54045
54269
  () => () => {
54046
54270
  for (const controller of shellControllersRef.current) {
54047
54271
  controller.abort();
@@ -54049,7 +54273,7 @@ function OpenTuiApp(props) {
54049
54273
  },
54050
54274
  []
54051
54275
  );
54052
- const handleSelectSetting = (0, import_react50.useCallback)((name) => {
54276
+ const handleSelectSetting = (0, import_react54.useCallback)((name) => {
54053
54277
  if (name === "ui.theme") setDialog({ dialog: "theme" });
54054
54278
  else if (name === "general.preferredEditor")
54055
54279
  setDialog({ dialog: "editor" });
@@ -54058,15 +54282,15 @@ function OpenTuiApp(props) {
54058
54282
  setDialog({ dialog: "model", mode: "vision" });
54059
54283
  else setDialog(null);
54060
54284
  }, []);
54061
- const fillComposer = (0, import_react50.useCallback)(
54285
+ const fillComposer = (0, import_react54.useCallback)(
54062
54286
  (text) => {
54063
54287
  injectCapturedInput(() => props.composerHandle?.current ?? null, text);
54064
54288
  },
54065
54289
  [props.composerHandle]
54066
54290
  );
54067
- const [modals, setModals] = (0, import_react50.useState)([]);
54068
- const modalSeq = (0, import_react50.useRef)(0);
54069
- const confirmations = (0, import_react50.useMemo)(
54291
+ const [modals, setModals] = (0, import_react54.useState)([]);
54292
+ const modalSeq = (0, import_react54.useRef)(0);
54293
+ const confirmations = (0, import_react54.useMemo)(
54070
54294
  () => ({
54071
54295
  presentShell: /* @__PURE__ */ __name((commandsToRun) => new Promise((resolve4) => {
54072
54296
  modalSeq.current += 1;
@@ -54091,14 +54315,14 @@ function OpenTuiApp(props) {
54091
54315
  []
54092
54316
  );
54093
54317
  const activeModal = modals[0] ?? null;
54094
- const closeShellModal = (0, import_react50.useCallback)(
54318
+ const closeShellModal = (0, import_react54.useCallback)(
54095
54319
  (modal, resolution) => {
54096
54320
  setModals((prev) => prev.filter((m3) => m3.id !== modal.id));
54097
54321
  modal.resolve(resolution);
54098
54322
  },
54099
54323
  []
54100
54324
  );
54101
- const closeActionModal = (0, import_react50.useCallback)(
54325
+ const closeActionModal = (0, import_react54.useCallback)(
54102
54326
  (modal, confirmed) => {
54103
54327
  setModals((prev) => prev.filter((m3) => m3.id !== modal.id));
54104
54328
  modal.resolve(confirmed);
@@ -54106,7 +54330,7 @@ function OpenTuiApp(props) {
54106
54330
  []
54107
54331
  );
54108
54332
  const activeToolCall = waitingToolCalls?.[0] ?? null;
54109
- const transcript = (0, import_react50.useMemo)(
54333
+ const transcript = (0, import_react54.useMemo)(
54110
54334
  () => ({
54111
54335
  reset: /* @__PURE__ */ __name((events) => onTranscriptReset?.(events), "reset"),
54112
54336
  // /clear semantics: a fresh transcript — the live turn's reset with an
@@ -54116,7 +54340,7 @@ function OpenTuiApp(props) {
54116
54340
  }),
54117
54341
  [onTranscriptReset, onTranscriptEvent]
54118
54342
  );
54119
- const host = (0, import_react50.useMemo)(
54343
+ const host = (0, import_react54.useMemo)(
54120
54344
  () => new OpenTuiAppHost({
54121
54345
  config,
54122
54346
  settings,
@@ -54145,27 +54369,27 @@ function OpenTuiApp(props) {
54145
54369
  getSessionStats
54146
54370
  ]
54147
54371
  );
54148
- (0, import_react50.useSyncExternalStore)(
54149
- (0, import_react50.useCallback)((cb) => host.subscribe(cb), [host]),
54150
- (0, import_react50.useCallback)(() => host.getVersion(), [host])
54372
+ (0, import_react54.useSyncExternalStore)(
54373
+ (0, import_react54.useCallback)((cb) => host.subscribe(cb), [host]),
54374
+ (0, import_react54.useCallback)(() => host.getVersion(), [host])
54151
54375
  );
54152
- (0, import_react50.useEffect)(() => {
54376
+ (0, import_react54.useEffect)(() => {
54153
54377
  host.setStreaming(!!streaming);
54154
54378
  }, [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)(() => {
54379
+ const gateway = (0, import_react54.useMemo)(() => new OpenTuiSlashGateway(), []);
54380
+ const reloadRef = (0, import_react54.useRef)(null);
54381
+ const deferredCommandsRef = (0, import_react54.useRef)([]);
54382
+ const [deferredRevision, setDeferredRevision] = (0, import_react54.useState)(0);
54383
+ const drainingRef = (0, import_react54.useRef)(false);
54384
+ const streamingRef = (0, import_react54.useRef)(streaming);
54385
+ (0, import_react54.useEffect)(() => {
54162
54386
  streamingRef.current = streaming;
54163
54387
  }, [streaming]);
54164
- const dialogRef = (0, import_react50.useRef)(dialog);
54165
- (0, import_react50.useEffect)(() => {
54388
+ const dialogRef = (0, import_react54.useRef)(dialog);
54389
+ (0, import_react54.useEffect)(() => {
54166
54390
  dialogRef.current = dialog;
54167
54391
  }, [dialog]);
54168
- (0, import_react50.useEffect)(() => {
54392
+ (0, import_react54.useEffect)(() => {
54169
54393
  const dispatcher = new OpenTuiSlashDispatcher(
54170
54394
  host,
54171
54395
  { config, settings, logger, extensionRefreshState },
@@ -54200,7 +54424,7 @@ function OpenTuiApp(props) {
54200
54424
  commands,
54201
54425
  extensionRefreshState
54202
54426
  ]);
54203
- const applyOutcome = (0, import_react50.useCallback)(
54427
+ const applyOutcome = (0, import_react54.useCallback)(
54204
54428
  (outcome) => {
54205
54429
  switch (outcome.kind) {
54206
54430
  case "handled":
@@ -54238,7 +54462,7 @@ function OpenTuiApp(props) {
54238
54462
  },
54239
54463
  [onSubmitPrompt, onQuit, onInterrupt, onPopQueue, notify]
54240
54464
  );
54241
- const onSubmit = (0, import_react50.useCallback)(
54465
+ const onSubmit = (0, import_react54.useCallback)(
54242
54466
  async (text, imagePaths) => {
54243
54467
  setNoticeText(null);
54244
54468
  const submission = normalizeQuitSubmission(text);
@@ -54296,7 +54520,7 @@ function OpenTuiApp(props) {
54296
54520
  runShellCommand
54297
54521
  ]
54298
54522
  );
54299
- (0, import_react50.useEffect)(() => {
54523
+ (0, import_react54.useEffect)(() => {
54300
54524
  if (isExitInProgress()) return;
54301
54525
  if (streaming || dialog || shellControllersRef.current.size > 0 || deferredCommandsRef.current.length === 0) {
54302
54526
  return;
@@ -54363,7 +54587,7 @@ function OpenTuiApp(props) {
54363
54587
  onSubmitPrompt,
54364
54588
  runShellCommand
54365
54589
  ]);
54366
- const userMessages = (0, import_react50.useMemo)(
54590
+ const userMessages = (0, import_react54.useMemo)(
54367
54591
  () => host.getHistory().filter((item) => item.type === "user").map((item) => item.text ?? ""),
54368
54592
  // eslint-disable-next-line react-hooks/exhaustive-deps
54369
54593
  [host, host.getVersion()]
@@ -54374,6 +54598,7 @@ function OpenTuiApp(props) {
54374
54598
  recordForExitEcho: true,
54375
54599
  onError: (error) => onRenderError?.(error),
54376
54600
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", flexGrow: 1, flexShrink: 0, children: [
54601
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(OpenTuiBanner, { config, settings }),
54377
54602
  renderMain ? renderMain() : null,
54378
54603
  !dialog && !activeModal && !activeToolCall && updateNotice ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { children: updateNotice }) : null,
54379
54604
  noticeText ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", { children: noticeText }) : null,
@@ -54414,26 +54639,39 @@ function OpenTuiApp(props) {
54414
54639
  availableTerminalHeight: props.availableTerminalHeight
54415
54640
  },
54416
54641
  dialog.dialog
54417
- ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
54418
- OpenTuiInputPrompt,
54642
+ ) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
54643
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(OpenTuiLoadingIndicator, { streaming: Boolean(streaming) }),
54644
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
54645
+ OpenTuiInputPrompt,
54646
+ {
54647
+ onSubmit: (text, imagePaths) => {
54648
+ void onSubmit(text, imagePaths);
54649
+ },
54650
+ userMessages,
54651
+ config,
54652
+ focus: true,
54653
+ streaming,
54654
+ onInterrupt,
54655
+ approvalMode,
54656
+ queueLength,
54657
+ onPopQueue,
54658
+ composerHandle: props.composerHandle,
54659
+ promptSuggestion,
54660
+ onPromptSuggestionDismiss,
54661
+ onPromptSuggestionAbort,
54662
+ shellModeActive,
54663
+ onToggleShellMode: toggleShellMode
54664
+ }
54665
+ )
54666
+ ] }),
54667
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
54668
+ OpenTuiFooter,
54419
54669
  {
54420
- onSubmit: (text, imagePaths) => {
54421
- void onSubmit(text, imagePaths);
54422
- },
54423
- userMessages,
54424
54670
  config,
54425
- focus: true,
54426
- streaming,
54427
- onInterrupt,
54671
+ streaming: Boolean(streaming),
54428
54672
  approvalMode,
54429
54673
  queueLength,
54430
- onPopQueue,
54431
- composerHandle: props.composerHandle,
54432
- promptSuggestion,
54433
- onPromptSuggestionDismiss,
54434
- onPromptSuggestionAbort,
54435
- shellModeActive,
54436
- onToggleShellMode: toggleShellMode
54674
+ sessionName: host.sessionName
54437
54675
  }
54438
54676
  )
54439
54677
  ] })
@@ -54444,7 +54682,7 @@ __name(OpenTuiApp, "OpenTuiApp");
54444
54682
 
54445
54683
  // packages/cli/src/ui/opentui/followup-generation.ts
54446
54684
  init_esbuild_shims();
54447
- var import_react52 = __toESM(require_react(), 1);
54685
+ var import_react56 = __toESM(require_react(), 1);
54448
54686
  function useFollowupSuggestionGeneration({
54449
54687
  config,
54450
54688
  settings,
@@ -54452,12 +54690,12 @@ function useFollowupSuggestionGeneration({
54452
54690
  items,
54453
54691
  waitingCalls
54454
54692
  }) {
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);
54693
+ const [promptSuggestion, setPromptSuggestion] = (0, import_react56.useState)(null);
54694
+ const abortRef = (0, import_react56.useRef)(null);
54695
+ const streamingRef = (0, import_react56.useRef)(streaming);
54458
54696
  const followupEnabled = settings.merged.ui?.enableFollowupSuggestions !== false;
54459
54697
  const cacheSharingEnabled = settings.merged.ui?.enableCacheSharing !== false;
54460
- (0, import_react52.useEffect)(() => {
54698
+ (0, import_react56.useEffect)(() => {
54461
54699
  const wasStreaming = streamingRef.current;
54462
54700
  if (!followupEnabled || wasStreaming !== streaming) {
54463
54701
  abortRef.current?.abort();
@@ -54494,7 +54732,7 @@ function useFollowupSuggestionGeneration({
54494
54732
  items,
54495
54733
  waitingCalls
54496
54734
  ]);
54497
- (0, import_react52.useEffect)(
54735
+ (0, import_react56.useEffect)(
54498
54736
  () => () => {
54499
54737
  abortRef.current?.abort();
54500
54738
  },
@@ -54646,7 +54884,7 @@ var OpenTuiRuntime = class _OpenTuiRuntime {
54646
54884
 
54647
54885
  // packages/cli/src/ui/opentui/transcript-view.tsx
54648
54886
  init_esbuild_shims();
54649
- var import_react53 = __toESM(require_react(), 1);
54887
+ var import_react57 = __toESM(require_react(), 1);
54650
54888
 
54651
54889
  // packages/cli/src/ui/opentui/live-session-model.ts
54652
54890
  init_esbuild_shims();
@@ -55844,7 +56082,7 @@ function AssistantRow({
55844
56082
  }
55845
56083
  __name(AssistantRow, "AssistantRow");
55846
56084
  function ThinkingRow({ text, done }) {
55847
- const [expanded, setExpanded] = (0, import_react53.useState)(false);
56085
+ const [expanded, setExpanded] = (0, import_react57.useState)(false);
55848
56086
  const meta = thinkingMeta(done, expanded, false);
55849
56087
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
55850
56088
  "box",
@@ -55995,8 +56233,8 @@ function RetryRows({
55995
56233
  delayMs,
55996
56234
  startedAt
55997
56235
  }) {
55998
- const [now, setNow] = (0, import_react53.useState)(() => Date.now());
55999
- (0, import_react53.useEffect)(() => {
56236
+ const [now, setNow] = (0, import_react57.useState)(() => Date.now());
56237
+ (0, import_react57.useEffect)(() => {
56000
56238
  const timer = setInterval(() => setNow(Date.now()), 1e3);
56001
56239
  return () => clearInterval(timer);
56002
56240
  }, []);
@@ -56240,7 +56478,7 @@ __name(ArenaSessionRow, "ArenaSessionRow");
56240
56478
 
56241
56479
  // packages/cli/src/ui/opentui/live-turn.ts
56242
56480
  init_esbuild_shims();
56243
- var import_react54 = __toESM(require_react(), 1);
56481
+ var import_react58 = __toESM(require_react(), 1);
56244
56482
  import { readFileSync } from "node:fs";
56245
56483
 
56246
56484
  // packages/cli/src/ui/opentui/live-session.ts
@@ -56840,43 +57078,43 @@ function foldBatch(events) {
56840
57078
  __name(foldBatch, "foldBatch");
56841
57079
  function useOpenTuiLiveTurn(options) {
56842
57080
  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)(
57081
+ const [items, setItems] = (0, import_react58.useState)([]);
57082
+ const [streaming, setStreaming] = (0, import_react58.useState)(false);
57083
+ const [waitingCalls, setWaitingCalls] = (0, import_react58.useState)(
56846
57084
  []
56847
57085
  );
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)([]);
57086
+ const queueRef = (0, import_react58.useRef)([]);
57087
+ const [queueLength, setQueueLength] = (0, import_react58.useState)(0);
57088
+ const abortRef = (0, import_react58.useRef)(null);
57089
+ const streamingRef = (0, import_react58.useRef)(false);
57090
+ const turnSeqRef = (0, import_react58.useRef)(0);
57091
+ const waitingCallsRef = (0, import_react58.useRef)([]);
56854
57092
  waitingCallsRef.current = waitingCalls;
56855
- const setBusy = (0, import_react54.useCallback)((busy) => {
57093
+ const setBusy = (0, import_react58.useCallback)((busy) => {
56856
57094
  if (streamingRef.current === busy) return;
56857
57095
  streamingRef.current = busy;
56858
57096
  setStreaming(busy);
56859
57097
  }, []);
56860
- const apply = (0, import_react54.useCallback)((ev) => {
57098
+ const apply = (0, import_react58.useCallback)((ev) => {
56861
57099
  setItems((prev) => foldLiveEvent(prev, ev));
56862
57100
  }, []);
56863
- const pushQueue = (0, import_react54.useCallback)((text) => {
57101
+ const pushQueue = (0, import_react58.useCallback)((text) => {
56864
57102
  queueRef.current.push(text);
56865
57103
  setQueueLength(queueRef.current.length);
56866
57104
  }, []);
56867
- const drainQueue = (0, import_react54.useCallback)(() => {
57105
+ const drainQueue = (0, import_react58.useCallback)(() => {
56868
57106
  const drained = queueRef.current;
56869
57107
  queueRef.current = [];
56870
57108
  setQueueLength(0);
56871
57109
  return drained;
56872
57110
  }, []);
56873
- const restoreQueue = (0, import_react54.useCallback)((texts) => {
57111
+ const restoreQueue = (0, import_react58.useCallback)((texts) => {
56874
57112
  const restored = texts.map((text) => text.trim()).filter(Boolean);
56875
57113
  if (restored.length === 0) return;
56876
57114
  queueRef.current = [...restored, ...queueRef.current];
56877
57115
  setQueueLength(queueRef.current.length);
56878
57116
  }, []);
56879
- const runTurn = (0, import_react54.useCallback)(
57117
+ const runTurn = (0, import_react58.useCallback)(
56880
57118
  async (prompt, promptId, turnOptions) => {
56881
57119
  const seq = ++turnSeqRef.current;
56882
57120
  const abort = new AbortController();
@@ -56933,7 +57171,7 @@ function useOpenTuiLiveTurn(options) {
56933
57171
  },
56934
57172
  [config, apply, drainQueue, restoreQueue, setBusy]
56935
57173
  );
56936
- const submit = (0, import_react54.useCallback)(
57174
+ const submit = (0, import_react58.useCallback)(
56937
57175
  (content, imagePaths, options2) => {
56938
57176
  const text = typeof content === "string" ? content : collectText(normalizeParts(content));
56939
57177
  if (streamingRef.current) {
@@ -56957,10 +57195,10 @@ function useOpenTuiLiveTurn(options) {
56957
57195
  },
56958
57196
  [config, apply, pushQueue, runTurn]
56959
57197
  );
56960
- const interrupt = (0, import_react54.useCallback)(() => {
57198
+ const interrupt = (0, import_react58.useCallback)(() => {
56961
57199
  abortRef.current?.abort();
56962
57200
  }, []);
56963
- const resetTranscript = (0, import_react54.useCallback)(
57201
+ const resetTranscript = (0, import_react58.useCallback)(
56964
57202
  (events) => {
56965
57203
  turnSeqRef.current += 1;
56966
57204
  const abort = abortRef.current;
@@ -56979,14 +57217,14 @@ function useOpenTuiLiveTurn(options) {
56979
57217
  },
56980
57218
  [setBusy]
56981
57219
  );
56982
- const settleWaitingCall = (0, import_react54.useCallback)((callId) => {
57220
+ const settleWaitingCall = (0, import_react58.useCallback)((callId) => {
56983
57221
  setWaitingCalls((prev) => prev.filter((c2) => c2.callId !== callId));
56984
57222
  }, []);
56985
- const popQueue = (0, import_react54.useCallback)(() => {
57223
+ const popQueue = (0, import_react58.useCallback)(() => {
56986
57224
  if (queueRef.current.length === 0) return null;
56987
57225
  return drainQueue().join("\n\n");
56988
57226
  }, [drainQueue]);
56989
- (0, import_react54.useEffect)(() => () => abortRef.current?.abort(), []);
57227
+ (0, import_react58.useEffect)(() => () => abortRef.current?.abort(), []);
56990
57228
  return {
56991
57229
  items,
56992
57230
  streaming,
@@ -57076,29 +57314,29 @@ function OpenTuiEntryApp({
57076
57314
  items: live.items,
57077
57315
  waitingCalls: live.waitingCalls
57078
57316
  });
57079
- const statsRef = (0, import_react55.useRef)(stats);
57080
- (0, import_react55.useEffect)(() => {
57317
+ const statsRef = (0, import_react59.useRef)(stats);
57318
+ (0, import_react59.useEffect)(() => {
57081
57319
  statsRef.current = stats;
57082
57320
  }, [stats]);
57083
- const getSessionStats = (0, import_react55.useCallback)(() => statsRef.current, []);
57084
- const composerHandle = (0, import_react55.useRef)(null);
57085
- (0, import_react55.useEffect)(
57321
+ const getSessionStats = (0, import_react59.useCallback)(() => statsRef.current, []);
57322
+ const composerHandle = (0, import_react59.useRef)(null);
57323
+ (0, import_react59.useEffect)(
57086
57324
  () => armCapturedInputInjection(() => composerHandle.current, capturedText),
57087
57325
  [capturedText]
57088
57326
  );
57089
- (0, import_react55.useEffect)(() => {
57327
+ (0, import_react59.useEffect)(() => {
57090
57328
  const resumeEvents = resumeEventsFromConfig(config);
57091
57329
  if (resumeEvents) resetTranscript(resumeEvents);
57092
57330
  for (const warning of startupWarnings) {
57093
57331
  applyEvent({ type: "warning", text: warning });
57094
57332
  }
57095
57333
  }, []);
57096
- const [updateNotice, setUpdateNotice] = (0, import_react55.useState)(null);
57097
- const isIdleRef = (0, import_react55.useRef)(true);
57098
- (0, import_react55.useEffect)(() => {
57334
+ const [updateNotice, setUpdateNotice] = (0, import_react59.useState)(null);
57335
+ const isIdleRef = (0, import_react59.useRef)(true);
57336
+ (0, import_react59.useEffect)(() => {
57099
57337
  isIdleRef.current = !live.streaming;
57100
57338
  }, [live.streaming]);
57101
- const addUpdateItem = (0, import_react55.useCallback)(
57339
+ const addUpdateItem = (0, import_react59.useCallback)(
57102
57340
  (item) => {
57103
57341
  if (item.type === "info" /* INFO */) {
57104
57342
  applyEvent({ type: "info", text: item.text });
@@ -57110,22 +57348,22 @@ function OpenTuiEntryApp({
57110
57348
  },
57111
57349
  [applyEvent]
57112
57350
  );
57113
- const setUpdateInfo = (0, import_react55.useCallback)((info) => {
57351
+ const setUpdateInfo = (0, import_react59.useCallback)((info) => {
57114
57352
  setUpdateNotice(info?.message ?? null);
57115
57353
  }, []);
57116
57354
  useUpdateNoticeFlush(addUpdateItem, setUpdateInfo, isIdleRef, live.streaming);
57117
- const [exitHint, setExitHint] = (0, import_react55.useState)(null);
57118
- const exitGuard = (0, import_react55.useMemo)(
57355
+ const [exitHint, setExitHint] = (0, import_react59.useState)(null);
57356
+ const exitGuard = (0, import_react59.useMemo)(
57119
57357
  () => createExitGuard({ onWindowExpired: /* @__PURE__ */ __name(() => setExitHint(null), "onWindowExpired") }),
57120
57358
  []
57121
57359
  );
57122
- (0, import_react55.useEffect)(() => () => exitGuard.dispose(), [exitGuard]);
57123
- const streamingRef = (0, import_react55.useRef)(live.streaming);
57124
- (0, import_react55.useEffect)(() => {
57360
+ (0, import_react59.useEffect)(() => () => exitGuard.dispose(), [exitGuard]);
57361
+ const streamingRef = (0, import_react59.useRef)(live.streaming);
57362
+ (0, import_react59.useEffect)(() => {
57125
57363
  streamingRef.current = live.streaming;
57126
57364
  }, [live.streaming]);
57127
- const waitingCallsRef = (0, import_react55.useRef)(live.waitingCalls);
57128
- (0, import_react55.useEffect)(() => {
57365
+ const waitingCallsRef = (0, import_react59.useRef)(live.waitingCalls);
57366
+ (0, import_react59.useEffect)(() => {
57129
57367
  waitingCallsRef.current = live.waitingCalls;
57130
57368
  }, [live.waitingCalls]);
57131
57369
  useKeyboard((key) => {
@@ -57148,7 +57386,7 @@ function OpenTuiEntryApp({
57148
57386
  setExitHint(exitGuardHint(guardKey));
57149
57387
  }
57150
57388
  });
57151
- const renderMain = (0, import_react55.useCallback)(
57389
+ const renderMain = (0, import_react59.useCallback)(
57152
57390
  () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("box", { flexDirection: "column", flexGrow: 1, children: [
57153
57391
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
57154
57392
  OpenTuiTranscriptView,
@@ -57162,7 +57400,7 @@ function OpenTuiEntryApp({
57162
57400
  ] }),
57163
57401
  [live.items, width, height, exitHint]
57164
57402
  );
57165
- const handleRenderError = (0, import_react55.useCallback)(
57403
+ const handleRenderError = (0, import_react59.useCallback)(
57166
57404
  (error) => {
57167
57405
  debugLogger4.error(
57168
57406
  `[FATAL_RENDER_ERROR] ${error.message}
@@ -57174,15 +57412,15 @@ ${error.stack ?? ""}`
57174
57412
  },
57175
57413
  [config]
57176
57414
  );
57177
- const handleStartNewSession = (0, import_react55.useCallback)(
57415
+ const handleStartNewSession = (0, import_react59.useCallback)(
57178
57416
  (sessionId) => startNewSession(sessionId),
57179
57417
  [startNewSession]
57180
57418
  );
57181
- const handleSubmitPrompt = (0, import_react55.useCallback)(
57419
+ const handleSubmitPrompt = (0, import_react59.useCallback)(
57182
57420
  (content, imagePaths, options) => submit(content, imagePaths, options),
57183
57421
  [submit]
57184
57422
  );
57185
- const handleQuit = (0, import_react55.useCallback)(() => {
57423
+ const handleQuit = (0, import_react59.useCallback)(() => {
57186
57424
  void exitSession(config, 0);
57187
57425
  }, [config]);
57188
57426
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -57253,7 +57491,7 @@ async function startOpenTuiUI(config, settings, startupWarnings, workspaceRoot =
57253
57491
  // children must sit in the props object: the provider declares it as a
57254
57492
  // required prop, which createElement's rest-children overloads can't fill.
57255
57493
  // eslint-disable-next-line react/no-children-prop
57256
- (0, import_react55.createElement)(SessionStatsProvider, {
57494
+ (0, import_react59.createElement)(SessionStatsProvider, {
57257
57495
  sessionId: config.getSessionId(),
57258
57496
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
57259
57497
  OpenTuiEntryApp,
@@ -57312,7 +57550,8 @@ qwen --resume ${sessionId}`
57312
57550
  registerSession({
57313
57551
  sessionId: config.getSessionId(),
57314
57552
  cwd: config.getTargetDir(),
57315
- qwenVersion: version
57553
+ qwenVersion: version,
57554
+ kind: "tui"
57316
57555
  })
57317
57556
  );
57318
57557
  registerCleanup(() => config.unregisterSessionRegistry());