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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  2. package/bundled/qc-helper/docs/configuration/model-providers.md +19 -15
  3. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
  4. package/bundled/qc-helper/docs/features/channels/github.md +1 -9
  5. package/bundled/qc-helper/docs/features/channels/overview.md +26 -51
  6. package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
  7. package/bundled/qc-helper/docs/features/commands.md +48 -9
  8. package/bundled/qc-helper/docs/features/goals.md +2 -0
  9. package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
  10. package/bundled/qc-helper/docs/qwen-serve.md +62 -48
  11. package/chunks/{MaxSizedBox-ZZJT3PJF.js → MaxSizedBox-4C3BKKKY.js} +17 -16
  12. package/chunks/{StandaloneSessionPicker-DIOSZTMX.js → StandaloneSessionPicker-TXVF65YW.js} +32 -31
  13. package/chunks/{acpAgent-62JUP5A7.js → acpAgent-H5XBKGB4.js} +301 -166
  14. package/chunks/{agent-NLPEQQDZ.js → agent-T5LEFJIU.js} +10 -10
  15. package/chunks/{agent-headless-Y2GR5F2Q.js → agent-headless-VZKSRH36.js} +10 -10
  16. package/chunks/{anthropicContentGenerator-I7LQZH26.js → anthropicContentGenerator-PRJWWVYJ.js} +2 -2
  17. package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-G5LHNECG.js} +1 -1
  18. package/chunks/{bridge-Q66BD62H.js → bridge-AOX5IY44.js} +18 -17
  19. package/chunks/{channel-management-service-TRTLQTSV.js → channel-management-service-MWQGHPAS.js} +4 -4
  20. package/chunks/{channel-settings-store-R5STFWUW.js → channel-settings-store-XZCGDGHW.js} +26 -25
  21. package/chunks/{channel-worker-group-PIYPVCTF.js → channel-worker-group-SQ5FRWOH.js} +5 -5
  22. package/chunks/{channel-worker-manager-FQHEDTD2.js → channel-worker-manager-TU4ZNWOE.js} +5 -5
  23. package/chunks/{channel-worker-supervisor-XJPZZ3VK.js → channel-worker-supervisor-EMITFMCP.js} +4 -4
  24. package/chunks/{chunk-3SH53ANB.js → chunk-22GORRNY.js} +12 -0
  25. package/chunks/{chunk-7L35FKPF.js → chunk-2BMXHB6N.js} +2 -2
  26. package/chunks/chunk-2WC3Y7YY.js +1033 -0
  27. package/chunks/{chunk-WZ4YULVF.js → chunk-3OAXF3UK.js} +210 -80
  28. package/chunks/{chunk-W673V2H3.js → chunk-46MMBZHI.js} +3 -3
  29. package/chunks/{chunk-6GRDHIVI.js → chunk-4I3WFI3U.js} +4 -4
  30. package/chunks/{chunk-QXXBW2G4.js → chunk-4JNHNVAZ.js} +3 -3
  31. package/chunks/{chunk-R2266LQ5.js → chunk-4WMGYG3F.js} +2 -2
  32. package/chunks/{chunk-Y6ZWXM44.js → chunk-5BH2AIEY.js} +1 -1
  33. package/chunks/{chunk-EA4NFWVG.js → chunk-5OZUKLL7.js} +3 -3
  34. package/chunks/{chunk-RX3FYFCN.js → chunk-67XTVRVB.js} +1 -1
  35. package/chunks/{chunk-MA5OUNN6.js → chunk-6G4V7SE4.js} +1 -1
  36. package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
  37. package/chunks/{chunk-7GZCCHJL.js → chunk-7LTCFO6T.js} +3 -3
  38. package/chunks/{chunk-33MLFMCL.js → chunk-7NDZKE2M.js} +2 -2
  39. package/chunks/{chunk-5WC2ECUK.js → chunk-7PD7ZMX5.js} +17 -4
  40. package/chunks/{chunk-ZUNWKOAP.js → chunk-7SVM3RP2.js} +4 -24
  41. package/chunks/{chunk-5GD7LYOH.js → chunk-A7EFXK7P.js} +1 -1
  42. package/chunks/{chunk-RDV4NLI3.js → chunk-AO2VMS72.js} +2 -2
  43. package/chunks/{chunk-XAXTQURR.js → chunk-APXIW2TF.js} +3 -3
  44. package/chunks/{chunk-3BTHHXXE.js → chunk-AUTUFD5X.js} +1 -1
  45. package/chunks/{chunk-VH764G6B.js → chunk-B25JYXZE.js} +2 -2
  46. package/chunks/{chunk-MMMA36MN.js → chunk-BK7D2JR6.js} +3 -3
  47. package/chunks/{chunk-RPFJJ33Z.js → chunk-CALTQWTZ.js} +1 -1
  48. package/chunks/{chunk-EUXF6URV.js → chunk-CCBTNJB4.js} +16 -18
  49. package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
  50. package/chunks/{chunk-L6ZME3W7.js → chunk-CMWU6P4D.js} +1 -1
  51. package/chunks/{chunk-QJAFSFYA.js → chunk-CWVZBIZJ.js} +1 -1
  52. package/chunks/{chunk-JDPBJIKI.js → chunk-DAI65CMX.js} +1 -1
  53. package/chunks/{chunk-GM44O6F7.js → chunk-DARWOZY6.js} +1 -1
  54. package/chunks/{chunk-J4ECGDA3.js → chunk-ELD3OBPU.js} +3 -3
  55. package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
  56. package/chunks/{chunk-OIPUQE3S.js → chunk-F2NYVASI.js} +14 -1
  57. package/chunks/{chunk-ODBNTMZW.js → chunk-FAJPLSYF.js} +36 -29
  58. package/chunks/{chunk-GXIHBIHC.js → chunk-FGHPZGOP.js} +29 -24
  59. package/chunks/{chunk-TK4XHPKW.js → chunk-G37O7YO6.js} +2 -2
  60. package/chunks/{chunk-4JKLPTV6.js → chunk-G3ZUMSFS.js} +12 -5
  61. package/chunks/{chunk-743XE7N7.js → chunk-G5VOXCRX.js} +1 -1
  62. package/chunks/{chunk-BL6B2QS2.js → chunk-GOEVQADN.js} +618 -1122
  63. package/chunks/{chunk-XI7RST4D.js → chunk-GOKAOSCN.js} +1 -1
  64. package/chunks/{chunk-FDOGGKAA.js → chunk-GSFV5RQW.js} +2 -0
  65. package/chunks/{chunk-43CI6YWJ.js → chunk-HJ5UJQQL.js} +1384 -1245
  66. package/chunks/{chunk-LUVXLLMS.js → chunk-IR6JKBAP.js} +1 -1
  67. package/chunks/{chunk-CPJRFFPH.js → chunk-IRGDIDGJ.js} +558 -158
  68. package/chunks/{chunk-DCPRCDSR.js → chunk-IWABUX6T.js} +1 -1
  69. package/chunks/{chunk-DTB5BXRG.js → chunk-JO77FGNZ.js} +16 -15
  70. package/chunks/{chunk-45ROPFQY.js → chunk-JYGIJA4W.js} +1 -1
  71. package/chunks/{chunk-M6YLOETP.js → chunk-KCF2436G.js} +1 -1
  72. package/chunks/{chunk-CABDNUJ4.js → chunk-KEPC5BOL.js} +5 -5
  73. package/chunks/{chunk-RN6V5HKE.js → chunk-KFECPHLV.js} +3 -3
  74. package/chunks/{chunk-WIRYFL2L.js → chunk-LEAOJ43M.js} +17 -15
  75. package/chunks/{chunk-IUJLW6ZI.js → chunk-LUNC5KCL.js} +3 -3
  76. package/chunks/{chunk-WZS3X663.js → chunk-LWX4WDFF.js} +2 -5
  77. package/chunks/{chunk-ISPBBKJN.js → chunk-MV5DTLJV.js} +7 -2
  78. package/chunks/chunk-NFXXBWSE.js +463 -0
  79. package/chunks/{chunk-PQSCGZT2.js → chunk-NPKCVSXX.js} +26 -2
  80. package/chunks/{chunk-7RXOEUFF.js → chunk-NX7ZTXFF.js} +1 -1
  81. package/chunks/{chunk-G5QLLD53.js → chunk-OXR34GCD.js} +14 -2
  82. package/chunks/{chunk-VHPG7BH6.js → chunk-PDN7FJZV.js} +1 -1
  83. package/chunks/{chunk-UHUT4IDM.js → chunk-PFKGV6PO.js} +9 -9
  84. package/chunks/{chunk-NFIDVZND.js → chunk-QB3KS3N3.js} +2 -21
  85. package/chunks/{chunk-QLM7D7W3.js → chunk-QFJZAY7W.js} +7 -7
  86. package/chunks/{chunk-NVS4Z6GT.js → chunk-QHLHE2OT.js} +1 -1
  87. package/chunks/{chunk-B44JBZBB.js → chunk-QQK4L3UU.js} +1 -1
  88. package/chunks/{chunk-63ACHB2H.js → chunk-QTB4VP4K.js} +50 -18
  89. package/chunks/{chunk-4BLTSTF6.js → chunk-R3JIDRUL.js} +4 -4
  90. package/chunks/{chunk-VEQBVJYH.js → chunk-R457KFV7.js} +3 -3
  91. package/chunks/{chunk-CG2PDIGD.js → chunk-RM244SCQ.js} +1 -1
  92. package/chunks/{chunk-W7PXLIZJ.js → chunk-RNAJVXUG.js} +5 -5
  93. package/chunks/{chunk-VF6D6EGV.js → chunk-S5QR6CB5.js} +52 -6
  94. package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
  95. package/chunks/{chunk-5HBA2Z7V.js → chunk-TGNNLRC3.js} +2 -3
  96. package/chunks/{chunk-ORREXWOM.js → chunk-TODNHE76.js} +3 -3
  97. package/chunks/{chunk-W3ONSAYO.js → chunk-TOOOLHVS.js} +2 -2
  98. package/chunks/{chunk-EHTKOO6W.js → chunk-TRQNRP2H.js} +2 -2
  99. package/chunks/{chunk-PQWM4SX2.js → chunk-U6REWGVR.js} +2 -2
  100. package/chunks/{chunk-UXDVUFKU.js → chunk-ULZECEIP.js} +2 -2
  101. package/chunks/{chunk-6YEOCHSE.js → chunk-VBLAI2HA.js} +101 -0
  102. package/chunks/{chunk-M73KHGNR.js → chunk-VJJXG73H.js} +404 -226
  103. package/chunks/{chunk-Q2F43WTJ.js → chunk-WBU2PIZ5.js} +23 -6
  104. package/chunks/{chunk-UULHYZ4W.js → chunk-WDN64MVT.js} +74 -15
  105. package/chunks/{chunk-XVTCSVBK.js → chunk-WDVV3LRM.js} +193 -169
  106. package/chunks/{chunk-LBKYQ33T.js → chunk-WK7P62DV.js} +16 -10
  107. package/chunks/{chunk-ULY4ISY2.js → chunk-WXD7INFV.js} +19 -4
  108. package/chunks/{chunk-ZIPYCXQP.js → chunk-WXPPUPHM.js} +1 -1
  109. package/chunks/{chunk-5Z4FCEPY.js → chunk-X7LFJF5D.js} +600 -46
  110. package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
  111. package/chunks/{chunk-MWEF5MUK.js → chunk-XSOXPG2L.js} +8 -8
  112. package/chunks/{chunk-5VZFJTL2.js → chunk-YLOHCA6I.js} +2 -2
  113. package/chunks/{chunk-LN3WBOKU.js → chunk-YQGW3M6Z.js} +2 -2
  114. package/chunks/{chunk-2OR32P5M.js → chunk-ZN5TKAVR.js} +125 -10
  115. package/chunks/{chunk-XBLG564H.js → chunk-ZP5XDLSA.js} +10 -10
  116. package/chunks/{config-utils-37FHWPTP.js → config-utils-GPLIABL2.js} +21 -20
  117. package/chunks/{contextCommand-R4JUBV5N.js → contextCommand-NCUQUDBY.js} +18 -17
  118. package/chunks/{core-runtime-6U4OXU5C.js → core-runtime-WKYKWVYU.js} +23 -21
  119. package/chunks/{create-sub-session-LLUYAGZN.js → create-sub-session-PPLXB3JJ.js} +17 -16
  120. package/chunks/{daemon-UI6SQSBV.js → daemon-2CKIAO3I.js} +2 -2
  121. package/chunks/{daemon-git-worktree-guard-O2UTNFJC.js → daemon-git-worktree-guard-73ZWOLKL.js} +17 -16
  122. package/chunks/{daemon-status-provider-7GMAKSTX.js → daemon-status-provider-OK7VONJG.js} +22 -21
  123. package/chunks/{daemon-trust-policy-VNP76VMO.js → daemon-trust-policy-CAUCREG2.js} +22 -21
  124. package/chunks/{daemon-trust-policy-monitor-TD5O3BZA.js → daemon-trust-policy-monitor-3Y36OOEQ.js} +22 -21
  125. package/chunks/{deferred-core-runtime-NJM63YJS.js → deferred-core-runtime-Q7WFWYD3.js} +17 -16
  126. package/chunks/{dist-STAGIFNB.js → dist-6YDUH3BB.js} +388 -102
  127. package/chunks/{dist-XJ25G6OH.js → dist-BNQVF565.js} +2 -8
  128. package/chunks/{dist-NQ2636VT.js → dist-F34J4FZX.js} +1 -1
  129. package/chunks/{dist-OR2ZQTXZ.js → dist-F6JLAJLE.js} +1 -1
  130. package/chunks/{dist-WZTUKIDR.js → dist-NP7QKLVG.js} +2 -2
  131. package/chunks/{dist-M4CBX53H.js → dist-UFTFGI6I.js} +1 -1
  132. package/chunks/{dist-5I4HLUTO.js → dist-XLV33CLY.js} +1 -2
  133. package/chunks/{dist-24TCWK5H.js → dist-Y5KC3IHW.js} +1 -2
  134. package/chunks/{dist-FDISN4AK.js → dist-ZDNJK74R.js} +3 -7
  135. package/chunks/{edit-GL7OA6RV.js → edit-YJD6IETK.js} +10 -10
  136. package/chunks/{enterPlanMode-VC4BCSZE.js → enterPlanMode-EFPVTWIH.js} +10 -10
  137. package/chunks/{environment-BI6IBAZJ.js → environment-HP3AXFTB.js} +19 -18
  138. package/chunks/{errors-D6G2ZM2R.js → errors-22ON46G7.js} +19 -18
  139. package/chunks/{exitPlanMode-DX446CA6.js → exitPlanMode-MOQUNCBH.js} +10 -10
  140. package/chunks/{fast-path-MAYDLJIP.js → fast-path-2X7BPMXX.js} +3 -3
  141. package/chunks/{glob-TVKRFY36.js → glob-Y7ACIB3P.js} +10 -10
  142. package/chunks/{goal-tools-CA6YANRN.js → goal-tools-DABMICUC.js} +10 -10
  143. package/chunks/{handleAutoUpdate-AW4ZAHON.js → handleAutoUpdate-MCAMHYDI.js} +19 -18
  144. package/chunks/{i18n-IH5CRAY7.js → i18n-C3GDCALP.js} +17 -16
  145. package/chunks/{initializer-UBR37ZNM.js → initializer-4URDQL2G.js} +22 -21
  146. package/chunks/{installationInfo-Y52756EC.js → installationInfo-LBOL6SBV.js} +17 -16
  147. package/chunks/{list-7V5JDZPO.js → list-JOGBAC2R.js} +25 -24
  148. package/chunks/{list-agents-I5TRH3J7.js → list-agents-2CXPGJUE.js} +3 -3
  149. package/chunks/{llm-QDB6JVF5.js → llm-2KPNSAVY.js} +65 -59
  150. package/chunks/{llm-content-generator-EO6MZCEO.js → llm-content-generator-GR3FOHLB.js} +2 -2
  151. package/chunks/{loadedSettingsAdapter-I3YQKMC4.js → loadedSettingsAdapter-DVKROEJD.js} +22 -21
  152. package/chunks/{loggingContentGenerator-MNXYUGDG.js → loggingContentGenerator-P4K6K5W4.js} +12 -12
  153. package/chunks/{managed-npm-update-EA3EXPTO.js → managed-npm-update-VWBKHNIN.js} +17 -16
  154. package/chunks/{mcp-QTAJ544Y.js → mcp-6YYNSYLK.js} +22 -21
  155. package/chunks/{monitor-6FQKQOTP.js → monitor-A255TNZR.js} +10 -10
  156. package/chunks/{nonInteractiveCli-MRCTZL5X.js → nonInteractiveCli-LXGIKQAT.js} +55 -54
  157. package/chunks/{notebook-edit-BQQCKI7K.js → notebook-edit-5UYHS2DM.js} +10 -10
  158. package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
  159. package/chunks/{openaiContentGenerator-TTSKXNVH.js → openaiContentGenerator-A6MAMEO5.js} +7 -7
  160. package/chunks/{pidfile-KPIS6RIT.js → pidfile-B7DZC4TP.js} +20 -17
  161. package/chunks/{processUtils-ZCASPKK4.js → processUtils-BPZ2MCZS.js} +2 -2
  162. package/chunks/{prompt-terminal-ledger-D6HM6TV7.js → prompt-terminal-ledger-FYYTAOXS.js} +18 -17
  163. package/chunks/{qwenContentGenerator-GGZEFLBD.js → qwenContentGenerator-4IOJFD4S.js} +13 -13
  164. package/chunks/{read-file-VE5GDFLP.js → read-file-A4H4O3VQ.js} +2 -2
  165. package/chunks/{resumeHistoryUtils-HSSGMYDC.js → resumeHistoryUtils-YQQ43E4N.js} +19 -18
  166. package/chunks/{ripGrep-SEJE7AA6.js → ripGrep-W32NWFTA.js} +3 -3
  167. package/chunks/{run-qwen-serve-OJYVH7N6.js → run-qwen-serve-WBSWWIRV.js} +216 -64
  168. package/chunks/{runtime-KGMQQFJD.js → runtime-VRVBX2E5.js} +29 -26
  169. package/chunks/{scheduled-tasks-7H5HWHYD.js → scheduled-tasks-D65KJDA3.js} +20 -19
  170. package/chunks/{scheduler-BE42AKDG.js → scheduler-M2YPN7Z7.js} +19 -18
  171. package/chunks/{send-message-AWKUDJBH.js → send-message-76BKWKFZ.js} +3 -3
  172. package/chunks/{serve-KZVKYMSL.js → serve-BE3H2P6P.js} +22 -21
  173. package/chunks/{server-PJRALPJQ.js → server-FLY5JERG.js} +84 -148
  174. package/chunks/{session-IHITXU2S.js → session-JVN62R5K.js} +85 -57
  175. package/chunks/{session-attachments-root-GQ2TUI3Y.js → session-attachments-root-7ACGLHXA.js} +17 -16
  176. package/chunks/{session-pr-refresh-H43LULTE.js → session-pr-refresh-TQS57SDK.js} +19 -18
  177. package/chunks/{settings-RKEQQDFC.js → settings-D44YMZFT.js} +21 -20
  178. package/chunks/{shell-6PJ444U5.js → shell-3VE6I4V5.js} +10 -10
  179. package/chunks/{skill-Q3UP7B5V.js → skill-FHEGRRZU.js} +2 -2
  180. package/chunks/{skill-settings-LZR5YRRW.js → skill-settings-VHEJMBFL.js} +21 -20
  181. package/chunks/{spawnChannel-WM3DT2BF.js → spawnChannel-T6MX2ZDN.js} +17 -16
  182. package/chunks/{standalone-update-E5474IBI.js → standalone-update-QUGHFMCS.js} +18 -17
  183. package/chunks/{start-opentui-ui-WLWZNQ2I.js → start-opentui-ui-IHIIZ2LE.js} +438 -203
  184. package/chunks/{startInteractiveUI-FBQSGWGO.js → startInteractiveUI-LR7K2ARZ.js} +1171 -1234
  185. package/chunks/{task-create-PMAFST2T.js → task-create-MWXJFRRM.js} +3 -3
  186. package/chunks/{task-list-R2HSY2NC.js → task-list-EYO3FE57.js} +2 -2
  187. package/chunks/{task-update-JYC57USF.js → task-update-2JJJRHMT.js} +3 -3
  188. package/chunks/{team-create-VIGUFUT4.js → team-create-GY3VFY47.js} +10 -10
  189. package/chunks/{team-delete-CBHVBTPB.js → team-delete-IQZ6XGFI.js} +2 -2
  190. package/chunks/{team-plan-approval-HQVZA3MD.js → team-plan-approval-BQPGZOT5.js} +10 -10
  191. package/chunks/{terminal-image-renderer-LUKNCOVM.js → terminal-image-renderer-YNYW5CQG.js} +17 -16
  192. package/chunks/{theme-manager-LOENKYLY.js → theme-manager-U6CIK3GM.js} +17 -16
  193. package/chunks/{tool-search-ZIFAQCE2.js → tool-search-XI3QWD5I.js} +2 -2
  194. package/chunks/{total-session-admission-FUUJH3QH.js → total-session-admission-3SNSJJ32.js} +18 -17
  195. package/chunks/{trustedFolders-C76KYROP.js → trustedFolders-OVAQKNV5.js} +18 -17
  196. package/chunks/{update-relaunch-4G2SRXKX.js → update-relaunch-XV5O74E3.js} +5 -5
  197. package/chunks/{updateCheck-EIZIO7HI.js → updateCheck-CHUYWD6L.js} +17 -16
  198. package/chunks/{useAutoAcceptIndicator-EAA6KSY4.js → useAutoAcceptIndicator-VKSVIXZC.js} +23 -22
  199. package/chunks/{validateNonInterActiveAuth-BRX22QCN.js → validateNonInterActiveAuth-ZNUTD3E5.js} +53 -52
  200. package/chunks/{version-E56RU7PR.js → version-EK7VAGSI.js} +3 -1
  201. package/chunks/{web-fetch-AAUCD7RM.js → web-fetch-24KZO763.js} +2 -2
  202. package/chunks/{web-search-HFUQF44Q.js → web-search-CRNXKZ2X.js} +184 -7
  203. package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-BFDESDD4.js} +5 -4
  204. package/chunks/{workflow-3MABM53N.js → workflow-HD5NYMW5.js} +201 -65
  205. package/chunks/{workspace-providers-status-2FRLBZ5I.js → workspace-providers-status-MAM42IZS.js} +24 -23
  206. package/chunks/{workspace-registration-store-YL7HLYYI.js → workspace-registration-store-HKLJEDQX.js} +1 -2
  207. package/chunks/{workspace-registry-BNRP2ELW.js → workspace-registry-7RDDOBLN.js} +18 -17
  208. package/chunks/{workspace-runtime-coordinator-WKGF7VHS.js → workspace-runtime-coordinator-LEPDPXJO.js} +18 -17
  209. package/chunks/{workspace-service-4MYO72MM.js → workspace-service-5IFDCNN3.js} +23 -22
  210. package/chunks/{workspace-skills-status-SU66TJLZ.js → workspace-skills-status-FJ3HNH4H.js} +22 -21
  211. package/chunks/{workspace-trust-reconciler-D5QT7WQB.js → workspace-trust-reconciler-PQFHIWLR.js} +23 -22
  212. package/chunks/{write-file-NVPQE2AZ.js → write-file-ERG67ZFX.js} +11 -11
  213. package/chunks/{zoom-image-RJHC66WG.js → zoom-image-WQYEC3SR.js} +2 -2
  214. package/cli.js +12 -12
  215. package/export-transcript-document.js +82 -82
  216. package/package.json +4 -4
  217. package/web-shell/assets/{abnfDiagram-VCTEODGH-DHc6plZn.js → abnfDiagram-VCTEODGH-BRLgQbnT.js} +1 -1
  218. package/web-shell/assets/{arc-BQ9m8TDV.js → arc-qAF9_XsR.js} +1 -1
  219. package/web-shell/assets/{architectureDiagram-5GKGNRK7-D5ap3oVB.js → architectureDiagram-5GKGNRK7-BorUttEz.js} +1 -1
  220. package/web-shell/assets/{blockDiagram-NRAW4CY4-BIbnyNph.js → blockDiagram-NRAW4CY4-Bj0qZVxu.js} +1 -1
  221. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BRsdx_iG.js → c4Diagram-UCG6FXSJ-BTqJis32.js} +1 -1
  222. package/web-shell/assets/channel-COIuCrVH.js +1 -0
  223. package/web-shell/assets/{chunk-2Q5K7J3B-3lf1fNlx.js → chunk-2Q5K7J3B-RrQ5X8m-.js} +1 -1
  224. package/web-shell/assets/{chunk-5VM5RSS4-DP8VNRc4.js → chunk-5VM5RSS4-uUjDl8wO.js} +1 -1
  225. package/web-shell/assets/{chunk-F27PBJKO-DrohDmZ6.js → chunk-F27PBJKO-C3JhpyzI.js} +1 -1
  226. package/web-shell/assets/{chunk-G27WJ6UU-UZ2QhSx6.js → chunk-G27WJ6UU-C8ZNFs7F.js} +1 -1
  227. package/web-shell/assets/{chunk-JWPE2WC7-BIMHVcZK.js → chunk-JWPE2WC7-DNpXtEOs.js} +1 -1
  228. package/web-shell/assets/{chunk-LCL6LL3I-izRxdSDd.js → chunk-LCL6LL3I-DagA2ZLw.js} +1 -1
  229. package/web-shell/assets/{chunk-POPQ4Y6H-CXADD4PP.js → chunk-POPQ4Y6H-R23uH7Xm.js} +1 -1
  230. package/web-shell/assets/{chunk-SVP7TREG-B96d8Y_1.js → chunk-SVP7TREG-Qz9RN_BR.js} +1 -1
  231. package/web-shell/assets/{chunk-XXDRQBXY-CF2sVQpv.js → chunk-XXDRQBXY-jYb1_hni.js} +1 -1
  232. package/web-shell/assets/classDiagram-DTDB5LWJ-DoX6OYqu.js +1 -0
  233. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DoX6OYqu.js +1 -0
  234. package/web-shell/assets/{cose-bilkent-JH36ORCC-CT6tXVAS.js → cose-bilkent-JH36ORCC-Cv2OunpE.js} +1 -1
  235. package/web-shell/assets/{cynefin-OW5HDTMX-X1NS4vtV.js → cynefin-OW5HDTMX-LH42KFJx.js} +1 -1
  236. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DNsKNOT4.js → cynefinDiagram-5FMLGOSQ-Dha4_OoR.js} +1 -1
  237. package/web-shell/assets/{dagre-3AP2YEHR-9-AHKqsb.js → dagre-3AP2YEHR-Br5lnUKD.js} +1 -1
  238. package/web-shell/assets/{diagram-S7CK7UJ4-Bjgms7j6.js → diagram-S7CK7UJ4-dpKq2bBX.js} +1 -1
  239. package/web-shell/assets/{diagram-UQ7AKVKN-h6bCprbE.js → diagram-UQ7AKVKN-BAgHWpXr.js} +1 -1
  240. package/web-shell/assets/{diagram-VSXAHHWV-4SbQXVLt.js → diagram-VSXAHHWV-GRRzpyE2.js} +1 -1
  241. package/web-shell/assets/{diagram-VX7I27RA-B5gPCzzB.js → diagram-VX7I27RA-BNFiaYpG.js} +1 -1
  242. package/web-shell/assets/{diagram-Z3DM3KII-DFJXIA3A.js → diagram-Z3DM3KII-BisZzB_h.js} +1 -1
  243. package/web-shell/assets/{ebnfDiagram-PWID7BFC-FwyaU7VY.js → ebnfDiagram-PWID7BFC-B1xbwycf.js} +1 -1
  244. package/web-shell/assets/{erDiagram-SSCWMZ5O-8vJQh2te.js → erDiagram-SSCWMZ5O-CQMzbGE5.js} +1 -1
  245. package/web-shell/assets/{flowDiagram-A5DVABFB-BzA_1gMN.js → flowDiagram-A5DVABFB-CZ_Zondl.js} +1 -1
  246. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-Co-ABbVX.js → ganttDiagram-EL5Y4UJY-BTh2ShxS.js} +1 -1
  247. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DW_FcyrX.js → gitGraphDiagram-WWUBYQGX-oHOB-Uxt.js} +1 -1
  248. package/web-shell/assets/{index-Bu-rZoJ-.js → index-CI1ysIEv.js} +478 -474
  249. package/web-shell/assets/index-CpxXGH-8.css +36 -0
  250. package/web-shell/assets/{index-BbMXfhNG.js → index-DWoFMu5x.js} +1 -1
  251. package/web-shell/assets/{infoDiagram-RXCK75RN-BEgfhUFN.js → infoDiagram-RXCK75RN-C0QpudbG.js} +1 -1
  252. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DCsMxQmc.js → ishikawaDiagram-5VMMS53U-a6B741uT.js} +1 -1
  253. package/web-shell/assets/{journeyDiagram-EYS64GPL-DyIEYoHz.js → journeyDiagram-EYS64GPL-Dbht9ICp.js} +1 -1
  254. package/web-shell/assets/{kanban-definition-3QL26DDD-CkxjqCNr.js → kanban-definition-3QL26DDD-D4OFR8-h.js} +1 -1
  255. package/web-shell/assets/{layout-BEWc0Al9.js → layout-Dvdh5jRH.js} +1 -1
  256. package/web-shell/assets/{linear-CNuNxirL.js → linear-Dvc6KIW2.js} +1 -1
  257. package/web-shell/assets/{mermaid.core-DZBre674.js → mermaid.core-CB36RfIb.js} +6 -6
  258. package/web-shell/assets/{mindmap-definition-FBJOCRG2-CpafFz_F.js → mindmap-definition-FBJOCRG2-Fmqo1CjP.js} +1 -1
  259. package/web-shell/assets/{pegDiagram-XKGWAZYB-DfZqk_dq.js → pegDiagram-XKGWAZYB-CCxYBoA4.js} +1 -1
  260. package/web-shell/assets/{pieDiagram-E7YTZNPT-S0UWXlgC.js → pieDiagram-E7YTZNPT-BVHKQFzt.js} +1 -1
  261. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-dd37_Ohj.js → quadrantDiagram-AXDQQJYC-l95IznwR.js} +1 -1
  262. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CH8NJZ7u.js → railroadDiagram-O6MQD6OU-BlLdRdXp.js} +1 -1
  263. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CFdqWYih.js → requirementDiagram-EFPCY7ZU-BkDLBR5w.js} +1 -1
  264. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CsddcEGD.js → sankeyDiagram-P5KCCOFB-jAIqRp65.js} +1 -1
  265. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BZ270mGw.js → sequenceDiagram-WJ2MYXX4-f-soZYPr.js} +1 -1
  266. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CGaS4DBV.js → sizeCapture-X5ZJPWSS-BzOuAfB2.js} +1 -1
  267. package/web-shell/assets/{stateDiagram-HBIQ2CUA-COpIzMu6.js → stateDiagram-HBIQ2CUA-BPLSs12r.js} +1 -1
  268. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-IRul-LaT.js +1 -0
  269. package/web-shell/assets/{swimlanes-XN3QIQJK-CMF889m3.js → swimlanes-XN3QIQJK-D-9E_RIR.js} +1 -1
  270. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-D6lgKepA.js +8 -0
  271. package/web-shell/assets/{timeline-definition-24CTP7MA-BelnxYz5.js → timeline-definition-24CTP7MA-CT56K-gV.js} +1 -1
  272. package/web-shell/assets/{vennDiagram-4TSXK5OY-CU-NRqIB.js → vennDiagram-4TSXK5OY-B-vi4IyO.js} +1 -1
  273. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CDNKqWh-.js → wardleyDiagram-VM6X3IG4-C9O7Ju98.js} +1 -1
  274. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-CLqguL5D.js → xychartDiagram-S5SC5T6Z-6d8w3jg2.js} +1 -1
  275. package/web-shell/index.html +2 -2
  276. package/chunks/chunk-X35VIWWJ.js +0 -276
  277. package/web-shell/assets/channel-uMMdTrYk.js +0 -1
  278. package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +0 -1
  279. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +0 -1
  280. package/web-shell/assets/index-CsPwZ1ut.css +0 -36
  281. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +0 -1
  282. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +0 -8
