@qwen-code/qwen-code 0.23.2-preview.0 → 0.23.3-nightly.20260910.c46cb85cf2

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 (409) hide show
  1. package/README.md +35 -15
  2. package/bundled/computer-use/SKILL.md +1 -1
  3. package/bundled/goal-draft/SKILL.md +2 -2
  4. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  5. package/bundled/qc-helper/docs/configuration/model-providers.md +76 -34
  6. package/bundled/qc-helper/docs/configuration/settings.md +5 -3
  7. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  8. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -21
  9. package/bundled/qc-helper/docs/features/channels/dws.md +7 -1
  10. package/bundled/qc-helper/docs/features/channels/github.md +1 -9
  11. package/bundled/qc-helper/docs/features/channels/overview.md +30 -56
  12. package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
  13. package/bundled/qc-helper/docs/features/commands.md +105 -18
  14. package/bundled/qc-helper/docs/features/computer-use.md +1 -1
  15. package/bundled/qc-helper/docs/features/cross-session-protocol.md +320 -0
  16. package/bundled/qc-helper/docs/features/goals.md +5 -3
  17. package/bundled/qc-helper/docs/features/hooks.md +14 -13
  18. package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
  19. package/bundled/qc-helper/docs/qwen-serve.md +84 -53
  20. package/bundled/review/SKILL.md +82 -79
  21. package/bundled/review/references/posting.md +31 -14
  22. package/chunks/{MaxSizedBox-ZZJT3PJF.js → MaxSizedBox-UZW24XUX.js} +63 -55
  23. package/chunks/{StandaloneSessionPicker-DIOSZTMX.js → StandaloneSessionPicker-IDK7NAZL.js} +85 -77
  24. package/chunks/{acp-startup-profiler-KEU6VAYR.js → acp-startup-profiler-ARO4II44.js} +2 -2
  25. package/chunks/acp-subagent-executor-7TLJGISS.js +919 -0
  26. package/chunks/{acpAgent-62JUP5A7.js → acpAgent-YRCNNIIU.js} +939 -306
  27. package/chunks/{agent-NLPEQQDZ.js → agent-SGU5EE7U.js} +47 -41
  28. package/chunks/{agent-headless-Y2GR5F2Q.js → agent-headless-JVYBLNLT.js} +47 -41
  29. package/chunks/{anthropicContentGenerator-I7LQZH26.js → anthropicContentGenerator-SGIR5IKF.js} +68 -36
  30. package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-PMYZCYNH.js} +2 -2
  31. package/chunks/{askUserQuestion-I5W5S3D6.js → askUserQuestion-4M4YYIB4.js} +2 -2
  32. package/chunks/{bridge-Q66BD62H.js → bridge-YF6NYRPZ.js} +68 -60
  33. package/chunks/{ca-KC2AISNS.js → ca-MX3WCEEG.js} +1 -1
  34. package/chunks/{channel-management-service-TRTLQTSV.js → channel-management-service-E4HTMU7T.js} +9 -9
  35. package/chunks/{channel-settings-store-R5STFWUW.js → channel-settings-store-FZ5VKHQD.js} +74 -66
  36. package/chunks/{channel-worker-group-PIYPVCTF.js → channel-worker-group-X6WH4XWF.js} +9 -9
  37. package/chunks/{channel-worker-manager-FQHEDTD2.js → channel-worker-manager-SICFJDPJ.js} +19 -10
  38. package/chunks/{channel-worker-supervisor-XJPZZ3VK.js → channel-worker-supervisor-HSFAKML6.js} +6 -6
  39. package/chunks/{chunk-CLKE4IY3.js → chunk-2SZH22YO.js} +1 -1
  40. package/chunks/{chunk-OIPUQE3S.js → chunk-34ZYDM3F.js} +27 -12
  41. package/chunks/{chunk-HIXUUCGY.js → chunk-36HCNKDS.js} +1 -1
  42. package/chunks/{chunk-6YEOCHSE.js → chunk-3FPYT6QC.js} +101 -31
  43. package/chunks/{chunk-NFIDVZND.js → chunk-3I7W2POO.js} +3 -22
  44. package/chunks/{chunk-W3ONSAYO.js → chunk-3VPFA6L2.js} +3 -3
  45. package/chunks/chunk-532WHF4F.js +127 -0
  46. package/chunks/{chunk-J3TJH52D.js → chunk-5FFAUU4T.js} +1 -1
  47. package/chunks/{chunk-G5QLLD53.js → chunk-5FKZ7KFQ.js} +1864 -35
  48. package/chunks/{chunk-B44JBZBB.js → chunk-5GLDOLNQ.js} +132 -27
  49. package/chunks/{chunk-ORREXWOM.js → chunk-5ZJ3KK5J.js} +5 -5
  50. package/chunks/{chunk-2OR32P5M.js → chunk-6EDWSKN4.js} +125 -10
  51. package/chunks/{chunk-EA4NFWVG.js → chunk-6EOMQPTS.js} +4 -4
  52. package/chunks/{chunk-45ROPFQY.js → chunk-6NONRGYX.js} +1 -1
  53. package/chunks/{chunk-EHTKOO6W.js → chunk-6UK77U7D.js} +46 -3
  54. package/chunks/{chunk-QXXBW2G4.js → chunk-72BGC7RT.js} +4 -4
  55. package/chunks/{chunk-CRZBDVP2.js → chunk-74JEYK2C.js} +10 -10
  56. package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
  57. package/chunks/{chunk-CG2PDIGD.js → chunk-7XM6KEVW.js} +1 -1
  58. package/chunks/{chunk-CALNF3Z3.js → chunk-7XVQNDFB.js} +1 -1
  59. package/chunks/{chunk-TK4XHPKW.js → chunk-7ZKDPTYO.js} +2 -2
  60. package/chunks/{chunk-ZIPYCXQP.js → chunk-7ZVIGDZF.js} +1 -1
  61. package/chunks/chunk-AEY27Z35.js +1411 -0
  62. package/chunks/{chunk-WIRYFL2L.js → chunk-ATH66AEU.js} +64 -59
  63. package/chunks/{chunk-33MLFMCL.js → chunk-AW2SIT3B.js} +3 -3
  64. package/chunks/{chunk-4BLTSTF6.js → chunk-AWMJRE5N.js} +4 -4
  65. package/chunks/chunk-AYEJOTIU.js +43 -0
  66. package/chunks/{chunk-M73KHGNR.js → chunk-B2TGBZXY.js} +420 -227
  67. package/chunks/{chunk-XDNFODER.js → chunk-B6BDT4RX.js} +1 -1
  68. package/chunks/{chunk-WZ4YULVF.js → chunk-BHR6IN2X.js} +3251 -974
  69. package/chunks/{chunk-GXIHBIHC.js → chunk-BI3WSRQE.js} +61 -72
  70. package/chunks/{chunk-NVS4Z6GT.js → chunk-BQOP3K76.js} +1 -1
  71. package/chunks/{chunk-R2266LQ5.js → chunk-BTWGOKHU.js} +2 -2
  72. package/chunks/{process-registry-OAEG6WGC.js → chunk-BYUAT5OC.js} +1 -0
  73. package/chunks/{chunk-XVTCSVBK.js → chunk-C4NLHK7X.js} +227 -298
  74. package/chunks/{chunk-NOO4QFXM.js → chunk-C75BXMPM.js} +1 -3
  75. package/chunks/chunk-CAAMI77K.js +937 -0
  76. package/chunks/chunk-CF5KXZZX.js +150 -0
  77. package/chunks/{chunk-SOA4HKRJ.js → chunk-CGKEUUYG.js} +2 -2
  78. package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
  79. package/chunks/{chunk-5HBA2Z7V.js → chunk-CJ3DHN5I.js} +3 -3
  80. package/chunks/{chunk-3BTHHXXE.js → chunk-CSHX5ZC4.js} +1 -1
  81. package/chunks/{chunk-UYDQYDW2.js → chunk-CUK6F5UF.js} +1 -1
  82. package/chunks/{chunk-RPFJJ33Z.js → chunk-DLH7YIX6.js} +3 -3
  83. package/chunks/{chunk-L6ZME3W7.js → chunk-DMX7RF6E.js} +1 -1
  84. package/chunks/{chunk-TRWQQBVH.js → chunk-DTNV6UZY.js} +1 -1
  85. package/chunks/{chunk-FDOGGKAA.js → chunk-E4UEO3XM.js} +5 -2
  86. package/chunks/{chunk-RN6V5HKE.js → chunk-E5GQNSJY.js} +3 -3
  87. package/chunks/chunk-ELRMZTPF.js +374 -0
  88. package/chunks/chunk-ERU3SDXT.js +27 -0
  89. package/chunks/{chunk-O2FEO2CB.js → chunk-EUURTIV6.js} +18 -2
  90. package/chunks/{chunk-4HOEU2OR.js → chunk-EWJTAP3Y.js} +1 -19
  91. package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
  92. package/chunks/{chunk-BL6B2QS2.js → chunk-F2RKL5I2.js} +809 -1195
  93. package/chunks/{chunk-J4ECGDA3.js → chunk-F45SKYIQ.js} +3 -3
  94. package/chunks/{chunk-5WC2ECUK.js → chunk-FCQJLMA2.js} +114 -8
  95. package/chunks/{chunk-4JKLPTV6.js → chunk-FGRDUDCI.js} +13 -6
  96. package/chunks/{chunk-ZUNWKOAP.js → chunk-FGV2QEAO.js} +5 -27
  97. package/chunks/{chunk-4VY3ITHR.js → chunk-FN3JNDRU.js} +3 -3
  98. package/chunks/{chunk-XI7RST4D.js → chunk-FRVV5SSD.js} +2 -2
  99. package/chunks/{chunk-UXDVUFKU.js → chunk-FYZ5NZ3V.js} +2 -20
  100. package/chunks/{chunk-ALMR3E6Q.js → chunk-GDWE23OR.js} +3 -3
  101. package/chunks/{chunk-W7PXLIZJ.js → chunk-GP47UR3M.js} +6 -6
  102. package/chunks/{chunk-LNYV4GXX.js → chunk-GSKX53AN.js} +0 -139
  103. package/chunks/{chunk-MA5OUNN6.js → chunk-HG46TTAG.js} +1 -1
  104. package/chunks/{chunk-FETY36NQ.js → chunk-HGEUHUEV.js} +1 -1
  105. package/chunks/{chunk-UULHYZ4W.js → chunk-HL2DQG3Y.js} +148 -23
  106. package/chunks/{chunk-E6TI726I.js → chunk-HUXPEUFL.js} +1 -1
  107. package/chunks/{chunk-5DQ4YTIZ.js → chunk-HZTXKVSV.js} +1 -1
  108. package/chunks/{chunk-LYT2OU7D.js → chunk-IAEXTMED.js} +1 -1
  109. package/chunks/{chunk-CPJRFFPH.js → chunk-IFHJIEMN.js} +576 -169
  110. package/chunks/{chunk-IW6RQPQB.js → chunk-IJOS26LH.js} +1 -3
  111. package/chunks/{chunk-ORFIYTI2.js → chunk-IK2MWJP5.js} +1 -1
  112. package/chunks/{chunk-MWEF5MUK.js → chunk-IOUBOANU.js} +42 -13
  113. package/chunks/{chunk-KA5HR3G2.js → chunk-IUVIBDKU.js} +2 -2
  114. package/chunks/{chunk-PQWM4SX2.js → chunk-J2RNOJRV.js} +2 -2
  115. package/chunks/{chunk-VHPG7BH6.js → chunk-J5PYQVD2.js} +2 -2
  116. package/chunks/{chunk-JDPBJIKI.js → chunk-JDEW3V5B.js} +1 -1
  117. package/chunks/{chunk-RX3FYFCN.js → chunk-JEMDIKGQ.js} +7 -7
  118. package/chunks/chunk-JL6APGBX.js +43 -0
  119. package/chunks/{chunk-UHUT4IDM.js → chunk-JOMCZWX7.js} +9 -15
  120. package/chunks/{chunk-43CI6YWJ.js → chunk-JV5YASQA.js} +2777 -2151
  121. package/chunks/{chunk-N6S3NUYJ.js → chunk-JXNIF2O5.js} +1 -1
  122. package/chunks/chunk-K2OJUPOE.js +78 -0
  123. package/chunks/{chunk-QLM7D7W3.js → chunk-KFGPNCCY.js} +8 -8
  124. package/chunks/{chunk-7RXOEUFF.js → chunk-KHIBLKNK.js} +1 -1
  125. package/chunks/{chunk-5GD7LYOH.js → chunk-KVBNJ4K2.js} +5 -5
  126. package/chunks/{chunk-QJAFSFYA.js → chunk-KZ2CU2LH.js} +1 -1
  127. package/chunks/{chunk-DCPRCDSR.js → chunk-L2KF7HUE.js} +6 -6
  128. package/chunks/{chunk-4ALNJDHL.js → chunk-L3DTX6U4.js} +3 -1
  129. package/chunks/{chunk-3SH53ANB.js → chunk-LAP7X6EC.js} +12 -0
  130. package/chunks/{chunk-GM44O6F7.js → chunk-LEGNDA46.js} +1 -1
  131. package/chunks/{chunk-WXFCI3O5.js → chunk-LG5Y4OWO.js} +2 -2
  132. package/chunks/{chunk-3LPJ776W.js → chunk-LILGKQ4B.js} +10 -7
  133. package/chunks/{chunk-LBKYQ33T.js → chunk-LIR7YS2O.js} +18 -12
  134. package/chunks/{chunk-5Z4FCEPY.js → chunk-LK2WUCDQ.js} +625 -119
  135. package/chunks/{chunk-W673V2H3.js → chunk-LY2GK2PR.js} +4 -4
  136. package/chunks/{chunk-PQSCGZT2.js → chunk-MOS5OAOG.js} +36 -10
  137. package/chunks/chunk-MXOALJIL.js +691 -0
  138. package/chunks/chunk-NFXXBWSE.js +463 -0
  139. package/chunks/chunk-NUQ4GK5I.js +315 -0
  140. package/chunks/{chunk-J3VZF2AL.js → chunk-NUQVB25K.js} +2 -2
  141. package/chunks/{chunk-GNY7B3CA.js → chunk-NVIBH7WS.js} +1 -1
  142. package/chunks/{chunk-M6YLOETP.js → chunk-O3MKRN2I.js} +4 -4
  143. package/chunks/{chunk-ISPBBKJN.js → chunk-ONGZNOIP.js} +7 -2
  144. package/chunks/{chunk-Q2F43WTJ.js → chunk-OOLSYRZ7.js} +36 -19
  145. package/chunks/{chunk-63ACHB2H.js → chunk-PIGUW2U2.js} +197 -28
  146. package/chunks/{chunk-QAZ2MGYT.js → chunk-PLLIWEM3.js} +2 -2
  147. package/chunks/{chunk-ULY4ISY2.js → chunk-PMS4FVLY.js} +23 -8
  148. package/chunks/{chunk-NB3NDQQK.js → chunk-Q2XLNLAV.js} +1 -1
  149. package/chunks/{chunk-6GRDHIVI.js → chunk-Q6HXLBZF.js} +12 -12
  150. package/chunks/{chunk-EUXF6URV.js → chunk-QPWZX4ZV.js} +32 -34
  151. package/chunks/{chunk-DTB5BXRG.js → chunk-RJZTX2OF.js} +30 -17
  152. package/chunks/{chunk-PQEISIKS.js → chunk-SAH4BD2J.js} +0 -67
  153. package/chunks/{chunk-LUVXLLMS.js → chunk-SAWPURIU.js} +2 -2
  154. package/chunks/{chunk-WZS3X663.js → chunk-SNZWDV67.js} +43 -18
  155. package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
  156. package/chunks/{chunk-5VZFJTL2.js → chunk-SXEE6PND.js} +2 -2
  157. package/chunks/{chunk-743XE7N7.js → chunk-T4JVQR7Z.js} +2 -2
  158. package/chunks/{chunk-6RZX2HIH.js → chunk-TBEXLLAO.js} +2 -2
  159. package/chunks/{chunk-LN3WBOKU.js → chunk-TP2DUOB6.js} +8 -8
  160. package/chunks/{chunk-MWIO7MF6.js → chunk-TP6FYVQT.js} +2 -0
  161. package/chunks/{chunk-HRPFBHW7.js → chunk-TPKQIA7G.js} +1 -0
  162. package/chunks/{chunk-VH764G6B.js → chunk-TWC3FHUI.js} +4 -4
  163. package/chunks/{chunk-H3Q3RSKZ.js → chunk-U7O65WKL.js} +1 -1
  164. package/chunks/{chunk-IUJLW6ZI.js → chunk-UBEYS536.js} +7 -7
  165. package/chunks/{chunk-VEQBVJYH.js → chunk-UGS62IR2.js} +3 -3
  166. package/chunks/{chunk-VF6D6EGV.js → chunk-UKMWZ5NS.js} +109 -842
  167. package/chunks/{chunk-7GZCCHJL.js → chunk-VHKOULAI.js} +6 -5
  168. package/chunks/{chunk-ODBNTMZW.js → chunk-VID4BW52.js} +97 -86
  169. package/chunks/{chunk-7L35FKPF.js → chunk-VLZOU6UH.js} +7 -7
  170. package/chunks/{chunk-XBLG564H.js → chunk-VTBPMLRO.js} +12 -12
  171. package/chunks/{chunk-QTNCGZHQ.js → chunk-VX63RJXE.js} +9 -0
  172. package/chunks/{chunk-7VEYUF3N.js → chunk-W5ZQMAEM.js} +1 -1
  173. package/chunks/{chunk-XQ4RDO5B.js → chunk-WBCPROWX.js} +1 -1
  174. package/chunks/{chunk-RDV4NLI3.js → chunk-WS7MOFK6.js} +3 -3
  175. package/chunks/{chunk-FV4DM2M4.js → chunk-WXFK4MH7.js} +32 -12
  176. package/chunks/{chunk-XAXTQURR.js → chunk-WY4N6KS7.js} +4 -4
  177. package/chunks/{chunk-CABDNUJ4.js → chunk-XDQUDARC.js} +11 -14
  178. package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
  179. package/chunks/{chunk-2EKVPSIJ.js → chunk-Y2MYW47X.js} +1 -1
  180. package/chunks/{chunk-Y6ZWXM44.js → chunk-YIU5PEAT.js} +2 -2
  181. package/chunks/{chunk-PSPAM24S.js → chunk-YKK2XXHF.js} +4 -0
  182. package/chunks/{chunk-HZ2HUXX7.js → chunk-YS2ZJSOA.js} +29 -12
  183. package/chunks/{chunk-OFVAS4AR.js → chunk-ZGQIIGNQ.js} +2 -2
  184. package/chunks/{chunk-HNLMYDQE.js → chunk-ZHECLGA6.js} +2 -4
  185. package/chunks/{chunk-XBVNNDPK.js → chunk-ZHKTKHMO.js} +8 -1
  186. package/chunks/{chunk-OWCFKIFQ.js → chunk-ZKYR7QS4.js} +1 -1
  187. package/chunks/{chunk-YZTGGCEE.js → chunk-ZKZHSB5W.js} +1 -1
  188. package/chunks/{chunk-ERXNTINK.js → chunk-ZT6EPPBY.js} +1 -1
  189. package/chunks/{chunk-565U2ANU.js → chunk-ZTTC7T4X.js} +1 -1
  190. package/chunks/{chunk-MMMA36MN.js → chunk-ZUQVZTWG.js} +3 -3
  191. package/chunks/{chunk-7OCIQNKX.js → chunk-ZW2EUO2A.js} +1 -1
  192. package/chunks/{config-utils-37FHWPTP.js → config-utils-S5LFS4RN.js} +67 -59
  193. package/chunks/{contextCommand-R4JUBV5N.js → contextCommand-XXKZMMSQ.js} +64 -56
  194. package/chunks/{core-runtime-6U4OXU5C.js → core-runtime-YGUA42AZ.js} +68 -59
  195. package/chunks/{create-sub-session-LLUYAGZN.js → create-sub-session-SEK6KCYR.js} +64 -56
  196. package/chunks/{create-sub-session-TGIX63YU.js → create-sub-session-TIGCFGCS.js} +2 -2
  197. package/chunks/{cron-create-GTPVMJCF.js → cron-create-AKWX67FO.js} +1 -1
  198. package/chunks/{cron-delete-ZBK27Z4K.js → cron-delete-XPB6IYZJ.js} +1 -1
  199. package/chunks/{cron-list-KTFKFDKC.js → cron-list-XBKO4WU5.js} +1 -1
  200. package/chunks/{daemon-UI6SQSBV.js → daemon-G5TYKZD6.js} +2 -2
  201. package/chunks/{daemon-git-worktree-guard-O2UTNFJC.js → daemon-git-worktree-guard-3AWINPPX.js} +65 -57
  202. package/chunks/{daemon-status-provider-7GMAKSTX.js → daemon-status-provider-RTKHKUFJ.js} +73 -65
  203. package/chunks/{daemon-trust-policy-VNP76VMO.js → daemon-trust-policy-6YQOC7B6.js} +69 -61
  204. package/chunks/{daemon-trust-policy-monitor-TD5O3BZA.js → daemon-trust-policy-monitor-EN5L23GS.js} +69 -61
  205. package/chunks/{de-UU2YTO37.js → de-OOLZAU2U.js} +1 -1
  206. package/chunks/{deferred-core-runtime-NJM63YJS.js → deferred-core-runtime-JPLQRVZO.js} +62 -54
  207. package/chunks/{display-image-CTNHJRZC.js → display-image-NAH3AZ63.js} +3 -3
  208. package/chunks/{dist-STAGIFNB.js → dist-3BJVSJ7D.js} +389 -724
  209. package/chunks/{dist-OR2ZQTXZ.js → dist-65Q3TRLH.js} +16 -36
  210. package/chunks/{dist-24TCWK5H.js → dist-HX2LG76F.js} +233 -35
  211. package/chunks/{dist-XJ25G6OH.js → dist-J7PDFK53.js} +13 -38
  212. package/chunks/{dist-WZTUKIDR.js → dist-JCXKXRH6.js} +3 -6
  213. package/chunks/{dist-M4CBX53H.js → dist-LHGMHIDK.js} +2 -6
  214. package/chunks/{dist-5I4HLUTO.js → dist-QPTIRE3U.js} +4 -13
  215. package/chunks/{dist-FDISN4AK.js → dist-SBK33YLC.js} +5 -40
  216. package/chunks/{dist-NQ2636VT.js → dist-WMFHZG3R.js} +2 -5
  217. package/chunks/{edit-GL7OA6RV.js → edit-QXJZIWRQ.js} +50 -44
  218. package/chunks/{en-YJNRUQG4.js → en-7BZ2OZKH.js} +2 -1
  219. package/chunks/{enter-worktree-YFTKHXHZ.js → enter-worktree-54L5QJ3N.js} +4 -4
  220. package/chunks/{enterPlanMode-VC4BCSZE.js → enterPlanMode-2ITCVQ5N.js} +47 -41
  221. package/chunks/{environment-BI6IBAZJ.js → environment-URPO5ORZ.js} +65 -57
  222. package/chunks/{errors-D6G2ZM2R.js → errors-TDUYLEKI.js} +64 -56
  223. package/chunks/{exit-worktree-NF2XEMES.js → exit-worktree-EORJDKDS.js} +4 -4
  224. package/chunks/{exitPlanMode-DX446CA6.js → exitPlanMode-RA7KMUEW.js} +47 -41
  225. package/chunks/{fast-path-MAYDLJIP.js → fast-path-Q2JYP64P.js} +7 -7
  226. package/chunks/{fast-path-settings-SATXY3PD.js → fast-path-settings-GTHZLVSS.js} +2 -2
  227. package/chunks/{fr-HKNWVXRJ.js → fr-JJWM2HUS.js} +1 -1
  228. package/chunks/{glob-TVKRFY36.js → glob-VHSV4BKE.js} +50 -44
  229. package/chunks/{goal-tools-CA6YANRN.js → goal-tools-5FIE56CK.js} +53 -43
  230. package/chunks/{grep-BLHF2S5D.js → grep-3PKFKLCA.js} +2 -2
  231. package/chunks/{handleAutoUpdate-AW4ZAHON.js → handleAutoUpdate-7FZFLKNZ.js} +65 -57
  232. package/chunks/{i18n-IH5CRAY7.js → i18n-NTFQDWKR.js} +63 -55
  233. package/chunks/{image-gen-XP4NNIYG.js → image-gen-TF3IQWSH.js} +7 -6
  234. package/chunks/{initializer-UBR37ZNM.js → initializer-LB3T635H.js} +69 -61
  235. package/chunks/{installationInfo-Y52756EC.js → installationInfo-KRO433ZG.js} +62 -54
  236. package/chunks/{ja-GJS5RZGU.js → ja-L67TXFDJ.js} +1 -1
  237. package/chunks/{list-7V5JDZPO.js → list-NEP3WPZ7.js} +72 -64
  238. package/chunks/{list-agents-I5TRH3J7.js → list-agents-QLDXS5OD.js} +18 -8
  239. package/chunks/{llm-QDB6JVF5.js → llm-AZEJEIAD.js} +141 -128
  240. package/chunks/{llm-content-generator-EO6MZCEO.js → llm-content-generator-KWXFHBR3.js} +6 -5
  241. package/chunks/{loadedSettingsAdapter-I3YQKMC4.js → loadedSettingsAdapter-NZORJLSD.js} +69 -61
  242. package/chunks/{loggingContentGenerator-MNXYUGDG.js → loggingContentGenerator-NGHVU6AK.js} +69 -62
  243. package/chunks/{loop-wakeup-HL6XOWI4.js → loop-wakeup-HHMYIC7Z.js} +2 -2
  244. package/chunks/{ls-YV7RKLKY.js → ls-N7ABR6HI.js} +4 -4
  245. package/chunks/{lsp-NO3AMRZT.js → lsp-LTOFWG5P.js} +1 -1
  246. package/chunks/{managed-npm-update-EA3EXPTO.js → managed-npm-update-3LHNBEAG.js} +62 -54
  247. package/chunks/{mcp-QTAJ544Y.js → mcp-4SWJKDX7.js} +69 -61
  248. package/chunks/{monitor-6FQKQOTP.js → monitor-V5EFBZC7.js} +49 -43
  249. package/chunks/{nonInteractiveCli-MRCTZL5X.js → nonInteractiveCli-5UFUBUAT.js} +117 -109
  250. package/chunks/{notebook-edit-BQQCKI7K.js → notebook-edit-ATV46KWD.js} +48 -42
  251. package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
  252. package/chunks/openai-WX26N5OJ.js +47 -0
  253. package/chunks/{openaiContentGenerator-TTSKXNVH.js → openaiContentGenerator-BKTO5QJK.js} +31 -25
  254. package/chunks/openaiResponsesContentGenerator-RTCAJ5V5.js +1658 -0
  255. package/chunks/{pidfile-KPIS6RIT.js → pidfile-JAIOWPI3.js} +65 -55
  256. package/chunks/process-registry-X6ZCASEN.js +10 -0
  257. package/chunks/{processUtils-ZCASPKK4.js → processUtils-TCQH3LVD.js} +2 -2
  258. package/chunks/{prompt-terminal-ledger-D6HM6TV7.js → prompt-terminal-ledger-BYXHEUHX.js} +63 -55
  259. package/chunks/{pt-FXMYXEUV.js → pt-77SBDL4B.js} +1 -1
  260. package/chunks/{qwenContentGenerator-GGZEFLBD.js → qwenContentGenerator-K5TJK75P.js} +60 -52
  261. package/chunks/{qwenOAuth2-KX6LVYQ3.js → qwenOAuth2-NOXRK323.js} +6 -5
  262. package/chunks/{read-file-VE5GDFLP.js → read-file-DL7GNZD5.js} +11 -9
  263. package/chunks/{read-mcp-resource-D3N75DGF.js → read-mcp-resource-B37WANAQ.js} +1 -1
  264. package/chunks/{record-artifact-Q5CRGJTP.js → record-artifact-OAXWXZ5D.js} +2 -2
  265. package/chunks/record-source-D7R7X3GT.js +22 -0
  266. package/chunks/{report-findings-TJ34R7QK.js → report-findings-AR3VC6EQ.js} +3 -3
  267. package/chunks/{request-shutdown-LRKMTBAD.js → request-shutdown-IKNWTX5M.js} +5 -5
  268. package/chunks/{resumeHistoryUtils-HSSGMYDC.js → resumeHistoryUtils-OYKXZ4YO.js} +68 -60
  269. package/chunks/{ripGrep-SEJE7AA6.js → ripGrep-EOUMIU4K.js} +15 -13
  270. package/chunks/{ru-RMHURE5U.js → ru-UYWHKWF2.js} +1 -1
  271. package/chunks/{run-qwen-serve-OJYVH7N6.js → run-qwen-serve-PPTGWC5B.js} +471 -152
  272. package/chunks/{runtime-KGMQQFJD.js → runtime-5RO22P2N.js} +77 -67
  273. package/chunks/{scheduled-tasks-7H5HWHYD.js → scheduled-tasks-YGERFWLZ.js} +70 -62
  274. package/chunks/{scheduler-BE42AKDG.js → scheduler-S6WU6M3C.js} +64 -56
  275. package/chunks/{sdk-exporters-grpc-MXTVSE3C.js → sdk-exporters-grpc-Y2ZUQDUQ.js} +2 -2
  276. package/chunks/{sdk-exporters-http-7R2ARBPV.js → sdk-exporters-http-VWTF4W6K.js} +3 -3
  277. package/chunks/{sdk-impl-YOLO7LV4.js → sdk-impl-G6FVTBQZ.js} +9 -9
  278. package/chunks/{send-message-AWKUDJBH.js → send-message-TWOGWCBG.js} +13 -10
  279. package/chunks/{serve-KZVKYMSL.js → serve-HT4WOCWS.js} +70 -62
  280. package/chunks/{server-PJRALPJQ.js → server-SWXVPRCS.js} +2977 -617
  281. package/chunks/{session-IHITXU2S.js → session-6DSFUOMO.js} +154 -119
  282. package/chunks/{session-attachments-root-GQ2TUI3Y.js → session-attachments-root-SOZCTQWW.js} +62 -54
  283. package/chunks/{session-pr-refresh-H43LULTE.js → session-pr-refresh-F7XUBQBH.js} +70 -62
  284. package/chunks/{settings-RKEQQDFC.js → settings-SWQH36PO.js} +74 -66
  285. package/chunks/{shell-6PJ444U5.js → shell-XUQL6EYV.js} +47 -41
  286. package/chunks/{skill-Q3UP7B5V.js → skill-HNRDD54C.js} +33 -23
  287. package/chunks/{skill-settings-LZR5YRRW.js → skill-settings-JU72PCII.js} +68 -60
  288. package/chunks/{spawnChannel-WM3DT2BF.js → spawnChannel-7ZVM3GBU.js} +65 -57
  289. package/chunks/{standalone-update-E5474IBI.js → standalone-update-64JQY2LX.js} +64 -56
  290. package/chunks/{start-opentui-ui-WLWZNQ2I.js → start-opentui-ui-RSLBXESU.js} +554 -297
  291. package/chunks/{startInteractiveUI-FBQSGWGO.js → startInteractiveUI-ZDPHD7XE.js} +1282 -1915
  292. package/chunks/{syntheticOutput-D2P5V6RG.js → syntheticOutput-F6F27JMK.js} +2 -2
  293. package/chunks/{task-create-PMAFST2T.js → task-create-Y623TBHB.js} +10 -10
  294. package/chunks/{task-list-R2HSY2NC.js → task-list-FCPEEGWL.js} +3 -3
  295. package/chunks/{task-stop-BFSKRTGV.js → task-stop-QTKZXLPH.js} +1 -1
  296. package/chunks/{task-update-JYC57USF.js → task-update-YLSXF25N.js} +10 -10
  297. package/chunks/{team-create-VIGUFUT4.js → team-create-U52VYSNO.js} +49 -43
  298. package/chunks/{team-delete-CBHVBTPB.js → team-delete-S7TLHZCF.js} +3 -3
  299. package/chunks/{team-plan-approval-HQVZA3MD.js → team-plan-approval-IQ4ADQIK.js} +47 -41
  300. package/chunks/{terminal-image-renderer-LUKNCOVM.js → terminal-image-renderer-ZEMF7LB2.js} +64 -56
  301. package/chunks/{theme-manager-LOENKYLY.js → theme-manager-DK2S2SOX.js} +62 -54
  302. package/chunks/{todoWrite-5ERKFWAK.js → todoWrite-5QI2H2FW.js} +4 -4
  303. package/chunks/{tool-search-ZIFAQCE2.js → tool-search-6U4OQG7K.js} +21 -15
  304. package/chunks/{total-session-admission-FUUJH3QH.js → total-session-admission-BOARHBZU.js} +68 -60
  305. package/chunks/{trustedFolders-C76KYROP.js → trustedFolders-GKQZXZSV.js} +63 -55
  306. package/chunks/{update-relaunch-4G2SRXKX.js → update-relaunch-GLACF7PX.js} +5 -5
  307. package/chunks/{updateCheck-EIZIO7HI.js → updateCheck-NLBSZB4Q.js} +64 -56
  308. package/chunks/{useAutoAcceptIndicator-EAA6KSY4.js → useAutoAcceptIndicator-3X3BYU7H.js} +72 -64
  309. package/chunks/{validateNonInterActiveAuth-BRX22QCN.js → validateNonInterActiveAuth-NE3JLOIR.js} +114 -106
  310. package/chunks/{version-E56RU7PR.js → version-6H5YAT4N.js} +3 -1
  311. package/chunks/{web-fetch-AAUCD7RM.js → web-fetch-RWSO7TTN.js} +15 -13
  312. package/chunks/{web-search-HFUQF44Q.js → web-search-DADI3LV5.js} +560 -322
  313. package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-CCN4JZEE.js} +5 -4
  314. package/chunks/workflow-LPGCZCIT.js +1224 -0
  315. package/chunks/workspace-providers-status-QBRBEFTO.js +127 -0
  316. package/chunks/{workspace-registration-store-YL7HLYYI.js → workspace-registration-store-WUKTMJPW.js} +3 -2
  317. package/chunks/{workspace-registry-BNRP2ELW.js → workspace-registry-CJV7KVGF.js} +68 -60
  318. package/chunks/{workspace-runtime-coordinator-WKGF7VHS.js → workspace-runtime-coordinator-7LYMFMFF.js} +71 -61
  319. package/chunks/{workspace-service-4MYO72MM.js → workspace-service-HWXZSA4J.js} +75 -67
  320. package/chunks/{workspace-skills-status-SU66TJLZ.js → workspace-skills-status-D6QXUWCC.js} +70 -62
  321. package/chunks/{workspace-trust-reconciler-D5QT7WQB.js → workspace-trust-reconciler-VZX7G7CZ.js} +75 -67
  322. package/chunks/{write-file-NVPQE2AZ.js → write-file-KKHV26YV.js} +49 -43
  323. package/chunks/{zh-VBFCRQBL.js → zh-J2GLI64H.js} +2 -1
  324. package/chunks/{zh-TW-N2TBF2F2.js → zh-TW-TBAICUJQ.js} +2 -1
  325. package/chunks/{zoom-image-RJHC66WG.js → zoom-image-OG7X7KAA.js} +12 -10
  326. package/cli.js +14 -14
  327. package/export-transcript-document.css +1 -0
  328. package/export-transcript-document.js +164 -165
  329. package/locales/ca.js +2 -2
  330. package/locales/de.js +2 -2
  331. package/locales/en.js +3 -2
  332. package/locales/fr.js +2 -2
  333. package/locales/ja.js +2 -2
  334. package/locales/pt.js +2 -2
  335. package/locales/ru.js +2 -2
  336. package/locales/zh-TW.js +3 -2
  337. package/locales/zh.js +3 -2
  338. package/package.json +6 -5
  339. package/web-shell/assets/{abnfDiagram-VCTEODGH-DHc6plZn.js → abnfDiagram-VCTEODGH-NT0lTLRG.js} +1 -1
  340. package/web-shell/assets/{arc-BQ9m8TDV.js → arc-DDqnIMMx.js} +1 -1
  341. package/web-shell/assets/{architectureDiagram-5GKGNRK7-D5ap3oVB.js → architectureDiagram-5GKGNRK7-DfYghE3W.js} +1 -1
  342. package/web-shell/assets/{blockDiagram-NRAW4CY4-BIbnyNph.js → blockDiagram-NRAW4CY4-DlqJIx5c.js} +1 -1
  343. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BRsdx_iG.js → c4Diagram-UCG6FXSJ-CinqLGU4.js} +1 -1
  344. package/web-shell/assets/channel-BHGoSkEv.js +1 -0
  345. package/web-shell/assets/{chunk-2Q5K7J3B-3lf1fNlx.js → chunk-2Q5K7J3B-CsjJX5M7.js} +1 -1
  346. package/web-shell/assets/{chunk-5VM5RSS4-DP8VNRc4.js → chunk-5VM5RSS4-CaVb2tdH.js} +1 -1
  347. package/web-shell/assets/{chunk-F27PBJKO-DrohDmZ6.js → chunk-F27PBJKO-CRyErlzW.js} +1 -1
  348. package/web-shell/assets/{chunk-G27WJ6UU-UZ2QhSx6.js → chunk-G27WJ6UU-7I79DZCf.js} +1 -1
  349. package/web-shell/assets/{chunk-JWPE2WC7-BIMHVcZK.js → chunk-JWPE2WC7-Dz4cac5F.js} +1 -1
  350. package/web-shell/assets/{chunk-LCL6LL3I-izRxdSDd.js → chunk-LCL6LL3I-Ls24Derb.js} +1 -1
  351. package/web-shell/assets/{chunk-POPQ4Y6H-CXADD4PP.js → chunk-POPQ4Y6H-JzYe4qx7.js} +1 -1
  352. package/web-shell/assets/{chunk-SVP7TREG-B96d8Y_1.js → chunk-SVP7TREG-BxDwesA-.js} +1 -1
  353. package/web-shell/assets/{chunk-XXDRQBXY-CF2sVQpv.js → chunk-XXDRQBXY-CW4hjgWc.js} +1 -1
  354. package/web-shell/assets/classDiagram-DTDB5LWJ-E47Xnn15.js +1 -0
  355. package/web-shell/assets/classDiagram-v2-JRS7N3AN-E47Xnn15.js +1 -0
  356. package/web-shell/assets/{cose-bilkent-JH36ORCC-CT6tXVAS.js → cose-bilkent-JH36ORCC-DxikE9iF.js} +1 -1
  357. package/web-shell/assets/{cynefin-OW5HDTMX-X1NS4vtV.js → cynefin-OW5HDTMX-CvVsIkVN.js} +1 -1
  358. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DNsKNOT4.js → cynefinDiagram-5FMLGOSQ-CDHkk3wq.js} +1 -1
  359. package/web-shell/assets/{dagre-3AP2YEHR-9-AHKqsb.js → dagre-3AP2YEHR-BgLdkVLT.js} +1 -1
  360. package/web-shell/assets/{diagram-S7CK7UJ4-Bjgms7j6.js → diagram-S7CK7UJ4-DP43cGhe.js} +1 -1
  361. package/web-shell/assets/{diagram-UQ7AKVKN-h6bCprbE.js → diagram-UQ7AKVKN-BWrZYhoT.js} +1 -1
  362. package/web-shell/assets/{diagram-VSXAHHWV-4SbQXVLt.js → diagram-VSXAHHWV-B80wjH_n.js} +1 -1
  363. package/web-shell/assets/{diagram-VX7I27RA-B5gPCzzB.js → diagram-VX7I27RA-DPpKmDsY.js} +1 -1
  364. package/web-shell/assets/{diagram-Z3DM3KII-DFJXIA3A.js → diagram-Z3DM3KII-kaEBNbNU.js} +1 -1
  365. package/web-shell/assets/{ebnfDiagram-PWID7BFC-FwyaU7VY.js → ebnfDiagram-PWID7BFC-1-qbEZvk.js} +1 -1
  366. package/web-shell/assets/{erDiagram-SSCWMZ5O-8vJQh2te.js → erDiagram-SSCWMZ5O-CrK2gMkV.js} +1 -1
  367. package/web-shell/assets/{flowDiagram-A5DVABFB-BzA_1gMN.js → flowDiagram-A5DVABFB-Dic2xofW.js} +1 -1
  368. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-Co-ABbVX.js → ganttDiagram-EL5Y4UJY-DJko8vT7.js} +1 -1
  369. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DW_FcyrX.js → gitGraphDiagram-WWUBYQGX-DxsQ-bHT.js} +1 -1
  370. package/web-shell/assets/index-DY8CxdBr.js +2173 -0
  371. package/web-shell/assets/index-eBxK3rs2.css +36 -0
  372. package/web-shell/assets/{index-BbMXfhNG.js → index-t7VBrUeD.js} +1 -1
  373. package/web-shell/assets/{infoDiagram-RXCK75RN-BEgfhUFN.js → infoDiagram-RXCK75RN-DcRUJbNi.js} +1 -1
  374. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DCsMxQmc.js → ishikawaDiagram-5VMMS53U-CUPw-2_e.js} +1 -1
  375. package/web-shell/assets/{journeyDiagram-EYS64GPL-DyIEYoHz.js → journeyDiagram-EYS64GPL-yOHhZxkW.js} +1 -1
  376. package/web-shell/assets/{kanban-definition-3QL26DDD-CkxjqCNr.js → kanban-definition-3QL26DDD-CFUGBbqz.js} +1 -1
  377. package/web-shell/assets/{layout-BEWc0Al9.js → layout-BoilNfBU.js} +1 -1
  378. package/web-shell/assets/{linear-CNuNxirL.js → linear-DOuHaPrl.js} +1 -1
  379. package/web-shell/assets/{mermaid.core-DZBre674.js → mermaid.core-1G1fXWda.js} +6 -6
  380. package/web-shell/assets/{mindmap-definition-FBJOCRG2-CpafFz_F.js → mindmap-definition-FBJOCRG2-B8BhkrOX.js} +1 -1
  381. package/web-shell/assets/{pegDiagram-XKGWAZYB-DfZqk_dq.js → pegDiagram-XKGWAZYB-CipC5K1D.js} +1 -1
  382. package/web-shell/assets/{pieDiagram-E7YTZNPT-S0UWXlgC.js → pieDiagram-E7YTZNPT-CHBDFDUJ.js} +1 -1
  383. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-dd37_Ohj.js → quadrantDiagram-AXDQQJYC-_iiBkoZO.js} +1 -1
  384. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CH8NJZ7u.js → railroadDiagram-O6MQD6OU-Cx1peHDi.js} +1 -1
  385. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CFdqWYih.js → requirementDiagram-EFPCY7ZU-CBRiPbdQ.js} +1 -1
  386. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CsddcEGD.js → sankeyDiagram-P5KCCOFB-TT6GcHaZ.js} +1 -1
  387. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BZ270mGw.js → sequenceDiagram-WJ2MYXX4-CWP42PNb.js} +1 -1
  388. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CGaS4DBV.js → sizeCapture-X5ZJPWSS-Bp94roEG.js} +1 -1
  389. package/web-shell/assets/{stateDiagram-HBIQ2CUA-COpIzMu6.js → stateDiagram-HBIQ2CUA-0ftrzTAy.js} +1 -1
  390. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-PgAST0dK.js +1 -0
  391. package/web-shell/assets/{swimlanes-XN3QIQJK-CMF889m3.js → swimlanes-XN3QIQJK-D-FsenYJ.js} +1 -1
  392. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-BcWcB5bj.js +8 -0
  393. package/web-shell/assets/{timeline-definition-24CTP7MA-BelnxYz5.js → timeline-definition-24CTP7MA-Ctvrj28y.js} +1 -1
  394. package/web-shell/assets/{vennDiagram-4TSXK5OY-CU-NRqIB.js → vennDiagram-4TSXK5OY-5DZncjOt.js} +1 -1
  395. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CDNKqWh-.js → wardleyDiagram-VM6X3IG4-jZjYwPY7.js} +1 -1
  396. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-CLqguL5D.js → xychartDiagram-S5SC5T6Z-Ci6Q2C2_.js} +1 -1
  397. package/web-shell/index.html +29 -5
  398. package/chunks/chunk-V7RNNPGC.js +0 -44
  399. package/chunks/chunk-X35VIWWJ.js +0 -276
  400. package/chunks/workflow-3MABM53N.js +0 -2771
  401. package/chunks/workspace-providers-status-2FRLBZ5I.js +0 -119
  402. package/web-shell/assets/channel-uMMdTrYk.js +0 -1
  403. package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +0 -1
  404. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +0 -1
  405. package/web-shell/assets/index-Bu-rZoJ-.js +0 -2150
  406. package/web-shell/assets/index-CsPwZ1ut.css +0 -36
  407. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +0 -1
  408. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +0 -8
  409. /package/chunks/{chunk-JA5CBKRP.js → chunk-7NXSVSFB.js} +0 -0
