@qwen-code/qwen-code 0.21.6-preview.0 → 0.21.7-nightly.20260807.fca8f3c1f

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 (309) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +19 -9
  2. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
  3. package/bundled/qc-helper/docs/features/channels/github.md +31 -19
  4. package/bundled/qc-helper/docs/features/code-review.md +30 -1
  5. package/bundled/qc-helper/docs/qwen-serve.md +1 -1
  6. package/bundled/review/SKILL.md +59 -22
  7. package/chunks/{MaxSizedBox-A3UYJS6B.js → MaxSizedBox-NHT7OJY4.js} +38 -38
  8. package/chunks/{StandaloneSessionPicker-NGLY26I4.js → StandaloneSessionPicker-B2BHAP6E.js} +56 -55
  9. package/chunks/{acp-startup-profiler-3RICG2YW.js → acp-startup-profiler-ORIQ2CCQ.js} +2 -2
  10. package/chunks/{acpAgent-V54T2EEL.js → acpAgent-ITFWQGW2.js} +1091 -150
  11. package/chunks/{agent-2P53VL2L.js → agent-CQ66PAFN.js} +35 -35
  12. package/chunks/{agent-headless-6X4GCFRD.js → agent-headless-XFODWIW2.js} +35 -35
  13. package/chunks/{anthropicContentGenerator-3CAHEZBM.js → anthropicContentGenerator-DTMVEL5M.js} +7 -7
  14. package/chunks/{artifact-tool-RROCCJDA.js → artifact-tool-U4VOZIK5.js} +2 -2
  15. package/chunks/{askUserQuestion-2EPPBPUZ.js → askUserQuestion-XOBQLPFA.js} +2 -2
  16. package/chunks/{bridge-TCFMLKHR.js → bridge-5XPZZ43S.js} +41 -41
  17. package/chunks/{channel-management-service-5XPPTWUQ.js → channel-management-service-FSQ7SHYI.js} +1 -1
  18. package/chunks/{channel-settings-store-B4HNMNQV.js → channel-settings-store-ZRWVDSMY.js} +42 -42
  19. package/chunks/{channel-worker-group-SVGPDH2C.js → channel-worker-group-JWQK224X.js} +5 -5
  20. package/chunks/{channel-worker-manager-72ZK2GTS.js → channel-worker-manager-77E3OXRQ.js} +5 -5
  21. package/chunks/{channel-worker-supervisor-NUEDVHX4.js → channel-worker-supervisor-62YWUGP2.js} +3 -3
  22. package/chunks/{chunk-XC656O42.js → chunk-22NBYCPD.js} +3 -3
  23. package/chunks/chunk-2VSTGY6M.js +107 -0
  24. package/chunks/{chunk-MBEMTXQT.js → chunk-3K7FH2KQ.js} +1 -32
  25. package/chunks/{chunk-ZH7G3A4U.js → chunk-3KY5HXE6.js} +4 -4
  26. package/chunks/{chunk-QYPT3QUD.js → chunk-3ULCB3NE.js} +3 -3
  27. package/chunks/{chunk-DOICUTPO.js → chunk-4L3YFXQL.js} +11 -10
  28. package/chunks/{chunk-WIPQR44Y.js → chunk-4UKNQ2HI.js} +3 -3
  29. package/chunks/{chunk-AU3XNTMV.js → chunk-52AXQBAY.js} +3 -3
  30. package/chunks/{chunk-6KEN3RIC.js → chunk-5JFKVENR.js} +3 -3
  31. package/chunks/{chunk-TVFC3XF5.js → chunk-5OYWFYX3.js} +7 -7
  32. package/chunks/{chunk-4E5PO6R7.js → chunk-6IKXD7ZR.js} +4 -4
  33. package/chunks/{chunk-5L6CQ4ZU.js → chunk-6M26GBKX.js} +2 -2
  34. package/chunks/{chunk-XOZ2R6XI.js → chunk-7GXFPUOL.js} +3578 -1487
  35. package/chunks/{chunk-4T6QMNX2.js → chunk-7HMDOAIC.js} +185 -12
  36. package/chunks/{chunk-33FNCQSY.js → chunk-7MH4J33A.js} +2 -2
  37. package/chunks/{chunk-2AGOQ7QO.js → chunk-7UFKAV7Y.js} +118 -6
  38. package/chunks/{chunk-JELIWHXD.js → chunk-AOHJKPKL.js} +1 -1
  39. package/chunks/{chunk-SPUDIAHX.js → chunk-ASSORJG6.js} +530 -388
  40. package/chunks/{chunk-GLNBDYUX.js → chunk-AXMWHKXA.js} +6 -2
  41. package/chunks/{chunk-H36SETQS.js → chunk-B2GJNDTV.js} +1 -1
  42. package/chunks/{chunk-RTWF7FF7.js → chunk-BDE433DP.js} +5 -5
  43. package/chunks/{chunk-6D6V55ZQ.js → chunk-BEBG3YE6.js} +1 -1
  44. package/chunks/{chunk-QMBEW7EW.js → chunk-BGG4MBYD.js} +2 -2
  45. package/chunks/{chunk-QL4TN4HS.js → chunk-BRVWYMKV.js} +1 -1
  46. package/chunks/{chunk-6WBWIPBF.js → chunk-BVWVWGLE.js} +2 -2
  47. package/chunks/{chunk-WPKIU4PA.js → chunk-CFJIT7IA.js} +6 -6
  48. package/chunks/{chunk-2UISUFHQ.js → chunk-CJXIIILK.js} +3 -3
  49. package/chunks/{chunk-WK4TJUEA.js → chunk-CKASRHZI.js} +1 -1
  50. package/chunks/{chunk-Z7JILXGX.js → chunk-CNIID3TV.js} +3 -3
  51. package/chunks/{chunk-KKN2IE7Q.js → chunk-CTJLZLB5.js} +1 -1
  52. package/chunks/{chunk-URJHXOSO.js → chunk-CYR3HI5X.js} +3 -3
  53. package/chunks/{chunk-4LKVQFHM.js → chunk-DREZZAZM.js} +2 -2
  54. package/chunks/{chunk-QWUYFMAR.js → chunk-E24IQ3WV.js} +87 -67
  55. package/chunks/{chunk-WXS647W5.js → chunk-E2DXJHVN.js} +3 -3
  56. package/chunks/{chunk-2U7GPHA6.js → chunk-E33LOKRA.js} +1 -1
  57. package/chunks/{chunk-CDHNGCJI.js → chunk-ECTZI76Q.js} +7 -7
  58. package/chunks/{chunk-2DNKEBXY.js → chunk-EI3HZX6C.js} +1 -1
  59. package/chunks/{chunk-U25CMJYY.js → chunk-EKPKKXY2.js} +1 -1
  60. package/chunks/{chunk-432XCUHF.js → chunk-EQL65XGA.js} +1 -1
  61. package/chunks/{chunk-TYERNYH4.js → chunk-EUNWC2VS.js} +2 -2
  62. package/chunks/{chunk-546CDN6D.js → chunk-F4SQY4RB.js} +3 -3
  63. package/chunks/{chunk-NKST54XA.js → chunk-FBPPGNA4.js} +1 -1
  64. package/chunks/{chunk-MFBUJMQ3.js → chunk-FCBM3ZRY.js} +4 -4
  65. package/chunks/{chunk-UH7Z7Y45.js → chunk-FOGU3LJX.js} +1 -1
  66. package/chunks/{chunk-O656RSMC.js → chunk-FTJUO7R2.js} +18 -10
  67. package/chunks/{chunk-E4WHKETF.js → chunk-FVKHVJZQ.js} +2 -49
  68. package/chunks/{chunk-XZCMQUOF.js → chunk-GDXET5XU.js} +31 -3387
  69. package/chunks/{chunk-A5YZ3FA2.js → chunk-GM463R2B.js} +1 -1
  70. package/chunks/{chunk-MOHAWIAW.js → chunk-GNPNYXJB.js} +2 -2
  71. package/chunks/{chunk-HKNSU4WX.js → chunk-GUHLKZ57.js} +198 -35
  72. package/chunks/{chunk-N47ZM2KI.js → chunk-HCVI44SK.js} +12 -12
  73. package/chunks/{chunk-BK2UNYWD.js → chunk-HIBNSEJE.js} +12 -0
  74. package/chunks/{chunk-FDV3CXTD.js → chunk-HMUV7245.js} +3 -3
  75. package/chunks/{chunk-DOA7MCDY.js → chunk-I3LJQR5I.js} +973 -892
  76. package/chunks/{chunk-D7D7RXIJ.js → chunk-IC4Z6LX6.js} +1 -1
  77. package/chunks/{chunk-HU5TUALO.js → chunk-IIJEYBNH.js} +3 -3
  78. package/chunks/{chunk-DTAPI453.js → chunk-IUFV6FYU.js} +2 -2
  79. package/chunks/{chunk-MISUEWB4.js → chunk-J6SZID63.js} +12 -8
  80. package/chunks/{chunk-OWAK7LMW.js → chunk-KGJGEEVR.js} +7 -0
  81. package/chunks/{chunk-C4GRKMUL.js → chunk-KGT25P47.js} +5 -5
  82. package/chunks/{chunk-BFHXDAR7.js → chunk-KKBPOU75.js} +1 -1
  83. package/chunks/{chunk-T4XY5CT4.js → chunk-KNTWLSVD.js} +7 -7
  84. package/chunks/{chunk-3ZRS2XNY.js → chunk-KU4MUGRF.js} +1 -1
  85. package/chunks/{chunk-MGSSJT27.js → chunk-L4N6TIP7.js} +5 -3
  86. package/chunks/{chunk-VDLXPEI5.js → chunk-LFVXMYII.js} +3 -3
  87. package/chunks/{chunk-WVAESIM6.js → chunk-LZC3B5N2.js} +4 -4
  88. package/chunks/{chunk-XSGQKR37.js → chunk-M5RUXX6P.js} +358 -20
  89. package/chunks/{chunk-6O5DVH27.js → chunk-M6HMMKVG.js} +1 -1
  90. package/chunks/{chunk-PQTK2FVO.js → chunk-MA5SUU2Q.js} +4 -4
  91. package/chunks/{chunk-XNZBXQCG.js → chunk-MKVZE4ZJ.js} +1 -1
  92. package/chunks/{chunk-7FUVSN4D.js → chunk-MPLEQFEL.js} +1 -1
  93. package/chunks/{chunk-I7JDGNG6.js → chunk-MVUQRLOH.js} +9 -5
  94. package/chunks/{chunk-GLWP3FDB.js → chunk-MZSJ43WV.js} +31 -2
  95. package/chunks/{chunk-ZPPP6VCL.js → chunk-NG2R4N5O.js} +1 -1
  96. package/chunks/chunk-NKLP3DCK.js +22 -0
  97. package/chunks/{chunk-WIRAPZ62.js → chunk-NLREQJFK.js} +7 -1
  98. package/chunks/{chunk-IKXE3AAC.js → chunk-OCEXSMWS.js} +2 -2
  99. package/chunks/{chunk-3RXUYQJI.js → chunk-OIVKILPI.js} +49 -0
  100. package/chunks/{chunk-LBWNSLJK.js → chunk-ONSZH6VM.js} +2 -2
  101. package/chunks/{chunk-XKTCA6BW.js → chunk-ORTYIRZU.js} +5 -5
  102. package/chunks/{chunk-5CDI4UOY.js → chunk-ORYNZTB7.js} +131 -48
  103. package/chunks/{chunk-DYA25Y7U.js → chunk-OWMAZHIX.js} +1 -1
  104. package/chunks/{chunk-Y5HIDFKZ.js → chunk-P2PTEG3P.js} +4 -4
  105. package/chunks/{chunk-IISDPZ5X.js → chunk-P4PAGFDT.js} +1 -1
  106. package/chunks/{chunk-P7LKADIT.js → chunk-PRYJZGR4.js} +7 -7
  107. package/chunks/{chunk-NYZAL2W2.js → chunk-PVNUY34T.js} +4 -4
  108. package/chunks/{chunk-GTM6IHBB.js → chunk-Q3JQ7OSU.js} +2 -1
  109. package/chunks/{chunk-SQ3ZJOYL.js → chunk-QBUXNKTM.js} +20 -20
  110. package/chunks/{chunk-Z5S6KH2B.js → chunk-QT34NLGU.js} +6 -6
  111. package/chunks/{chunk-UKZEXS6K.js → chunk-R574ATRM.js} +11 -0
  112. package/chunks/{chunk-MVLM6PJK.js → chunk-RFA3YH5R.js} +6 -2
  113. package/chunks/chunk-RGSBTHSU.js +3381 -0
  114. package/chunks/{chunk-3DTM3RPU.js → chunk-S7CV4KO6.js} +3 -3
  115. package/chunks/{chunk-6KZP75GT.js → chunk-SDSQ7C4Y.js} +1 -1
  116. package/chunks/{chunk-YAVY33G4.js → chunk-SEZ556DZ.js} +1 -1
  117. package/chunks/chunk-SOORFWKY.js +155 -0
  118. package/chunks/{chunk-DBIEZC7T.js → chunk-ST774VGY.js} +42 -16
  119. package/chunks/{chunk-X6DV3WKN.js → chunk-T444EKH5.js} +1 -1
  120. package/chunks/{chunk-CJBRIJ7W.js → chunk-T7WJWZCG.js} +3 -3
  121. package/chunks/{chunk-NAYPZ72V.js → chunk-TPQ6RO65.js} +1 -1
  122. package/chunks/{chunk-KVUBYJDM.js → chunk-TZEZYNYD.js} +1 -1
  123. package/chunks/{chunk-YUVTZ4UH.js → chunk-U5G2PZAQ.js} +114 -18
  124. package/chunks/{chunk-XC2VAFVZ.js → chunk-UVX4Y6IN.js} +1 -1
  125. package/chunks/{chunk-WAOLM6SQ.js → chunk-VHINCBEK.js} +1 -1
  126. package/chunks/{chunk-AFZTZLFB.js → chunk-VIOH2OOE.js} +3 -3
  127. package/chunks/{chunk-M744OFVE.js → chunk-W7U4ESW2.js} +1 -1
  128. package/chunks/{chunk-URN76TKR.js → chunk-WCG5O7IP.js} +2 -2
  129. package/chunks/{chunk-QG2ACINA.js → chunk-WIAN5MYB.js} +1 -1
  130. package/chunks/{chunk-ZQL73PPE.js → chunk-WLAO54CV.js} +2 -2
  131. package/chunks/{chunk-EKWNNQQD.js → chunk-X26KCG3L.js} +16 -10
  132. package/chunks/{chunk-AVDEBBMI.js → chunk-X6VISCPN.js} +2 -2
  133. package/chunks/{chunk-A6SX5TAH.js → chunk-XCWO3SMQ.js} +9 -5
  134. package/chunks/{chunk-WVRJKSIG.js → chunk-XR4VN3GB.js} +1 -1
  135. package/chunks/{chunk-BU4BRCPX.js → chunk-Y4F5PBY5.js} +5 -5
  136. package/chunks/{chunk-3PRJYMXC.js → chunk-Y4NGLFGJ.js} +1 -1
  137. package/chunks/{chunk-DG563ZCS.js → chunk-YD26XH5B.js} +3 -3
  138. package/chunks/{chunk-3LGZEYOF.js → chunk-YHEEE624.js} +2 -2
  139. package/chunks/{chunk-QONSRAEV.js → chunk-YP5KH5Y7.js} +1 -1
  140. package/chunks/{chunk-EHMN6SEG.js → chunk-YPQ4IEVV.js} +4 -4
  141. package/chunks/{chunk-CXYBX4AL.js → chunk-Z2MB7HS7.js} +1 -1
  142. package/chunks/{chunk-72DZPDH4.js → chunk-ZFJBQATO.js} +10 -5
  143. package/chunks/{chunk-7GYP5COR.js → chunk-ZXU5UHMI.js} +1 -1
  144. package/chunks/{computer-use-GTOP2CVH.js → computer-use-4WCG6FX3.js} +35 -35
  145. package/chunks/{config-utils-LIRO7NSU.js → config-utils-K7SCOWHD.js} +2 -2
  146. package/chunks/{contextCommand-K6T6RRF3.js → contextCommand-MLJEOUZY.js} +38 -38
  147. package/chunks/{core-runtime-D2626QQU.js → core-runtime-LKSDQXFB.js} +35 -35
  148. package/chunks/{create-sub-session-6EWLAZD5.js → create-sub-session-E4PBYXV5.js} +2 -2
  149. package/chunks/create-sub-session-ZJ7OYXRW.js +772 -0
  150. package/chunks/{cron-create-CCRIULJE.js → cron-create-GRBWYMIJ.js} +4 -4
  151. package/chunks/{cron-delete-FCFW6BGP.js → cron-delete-4CMKBR2M.js} +4 -4
  152. package/chunks/{cron-list-QDBVCHRF.js → cron-list-W7K4ASOA.js} +4 -4
  153. package/chunks/{daemon-CCIX4BMG.js → daemon-SCTQMM7Z.js} +165 -5
  154. package/chunks/{daemon-status-provider-2EHRZZVF.js → daemon-status-provider-2TPABSC6.js} +45 -45
  155. package/chunks/{daemon-trust-policy-B3EPDJDR.js → daemon-trust-policy-U5Q3LRKV.js} +41 -41
  156. package/chunks/{daemon-trust-policy-monitor-MFM5X26G.js → daemon-trust-policy-monitor-REIZABHN.js} +41 -41
  157. package/chunks/{deferred-core-runtime-KXN7HLN7.js → deferred-core-runtime-ONWSGDPN.js} +35 -35
  158. package/chunks/discovery-XLHITE74.js +220 -0
  159. package/chunks/{display-image-GUJA352B.js → display-image-O2XFPQTC.js} +4 -4
  160. package/chunks/{dist-A7H2KKUC.js → dist-K4WWQBHS.js} +277 -98
  161. package/chunks/{dist-IKGVITP3.js → dist-KS4O2NKE.js} +99 -6
  162. package/chunks/{earlyInputCapture-WUNYYFOS.js → earlyInputCapture-Q7CO2QN4.js} +36 -36
  163. package/chunks/{edit-DMFCBP2D.js → edit-PBU33DGY.js} +35 -35
  164. package/chunks/{enter-worktree-5SVBCXFC.js → enter-worktree-WCRF2AA5.js} +35 -35
  165. package/chunks/{enterPlanMode-QUIZFQ4M.js → enterPlanMode-E2RXSZSG.js} +35 -35
  166. package/chunks/{environment-U6QP23VJ.js → environment-KA6OBBY4.js} +38 -38
  167. package/chunks/{errors-GZWFA6ON.js → errors-XYCANYTN.js} +38 -38
  168. package/chunks/{exit-worktree-FUB44KAF.js → exit-worktree-CQLRKE26.js} +35 -35
  169. package/chunks/{exitPlanMode-XSHHYR73.js → exitPlanMode-AP7XQVRL.js} +35 -35
  170. package/chunks/{fast-path-JHQJSIMZ.js → fast-path-DHKCBUUQ.js} +2 -2
  171. package/chunks/{gemini-O44ETOKT.js → gemini-RGYIKOL6.js} +78 -78
  172. package/chunks/{geminiContentGenerator-TTM4TZJM.js → geminiContentGenerator-ZLI7NARI.js} +6 -6
  173. package/chunks/{glob-YECOWTRW.js → glob-R4R7OG4W.js} +35 -35
  174. package/chunks/{goal-tools-3AZKX5WQ.js → goal-tools-APOW6UXL.js} +3 -3
  175. package/chunks/{grep-BZO4LOTA.js → grep-BO5M2UCN.js} +35 -35
  176. package/chunks/{handleAutoUpdate-TOO52D6H.js → handleAutoUpdate-ZTHIKBZM.js} +40 -40
  177. package/chunks/{i18n-ARJYXZQ5.js → i18n-GNC2NNVA.js} +37 -37
  178. package/chunks/{image-gen-J6Q2YBEU.js → image-gen-2XYVOLT5.js} +9 -9
  179. package/chunks/{initializer-CEZ4RPQV.js → initializer-VXLEBSSB.js} +42 -42
  180. package/chunks/{installationInfo-AEGIIQAT.js → installationInfo-QBJ7GECU.js} +36 -36
  181. package/chunks/{keychain-token-storage-7BT4TQ2A.js → keychain-token-storage-TVAMTNP7.js} +2 -2
  182. package/chunks/{list-7XLPV5GC.js → list-VLARA3NO.js} +44 -44
  183. package/chunks/{list-agents-GC4BRET7.js → list-agents-KFFIIS2G.js} +2 -2
  184. package/chunks/{loadedSettingsAdapter-YK5SBHOT.js → loadedSettingsAdapter-AQWO3DKQ.js} +41 -41
  185. package/chunks/{loggingContentGenerator-I7QDXS43.js → loggingContentGenerator-JPOQJB44.js} +17 -17
  186. package/chunks/{loop-wakeup-SQQSBMEY.js → loop-wakeup-TLMJPMMP.js} +5 -5
  187. package/chunks/{ls-63CC3NNX.js → ls-UVVE2XGE.js} +4 -4
  188. package/chunks/{lsp-P6NVJVNT.js → lsp-QMEA2VLB.js} +2 -2
  189. package/chunks/{managed-npm-update-YSL7PA7G.js → managed-npm-update-LEIM7R7Z.js} +48 -39
  190. package/chunks/{mcp-RKFQZXP6.js → mcp-WDSZDEUK.js} +41 -41
  191. package/chunks/{monitor-QHHJIKGL.js → monitor-XEIMDJKT.js} +35 -35
  192. package/chunks/{nonInteractiveCli-XEBIE7MG.js → nonInteractiveCli-GA7CHB27.js} +75 -75
  193. package/chunks/{notebook-edit-SG7X2EQA.js → notebook-edit-HBVYJEYN.js} +35 -35
  194. package/chunks/{openaiContentGenerator-63CVR33K.js → openaiContentGenerator-D6DYXZD3.js} +19 -19
  195. package/chunks/{pidfile-I3CXJGQD.js → pidfile-DWDNVKET.js} +36 -36
  196. package/chunks/{processUtils-LJ3DSANX.js → processUtils-Y2SQQ2RR.js} +2 -2
  197. package/chunks/{qwenContentGenerator-JINBVCH6.js → qwenContentGenerator-MTXRA2IT.js} +40 -40
  198. package/chunks/{qwenOAuth2-SY2O3NRR.js → qwenOAuth2-HQSYUQ2E.js} +8 -8
  199. package/chunks/{read-file-PGTXF25I.js → read-file-IUAEEXBO.js} +10 -10
  200. package/chunks/{read-mcp-resource-RTSSEER5.js → read-mcp-resource-2TNSJTC3.js} +2 -2
  201. package/chunks/{record-artifact-E6AWQU2Z.js → record-artifact-RAON52FC.js} +3 -3
  202. package/chunks/{resumeHistoryUtils-FB2NFVZ2.js → resumeHistoryUtils-J244DBOH.js} +42 -41
  203. package/chunks/{ripGrep-IY3KGPM6.js → ripGrep-NBENZCHO.js} +35 -35
  204. package/chunks/{run-qwen-serve-UYEMGPKA.js → run-qwen-serve-2G754FJE.js} +516 -87
  205. package/chunks/{runtime-CG3BKRFE.js → runtime-KBSESBIX.js} +44 -44
  206. package/chunks/{scheduler-VFUVGDE5.js → scheduler-INHLDC26.js} +35 -35
  207. package/chunks/{sdk-exporters-http-IL2346MJ.js → sdk-exporters-http-KHAB5JSD.js} +2 -2
  208. package/chunks/{sdk-impl-SYKGVWOZ.js → sdk-impl-KD7FSTC3.js} +2 -2
  209. package/chunks/{send-message-TL6FIMMN.js → send-message-ZM7MRUGP.js} +5 -5
  210. package/chunks/{serve-ZCCQ2G2L.js → serve-G2BCUQNM.js} +42 -42
  211. package/chunks/{server-WS7LWXPP.js → server-3BD6DIW3.js} +7952 -611
  212. package/chunks/{session-IQLCT32T.js → session-HGXANTYW.js} +78 -78
  213. package/chunks/{settings-NX4EUIE6.js → settings-VYFBEZ2R.js} +40 -40
  214. package/chunks/{shell-THDYM4CS.js → shell-3LBKDXAW.js} +35 -35
  215. package/chunks/{skill-OXXZBNQB.js → skill-W576UXSL.js} +14 -14
  216. package/chunks/{skill-settings-T3JZ33T2.js → skill-settings-ZNUIJMJT.js} +40 -40
  217. package/chunks/{spawnChannel-COLJMSA7.js → spawnChannel-AUUVHV5S.js} +37 -37
  218. package/chunks/{standalone-update-ICW7H5IF.js → standalone-update-WEQVL7DN.js} +38 -38
  219. package/chunks/{startInteractiveUI-6BDRXSMF.js → startInteractiveUI-V3B5M5PY.js} +473 -233
  220. package/chunks/{stdioHelpers-HGIYTWAY.js → stdioHelpers-7A2EE64Z.js} +5 -3
  221. package/chunks/{syntheticOutput-BN7E626U.js → syntheticOutput-ZLCUTKO2.js} +3 -3
  222. package/chunks/{task-create-2X4UP4F3.js → task-create-CQP5UEA3.js} +9 -9
  223. package/chunks/{task-list-WOLJPZ64.js → task-list-XLEZOJXP.js} +5 -5
  224. package/chunks/{task-stop-TNXRNAL2.js → task-stop-7ZQM5CFF.js} +2 -2
  225. package/chunks/{task-update-VDUSN36E.js → task-update-JA75U2SN.js} +9 -9
  226. package/chunks/{team-create-BCSMDK4Z.js → team-create-4TEVQYI5.js} +35 -35
  227. package/chunks/{team-delete-D2VMSDOT.js → team-delete-MHY3UZGY.js} +5 -5
  228. package/chunks/{team-plan-approval-B5YRLJFV.js → team-plan-approval-UOSTAB7R.js} +35 -35
  229. package/chunks/{terminal-image-renderer-PW6Z6VFY.js → terminal-image-renderer-VO6W4YSM.js} +41 -36
  230. package/chunks/{theme-manager-CMVKD2JH.js → theme-manager-HOYUCAJ5.js} +36 -36
  231. package/chunks/{todoWrite-MHWHO5UO.js → todoWrite-UPVOHYGD.js} +4 -4
  232. package/chunks/{tool-search-SQTUSG6P.js → tool-search-NRMWTH3L.js} +13 -13
  233. package/chunks/{total-session-admission-XAXOSE46.js → total-session-admission-KHBGXD6A.js} +41 -41
  234. package/chunks/{trustedFolders-Z2UAEG2V.js → trustedFolders-AH242HLO.js} +37 -37
  235. package/chunks/{update-relaunch-JBLI6LJF.js → update-relaunch-R3M25PND.js} +6 -6
  236. package/chunks/{updateCheck-FDAVGOFT.js → updateCheck-4O2CMHMG.js} +39 -39
  237. package/chunks/{useAutoAcceptIndicator-PDZFIYRM.js → useAutoAcceptIndicator-KZSKP3RY.js} +44 -44
  238. package/chunks/{validateNonInterActiveAuth-Q4763ONQ.js → validateNonInterActiveAuth-7AXUFNBE.js} +72 -72
  239. package/chunks/{version-C7MPCGWD.js → version-BE7H2MTM.js} +1 -1
  240. package/chunks/{web-fetch-L7RAPOJB.js → web-fetch-C7FQ24BP.js} +13 -13
  241. package/chunks/{web-search-IDOYUOWX.js → web-search-7FPW6ECJ.js} +9 -9
  242. package/chunks/web-shell-static-O73YPVVC.js +33 -0
  243. package/chunks/{workflow-HXURUJB5.js → workflow-3LAE5AL7.js} +36 -36
  244. package/chunks/{workspace-providers-status-JZ3GPWNU.js → workspace-providers-status-UXZKS6SE.js} +44 -44
  245. package/chunks/{workspace-registration-store-SM2PWB6L.js → workspace-registration-store-DSS57KLV.js} +1 -1
  246. package/chunks/{workspace-registry-6W4ES7BJ.js → workspace-registry-VOSOZ4WU.js} +41 -41
  247. package/chunks/{workspace-service-V47ZFJRX.js → workspace-service-MWWHXZGQ.js} +46 -46
  248. package/chunks/{workspace-skills-status-6ZQ45XKA.js → workspace-skills-status-DN56VF74.js} +42 -42
  249. package/chunks/{workspace-trust-reconciler-6V25LMCN.js → workspace-trust-reconciler-3GOQYMND.js} +50 -50
  250. package/chunks/{write-file-H2QOF25K.js → write-file-B4YZQZ2K.js} +35 -35
  251. package/chunks/{zoom-image-JTUSS43N.js → zoom-image-L4QKXYG2.js} +10 -10
  252. package/cli.js +15 -15
  253. package/package.json +3 -3
  254. package/web-shell/assets/{arc-DtI1rZcQ.js → arc-Ip-FFDJ0.js} +1 -1
  255. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BPZwSVct.js → architectureDiagram-3BPJPVTR-CChqgwIb.js} +1 -1
  256. package/web-shell/assets/{blockDiagram-GPEHLZMM-BIQ03j4C.js → blockDiagram-GPEHLZMM-BHN-Tfss.js} +1 -1
  257. package/web-shell/assets/{c4Diagram-AAUBKEIU-CB0RyFGm.js → c4Diagram-AAUBKEIU-BhyjzDjN.js} +1 -1
  258. package/web-shell/assets/channel-Cu8qd6OB.js +1 -0
  259. package/web-shell/assets/{chunk-2J33WTMH-B3WoS-4H.js → chunk-2J33WTMH-BB9eyHrx.js} +1 -1
  260. package/web-shell/assets/{chunk-4BX2VUAB-C98xYZ1X.js → chunk-4BX2VUAB-BeV7ce_J.js} +1 -1
  261. package/web-shell/assets/{chunk-55IACEB6-CbTIWRwQ.js → chunk-55IACEB6-DO7kXDiV.js} +1 -1
  262. package/web-shell/assets/{chunk-727SXJPM-DWGnKTPu.js → chunk-727SXJPM-B27MPznD.js} +1 -1
  263. package/web-shell/assets/{chunk-AQP2D5EJ-4__QyCEX.js → chunk-AQP2D5EJ-DHIjqjD_.js} +1 -1
  264. package/web-shell/assets/{chunk-FMBD7UC4-DFtG1YCW.js → chunk-FMBD7UC4-DabMqyN2.js} +1 -1
  265. package/web-shell/assets/{chunk-ND2GUHAM-rvAhW51N.js → chunk-ND2GUHAM-Dw7Nnnxc.js} +1 -1
  266. package/web-shell/assets/{chunk-QZHKN3VN-DfiU9pwZ.js → chunk-QZHKN3VN-DdaZew1Q.js} +1 -1
  267. package/web-shell/assets/classDiagram-4FO5ZUOK-BI3KrXhq.js +1 -0
  268. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BI3KrXhq.js +1 -0
  269. package/web-shell/assets/{cose-bilkent-S5V4N54A-Cc4EIdxu.js → cose-bilkent-S5V4N54A-CgBpCYH5.js} +1 -1
  270. package/web-shell/assets/{dagre-BM42HDAG-CZNj4dGW.js → dagre-BM42HDAG-BB4IU8G0.js} +1 -1
  271. package/web-shell/assets/{diagram-2AECGRRQ-D5tiqQCr.js → diagram-2AECGRRQ-BcUTHU37.js} +1 -1
  272. package/web-shell/assets/{diagram-5GNKFQAL-pwzw0jVO.js → diagram-5GNKFQAL-B6Lyihyv.js} +1 -1
  273. package/web-shell/assets/{diagram-KO2AKTUF-4CWiM00x.js → diagram-KO2AKTUF-CRIJOjpG.js} +1 -1
  274. package/web-shell/assets/{diagram-LMA3HP47-Dd7rc7Qf.js → diagram-LMA3HP47-DdNiwWWT.js} +1 -1
  275. package/web-shell/assets/{diagram-OG6HWLK6-_vzV52ml.js → diagram-OG6HWLK6-Dz4b32Do.js} +1 -1
  276. package/web-shell/assets/{erDiagram-TEJ5UH35-CqbE2bx_.js → erDiagram-TEJ5UH35-D-8NGw77.js} +1 -1
  277. package/web-shell/assets/{flowDiagram-I6XJVG4X-CaxNr7w4.js → flowDiagram-I6XJVG4X-Dun26LyM.js} +1 -1
  278. package/web-shell/assets/{ganttDiagram-6RSMTGT7-AGjrtfUA.js → ganttDiagram-6RSMTGT7-F10Hu1Gc.js} +1 -1
  279. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-ADG2zSkc.js → gitGraphDiagram-PVQCEYII-Bf8Ez6-D.js} +1 -1
  280. package/web-shell/assets/{index-BOryKCqt.js → index-BXqw-nGq.js} +1 -1
  281. package/web-shell/assets/index-QQlUCJGg.css +5 -0
  282. package/web-shell/assets/index-hcgjV7vS.js +1768 -0
  283. package/web-shell/assets/{infoDiagram-5YYISTIA-CE3B_IoZ.js → infoDiagram-5YYISTIA-DVgTMLvj.js} +1 -1
  284. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CN-Frhoi.js → ishikawaDiagram-YF4QCWOH-uT-KepvK.js} +1 -1
  285. package/web-shell/assets/{journeyDiagram-JHISSGLW-CGgezS93.js → journeyDiagram-JHISSGLW-Vg_XadQf.js} +1 -1
  286. package/web-shell/assets/{kanban-definition-UN3LZRKU-BqWijky5.js → kanban-definition-UN3LZRKU-Dyv1ESBE.js} +1 -1
  287. package/web-shell/assets/{linear-D8sfpZf6.js → linear-BMIepYX3.js} +1 -1
  288. package/web-shell/assets/{mermaid.core-3PA4QrzM.js → mermaid.core-zA8pJ9ag.js} +5 -5
  289. package/web-shell/assets/{mindmap-definition-RKZ34NQL-D9QxwiCY.js → mindmap-definition-RKZ34NQL-BCW_BZ_5.js} +1 -1
  290. package/web-shell/assets/{pieDiagram-4H26LBE5-Bioaf6uE.js → pieDiagram-4H26LBE5-DseNEGp2.js} +1 -1
  291. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DBb2AS73.js → quadrantDiagram-W4KKPZXB-6Z7wr1Fi.js} +1 -1
  292. package/web-shell/assets/{requirementDiagram-4Y6WPE33-DXOvZ3KB.js → requirementDiagram-4Y6WPE33-CVOlCRPf.js} +1 -1
  293. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-D9qg09Dm.js → sankeyDiagram-5OEKKPKP-CGhgrUJZ.js} +1 -1
  294. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DSAUIfpw.js → sequenceDiagram-3UESZ5HK-dlqmpLuQ.js} +1 -1
  295. package/web-shell/assets/{stateDiagram-AJRCARHV-BPZkzfQ3.js → stateDiagram-AJRCARHV-B9EW10Xb.js} +1 -1
  296. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CJTZJJ5X.js +1 -0
  297. package/web-shell/assets/{timeline-definition-PNZ67QCA-UDaQp9sP.js → timeline-definition-PNZ67QCA-BBRh0mgZ.js} +1 -1
  298. package/web-shell/assets/{vennDiagram-CIIHVFJN-2ouhAnHO.js → vennDiagram-CIIHVFJN-B8Gs-REP.js} +1 -1
  299. package/web-shell/assets/{wardley-L42UT6IY-Cq_WEvTK.js → wardley-L42UT6IY-D_y80Ur7.js} +1 -1
  300. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Dt24aXOM.js → wardleyDiagram-YWT4CUSO-D-CNfHJ-.js} +1 -1
  301. package/web-shell/assets/{xychartDiagram-2RQKCTM6-A5Xk2WCH.js → xychartDiagram-2RQKCTM6-DQ5CvELo.js} +1 -1
  302. package/web-shell/index.html +2 -2
  303. package/chunks/create-sub-session-MWUWNBM6.js +0 -401
  304. package/web-shell/assets/channel-vfbVFuM1.js +0 -1
  305. package/web-shell/assets/classDiagram-4FO5ZUOK-Cvr8atq3.js +0 -1
  306. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Cvr8atq3.js +0 -1
  307. package/web-shell/assets/index-Cb1LjsCv.css +0 -5
  308. package/web-shell/assets/index-CvJDaIy8.js +0 -1756
  309. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DInOqnhZ.js +0 -1