@@ -1245,118 +1245,6 @@ init_esbuild_shims();
1245
1245
  import { basename as basename3, join as join5 } from "node:path";
1246
1246
  import { randomUUID as randomUUID3 } from "node:crypto";
1247
1247
 
1248
- // packages/channels/base/dist/BlockStreamer.js
1249
- init_esbuild_shims();
1250
- var BlockStreamer = class {
1251
- static {
1252
- __name(this, "BlockStreamer");
1253
- }
1254
- buffer = "";
1255
- idleTimer = null;
1256
- sending = Promise.resolve();
1257
- opts;
1258
- /** Number of blocks emitted so far. */
1259
- blockCount = 0;
1260
- constructor(opts) {
1261
- this.opts = opts;
1262
- }
1263
- /** Feed a new text chunk from the agent stream. */
1264
- push(chunk) {
1265
- this.buffer += chunk;
1266
- this.clearIdleTimer();
1267
- this.checkEmit();
1268
- if (this.buffer.length > 0 && this.opts.idleMs > 0) {
1269
- this.idleTimer = setTimeout(() => this.onIdle(), this.opts.idleMs);
1270
- }
1271
- }
1272
- /** Flush all remaining buffered text. Awaits all pending sends. */
1273
- async flush() {
1274
- this.clearIdleTimer();
1275
- if (this.buffer.length > 0) {
1276
- this.emitBlock(this.buffer);
1277
- this.buffer = "";
1278
- }
1279
- await this.sending;
1280
- }
1281
- /** Drop buffered text and cancel future idle emission. */
1282
- stop() {
1283
- this.clearIdleTimer();
1284
- this.buffer = "";
1285
- }
1286
- /** Await already-queued sends without emitting the buffered text. */
1287
- async drain() {
1288
- await this.sending;
1289
- }
1290
- // ---------------------------------------------------------------------------
1291
- // Internal
1292
- // ---------------------------------------------------------------------------
1293
- checkEmit() {
1294
- while (this.buffer.length >= this.opts.maxChars) {
1295
- const bp = this.findBreakPoint(this.buffer, this.opts.maxChars);
1296
- this.emitBlock(this.buffer.slice(0, bp));
1297
- this.buffer = this.buffer.slice(bp);
1298
- }
1299
- if (this.buffer.length >= this.opts.minChars) {
1300
- const bp = this.findBlockBoundary(this.buffer);
1301
- if (bp > 0) {
1302
- this.emitBlock(this.buffer.slice(0, bp));
1303
- this.buffer = this.buffer.slice(bp);
1304
- }
1305
- }
1306
- }
1307
- onIdle() {
1308
- this.idleTimer = null;
1309
- if (this.buffer.length >= this.opts.minChars) {
1310
- this.emitBlock(this.buffer);
1311
- this.buffer = "";
1312
- }
1313
- }
1314
- emitBlock(text) {
1315
- const trimmed = text.trim();
1316
- if (!trimmed)
1317
- return;
1318
- const block = /\n[^\S\n]*$/.test(text) ? `${trimmed}
1319
- ` : trimmed;
1320
- this.blockCount++;
1321
- this.sending = this.sending.then(() => this.opts.send(block)).catch(() => {
1322
- });
1323
- }
1324
- /**
1325
- * Find the last paragraph boundary (\n\n) in the buffer.
1326
- * Returns the position after the boundary, or -1 if no suitable boundary
1327
- * exists at or after minChars.
1328
- */
1329
- findBlockBoundary(text) {
1330
- const last = text.lastIndexOf("\n\n");
1331
- if (last < 0 || last < this.opts.minChars)
1332
- return -1;
1333
- return last + 2;
1334
- }
1335
- /**
1336
- * Find the best break point at or before maxPos.
1337
- * Prefers paragraph break > newline > space > maxPos.
1338
- */
1339
- findBreakPoint(text, maxPos) {
1340
- const sub = text.slice(0, maxPos);
1341
- const para = sub.lastIndexOf("\n\n");
1342
- if (para > 0)
1343
- return para + 2;
1344
- const nl = sub.lastIndexOf("\n");
1345
- if (nl > 0)
1346
- return nl + 1;
1347
- const sp = sub.lastIndexOf(" ");
1348
- if (sp > 0)
1349
- return sp + 1;
1350
- return maxPos;
1351
- }
1352
- clearIdleTimer() {
1353
- if (this.idleTimer !== null) {
1354
- clearTimeout(this.idleTimer);
1355
- this.idleTimer = null;
1356
- }
1357
- }
1358
- };
1359
-
1360
1248
  // packages/channels/base/dist/ChannelProactiveDeliveryError.js