@@ -2,23 +2,20 @@
2
2
  "use strict";
3
3
  import {
4
4
  reportChatRecordingFailureToAdapter
5
- } from "./chunk-CALNF3Z3.js";
5
+ } from "./chunk-7XVQNDFB.js";
6
6
  import {
7
7
  StreamJsonOutputAdapter
8
- } from "./chunk-4BLTSTF6.js";
8
+ } from "./chunk-AWMJRE5N.js";
9
9
  import {
10
10
  ICON,
11
11
  SHELL_COMMAND_NAME
12
- } from "./chunk-ULY4ISY2.js";
12
+ } from "./chunk-PMS4FVLY.js";
13
13
  import {
14
14
  theme
15
15
  } from "./chunk-4LIPOIXS.js";
16
16
  import {
17
17
  require_jsx_runtime
18
18
  } from "./chunk-SV5PQVQE.js";
19
- import {
20
- themeManager
21
- } from "./chunk-2XRE4KE4.js";
22
19
  import {
23
20
  Box_default,
24
21
  Text
@@ -26,50 +23,67 @@ import {
26
23
  import {
27
24
  require_react
28
25
  } from "./chunk-5QWWOFGG.js";
26
+ import {
27
+ themeManager
28
+ } from "./chunk-2XRE4KE4.js";
29
+ import {
30
+ getCachedStringWidth,
31
+ toCodePoints
32
+ } from "./chunk-47ECGEJC.js";
29
33
  import {
30
34
  createLoadedSettingsAdapter
31
- } from "./chunk-NVS4Z6GT.js";
35
+ } from "./chunk-BQOP3K76.js";
32
36
  import {
33
37
  SettingScope,
34
38
  settingExistsInScope
35
- } from "./chunk-Q2F43WTJ.js";
39
+ } from "./chunk-OOLSYRZ7.js";
36
40
  import {
37
- t
38
- } from "./chunk-CRZBDVP2.js";
41
+ getCurrentLanguage,
42
+ t,
43
+ ta
44
+ } from "./chunk-74JEYK2C.js";
39
45
  import {
40
46
  INITIAL_FOLLOWUP_STATE,
41
47
  Logger,
42
48
  applyProviderInstallPlan,
49
+ createFollowupController
50
+ } from "./chunk-F2RKL5I2.js";
51
+ import {
43
52
  buildInstallPlan,
44
- createFollowupController,
45
53
  getDefaultBaseUrlForProtocol,
46
54
  getDefaultModelIds,
47
55
  resolveBaseUrl,
48
56
  shouldShowStep
49
- } from "./chunk-BL6B2QS2.js";
50
- import {
51
- qwenOAuth2Events,
52
- sanitizeForOsc
53
- } from "./chunk-XDNFODER.js";
57
+ } from "./chunk-AEY27Z35.js";
54
58
  import {
55
59
  ShellExecutionService,
60
+ TERMINAL_CSI_REGEX,
61
+ TERMINAL_OSC_REGEX,
62
+ TERMINAL_SHIFT_DCS_REGEX,
56
63
  allowEditorTypeInSandbox,
57
64
  checkHasEditorType,
58
65
  compactToolResultDisplayForHistory,
59
- isSignalTermination
60
- } from "./chunk-43CI6YWJ.js";
66
+ isSignalTermination,
67
+ resolveBranchName,
68
+ stripTerminalControlSequences,
69
+ watchRepoBranch
70
+ } from "./chunk-JV5YASQA.js";
61
71
  import {
62
72
  formatMemoryUsage
63
73
  } from "./chunk-CHEIIBT3.js";
