@qwen-code/qwen-code 0.19.11-nightly.20260718.767a32484 → 0.19.11

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 (288) hide show
  1. package/bundled/qc-helper/docs/configuration/model-providers.md +0 -11
  2. package/bundled/qc-helper/docs/configuration/settings.md +9 -9
  3. package/bundled/qc-helper/docs/features/channels/overview.md +11 -24
  4. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +7 -42
  5. package/bundled/qc-helper/docs/qwen-serve.md +40 -66
  6. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  7. package/chunks/{MaxSizedBox-ZFHA4QEQ.js → MaxSizedBox-L6TGYDM3.js} +27 -27
  8. package/chunks/{StandaloneSessionPicker-YRWOQVQA.js → StandaloneSessionPicker-AKEQHU5P.js} +39 -39
  9. package/chunks/{acpAgent-U2P2IESZ.js → acpAgent-PTNBGJDN.js} +228 -501
  10. package/chunks/{agent-GQXX6X5Y.js → agent-AJOMOZPJ.js} +24 -24
  11. package/chunks/{agent-headless-3572NBCK.js → agent-headless-CYKOMAXS.js} +24 -24
  12. package/chunks/{anthropicContentGenerator-Y65DMM64.js → anthropicContentGenerator-HBRXJSP4.js} +6 -29
  13. package/chunks/{artifact-tool-WR7I2XON.js → artifact-tool-MIZLXBLF.js} +2 -2
  14. package/chunks/{askUserQuestion-B4FUTPHD.js → askUserQuestion-XMJVPNWM.js} +44 -2
  15. package/chunks/{bridge-N5RMGD7G.js → bridge-QKISWPCI.js} +29 -29
  16. package/chunks/{ca-M3GQQ26D.js → ca-CODEN7TD.js} +2 -2
  17. package/chunks/{channel-worker-group-HZVJKLGX.js → channel-worker-group-SOUWTFHC.js} +4 -4
  18. package/chunks/{channel-worker-manager-3WDK4HNS.js → channel-worker-manager-LOVSV3WW.js} +4 -4
  19. package/chunks/{channel-worker-supervisor-U2W6Q5F7.js → channel-worker-supervisor-XW6MHJBQ.js} +3 -3
  20. package/chunks/{chunk-3DJY4IFO.js → chunk-2FO5GFKZ.js} +1 -1
  21. package/chunks/chunk-2HRYPZT5.js +25 -0
  22. package/chunks/{chunk-LSFVUGXT.js → chunk-2OG646IN.js} +3 -3
  23. package/chunks/{chunk-OSSDHJDU.js → chunk-2Z5UX4KI.js} +1 -1
  24. package/chunks/{chunk-O2K6BLPZ.js → chunk-3AYLDB6B.js} +1 -1
  25. package/chunks/{chunk-MI2V6IWU.js → chunk-3DWIFU7L.js} +1 -1
  26. package/chunks/{chunk-AEKYFMYE.js → chunk-3M75MSVA.js} +1 -1
  27. package/chunks/{chunk-HIMIG6PI.js → chunk-4AGTGMCQ.js} +11 -11
  28. package/chunks/{chunk-V2FRLYHN.js → chunk-4BJVSIS3.js} +2 -2
  29. package/chunks/{chunk-64XGKNSI.js → chunk-4HUDDSO5.js} +3 -3
  30. package/chunks/{chunk-FSJGBUQI.js → chunk-4IJMTYCB.js} +28 -817
  31. package/chunks/{chunk-TYQMGACW.js → chunk-4LD5APFL.js} +0 -1
  32. package/chunks/{chunk-2XRGFF5K.js → chunk-4ROQY23C.js} +6 -6
  33. package/chunks/{chunk-KEVDWH3U.js → chunk-574PTLMU.js} +55 -207
  34. package/chunks/{chunk-Y72B36CP.js → chunk-5CNYZ7TN.js} +7 -7
  35. package/chunks/{chunk-DPSHAB47.js → chunk-5VWYKIMW.js} +1 -1
  36. package/chunks/{chunk-OXOEOOQU.js → chunk-5Z452MMD.js} +37 -64
  37. package/chunks/{chunk-U6OPT4H2.js → chunk-6EDDYPI3.js} +4 -4
  38. package/chunks/{chunk-XA7OKDWM.js → chunk-6WGZDD67.js} +2 -2
  39. package/chunks/{chunk-IENO2YAT.js → chunk-6WPJRYLZ.js} +3 -3
  40. package/chunks/{chunk-PWYLF7SS.js → chunk-6Y6ORE2G.js} +10 -7
  41. package/chunks/{chunk-UE5TZ55T.js → chunk-7NFB7LBQ.js} +0 -8
  42. package/chunks/{chunk-3CL5SEDT.js → chunk-7NMU22Q3.js} +6 -6
  43. package/chunks/{chunk-ECZFTRTP.js → chunk-7ZYHLN67.js} +75 -26
  44. package/chunks/{chunk-LKR7QQ63.js → chunk-A2HWMJVO.js} +3 -3
  45. package/chunks/{chunk-SGPFJMRP.js → chunk-ARKANCNX.js} +1 -1
  46. package/chunks/{chunk-5QRK2VZG.js → chunk-AU3MFJPL.js} +8 -8
  47. package/chunks/{chunk-R3VWUU2E.js → chunk-AVEOWVOM.js} +1 -1
  48. package/chunks/{chunk-6ITLKEOZ.js → chunk-BUAXJVNP.js} +3 -3
  49. package/chunks/{chunk-U4FJ26D2.js → chunk-BXBDC476.js} +2 -2
  50. package/chunks/{chunk-ZTSDZQZO.js → chunk-BYB3GF2T.js} +3 -130
  51. package/chunks/{chunk-4JBTZBCW.js → chunk-BYH2JRK3.js} +5 -5
  52. package/chunks/{chunk-4HCYNDMG.js → chunk-CAHY5ABC.js} +1 -1
  53. package/chunks/{chunk-JBAQ5BYX.js → chunk-CF5VJRGC.js} +1 -1
  54. package/chunks/{chunk-3NWYQ7FX.js → chunk-CH2XVB47.js} +2 -2
  55. package/chunks/{chunk-FHUXCRAF.js → chunk-CITWNIXJ.js} +4 -4
  56. package/chunks/{chunk-6YIRYY3P.js → chunk-CPFIQVZJ.js} +1 -1
  57. package/chunks/{chunk-EKG3BHQY.js → chunk-DOPUYNXO.js} +3 -3
  58. package/chunks/{chunk-VNN3JNYT.js → chunk-F333XEAU.js} +1 -1
  59. package/chunks/{chunk-FUTHTZVV.js → chunk-FBU7WRZI.js} +1 -1
  60. package/chunks/{chunk-OBYAX5QZ.js → chunk-FMNYGWOD.js} +6 -6
  61. package/chunks/{chunk-FZRES4GK.js → chunk-FNX3LGAK.js} +1 -1
  62. package/chunks/{chunk-F2RR4HO2.js → chunk-FSA7ERJ2.js} +1 -1
  63. package/chunks/{chunk-OPVIKLKK.js → chunk-FXKOAEXP.js} +14 -14
  64. package/chunks/{chunk-U2XBPBO3.js → chunk-FYQ22K62.js} +3 -4
  65. package/chunks/{chunk-KTKETHMY.js → chunk-GLNHPRZT.js} +1 -1
  66. package/chunks/{chunk-C5NSOSF4.js → chunk-GNBBAQ6J.js} +13 -30
  67. package/chunks/{chunk-GAQOQMHY.js → chunk-HASK4LMI.js} +6 -6
  68. package/chunks/{chunk-GG6RSNWS.js → chunk-JD44PNGJ.js} +4 -9
  69. package/chunks/{chunk-ANRANWVE.js → chunk-JGUT3LWZ.js} +1 -4
  70. package/chunks/{chunk-336KPNNV.js → chunk-JWICTOXS.js} +2 -2
  71. package/chunks/{chunk-57RWF6R7.js → chunk-K7VD4XLT.js} +1 -1
  72. package/chunks/{chunk-XSPFQQRE.js → chunk-KKRTYONM.js} +3 -3
  73. package/chunks/{chunk-JDIUK2Y3.js → chunk-KSZKSE23.js} +1 -1
  74. package/chunks/{chunk-HQXQCIT2.js → chunk-KXYJPRT5.js} +5 -25
  75. package/chunks/{chunk-X6YQWCIJ.js → chunk-L4Y55KIS.js} +1 -1
  76. package/chunks/{chunk-335ECZTA.js → chunk-L5U3ELZX.js} +1 -1
  77. package/chunks/{chunk-4CHDYDG3.js → chunk-LQIDP6K5.js} +1 -1
  78. package/chunks/{chunk-5O34IMY5.js → chunk-LS56TX3M.js} +1 -1
  79. package/chunks/{chunk-HCCR43AY.js → chunk-LXLTBIDP.js} +1 -1
  80. package/chunks/{chunk-66IT3EY2.js → chunk-MQOVXZAF.js} +48 -164
  81. package/chunks/{chunk-JUVTV4NF.js → chunk-N5VIZTND.js} +1 -1
  82. package/chunks/{chunk-3YJZ6WNY.js → chunk-NJOFRXTM.js} +593 -1317
  83. package/chunks/{chunk-CZSAIBUB.js → chunk-NVTQZXR7.js} +7 -7
  84. package/chunks/{chunk-G274ETR6.js → chunk-OKAIGAYW.js} +3 -3
  85. package/chunks/{chunk-TVYM3Q3J.js → chunk-OWT2CAEQ.js} +7 -100
  86. package/chunks/{chunk-T3W4SDRB.js → chunk-PZL23GTM.js} +0 -2
  87. package/chunks/{chunk-XAAEDML2.js → chunk-Q6TUALBE.js} +1 -1
  88. package/chunks/chunk-QAW7PIHT.js +168 -0
  89. package/chunks/{chunk-HT7L5FCZ.js → chunk-QDJ2R4CM.js} +3 -3
  90. package/chunks/{chunk-IX7O5WI3.js → chunk-QOTQH4CB.js} +8 -23
  91. package/chunks/{chunk-S4N3G4BB.js → chunk-QYG4BY6Q.js} +1 -1
  92. package/chunks/{chunk-4XCVGEEX.js → chunk-RCEEXIOO.js} +3 -3
  93. package/chunks/{chunk-IK5TYYVR.js → chunk-RP5R7MB6.js} +12 -12
  94. package/chunks/{chunk-U2LNTX56.js → chunk-RTV5TUYB.js} +1 -1
  95. package/chunks/{chunk-K2GBHL73.js → chunk-S63Z5V42.js} +4 -4
  96. package/chunks/{chunk-J2MKYJKZ.js → chunk-SPJQO2CE.js} +2 -2
  97. package/chunks/{chunk-LTD3CHGS.js → chunk-SQ5BK3GO.js} +1 -1
  98. package/chunks/{chunk-W7H223ZZ.js → chunk-STZQCNN3.js} +1 -1
  99. package/chunks/{chunk-2YSZE74N.js → chunk-SY7NEYX4.js} +2 -2
  100. package/chunks/{chunk-GA3WUOO7.js → chunk-T76DGHGG.js} +5 -5
  101. package/chunks/{chunk-QPRDXJIC.js → chunk-THXDQSTA.js} +29 -30
  102. package/chunks/{chunk-DASWPKXR.js → chunk-TIOE2OPE.js} +2 -2
  103. package/chunks/{chunk-F5XYN5VF.js → chunk-TL4R5TRK.js} +2 -2
  104. package/chunks/{chunk-4RPARQ5D.js → chunk-TV6K2FB4.js} +2 -2
  105. package/chunks/{chunk-JCJPZMJV.js → chunk-TYLOFD2U.js} +1 -1
  106. package/chunks/{chunk-632KROVU.js → chunk-V2DXTLUE.js} +3 -3
  107. package/chunks/{chunk-URP6O2PP.js → chunk-VFX7EZIR.js} +1 -1
  108. package/chunks/{chunk-CMVFTMRD.js → chunk-VRR65QYW.js} +1 -1
  109. package/chunks/{chunk-VAJS2E2D.js → chunk-WIEO4CWB.js} +1 -1
  110. package/chunks/{chunk-OCQ2QTFJ.js → chunk-WMNXXRGL.js} +25 -25
  111. package/chunks/{chunk-WEPXQKGP.js → chunk-WTNZ6DXB.js} +1 -1
  112. package/chunks/{chunk-LGY7PG7Q.js → chunk-Y3KFTWVX.js} +5 -5
  113. package/chunks/{chunk-4CA4WUMS.js → chunk-Y66VOBRP.js} +2 -2
  114. package/chunks/{chunk-IVKLDHU6.js → chunk-YFVO2HOR.js} +4 -4
  115. package/chunks/{chunk-GUNTLALV.js → chunk-YGYSMY2R.js} +47 -61
  116. package/chunks/{chunk-3X2CFOUM.js → chunk-YLSSEUAM.js} +274 -345
  117. package/chunks/{chunk-6Z5NRZVU.js → chunk-ZIXOTAPZ.js} +3 -92
  118. package/chunks/{chunk-Z2LBNX3R.js → chunk-ZPAHLFZU.js} +2 -2
  119. package/chunks/{chunk-ATJ7H5AS.js → chunk-ZQIYGQCG.js} +84 -230
  120. package/chunks/{computer-use-UIFBH25Y.js → computer-use-VZZMJEQ7.js} +24 -24
  121. package/chunks/{config-utils-2LHI7JXU.js → config-utils-IQQT3GCI.js} +3 -3
  122. package/chunks/{contextCommand-VGZHKEH2.js → contextCommand-PORKIZSY.js} +26 -26
  123. package/chunks/{create-sub-session-DIJOV6HV.js → create-sub-session-EAB2U5XW.js} +2 -2
  124. package/chunks/{create-sub-session-OFVI4H6I.js → create-sub-session-XVFKHAFW.js} +24 -24
  125. package/chunks/{cron-create-34GVLSW5.js → cron-create-GMVKSXZT.js} +4 -4
  126. package/chunks/{cron-delete-NMVKUL45.js → cron-delete-VDZKUAVK.js} +4 -4
  127. package/chunks/{cron-list-277ZOR7L.js → cron-list-UG7C7RAR.js} +4 -4
  128. package/chunks/{daemon-72MEV3TY.js → daemon-IHR6WSPB.js} +14 -59
  129. package/chunks/{daemon-status-provider-ZJJ6AOG2.js → daemon-status-provider-ABLBA3UJ.js} +33 -33
  130. package/chunks/{de-56TMDIKS.js → de-NOXPCSYN.js} +2 -2
  131. package/chunks/{dist-ILVRL322.js → dist-4WCQEZIN.js} +1 -1
  132. package/chunks/{dist-SVHAGOLN.js → dist-DOPL5LSQ.js} +1 -1
  133. package/chunks/{dist-LQHDHBPP.js → dist-GXJVCOS7.js} +1 -1
  134. package/chunks/{dist-KEZ5JWH4.js → dist-PX2ERZ6I.js} +2 -2
  135. package/chunks/{dist-G6QCGO2K.js → dist-V2YVLYOW.js} +1 -1
  136. package/chunks/{dist-4W3UGU2A.js → dist-VYWUKURL.js} +1 -1
  137. package/chunks/{earlyInputCapture-NPF4PVUE.js → earlyInputCapture-DJCU5SPU.js} +25 -25
  138. package/chunks/{edit-F7CT6NZH.js → edit-O4VV5AO6.js} +25 -25
  139. package/chunks/{en-AXS2N62H.js → en-JFVULHTB.js} +3 -6
  140. package/chunks/{enter-worktree-Z4ET3MZL.js → enter-worktree-XQYDDI2I.js} +24 -24
  141. package/chunks/{enterPlanMode-VYR7T5NX.js → enterPlanMode-CESVMQBV.js} +27 -25
  142. package/chunks/{environment-MBTXL57Q.js → environment-5KXOLZNR.js} +26 -26
  143. package/chunks/{errors-HN36J4FR.js → errors-EBUTCBAQ.js} +26 -26
  144. package/chunks/{exit-worktree-RU7JYFMF.js → exit-worktree-MWGNSPNX.js} +24 -24
  145. package/chunks/exitPlanMode-HYQL4XMB.js +909 -0
  146. package/chunks/{fast-path-RFT3CDNZ.js → fast-path-6V73F2T2.js} +2 -2
  147. package/chunks/{fr-ZJPE5OVN.js → fr-HVFNU42H.js} +2 -2
  148. package/chunks/{gemini-37NTNKZF.js → gemini-TEFJZCIZ.js} +70 -98
  149. package/chunks/{geminiContentGenerator-76HNOYNQ.js → geminiContentGenerator-M56BEXWI.js} +5 -5
  150. package/chunks/{glob-DWD7JCZE.js → glob-DMYFEEAZ.js} +25 -30
  151. package/chunks/{grep-NJRXFV5C.js → grep-GYE47MD4.js} +25 -30
  152. package/chunks/{handleAutoUpdate-7GBDXW6U.js → handleAutoUpdate-OLUY4L7L.js} +28 -28
  153. package/chunks/{i18n-MYD5VGED.js → i18n-462JC7IY.js} +25 -25
  154. package/chunks/{initializer-4DHPNAZG.js → initializer-Y7WD4D2I.js} +30 -30
  155. package/chunks/{installationInfo-RWOW6BZO.js → installationInfo-I2Z3BKCE.js} +25 -25
  156. package/chunks/{ja-57GG4QSL.js → ja-PY5AF544.js} +2 -2
  157. package/chunks/{keychain-token-storage-K23CFKGN.js → keychain-token-storage-AU22CQI6.js} +2 -2
  158. package/chunks/{list-MMCNNHE7.js → list-XQ5MSAXP.js} +32 -32
  159. package/chunks/{loadedSettingsAdapter-UK4JWPYU.js → loadedSettingsAdapter-TQOWYE7C.js} +29 -29
  160. package/chunks/{loop-wakeup-KCLY4XQM.js → loop-wakeup-QXWZSCYM.js} +5 -5
  161. package/chunks/{ls-UNI4LAJ3.js → ls-2OUTG3IZ.js} +4 -4
  162. package/chunks/{lsp-HPACPJAN.js → lsp-4VMNXZW6.js} +2 -2
  163. package/chunks/{mcp-AFCVA4UV.js → mcp-22LLEEVM.js} +29 -29
  164. package/chunks/{monitor-RK637BNO.js → monitor-VKG324X3.js} +24 -24
  165. package/chunks/nonInteractiveCli-UMYUT643.js +129 -0
  166. package/chunks/{notebook-edit-LY2X3CMF.js → notebook-edit-FJJRBQ3S.js} +25 -25
  167. package/chunks/{openaiContentGenerator-MDYDW7IA.js → openaiContentGenerator-4T2OGTR5.js} +13 -13
  168. package/chunks/{pidfile-2NUYRLKB.js → pidfile-XL3MDCBM.js} +25 -25
  169. package/chunks/{processUtils-7QH3VBVN.js → processUtils-7UCFN34D.js} +2 -2
  170. package/chunks/{pt-MCGZ3RZ4.js → pt-A3PRQXMU.js} +2 -2
  171. package/chunks/{qwenContentGenerator-3HT4TVDL.js → qwenContentGenerator-PQUXJDIZ.js} +26 -26
  172. package/chunks/{qwenOAuth2-3A4TJVZT.js → qwenOAuth2-LEYOU7RU.js} +5 -5
  173. package/chunks/{read-file-NE4FREFR.js → read-file-3EYQML7E.js} +10 -10
  174. package/chunks/{read-mcp-resource-C6NT52T6.js → read-mcp-resource-JUFHCKSC.js} +2 -2
  175. package/chunks/{record-artifact-ENCU7QCL.js → record-artifact-DWSMBXYY.js} +2 -2
  176. package/chunks/{ripGrep-DBLXWQCJ.js → ripGrep-S6WPGQNA.js} +24 -24
  177. package/chunks/{ru-GA3NZW5Q.js → ru-IBCWUTOC.js} +2 -2
  178. package/chunks/{run-qwen-serve-3NOCI6IL.js → run-qwen-serve-NSKBT3HU.js} +36 -52
  179. package/chunks/{runtime-ZI7DSZSS.js → runtime-LG5ZZ3VH.js} +33 -33
  180. package/chunks/{scheduler-SOVEP5K7.js → scheduler-PLX3VVTB.js} +24 -24
  181. package/chunks/{send-message-5IFPZTPE.js → send-message-JZ752NWD.js} +3 -3
  182. package/chunks/{serve-DB6OCXIA.js → serve-S2ZLRZZR.js} +29 -29
  183. package/chunks/{server-LDY4YVU4.js → server-5ECMV4TM.js} +679 -1413
  184. package/chunks/{session-D6OG5SKX.js → session-ILSONWG4.js} +66 -93
  185. package/chunks/{settings-L52ZV5LO.js → settings-BOE7WWSA.js} +28 -28
  186. package/chunks/{shell-IU27OY3Q.js → shell-VW664JIZ.js} +24 -24
  187. package/chunks/{skill-BSOJT7LE.js → skill-COHV6625.js} +12 -12
  188. package/chunks/{spawnChannel-HQAM25DD.js → spawnChannel-5UUR5XOZ.js} +26 -26
  189. package/chunks/{src-7ZBIMTJZ.js → src-XPKFZ3RN.js} +25 -43
  190. package/chunks/{standalone-update-77457VVK.js → standalone-update-IOOJ2NZQ.js} +26 -26
  191. package/chunks/{startInteractiveUI-S7WC6EZG.js → startInteractiveUI-3NGJGXXS.js} +1733 -2194
  192. package/chunks/{syntheticOutput-ULOVVLY4.js → syntheticOutput-LELY6HAI.js} +3 -3
  193. package/chunks/{task-create-V2DCDSET.js → task-create-QY3BIMNM.js} +7 -7
  194. package/chunks/{task-list-DPL5ZN55.js → task-list-D2U47WBJ.js} +5 -5
  195. package/chunks/{task-stop-CPEQWOT6.js → task-stop-N6E5IYLH.js} +2 -2
  196. package/chunks/{task-update-ZR45M5Q7.js → task-update-HJCQILLB.js} +7 -7
  197. package/chunks/{team-create-CO7HSUON.js → team-create-UPLVZQFX.js} +24 -24
  198. package/chunks/{team-delete-HIWXCWJU.js → team-delete-RCWYDRF4.js} +5 -5
  199. package/chunks/{team-plan-approval-QDZF5YZY.js → team-plan-approval-F5F432RO.js} +24 -24
  200. package/chunks/{theme-manager-UTUT3I4P.js → theme-manager-JJE4BJ67.js} +25 -25
  201. package/chunks/todoWrite-FKCGATPJ.js +531 -0
  202. package/chunks/{tool-search-2UUORA35.js → tool-search-LRXI4JLZ.js} +11 -11
  203. package/chunks/{total-session-admission-NTWG6G3F.js → total-session-admission-I4DHN6UP.js} +30 -30
  204. package/chunks/{trustedFolders-YF37ZCN5.js → trustedFolders-SEH7LNX2.js} +25 -25
  205. package/chunks/{update-relaunch-QFNHPMZZ.js → update-relaunch-T6ZKBUA6.js} +5 -5
  206. package/chunks/{updateCheck-B6O42VMD.js → updateCheck-FWLXZPRO.js} +26 -26
  207. package/chunks/{validateNonInterActiveAuth-SCIWJ4CX.js → validateNonInterActiveAuth-X6K2VWYT.js} +59 -59
  208. package/chunks/{version-7DA6LAI3.js → version-LIFSOGSE.js} +1 -1
  209. package/chunks/{web-fetch-B62SJXM2.js → web-fetch-CFCWTCAP.js} +5 -5
  210. package/chunks/{workflow-Q5WG4THP.js → workflow-NX2DFWGD.js} +25 -25
  211. package/chunks/{workspace-providers-status-WWLAGWQW.js → workspace-providers-status-VYD6M2NE.js} +32 -32
  212. package/chunks/{workspace-registration-store-BVYQVY2H.js → workspace-registration-store-2Y6PWOEL.js} +1 -1
  213. package/chunks/{workspace-registry-OD7ACADD.js → workspace-registry-PKBDBWCA.js} +30 -30
  214. package/chunks/{workspace-service-4LYJWS63.js → workspace-service-HHORUHTS.js} +35 -35
  215. package/chunks/{workspace-skills-status-P2AQLZZS.js → workspace-skills-status-O5Q26LIY.js} +30 -30
  216. package/chunks/{write-file-TEPGXNM3.js → write-file-NVAEZ3J2.js} +25 -58
  217. package/chunks/{zh-E34DZ2S3.js → zh-PAUNIMHQ.js} +3 -6
  218. package/chunks/{zh-TW-PEI2ZWUR.js → zh-TW-GNEUIUFF.js} +3 -6
  219. package/cli.js +11 -11
  220. package/locales/ca.js +2 -2
  221. package/locales/de.js +2 -2
  222. package/locales/en.js +5 -9
  223. package/locales/fr.js +2 -2
  224. package/locales/ja.js +2 -2
  225. package/locales/pt.js +2 -2
  226. package/locales/ru.js +2 -2
  227. package/locales/zh-TW.js +3 -8
  228. package/locales/zh.js +3 -8
  229. package/package.json +3 -3
  230. package/web-shell/assets/{arc-Dh-N5oEG.js → arc-H74fE8UR.js} +1 -1
  231. package/web-shell/assets/{architectureDiagram-3BPJPVTR-DBOQgtfF.js → architectureDiagram-3BPJPVTR-DN3kEq-I.js} +1 -1
  232. package/web-shell/assets/{blockDiagram-GPEHLZMM-Dyxbuyju.js → blockDiagram-GPEHLZMM-BrqbsFUF.js} +1 -1
  233. package/web-shell/assets/{c4Diagram-AAUBKEIU-DCJR5HPT.js → c4Diagram-AAUBKEIU-ClFhU1P-.js} +1 -1
  234. package/web-shell/assets/channel-NFC5ADAa.js +1 -0
  235. package/web-shell/assets/{chunk-2J33WTMH-BkMUcy3O.js → chunk-2J33WTMH-jCIcG0_M.js} +1 -1
  236. package/web-shell/assets/{chunk-4BX2VUAB-BSm4pLQk.js → chunk-4BX2VUAB-DSkGe62-.js} +1 -1
  237. package/web-shell/assets/{chunk-55IACEB6-CuRr-XgW.js → chunk-55IACEB6-BxBHOGTd.js} +1 -1
  238. package/web-shell/assets/{chunk-727SXJPM-CLv7-w3t.js → chunk-727SXJPM-v_DS7dH7.js} +1 -1
  239. package/web-shell/assets/{chunk-AQP2D5EJ-Cz_n3-JW.js → chunk-AQP2D5EJ-1RzEKRPq.js} +1 -1
  240. package/web-shell/assets/{chunk-FMBD7UC4-CFT_62Hq.js → chunk-FMBD7UC4-DyrSbLOX.js} +1 -1
  241. package/web-shell/assets/{chunk-ND2GUHAM-DWz6DOZ6.js → chunk-ND2GUHAM-BCmdsZiy.js} +1 -1
  242. package/web-shell/assets/{chunk-QZHKN3VN-C-mRhUzw.js → chunk-QZHKN3VN-CphHGW2D.js} +1 -1
  243. package/web-shell/assets/classDiagram-4FO5ZUOK-DHgwjz3X.js +1 -0
  244. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DHgwjz3X.js +1 -0
  245. package/web-shell/assets/{cose-bilkent-S5V4N54A-BqCZS3i1.js → cose-bilkent-S5V4N54A-D5kRC7Fi.js} +1 -1
  246. package/web-shell/assets/{dagre-BM42HDAG-BGasdP8i.js → dagre-BM42HDAG-DIiyJJ0U.js} +1 -1
  247. package/web-shell/assets/{diagram-2AECGRRQ-BSyLDkMy.js → diagram-2AECGRRQ-BOcuB8xU.js} +1 -1
  248. package/web-shell/assets/{diagram-5GNKFQAL-CM-ZJxWC.js → diagram-5GNKFQAL-CMgiZ4d3.js} +1 -1
  249. package/web-shell/assets/{diagram-KO2AKTUF-wJdzt_C5.js → diagram-KO2AKTUF-Ctx8pfN0.js} +1 -1
  250. package/web-shell/assets/{diagram-LMA3HP47-DiH2fhpL.js → diagram-LMA3HP47-BT5REAWC.js} +1 -1
  251. package/web-shell/assets/{diagram-OG6HWLK6-BZ9z1ZBl.js → diagram-OG6HWLK6-CJkUqXcp.js} +1 -1
  252. package/web-shell/assets/{erDiagram-TEJ5UH35-BsyWDziR.js → erDiagram-TEJ5UH35-DyvNNX6v.js} +1 -1
  253. package/web-shell/assets/{flowDiagram-I6XJVG4X-CzdkxIrq.js → flowDiagram-I6XJVG4X-VBf8_My8.js} +1 -1
  254. package/web-shell/assets/{ganttDiagram-6RSMTGT7-javIv2r2.js → ganttDiagram-6RSMTGT7-CviJnR7B.js} +1 -1
  255. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CjHstylC.js → gitGraphDiagram-PVQCEYII-BY66_Oze.js} +1 -1
  256. package/web-shell/assets/index-8xIBbHV3.js +1143 -0
  257. package/web-shell/assets/index-DLyhlZZO.css +5 -0
  258. package/web-shell/assets/{index-BnJGxpah.js → index-DhYuvi3j.js} +1 -1
  259. package/web-shell/assets/{infoDiagram-5YYISTIA-yXuQsomo.js → infoDiagram-5YYISTIA-D2jaewWZ.js} +1 -1
  260. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-a85JhE6F.js → ishikawaDiagram-YF4QCWOH-BpnNTyi5.js} +1 -1
  261. package/web-shell/assets/{journeyDiagram-JHISSGLW-Dak_4BVj.js → journeyDiagram-JHISSGLW-CA55GNZF.js} +1 -1
  262. package/web-shell/assets/{kanban-definition-UN3LZRKU-COA-LuCV.js → kanban-definition-UN3LZRKU-DyiSl_Ts.js} +1 -1
  263. package/web-shell/assets/{linear-DNAAAQWq.js → linear-B-sN3dkV.js} +1 -1
  264. package/web-shell/assets/{mermaid.core-7Ff3aIUD.js → mermaid.core-xf9SXDdb.js} +5 -5
  265. package/web-shell/assets/{mindmap-definition-RKZ34NQL-_rCOIODU.js → mindmap-definition-RKZ34NQL-DXhr2kRk.js} +1 -1
  266. package/web-shell/assets/{pieDiagram-4H26LBE5-C9QCQ8EW.js → pieDiagram-4H26LBE5-DUXpbfGQ.js} +1 -1
  267. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CsaE4FA8.js → quadrantDiagram-W4KKPZXB-NeDQYeWw.js} +1 -1
  268. package/web-shell/assets/{requirementDiagram-4Y6WPE33-tV78naTg.js → requirementDiagram-4Y6WPE33-BSbFRL1A.js} +1 -1
  269. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Dk3Rw7BZ.js → sankeyDiagram-5OEKKPKP-gg27cAaN.js} +1 -1
  270. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-BGsAWcMX.js → sequenceDiagram-3UESZ5HK-Bi_1TSs4.js} +1 -1
  271. package/web-shell/assets/{stateDiagram-AJRCARHV-zSxdtdoB.js → stateDiagram-AJRCARHV-CboCCRaf.js} +1 -1
  272. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CXRqms6P.js +1 -0
  273. package/web-shell/assets/{timeline-definition-PNZ67QCA-j0BQh9Go.js → timeline-definition-PNZ67QCA-DrGpF_jn.js} +1 -1
  274. package/web-shell/assets/{vennDiagram-CIIHVFJN-CRaUFFIu.js → vennDiagram-CIIHVFJN-DCaJU67x.js} +1 -1
  275. package/web-shell/assets/{wardley-L42UT6IY-D7Py_ofm.js → wardley-L42UT6IY-p0QcW1aP.js} +1 -1
  276. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BrDIAZcp.js → wardleyDiagram-YWT4CUSO-DiEVxj1W.js} +1 -1
  277. package/web-shell/assets/{xychartDiagram-2RQKCTM6-Cecdw-w2.js → xychartDiagram-2RQKCTM6-iQB8nSlA.js} +1 -1
  278. package/web-shell/index.html +2 -2
  279. package/chunks/chunk-QFEY6OXH.js +0 -45
  280. package/chunks/exitPlanMode-LUBAWMZQ.js +0 -390
  281. package/chunks/nonInteractiveCli-OUGWLHNV.js +0 -129
  282. package/chunks/todoWrite-HK6B3RHJ.js +0 -358
  283. package/web-shell/assets/channel-DY0fkcKT.js +0 -1
  284. package/web-shell/assets/classDiagram-4FO5ZUOK-DBvJ6PZo.js +0 -1
  285. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DBvJ6PZo.js +0 -1
  286. package/web-shell/assets/index-DhXB9nTa.js +0 -1161
  287. package/web-shell/assets/index-vYHgZ7bL.css +0 -5
  288. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-vLEEtDpO.js +0 -1