1361
1249
  init_esbuild_shims();
1362
1250
  var CHANNEL_PROACTIVE_DELIVERY_ERROR_CODE = "channel_proactive_delivery_error";
@@ -4330,6 +4218,45 @@ function isRecord2(value) {
4330
4218
  return value !== null && typeof value === "object" && !Array.isArray(value);
4331
4219
  }
4332
4220
  __name(isRecord2, "isRecord");
4221
+ var PERMISSION_COPY = {
4222
+ en: {
4223
+ toolUse: "Tool use",
4224
+ allowOnce: "Allow once",
4225
+ allowAlwaysProject: "always allow for this project",
4226
+ allowAlwaysUser: "always allow for this user",
4227
+ allowAlways: "always allow",
4228
+ deny: "Deny",
4229
+ required: "Permission required to run a tool",
4230
+ request: "Request:",
4231
+ tool: "Tool:",
4232
+ action: "Action:",
4233
+ parameters: "Parameters:",
4234
+ replyWith: "Reply with:"
4235
+ },
4236
+ zh: {
4237
+ toolUse: "\u5DE5\u5177\u8C03\u7528",
4238
+ allowOnce: "\u4EC5\u5141\u8BB8\u672C\u6B21",
4239
+ allowAlwaysProject: "\u59CB\u7EC8\u5141\u8BB8\u6B64\u9879\u76EE",
4240
+ allowAlwaysUser: "\u59CB\u7EC8\u5141\u8BB8\u6B64\u7528\u6237",
4241
+ allowAlways: "\u59CB\u7EC8\u5141\u8BB8",
4242
+ deny: "\u62D2\u7EDD",
4243
+ required: "\u8FD0\u884C\u5DE5\u5177\u9700\u8981\u6388\u6743",
4244
+ request: "\u8BF7\u6C42\uFF1A",
4245
+ tool: "\u5DE5\u5177\uFF1A",
4246
+ action: "\u64CD\u4F5C\uFF1A",
4247
+ parameters: "\u53C2\u6570\uFF1A",
4248
+ replyWith: "\u56DE\u590D\u4EE5\u4E0B\u547D\u4EE4\uFF1A"
4249
+ }
4250
+ };
4251
+ function localizedScopedAlwaysLabel(label, stockLabel, localizedLabel) {
4252
+ if (label === stockLabel)
4253
+ return localizedLabel;
4254
+ const scopeSeparator = ": ";
4255
+ if (!label.startsWith(stockLabel + scopeSeparator))
4256
+ return void 0;
4257
+ return `${localizedLabel}\uFF1A${label.slice(stockLabel.length + scopeSeparator.length)}`;
4258
+ }
4259
+ __name(localizedScopedAlwaysLabel, "localizedScopedAlwaysLabel");
4333
4260
  var COMMAND_TOKEN_CHARS = "a-zA-Z0-9_:-";
