@qwen-code/qwen-code 0.19.12 → 0.20.0-nightly.20260721.cda0e0348

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 (280) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +1 -1
  2. package/bundled/qc-helper/docs/features/commands.md +54 -0
  3. package/bundled/qc-helper/docs/integration-github-action.md +1 -1
  4. package/bundled/qc-helper/docs/qwen-serve.md +44 -6
  5. package/bundled/review/DESIGN.md +2 -2
  6. package/bundled/review/SKILL.md +13 -9
  7. package/chunks/{MaxSizedBox-QOXLJGAF.js → MaxSizedBox-EE76OHAP.js} +30 -27
  8. package/chunks/{StandaloneSessionPicker-FLV6CGYJ.js → StandaloneSessionPicker-WZH4PC3K.js} +50 -45
  9. package/chunks/{acpAgent-OB2CTF3P.js → acpAgent-2ATF4LMP.js} +437 -156
  10. package/chunks/{agent-CKSI7BTR.js → agent-KTOOFWMV.js} +22 -22
  11. package/chunks/{agent-headless-U36LIYTU.js → agent-headless-WVJCQ27D.js} +22 -22
  12. package/chunks/{anthropicContentGenerator-ZZRGFEES.js → anthropicContentGenerator-W4JLNYWQ.js} +6 -5
  13. package/chunks/{artifact-tool-PHO5XEGZ.js → artifact-tool-WBCAMD3O.js} +2 -2
  14. package/chunks/{askUserQuestion-CEPBT47X.js → askUserQuestion-6DZC4UV5.js} +2 -2
  15. package/chunks/{bridge-AIKTINJG.js → bridge-T4TLAZSJ.js} +25 -25
  16. package/chunks/build-SSCNEHZZ.js +62 -0
  17. package/chunks/{ca-2SL2BXTK.js → ca-ISKASTR5.js} +606 -200
  18. package/chunks/{channel-worker-group-NEUVTPB2.js → channel-worker-group-QZV2SP5U.js} +4 -4
  19. package/chunks/{channel-worker-manager-7CQVOVWV.js → channel-worker-manager-3GMAU45H.js} +4 -4
  20. package/chunks/{channel-worker-supervisor-3BU2KNCZ.js → channel-worker-supervisor-QCXSXCRY.js} +3 -3
  21. package/chunks/{chunk-6ETOSWAO.js → chunk-246TW4IX.js} +3 -3
  22. package/chunks/{chunk-2CCDMJM7.js → chunk-25Y6JSH2.js} +3 -3
  23. package/chunks/{chunk-XSEWNUMZ.js → chunk-2CWOJ2FA.js} +8 -8
  24. package/chunks/{chunk-UZC5VPOJ.js → chunk-2GFRA3MN.js} +3 -3
  25. package/chunks/chunk-2GOPPEHK.js +442 -0
  26. package/chunks/{chunk-MRE77ST5.js → chunk-2ITGJJE2.js} +69 -2216
  27. package/chunks/{chunk-BABX5XRO.js → chunk-2LI23QA6.js} +1 -1
  28. package/chunks/{chunk-EFAXBOQO.js → chunk-32F7BZSK.js} +7 -7
  29. package/chunks/chunk-43T5WDQ7.js +127 -0
  30. package/chunks/{chunk-DJ4VHAFJ.js → chunk-4CWPMWCD.js} +7 -3
  31. package/chunks/{chunk-GMUPIMHF.js → chunk-4RA7PWIY.js} +3 -3
  32. package/chunks/{chunk-6IITZE7O.js → chunk-5JX5EWR5.js} +7 -7
  33. package/chunks/{chunk-OBSLEYCD.js → chunk-5PZ6R37W.js} +29 -2
  34. package/chunks/{chunk-HTHUX2T5.js → chunk-5QWWOFGG.js} +0 -1
  35. package/chunks/{chunk-3DJY4IFO.js → chunk-5SCI6E3E.js} +1 -1
  36. package/chunks/{chunk-GSPWDTYY.js → chunk-5WG2K5RH.js} +53 -16
  37. package/chunks/{chunk-NPMVLWYL.js → chunk-5YVZ2XLV.js} +6 -6
  38. package/chunks/{chunk-TKASNYDS.js → chunk-6DHWO5ZF.js} +3 -3
  39. package/chunks/{chunk-4CHDYDG3.js → chunk-6EFTQYW7.js} +1 -1
  40. package/chunks/{chunk-RKUMFUFM.js → chunk-6MC5ASQK.js} +4 -4
  41. package/chunks/{chunk-HZ4M2UQD.js → chunk-6RVJRVQR.js} +1 -1
  42. package/chunks/{chunk-W6CQPLWM.js → chunk-6ZBPS62S.js} +1 -1
  43. package/chunks/chunk-7KGXAXF7.js +114 -0
  44. package/chunks/{chunk-PK7COE5O.js → chunk-ABIL4ZQU.js} +1 -1
  45. package/chunks/{chunk-OEHCAWUA.js → chunk-ACW3VNUE.js} +2 -2
  46. package/chunks/{chunk-APOFULHK.js → chunk-AWVS63WA.js} +7 -6
  47. package/chunks/{chunk-KGWA7XYL.js → chunk-AY3CSB6F.js} +6 -226
  48. package/chunks/{chunk-XAAEDML2.js → chunk-AYCDXHZB.js} +1 -1
  49. package/chunks/{chunk-42VIHAYT.js → chunk-B452RETY.js} +1 -1
  50. package/chunks/{chunk-VAJS2E2D.js → chunk-BDBMYST4.js} +1 -1
  51. package/chunks/{chunk-5N7M4XYN.js → chunk-BUKOHGBE.js} +5 -5
  52. package/chunks/{chunk-F2RR4HO2.js → chunk-BVLROR2T.js} +1 -1
  53. package/chunks/{chunk-WIYV7CSF.js → chunk-BWK3FX3K.js} +3 -3
  54. package/chunks/{chunk-UE5TZ55T.js → chunk-C27BYUX6.js} +29 -2
  55. package/chunks/{chunk-KRMARA3A.js → chunk-CG2HPAVD.js} +29 -13
  56. package/chunks/{chunk-UOA2IHRI.js → chunk-CPCVCKKF.js} +1 -1
  57. package/chunks/{chunk-HD6EGS5K.js → chunk-CUJX3F4X.js} +31 -6
  58. package/chunks/{chunk-4RPARQ5D.js → chunk-D2VIDMVM.js} +2 -2
  59. package/chunks/{chunk-PUKUUASO.js → chunk-DMRO4GU2.js} +1 -1
  60. package/chunks/{chunk-64GC5EMF.js → chunk-DZZIOIVF.js} +1 -1
  61. package/chunks/{chunk-FUSMC3SZ.js → chunk-E5QFCC4X.js} +13 -8
  62. package/chunks/{chunk-LKR7QQ63.js → chunk-EAUYY7SS.js} +3 -3
  63. package/chunks/{chunk-NE6HHLL3.js → chunk-EDMGFJ3E.js} +2 -2
  64. package/chunks/{chunk-J2MKYJKZ.js → chunk-EIAK6Q2B.js} +2 -2
  65. package/chunks/{chunk-WEPXQKGP.js → chunk-EZVDJFZ7.js} +1 -1
  66. package/chunks/{chunk-NALRQ3SG.js → chunk-FCUUJKZF.js} +394 -128
  67. package/chunks/{chunk-4XCVGEEX.js → chunk-FSL5W5TI.js} +3 -3
  68. package/chunks/{chunk-CHPQFLW6.js → chunk-FYA3Y5JR.js} +5 -5
  69. package/chunks/{chunk-V4PCIS25.js → chunk-FZVSFBNW.js} +69 -7
  70. package/chunks/{chunk-4MPYGENG.js → chunk-G45NOBV7.js} +6 -6
  71. package/chunks/{chunk-OSSDHJDU.js → chunk-G45X5TRN.js} +1 -1
  72. package/chunks/{chunk-3B6PSWHE.js → chunk-GH7OEOYU.js} +4 -4
  73. package/chunks/{chunk-KANTXY7B.js → chunk-GKY2OJ7R.js} +2 -2
  74. package/chunks/chunk-GMGDLUC7.js +37 -0
  75. package/chunks/{chunk-2476XGOU.js → chunk-GPILFVPY.js} +1 -1
  76. package/chunks/{chunk-EISVEV45.js → chunk-H24SOJIQ.js} +2 -2
  77. package/chunks/{chunk-J6NT5YTN.js → chunk-H2XVO6NE.js} +1 -289
  78. package/chunks/{chunk-QIFTJDBY.js → chunk-IM2A6YO3.js} +1 -1
  79. package/chunks/{chunk-R3EDIMYZ.js → chunk-IYZENXFW.js} +1 -1
  80. package/chunks/{chunk-LPHGXXZX.js → chunk-JD3MKVKL.js} +1 -1
  81. package/chunks/{chunk-NUHSLBJZ.js → chunk-JNWZQ27S.js} +15 -9
  82. package/chunks/{chunk-ETN2G32U.js → chunk-JPRLCXAO.js} +4 -4
  83. package/chunks/{chunk-WHQNBBWW.js → chunk-JQMBPGOU.js} +2 -2
  84. package/chunks/{chunk-5QSVANRT.js → chunk-JR6UJ24K.js} +2 -2
  85. package/chunks/{chunk-VLHQMOZK.js → chunk-JRW46GQX.js} +3 -3
  86. package/chunks/{chunk-DUR7BZYK.js → chunk-KRI4VCHX.js} +53 -28
  87. package/chunks/{chunk-PR5XQ73G.js → chunk-KTNIZG2C.js} +2 -2
  88. package/chunks/{chunk-QSG4ZFG4.js → chunk-KTUQMDEP.js} +1 -1
  89. package/chunks/{chunk-HVGJWOR6.js → chunk-L4YSPHR4.js} +2 -2
  90. package/chunks/{chunk-BEZPRKD3.js → chunk-LC5CAVMS.js} +160 -2
  91. package/chunks/{chunk-67Q33DQY.js → chunk-LLDGOZMJ.js} +4 -4
  92. package/chunks/{chunk-UCTCDLDS.js → chunk-LWQ4IAOJ.js} +136 -4
  93. package/chunks/{chunk-GEHSF7MS.js → chunk-NEEB7UEN.js} +2545 -1974
  94. package/chunks/{chunk-GCY7QTCE.js → chunk-NO6XTCYT.js} +1822 -424
  95. package/chunks/{chunk-JCJPZMJV.js → chunk-OOCI5VVU.js} +1 -1
  96. package/chunks/{chunk-XSPFQQRE.js → chunk-OONJNQ42.js} +3 -3
  97. package/chunks/{chunk-ANRANWVE.js → chunk-OP4MOGXF.js} +1 -1
  98. package/chunks/{chunk-GW7BONBU.js → chunk-OV2KB55J.js} +5 -5
  99. package/chunks/{chunk-CPU6I5YV.js → chunk-P64HXIC5.js} +115 -32
  100. package/chunks/{chunk-SGPFJMRP.js → chunk-PBATSWUQ.js} +1 -1
  101. package/chunks/{chunk-GXFYV7MP.js → chunk-PFKNXN67.js} +1106 -592
  102. package/chunks/{chunk-KNGZ5EYL.js → chunk-PYNCSQSI.js} +198 -120
  103. package/chunks/{chunk-I7RRHHYG.js → chunk-QKTHJXCS.js} +1 -1
  104. package/chunks/chunk-QKYTTBYW.js +624 -0
  105. package/chunks/{chunk-76BFY7AF.js → chunk-QTERJVPZ.js} +1 -6
  106. package/chunks/{chunk-W4UN42YP.js → chunk-R3VZNHRX.js} +85 -21
  107. package/chunks/chunk-R5N7NF5D.js +1187 -0
  108. package/chunks/{chunk-ZSDFNE6Y.js → chunk-RF34V75B.js} +3 -3
  109. package/chunks/{chunk-HCCR43AY.js → chunk-RFIAR4YL.js} +1 -1
  110. package/chunks/chunk-RS7MT2QG.js +305 -0
  111. package/chunks/{chunk-BKNPMEN6.js → chunk-RVLZCXEE.js} +162 -17
  112. package/chunks/chunk-SV5PQVQE.js +71 -0
  113. package/chunks/{chunk-3ESL7JXA.js → chunk-U4VGYZN7.js} +3 -3
  114. package/chunks/{chunk-4CA4WUMS.js → chunk-UEY4AYUL.js} +2 -2
  115. package/chunks/{chunk-ZGT623SG.js → chunk-USTF7LPI.js} +12 -12
  116. package/chunks/chunk-V7RNNPGC.js +44 -0
  117. package/chunks/{chunk-VEFR4XJQ.js → chunk-W3BKN3LO.js} +1 -1
  118. package/chunks/{chunk-4SJJT466.js → chunk-WQQDJE2P.js} +94 -177
  119. package/chunks/{chunk-KMJOMWHE.js → chunk-WRRF6TEQ.js} +1 -1
  120. package/chunks/{chunk-GLH2NTPB.js → chunk-XCHUDLER.js} +1 -1
  121. package/chunks/{chunk-7SX6WZNO.js → chunk-XVVH63JG.js} +3 -3
  122. package/chunks/{chunk-N47VAEAJ.js → chunk-XZOBDSDG.js} +2379 -1291
  123. package/chunks/chunk-YGIUIIIF.js +125 -0
  124. package/chunks/{chunk-335ECZTA.js → chunk-ZEOZL37W.js} +1 -1
  125. package/chunks/{computer-use-4PUGCUQK.js → computer-use-M6MGRJF2.js} +22 -22
  126. package/chunks/{config-utils-6PJUXHLI.js → config-utils-MOGE4EVB.js} +3 -3
  127. package/chunks/{contextCommand-C57KTWFV.js → contextCommand-HTRJJYNE.js} +25 -26
  128. package/chunks/{create-sub-session-5Q42XR6I.js → create-sub-session-MB35IHCR.js} +22 -22
  129. package/chunks/{create-sub-session-DIJOV6HV.js → create-sub-session-P26FE5GG.js} +2 -2
  130. package/chunks/{cron-create-X462ERYA.js → cron-create-JWFHBDRQ.js} +4 -4
  131. package/chunks/{cron-delete-SL5UJUM3.js → cron-delete-GDX4E26G.js} +4 -4
  132. package/chunks/{cron-list-3MD6SVXI.js → cron-list-USMAIWPT.js} +4 -4
  133. package/chunks/{daemon-ZW6LHOXT.js → daemon-KLPTQIE4.js} +287 -143
  134. package/chunks/{daemon-status-provider-YPV3UXHT.js → daemon-status-provider-67EKK6S3.js} +29 -29
  135. package/chunks/{dist-NUXRQHC5.js → dist-OAV7LJGJ.js} +1 -1
  136. package/chunks/{dist-XLE6ODMB.js → dist-OMW6WDEO.js} +1 -1
  137. package/chunks/{dist-J2H4KTLB.js → dist-PJLG2XYX.js} +1 -1
  138. package/chunks/{dist-IEQSDXS7.js → dist-UIFWIFRO.js} +2 -2
  139. package/chunks/{dist-IGZMVS5R.js → dist-VGJTZL4E.js} +33 -22
  140. package/chunks/{dist-3DQNQJ6H.js → dist-XBJVSWS2.js} +1 -1
  141. package/chunks/{earlyInputCapture-5VDWSYAM.js → earlyInputCapture-7QJX25AC.js} +23 -23
  142. package/chunks/{edit-GORZTX2U.js → edit-BTPQWGAA.js} +23 -23
  143. package/chunks/{enter-worktree-LJB2AW4L.js → enter-worktree-N3SEYKOO.js} +22 -22
  144. package/chunks/{enterPlanMode-LIIPP37T.js → enterPlanMode-TN2JV5MY.js} +28 -23
  145. package/chunks/{environment-HQ2UHJ35.js → environment-HP6RK262.js} +24 -24
  146. package/chunks/{errors-6JD5VMVQ.js → errors-VHGRDDOQ.js} +24 -24
  147. package/chunks/{exit-worktree-IEP2WHOV.js → exit-worktree-FI3SQY3U.js} +22 -22
  148. package/chunks/{exitPlanMode-U5Z6XBLO.js → exitPlanMode-NZWRVIIY.js} +22 -22
  149. package/chunks/{fast-path-HFKNMP23.js → fast-path-EGP7AXNR.js} +3 -2
  150. package/chunks/{gemini-C2SCJH3N.js → gemini-AN5YMD5O.js} +70 -68
  151. package/chunks/{geminiContentGenerator-ADZTXEKV.js → geminiContentGenerator-ABTMU4FE.js} +4 -4
  152. package/chunks/{glob-GOAPGD6G.js → glob-5YABOPJB.js} +22 -22
  153. package/chunks/{grep-HZLSTX7D.js → grep-U67FKUJT.js} +22 -22
  154. package/chunks/{handleAutoUpdate-UF74WGFE.js → handleAutoUpdate-OOKBP5VD.js} +27 -28
  155. package/chunks/{i18n-FMXIYUOC.js → i18n-GMQV324P.js} +23 -23
  156. package/chunks/{initializer-ERDBM3DU.js → initializer-NWALZGQ5.js} +28 -28
  157. package/chunks/{installationInfo-LROMXYLX.js → installationInfo-Y3M433E7.js} +25 -23
  158. package/chunks/{keychain-token-storage-K23CFKGN.js → keychain-token-storage-DWRJMNH3.js} +2 -2
  159. package/chunks/{list-6JPJROU5.js → list-CQDDWHTS.js} +30 -30
  160. package/chunks/{loadedSettingsAdapter-QCWYUBBF.js → loadedSettingsAdapter-I5KG37EI.js} +27 -27
  161. package/chunks/{loop-wakeup-6H7OENTB.js → loop-wakeup-5GLTUBHA.js} +5 -5
  162. package/chunks/{ls-APTSOOS5.js → ls-FHBY3Y7I.js} +4 -4
  163. package/chunks/{lsp-HPACPJAN.js → lsp-B6VMEW6Y.js} +2 -2
  164. package/chunks/{mcp-3P3KWYWO.js → mcp-24HHCBSP.js} +27 -27
  165. package/chunks/{monitor-LMYKCF6R.js → monitor-Z7NZNNRC.js} +22 -22
  166. package/chunks/nonInteractiveCli-GVF2XDJT.js +126 -0
  167. package/chunks/{notebook-edit-IBEOVZ6A.js → notebook-edit-GFOYAQAZ.js} +23 -23
  168. package/chunks/{openaiContentGenerator-42PZKET5.js → openaiContentGenerator-XAAYV6WR.js} +11 -11
  169. package/chunks/{pidfile-VTBDIGOH.js → pidfile-ILI37KRQ.js} +23 -23
  170. package/chunks/{processUtils-L7ZKOGDG.js → processUtils-LIPJMLVZ.js} +2 -2
  171. package/chunks/{qwenContentGenerator-VR2CNFGI.js → qwenContentGenerator-DLJ3KKGZ.js} +24 -24
  172. package/chunks/{qwenOAuth2-6LS2T3Q6.js → qwenOAuth2-J47FU5PW.js} +11 -11
  173. package/chunks/react-SG7JAQSZ.js +8 -0
  174. package/chunks/{read-file-VSKOE22I.js → read-file-LCQ2KNNP.js} +8 -8
  175. package/chunks/{read-mcp-resource-C6NT52T6.js → read-mcp-resource-AKCL7I43.js} +2 -2
  176. package/chunks/{record-artifact-ENCU7QCL.js → record-artifact-PEUB7727.js} +2 -2
  177. package/chunks/resumeHistoryUtils-PSCSAKA6.js +78 -0
  178. package/chunks/{ripGrep-5V5FLW2A.js → ripGrep-Y2XW4EFC.js} +22 -22
  179. package/chunks/{run-qwen-serve-LSOPP4R2.js → run-qwen-serve-DQ5ZIR36.js} +1459 -148
  180. package/chunks/{runtime-LT7R4CS5.js → runtime-6MQFF2A6.js} +33 -31
  181. package/chunks/{scheduler-YOWQ7KZP.js → scheduler-K4S7NY3G.js} +22 -22
  182. package/chunks/{send-message-5GZ4FX2V.js → send-message-3RHE7HSM.js} +3 -3
  183. package/chunks/{serve-VWLBXKGK.js → serve-JFAAPC5J.js} +27 -27
  184. package/chunks/{server-3RW3FYOH.js → server-QB6CHRZN.js} +866 -271
  185. package/chunks/{session-ZONXFOBQ.js → session-FKPVXAAB.js} +79 -163
  186. package/chunks/{settings-JC3VC53L.js → settings-CADELKSU.js} +26 -26
  187. package/chunks/{shell-2NGEMAVM.js → shell-EON6WVVH.js} +22 -22
  188. package/chunks/{skill-3U2T6H3E.js → skill-FKSYXJ5U.js} +10 -10
  189. package/chunks/{spawnChannel-QEAUPARQ.js → spawnChannel-VM5IHLJO.js} +24 -24
  190. package/chunks/{src-75ZPXO7B.js → src-Q4XB6SVD.js} +66 -22
  191. package/chunks/{standalone-update-UUJWJWYY.js → standalone-update-KGZHPBMA.js} +24 -24
  192. package/chunks/{startInteractiveUI-V7XISPQ6.js → startInteractiveUI-EYDJIIIZ.js} +5484 -2045
  193. package/chunks/{syntheticOutput-ULOVVLY4.js → syntheticOutput-FG5PQKIR.js} +3 -3
  194. package/chunks/{task-create-DUE2PMNI.js → task-create-HX32YXO7.js} +7 -7
  195. package/chunks/{task-list-WVPNX7BZ.js → task-list-QWSY4ZIU.js} +5 -5
  196. package/chunks/{task-stop-CPEQWOT6.js → task-stop-GWC6UWAL.js} +2 -2
  197. package/chunks/{task-update-HY2LNFFB.js → task-update-NCTAB73Q.js} +7 -7
  198. package/chunks/{team-create-R6AXDYPG.js → team-create-CYP3YKYT.js} +22 -22
  199. package/chunks/{team-delete-JJV6IUOA.js → team-delete-KK37HTOG.js} +5 -5
  200. package/chunks/{team-plan-approval-O2ZPPT64.js → team-plan-approval-5LXIFKNV.js} +22 -22
  201. package/chunks/{theme-manager-YIX2IC2D.js → theme-manager-QOUMDWMP.js} +23 -23
  202. package/chunks/{todoWrite-JHHIDOIV.js → todoWrite-ERCAMLFS.js} +4 -4
  203. package/chunks/{tool-search-5IE2VO7X.js → tool-search-Q27QHQU3.js} +9 -9
  204. package/chunks/{total-session-admission-K6APQYEF.js → total-session-admission-HWVCZ2WR.js} +25 -25
  205. package/chunks/{trustedFolders-GPSSPVBF.js → trustedFolders-C6664IQC.js} +23 -23
  206. package/chunks/{update-relaunch-4BVAPX6Y.js → update-relaunch-QC3E4FZW.js} +9 -9
  207. package/chunks/{updateCheck-AHTHWLAM.js → updateCheck-MVUKJMBX.js} +33 -26
  208. package/chunks/useAutoAcceptIndicator-J234IFIS.js +80 -0
  209. package/chunks/{validateNonInterActiveAuth-UKAPCWDM.js → validateNonInterActiveAuth-YPPEKX4N.js} +61 -63
  210. package/chunks/{version-EXGWKKQE.js → version-5IXFQ4PT.js} +1 -1
  211. package/chunks/{web-fetch-ZDNE6FF2.js → web-fetch-L62NQVKN.js} +10 -10
  212. package/chunks/{workflow-G7U6OQWS.js → workflow-6MHBBFQU.js} +23 -23
  213. package/chunks/{workspace-providers-status-W6CEA6YM.js → workspace-providers-status-ZTW2B5QU.js} +30 -30
  214. package/chunks/{workspace-registration-store-OGBMWCLC.js → workspace-registration-store-P6QHCSMU.js} +7 -1
  215. package/chunks/{workspace-registry-ZUWQM44P.js → workspace-registry-R54M5O3W.js} +25 -25
  216. package/chunks/{workspace-service-UXX5P7GU.js → workspace-service-WYLRGM4A.js} +32 -32
  217. package/chunks/{workspace-skills-status-635B5R7N.js → workspace-skills-status-NN5QFU3A.js} +28 -28
  218. package/chunks/{write-file-DR3HN7IH.js → write-file-EAT3CHUK.js} +23 -23
  219. package/cli.js +11 -11
  220. package/locales/ca.js +763 -201
  221. package/package.json +3 -3
  222. package/web-shell/assets/{arc-_dVIKMdB.js → arc-B0iTWRo2.js} +1 -1
  223. package/web-shell/assets/{architectureDiagram-3BPJPVTR-MuN3nKpL.js → architectureDiagram-3BPJPVTR-DSQP4-9D.js} +1 -1
  224. package/web-shell/assets/{blockDiagram-GPEHLZMM-BtmvJjzx.js → blockDiagram-GPEHLZMM-BNPVXVT3.js} +1 -1
  225. package/web-shell/assets/{c4Diagram-AAUBKEIU-Dvi58_BU.js → c4Diagram-AAUBKEIU-DEHfJFiD.js} +1 -1
  226. package/web-shell/assets/channel-tVz-qNSq.js +1 -0
  227. package/web-shell/assets/{chunk-2J33WTMH-YqxOVhS1.js → chunk-2J33WTMH-VZ0uL1p9.js} +1 -1
  228. package/web-shell/assets/{chunk-4BX2VUAB-DoBgbC9z.js → chunk-4BX2VUAB-D5TKmvwG.js} +1 -1
  229. package/web-shell/assets/{chunk-55IACEB6-3NEQrBAr.js → chunk-55IACEB6-BDW1Lcq-.js} +1 -1
  230. package/web-shell/assets/{chunk-727SXJPM-DrCZQxp0.js → chunk-727SXJPM-Cj4h85iM.js} +1 -1
  231. package/web-shell/assets/{chunk-AQP2D5EJ-m_g3zjgv.js → chunk-AQP2D5EJ-5LeqiOhZ.js} +1 -1
  232. package/web-shell/assets/{chunk-FMBD7UC4-D1_crABJ.js → chunk-FMBD7UC4-BaTgsco7.js} +1 -1
  233. package/web-shell/assets/{chunk-ND2GUHAM-BdhgVtBx.js → chunk-ND2GUHAM-t3uGlIUk.js} +1 -1
  234. package/web-shell/assets/{chunk-QZHKN3VN-BlmThhm-.js → chunk-QZHKN3VN-rOnNXL2Q.js} +1 -1
  235. package/web-shell/assets/classDiagram-4FO5ZUOK-CWuaBxYV.js +1 -0
  236. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CWuaBxYV.js +1 -0
  237. package/web-shell/assets/{cose-bilkent-S5V4N54A-Cbjm_00Z.js → cose-bilkent-S5V4N54A-CcqXykgA.js} +1 -1
  238. package/web-shell/assets/{dagre-BM42HDAG-C39QNVgC.js → dagre-BM42HDAG-Dkjrchoy.js} +1 -1
  239. package/web-shell/assets/{diagram-2AECGRRQ-DNXSAixC.js → diagram-2AECGRRQ-B6lcra9M.js} +1 -1
  240. package/web-shell/assets/{diagram-5GNKFQAL-BCbGUPEA.js → diagram-5GNKFQAL-bAIzq3PT.js} +1 -1
  241. package/web-shell/assets/{diagram-KO2AKTUF-1eujKSDC.js → diagram-KO2AKTUF-G9MAZDNW.js} +1 -1
  242. package/web-shell/assets/{diagram-LMA3HP47-DUMKXgql.js → diagram-LMA3HP47-DVLF1uWZ.js} +1 -1
  243. package/web-shell/assets/{diagram-OG6HWLK6-BFktU3_u.js → diagram-OG6HWLK6-Cf7y20Tc.js} +1 -1
  244. package/web-shell/assets/{erDiagram-TEJ5UH35-BvJC7DLk.js → erDiagram-TEJ5UH35-C7ETZB3o.js} +1 -1
  245. package/web-shell/assets/{flowDiagram-I6XJVG4X-Cgu3PlOt.js → flowDiagram-I6XJVG4X-Cl2xgL6J.js} +1 -1
  246. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DLNXN5Xh.js → ganttDiagram-6RSMTGT7-BgjbMs3q.js} +1 -1
  247. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BQFRDv6R.js → gitGraphDiagram-PVQCEYII-JVX34Omm.js} +1 -1
  248. package/web-shell/assets/index-48bIcdqF.js +1197 -0
  249. package/web-shell/assets/{index-CdC3pjP3.js → index-BG7Zc4f_.js} +1 -1
  250. package/web-shell/assets/index-BI-JAO07.css +5 -0
  251. package/web-shell/assets/{infoDiagram-5YYISTIA-DT2mOSvp.js → infoDiagram-5YYISTIA-3NYyMeZU.js} +1 -1
  252. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-9fy_K4bd.js → ishikawaDiagram-YF4QCWOH-C03VCu-U.js} +1 -1
  253. package/web-shell/assets/{journeyDiagram-JHISSGLW-CoGSEuhE.js → journeyDiagram-JHISSGLW-C9PuBRZW.js} +1 -1
  254. package/web-shell/assets/{kanban-definition-UN3LZRKU-BP9hHYIj.js → kanban-definition-UN3LZRKU-C3LvioWR.js} +1 -1
  255. package/web-shell/assets/{linear-uIroDsmp.js → linear-Du6Yw8N_.js} +1 -1
  256. package/web-shell/assets/{mermaid.core-BUwoStsA.js → mermaid.core-BXY5D2-X.js} +5 -5
  257. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DZB-FWim.js → mindmap-definition-RKZ34NQL-2UrHLaDp.js} +1 -1
  258. package/web-shell/assets/{pieDiagram-4H26LBE5-YPptloKl.js → pieDiagram-4H26LBE5-dC03ml45.js} +1 -1
  259. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-dgk3DSzm.js → quadrantDiagram-W4KKPZXB-CD6jARrp.js} +1 -1
  260. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BH2En2i9.js → requirementDiagram-4Y6WPE33-BrK8aXfv.js} +1 -1
  261. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BB98feeI.js → sankeyDiagram-5OEKKPKP-B5Vitki_.js} +1 -1
  262. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CunAIGh8.js → sequenceDiagram-3UESZ5HK-CBy2t6Bo.js} +1 -1
  263. package/web-shell/assets/{stateDiagram-AJRCARHV-DTJs_-I2.js → stateDiagram-AJRCARHV-Enrka6T2.js} +1 -1
  264. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DUtYfXpW.js +1 -0
  265. package/web-shell/assets/{timeline-definition-PNZ67QCA-Cd4AN7O0.js → timeline-definition-PNZ67QCA-CwFq78ss.js} +1 -1
  266. package/web-shell/assets/{vennDiagram-CIIHVFJN-xIG-rUU9.js → vennDiagram-CIIHVFJN-BkOidM0g.js} +1 -1
  267. package/web-shell/assets/{wardley-L42UT6IY-D1UyjIcG.js → wardley-L42UT6IY-D_j13hQW.js} +1 -1
  268. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BVM0Mb99.js → wardleyDiagram-YWT4CUSO-7EveB1w6.js} +1 -1
  269. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BX31JDSz.js → xychartDiagram-2RQKCTM6-DRkBhMXr.js} +1 -1
  270. package/web-shell/index.html +2 -2
  271. package/chunks/chunk-EDFD7VOX.js +0 -368
  272. package/chunks/chunk-GFYFLDEG.js +0 -709
  273. package/chunks/chunk-LUJQUNKY.js +0 -3288
  274. package/chunks/nonInteractiveCli-YURFHZV5.js +0 -129
  275. package/web-shell/assets/channel-Bi5TehaT.js +0 -1
  276. package/web-shell/assets/classDiagram-4FO5ZUOK-BKhhRdd1.js +0 -1
  277. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BKhhRdd1.js +0 -1
  278. package/web-shell/assets/index-C_ouplMQ.js +0 -1187
  279. package/web-shell/assets/index-XGDFJE-X.css +0 -5
  280. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DrfFMYta.js +0 -1