@@ -6,7 +6,7 @@ import {
6
6
  EventBus,
7
7
  logEventSizingFailed,
8
8
  serializedBridgeEventByteLength
9
- } from "./chunk-GLWP3FDB.js";
9
+ } from "./chunk-MZSJ43WV.js";
10
10
  import {
11
11
  normalizeCompactedReplayMaxBytes,
12
12
  normalizeMaxJournalBytes,
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-OCPBI7J5.js";
18
18
  import {
19
19
  defaultSpawnChannelFactory
20
- } from "./chunk-2U7GPHA6.js";
20
+ } from "./chunk-E33LOKRA.js";
21
21
  import {
22
22
  BridgeChannelClosedError,
23
23
  BridgeTimeoutError,
@@ -26,11 +26,12 @@ import {
26
26
  STATUS_SCHEMA_VERSION,
27
27
  createIdleWorkspaceExtensionsStatus,
28
28
  createIdleWorkspaceHooksStatus
29
- } from "./chunk-WIRAPZ62.js";
29
+ } from "./chunk-NLREQJFK.js";
30
30
  import {
31
31
  CHANNEL_STARTUP_PROFILE_META_KEY,
32
32
  CHANNEL_STARTUP_PROFILE_VERSION,
33
33
  DAEMON_CHANNEL_DELIVERY_META_KEY,
34
+ DAEMON_MODEL_PROMPT_META_KEY,
34
35
  LOAD_REPLAY_BULK_MODE,
35
36
  LOAD_REPLAY_HIDE_INHERITED_META_KEY,
36
37
  LOAD_REPLAY_META_KEY,
@@ -42,8 +43,9 @@ import {
42
43
  REQUESTED_SESSION_ID_META_KEY,
43
44
  TODO_STOP_GUARD_CONTINUATION_CLAIM_METHOD,
44
45
  TODO_STOP_GUARD_QUEUE_RELEASE_METHOD,
45
- WORKTREE_MCP_DEFER_META_KEY
46
- } from "./chunk-UKZEXS6K.js";
46
+ WORKTREE_MCP_DEFER_META_KEY,
47
+ isValidTrustedModelPrompt
48
+ } from "./chunk-R574ATRM.js";
47
49
  import {
48
50
  BranchWhilePromptActiveError,
49
51
  CancelSentinelCollisionError,
@@ -71,9 +73,12 @@ import {
71
73
  } from "./chunk-6PLDPT2C.js";
72
74
  import {
73
75
  CHANNEL_DELIVERY_ERROR_CODES,
76
+ LIVE_TASK_TOOL_NAMES,
77
+ MAX_LIVE_SCREEN_CONTEXT_TEXT_CHARS,
78
+ MAX_LIVE_SPEAK_TO_USER_MESSAGE_CHARS,
74
79
  MAX_SUB_SESSION_NAME_CHARS,
75
80
  MAX_SUB_SESSION_PROMPT_CHARS
76
- } from "./chunk-BK2UNYWD.js";
81
+ } from "./chunk-HIBNSEJE.js";
77
82
  import {
78
83
  EXTERNAL_TOOL_GUARD_READY_META_KEY,
79
84
  EXTERNAL_TOOL_GUARD_REQUIRED_VALUE,
@@ -95,16 +100,16 @@ import {
95
100
  metadataBudgetBytes,
96
101
  normalizeSnapshotPayload,
97
102
  stableSessionArtifactId
98
- } from "./chunk-DOA7MCDY.js";
103
+ } from "./chunk-I3LJQR5I.js";
99
104
  import {
100
105
  DAEMON_TRACEPARENT_META_KEY,
101
106
  DAEMON_TRACESTATE_META_KEY
102
- } from "./chunk-MGSSJT27.js";
107
+ } from "./chunk-L4N6TIP7.js";
103
108
  import {
104
109
  INVOCATION_CONTEXT_META_KEY,
105
110
  PRIVATE_ACP_CAPABILITY_ENV,
106
111
  PRIVATE_PARENT_CAPABILITY_META_KEY
107
- } from "./chunk-O656RSMC.js";
112
+ } from "./chunk-FTJUO7R2.js";
108
113
  import {
109
114
  init_esbuild_shims
110
115
  } from "./chunk-5O2XNYP6.js";