4334
4261
  var PARSE_COMMAND_RE = new RegExp(`^\\/([${COMMAND_TOKEN_CHARS}]+)(?:@\\S+)?\\s*(.*)`, "s");
4335
4262
  var COMMAND_TOKEN_RE = new RegExp(`^[${COMMAND_TOKEN_CHARS}]+(?:@\\S+)?$`);
@@ -4373,6 +4300,7 @@ var ChannelBase = class {
4373
4300
  proxy;
4374
4301
  /** Adapter-owned persistent state directory, when supplied by the runtime. */
4375
4302
  stateDir;
4303
+ locale;
4376
4304
  channelMemory;
4377
4305
  memoryIntentClassifier;
4378
4306
  channelMemoryRecallObserver;
@@ -4706,6 +4634,10 @@ No answer is available from the current conversation context.`;
4706
4634
  if (presentation && await presentation) {
4707
4635
  return;
4708
4636
  }
4637
+ const permissionPresentation = this.tryPresentPermission(pending);
4638
+ if (permissionPresentation && await permissionPresentation) {
4639
+ return;
4640
+ }
4709
4641
  const text = this.formatPermissionRequest(pending);
4710
4642
  if (target.threadId !== void 0 && this.supportsProactiveSend() && this.supportsProactiveTarget(target)) {
4711
4643
  await this.pushProactive(target, text, pending.sourceLabel);
@@ -4786,6 +4718,103 @@ No answer is available from the current conversation context.`;
4786
4718
  }