@@ -2,13 +2,13 @@
2
2
  "use strict";
3
3
  import {
4
4
  scanForSecrets
5
- } from "./chunk-GCY7QTCE.js";
5
+ } from "./chunk-NO6XTCYT.js";
6
6
  import {
7
7
  isTeamAutoMemPath
8
- } from "./chunk-LPHGXXZX.js";
8
+ } from "./chunk-JD3MKVKL.js";
9
9
  import {
10
10
  createDebugLogger
11
- } from "./chunk-UE5TZ55T.js";
11
+ } from "./chunk-C27BYUX6.js";
12
12
  import {
13
13
  init_esbuild_shims
14
14
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  Storage
5
- } from "./chunk-UE5TZ55T.js";
5
+ } from "./chunk-C27BYUX6.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -0,0 +1,305 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ stringWidth
5
+ } from "./chunk-H2XVO6NE.js";
6
+ import {
7
+ ansiRegex,
8
+ init_ansi_regex,
9
+ stripAnsi
10
+ } from "./chunk-T4TZQJ7W.js";
11
+ import {
12
+ init_esbuild_shims
13
+ } from "./chunk-5O2XNYP6.js";
14
+ import {
15
+ __name
16
+ } from "./chunk-J2S4EL5Y.js";
17
+
18
+ // packages/cli/src/ui/utils/textUtils.ts
19
+ init_esbuild_shims();
20
+ init_ansi_regex();
21
+ import { stripVTControlCharacters } from "node:util";
22
+ var getAsciiArtWidth = /* @__PURE__ */ __name((asciiArt) => {
23
+ if (!asciiArt) {
24
+ return 0;
25
+ }
26
+ const lines = asciiArt.split("\n");
27
+ return Math.max(...lines.map((line) => getCachedStringWidth(line)));
28
+ }, "getAsciiArtWidth");
29
+ var codePointsCache = /* @__PURE__ */ new Map();
30
+ var MAX_STRING_LENGTH_TO_CACHE = 1e3;
31
+ function toCodePoints(str) {
32
+ let isAscii = true;
33
+ for (let i = 0; i < str.length; i++) {
34
+ if (str.charCodeAt(i) > 127) {
35
+ isAscii = false;
36
+ break;
37
+ }
38
+ }
39
+ if (isAscii) {
40
+ return str.split("");
41
+ }
42
+ if (str.length <= MAX_STRING_LENGTH_TO_CACHE) {
43
+ const cached = codePointsCache.get(str);
44
+ if (cached) {
45
+ return cached;
46
+ }
47
+ }
48
+ const result = Array.from(str);
49
+ if (str.length <= MAX_STRING_LENGTH_TO_CACHE) {
50
+ codePointsCache.set(str, result);
51
+ }
52
+ return result;
53
+ }
54
+ __name(toCodePoints, "toCodePoints");
55
+ function cpLen(str) {
56
+ return toCodePoints(str).length;
57
+ }
58
+ __name(cpLen, "cpLen");
59
+ function cpSlice(str, start, end) {
60
+ const arr = toCodePoints(str).slice(start, end);
61
+ return arr.join("");
62
+ }
63
+ __name(cpSlice, "cpSlice");
64
+ function stripUnsafeCharacters(str) {
65
+ const strippedAnsi = stripAnsi(str);
66
+ const strippedVT = stripVTControlCharacters(strippedAnsi);
67
+ return toCodePoints(strippedVT).filter((char) => {
68
+ const code = char.codePointAt(0);
69
+ if (code === void 0) return false;
70
+ if (code === 9 || code === 10 || code === 13) return true;
71
+ if (code >= 0 && code <= 31) return false;
72
+ if (code >= 128 && code <= 159) return false;
73
+ return true;
74
+ }).join("");
75
+ }
76
+ __name(stripUnsafeCharacters, "stripUnsafeCharacters");
77
+ var stringWidthCache = /* @__PURE__ */ new Map();
78
+ var getCachedStringWidth = /* @__PURE__ */ __name((str) => {
79
+ if (/^[\x20-\x7E]*$/.test(str)) {
80
+ return str.length;
81
+ }
82
+ if (stringWidthCache.has(str)) {
83
+ return stringWidthCache.get(str);
84
+ }
85
+ const width = stringWidth(str);
86
+ stringWidthCache.set(str, width);
87
+ return width;
88
+ }, "getCachedStringWidth");
89
+ var graphemeSegmenter = new Intl.Segmenter(void 0, {
90
+ granularity: "grapheme"
91
+ });
92
+ function truncateToWidth(text, maxWidth) {
93
+ if (maxWidth <= 0) {
94
+ return "";
95
+ }
96
+ if (getCachedStringWidth(text) <= maxWidth) {
97
+ return text;
98
+ }
99
+ const ellipsis = "\u2026";
100
+ const budget = Math.max(0, maxWidth - getCachedStringWidth(ellipsis));
101
+ let width = 0;
102
+ let result = "";
103
+ for (const { segment } of graphemeSegmenter.segment(text)) {
104
+ const segmentWidth = getCachedStringWidth(segment);
105
+ if (width + segmentWidth > budget) {
106
+ break;
107
+ }
108
+ result += segment;
109
+ width += segmentWidth;
110
+ }
111
+ return `${result}${ellipsis}`;
112
+ }
113
+ __name(truncateToWidth, "truncateToWidth");
114
+ function wrapToVisualLines(text, width) {
115
+ if (width <= 0) {
116
+ return [""];
117
+ }
118
+ const visualLines = [];
119
+ for (const logicalLine of text.split("\n")) {
120
+ if (logicalLine === "") {
121
+ visualLines.push("");
122
+ continue;
123
+ }
124
+ let currentLine = "";
125
+ let currentWidth = 0;
126
+ for (const char of logicalLine) {
127
+ const charWidth = getCachedStringWidth(char);
128
+ if (currentWidth + charWidth > width && currentWidth > 0) {
129
+ visualLines.push(currentLine);
130
+ currentLine = "";
131
+ currentWidth = 0;
132
+ }
133
+ currentLine += char;
134
+ currentWidth += charWidth;
135
+ }
136
+ if (currentLine) {
137
+ visualLines.push(currentLine);
138
+ }
139
+ }
140
+ if (visualLines.length === 0) {
141
+ visualLines.push("");
142
+ }
143
+ return visualLines;
144
+ }
145
+ __name(wrapToVisualLines, "wrapToVisualLines");
146
+ var regex = ansiRegex();
147
+ var BARE_C0_CONTROL_CHARS_REGEX = /[\x00-\x08\x0b-\x1f\x7f-\x9f]/g;
148
+ var BIDI_OVERRIDE_CHARS_REGEX = /[\u200e\u200f\u202a-\u202e\u2066-\u2069]/g;
149
+ function sanitizeTerminalText(value) {
150
+ return escapeAnsiCtrlCodes(value).replace(BARE_C0_CONTROL_CHARS_REGEX, "").replace(BIDI_OVERRIDE_CHARS_REGEX, "");
151
+ }
152
+ __name(sanitizeTerminalText, "sanitizeTerminalText");
153
+ function escapeAnsiCtrlCodes(obj) {
154
+ if (typeof obj === "string") {
155
+ if (obj.search(regex) === -1) {
156
+ return obj;
157
+ }
158
+ regex.lastIndex = 0;
159
+ return obj.replace(
160
+ regex,
161
+ (match) => JSON.stringify(match).slice(1, -1)
162
+ );
163
+ }
164
+ if (obj === null || typeof obj !== "object") {
165
+ return obj;
166
+ }
167
+ if (Array.isArray(obj)) {
168
+ let newArr = null;
169
+ for (let i = 0; i < obj.length; i++) {
170
+ const value = obj[i];
171
+ const escapedValue = escapeAnsiCtrlCodes(value);
172
+ if (escapedValue !== value) {
173
+ if (newArr === null) {
174
+ newArr = [...obj];
175
+ }
176
+ newArr[i] = escapedValue;
177
+ }
178
+ }
179
+ return newArr !== null ? newArr : obj;
180
+ }
181
+ let newObj = null;
182
+ const keys = Object.keys(obj);
183
+ for (const key of keys) {
184
+ const value = obj[key];
185
+ const escapedValue = escapeAnsiCtrlCodes(value);
186
+ if (escapedValue !== value) {
187
+ if (newObj === null) {
188
+ newObj = { ...obj };
189
+ }
190
+ newObj[key] = escapedValue;
191
+ }
192
+ }
193
+ return newObj !== null ? newObj : obj;
194
+ }
195
+ __name(escapeAnsiCtrlCodes, "escapeAnsiCtrlCodes");
196
+ var SENSITIVE_PATTERNS = [
197
+ // API keys with common prefixes
198
+ {
199
+ pattern: /(sk-[a-zA-Z0-9]{20,})/g,
200
+ replacement: "sk-***REDACTED***"
201
+ },
202
+ {
203
+ pattern: /(api[_-]?key[_-]?[=:]\s*)[a-zA-Z0-9_-]{20,}/gi,
204
+ replacement: "$1***REDACTED***"
205
+ },
206
+ // Bearer tokens
207
+ {
208
+ pattern: /(Bearer\s+)[a-zA-Z0-9._-]+/gi,
209
+ replacement: "$1***REDACTED***"
210
+ },
211
+ // Generic tokens
212
+ {
213
+ pattern: /(token[_-]?[=:]\s*)[a-zA-Z0-9._-]{10,}/gi,
214
+ replacement: "$1***REDACTED***"
215
+ },
216
+ // Passwords in connection strings or assignments
217
+ {
218
+ pattern: /(password[_-]?[=:]\s*)[^\s]+/gi,
219
+ replacement: "$1***REDACTED***"
220
+ },
221
+ {
222
+ pattern: /(pwd[_-]?[=:]\s*)[^\s]+/gi,
223
+ replacement: "$1***REDACTED***"
224
+ },
225
+ // AWS keys
226
+ {
227
+ pattern: /(AKIA[A-Z0-9]{16})/g,
228
+ replacement: "***REDACTED***"
229
+ },
230
+ // Generic secret patterns
231
+ {
232
+ pattern: /(secret[_-]?[=:]\s*)[a-zA-Z0-9._-]{10,}/gi,
233
+ replacement: "$1***REDACTED***"
234
+ }
235
+ ];
236
+ function sanitizeSensitiveText(text, maxLength = 200) {
237
+ let result = text;
238
+ for (const { pattern, replacement } of SENSITIVE_PATTERNS) {
239
+ result = result.replace(pattern, replacement);
240
+ }
241
+ if (result.length > maxLength) {
242
+ if (maxLength <= 3) {
243
+ return result.slice(0, maxLength);
244
+ }
245
+ return result.slice(0, maxLength - 3) + "...";
246
+ }
247
+ return result;
248
+ }
249
+ __name(sanitizeSensitiveText, "sanitizeSensitiveText");
250
+ var FILENAME_CONTROL_CHARS_REGEX = /[\x00-\x1f\x7f-\x9f\u202a-\u202e\u2066-\u2069]/g;
251
+ var MULTILINE_CONTROL_CHARS_REGEX = /[\x00-\x08\x0b-\x1f\x7f-\x9f\u202a-\u202e\u2066-\u2069]/g;
252
+ function escapeControlChar(ch) {
253
+ switch (ch) {
254
+ case "\b":
255
+ return "\\b";
256
+ case " ":
257
+ return "\\t";
258
+ case "\n":
259
+ return "\\n";
260
+ case "\f":
261
+ return "\\f";
262
+ case "\r":
263
+ return "\\r";
264
+ default: {
265
+ const code = ch.charCodeAt(0);
266
+ return `\\u${code.toString(16).padStart(4, "0")}`;
267
+ }
268
+ }
269
+ }
270
+ __name(escapeControlChar, "escapeControlChar");
271
+ function sanitizeFilenameForDisplay(name) {
272
+ return escapeAnsiCtrlCodes(name).replace(
273
+ FILENAME_CONTROL_CHARS_REGEX,
274
+ escapeControlChar
275
+ );
276
+ }
277
+ __name(sanitizeFilenameForDisplay, "sanitizeFilenameForDisplay");
278
+ function sanitizeMultilineForDisplay(text) {
279
+ return escapeAnsiCtrlCodes(text).replace(
280
+ MULTILINE_CONTROL_CHARS_REGEX,
281
+ escapeControlChar
282
+ );
283
+ }
284
+ __name(sanitizeMultilineForDisplay, "sanitizeMultilineForDisplay");
285
+
286
+ export {
287
+ getAsciiArtWidth,
288
+ toCodePoints,
289
+ cpLen,
290
+ cpSlice,
291
+ stripUnsafeCharacters,
292
+ getCachedStringWidth,
293
+ truncateToWidth,
294
+ wrapToVisualLines,
295
+ sanitizeTerminalText,
296
+ escapeAnsiCtrlCodes,
297
+ sanitizeSensitiveText,
298
+ sanitizeFilenameForDisplay,
299
+ sanitizeMultilineForDisplay
300
+ };
301
+ /**
302
+ * @license
303
+ * Copyright 2025 Google LLC
304
+ * SPDX-License-Identifier: Apache-2.0
305
+ */
@@ -461,6 +461,12 @@ var AcpBridge = class extends EventEmitter {
461
461
  break;
462
462
  }