@@ -1835,7 +1840,7 @@ function sliceLineRange(content, startLine, endLine) {
1835
1840
  }
1836
1841
  __name(sliceLineRange, "sliceLineRange");
1837
1842
  var BridgeClient = class {
1838
- constructor(resolveEntry, resolvePendingRestoreEvents, mediator, permissionTimeoutMs, maxPendingPerSession, fileSystem, onModelPromoted, onModePromoted, clientMcpSender, ownsSession = () => true, onTokenUsage, onCreateSubSession, onGenerationEvent, onWorkspaceGenerationEvent, onChannelDelivery, hasSessionSpawnInFlight = () => false, externalToolGuard) {
1843
+ constructor(resolveEntry, resolvePendingRestoreEvents, mediator, permissionTimeoutMs, maxPendingPerSession, fileSystem, onModelPromoted, onModePromoted, clientMcpSender, ownsSession = () => true, onTokenUsage, onCreateSubSession, onGenerationEvent, onWorkspaceGenerationEvent, onChannelDelivery, hasSessionSpawnInFlight = () => false, getLiveScreenContextCaptureHandler = () => void 0, getLiveTaskToolRequestHandler = () => void 0, getLiveSpeakToUserHandler = () => void 0, externalToolGuard) {
1839
1844
  this.resolveEntry = resolveEntry;
1840
1845
  this.resolvePendingRestoreEvents = resolvePendingRestoreEvents;
1841
1846
  this.mediator = mediator;
@@ -1852,6 +1857,9 @@ var BridgeClient = class {
1852
1857
  this.onWorkspaceGenerationEvent = onWorkspaceGenerationEvent;
1853
1858
  this.onChannelDelivery = onChannelDelivery;
1854
1859
  this.hasSessionSpawnInFlight = hasSessionSpawnInFlight;
1860
+ this.getLiveScreenContextCaptureHandler = getLiveScreenContextCaptureHandler;
1861
+ this.getLiveTaskToolRequestHandler = getLiveTaskToolRequestHandler;
1862
+ this.getLiveSpeakToUserHandler = getLiveSpeakToUserHandler;
1855
1863
  this.externalToolGuard = externalToolGuard;
1856
1864
  }
1857
1865
  static {
@@ -2130,6 +2138,15 @@ var BridgeClient = class {
2130
2138
  if (method === SERVE_CONTROL_EXT_METHODS.createSubSession) {
2131
2139
  return this.handleCreateSubSession(params);
2132
2140
  }
2141
+ if (method === SERVE_CONTROL_EXT_METHODS.liveCaptureScreenContext) {
2142
+ return this.handleLiveScreenContextCapture(params);
2143
+ }
2144
+ if (method === SERVE_CONTROL_EXT_METHODS.liveTaskTool) {
2145
+ return this.handleLiveTaskTool(params);
2146
+ }
2147
+ if (method === SERVE_CONTROL_EXT_METHODS.liveSpeakToUser) {
2148
+ return this.handleLiveSpeakToUser(params);
2149
+ }
2133
2150
  if (method === SERVE_CONTROL_EXT_METHODS.channelDelivery) {
2134
2151
  return this.handleChannelDelivery(params);
2135
2152
  }
@@ -2484,6 +2501,71 @@ var BridgeClient = class {
2484
2501
  ...result.parentSessionPersisted !== void 0 ? { parentSessionPersisted: result.parentSessionPersisted } : {}
2485
2502
  };
2486
2503
  }
2504
+ async handleLiveScreenContextCapture(params) {
2505
+ const handler = this.getLiveScreenContextCaptureHandler();
2506
+ if (!handler) {
2507
+ throw RequestError.methodNotFound(
2508
+ SERVE_CONTROL_EXT_METHODS.liveCaptureScreenContext
2509
+ );
2510
+ }
2511
+ const callerSessionId = params["callerSessionId"];
2512
+ if (typeof callerSessionId !== "string" || callerSessionId.length === 0 || !this.ownsSession(callerSessionId)) {
2513
+ throw RequestError.invalidParams(
2514
+ void 0,
2515
+ "`callerSessionId` is required and must name a session owned by this connection"
2516
+ );
2517
+ }
2518
+ const result = await handler({ callerSessionId });
2519
+ if (result.appName.length === 0 || result.appName.length > 512 || result.windowTitle !== void 0 && result.windowTitle.length > 2048 || result.accessibilityText.length > MAX_LIVE_SCREEN_CONTEXT_TEXT_CHARS || result.screenshotPath.length === 0 || result.screenshotPath.length > 4096) {
2520
+ throw RequestError.internalError(void 0, "Invalid Appshot result.");
2521
+ }
2522
+ return {
2523
+ appName: result.appName,
2524
+ ...result.windowTitle ? { windowTitle: result.windowTitle } : {},
2525
+ accessibilityText: result.accessibilityText,
2526
+ screenshotPath: result.screenshotPath
2527
+ };
2528
+ }
2529
+ async handleLiveTaskTool(params) {
2530
+ const handler = this.getLiveTaskToolRequestHandler();
2531
+ if (!handler) {
2532
+ throw RequestError.methodNotFound(SERVE_CONTROL_EXT_METHODS.liveTaskTool);
2533
+ }
2534
+ const callerSessionId = params["callerSessionId"];
2535
+ const name = params["name"];
2536
+ const args = params["arguments"];
2537
+ if (typeof callerSessionId !== "string" || callerSessionId.length === 0 || !this.ownsSession(callerSessionId) || typeof name !== "string" || !LIVE_TASK_TOOL_NAMES.includes(
2538
+ name
2539
+ ) || typeof args !== "object" || args === null || Array.isArray(args)) {
2540
+ throw RequestError.invalidParams(
2541
+ void 0,
2542
+ "Invalid Live task-tool request."
2543
+ );
2544
+ }
2545
+ return handler({
2546
+ callerSessionId,
2547
+ name,
2548
+ arguments: args
2549
+ });
2550
+ }
2551
+ async handleLiveSpeakToUser(params) {
2552
+ const handler = this.getLiveSpeakToUserHandler();
2553
+ if (!handler) {
2554
+ throw RequestError.methodNotFound(
2555
+ SERVE_CONTROL_EXT_METHODS.liveSpeakToUser
2556
+ );
2557
+ }
2558
+ const callerSessionId = params["callerSessionId"];
2559
+ const message = params["message"];
2560
+ if (typeof callerSessionId !== "string" || callerSessionId.length === 0 || !this.ownsSession(callerSessionId) || typeof message !== "string" || message.trim().length === 0 || message.length > MAX_LIVE_SPEAK_TO_USER_MESSAGE_CHARS) {
2561
+ throw RequestError.invalidParams(
2562
+ void 0,
2563
+ "Invalid Live speak-to-user request."
2564
+ );
2565
+ }
2566
+ await handler({ callerSessionId, message });
2567
+ return { accepted: true };
2568
+ }
2487
2569
  /**
2488
2570
  * Handle child->bridge ACP `extNotification` calls. Recognized methods are
2489
2571
  * `qwen/notify/session/model-update`,
@@ -2493,11 +2575,26 @@ var BridgeClient = class {
2493
2575
  * `qwen/notify/session/prompt-suggestion` (followup assist),
2494
2576
  * `qwen/notify/session/artifact-event` (hook artifacts),
2495
2577
  * `qwen/notify/session/terminal-sequence`, and
2578
+ * `_qwencode/end_turn` (background-notification turns), and
2496
2579
  * `qwen/notify/session/mcp-budget-event` — each translated into a
2497
2580
  * session-scoped SSE frame. Unknown methods are dropped silently for
2498
2581
  * forward-compat.
2499
2582
  */
2500
2583
  async extNotification(method, params) {
2584
+ if (method === "_qwencode/end_turn") {
2585
+ const sessionId2 = params["sessionId"];
2586
+ const reason = params["reason"];
2587
+ if (typeof sessionId2 !== "string" || sessionId2.length === 0 || typeof reason !== "string" || reason.length === 0 || reason.length > 128 || params["source"] !== "background_notification") {
2588
+ return;
2589
+ }
2590
+ const entry = this.resolveEntry(sessionId2);
2591
+ if (!entry || !this.ownsSession(sessionId2)) return;
2592
+ entry.events.publish({
2593
+ type: "background_notification_turn_complete",
2594
+ data: { sessionId: sessionId2, reason }
2595
+ });
2596
+ return;
2597
+ }
2501
2598
  if (method === "qwen/notify/session/generation/event") {
2502
2599
  const sessionId2 = params["sessionId"];
2503
2600
  const requestId = params["requestId"];
@@ -5993,6 +6090,9 @@ var DEFAULT_MAX_PENDING_PER_SESSION = 64;
5993
6090
  var DEFAULT_SESSION_REAP_INTERVAL_MS = 6e4;
5994
6091
  var DEFAULT_SESSION_IDLE_TIMEOUT_MS = 30 * 6e4;
5995
6092
  function createAcpSessionBridge(opts) {
6093
+ let liveScreenContextCaptureHandler;
6094
+ let liveTaskToolRequestHandler;
6095
+ let liveSpeakToUserHandler;
5996
6096
  const defaultSessionScope = opts.sessionScope ?? "single";
5997
6097
  let maxSessions;
5998
6098
  if (opts.maxSessions === void 0) {
@@ -6560,6 +6660,9 @@ function createAcpSessionBridge(opts) {
6560
6660
  },
6561
6661
  opts.onChannelDelivery,
6562
6662
  () => channelInfo?.sessionIds === sessionIds && channelInfo.sessionSpawnsInFlight > 0,
6663
+ () => liveScreenContextCaptureHandler,
6664
+ () => liveTaskToolRequestHandler,
6665
+ () => liveSpeakToUserHandler,
6563
6666
  opts.externalToolGuard
6564
6667
  );
6565
6668
  connection = new ClientSideConnection(() => client, channel.stream);
@@ -7750,9 +7853,15 @@ function createAcpSessionBridge(opts) {
7750
7853
  };
7751
7854
  }
7752
7855
  if (action === "load") {
7856
+ const liveJournal = snapshot.liveJournal.map((event) => {
7857
+ if (!entry.activePromptId || event.type !== "history_truncated" || !event.data || typeof event.data !== "object" || event.data.scope !== "live_journal") {
7858
+ return event;
7859
+ }
7860
+ return { ...event, promptId: entry.activePromptId };
7861
+ });
7753
7862
  return {
7754
7863
  compactedReplay: snapshot.compactedTurns,
7755
- liveJournal: snapshot.liveJournal,
7864
+ liveJournal,
7756
7865
  lastEventId: snapshot.lastEventId,
7757
7866
  eventEpoch,
7758
7867
  ...replayStatus,
@@ -7923,6 +8032,7 @@ function createAcpSessionBridge(opts) {
7923
8032
  return {
7924
8033
  sessionId: existing.sessionId,
7925
8034
  workspaceCwd: existing.workspaceCwd,
8035
+ ...existing.effectiveCwd !== existing.workspaceCwd ? { currentCwd: existing.effectiveCwd } : {},
7926
8036
  attached: true,
7927
8037
  clientId,
7928
8038
  createdAt: existing.createdAt,
@@ -8120,6 +8230,7 @@ function createAcpSessionBridge(opts) {
8120
8230
  return {
8121
8231
  sessionId: racedEntry.sessionId,
8122
8232
  workspaceCwd: racedEntry.workspaceCwd,
8233
+ ...racedEntry.effectiveCwd !== racedEntry.workspaceCwd ? { currentCwd: racedEntry.effectiveCwd } : {},
8123
8234
  attached: true,
8124
8235
  clientId: clientId2,
8125
8236
  createdAt: racedEntry.createdAt,
@@ -8355,6 +8466,15 @@ function createAcpSessionBridge(opts) {
8355
8466
  __name(closeSessionImpl, "closeSessionImpl");
8356
8467
  startSessionReaper();
8357
8468
  const bridgeApi = {
8469
+ setLiveScreenContextCaptureHandler(handler) {
8470
+ liveScreenContextCaptureHandler = handler;
8471
+ },
8472
+ setLiveTaskToolRequestHandler(handler) {
8473
+ liveTaskToolRequestHandler = handler;
8474
+ },
8475
+ setLiveSpeakToUserHandler(handler) {
8476
+ liveSpeakToUserHandler = handler;
8477
+ },
8358
8478
  getDaemonStatusSnapshot() {
8359
8479
  return {
8360
8480
  limits: {
@@ -8478,6 +8598,7 @@ function createAcpSessionBridge(opts) {
8478
8598
  return {
8479
8599
  sessionId: existing.sessionId,
8480
8600
  workspaceCwd: existing.workspaceCwd,
8601
+ ...existing.effectiveCwd !== existing.workspaceCwd ? { currentCwd: existing.effectiveCwd } : {},
8481
8602
  attached: true,
8482
8603
  clientId,
8483
8604
  createdAt: existing.createdAt,
@@ -8581,6 +8702,12 @@ function createAcpSessionBridge(opts) {
8581
8702
  entry,
8582
8703
  context?.clientId
8583
8704
  );
8705
+ const modelPrompt = context?.modelPrompt;
8706
+ if (modelPrompt !== void 0 && !isValidTrustedModelPrompt(modelPrompt)) {
8707
+ throw new TypeError(
8708
+ "Bridge modelPrompt must be a non-empty bounded string."
8709
+ );
8710
+ }
8584
8711
  if (signal?.aborted) {
8585
8712
  throw new DOMException("Prompt aborted", "AbortError");
8586
8713
  }
@@ -8627,6 +8754,14 @@ function createAcpSessionBridge(opts) {
8627
8754
  state: isQueued ? "queued" : "running"
8628
8755
  };
8629
8756
  entry.pendingPromptList.push(pendingEntry);
8757
+ try {
8758
+ context?.onPromptAdmitted?.();
8759
+ } catch (error) {
8760
+ opts.onDiagnosticLine?.(
8761
+ `qwen serve: prompt admission observer failed for session=${sessionId}: ${error instanceof Error ? error.message : String(error)}`,
8762
+ "warn"
8763
+ );
8764
+ }
8630
8765
  const deadlineMs = context?.deadlineMs;
8631
8766
  const hasDeadline = typeof deadlineMs === "number" && Number.isFinite(deadlineMs) && deadlineMs > 0;
8632
8767
  let deadlineReject;
@@ -8755,6 +8890,7 @@ function createAcpSessionBridge(opts) {
8755
8890
  delete meta[PRIVATE_PARENT_CAPABILITY_META_KEY];
8756
8891
  delete meta[DAEMON_CONTINUE_META_KEY];
8757
8892
  delete meta[DAEMON_CHANNEL_DELIVERY_META_KEY];
8893
+ delete meta[DAEMON_MODEL_PROMPT_META_KEY];
8758
8894
  if (isRetry) {
8759
8895
  meta[DAEMON_RETRY_META_KEY] = true;
8760
8896
  }
@@ -8764,6 +8900,9 @@ function createAcpSessionBridge(opts) {
8764
8900
  if (context?.channelDelivery) {
8765
8901
  meta[DAEMON_CHANNEL_DELIVERY_META_KEY] = context.channelDelivery;
8766
8902
  }
8903
+ if (modelPrompt !== void 0) {
8904
+ meta[DAEMON_MODEL_PROMPT_META_KEY] = modelPrompt;
8905
+ }
8767
8906
  meta[INVOCATION_CONTEXT_META_KEY] = invocationContext;
8768
8907
  if (Object.keys(meta).length > 0) {
8769
8908
  copy._meta = meta;
@@ -9292,7 +9431,8 @@ function createAcpSessionBridge(opts) {
9292
9431
  {
9293
9432
  sessionId,
9294
9433
  path: req.path,
9295
- ...req.allowedRoots ? { allowedRoots: req.allowedRoots } : {}
9434
+ ...req.allowedRoots ? { allowedRoots: req.allowedRoots } : {},
9435
+ ...req.managedRelocation ? { managedRelocation: req.managedRelocation } : {}
9296
9436
  }
9297
9437
  );
9298
9438
  const extResult = raw;
@@ -10030,6 +10170,20 @@ function createAcpSessionBridge(opts) {
10030
10170
  refreshed: result.refreshed ?? false
10031
10171
  };
10032
10172
  },
10173
+ async setSessionLiveConversationActive(sessionId, active) {
10174
+ await requestSessionStatus(
10175
+ sessionId,
10176
+ SERVE_CONTROL_EXT_METHODS.sessionLiveConversation,
10177
+ { active }
10178
+ );
10179
+ },
10180
+ async appendSessionLiveTranscript(sessionId, entries, model) {
10181
+ await requestSessionStatus(
10182
+ sessionId,
10183
+ SERVE_CONTROL_EXT_METHODS.sessionLiveTranscript,
10184
+ { entries, model }
10185
+ );
10186
+ },
10033
10187
  async setSessionApprovalMode(sessionId, mode, opts2, context) {
10034
10188
  const entry = byId.get(sessionId);
10035
10189
  if (!entry) throw new SessionNotFoundError(sessionId);
@@ -10237,6 +10391,24 @@ function createAcpSessionBridge(opts) {
10237
10391
  entry.midTurnMessageQueue.splice(index, 1);
10238
10392
  return { removed: true };
10239
10393
  },
10394
+ async enqueueBackgroundNotification(sessionId, notification) {
10395
+ const entry = byId.get(sessionId);
10396
+ if (!entry) throw new SessionNotFoundError(sessionId);
10397
+ const info = channelInfoForEntry(entry);
10398
+ if (!info || info.isDying) throw new SessionNotFoundError(sessionId);
10399
+ const response = await Promise.race([
10400
+ withTimeout(
10401
+ entry.connection.extMethod(
10402
+ SERVE_CONTROL_EXT_METHODS.sessionBackgroundNotification,
10403
+ { sessionId, ...notification }
10404
+ ),
10405
+ initTimeoutMs,
10406
+ SERVE_CONTROL_EXT_METHODS.sessionBackgroundNotification
10407
+ ),
10408
+ getTransportClosedReject(entry)
10409
+ ]);
10410
+ return { sessionId, accepted: response["accepted"] === true };
10411
+ },
10240
10412
  async generateSessionBtw(sessionId, question, signal, _context) {
10241
10413
  const entry = byId.get(sessionId);
10242
10414
  if (!entry) throw new SessionNotFoundError(sessionId);
@@ -11119,6 +11291,7 @@ export {
11119
11291
  SessionArtifactAuthorizationError,
11120
11292
  SESSION_SOURCE_META_KEY,
11121
11293
  parseSessionSource,
11294
+ isA2uiToolMeta,
11122
11295
  extractErrorMessage,
11123
11296
  extractErrorCode,
11124
11297
  classifyTurnErrorKind,
@@ -10,11 +10,11 @@ import {
10
10
  } from "./chunk-CPBF7KYF.js";
11
11
  import {
12
12
  atomicWriteJSON
13
- } from "./chunk-UH7Z7Y45.js";
13
+ } from "./chunk-FOGU3LJX.js";
14
14
  import {
15
15
  Storage,
16
16
  isNodeError
17
- } from "./chunk-3RXUYQJI.js";
17
+ } from "./chunk-OIVKILPI.js";
18
18
  import {
19
19
  init_esbuild_shims
20
20
  } from "./chunk-5O2XNYP6.js";
@@ -1,8 +1,11 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ MAX_INLINE_IMAGE_ENCODED_LENGTH
5
+ } from "./chunk-2VSTGY6M.js";
3
6
  import {
4
7
  MAX_TERMINAL_IMAGE_BYTES
5
- } from "./chunk-D7D7RXIJ.js";
8
+ } from "./chunk-IC4Z6LX6.js";
6
9
  import {
7
10
  init_esbuild_shims
8
11
  } from "./chunk-5O2XNYP6.js";
@@ -847,11 +850,15 @@ var MAX_PREVIEW_ROWS = 24;
847
850
  var ESTIMATED_CELL_WIDTH_PX = 8;
848
851
  var ESTIMATED_CELL_HEIGHT_PX = 16;
849
852
  var MAX_REASON_CHARS = 200;
853
+ var MAX_INLINE_IMAGE_DIMENSION = 1e6;
854
+ var MAX_INLINE_IMAGE_PIXELS = 64e6;
850
855
  var CMD_SHELL_METACHARACTERS = /[&|<>^%"!()\n\r]/;
851
856
  var RENDER_CACHE_LIMIT = 40;
852
857
  var RENDER_CACHE_BYTE_LIMIT = 32 * 1024 * 1024;
853
858
  var renderCache = /* @__PURE__ */ new Map();
854
859
  var renderCacheBytes = 0;
860
+ var INLINE_DECODE_CACHE_LIMIT = 4;
861
+ var inlineDecodeCache = /* @__PURE__ */ new Map();
855
862
  var TRANSMITTED_KEY_LIMIT = 256;
856
863
  var transmittedKeys = /* @__PURE__ */ new Set();
857
864
  function wasKittyImageWritten(key) {
@@ -896,6 +903,44 @@ function containsCmdShellMetacharacters(filePath) {
896
903
  return CMD_SHELL_METACHARACTERS.test(filePath);
897
904
  }
898
905
  __name(containsCmdShellMetacharacters, "containsCmdShellMetacharacters");
906
+ function prepareInlineTerminalImage({
907
+ data,
908
+ mimeType,
909
+ contentWidth,
910
+ availableTerminalHeight,
911
+ env = process.env,
912
+ stdoutIsTTY = process.stdout.isTTY,
913
+ disabled = false
914
+ }) {
915
+ const format = getImageFormat(mimeType);
916
+ const emptyFallback = format ? `[image: ${format}]` : "[image]";
917
+ if (format !== "png") {
918
+ return { fallbackText: emptyFallback, result: null };
919
+ }
920
+ const decoded = getDecodedInlinePng(data);
921
+ if (!decoded) {
922
+ return { fallbackText: emptyFallback, result: null };
923
+ }
924
+ const { png, size } = decoded;
925
+ const fallbackText = `[image: ${size.width}x${size.height} png]`;
926
+ if (disabled) {
927
+ return { fallbackText, result: null };
928
+ }
929
+ const shape = fitImageToTerminal2(size, contentWidth, availableTerminalHeight);
930
+ const useKitty = supportsKittyImageProtocol(env, stdoutIsTTY);
931
+ const chafaPath = useKitty ? null : findExecutable("chafa", env);
932
+ const cacheKey = createInlineRenderCacheKey(png, shape, useKitty, chafaPath);
933
+ const cached = getCachedRenderResult(cacheKey);
934
+ if (cached) {
935
+ return { fallbackText, result: cached };
936
+ }
937
+ const result = useKitty ? { ...renderKitty(png, shape), key: cacheKey } : renderWithChafa({ data: png }, shape, env, chafaPath);
938
+ if (result.kind !== "unavailable") {
939
+ rememberRenderResult(cacheKey, result);
940
+ }
941
+ return { fallbackText, result };
942
+ }
943
+ __name(prepareInlineTerminalImage, "prepareInlineTerminalImage");
899
944
  function renderTerminalImage({
900
945
  display,
901
946
  contentWidth,
@@ -959,7 +1004,7 @@ function renderTerminalImage({
959
1004
  reason: `Image exceeds the ${MAX_TERMINAL_IMAGE_BYTES} byte display limit.`
960
1005
  };
961
1006
  }
962
- const result = useKitty ? { ...renderKitty(png, shape), key: cacheKey } : renderWithChafa(display.filePath, shape, env, chafaPath);
1007
+ const result = useKitty ? { ...renderKitty(png, shape), key: cacheKey } : renderWithChafa({ filePath: display.filePath }, shape, env, chafaPath);
963
1008
  if (result.kind !== "unavailable") {
964
1009
  rememberRenderResult(cacheKey, result);
965
1010
  }
@@ -996,6 +1041,70 @@ function createRenderCacheKey(filePath, stat, shape, useKitty, chafaPath) {
996
1041
  ].join("\0");
997
1042
  }
998
1043
  __name(createRenderCacheKey, "createRenderCacheKey");
1044
+ function createInlineRenderCacheKey(png, shape, useKitty, chafaPath) {
1045
+ return [
1046
+ "inline",
1047
+ crypto2.createHash("sha256").update(png).digest("hex"),
1048
+ shape.widthCells,
1049
+ shape.rows,
1050
+ useKitty ? "kitty" : chafaPath ?? "none"
1051
+ ].join("\0");
1052
+ }
1053
+ __name(createInlineRenderCacheKey, "createInlineRenderCacheKey");
1054
+ function getImageFormat(mimeType) {
1055
+ const match = /^image\/([a-z0-9][a-z0-9.+-]*)$/.exec(
1056
+ mimeType.trim().toLowerCase()
1057
+ );
1058
+ return match?.[1] ?? null;
1059
+ }
1060
+ __name(getImageFormat, "getImageFormat");
1061
+ function decodeInlineImage(data) {
1062
+ if (data.length === 0 || data.length > MAX_INLINE_IMAGE_ENCODED_LENGTH) {
1063
+ return null;
1064
+ }
1065
+ const normalized = data.replace(/\s/g, "");
1066
+ if (normalized.length === 0 || normalized.length % 4 === 1 || !/^[A-Za-z0-9+/]*={0,2}$/.test(normalized)) {
1067
+ return null;
1068
+ }
1069
+ const decoded = Buffer.from(normalized, "base64");
1070
+ if (decoded.length === 0 || decoded.length > MAX_TERMINAL_IMAGE_BYTES || decoded.toString("base64").replace(/=+$/, "") !== normalized.replace(/=+$/, "")) {
1071
+ return null;
1072
+ }
1073
+ return decoded;
1074
+ }
1075
+ __name(decodeInlineImage, "decodeInlineImage");
1076
+ function getDecodedInlinePng(data) {
1077
+ const cached = inlineDecodeCache.get(data);
1078
+ if (cached) {
1079
+ inlineDecodeCache.delete(data);
1080
+ inlineDecodeCache.set(data, cached);
1081
+ return cached;
1082
+ }
1083
+ const png = decodeInlineImage(data);
1084
+ if (!png) return null;
1085
+ const size = readValidatedInlinePngSize(png);
1086
+ if (!size) return null;
1087
+ const decoded = { png, size };
1088
+ inlineDecodeCache.set(data, decoded);
1089
+ while (inlineDecodeCache.size > INLINE_DECODE_CACHE_LIMIT) {
1090
+ const oldest = inlineDecodeCache.keys().next().value;
1091
+ if (oldest === void 0) break;
1092
+ inlineDecodeCache.delete(oldest);
1093
+ }
1094
+ return decoded;
1095
+ }
1096
+ __name(getDecodedInlinePng, "getDecodedInlinePng");
1097
+ function readValidatedInlinePngSize(png) {
1098
+ if (png.length < 24 || png.readUInt32BE(8) !== 13 || png.subarray(12, 16).toString("ascii") !== "IHDR") {
1099
+ return null;
1100
+ }
1101
+ const size = readPngSize(png);
1102
+ if (!size || !Number.isInteger(size.width) || !Number.isInteger(size.height) || size.width <= 0 || size.height <= 0 || size.width > MAX_INLINE_IMAGE_DIMENSION || size.height > MAX_INLINE_IMAGE_DIMENSION || size.width * size.height > MAX_INLINE_IMAGE_PIXELS) {
1103
+ return null;
1104
+ }
1105
+ return size;
1106
+ }
1107
+ __name(readValidatedInlinePngSize, "readValidatedInlinePngSize");
999
1108
  function getCachedRenderResult(key) {
1000
1109
  const cached = renderCache.get(key);
1001
1110
  if (cached) {
@@ -1097,7 +1206,7 @@ function renderKitty(png, shape) {
1097
1206
  };
1098
1207
  }
1099
1208
  __name(renderKitty, "renderKitty");
1100
- function renderWithChafa(filePath, shape, env, chafaPath) {
1209
+ function renderWithChafa(source, shape, env, chafaPath) {
1101
1210
  if (!chafaPath) {
1102
1211
  return {
1103
1212
  kind: "unavailable",
@@ -1105,7 +1214,7 @@ function renderWithChafa(filePath, shape, env, chafaPath) {
1105
1214
  };
1106
1215
  }
1107
1216
  const useShell = shouldRunThroughShell(chafaPath);
1108
- if (useShell && containsCmdShellMetacharacters(filePath)) {
1217
+ if (useShell && "filePath" in source && containsCmdShellMetacharacters(source.filePath)) {
1109
1218
  return {
1110
1219
  kind: "unavailable",
1111
1220
  reason: "Image path contains characters that cannot be safely passed to the renderer on this platform."
@@ -1120,14 +1229,15 @@ function renderWithChafa(filePath, shape, env, chafaPath) {
1120
1229
  "--format=symbols",
1121
1230
  "--symbols=block",
1122
1231
  `--size=${shape.widthCells}x${shape.rows}`,
1123
- filePath
1232
+ "filePath" in source ? source.filePath : "-"
1124
1233
  ],
1125
1234
  {
1126
1235
  encoding: "utf8",
1127
1236
  env: createRendererChildEnv(env),
1128
1237
  shell: useShell,
1129
1238
  maxBuffer: CHAFA_MAX_OUTPUT_BYTES,
1130
- timeout: CHAFA_TIMEOUT_MS
1239
+ timeout: CHAFA_TIMEOUT_MS,
1240
+ ..."data" in source ? { input: source.data } : {}
1131
1241
  }
1132
1242
  );
1133
1243
  const lines = stdout.split(/\r?\n/).filter((line) => line.length > 0);
@@ -1150,12 +1260,14 @@ __name(firstLineBounded, "firstLineBounded");
1150
1260
 
1151
1261
  export {
1152
1262
  renderMermaidImageAsync,
1263
+ MAX_INLINE_IMAGE_PIXELS,
1153
1264
  TRANSMITTED_KEY_LIMIT,
1154
1265
  wasKittyImageWritten,
1155
1266
  markKittyImageWritten,
1156
1267
  supportsKittyImageProtocol,
1157
1268
  getTerminalImageRenderSupport,
1158
1269
  containsCmdShellMetacharacters,
1270
+ prepareInlineTerminalImage,
1159
1271
  renderTerminalImage
1160
1272
  };
1161
1273
  /**
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  expandHomeDir
5
- } from "./chunk-3RXUYQJI.js";
5
+ } from "./chunk-OIVKILPI.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";