4787
4719
  })();
4788
4720
  }
4721
+ tryPresentPermission(pending) {
4722
+ const active = this.activePrompts.get(pending.sessionId);
4723
+ const toolCall = pending.request.toolCall;
4724
+ const meta = isRecord2(toolCall["_meta"]) ? toolCall["_meta"] : void 0;
4725
+ const isUserQuestion = meta?.["qwenInteractionKind"] === "user_question" || meta?.["toolName"] === "ask_user_question" || toolCall["kind"] === "ask_user_question";
4726
+ const decisions = this.permissionPresentationDecisions(pending);
4727
+ if (!active || active.loopPrompt || !active.owner || isUserQuestion || !decisions) {
4728
+ return void 0;
4729
+ }
4730
+ const precedingSegment = this.closeOutputSegment(pending.sessionId, active, pending.target);
4731
+ let respondInvoked = false;
4732
+ const context = {
4733
+ requestId: pending.requestId,
4734
+ sessionId: pending.sessionId,
4735
+ runId: active.runId,
4736
+ owner: active.owner,
4737
+ target: pending.target,
4738
+ ...precedingSegment ? { precedingSegmentId: precedingSegment.segmentId } : {},
4739
+ title: this.permissionTitle(pending.request.toolCall),
4740
+ decisions,
4741
+ onSettled: /* @__PURE__ */ __name((listener) => {
4742
+ if (pending.settled) {
4743
+ listener(pending.settled);
4744
+ return () => {
4745
+ };
4746
+ }
4747
+ pending.settlementListeners.add(listener);
4748
+ return () => {
4749
+ pending.settlementListeners.delete(listener);
4750
+ };
4751
+ }, "onSettled"),
4752
+ respond: /* @__PURE__ */ __name((decision) => {
4753
+ const response = this.permissionPresentationResponse(pending, decision);
4754
+ if (!response)
4755
+ return Promise.resolve(false);
4756
+ respondInvoked = true;
4757
+ return this.respondToUserInput(pending, response);
4758
+ }, "respond")
4759
+ };
4760
+ pending.permissionPresented = true;
4761
+ return (async () => {
4762
+ try {
4763
+ if (precedingSegment) {
4764
+ await this.notifyOutputSegmentEnd(pending.target.chatId, pending.sessionId, precedingSegment, "input_requested");
4765
+ }
4766
+ if (this.pendingPermissions.get(pending.requestId) !== pending) {
4767
+ return true;
4768
+ }
4769
+ const result = await this.presentPermissionRequest(context);
4770
+ if (this.pendingPermissions.get(pending.requestId) !== pending) {
4771
+ return true;
4772
+ }
4773
+ if (result.kind === "presented" || result.kind === "handled" && respondInvoked) {
4774
+ return true;
4775
+ }
4776
+ pending.permissionPresented = false;
4777
+ return false;
4778
+ } catch (err) {
4779
+ process.stderr.write(`[${this.name}] permission presentation failed for request ${sanitizeLogText(pending.requestId, 128)}: ${this.lifecycleError(err)}
4780
+ `);
4781
+ if (this.pendingPermissions.get(pending.requestId) !== pending) {
4782
+ return true;
4783
+ }
4784
+ pending.permissionPresented = false;
4785
+ return false;
4786
+ }
4787
+ })();
4788
+ }
4789
+ permissionPresentationDecisions(pending) {
4790
+ const allowOnce = this.approvalOption(pending);
4791
+ if (!allowOnce)
4792
+ return void 0;
4793
+ const copy = PERMISSION_COPY[this.locale];
4794
+ const allowAlways = this.approvalAlwaysOption(pending);
4795
+ return [
4796
+ {
4797
+ kind: "allow_once",
4798
+ label: sanitizeQuotedText(this.permissionOptionLabel(allowOnce, copy.allowOnce), 80)
4799
+ },
4800
+ ...allowAlways ? [
4801
+ {
4802
+ kind: "allow_always",
4803
+ label: sanitizeQuotedText(allowAlways.label, 80)
4804
+ }
4805
+ ] : [],
4806
+ {
4807
+ kind: "deny",
4808
+ label: sanitizeQuotedText(this.permissionOptionLabel(this.denialOption(pending), copy.deny), 80)
4809
+ }
4810
+ ];
4811
+ }
4812
+ permissionPresentationResponse(pending, decision) {
4813
+ if (decision === "deny")
4814
+ return this.denialResponse(pending);
4815
+ const optionId = decision === "allow_once" ? this.approvalOptionId(pending) : this.approvalAlwaysOption(pending)?.optionId;
4816
+ return optionId ? { outcome: { outcome: "selected", optionId } } : void 0;
4817
+ }
4789
4818
  normalizeUserQuestions(pending) {
4790
4819
  const toolCall = pending.request.toolCall;
4791
4820
  const meta = isRecord2(toolCall["_meta"]) ? toolCall["_meta"] : void 0;
@@ -4830,7 +4859,8 @@ No answer is available from the current conversation context.`;
4830
4859
  }
4831
4860
  async respondToUserInput(pending, response) {
4832
4861
  if (pending.responsePromise) {
4833
- return pending.responsePromise;
4862
+ await pending.responsePromise;
4863
+ return false;
4834
4864
  }
4835
4865
  if (this.pendingPermissions.get(pending.requestId) !== pending || !this.bridge.respondToPermission) {
4836
4866
  return false;
@@ -4883,6 +4913,7 @@ No answer is available from the current conversation context.`;
4883
4913
  this.config = config;
4884
4914
  this.messagePrefix = config.messagePrefix?.trim() || void 0;
4885
4915
  this.bridge = bridge;
4916
+ this.locale = options?.locale ?? "en";
4886
4917
  this.proxy = options?.proxy;
4887
4918
  this.stateDir = options?.stateDir;
4888
4919
  this.identity = Object.freeze(this.resolveIdentity(name, config));
@@ -4945,6 +4976,9 @@ No answer is available from the current conversation context.`;
4945
4976
  async presentUserInputRequest(_context) {
4946
4977
  return { kind: "unsupported" };
4947
4978
  }
4979
+ async presentPermissionRequest(_context) {
4980
+ return { kind: "unsupported" };
4981
+ }
4948
4982
  emitTaskLifecycle(event) {
4949
4983
  try {
4950
4984
  const result = this.onTaskLifecycle(event);
@@ -5837,7 +5871,6 @@ ${promptText}` : promptText;
5837
5871
  return false;
5838
5872
  }