463
463
  const content = update["content"];
464
+ if (meta?.["qwenDiscreteMessage"] === true) {
465
+ if (meta["source"] === "background_notification_response" && meta["rewritten"] !== true && content?.type === "text" && content.text) {
466
+ this.emit("backgroundResponse", sessionId, content.text);
467
+ }
468
+ break;
469
+ }
464
470
  if (content?.type === "text" && content.text) {
465
471
  this.emit(meta?.["source"] === "slash_command" ? "slashCommandOutput" : "textChunk", sessionId, content.text);
466
472
  }
@@ -1080,6 +1086,12 @@ var DaemonChannelBridge = class extends EventEmitter2 {
1080
1086
  break;
1081
1087
  }
1082
1088
  const text = getTextContent(update["content"]);
1089
+ if (meta?.["qwenDiscreteMessage"] === true) {
1090
+ if (meta["source"] === "background_notification_response" && meta["rewritten"] !== true && text) {
1091
+ this.emit("backgroundResponse", sessionId, text);
1092
+ }
1093
+ break;
1094
+ }
1083
1095
  if (text) {
1084
1096
  this.emit(meta?.["source"] === "slash_command" ? "slashCommandOutput" : "textChunk", sessionId, text);
1085
1097
  }
@@ -3146,16 +3158,29 @@ function truncateEntryToRecallBudget(entry) {
3146
3158
  }