74
+ import {
75
+ qwenOAuth2Events,
76
+ sanitizeForOsc
77
+ } from "./chunk-B6BDT4RX.js";
64
78
  import {
65
79
  AuthEvent,
66
80
  PromptSuggestionEvent,
67
81
  logAuth,
68
82
  logPromptSuggestion
69
- } from "./chunk-OIPUQE3S.js";
83
+ } from "./chunk-34ZYDM3F.js";
70
84
  import {
71
85
  isBinary
72
- } from "./chunk-7VEYUF3N.js";
86
+ } from "./chunk-W5ZQMAEM.js";
73
87
  import {
74
88
  createDebugLogger,
75
89
  getErrorMessage
@@ -435,9 +449,9 @@ var DualOutputBridge = class {
435
449
  }
436
450
  }
437
451
  this.active = false;
438
- this.shutdownPromise = new Promise((resolve) => {
452
+ this.shutdownPromise = new Promise((resolve2) => {
439
453
  if (this.stream.closed || this.stream.destroyed) {
440
- resolve();
454
+ resolve2();
441
455
  return;
442
456
  }
443
457
  const cleanup = /* @__PURE__ */ __name(() => {
@@ -446,7 +460,7 @@ var DualOutputBridge = class {
446
460
  }, "cleanup");
447
461
  const onClose = /* @__PURE__ */ __name(() => {
448
462
  cleanup();
449
- resolve();
463
+ resolve2();
450
464
  }, "onClose");
451
465
  const onError = /* @__PURE__ */ __name((err) => {
452
466
  debugLogger.debug("DualOutput: stream error during shutdown:", err);
@@ -458,7 +472,7 @@ var DualOutputBridge = class {
458
472
  } catch (err) {
459
473
  cleanup();
460
474
  debugLogger.debug("DualOutput: stream end error during shutdown:", err);
461
- resolve();
475
+ resolve2();
462
476
  }
463
477
  });
464
478
  return this.shutdownPromise;
@@ -613,7 +627,7 @@ var RemoteInputWatcher = class {
613
627
  debugLogger2.warn(`RemoteInput: failed to parse line: ${trimmed}`);
614
628
  }
615
629
  });
616
- return new Promise((resolve) => {
630
+ return new Promise((resolve2) => {
617
631
  rl.on("close", () => {
618
632
  this.bytesRead = consumeUntil;
619
633
  if (nextConsumedPrefixHash !== null) {
@@ -621,7 +635,7 @@ var RemoteInputWatcher = class {
621
635
  }
622
636
  this.reading = false;
623
637
  this.processQueue();
624
- resolve();
638
+ resolve2();
625
639
  });
626
640
  });
627
641
  }
@@ -951,6 +965,7 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config, addItem, onAuthCh
951
965
  const valid = [
952
966
  "qwen-oauth" /* QWEN_OAUTH */,
953
967
  "openai" /* USE_OPENAI */,
968
+ "openai-responses" /* USE_OPENAI_RESPONSES */,
954
969
  "anthropic" /* USE_ANTHROPIC */,
955
970
  "gemini" /* USE_GEMINI */,
956
971
  "vertex-ai" /* USE_VERTEX_AI */
@@ -1019,9 +1034,61 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config, addItem, onAuthCh
1019
1034
  };
1020
1035
  }, "useAuthCommand");
1021
1036
 
1022
- // packages/cli/src/ui/hooks/shellCommandProcessor.ts
1037
+ // packages/cli/src/ui/hooks/useGitBranchName.ts
1023
1038
  init_esbuild_shims();
1024
1039
  var import_react4 = __toESM(require_react(), 1);
1040
+ var BRANCH_POLL_INTERVAL_MS = 5e3;
1041
+ function useGitBranchName(cwd) {
1042
+ const [branchName, setBranchName] = (0, import_react4.useState)(void 0);
1043
+ const branchNameRef = (0, import_react4.useRef)(branchName);
1044
+ branchNameRef.current = branchName;
1045
+ (0, import_react4.useEffect)(() => {
1046
+ let cancelled = false;
1047
+ let dispose;
1048
+ let pollTimer;
1049
+ let refreshGeneration = 0;
1050
+ const refresh = /* @__PURE__ */ __name(async () => {
1051
+ const generation = ++refreshGeneration;
1052
+ const name = await resolveBranchName(cwd);
1053
+ if (!cancelled && generation === refreshGeneration && name !== branchNameRef.current) {
1054
+ setBranchName(name);
1055
+ }
1056
+ }, "refresh");
1057
+ const init = /* @__PURE__ */ __name(async () => {
1058
+ await refresh();
1059
+ if (cancelled) return;
1060
+ const disposer = await watchRepoBranch(cwd, () => {
1061
+ void refresh().catch(() => {
1062
+ });
1063
+ });
1064
+ if (cancelled) {
1065
+ disposer();
1066
+ } else {
1067
+ dispose = disposer;
1068
+ }
1069
+ if (!cancelled) {
1070
+ pollTimer = setInterval(() => {
1071
+ void refresh().catch(() => {
1072
+ });
1073
+ }, BRANCH_POLL_INTERVAL_MS);
1074
+ pollTimer.unref?.();
1075
+ }
1076
+ }, "init");
1077
+ void init().catch(() => {
1078
+ });
1079
+ return () => {
1080
+ cancelled = true;
1081
+ dispose?.();
1082
+ if (pollTimer) clearInterval(pollTimer);
1083
+ };
1084
+ }, [cwd]);
1085
+ return branchName;
1086
+ }
1087
+ __name(useGitBranchName, "useGitBranchName");
1088
+
1089
+ // packages/cli/src/ui/hooks/shellCommandProcessor.ts
1090
+ init_esbuild_shims();
1091
+ var import_react5 = __toESM(require_react(), 1);
1025
1092
  import crypto from "node:crypto";
1026
1093
  import path from "node:path";
1027
1094
  import os from "node:os";
@@ -1054,8 +1121,8 @@ ${modelContent}
1054
1121
  }
1055
1122
  __name(addShellCommandToLlmHistory, "addShellCommandToLlmHistory");
1056
1123
  var useShellCommandProcessor = /* @__PURE__ */ __name((addItemToHistory, setPendingHistoryItem, onExec, onDebugMessage, config, llmClient, setShellInputFocused, terminalWidth, terminalHeight) => {
1057
- const [activeShellPtyId, setActiveShellPtyId] = (0, import_react4.useState)(null);
1058
- const handleShellCommand = (0, import_react4.useCallback)(
1124
+ const [activeShellPtyId, setActiveShellPtyId] = (0, import_react5.useState)(null);
1125
+ const handleShellCommand = (0, import_react5.useCallback)(
1059
1126
  (rawQuery, abortSignal) => {
1060
1127
  if (typeof rawQuery !== "string" || rawQuery.trim() === "") {
1061
1128
  return false;
@@ -1084,7 +1151,7 @@ var useShellCommandProcessor = /* @__PURE__ */ __name((addItemToHistory, setPend
1084
1151
  commandToExecute = `{ ${command}
1085
1152
  }; __code=$?; pwd > "${pwdFilePath}"; exit $__code`;
1086
1153
  }
1087
- const executeCommand = /* @__PURE__ */ __name(async (resolve) => {
1154
+ const executeCommand = /* @__PURE__ */ __name(async (resolve2) => {
1088
1155
  let lastUpdateTime = Date.now();
1089
1156
  let cumulativeStdout = "";
1090
1157
  let isBinaryStream = false;
@@ -1117,7 +1184,7 @@ var useShellCommandProcessor = /* @__PURE__ */ __name((addItemToHistory, setPend
1117
1184
  }
1118
1185
  setActiveShellPtyId(null);
1119
1186
  setShellInputFocused(false);
1120
- resolve();
1187
+ resolve2();
1121
1188
  }, "cleanupShellCommand");
1122
1189
  try {
1123
1190
  const activeTheme = themeManager.getActiveTheme();
@@ -1285,8 +1352,8 @@ ${finalOutput}`;
1285
1352
  cleanupShellCommand();
1286
1353
  }
1287
1354
  }, "executeCommand");
1288
- const execPromise = new Promise((resolve) => {
1289
- executeCommand(resolve);
1355
+ const execPromise = new Promise((resolve2) => {
1356
+ executeCommand(resolve2);
1290
1357
  });
1291
1358
  onExec(execPromise);
1292
1359
  return true;
@@ -1306,20 +1373,98 @@ ${finalOutput}`;
1306
1373
  return { handleShellCommand, activeShellPtyId };
1307
1374
  }, "useShellCommandProcessor");
1308
1375
 
1376
+ // packages/cli/src/ui/components/stats-helpers.tsx
1377
+ init_esbuild_shims();
1378
+ var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
1379
+ var TAB_DEFS = [
1380
+ { tab: "session", label: /* @__PURE__ */ __name(() => t("Session"), "label") },
1381
+ { tab: "activity", label: /* @__PURE__ */ __name(() => t("Activity"), "label") },
1382
+ { tab: "efficiency", label: /* @__PURE__ */ __name(() => t("Efficiency"), "label") }
1383
+ ];
1384
+ var RANGE_CYCLE = ["all", "month", "week", "today"];
1385
+ function getHeatmapColors() {
1386
+ return {
1387
+ 0: "#161b22",
1388
+ 1: "#0e4429",
1389
+ 2: "#006d32",
1390
+ 3: "#26a641",
1391
+ 4: "#39d353"
1392
+ };
1393
+ }
1394
+ __name(getHeatmapColors, "getHeatmapColors");
1395
+ function getSeriesColors() {
1396
+ return [
1397
+ theme.text.link,
1398
+ theme.status.error,
1399
+ theme.text.accent,
1400
+ theme.status.success,
1401
+ theme.status.warning,
1402
+ theme.text.code
1403
+ ];
1404
+ }
1405
+ __name(getSeriesColors, "getSeriesColors");
1406
+ function getRangeLabel(range) {
1407
+ const labels = {
1408
+ today: t("Today"),
1409
+ all: t("All time"),
1410
+ week: t("Last 7 days"),
1411
+ month: t("Last 30 days")
1412
+ };
1413
+ return labels[range] ?? range;
1414
+ }
1415
+ __name(getRangeLabel, "getRangeLabel");
1416
+ function fmtTokens(n) {
1417
+ if (n >= 1e6) return `${(n / 1e6).toFixed(1)}m`;
1418
+ if (n >= 1e3) return `${(n / 1e3).toFixed(1)}k`;
1419
+ return `${n}`;
1420
+ }
1421
+ __name(fmtTokens, "fmtTokens");
1422
+ function fmtDurationShort(ms) {
1423
+ const totalMinutes = Math.floor(ms / 6e4);
1424
+ const days = Math.floor(totalMinutes / 1440);
1425
+ const hours = Math.floor(totalMinutes % 1440 / 60);
1426
+ const minutes = totalMinutes % 60;
1427
+ const d = t("d");
1428
+ const h = t("h");
1429
+ const m = t("m");
1430
+ if (days > 0) return `${days}${d} ${hours}${h} ${minutes}${m}`;
1431
+ if (hours > 0) return `${hours}${h} ${minutes}${m}`;
1432
+ return `${minutes}${m}`;
1433
+ }
1434
+ __name(fmtDurationShort, "fmtDurationShort");
1435
+ function fmtSuccessBar(rate) {
1436
+ const filled = Math.max(0, Math.min(10, Math.round(rate / 10)));
1437
+ return "\u2588".repeat(filled) + "\u2591".repeat(10 - filled);
1438
+ }
1439
+ __name(fmtSuccessBar, "fmtSuccessBar");
1440
+ function getSuccessColor(rate) {
1441
+ if (rate >= 95) return theme.status.success;
1442
+ if (rate >= 80) return theme.status.warning;
1443
+ return theme.status.error;
1444
+ }
1445
+ __name(getSuccessColor, "getSuccessColor");
1446
+ function getCacheColor(rate) {
1447
+ if (rate >= 85) return theme.status.success;
1448
+ if (rate >= 70) return theme.status.warning;
1449
+ return theme.status.error;
1450
+ }
1451
+ __name(getCacheColor, "getCacheColor");
1452
+ var TableRow = /* @__PURE__ */ __name(({ cells }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { children: cells.map((cell, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { width: cell.width, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: cell.color, bold: cell.bold, children: cell.text }) }, i)) }), "TableRow");
1453
+
1309
1454
  // packages/cli/src/ui/hooks/useFollowupSuggestions.tsx
1310
1455
  init_esbuild_shims();
1311
- var import_react5 = __toESM(require_react(), 1);
1456
+ var import_react6 = __toESM(require_react(), 1);
1312
1457
  function useFollowupSuggestionsCLI(options = {}) {
1313
1458
  const { enabled = true, onAccept, config, isFocused = true } = options;
1314
- const [state, setState] = (0, import_react5.useState)(INITIAL_FOLLOWUP_STATE);
1315
- const onAcceptRef = (0, import_react5.useRef)(onAccept);
1459
+ const [state, setState] = (0, import_react6.useState)(INITIAL_FOLLOWUP_STATE);
1460
+ const onAcceptRef = (0, import_react6.useRef)(onAccept);
1316
1461
  onAcceptRef.current = onAccept;
1317
- const configRef = (0, import_react5.useRef)(config);
1462
+ const configRef = (0, import_react6.useRef)(config);
1318
1463
  configRef.current = config;
1319
- const firstKeystrokeAtRef = (0, import_react5.useRef)(0);
1320
- const prevShownAtRef = (0, import_react5.useRef)(0);
1321
- const wasFocusedWhenShownRef = (0, import_react5.useRef)(true);
1322
- (0, import_react5.useEffect)(() => {
1464
+ const firstKeystrokeAtRef = (0, import_react6.useRef)(0);
1465
+ const prevShownAtRef = (0, import_react6.useRef)(0);
1466
+ const wasFocusedWhenShownRef = (0, import_react6.useRef)(true);
1467
+ (0, import_react6.useEffect)(() => {
1323
1468
  if (state.shownAt > 0 && state.shownAt !== prevShownAtRef.current) {
1324
1469
  prevShownAtRef.current = state.shownAt;
1325
1470
  wasFocusedWhenShownRef.current = isFocused;
@@ -1328,12 +1473,12 @@ function useFollowupSuggestionsCLI(options = {}) {
1328
1473
  prevShownAtRef.current = 0;
1329
1474
  }
1330
1475
  }, [state.shownAt, isFocused]);
1331
- const recordKeystroke = (0, import_react5.useCallback)(() => {
1476
+ const recordKeystroke = (0, import_react6.useCallback)(() => {
1332
1477
  if (firstKeystrokeAtRef.current === 0 && state.isVisible) {
1333
1478
  firstKeystrokeAtRef.current = Date.now();
1334
1479
  }
1335
1480
  }, [state.isVisible]);
1336
- const onOutcome = (0, import_react5.useCallback)(
1481
+ const onOutcome = (0, import_react6.useCallback)(
1337
1482
  (params) => {
1338
1483
  const cfg = configRef.current;
1339
1484
  if (!cfg) return;
@@ -1358,7 +1503,7 @@ function useFollowupSuggestionsCLI(options = {}) {
1358
1503
  },
1359
1504
  []
1360
1505
  );
1361
- const controller = (0, import_react5.useMemo)(
1506
+ const controller = (0, import_react6.useMemo)(
1362
1507
  () => createFollowupController({
1363
1508
  enabled,
1364
1509
  onStateChange: setState,
@@ -1367,13 +1512,13 @@ function useFollowupSuggestionsCLI(options = {}) {
1367
1512
  }),
1368
1513
  [enabled, onOutcome]
1369
1514
  );
1370
- (0, import_react5.useEffect)(() => {
1515
+ (0, import_react6.useEffect)(() => {
1371
1516
  if (!enabled) {
1372
1517
  controller.clear();
1373
1518
  }
1374
1519
  return () => controller.cleanup();
1375
1520
  }, [controller, enabled]);
1376
- return (0, import_react5.useMemo)(
1521
+ return (0, import_react6.useMemo)(
1377
1522
  () => ({
1378
1523
  state,
1379
1524
  setSuggestion: controller.setSuggestion,
@@ -1387,6 +1532,330 @@ function useFollowupSuggestionsCLI(options = {}) {
1387
1532
  }
1388
1533
  __name(useFollowupSuggestionsCLI, "useFollowupSuggestionsCLI");
1389
1534
 
1535
+ // packages/cli/src/ui/components/AsciiArt.ts
1536
+ init_esbuild_shims();
1537
+ var shortAsciiLogo = `
1538
+ \u2584\u2584\u2584\u2584\u2584\u2584 \u2584\u2584 \u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584 \u2584\u2584
1539
+ \u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551
1540
+ \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551
1541
+ \u2588\u2588\u2551\u2584\u2584 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551
1542
+ \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u255A\u2588\u2588\u2588\u2554\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551
1543
+ \u255A\u2550\u2550\u2580\u2580\u2550\u255D \u255A\u2550\u2550\u255D\u255A\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D
1544
+ `;
1545
+
1546
+ // packages/cli/src/ui/utils/customBanner.ts
1547
+ init_esbuild_shims();
1548
+ import * as fs2 from "node:fs";
1549
+ import * as path2 from "node:path";
1550
+ var debugLogger4 = createDebugLogger("BANNER");
1551
+ var MAX_FILE_BYTES = 64 * 1024;
1552
+ var MAX_ART_LINES = 200;
1553
+ var MAX_ART_COLS = 200;
1554
+ var MAX_TITLE_LENGTH = 80;
1555
+ var MAX_SUBTITLE_LENGTH = 160;
1556
+ function resolveCustomBanner(settings) {
1557
+ const ui = settings.merged.ui;
1558
+ const cache = /* @__PURE__ */ new Map();
1559
+ const title = sanitizeTitle(ui?.customBannerTitle);
1560
+ const subtitle = sanitizeSubtitle(ui?.customBannerSubtitle);
1561
+ const scoped = collectScopedTiers(settings);
1562
+ return {
1563
+ asciiArt: {
1564
+ small: scoped.small && resolveTier(scoped.small.source, scoped.small.dir, cache),
1565
+ large: scoped.large && resolveTier(scoped.large.source, scoped.large.dir, cache)
1566
+ },
1567
+ title,
1568
+ subtitle
1569
+ };
1570
+ }
1571
+ __name(resolveCustomBanner, "resolveCustomBanner");
1572
+ function collectScopedTiers(settings) {
1573
+ const order = [
1574
+ settings.system,
1575
+ ...settings.isTrusted ? [settings.workspace] : [],
1576
+ settings.user,
1577
+ settings.systemDefaults
1578
+ ];
1579
+ let small;
1580
+ let large;
1581
+ for (const file of order) {
1582
+ if (small && large) break;
1583
+ const raw = file.settings.ui?.customAsciiArt;
1584
+ if (raw === void 0 || raw === null) continue;
1585
+ const tiers = normalizeTiers(raw);
1586
+ if (!tiers) continue;
1587
+ const dir = file.path ? path2.dirname(file.path) : "";
1588
+ const considerTier = /* @__PURE__ */ __name((tier, label) => {
1589
+ if (tier === void 0) return void 0;
1590
+ const isPathSource = typeof tier === "object";
1591
+ if (isPathSource && !dir) {
1592
+ debugLogger4.warn(
1593
+ `Ignoring ui.customAsciiArt.${label}: {path} entry has no owning settings file directory to resolve against.`
1594
+ );
1595
+ return void 0;
1596
+ }
1597
+ return { source: tier, dir };
1598
+ }, "considerTier");
1599
+ if (!small) {
1600
+ const next = considerTier(tiers.small, "small");
1601
+ if (next) small = next;
1602
+ }
1603
+ if (!large) {
1604
+ const next = considerTier(tiers.large, "large");
1605
+ if (next) large = next;
1606
+ }
1607
+ }
1608
+ return { small, large };
1609
+ }
1610
+ __name(collectScopedTiers, "collectScopedTiers");
1611
+ function normalizeTiers(value) {
1612
+ if (typeof value === "string") {
1613
+ return { small: value, large: value };
1614
+ }
1615
+ if (!value || typeof value !== "object") {
1616
+ debugLogger4.warn(
1617
+ "Ignoring ui.customAsciiArt: expected a string, {path}, or {small,large} object."
1618
+ );
1619
+ return void 0;
1620
+ }
1621
+ const hasPath = "path" in value && typeof value.path === "string";
1622
+ const hasTierKeys = "small" in value || "large" in value;
1623
+ if (hasPath && hasTierKeys) {
1624
+ debugLogger4.warn(
1625
+ "Ignoring ui.customAsciiArt: object combines `path` with `small` / `large`. Use one shape or the other."
1626
+ );
1627
+ return void 0;
1628
+ }
1629
+ if (hasPath) {
1630
+ return { small: value, large: value };
1631
+ }
1632
+ if (hasTierKeys) {
1633
+ const tiered = value;
1634
+ return {
1635
+ small: validateSource(tiered.small),
1636
+ large: validateSource(tiered.large)
1637
+ };
1638
+ }
1639
+ debugLogger4.warn(
1640
+ "Ignoring ui.customAsciiArt: expected a string, {path}, or {small,large} object."
1641
+ );
1642
+ return void 0;
1643
+ }
1644
+ __name(normalizeTiers, "normalizeTiers");
1645
+ function validateSource(source) {
1646
+ if (source === void 0 || source === null) return void 0;
1647
+ if (typeof source === "string") return source;
1648
+ if (typeof source === "object" && "path" in source && typeof source.path === "string") {
1649
+ return { path: source.path };
1650
+ }
1651
+ debugLogger4.warn(
1652
+ "Ignoring ui.customAsciiArt tier: expected a string or {path} object."
1653
+ );
1654
+ return void 0;
1655
+ }
1656
+ __name(validateSource, "validateSource");
1657
+ function resolveTier(source, ownerDir, cache) {
1658
+ if (source === void 0) return void 0;
1659
+ if (typeof source === "string") {
1660
+ const trimmed = source.trim();
1661
+ if (!trimmed) return void 0;
1662
+ const key = `inline:${source}`;
1663
+ return memo(cache, key, () => sanitizeArt(source));
1664
+ }
1665
+ const resolvedPath = path2.isAbsolute(source.path) ? source.path : path2.resolve(ownerDir, source.path);
1666
+ return memo(cache, `path:${resolvedPath}`, () => {
1667
+ const raw = readArtFile(resolvedPath);
1668
+ if (raw === void 0) return void 0;
1669
+ return sanitizeArt(raw);
1670
+ });
1671
+ }
1672
+ __name(resolveTier, "resolveTier");
1673
+ function memo(cache, key, compute) {
1674
+ const hit = cache.get(key);
1675
+ if (hit) return hit.value;
1676
+ const value = compute();
1677
+ cache.set(key, { value });
1678
+ return value;
1679
+ }
1680
+ __name(memo, "memo");
1681
+ function readArtFile(absolutePath) {
1682
+ let fd;
1683
+ try {
1684
+ let preOpenStat;
1685
+ try {
1686
+ preOpenStat = fs2.lstatSync(absolutePath);
1687
+ } catch (err) {
1688
+ debugLogger4.warn(
1689
+ `Failed to stat ui.customAsciiArt at ${absolutePath}: ${err.message}`
1690
+ );
1691
+ return void 0;
1692
+ }
1693
+ if (!preOpenStat.isFile()) {
1694
+ debugLogger4.warn(
1695
+ `Ignoring ui.customAsciiArt: ${absolutePath} is not a regular file.`
1696
+ );
1697
+ return void 0;
1698
+ }
1699
+ const flags = typeof fs2.constants.O_NOFOLLOW === "number" ? fs2.constants.O_RDONLY | fs2.constants.O_NOFOLLOW : fs2.constants.O_RDONLY;
1700
+ fd = fs2.openSync(absolutePath, flags);
1701
+ const stat = fs2.fstatSync(fd);
1702
+ if (!stat.isFile()) {
1703
+ debugLogger4.warn(
1704
+ `Ignoring ui.customAsciiArt: ${absolutePath} is not a regular file.`
1705
+ );
1706
+ return void 0;
1707
+ }
1708
+ const size = Math.min(stat.size, MAX_FILE_BYTES);
1709
+ const buffer = Buffer.alloc(size);
1710
+ fs2.readSync(fd, buffer, 0, size, 0);
1711
+ if (stat.size > MAX_FILE_BYTES) {
1712
+ debugLogger4.warn(
1713
+ `Truncated ui.customAsciiArt at ${absolutePath}: file is ${stat.size} bytes, capped at ${MAX_FILE_BYTES}.`
1714
+ );
1715
+ }
1716
+ return buffer.toString("utf8");
1717
+ } catch (err) {
1718
+ debugLogger4.warn(
1719
+ `Failed to read ui.customAsciiArt at ${absolutePath}: ${err.message}`
1720
+ );
1721
+ return void 0;
1722
+ } finally {
1723
+ if (fd !== void 0) {
1724
+ try {
1725
+ fs2.closeSync(fd);
1726
+ } catch {
1727
+ }
1728
+ }
1729
+ }
1730
+ }
1731
+ __name(readArtFile, "readArtFile");
1732
+ function sanitizeArt(input) {
1733
+ let s = input.replace(/\r\n?/g, "\n");
1734
+ s = s.replace(TERMINAL_OSC_REGEX, " ").replace(TERMINAL_CSI_REGEX, " ").replace(TERMINAL_SHIFT_DCS_REGEX, " ");
1735
+ s = s.replace(/[\x00-\x08\x0b-\x1f\x7f-\x9f]/g, " ");
1736
+ const rawLines = s.split("\n");
1737
+ const truncatedRows = rawLines.length > MAX_ART_LINES;
1738
+ const limitedLines = truncatedRows ? rawLines.slice(0, MAX_ART_LINES) : rawLines;
1739
+ let truncatedCols = false;
1740
+ const cappedLines = limitedLines.map((line) => {
1741
+ const detabbed = line.replace(/\t/g, " ");
1742
+ const trimmed = detabbed.replace(/\s+$/u, "");
1743
+ if (getCachedStringWidth(trimmed) <= MAX_ART_COLS) {
1744
+ return trimmed;
1745
+ }
1746
+ truncatedCols = true;
1747
+ const codePoints = toCodePoints(trimmed);
1748
+ let kept = "";
1749
+ for (const cp of codePoints) {
1750
+ if (getCachedStringWidth(kept + cp) > MAX_ART_COLS) break;
1751
+ kept += cp;
1752
+ }
1753
+ return kept;
1754
+ });
1755
+ while (cappedLines.length > 0 && cappedLines[cappedLines.length - 1] === "") {
1756
+ cappedLines.pop();
1757
+ }
1758
+ if (cappedLines.length === 0) return "";
1759
+ if (truncatedRows) {
1760
+ debugLogger4.warn(`Truncated ui.customAsciiArt to ${MAX_ART_LINES} lines.`);
1761
+ }
1762
+ if (truncatedCols) {
1763
+ debugLogger4.warn(
1764
+ `Truncated ui.customAsciiArt to ${MAX_ART_COLS} columns per line.`
1765
+ );
1766
+ }
1767
+ return cappedLines.join("\n");
1768
+ }
1769
+ __name(sanitizeArt, "sanitizeArt");
1770
+ function sanitizeTitle(raw) {
1771
+ return sanitizeSingleLine(raw, MAX_TITLE_LENGTH, "ui.customBannerTitle");
1772
+ }
1773
+ __name(sanitizeTitle, "sanitizeTitle");
1774
+ function sanitizeSubtitle(raw) {
1775
+ return sanitizeSingleLine(
1776
+ raw,
1777
+ MAX_SUBTITLE_LENGTH,
1778
+ "ui.customBannerSubtitle"
1779
+ );
1780
+ }
1781
+ __name(sanitizeSubtitle, "sanitizeSubtitle");
1782
+ function sanitizeSingleLine(raw, maxLength, fieldLabel) {
1783
+ if (typeof raw !== "string") return void 0;
1784
+ let t2 = stripTerminalControlSequences(raw).replace(/\s+/g, " ").trim();
1785
+ if (!t2) return void 0;
1786
+ if (t2.length > maxLength) {
1787
+ debugLogger4.warn(`Truncated ${fieldLabel} to ${maxLength} characters.`);
1788
+ t2 = t2.slice(0, maxLength);
1789
+ }
1790
+ return t2;
1791
+ }
1792
+ __name(sanitizeSingleLine, "sanitizeSingleLine");
1793
+ function pickAsciiArtTier(small, large, availableWidth, logoGap, minInfoPanelWidth, measureWidth) {
1794
+ for (const candidate of [large, small]) {
1795
+ if (!candidate) continue;
1796
+ const w = measureWidth(candidate);
1797
+ if (availableWidth >= w + logoGap + minInfoPanelWidth) {
1798
+ return candidate;
1799
+ }
1800
+ }
1801
+ return void 0;
1802
+ }
1803
+ __name(pickAsciiArtTier, "pickAsciiArtTier");
1804
+
1805
+ // packages/cli/src/ui/hooks/usePhraseCycler.ts
1806
+ init_esbuild_shims();
1807
+ var import_react7 = __toESM(require_react(), 1);
1808
+ var WITTY_LOADING_PHRASES = ["I'm Feeling Lucky"];
1809
+ var PHRASE_CHANGE_INTERVAL_MS = 15e3;
1810
+ var usePhraseCycler = /* @__PURE__ */ __name((isActive, isWaiting, customPhrases) => {
1811
+ const currentLanguage = getCurrentLanguage();
1812
+ const loadingPhrases = (0, import_react7.useMemo)(() => {
1813
+ if (customPhrases && customPhrases.length > 0) {
1814
+ return customPhrases;
1815
+ }
1816
+ const translatedPhrases = ta("WITTY_LOADING_PHRASES");
1817
+ return translatedPhrases.length > 0 ? translatedPhrases : WITTY_LOADING_PHRASES;
1818
+ }, [customPhrases, currentLanguage]);
1819
+ const [currentLoadingPhrase, setCurrentLoadingPhrase] = (0, import_react7.useState)(
1820
+ loadingPhrases[0]
1821
+ );
1822
+ const phraseIntervalRef = (0, import_react7.useRef)(null);
1823
+ (0, import_react7.useEffect)(() => {
1824
+ if (isWaiting) {
1825
+ setCurrentLoadingPhrase(t("Waiting for user confirmation..."));
1826
+ if (phraseIntervalRef.current) {
1827
+ clearInterval(phraseIntervalRef.current);
1828
+ phraseIntervalRef.current = null;
1829
+ }
1830
+ } else if (isActive) {
1831
+ if (phraseIntervalRef.current) {
1832
+ clearInterval(phraseIntervalRef.current);
1833
+ }
1834
+ const initialRandomIndex = Math.floor(
1835
+ Math.random() * loadingPhrases.length
1836
+ );
1837
+ setCurrentLoadingPhrase(loadingPhrases[initialRandomIndex]);
1838
+ phraseIntervalRef.current = setInterval(() => {
1839
+ const randomIndex = Math.floor(Math.random() * loadingPhrases.length);
1840
+ setCurrentLoadingPhrase(loadingPhrases[randomIndex]);
1841
+ }, PHRASE_CHANGE_INTERVAL_MS);
1842
+ } else {
1843
+ if (phraseIntervalRef.current) {
1844
+ clearInterval(phraseIntervalRef.current);
1845
+ phraseIntervalRef.current = null;
1846
+ }
1847
+ setCurrentLoadingPhrase(loadingPhrases[0]);
1848
+ }
1849
+ return () => {
1850
+ if (phraseIntervalRef.current) {
1851
+ clearInterval(phraseIntervalRef.current);
1852
+ phraseIntervalRef.current = null;
1853
+ }
1854
+ };
1855
+ }, [isActive, isWaiting, loadingPhrases]);
1856
+ return currentLoadingPhrase;
1857
+ }, "usePhraseCycler");
1858
+
1390
1859
  // packages/cli/src/ui/components/mcp/utils.ts
1391
1860
  init_esbuild_shims();
1392
1861
 
@@ -1539,87 +2008,9 @@ function getScopeMessageForSetting(settingKey, selectedScope, settings) {
1539
2008
  }
1540
2009
  __name(getScopeMessageForSetting, "getScopeMessageForSetting");
1541
2010
 
1542
- // packages/cli/src/ui/components/stats-helpers.tsx
1543
- init_esbuild_shims();
1544
- var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
1545
- var TAB_DEFS = [
1546
- { tab: "session", label: /* @__PURE__ */ __name(() => t("Session"), "label") },
1547
- { tab: "activity", label: /* @__PURE__ */ __name(() => t("Activity"), "label") },
1548
- { tab: "efficiency", label: /* @__PURE__ */ __name(() => t("Efficiency"), "label") }
1549
- ];
1550
- var RANGE_CYCLE = ["all", "month", "week", "today"];
1551
- function getHeatmapColors() {
1552
- return {
1553
- 0: "#161b22",
1554
- 1: "#0e4429",
1555
- 2: "#006d32",
1556
- 3: "#26a641",
1557
- 4: "#39d353"
1558
- };
1559
- }
1560
- __name(getHeatmapColors, "getHeatmapColors");
1561
- function getSeriesColors() {
1562
- return [
1563
- theme.text.link,
1564
- theme.status.error,
1565
- theme.text.accent,
1566
- theme.status.success,
1567
- theme.status.warning,
1568
- theme.text.code
1569
- ];
1570
- }
1571
- __name(getSeriesColors, "getSeriesColors");
1572
- function getRangeLabel(range) {
1573
- const labels = {
1574
- today: t("Today"),
1575
- all: t("All time"),
1576
- week: t("Last 7 days"),
1577
- month: t("Last 30 days")
1578
- };
1579
- return labels[range] ?? range;
1580
- }
1581
- __name(getRangeLabel, "getRangeLabel");
1582
- function fmtTokens(n) {
1583
- if (n >= 1e6) return `${(n / 1e6).toFixed(1)}m`;
1584
- if (n >= 1e3) return `${(n / 1e3).toFixed(1)}k`;
1585
- return `${n}`;
1586
- }
1587
- __name(fmtTokens, "fmtTokens");
1588
- function fmtDurationShort(ms) {
1589
- const totalMinutes = Math.floor(ms / 6e4);
1590
- const days = Math.floor(totalMinutes / 1440);
1591
- const hours = Math.floor(totalMinutes % 1440 / 60);
1592
- const minutes = totalMinutes % 60;
1593
- const d = t("d");
1594
- const h = t("h");
1595
- const m = t("m");
1596
- if (days > 0) return `${days}${d} ${hours}${h} ${minutes}${m}`;
1597
- if (hours > 0) return `${hours}${h} ${minutes}${m}`;
1598
- return `${minutes}${m}`;
1599
- }
1600
- __name(fmtDurationShort, "fmtDurationShort");
1601
- function fmtSuccessBar(rate) {
1602
- const filled = Math.max(0, Math.min(10, Math.round(rate / 10)));
1603
- return "\u2588".repeat(filled) + "\u2591".repeat(10 - filled);
1604
- }
1605
- __name(fmtSuccessBar, "fmtSuccessBar");
1606
- function getSuccessColor(rate) {
1607
- if (rate >= 95) return theme.status.success;
1608
- if (rate >= 80) return theme.status.warning;
1609
- return theme.status.error;
1610
- }
1611
- __name(getSuccessColor, "getSuccessColor");
1612
- function getCacheColor(rate) {
1613
- if (rate >= 85) return theme.status.success;
1614
- if (rate >= 70) return theme.status.warning;
1615
- return theme.status.error;
1616
- }
1617
- __name(getCacheColor, "getCacheColor");
1618
- var TableRow = /* @__PURE__ */ __name(({ cells }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { children: cells.map((cell, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { width: cell.width, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: cell.color, bold: cell.bold, children: cell.text }) }, i)) }), "TableRow");
1619
-
1620
2011
  // packages/cli/src/ui/auth/useProviderSetupFlow.ts
1621
2012
  init_esbuild_shims();
1622
- var import_react6 = __toESM(require_react(), 1);
2013
+ var import_react8 = __toESM(require_react(), 1);
1623
2014
  var STEP_ORDER = [
1624
2015
  "protocol",
1625
2016
  "baseUrl",
@@ -1636,28 +2027,28 @@ function getVisibleSteps(config) {
1636
2027
  }
1637
2028
  __name(getVisibleSteps, "getVisibleSteps");
1638
2029
  function useProviderSetupFlow(onSubmit) {
1639
- const [provider, setProvider] = (0, import_react6.useState)(null);
1640
- const [visibleSteps, setVisibleSteps] = (0, import_react6.useState)([]);
1641
- const [stepIndex, setStepIndex] = (0, import_react6.useState)(0);
1642
- const [protocol, setProtocol] = (0, import_react6.useState)("openai" /* USE_OPENAI */);
1643
- const [baseUrl, setBaseUrl] = (0, import_react6.useState)("");
1644
- const [baseUrlPlaceholder, setBaseUrlPlaceholder] = (0, import_react6.useState)("");
1645
- const [baseUrlOptionIndex, setBaseUrlOptionIndex] = (0, import_react6.useState)(0);
1646
- const [baseUrlError, setBaseUrlError] = (0, import_react6.useState)(null);
1647
- const [apiKey, setApiKey] = (0, import_react6.useState)("");
1648
- const [apiKeyError, setApiKeyError] = (0, import_react6.useState)(null);
1649
- const [modelIds, setModelIds] = (0, import_react6.useState)("");
1650
- const [modelIdsError, setModelIdsError] = (0, import_react6.useState)(null);
1651
- const [thinkingEnabled, setThinkingEnabled] = (0, import_react6.useState)(false);
1652
- const [modalityEnabled, setModalityEnabled] = (0, import_react6.useState)(false);
1653
- const [modalityImage, setModalityImage] = (0, import_react6.useState)(true);
1654
- const [modalityVideo, setModalityVideo] = (0, import_react6.useState)(true);
1655
- const [modalityAudio, setModalityAudio] = (0, import_react6.useState)(false);
1656
- const [modalityPdf, setModalityPdf] = (0, import_react6.useState)(false);
1657
- const [contextWindowSize, setContextWindowSize] = (0, import_react6.useState)("");
1658
- const [focusedConfigIndex, setFocusedConfigIndex] = (0, import_react6.useState)(0);
2030
+ const [provider, setProvider] = (0, import_react8.useState)(null);
2031
+ const [visibleSteps, setVisibleSteps] = (0, import_react8.useState)([]);
2032
+ const [stepIndex, setStepIndex] = (0, import_react8.useState)(0);
2033
+ const [protocol, setProtocol] = (0, import_react8.useState)("openai" /* USE_OPENAI */);
2034
+ const [baseUrl, setBaseUrl] = (0, import_react8.useState)("");
2035
+ const [baseUrlPlaceholder, setBaseUrlPlaceholder] = (0, import_react8.useState)("");
2036
+ const [baseUrlOptionIndex, setBaseUrlOptionIndex] = (0, import_react8.useState)(0);
2037
+ const [baseUrlError, setBaseUrlError] = (0, import_react8.useState)(null);
2038
+ const [apiKey, setApiKey] = (0, import_react8.useState)("");
2039
+ const [apiKeyError, setApiKeyError] = (0, import_react8.useState)(null);
2040
+ const [modelIds, setModelIds] = (0, import_react8.useState)("");
2041
+ const [modelIdsError, setModelIdsError] = (0, import_react8.useState)(null);
2042
+ const [thinkingEnabled, setThinkingEnabled] = (0, import_react8.useState)(false);
2043
+ const [modalityEnabled, setModalityEnabled] = (0, import_react8.useState)(false);
2044
+ const [modalityImage, setModalityImage] = (0, import_react8.useState)(true);
2045
+ const [modalityVideo, setModalityVideo] = (0, import_react8.useState)(true);
2046
+ const [modalityAudio, setModalityAudio] = (0, import_react8.useState)(false);
2047
+ const [modalityPdf, setModalityPdf] = (0, import_react8.useState)(false);
2048
+ const [contextWindowSize, setContextWindowSize] = (0, import_react8.useState)("");
2049
+ const [focusedConfigIndex, setFocusedConfigIndex] = (0, import_react8.useState)(0);
1659
2050
  const currentStep = visibleSteps[stepIndex] ?? null;
1660
- const start = (0, import_react6.useCallback)(
2051
+ const start = (0, import_react8.useCallback)(
1661
2052
  (config, initialProtocol, existingEnv, existingModelIds) => {
1662
2053
  setProvider(config);
1663
2054
  const steps = getVisibleSteps(config);
@@ -1694,12 +2085,12 @@ function useProviderSetupFlow(onSubmit) {
1694
2085
  },
1695
2086
  []
1696
2087
  );
1697
- const reset = (0, import_react6.useCallback)(() => {
2088
+ const reset = (0, import_react8.useCallback)(() => {
1698
2089
  setProvider(null);
1699
2090
  setVisibleSteps([]);
1700
2091
  setStepIndex(0);
1701
2092
  }, []);
1702
- const goBack = (0, import_react6.useCallback)(() => {
2093
+ const goBack = (0, import_react8.useCallback)(() => {
1703
2094
  if (stepIndex > 0) {
1704
2095
  setStepIndex((i) => i - 1);
1705
2096
  return true;
@@ -1707,10 +2098,10 @@ function useProviderSetupFlow(onSubmit) {
1707
2098
  reset();
1708
2099
  return false;
1709
2100
  }, [stepIndex, reset]);
1710
- const goNext = (0, import_react6.useCallback)(() => {
2101
+ const goNext = (0, import_react8.useCallback)(() => {
1711
2102
  setStepIndex((i) => Math.min(i + 1, visibleSteps.length - 1));
1712
2103
  }, [visibleSteps]);
1713
- const selectProtocol = (0, import_react6.useCallback)(
2104
+ const selectProtocol = (0, import_react8.useCallback)(
1714
2105
  (selectedProtocol) => {
1715
2106
  setProtocol(selectedProtocol);
1716
2107
  setBaseUrl("");
@@ -1721,7 +2112,7 @@ function useProviderSetupFlow(onSubmit) {
1721
2112
  },
1722
2113
  [goNext]
1723
2114
  );
1724
- const selectBaseUrl = (0, import_react6.useCallback)(
2115
+ const selectBaseUrl = (0, import_react8.useCallback)(
1725
2116
  (selectedUrl) => {
1726
2117
  setBaseUrl(selectedUrl);
1727
2118
  setBaseUrlError(null);
@@ -1729,7 +2120,7 @@ function useProviderSetupFlow(onSubmit) {
1729
2120
  },
1730
2121
  [goNext]
1731
2122
  );
1732
- const submitBaseUrl = (0, import_react6.useCallback)(() => {
2123
+ const submitBaseUrl = (0, import_react8.useCallback)(() => {
1733
2124
  const effective = baseUrl.trim() || baseUrlPlaceholder.trim();
1734
2125
  if (!effective) {
1735
2126
  setBaseUrlError(t("Base URL cannot be empty."));
@@ -1746,15 +2137,15 @@ function useProviderSetupFlow(onSubmit) {
1746
2137
  goNext();
1747
2138
  return true;
1748
2139
  }, [baseUrl, baseUrlPlaceholder, goNext]);
1749
- const changeBaseUrl = (0, import_react6.useCallback)((value) => {
2140
+ const changeBaseUrl = (0, import_react8.useCallback)((value) => {
1750
2141
  setBaseUrl(value);
1751
2142
  setBaseUrlError(null);
1752
2143
  }, []);
1753
- const changeApiKey = (0, import_react6.useCallback)((value) => {
2144
+ const changeApiKey = (0, import_react8.useCallback)((value) => {
1754
2145
  setApiKey(value);
1755
2146
  setApiKeyError(null);
1756
2147
  }, []);
1757
- const buildCurrentInputs = (0, import_react6.useCallback)(
2148
+ const buildCurrentInputs = (0, import_react8.useCallback)(
1758
2149
  (overrides) => ({
1759
2150
  protocol: provider?.protocolOptions ? protocol : void 0,
1760
2151
  baseUrl: baseUrl.trim(),
@@ -1764,7 +2155,7 @@ function useProviderSetupFlow(onSubmit) {
1764
2155
  }),
1765
2156
  [provider, protocol, baseUrl, apiKey, modelIds]
1766
2157
  );
1767
- const submitOrNext = (0, import_react6.useCallback)(
2158
+ const submitOrNext = (0, import_react8.useCallback)(
1768
2159
  (overrides) => {
1769
2160
  if (stepIndex >= visibleSteps.length - 1) {
1770
2161
  if (provider) void onSubmit(provider, buildCurrentInputs(overrides));
@@ -1774,7 +2165,7 @@ function useProviderSetupFlow(onSubmit) {
1774
2165
  },
1775
2166
  [stepIndex, visibleSteps, provider, onSubmit, buildCurrentInputs, goNext]
1776
2167
  );
1777
- const submitApiKey = (0, import_react6.useCallback)(
2168
+ const submitApiKey = (0, import_react8.useCallback)(
1778
2169
  (keyOverride) => {
1779
2170
  const trimmed = (keyOverride ?? apiKey).trim();
1780
2171
  if (!trimmed) {
@@ -1795,7 +2186,7 @@ function useProviderSetupFlow(onSubmit) {
1795
2186
  },
1796
2187
  [apiKey, provider, baseUrl, submitOrNext]
1797
2188
  );
1798
- const highlightBaseUrl = (0, import_react6.useCallback)(
2189
+ const highlightBaseUrl = (0, import_react8.useCallback)(
1799
2190
  (url) => {
1800
2191
  if (provider && Array.isArray(provider.baseUrl)) {
1801
2192
  const idx = provider.baseUrl.findIndex((o) => o.url === url);
@@ -1804,14 +2195,14 @@ function useProviderSetupFlow(onSubmit) {
1804
2195
  },
1805
2196
  [provider]
1806
2197
  );
1807
- const changeModelIds = (0, import_react6.useCallback)((value) => {
2198
+ const changeModelIds = (0, import_react8.useCallback)((value) => {
1808
2199
  setModelIds(value);
1809
2200
  setModelIdsError(null);
1810
2201
  }, []);
1811
- const clearModelIdsError = (0, import_react6.useCallback)(() => {
2202
+ const clearModelIdsError = (0, import_react8.useCallback)(() => {
1812
2203
  setModelIdsError(null);
1813
2204
  }, []);
1814
- const submitModelIds = (0, import_react6.useCallback)(
2205
+ const submitModelIds = (0, import_react8.useCallback)(
1815
2206
  (overrides) => {
1816
2207
  const normalized = overrides?.modelIds ?? normalizeModelIds(modelIds);
1817
2208
  if (normalized.length === 0) {
@@ -1826,13 +2217,13 @@ function useProviderSetupFlow(onSubmit) {
1826
2217
  [modelIds, submitOrNext]
1827
2218
  );
1828
2219
  const advancedOptionCount = modalityEnabled ? 7 : 3;
1829
- const moveAdvancedFocusUp = (0, import_react6.useCallback)(() => {
2220
+ const moveAdvancedFocusUp = (0, import_react8.useCallback)(() => {
1830
2221
  setFocusedConfigIndex((v) => v <= 0 ? advancedOptionCount - 1 : v - 1);
1831
2222
  }, [advancedOptionCount]);
1832
- const moveAdvancedFocusDown = (0, import_react6.useCallback)(() => {
2223
+ const moveAdvancedFocusDown = (0, import_react8.useCallback)(() => {
1833
2224
  setFocusedConfigIndex((v) => v >= advancedOptionCount - 1 ? 0 : v + 1);
1834
2225
  }, [advancedOptionCount]);
1835
- const toggleFocusedAdvancedOption = (0, import_react6.useCallback)(() => {
2226
+ const toggleFocusedAdvancedOption = (0, import_react8.useCallback)(() => {
1836
2227
  switch (focusedConfigIndex) {
1837
2228
  case 0:
1838
2229
  setThinkingEnabled((v) => !v);
@@ -1856,13 +2247,13 @@ function useProviderSetupFlow(onSubmit) {
1856
2247
  break;
1857
2248
  }
1858
2249
  }, [focusedConfigIndex]);
1859
- const submitAdvancedConfig = (0, import_react6.useCallback)(() => {
2250
+ const submitAdvancedConfig = (0, import_react8.useCallback)(() => {
1860
2251
  goNext();
1861
2252
  }, [goNext]);
1862
- const changeContextWindowSize = (0, import_react6.useCallback)((value) => {
2253
+ const changeContextWindowSize = (0, import_react8.useCallback)((value) => {
1863
2254
  setContextWindowSize(value.replace(/[^0-9]/g, ""));
1864
2255
  }, []);
1865
- const submit = (0, import_react6.useCallback)(() => {
2256
+ const submit = (0, import_react8.useCallback)(() => {
1866
2257
  if (!provider) return;
1867
2258
  const multimodal = modalityEnabled ? {
1868
2259
  image: modalityImage || void 0,
@@ -1890,13 +2281,19 @@ function useProviderSetupFlow(onSubmit) {
1890
2281
  onSubmit,
1891
2282
  buildCurrentInputs
1892
2283
  ]);
1893
- const getPreviewJson = (0, import_react6.useCallback)(() => {
2284
+ const getPreviewJson = (0, import_react8.useCallback)(() => {
1894
2285
  if (!provider) return "";
1895
2286
  const envKey = typeof provider.envKey === "function" ? provider.envKey(protocol, baseUrl.trim()) : provider.envKey;
1896
2287
  const normalizedIds = normalizeModelIds(modelIds);
1897
2288
  const masked = maskApiKey(apiKey);
1898
2289
  const genConfig = {};
1899
- if (thinkingEnabled) genConfig["extra_body"] = { enable_thinking: true };
2290
+ if (thinkingEnabled) {
2291
+ if (protocol === "openai-responses" /* USE_OPENAI_RESPONSES */) {
2292
+ genConfig["reasoning"] = { effort: "medium" };
2293
+ } else {
2294
+ genConfig["extra_body"] = { enable_thinking: true };
2295
+ }
2296
+ }
1900
2297
  if (modalityEnabled) {
1901
2298
  const mod = {};
1902
2299
  if (modalityImage) mod["image"] = true;
@@ -2075,6 +2472,11 @@ export {
2075
2472
  EDITOR_DISPLAY_NAMES,
2076
2473
  editorSettingsManager,
2077
2474
  useFollowupSuggestionsCLI,
2475
+ shortAsciiLogo,
2476
+ resolveCustomBanner,
2477
+ pickAsciiArtTier,
2478
+ usePhraseCycler,
2479
+ useGitBranchName,
2078
2480
  DualOutputBridge,
2079
2481
  RemoteInputWatcher
2080
2482
  };
@@ -2102,6 +2504,11 @@ export {
2102
2504
  *
2103
2505
  * Thin React wrapper around the framework-agnostic controller from core.
2104
2506
  */
2507
+ /**
2508
+ * @license
2509
+ * Copyright 2025 Qwen Code
2510
+ * SPDX-License-Identifier: Apache-2.0
2511
+ */
2105
2512
  /**
2106
2513
  * @license
2107
2514
  * Copyright 2026 Qwen Team