5839
5873
  active.cancelled = true;
5840
- this.stopActiveStreaming(active, sessionId, reason);
5841
5874
  this.dropCollectBuffer(sessionId);
5842
5875
  this.removePendingPermissionsForSession(sessionId, "run_cancelled");
5843
5876
  this.emitTaskCancellation(active, sessionId, reason);
@@ -6144,14 +6177,15 @@ ${promptText}` : promptText;
6144
6177
  return { kind: "found", pending: matching[0] };
6145
6178
  }
6146
6179
  canEnvelopeAnswerPendingPermission(envelope, pending) {
6147
- return pending.target.chatId === envelope.chatId && pending.target.threadId === envelope.threadId && (!pending.userInputPresented || pending.target.senderId === envelope.senderId) && (this.isSharedSessionTarget(pending.target) || pending.target.senderId === envelope.senderId);
6180
+ return pending.target.chatId === envelope.chatId && pending.target.threadId === envelope.threadId && (!pending.userInputPresented && !pending.permissionPresented || pending.target.senderId === envelope.senderId) && (this.isSharedSessionTarget(pending.target) || pending.target.senderId === envelope.senderId);
6148
6181
  }
6149
6182
  formatPermissionRequest(pending) {
6150
6183
  const { toolCall } = pending.request;
6184
+ const copy = PERMISSION_COPY[this.locale];
6151
6185
  const parameters = this.permissionParameterSummary(toolCall);
6152
- const approveLabel = this.permissionOptionLabel(this.approvalOption(pending), "allow once");
6186
+ const approveLabel = this.permissionOptionLabel(this.approvalOption(pending), copy.allowOnce.toLocaleLowerCase(this.locale));
6153
6187
  const alwaysOption = this.approvalAlwaysOption(pending);
6154
- const denyLabel = this.permissionOptionLabel(this.denialOption(pending), "deny");
6188
+ const denyLabel = this.permissionOptionLabel(this.denialOption(pending), copy.deny.toLocaleLowerCase(this.locale));
6155
6189
  const requestSuffix = pending.taskName ? ` ${pending.requestId}` : "";
6156
6190
  const replyPadding = pending.taskName ? { approve: " ", always: " ", deny: " " } : { approve: " ", always: " ", deny: " " };
6157
6191
  const replies = [
@@ -6162,14 +6196,14 @@ ${promptText}` : promptText;
6162
6196
  `${this.prefixedCommand(`/deny${requestSuffix}`)}${replyPadding.deny}${denyLabel}`
6163
6197
  ];