@@ -4,14 +4,14 @@ import {
4
4
  resolveModelConfig,
5
5
  resolveProviderProtocol,
6
6
  stripRuntimeSnapshotPrefix
7
- } from "./chunk-3YJZ6WNY.js";
7
+ } from "./chunk-NJOFRXTM.js";
8
8
  import {
9
9
  external_exports
10
10
  } from "./chunk-H6XPXXMH.js";
11
11
  import {
12
12
  AuthType,
13
13
  MODEL_GENERATION_CONFIG_FIELDS
14
- } from "./chunk-66IT3EY2.js";
14
+ } from "./chunk-MQOVXZAF.js";
15
15
  import {
16
16
  REASONING_EFFORT_TIERS,
17
17
  normalizeReasoningEffort
@@ -25,95 +25,10 @@ import {
25
25
 
26
26
  // packages/cli/src/utils/acpModelUtils.ts
27
27
  init_esbuild_shims();
28
- import { createHash } from "node:crypto";
29
- var ACP_ROUTE_ID_PREFIX = "qwen-route:v1:";
30
- function getRouteEndpointIdentity(baseUrl) {
31
- if (!baseUrl) return null;
32
- try {
33
- const url = new URL(baseUrl);
34
- url.username = "";
35
- url.password = "";
36
- url.search = "";
37
- url.hash = "";
38
- return url.href;
39
- } catch {
40
- return sanitizeProviderBaseUrl(baseUrl).split(/[?#]/, 1)[0] ?? null;
41
- }
42
- }
43
- __name(getRouteEndpointIdentity, "getRouteEndpointIdentity");
44
28
  function formatAcpModelId(modelId, authType) {
45
29
  return `${modelId}(${authType})`;
46
30
  }
47
31
  __name(formatAcpModelId, "formatAcpModelId");
48
- function buildAcpModelOptions(models) {
49
- const candidates = models.filter((model) => model.fastOnly !== true && model.voiceOnly !== true).map((model) => {
50
- const effectiveModelId = model.isRuntimeModel && model.runtimeSnapshotId ? model.runtimeSnapshotId : model.id;
51
- return {
52
- model,
53
- effectiveModelId,
54
- legacyModelId: formatAcpModelId(effectiveModelId, model.authType)
55
- };
56
- });
57
- const counts = /* @__PURE__ */ new Map();
58
- for (const candidate of candidates) {
59
- counts.set(
60
- candidate.legacyModelId,
61
- (counts.get(candidate.legacyModelId) ?? 0) + 1
62
- );
63
- }
64
- const discriminators = /* @__PURE__ */ new Set();
65
- return candidates.map(({ model, effectiveModelId, legacyModelId }) => {
66
- const discriminator = [
67
- legacyModelId,
68
- model.label,
69
- model.envKey ?? null,
70
- model.registryBaseUrl === void 0,
71
- getRouteEndpointIdentity(model.registryBaseUrl ?? model.baseUrl)
72
- ];
73
- const discriminatorKey = JSON.stringify(discriminator);
74
- if (counts.get(legacyModelId) !== 1 && discriminators.has(discriminatorKey)) {
75
- throw new Error(
76
- `ACP model routes for "${legacyModelId}" need distinct names, envKey values, or public endpoints.`
77
- );
78
- }
79
- discriminators.add(discriminatorKey);
80
- return {
81
- model,
82
- effectiveModelId,
83
- modelId: counts.get(legacyModelId) === 1 ? legacyModelId : `${ACP_ROUTE_ID_PREFIX}${createHash("sha256").update(discriminatorKey).digest("base64url").slice(0, 16)}`
84
- };
85
- });
86
- }
87
- __name(buildAcpModelOptions, "buildAcpModelOptions");
88
- function resolveAcpModelOption(input, models) {
89
- const matched = buildAcpModelOptions(models).find(
90
- (option) => option.modelId === input.trim()
91
- );
92
- if (!matched) return null;
93
- return {
94
- modelId: matched.effectiveModelId,
95
- authType: matched.model.authType,
96
- ...matched.model.registryBaseUrl !== void 0 ? { baseUrl: matched.model.registryBaseUrl } : {},
97
- ...!matched.model.isRuntimeModel ? { registryBaseUrl: matched.model.registryBaseUrl ?? null } : {},
98
- isRuntime: matched.model.isRuntimeModel === true
99
- };
100
- }
101
- __name(resolveAcpModelOption, "resolveAcpModelOption");
102
- function getCurrentAcpModelId(options, modelId, authType, registryBaseUrl) {
103
- if (!modelId || !authType) return modelId;
104
- const matching = options.filter(
105
- (option) => option.effectiveModelId === modelId && option.model.authType === authType
106
- );
107
- if (matching[0]?.model.isRuntimeModel) return matching[0].modelId;
108
- if (registryBaseUrl !== void 0) {
109
- const exact = matching.find(
110
- (option) => (option.model.registryBaseUrl ?? null) === registryBaseUrl
111
- );
112
- return exact?.modelId ?? modelId;
113
- }
114
- return matching.length === 1 ? matching[0].modelId : formatAcpModelId(modelId, authType);
115
- }
116
- __name(getCurrentAcpModelId, "getCurrentAcpModelId");
117
32
  function sanitizeProviderBaseUrl(baseUrl) {
118
33
  const scheme = baseUrl.match(/^[A-Za-z][A-Za-z\d+.-]*:\/\//);
119
34
  if (!scheme) {
@@ -427,7 +342,6 @@ function resolveCliGenerationConfig(inputs) {
427
342
  apiKey: resolved.config.apiKey || "",
428
343
  baseUrl: resolved.config.baseUrl || "",
429
344
  generationConfig,
430
- ...modelProvider ? { registryBaseUrl: modelProvider.baseUrl ?? null } : {},
431
345
  sources: resolved.sources,
432
346
  warnings: [
433
347
  ...resolved.warnings,
@@ -444,10 +358,7 @@ function resolveCliGenerationConfig(inputs) {
444
358
  __name(resolveCliGenerationConfig, "resolveCliGenerationConfig");
445
359
 
446
360
  export {
447
- ACP_ROUTE_ID_PREFIX,
448
- buildAcpModelOptions,
449
- resolveAcpModelOption,
450
- getCurrentAcpModelId,
361
+ formatAcpModelId,
451
362
  sanitizeProviderBaseUrl,
452
363
  parseAcpBaseModelId,
453
364
  parseAcpModelOption,
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  isTlsVerificationDisabled
5
- } from "./chunk-4CHDYDG3.js";
5
+ } from "./chunk-LQIDP6K5.js";
6
6
  import {
7
7
  getErrorMessage,
8
8
  isNodeError
9
- } from "./chunk-UE5TZ55T.js";
9
+ } from "./chunk-7NFB7LBQ.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -771,8 +771,7 @@ var DaemonChannelBridge = class extends EventEmitter2 {
771
771
  workspaceCwd: cwd || this.options.cwd,
772
772
  modelServiceId: this.options.modelServiceId,
773
773
  sessionScope: this.options.sessionScope ?? "thread",
774
- ...options?.approvalMode ? { approvalMode: options.approvalMode } : {},
775
- ...options?.sourceId ? { sourceId: options.sourceId } : {}
774
+ ...options?.approvalMode ? { approvalMode: options.approvalMode } : {}
776
775
  });
777
776
  if (lifecycleGeneration !== this.lifecycleGeneration) {
778
777
  await this.rejectStaleSession(session);
@@ -2001,7 +2000,7 @@ var SessionRouter = class {
2001
2000
  async createAndStoreSession(key, input, operation) {
2002
2001
  const loadWindow = this.beginSessionLoad();
2003
2002
  try {
2004
- const sessionId = await this.createLiveSession(input.cwd, loadWindow, key, this.sessionOptions(input.channelName), operation, input.channelName);
2003
+ const sessionId = await this.createLiveSession(input.cwd, loadWindow, key, this.sessionOptions(input.channelName), operation);
2005
2004
  try {
2006
2005
  this.assertOperationCurrent(operation);
2007
2006
  } catch (error) {
@@ -2057,7 +2056,7 @@ var SessionRouter = class {
2057
2056
  } catch (loadError) {
2058
2057
  this.assertOperationCurrent(operation);
2059
2058
  try {
2060
- const replacement = await this.createLiveSession(input.cwd, loadWindow, key, this.sessionOptions(input.channelName), operation, input.channelName);
2059
+ const replacement = await this.createLiveSession(input.cwd, loadWindow, key, this.sessionOptions(input.channelName), operation);
2061
2060
  try {
2062
2061
  this.assertOperationCurrent(operation);
2063
2062
  } catch (error) {
@@ -2423,11 +2422,11 @@ var SessionRouter = class {
2423
2422
  }
2424
2423
  }
2425
2424
  }
2426
- async createLiveSession(cwd, loadWindow, routingKey, options, operation, sourceId) {
2425
+ async createLiveSession(cwd, loadWindow, routingKey, options, operation) {
2427
2426
  const maxAttempts = 2;
2428
2427
  let lastDeadSessionId;
2429
2428
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
2430
- const sessionId = await this.bridge.newSession(cwd, { ...options, sourceId }, operation);
2429
+ const sessionId = await this.bridge.newSession(cwd, options, operation);
2431
2430
  try {
2432
2431
  this.assertOperationCurrent(operation);
2433
2432
  } catch (error) {
@@ -2919,29 +2918,11 @@ var CLEAR_CONFIRM_PATTERNS = [
2919
2918
  /^确认清除记忆$/u,
2920
2919
  /^confirm clear memory$/iu
2921
2920
  ];
2922
- var UPDATE_CONFIRM_PATTERNS = [
2923
- /^确认更新记忆$/u,
2924
- /^confirm memory update$/iu
2925
- ];
2926
- var REMOVE_CONFIRM_PATTERNS = [
2927
- /^确认删除记忆$/u,
2928
- /^confirm memory removal$/iu
2929
- ];
2930
2921
  function parseChannelMemoryIntent(text) {
2931
2922
  const trimmed = text.replace(PROMPT_UNSAFE_INVISIBLES, "").trim();
2932
2923
  if (!trimmed || trimmed.startsWith("/")) {
2933
2924
  return null;
2934
2925
  }
2935
- for (const pattern of UPDATE_CONFIRM_PATTERNS) {
2936
- if (pattern.test(trimmed)) {
2937
- return { kind: "update_confirm" };
2938
- }
2939
- }
2940
- for (const pattern of REMOVE_CONFIRM_PATTERNS) {
2941
- if (pattern.test(trimmed)) {
2942
- return { kind: "remove_confirm" };
2943
- }
2944
- }
2945
2926
  for (const pattern of CLEAR_CONFIRM_PATTERNS) {
2946
2927
  if (pattern.test(trimmed)) {
2947
2928
  return { kind: "clear_confirm" };
@@ -2988,7 +2969,7 @@ function parseChannelMemoryIntent(text) {
2988
2969
  const match = trimmed.match(pattern);
2989
2970
  const remembered = match?.[1]?.replace(PROMPT_UNSAFE_INVISIBLES, "").trim();
2990
2971
  if (remembered) {
2991
- return { kind: "remember", texts: [remembered] };
2972
+ return { kind: "remember", text: remembered };
2992
2973
  }
2993
2974
  }
2994
2975
  return null;
@@ -3083,8 +3064,7 @@ var ChannelBase = class {
3083
3064
  * so a cleared session can't be resurrected by an already-queued prompt.
3084
3065
  */
3085
3066
  sessionGenerations = /* @__PURE__ */ new Map();
3086
- pendingChannelMemoryMutations = /* @__PURE__ */ new Map();
3087
- pendingChannelMemoryMutationDeliveries = /* @__PURE__ */ new Map();
3067
+ pendingClears = /* @__PURE__ */ new Map();
3088
3068
  /** Per-session active prompt tracking for dispatch modes. */
3089
3069
  activePrompts = /* @__PURE__ */ new Map();
3090
3070
  /** Per-session message buffer for collect mode. */
@@ -4757,71 +4737,8 @@ ${requestList}`);
4757
4737
  return;
4758
4738
  }
4759
4739
  if (intent.kind === "clear_request") {
4760
- await this.deliverPendingChannelMemoryMutation(envelope, { kind: "clear" }, 'This clears channel memory for this chat. Say "\u786E\u8BA4\u6E05\u7A7A\u8BB0\u5FC6" or "confirm clear memory" to proceed.');
4761
- return;
4762
- }
4763
- if (intent.kind === "update_confirm" || intent.kind === "remove_confirm") {
4764
- const pending = intent.kind === "update_confirm" ? this.takePendingChannelMemoryMutation(envelope, "update") : this.takePendingChannelMemoryMutation(envelope, "remove");
4765
- if (!pending) {
4766
- await this.sendMessage(envelope.chatId, intent.kind === "update_confirm" ? "No pending channel memory update. Start a new update request first." : "No pending channel memory removal. Start a new removal request first.");
4767
- return;
4768
- }
4769
- const channelMemory2 = await this.getChannelMemory(envelope);
4770
- if (!channelMemory2)
4771
- return;
4772
- const isUpdate = pending.kind === "update";
4773
- let changed;
4774
- try {
4775
- if (isUpdate) {
4776
- ({ changed } = await channelMemory2.updateChannelMemoryEntry(this.channelMemoryTarget(envelope), {
4777
- id: pending.id,
4778
- text: pending.proposedText,
4779
- expectedText: pending.expectedText
4780
- }));
4781
- } else {
4782
- ({ changed } = await channelMemory2.removeChannelMemoryEntries(this.channelMemoryTarget(envelope), {
4783
- ids: [pending.id],
4784
- expectedTextById: { [pending.id]: pending.expectedText }
4785
- }));
4786
- }
4787
- } catch (error) {
4788
- const message = this.channelMemoryErrorMessage(error);
4789
- this.logChannelMemoryError(isUpdate ? "update" : "remove", envelope, message);
4790
- await this.sendMessage(envelope.chatId, message === "Channel memory entry changed" ? "That channel memory entry changed since it was selected. View channel memory and start the operation again." : `Failed to ${isUpdate ? "update" : "remove"} channel memory: ${this.channelMemoryUserErrorMessage()}`);
4791
- return;
4792
- }
4793
- if (!changed) {
4794
- await this.sendMessage(envelope.chatId, `No channel memory entry ${pending.id}.`);
4795
- return;
4796
- }
4797
- this.invalidateSessionContext(envelope);
4798
- await this.sendMessage(envelope.chatId, `Channel memory ${pending.id} ${isUpdate ? "updated" : "removed"}.`);
4799
- return;
4800
- }
4801
- if (intent.kind === "natural_update") {
4802
- await this.deliverPendingChannelMemoryMutation(envelope, {
4803
- kind: "update",
4804
- id: intent.id,
4805
- expectedText: intent.expectedText,
4806
- proposedText: intent.text
4807
- }, [
4808
- `Update channel memory ${intent.id}?`,
4809
- `Before: ${sanitizePromptText(intent.expectedText).trim()}`,
4810
- `After: ${sanitizePromptText(intent.text).trim()}`,
4811
- 'Say "\u786E\u8BA4\u66F4\u65B0\u8BB0\u5FC6" or "confirm memory update" within 60 seconds.'
4812
- ].join("\n"));
4813
- return;
4814
- }
4815
- if (intent.kind === "natural_remove") {
4816
- await this.deliverPendingChannelMemoryMutation(envelope, {
4817
- kind: "remove",
4818
- id: intent.id,
4819
- expectedText: intent.expectedText
4820
- }, [
4821
- `Remove channel memory ${intent.id}?`,
4822
- sanitizePromptText(intent.expectedText).trim(),
4823
- 'Say "\u786E\u8BA4\u5220\u9664\u8BB0\u5FC6" or "confirm memory removal" within 60 seconds.'
4824
- ].join("\n"));
4740
+ this.setPendingClear(this.clearPendingKey(envelope));
4741
+ await this.sendMessage(envelope.chatId, 'This clears channel memory for this chat. Say "\u786E\u8BA4\u6E05\u7A7A\u8BB0\u5FC6" or "confirm clear memory" to proceed.');
4825
4742
  return;
4826
4743
  }
4827
4744
  const channelMemory = await this.getChannelMemory(envelope);
@@ -4831,7 +4748,7 @@ ${requestList}`);
4831
4748
  if (intent.kind === "remember") {
4832
4749
  let result;
4833
4750
  try {
4834
- result = await channelMemory.addChannelMemoryEntries(this.channelMemoryTarget(envelope), intent.texts, envelope.senderId);
4751
+ result = await channelMemory.addChannelMemoryEntries(this.channelMemoryTarget(envelope), [intent.text], envelope.senderId);
4835
4752
  } catch (error) {
4836
4753
  const message = this.channelMemoryErrorMessage(error);
4837
4754
  this.logChannelMemoryError("save", envelope, message);
@@ -4843,7 +4760,7 @@ ${requestList}`);
4843
4760
  }
4844
4761
  if (result.added.length > 0) {
4845
4762
  const ids = result.added.map((entry) => entry.id);
4846
- await this.sendMessage(envelope.chatId, result.duplicateIds.length > 0 ? `Channel memory saved: ${ids.join(", ")}. Skipped duplicates: ${result.duplicateIds.join(", ")}.` : ids.length === 1 ? `Channel memory ${ids[0]} saved.` : `Channel memory saved: ${ids.join(", ")}.`);
4763
+ await this.sendMessage(envelope.chatId, ids.length === 1 ? `Channel memory ${ids[0]} saved.` : `Channel memory saved: ${ids.join(", ")}.`);
4847
4764
  } else if (result.duplicateIds.length > 0) {
4848
4765
  await this.sendMessage(envelope.chatId, `Channel memory already contains ${result.duplicateIds.join(", ")}.`);
4849
4766
  } else {
@@ -4881,15 +4798,22 @@ ${sanitizePromptText(entry.text).trim()}` : `No channel memory entry ${intent.id
4881
4798
  await this.sendMessage(envelope.chatId, [`Channel memory (page ${intent.page}/${totalPages}):`, ...lines].join("\n"));
4882
4799
  return;
4883
4800
  }
4884
- if (intent.kind === "update" || intent.kind === "remove") {
4801
+ if (intent.kind === "update" || intent.kind === "remove" || intent.kind === "natural_update" || intent.kind === "natural_remove") {
4885
4802
  let changed;
4886
- const isUpdate = intent.kind === "update";
4803
+ const isUpdate = intent.kind === "update" || intent.kind === "natural_update";
4887
4804
  const id = intent.id;
4888
4805
  try {
4889
4806
  if (isUpdate) {
4890
- ({ changed } = await channelMemory.updateChannelMemoryEntry(this.channelMemoryTarget(envelope), { id: intent.id, text: intent.text }));
4807
+ ({ changed } = await channelMemory.updateChannelMemoryEntry(this.channelMemoryTarget(envelope), intent.kind === "natural_update" ? {
4808
+ id: intent.id,
4809
+ text: intent.text,
4810
+ expectedText: intent.expectedText
4811
+ } : { id: intent.id, text: intent.text }));
4891
4812
  } else {
4892
- ({ changed } = await channelMemory.removeChannelMemoryEntries(this.channelMemoryTarget(envelope), { ids: [intent.id] }));
4813
+ ({ changed } = await channelMemory.removeChannelMemoryEntries(this.channelMemoryTarget(envelope), intent.kind === "natural_remove" ? {
4814
+ ids: [intent.id],
4815
+ expectedTextById: { [intent.id]: intent.expectedText }
4816
+ } : { ids: [intent.id] }));
4893
4817
  }
4894
4818
  } catch (error) {
4895
4819
  const message = this.channelMemoryErrorMessage(error);
@@ -4906,8 +4830,10 @@ ${sanitizePromptText(entry.text).trim()}` : `No channel memory entry ${intent.id
4906
4830
  return;
4907
4831
  }
4908
4832
  if (intent.kind === "clear_confirm") {
4909
- const pending = this.takePendingChannelMemoryMutation(envelope, "clear");
4910
- if (!pending) {
4833
+ const pendingKey = this.clearPendingKey(envelope);
4834
+ const expiresAt = this.pendingClears.get(pendingKey);
4835
+ this.pendingClears.delete(pendingKey);
4836
+ if (expiresAt === void 0 || expiresAt < Date.now()) {
4911
4837
  await this.sendMessage(envelope.chatId, 'No pending clear request. Say "\u6E05\u7A7A\u8BB0\u5FC6" first.');
4912
4838
  return;
4913
4839
  }
@@ -4933,61 +4859,17 @@ ${sanitizePromptText(entry.text).trim()}` : `No channel memory entry ${intent.id
4933
4859
  const normalized = text.replace(PROMPT_UNSAFE_INVISIBLES, "").trim();
4934
4860
  return this.channelMemory !== void 0 && this.memoryIntentClassifier !== void 0 && !normalized.startsWith("/") && CHANNEL_MEMORY_CLASSIFIER_TRIGGER_RE.test(normalized);
4935
4861
  }
4936
- channelMemoryPendingKey(envelope) {
4937
- return JSON.stringify([
4938
- this.name,
4939
- envelope.chatId,
4940
- envelope.threadId ?? null,
4941
- envelope.senderId ?? null
4942
- ]);
4862
+ clearPendingKey(envelope) {
4863
+ return `${this.name}:${envelope.chatId}:${envelope.threadId ?? ""}:${envelope.senderId ?? ""}`;
4943
4864
  }
4944
- async deliverPendingChannelMemoryMutation(envelope, mutation, message) {
4865
+ setPendingClear(key) {
4945
4866
  const now = Date.now();
4946
- for (const [pendingKey, pending] of this.pendingChannelMemoryMutations) {
4947
- if (pending.expiresAt < now) {
4948
- this.pendingChannelMemoryMutations.delete(pendingKey);
4867
+ for (const [pendingKey, expiresAt] of this.pendingClears) {
4868
+ if (expiresAt < now) {
4869
+ this.pendingClears.delete(pendingKey);
4949
4870
  }
4950
4871
  }
4951
- this.deletePendingChannelMemoryMutation(envelope);
4952
- const key = this.channelMemoryPendingKey(envelope);
4953
- this.pendingChannelMemoryMutationDeliveries.set(key, mutation);
4954
- try {
4955
- await this.sendMessage(envelope.chatId, message);
4956
- } catch (error) {
4957
- if (this.pendingChannelMemoryMutationDeliveries.get(key) === mutation) {
4958
- this.pendingChannelMemoryMutationDeliveries.delete(key);
4959
- }
4960
- throw error;
4961
- }
4962
- if (this.pendingChannelMemoryMutationDeliveries.get(key) !== mutation) {
4963
- return;
4964
- }
4965
- this.pendingChannelMemoryMutationDeliveries.delete(key);
4966
- this.pendingChannelMemoryMutations.set(key, {
4967
- ...mutation,
4968
- expiresAt: Date.now() + 6e4
4969
- });
4970
- }
4971
- takePendingChannelMemoryMutation(envelope, kind) {
4972
- const key = this.channelMemoryPendingKey(envelope);
4973
- const pending = this.pendingChannelMemoryMutations.get(key);
4974
- if (!pending) {
4975
- return void 0;
4976
- }
4977
- if (pending.expiresAt < Date.now()) {
4978
- this.pendingChannelMemoryMutations.delete(key);
4979
- return void 0;
4980
- }
4981
- if (pending.kind !== kind) {
4982
- return void 0;
4983
- }
4984
- this.pendingChannelMemoryMutations.delete(key);
4985
- return pending;
4986
- }
4987
- deletePendingChannelMemoryMutation(envelope) {
4988
- const key = this.channelMemoryPendingKey(envelope);
4989
- this.pendingChannelMemoryMutations.delete(key);
4990
- this.pendingChannelMemoryMutationDeliveries.delete(key);
4872
+ this.pendingClears.set(key, now + 6e4);
4991
4873
  }
4992
4874
  async classifyChannelMemoryIntent(envelope) {
4993
4875
  if (!this.memoryIntentClassifier || !this.channelMemory) {
@@ -5008,89 +4890,64 @@ ${sanitizePromptText(entry.text).trim()}` : `No channel memory entry ${intent.id
5008
4890
  `);
5009
4891
  return null;
5010
4892
  }
5011
- try {
5012
- if (typeof classified !== "object" || classified === null)
5013
- return null;
5014
- const result = classified;
5015
- const confidence = result.confidence;
5016
- if (typeof confidence !== "number" || !Number.isFinite(confidence) || confidence < 0 || confidence > 1 || confidence < CHANNEL_MEMORY_CLASSIFIER_MIN_CONFIDENCE) {
5017
- return null;
5018
- }
5019
- const intent = result.intent;
5020
- if (intent === "remember") {
5021
- const hasMemory = Object.prototype.hasOwnProperty.call(result, "memory");
5022
- const hasMemories = Object.prototype.hasOwnProperty.call(result, "memories");
5023
- if (hasMemory === hasMemories)
5024
- return null;
5025
- let texts = [];
5026
- if (hasMemory) {
5027
- const memory2 = result.memory;
5028
- texts = typeof memory2 === "string" ? [memory2.trim()] : [];
5029
- } else {
5030
- const memories = result.memories;
5031
- if (Array.isArray(memories)) {
5032
- const snapshot = Array.from(memories);
5033
- if (snapshot.every((memory2) => typeof memory2 === "string")) {
5034
- texts = snapshot.map((memory2) => memory2.trim());
5035
- }
5036
- }
5037
- }
5038
- return texts.length >= 1 && texts.length <= 10 && texts.every((text2) => text2.length > 0) ? { kind: "remember", texts } : null;
5039
- }
5040
- if (intent === "clear_all")
5041
- return { kind: "clear_request" };
5042
- if (intent !== "list" && intent !== "inspect" && intent !== "update" && intent !== "remove") {
5043
- return null;
5044
- }
5045
- const targetIds = result.targetIds;
5046
- if (intent === "list" && targetIds === void 0) {
4893
+ const confidence = classified && typeof classified === "object" ? classified.confidence : void 0;
4894
+ if (typeof confidence !== "number" || !Number.isFinite(confidence) || confidence < 0 || confidence > 1 || confidence < CHANNEL_MEMORY_CLASSIFIER_MIN_CONFIDENCE) {
4895
+ return null;
4896
+ }
4897
+ const result = classified;
4898
+ const targetIds = result.targetIds;
4899
+ const entryById = new Map(entries.map((entry2) => [entry2.id, entry2]));
4900
+ const resolvedEntries = targetIds === void 0 ? void 0 : Array.isArray(targetIds) && targetIds.every((id) => typeof id === "string" && entryById.has(id)) && new Set(targetIds).size === targetIds.length ? this.entriesForChannelMemoryIds(entries, targetIds) : null;
4901
+ if (result.intent === "remember") {
4902
+ const memory = typeof result.memory === "string" ? result.memory.trim() : "";
4903
+ return memory ? { kind: "remember", text: memory } : null;
4904
+ }
4905
+ if (result.intent === "list") {
4906
+ if (resolvedEntries === void 0)
5047
4907
  return { kind: "list", page: 1 };
5048
- }
5049
- if (!Array.isArray(targetIds))
5050
- return null;
5051
- const targetIdSnapshot = Array.from(targetIds);
5052
- const entryById = new Map(entries.map((entry2) => [entry2.id, entry2]));
5053
- if (!targetIdSnapshot.every((id) => typeof id === "string" && entryById.has(id)) || new Set(targetIdSnapshot).size !== targetIdSnapshot.length) {
4908
+ if (resolvedEntries === null)
5054
4909
  return null;
5055
- }
5056
- const resolvedEntries = this.entriesForChannelMemoryIds(entries, targetIdSnapshot);
5057
- if (intent === "list") {
5058
- return resolvedEntries.length === 0 ? { kind: "no_match" } : {
5059
- kind: "list_matches",
5060
- ids: resolvedEntries.map((entry2) => entry2.id)
5061
- };
5062
- }
5063
- if (resolvedEntries.length === 0)
5064
- return { kind: "no_match" };
5065
- if (resolvedEntries.length > 1) {
5066
- return {
5067
- kind: "ambiguous",
5068
- ids: resolvedEntries.map((entry2) => entry2.id)
5069
- };
5070
- }
5071
- const entry = resolvedEntries[0];
5072
- if (intent === "inspect")
5073
- return { kind: "inspect", id: entry.id };
5074
- if (intent === "remove") {
5075
- return {
5076
- kind: "natural_remove",
5077
- id: entry.id,
5078
- expectedText: entry.text
5079
- };
5080
- }
5081
- const memory = result.memory;
5082
- const text = typeof memory === "string" ? memory.trim() : "";
5083
- return text ? {
4910
+ return resolvedEntries.length === 0 ? { kind: "no_match" } : {
4911
+ kind: "list_matches",
4912
+ ids: resolvedEntries.map((entry2) => entry2.id)
4913
+ };
4914
+ }
4915
+ if (result.intent === "clear_all") {
4916
+ return { kind: "clear_request" };
4917
+ }
4918
+ if (result.intent !== "inspect" && result.intent !== "update" && result.intent !== "remove") {
4919
+ return null;
4920
+ }
4921
+ if (resolvedEntries === null || resolvedEntries === void 0)
4922
+ return null;
4923
+ if (resolvedEntries.length === 0)
4924
+ return { kind: "no_match" };
4925
+ if (resolvedEntries.length > 1) {
4926
+ return {
4927
+ kind: "ambiguous",
4928
+ ids: resolvedEntries.map((entry2) => entry2.id)
4929
+ };
4930
+ }
4931
+ const entry = resolvedEntries[0];
4932
+ if (result.intent === "inspect")
4933
+ return { kind: "inspect", id: entry.id };
4934
+ if (result.intent === "remove") {
4935
+ return {
4936
+ kind: "natural_remove",
4937
+ id: entry.id,
4938
+ expectedText: entry.text
4939
+ };
4940
+ }
4941
+ const text = typeof result.memory === "string" ? result.memory.trim() : "";
4942
+ if (text) {
4943
+ return {
5084
4944
  kind: "natural_update",
5085
4945
  id: entry.id,
5086
4946
  text,
5087
4947
  expectedText: entry.text
5088
- } : null;
5089
- } catch (error) {
5090
- process.stderr.write(`[${this.name}] channel memory intent validation failed: ${sanitizeLogText(this.channelMemoryErrorMessage(error), 200)}
5091
- `);
5092
- return null;
4948
+ };
5093
4949
  }
4950
+ return null;
5094
4951
  }
5095
4952
  channelMemoryErrorMessage(error) {
5096
4953
  return error instanceof Error ? error.message : String(error);
@@ -5420,9 +5277,6 @@ ${promptText}`;
5420
5277
  throw new Error("processInbound called without a successful preflightInbound check.");
5421
5278
  }
5422
5279
  let memoryIntent = parseChannelMemoryIntent(envelope.text);
5423
- if (memoryIntent?.kind === "update" || memoryIntent?.kind === "remove") {
5424
- this.deletePendingChannelMemoryMutation(envelope);
5425
- }
5426
5280
  if (!memoryIntent && this.shouldClassifyChannelMemoryIntent(envelope.text)) {
5427
5281
  memoryIntent = await this.classifyChannelMemoryIntent(envelope);
5428
5282
  }
@@ -4,56 +4,56 @@ import {
4
4
  Client,
5
5
  So,
6
6
  StdioClientTransport
7
- } from "./chunk-3YJZ6WNY.js";
7
+ } from "./chunk-NJOFRXTM.js";
8
8
  import "./chunk-T4TZQJ7W.js";
9
9
  import "./chunk-H6XPXXMH.js";
10
10
  import "./chunk-5M6IDOMF.js";
11
- import "./chunk-LKR7QQ63.js";
12
- import "./chunk-4XCVGEEX.js";
13
- import "./chunk-XSPFQQRE.js";
14
- import "./chunk-4RPARQ5D.js";
11
+ import "./chunk-A2HWMJVO.js";
12
+ import "./chunk-RCEEXIOO.js";
13
+ import "./chunk-KKRTYONM.js";
14
+ import "./chunk-TV6K2FB4.js";
15
15
  import "./chunk-E2UVIFI2.js";
16
16
  import "./chunk-XU457J4V.js";
17
17
  import "./chunk-VDDGDZMA.js";
18
- import "./chunk-J2MKYJKZ.js";
18
+ import "./chunk-SPJQO2CE.js";
19
19
  import "./chunk-SZRN75WQ.js";
20
20
  import "./chunk-HTO4JFDZ.js";
21
21
  import "./chunk-CPBF7KYF.js";
22
- import "./chunk-VNN3JNYT.js";
22
+ import "./chunk-F333XEAU.js";
23
23
  import "./chunk-6AM5D4ME.js";
24
- import "./chunk-OSSDHJDU.js";
25
- import "./chunk-SGPFJMRP.js";
26
- import "./chunk-335ECZTA.js";
27
- import "./chunk-JCJPZMJV.js";
24
+ import "./chunk-2Z5UX4KI.js";
25
+ import "./chunk-ARKANCNX.js";
26
+ import "./chunk-L5U3ELZX.js";
27
+ import "./chunk-TYLOFD2U.js";
28
28
  import {
29
29
  safeJsonStringify
30
- } from "./chunk-66IT3EY2.js";
30
+ } from "./chunk-MQOVXZAF.js";
31
31
  import "./chunk-4WKAA4KS.js";
32
32
  import "./chunk-CR3C7WXL.js";
33
- import "./chunk-U2LNTX56.js";
33
+ import "./chunk-RTV5TUYB.js";
34
34
  import "./chunk-VGC4I5JJ.js";
35
- import "./chunk-FUTHTZVV.js";
36
- import "./chunk-4CA4WUMS.js";
37
- import "./chunk-WEPXQKGP.js";
35
+ import "./chunk-FBU7WRZI.js";
36
+ import "./chunk-Y66VOBRP.js";
37
+ import "./chunk-WTNZ6DXB.js";
38
38
  import {
39
39
  BaseDeclarativeTool,
40
40
  BaseToolInvocation
41
- } from "./chunk-ANRANWVE.js";
42
- import "./chunk-G274ETR6.js";
43
- import "./chunk-Z2LBNX3R.js";
41
+ } from "./chunk-JGUT3LWZ.js";
42
+ import "./chunk-OKAIGAYW.js";
43
+ import "./chunk-ZPAHLFZU.js";
44
44
  import "./chunk-JESCGQM3.js";
45
- import "./chunk-VAJS2E2D.js";
45
+ import "./chunk-WIEO4CWB.js";
46
46
  import "./chunk-XVNQMZ2I.js";
47
47
  import "./chunk-FEOZBUMT.js";
48
- import "./chunk-CMVFTMRD.js";
48
+ import "./chunk-VRR65QYW.js";
49
49
  import "./chunk-A4UCTEB5.js";
50
50
  import "./chunk-XWRJCPHC.js";
51
- import "./chunk-TYQMGACW.js";
51
+ import "./chunk-4LD5APFL.js";
52
52
  import "./chunk-TYAMGABM.js";
53
53
  import "./chunk-FCMNKVXT.js";
54
54
  import "./chunk-DJ2GSRLV.js";
55
- import "./chunk-4CHDYDG3.js";
56
- import "./chunk-UE5TZ55T.js";
55
+ import "./chunk-LQIDP6K5.js";
56
+ import "./chunk-7NFB7LBQ.js";
57
57
  import "./chunk-75DOP5OR.js";
58
58
  import "./chunk-DMTGGOSA.js";
59
59
  import "./chunk-YQ3U5MUC.js";