3147
3159
  __name(truncateEntryToRecallBudget, "truncateEntryToRecallBudget");
3148
3160
  function selectRelevantChannelMemory(message, entries) {
3161
+ return selectRelevantChannelMemoryFromIndex(message, createChannelMemoryRecallIndex(entries));
3162
+ }
3163
+ __name(selectRelevantChannelMemory, "selectRelevantChannelMemory");
3164
+ function createChannelMemoryRecallIndex(entries) {
3165
+ return {
3166
+ candidates: entries.map((entry, index) => {
3167
+ const normalized = normalize(entry.text);
3168
+ return {
3169
+ entry: { ...entry },
3170
+ index,
3171
+ entryTerms: terms(normalized),
3172
+ normalizedLength: Array.from(normalized).length
3173
+ };
3174
+ })
3175
+ };
3176
+ }
3177
+ __name(createChannelMemoryRecallIndex, "createChannelMemoryRecallIndex");
3178
+ function selectRelevantChannelMemoryFromIndex(message, recallIndex) {
3149
3179
  const messageTerms = terms(normalize(message));
3150
- const candidates = entries.map((entry, index) => {
3151
- const normalized = normalize(entry.text);
3152
- return {
3153
- entry,
3154
- index,
3155
- score: overlapSize(messageTerms, terms(normalized)),
3156
- normalizedLength: Array.from(normalized).length
3157
- };
3158
- });
3180
+ const candidates = recallIndex.candidates.map((candidate) => ({
3181
+ ...candidate,
3182
+ score: overlapSize(messageTerms, candidate.entryTerms)
3183
+ }));
3159
3184
  const positive = candidates.filter(({ score }) => score > 0).sort((left, right) => right.score - left.score || left.index - right.index);
3160
3185
  const fallback = candidates.filter(({ score, normalizedLength }) => score === 0 && normalizedLength <= CHANNEL_MEMORY_RECALL_FALLBACK_CODE_POINTS);
3161
3186
  const selected = [];
@@ -3176,10 +3201,11 @@ function selectRelevantChannelMemory(message, entries) {
3176
3201
  }
3177
3202
  return selected;
3178
3203
  }