6164
6198
  return [
6165
- "Permission required to run a tool",
6166
- ...pending.taskName ? [`Request: ${pending.requestId}`] : [],
6199
+ copy.required,
6200
+ ...pending.taskName ? [`${copy.request} ${pending.requestId}`] : [],
6167
6201
  "",
6168
- `Tool: ${this.permissionToolName(toolCall)}`,
6169
- `Action: ${this.permissionTitle(toolCall)}`,
6170
- ...parameters ? [`Parameters: ${parameters}`] : [],
6202
+ `${copy.tool} ${this.permissionToolName(toolCall)}`,
6203
+ `${copy.action} ${this.permissionTitle(toolCall)}`,
6204
+ ...parameters ? [`${copy.parameters} ${parameters}`] : [],
6171
6205
  "",
6172
- "Reply with:",
6206
+ copy.replyWith,
6173
6207
  ...replies
6174
6208
  ].join("\n");
6175
6209
  }
@@ -6181,7 +6215,7 @@ ${promptText}` : promptText;
6181
6215
  }
6182
6216
  permissionTitle(toolCall) {
6183
6217
  const rawTitle = typeof toolCall.title === "string" ? toolCall.title : void 0;
6184
- return sanitizeQuotedText(rawTitle || "", 160).trim() || "Tool use";
6218
+ return sanitizeQuotedText(rawTitle || "", 160).trim() || PERMISSION_COPY[this.locale].toolUse;
6185
6219
  }
6186
6220
  permissionToolName(toolCall) {
6187
6221
  const rawToolCall = toolCall;
@@ -6221,7 +6255,31 @@ ${promptText}` : promptText;
6221
6255
  permissionOptionLabel(option, fallback) {
6222
6256
  const rawLabel = typeof option?.name === "string" ? option.name : "";
6223
6257
  const label = sanitizeQuotedText(rawLabel, 160).trim();
6224
- return label || fallback;
6258
+ if (!label)
6259
+ return fallback;
6260
+ return this.localizedPermissionOptionLabel(option, label) ?? label;
6261
+ }
6262
+ localizedPermissionOptionLabel(option, label) {
6263
+ if (this.locale !== "zh")
6264
+ return void 0;
6265
+ const copy = PERMISSION_COPY[this.locale];
6266
+ if (option?.kind === "allow_always") {
6267
+ if (option.optionId === "proceed_always_project") {
6268
+ return localizedScopedAlwaysLabel(label, "Always Allow in project", copy.allowAlwaysProject);
6269
+ }
6270
+ if (option.optionId === "proceed_always_user") {
6271
+ return localizedScopedAlwaysLabel(label, "Always Allow for user", copy.allowAlwaysUser);
6272
+ }
6273
+ if (option.optionId === "proceed_always" && label === "Allow All Edits") {
6274
+ return copy.allowAlways;
6275
+ }
6276
+ return void 0;
6277
+ }
6278
+ if (label === "Allow" || label === "Allow once")
6279
+ return copy.allowOnce;
6280
+ if (label === "Deny" || label === "Reject")
6281
+ return copy.deny;
6282
+ return void 0;
6225
6283
  }
6226
6284
  approvalOption(pending) {
6227
6285
  const options = pending.request.options;
@@ -6245,13 +6303,14 @@ ${promptText}` : promptText;
6245
6303
  return options.find((option) => option.optionId === `proceed_always_${scope}`);
6246
6304
  }
6247
6305
  approvalAlwaysLabel(option) {
6306
+ const copy = PERMISSION_COPY[this.locale];
6248
6307
  if (option.optionId === "proceed_always_project") {
6249
- return "always allow for this project";
6308
+ return copy.allowAlwaysProject;
6250
6309
  }
6251
6310
  if (option.optionId === "proceed_always_user") {
6252
- return "always allow for this user";
6311
+ return copy.allowAlwaysUser;
6253
6312
  }
6254
- return "always allow";
6313
+ return copy.allowAlways;
6255
6314
  }
6256
6315
  denialResponse(pending) {
6257
6316
  const option = this.denialOption(pending);
@@ -6317,7 +6376,7 @@ ${requestList}`);
6317
6376
  }
6318
6377
  let accepted;
6319
6378
  try {
6320
- accepted = pending.userInputPresented ? await this.respondToUserInput(pending, response) : await this.bridge.respondToPermission(pending.requestId, response);
6379
+ accepted = pending.userInputPresented || pending.permissionPresented ? await this.respondToUserInput(pending, response) : await this.bridge.respondToPermission(pending.requestId, response);
6321
6380
  } catch (err) {
6322
6381
  this.removePendingPermission(pending.requestId);
6323
6382
  process.stderr.write(`[${this.name}] permission response failed for request ${sanitizeLogText(pending.requestId, 128)}: ${this.lifecycleError(err)}
@@ -7629,17 +7688,8 @@ ${sanitizePromptText(entry.text).trim()}` : `No channel memory entry ${intent.id
7629
7688
  const active = this.activePrompts.get(sessionId);
7630
7689
  return active?.senderName || active?.senderId || target.senderId || "agent";
7631
7690
  }
7632
- stopActiveStreaming(active, sessionId, reason) {
7633
- try {
7634
- active.stopStreaming?.();
7635
- } catch (err) {
7636
- process.stderr.write(`[${this.name}] stopStreaming threw during ${reason} for session ${sessionId}: ${err instanceof Error ? err.message : err}
7637
- `);
7638
- }
7639
- }
7640
7691
  /**
7641
- * Cancel the active turn and wait (bounded) for it to wind down. Stops the
7642
- * BlockStreamer so buffered text can't leak via the idle timer, then fires a
7692
+ * Cancel the active turn and wait (bounded) for it to wind down. Fires a
7643
7693
  * best-effort cancelSession (NOT awaited — a wedged child/daemon can leave the
7644
7694
  * request pending forever). Returns true if active.done settled first, false
7645
7695
  * if the CLEAR_CANCEL_TIMEOUT_MS bound won (the turn never wound down). Used by
@@ -7650,7 +7700,6 @@ ${sanitizePromptText(entry.text).trim()}` : `No channel memory entry ${intent.id
7650
7700
  */
7651
7701
  async cancelAndAwaitActive(active, sessionId) {
7652
7702
  active.cancelled = true;
7653
- this.stopActiveStreaming(active, sessionId, "cancel");
7654
7703
  void this.bridge.cancelSession(sessionId).catch((err) => {
7655
7704
  process.stderr.write(`[${this.name}] cancelSession failed for session=${sessionId} (clear/await): ${err instanceof Error ? err.message : err}
7656
7705
  `);
@@ -8340,7 +8389,6 @@ ${promptText}`;
8340
8389
  if (firstCancellation) {
8341
8390
  process.stderr.write(`[${this.name}] steer: cancelled active turn for ${envelope.senderId} in session ${sessionId}
8342
8391
  `);
8343
- this.stopActiveStreaming(active, sessionId, "steer");
8344
8392
  void this.bridge.cancelSession(sessionId).catch((err) => {
8345
8393
  process.stderr.write(`[${this.name}] cancelSession failed for session=${sessionId} (steer): ${err instanceof Error ? err.message : err}
8346
8394
  `);
@@ -8375,7 +8423,6 @@ ${promptText}`;
8375
8423
  }
8376
8424
  const prev = this.sessionQueues.get(sessionId) ?? Promise.resolve();
8377
8425
  const generation = namedTurn?.generation ?? this.sessionGenerations.get(sessionId) ?? 0;
8378
- const useBlockStreaming = this.config.blockStreaming === "on";
8379
8426
  if (namedTurn) {
8380
8427
  namedTurn.claimed = true;
8381
8428
  } else {
@@ -8478,18 +8525,9 @@ ${promptToSend}`;
8478
8525
  process.stderr.write(`[${this.name}] onPromptStart threw for session ${sessionId}: ${this.lifecycleError(err)}
8479
8526
  `);
8480
8527
  }
8481
- const streamer = useBlockStreaming ? new BlockStreamer({
8482
- minChars: this.config.blockStreamingChunk?.minChars ?? 400,
8483
- maxChars: this.config.blockStreamingChunk?.maxChars ?? 1e3,
8484
- idleMs: this.config.blockStreamingCoalesce?.idleMs ?? 1500,
8485
- send: /* @__PURE__ */ __name((text) => this.sendResponseMessage(envelope.chatId, text, sessionId, sourceLabel), "send")
8486
- }) : null;
8487
- promptState.stopStreaming = () => streamer?.stop();
8488
8528
  const heldChunks = [];
8489
- let hasStreamedText = false;
8490
8529
  const releaseHeldChunks = /* @__PURE__ */ __name(() => {
8491
8530
  for (const held of heldChunks.splice(0)) {
8492
- hasStreamedText = true;
8493
8531
  const segment = this.ensureOutputSegment(sessionId, promptState);
8494
8532
  this.emitTaskLifecycle({
8495
8533
  ...this.lifecycleBase(envelope.chatId, sessionId, envelope.messageId),
@@ -8497,7 +8535,6 @@ ${promptToSend}`;
8497
8535
  chunk: held
8498
8536
  });
8499
8537
  this.onResponseChunk(envelope.chatId, held, sessionId, segment);
8500
- streamer?.push(held);
8501
8538
  }
8502
8539
  }, "releaseHeldChunks");
8503
8540
  const onChunk = /* @__PURE__ */ __name((sid, chunk) => {
@@ -8514,10 +8551,8 @@ ${promptToSend}`;
8514
8551
  return;
8515
8552
  }
8516
8553
  heldChunks.length = 0;
8517
- hasStreamedText = false;
8518
8554
  const segment = this.closeOutputSegment(sessionId, promptState);
8519
8555
  void this.notifyOutputSegmentEnd(envelope.chatId, sessionId, segment, "response_boundary");
8520
- streamer?.stop();
8521
8556
  }, "onResponseBoundary");
8522
8557
  await this.waitForBridgeRecovery();
8523
8558
  const promptBridge = this.bridge;
@@ -8536,17 +8571,10 @@ ${promptToSend}`;
8536
8571
  }
8537
8572
  if (!promptState.cancelled && response) {
8538
8573
  promptState.deliveryStarted = true;
8539
- if (streamer) {
8540
- if (!hasStreamedText) {
8541
- streamer.push(response);
8542
- }
8543
- await streamer.flush();
8544
- } else {
8545
- const segment = this.ensureOutputSegment(sessionId, promptState);
8546
- await this.onResponseComplete(envelope.chatId, response, sessionId, segment);
8547
- if (segment && promptState.activeSegmentId === segment.segmentId) {
8548
- promptState.activeSegmentId = void 0;
8549
- }
8574
+ const segment = this.ensureOutputSegment(sessionId, promptState);
8575
+ await this.onResponseComplete(envelope.chatId, response, sessionId, segment);
8576
+ if (segment && promptState.activeSegmentId === segment.segmentId) {
8577
+ promptState.activeSegmentId = void 0;
8550
8578
  }
8551
8579
  }
8552
8580
  if (!promptState.deliveryStarted) {
@@ -8591,10 +8619,6 @@ ${promptToSend}`;
8591
8619
  } finally {
8592
8620
  promptBridge.off("textChunk", onChunk);
8593
8621
  promptBridge.off("responseBoundary", onResponseBoundary);
8594
- if (streamer) {
8595
- streamer.stop();
8596
- await streamer.drain();
8597
- }
8598
8622
  const stillCurrent = this.activePrompts.get(sessionId) === promptState;
8599
8623
  if (!promptState.clearEvicted) {
8600
8624
  try {
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  buildModelReasoningConfigPreview,
5
5
  resolvePersistedReasoningConfigState
6
- } from "./chunk-2OR32P5M.js";
6
+ } from "./chunk-ZN5TKAVR.js";
7
7
  import {
8
8
  ACP_ROUTE_ID_PREFIX,
9
9
  buildAcpModelOptions,
@@ -12,7 +12,7 @@ import {
12
12
  parseAcpBaseModelId,
13
13
  resolveCliGenerationConfig,
14
14
  sanitizeProviderBaseUrl
15
- } from "./chunk-7GZCCHJL.js";
15
+ } from "./chunk-7LTCFO6T.js";
16
16
  import {
17
17
  snapshotProcessEnv
18
18
  } from "./chunk-6RZX2HIH.js";
@@ -21,10 +21,10 @@ import {
21
21
  } from "./chunk-FETY36NQ.js";
22
22
  import {
23
23
  loadSettings
24
- } from "./chunk-Q2F43WTJ.js";
24
+ } from "./chunk-WBU2PIZ5.js";
25
25
  import {
26
26
  ModelsConfig
27
- } from "./chunk-43CI6YWJ.js";
27
+ } from "./chunk-HJ5UJQQL.js";
28
28
  import {
29
29
  APPROVAL_MODES
30
30
  } from "./chunk-JX6XHPTX.js";
@@ -121,19 +121,25 @@ function buildWorkspaceProvidersStatus(workspaceCwd, acpChannelLive, options) {
121
121
  providers.set(authType, provider);
122
122
  }
123
123
  const isCurrent = currentAuth === model.authType && currentAcpModelId === modelId;
124
+ const resolved = modelId.startsWith(ACP_ROUTE_ID_PREFIX) ? void 0 : modelsConfig.getResolvedModel(
125
+ model.authType,
126
+ model.id,
127
+ model.registryBaseUrl ?? model.baseUrl
128
+ );
124
129
  const configOptions = modelId.startsWith(ACP_ROUTE_ID_PREFIX) ? void 0 : buildModelReasoningConfigPreview(
125
130
  model.id,
126
131
  resolvePersistedReasoningConfigState(
127
132
  model.id,
128
133
  settings.model?.reasoningEffort,
129
- modelsConfig.getResolvedModel(
130
- model.authType,
131
- model.id,
132
- model.registryBaseUrl ?? model.baseUrl
133
- )?.generationConfig.thinkingMandatory === true,
134
+ resolved?.generationConfig.thinkingMandatory === true,
134
135
  model.capabilities?.reasoning
135
136
  ),
136
- model.capabilities?.reasoning
137
+ model.capabilities?.reasoning,
138
+ resolved ? {
139
+ ...resolved.generationConfig,
140
+ model: model.id,
141
+ baseUrl: resolved.baseUrl
142
+ } : void 0
137
143
  );
138
144
  const providerModel = {
139
145
  modelId,
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  formatDuration
5
- } from "./chunk-3SH53ANB.js";
5
+ } from "./chunk-22GORRNY.js";
6
6
  import {
7
7
  theme
8
8
  } from "./chunk-4LIPOIXS.js";
@@ -36,18 +36,18 @@ import {
36
36
  } from "./chunk-CRZBDVP2.js";
37
37
  import {
38
38
  isGoalCheckpointBookkeepingRecord
39
- } from "./chunk-BL6B2QS2.js";
39
+ } from "./chunk-GOEVQADN.js";
40
40
  import {
41
41
  GoalPersistenceUnavailableError,
42
42
  getToolResponseDisplayText,
43
43
  parseGoalStateRecordPayloadV2
44
- } from "./chunk-43CI6YWJ.js";
44
+ } from "./chunk-HJ5UJQQL.js";
45
45
  import {
46
46
  stripAnsi
47
47
  } from "./chunk-TWPJO254.js";
48
48
  import {
49
49
  projectUserTranscriptForDisplay
50
- } from "./chunk-FDOGGKAA.js";
50
+ } from "./chunk-GSFV5RQW.js";
51
51
  import {
52
52
  ToolDisplayNames
53
53
  } from "./chunk-MWIO7MF6.js";
@@ -2419,6 +2419,19 @@ var ICON = {
2419
2419
  CHECK: `\u2713${_VS15}`,
2420
2420
  CROSS: `\u2716${_VS15}`
2421
2421
  };
2422
+ var SPINNER_FRAMES = [
2423
+ "\u280B",
2424
+ "\u2819",
2425
+ "\u2839",
2426
+ "\u2838",
2427
+ "\u283C",
2428
+ "\u2834",
2429
+ "\u2826",
2430
+ "\u2827",
2431
+ "\u2807",
2432
+ "\u280F"
2433
+ ];
2434
+ var SPINNER_INTERVAL_MS = 80;
2422
2435
 
2423
2436
  // packages/cli/src/ui/components/shared/ToolStatusIndicator.tsx
2424
2437
  init_esbuild_shims();
@@ -3493,6 +3506,8 @@ export {
3493
3506
  SHELL_COMMAND_NAME,
3494
3507
  SHELL_NAME,
3495
3508
  ICON,
3509
+ SPINNER_FRAMES,
3510
+ SPINNER_INTERVAL_MS,
3496
3511
  wrapAnsi,
3497
3512
  SCREEN_READER_USER_PREFIX,
3498
3513
  SCREEN_READER_MODEL_PREFIX,
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  parseRule
5
- } from "./chunk-43CI6YWJ.js";
5
+ } from "./chunk-HJ5UJQQL.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";