3179
- __name(selectRelevantChannelMemory, "selectRelevantChannelMemory");
3204
+ __name(selectRelevantChannelMemoryFromIndex, "selectRelevantChannelMemoryFromIndex");
3180
3205
 
3181
3206
  // packages/channels/base/dist/ChannelBase.js
3182
3207
  var CLEAR_CANCEL_TIMEOUT_MS = 3e3;
3208
+ var CHANNEL_MEMORY_RECALL_CACHE_MAX_TARGETS = 128;
3183
3209
  var GROUP_HISTORY_CONTEXT_MARKER = "[Chat messages since your last reply - for context]";
3184
3210
  var CURRENT_MESSAGE_MARKER = "[Current message - respond to this]";
3185
3211
  var GROUP_HISTORY_ENTRY_TEXT_LIMIT = 1e3;
@@ -3253,6 +3279,7 @@ var ChannelBase = class {
3253
3279
  proxy;
3254
3280
  channelMemory;
3255
3281
  memoryIntentClassifier;
3282
+ channelMemoryRecallObserver;
3256
3283
  groupHistory;
3257
3284
  loopController;
3258
3285
  observedContacts;
@@ -3260,6 +3287,7 @@ var ChannelBase = class {
3260
3287
  instructedSessions = /* @__PURE__ */ new Set();
3261
3288
  unattendedMemorySessions = /* @__PURE__ */ new Set();
3262
3289
  channelMemoryReads = /* @__PURE__ */ new Map();
3290
+ channelMemoryRecallCache = /* @__PURE__ */ new Map();
3263
3291
  commands = /* @__PURE__ */ new Map();
3264
3292
  /** Per-session promise chain to serialize prompt + send (followup mode). */
3265
3293
  sessionQueues = /* @__PURE__ */ new Map();
@@ -3280,6 +3308,12 @@ var ChannelBase = class {
3280
3308
  bridgeToolCallListener = /* @__PURE__ */ __name((event) => {
3281
3309
  this.dispatchToolCall(event);
3282
3310
  }, "bridgeToolCallListener");
3311
+ bridgeBackgroundResponseListener = /* @__PURE__ */ __name((sessionId, text) => {
3312
+ void this.dispatchBackgroundResponse(sessionId, text).catch((err) => {
3313
+ process.stderr.write(`[${this.name}] background response delivery failed for session ${sanitizeLogText(sessionId, 128)}: ${this.lifecycleError(err)}
3314
+ `);
3315
+ });
3316
+ }, "bridgeBackgroundResponseListener");
3283
3317
  bridgeSessionDiedListener = /* @__PURE__ */ __name((event) => {
3284
3318
  this.onSessionDied(event.sessionId);
3285
3319
  }, "bridgeSessionDiedListener");
@@ -3323,6 +3357,17 @@ var ChannelBase = class {
3323
3357
  }
3324
3358
  this.onToolCall(chatId, event);
3325
3359
  }
3360
+ async dispatchBackgroundResponse(sessionId, text) {
3361
+ const target = this.router.getTarget(sessionId);
3362
+ if (!target || target.channelName !== this.name || text.trim().length === 0) {
3363
+ return;
3364
+ }
3365
+ if (this.supportsProactiveSend() && this.supportsProactiveTarget(target)) {
3366
+ await this.pushProactive(target, text);
3367
+ return;
3368
+ }
3369
+ await this.sendResponseMessage(target.chatId, text, sessionId);
3370
+ }
3326
3371
  async dispatchPermissionRequest(event) {
3327
3372
  const target = this.permissionTargetForEvent(event);
3328
3373
  if (!target) {
@@ -3404,6 +3449,7 @@ var ChannelBase = class {
3404
3449
  this.memoryScope = Object.freeze(this.resolveMemoryScope(name, config));
3405
3450
  this.channelMemory = options?.channelMemory;
3406
3451
  this.memoryIntentClassifier = options?.memoryIntentClassifier;
3452
+ this.channelMemoryRecallObserver = options?.channelMemoryRecallObserver;
3407
3453
  this.groupHistory = new GroupHistoryStore(options?.groupHistoryPath ?? join5(getGlobalQwenDir(), "channels", `${encodeURIComponent(name)}-group-history.jsonl`));
3408
3454
  this.loopController = options?.loopController;
3409
3455
  this.observedContacts = options?.observedContacts;
@@ -3588,6 +3634,99 @@ var ChannelBase = class {
3588
3634
  this.channelMemoryReads.delete(token.key);
3589
3635
  }
3590
3636
  }
3637
+ getCachedChannelMemoryRecallIndex(key, revision) {
3638
+ const cached = this.channelMemoryRecallCache.get(key);
3639
+ if (!cached || cached.revision !== revision)
3640
+ return void 0;
3641
+ this.channelMemoryRecallCache.delete(key);
3642
+ this.channelMemoryRecallCache.set(key, cached);
3643
+ return cached.index;
3644
+ }
3645
+ setCachedChannelMemoryRecallIndex(key, revision, index) {
3646
+ this.channelMemoryRecallCache.delete(key);
3647
+ this.channelMemoryRecallCache.set(key, { revision, index });
3648
+ if (this.channelMemoryRecallCache.size > CHANNEL_MEMORY_RECALL_CACHE_MAX_TARGETS) {
3649
+ const oldestKey = this.channelMemoryRecallCache.keys().next().value;
3650
+ if (oldestKey !== void 0) {
3651
+ this.channelMemoryRecallCache.delete(oldestKey);
3652
+ }
3653
+ }
3654
+ }
3655
+ async selectRelevantChannelMemory(envelope, target, read) {
3656
+ const message = envelope.text;
3657
+ const channelMemory = this.channelMemory;
3658
+ if (!channelMemory)
3659
+ return { entries: [], cache: "bypass" };
3660
+ if (!channelMemory.getChannelMemoryRevision) {
3661
+ const entries = await channelMemory.listChannelMemoryEntries(target);
3662
+ return {
3663
+ entries: selectRelevantChannelMemory(message, entries),
3664
+ cache: "bypass"
3665
+ };
3666
+ }
3667
+ let revision;
3668
+ try {
3669
+ revision = await channelMemory.getChannelMemoryRevision(target);
3670
+ } catch {
3671
+ const entries = await channelMemory.listChannelMemoryEntries(target);
3672
+ return {
3673
+ entries: selectRelevantChannelMemory(message, entries),
3674
+ cache: "bypass"
3675
+ };
3676
+ }
3677
+ let latestEntries = [];
3678
+ for (let attempt = 0; attempt < 2; attempt += 1) {
3679
+ const cached = this.getCachedChannelMemoryRecallIndex(read.key, revision);
3680
+ if (cached) {
3681
+ return {
3682
+ entries: selectRelevantChannelMemoryFromIndex(message, cached),
3683
+ cache: "hit"
3684
+ };
3685
+ }
3686
+ latestEntries = await channelMemory.listChannelMemoryEntries(target);
3687
+ let verifiedRevision;
3688
+ try {
3689
+ verifiedRevision = await channelMemory.getChannelMemoryRevision(target);
3690
+ } catch {
3691
+ return {
3692
+ entries: selectRelevantChannelMemory(message, latestEntries),
3693
+ cache: "bypass"
3694
+ };
3695
+ }
3696
+ if (revision !== verifiedRevision) {
3697
+ if (read.generation !== read.state.generation) {
3698
+ return { entries: [], cache: "miss" };
3699
+ }
3700
+ revision = verifiedRevision;
3701
+ continue;
3702
+ }
3703
+ const index = createChannelMemoryRecallIndex(latestEntries);
3704
+ if (read.generation === read.state.generation) {
3705
+ this.setCachedChannelMemoryRecallIndex(read.key, revision, index);
3706
+ }
3707
+ return {
3708
+ entries: selectRelevantChannelMemoryFromIndex(message, index),
3709
+ cache: "miss"
3710
+ };
3711
+ }
3712
+ this.logChannelMemoryError("read", envelope, "recall revision unstable after retry");
3713
+ return {
3714
+ entries: selectRelevantChannelMemory(message, latestEntries),
3715
+ cache: "miss",
3716
+ result: "revision_unstable"
3717
+ };
3718
+ }
3719
+ observeChannelMemoryRecall(startedAt, cache, result, selectedCount) {
3720
+ try {
3721
+ this.channelMemoryRecallObserver?.({
3722
+ durationMs: Math.max(0, performance.now() - startedAt),
3723
+ selectedCount: Math.min(CHANNEL_MEMORY_RECALL_MAX_ENTRIES, Math.max(0, Math.trunc(selectedCount))),
3724
+ cache,
3725
+ result
3726
+ });
3727
+ } catch {
3728
+ }
3729
+ }
3591
3730
  drainCollectBufferForCurrentPrompt(sessionId, stillCurrent, taskLabel) {
3592
3731
  const buffer = this.collectBuffers.get(sessionId);
3593
3732
  if (!stillCurrent || !buffer || buffer.length === 0) {
@@ -4175,12 +4314,14 @@ ${promptText}` : promptText;
4175
4314
  }
4176
4315
  attachBridgeEvents(bridge) {
4177
4316
  bridge.on("toolCall", this.bridgeToolCallListener);
4317
+ bridge.on("backgroundResponse", this.bridgeBackgroundResponseListener);
4178
4318
  bridge.on("sessionDied", this.bridgeSessionDiedListener);
4179
4319
  bridge.on("permissionRequest", this.bridgePermissionRequestListener);
4180
4320
  bridge.on("permissionResolved", this.bridgePermissionResolvedListener);
4181
4321
  }
4182
4322
  detachBridgeEvents(bridge) {
4183
4323
  bridge.off("toolCall", this.bridgeToolCallListener);
4324
+ bridge.off("backgroundResponse", this.bridgeBackgroundResponseListener);
4184
4325
  bridge.off("sessionDied", this.bridgeSessionDiedListener);
4185
4326
  bridge.off("permissionRequest", this.bridgePermissionRequestListener);
4186
4327
  bridge.off("permissionResolved", this.bridgePermissionResolvedListener);
@@ -4935,7 +5076,9 @@ ${requestList}`);
4935
5076
  }
4936
5077
  invalidateUnattendedMemory(envelope) {
4937
5078
  const target = this.channelMemoryTarget(envelope);
4938
- const activeRead = this.channelMemoryReads.get(this.channelMemoryReadKey(target));
5079
+ const readKey = this.channelMemoryReadKey(target);
5080
+ this.channelMemoryRecallCache.delete(readKey);
5081
+ const activeRead = this.channelMemoryReads.get(readKey);
4939
5082
  if (activeRead) {
4940
5083
  activeRead.generation += 1;
4941
5084
  }
@@ -5896,18 +6039,20 @@ ${promptText}`;
5896
6039
  if (!recognizedSlashCommand && this.channelMemory && this.shouldInjectChannelMemory()) {
5897
6040
  const memoryTarget = this.channelMemoryTarget(envelope);
5898
6041
  recallRead = this.beginChannelMemoryRead(memoryTarget);
6042
+ const recallStartedAt = performance.now();
5899
6043
  try {
5900
- const entries = [
5901
- ...await this.channelMemory.listChannelMemoryEntries(memoryTarget)
5902
- ];
5903
- const relevantEntries = selectRelevantChannelMemory(envelope.text, entries);
6044
+ const selection = await this.selectRelevantChannelMemory(envelope, memoryTarget, recallRead);
6045
+ const stale = recallRead.generation !== recallRead.state.generation;
6046
+ const relevantEntries = stale ? [] : selection.entries;
6047
+ this.observeChannelMemoryRecall(recallStartedAt, selection.cache, stale ? "stale" : selection.result ?? (relevantEntries.length > 0 ? "selected" : "empty"), relevantEntries.length);
5904
6048
  if (relevantEntries.length > 0) {
5905
6049
  recallContext = this.formatRelevantChannelMemoryContext(relevantEntries);
5906
6050
  }
5907
- } catch (error) {
6051
+ } catch {
6052
+ this.observeChannelMemoryRecall(recallStartedAt, "bypass", "read_error", 0);
5908
6053
  this.releaseChannelMemoryRead(recallRead);
5909
6054
  recallRead = void 0;
5910
- this.logChannelMemoryError("read", envelope, this.channelMemoryErrorMessage(error));
6055
+ this.logChannelMemoryError("read", envelope, "entry listing failed");
5911
6056
  }
5912
6057
  }
5913
6058
  if (this.dropQueuedTurnIfStale(sessionId, generation, envelope)) {
@@ -0,0 +1,71 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-5O2XNYP6.js";
6
+ import {
7
+ __commonJS,
8
+ __name
9
+ } from "./chunk-J2S4EL5Y.js";
10
+
11
+ // node_modules/react/cjs/react-jsx-runtime.production.js
12
+ var require_react_jsx_runtime_production = __commonJS({
13
+ "node_modules/react/cjs/react-jsx-runtime.production.js"(exports) {
14
+ "use strict";
15
+ init_esbuild_shims();
16
+ var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element");
17
+ var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
18
+ function jsxProd(type, config, maybeKey) {
19
+ var key = null;
20
+ void 0 !== maybeKey && (key = "" + maybeKey);
21
+ void 0 !== config.key && (key = "" + config.key);
22
+ if ("key" in config) {
23
+ maybeKey = {};
24
+ for (var propName in config)
25
+ "key" !== propName && (maybeKey[propName] = config[propName]);
26
+ } else maybeKey = config;
27
+ config = maybeKey.ref;
28
+ return {
29
+ $$typeof: REACT_ELEMENT_TYPE,
30
+ type,
31
+ key,
32
+ ref: void 0 !== config ? config : null,
33
+ props: maybeKey
34
+ };
35
+ }
36
+ __name(jsxProd, "jsxProd");
37
+ exports.Fragment = REACT_FRAGMENT_TYPE;
38
+ exports.jsx = jsxProd;
39
+ exports.jsxs = jsxProd;
40
+ }
41
+ });
42
+
43
+ // node_modules/react/jsx-runtime.js
44
+ var require_jsx_runtime = __commonJS({
45
+ "node_modules/react/jsx-runtime.js"(exports, module) {
46
+ "use strict";
47
+ init_esbuild_shims();
48
+ if (true) {
49
+ module.exports = require_react_jsx_runtime_production();
50
+ } else {
51
+ module.exports = null;
52
+ }
53
+ }
54
+ });
55
+
56
+ export {
57
+ require_jsx_runtime
58
+ };
59
+ /*! Bundled license information:
60
+
61
+ react/cjs/react-jsx-runtime.production.js:
62
+ (**
63
+ * @license React
64
+ * react-jsx-runtime.production.js
65
+ *
66
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
67
+ *
68
+ * This source code is licensed under the MIT license found in the
69
+ * LICENSE file in the root directory of this source tree.
70
+ *)
71
+ */