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

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 (353) hide show
  1. package/bundled/browser-use/SKILL.md +11 -10
  2. package/bundled/browser-use/runtime/index.js +70 -31
  3. package/bundled/browser-use/runtime/native-host.js +1 -0
  4. package/bundled/browser-use/runtime/scripts/native-host-setup.js +1 -0
  5. package/bundled/computer-use/SKILL.md +182 -224
  6. package/bundled/qc-helper/docs/configuration/model-providers.md +13 -2
  7. package/bundled/qc-helper/docs/conversations-recovery.md +10 -0
  8. package/bundled/qc-helper/docs/features/browser-use.md +22 -12
  9. package/bundled/qc-helper/docs/features/channels/dingtalk.md +2 -2
  10. package/bundled/qc-helper/docs/features/channels/dws.md +7 -7
  11. package/bundled/qc-helper/docs/features/channels/feishu.md +1 -1
  12. package/bundled/qc-helper/docs/features/channels/github.md +13 -9
  13. package/bundled/qc-helper/docs/features/channels/gitlab.md +12 -5
  14. package/bundled/qc-helper/docs/features/channels/overview.md +121 -46
  15. package/bundled/qc-helper/docs/features/channels/plugins.md +12 -12
  16. package/bundled/qc-helper/docs/features/channels/qqbot.md +5 -5
  17. package/bundled/qc-helper/docs/features/channels/telegram.md +5 -5
  18. package/bundled/qc-helper/docs/features/channels/wecom.md +5 -4
  19. package/bundled/qc-helper/docs/features/channels/weixin.md +3 -3
  20. package/bundled/qc-helper/docs/features/code-review.md +4 -0
  21. package/bundled/qc-helper/docs/features/computer-use.md +1 -1
  22. package/bundled/qc-helper/docs/quickstart.md +14 -14
  23. package/bundled/qc-helper/docs/qwen-serve.md +10 -4
  24. package/bundled/review/SKILL.md +44 -9
  25. package/bundled/review/references/persistence.md +3 -4
  26. package/chunks/{MaxSizedBox-3RXPTLCS.js → MaxSizedBox-4MLWQHF3.js} +33 -31
  27. package/chunks/{StandaloneSessionPicker-74775YBZ.js → StandaloneSessionPicker-PDNU6KJJ.js} +50 -48
  28. package/chunks/{acp-subagent-executor-OQXOMTFK.js → acp-subagent-executor-JB2J6N73.js} +35 -33
  29. package/chunks/{acpAgent-MD56LD7L.js → acpAgent-CAPZFZCW.js} +123 -97
  30. package/chunks/{agent-75EZNG2Q.js → agent-MTWGIPWC.js} +18 -16
  31. package/chunks/{agent-headless-TQ6MWUDT.js → agent-headless-Z27XJSXK.js} +18 -16
  32. package/chunks/{anthropicContentGenerator-DCDXTX3R.js → anthropicContentGenerator-VAFZRJWG.js} +3 -3
  33. package/chunks/{askUserQuestion-2NU6CXK2.js → askUserQuestion-V4OFZD5D.js} +1 -1
  34. package/chunks/{bridge-KGJYQUWD.js → bridge-BUCSJHCE.js} +35 -33
  35. package/chunks/{channel-management-service-YN4A3BJ6.js → channel-management-service-Q2B7WUPL.js} +27 -10
  36. package/chunks/{channel-settings-store-773UOD6B.js → channel-settings-store-U25CVEL6.js} +42 -40
  37. package/chunks/{channel-worker-group-AKPVHRUO.js → channel-worker-group-QNX4OIMZ.js} +5 -5
  38. package/chunks/{channel-worker-manager-TDAQSKWX.js → channel-worker-manager-IJCPV4WY.js} +24 -5
  39. package/chunks/{channel-worker-supervisor-PUMSN4J2.js → channel-worker-supervisor-ENJ2AE2N.js} +4 -4
  40. package/chunks/{chunk-OU4ZCLGJ.js → chunk-242INZ6Y.js} +1 -1
  41. package/chunks/{chunk-JOFZBTVL.js → chunk-245NB3M4.js} +1 -1
  42. package/chunks/{chunk-LISITUEH.js → chunk-26KGIWIW.js} +1 -1
  43. package/chunks/{chunk-WPHZEGFC.js → chunk-2RQEWY2P.js} +1 -1
  44. package/chunks/{chunk-DCTJ3GVF.js → chunk-2SCE6YR2.js} +3 -3
  45. package/chunks/{chunk-STKUN7BR.js → chunk-2XNGG7R3.js} +1 -1
  46. package/chunks/{chunk-OQE7AA2W.js → chunk-36ZMEEBW.js} +16 -12
  47. package/chunks/{chunk-Y53WH7VD.js → chunk-44K6Q5AW.js} +3 -3
  48. package/chunks/{chunk-N4VKU36J.js → chunk-465XOJLQ.js} +1 -1
  49. package/chunks/{chunk-HD4IXPPC.js → chunk-4A4XNQEZ.js} +3 -3
  50. package/chunks/{chunk-RXB6Y33E.js → chunk-4VULJ3LV.js} +1 -1
  51. package/chunks/{chunk-EBRC4GX2.js → chunk-4XXUGJJS.js} +1 -1
  52. package/chunks/{chunk-MVC4XLNM.js → chunk-53IRNMPU.js} +118 -5
  53. package/chunks/{chunk-VGLXXHTF.js → chunk-5BLOZPTW.js} +1 -1
  54. package/chunks/{chunk-3SK2A75W.js → chunk-5OJQLD3P.js} +3 -3
  55. package/chunks/{chunk-WVNCMGAO.js → chunk-6FURC4LI.js} +1 -1
  56. package/chunks/{chunk-WVTM33Q3.js → chunk-6KXQIDK2.js} +4 -4
  57. package/chunks/{chunk-ZKDUQHU4.js → chunk-7MNHZUTA.js} +35 -18
  58. package/chunks/{chunk-JEIPBSGX.js → chunk-7P5WZQXF.js} +7 -7
  59. package/chunks/{chunk-GGUOO2XC.js → chunk-7RCAMBLN.js} +1 -1
  60. package/chunks/{chunk-FBLGI2SO.js → chunk-AAOMFXVZ.js} +7 -7
  61. package/chunks/{chunk-JM76TMGV.js → chunk-ACLD6C3R.js} +8798 -7901
  62. package/chunks/{chunk-4FCWKBOC.js → chunk-ALTMZEBU.js} +6 -6
  63. package/chunks/{chunk-ZHQSWNO6.js → chunk-AN62TPO6.js} +1 -1
  64. package/chunks/{chunk-U5DPG7JW.js → chunk-AYTI24XN.js} +1 -1
  65. package/chunks/{chunk-B53FO7JN.js → chunk-AZN2GSLM.js} +2 -2
  66. package/chunks/{chunk-6KQQPPFF.js → chunk-B3J4BSPL.js} +1 -1
  67. package/chunks/{chunk-SLSH5TFD.js → chunk-BMCDSO77.js} +4 -4
  68. package/chunks/{chunk-DBYUN4U3.js → chunk-BUDUHXX3.js} +1 -1
  69. package/chunks/{chunk-TS4Y2MHO.js → chunk-CGREZDGO.js} +1 -1
  70. package/chunks/chunk-CLNDQINM.js +523 -0
  71. package/chunks/{chunk-LNUQA3OE.js → chunk-CVRZNFXO.js} +1 -1
  72. package/chunks/{chunk-3DBI3LLL.js → chunk-CWLTXYKP.js} +4 -4
  73. package/chunks/{chunk-B3XMX4SN.js → chunk-DACCX4JI.js} +4 -4
  74. package/chunks/{chunk-YWZOEHBT.js → chunk-DE2WI7RU.js} +192 -62
  75. package/chunks/{chunk-3TQVPDCN.js → chunk-DU53RB7A.js} +2 -2
  76. package/chunks/{chunk-2KZURPTB.js → chunk-DZCTQ2MF.js} +6 -1
  77. package/chunks/{chunk-35SABQFH.js → chunk-DZUNDX4M.js} +1 -1
  78. package/chunks/{chunk-4INF7OYV.js → chunk-ELY2U74S.js} +2 -2
  79. package/chunks/chunk-EMGHODF7.js +56 -0
  80. package/chunks/{chunk-5FZKG4JB.js → chunk-EMOTEATH.js} +1 -1
  81. package/chunks/{chunk-LW7WW3Z5.js → chunk-ERGQUKZ2.js} +1 -1
  82. package/chunks/{chunk-TNWJJEDT.js → chunk-ES6EQNGR.js} +6 -6
  83. package/chunks/{chunk-E3TLOFX7.js → chunk-EUHSEMO4.js} +62 -7
  84. package/chunks/{chunk-N25B6FZN.js → chunk-EYCDA5MN.js} +2 -0
  85. package/chunks/{chunk-GPTEZLRR.js → chunk-F4ERRMCO.js} +25 -23
  86. package/chunks/{chunk-SXFZ5P7F.js → chunk-FE7D3WKV.js} +1 -1
  87. package/chunks/{chunk-XEXNBTYX.js → chunk-FH45BQGZ.js} +3 -3
  88. package/chunks/{chunk-CAORZAZD.js → chunk-FLBUHGL4.js} +10 -10
  89. package/chunks/{chunk-X2R47SFR.js → chunk-FLVPNMCS.js} +1 -1
  90. package/chunks/{chunk-5SZSV2CK.js → chunk-FVIJFKEQ.js} +3 -3
  91. package/chunks/{chunk-KFLDZ3HB.js → chunk-G6XRNTXF.js} +1 -1
  92. package/chunks/{chunk-2JHQ2J3Y.js → chunk-G72UHXC3.js} +5 -5
  93. package/chunks/{chunk-4A255ZI6.js → chunk-GAHZJLQG.js} +2 -2
  94. package/chunks/{chunk-7IVZOKKW.js → chunk-GKJGKTWJ.js} +3 -3
  95. package/chunks/{chunk-KY4HZXLV.js → chunk-GLPNIOEV.js} +33 -2
  96. package/chunks/{chunk-6PRSQUPJ.js → chunk-GQZZGEMS.js} +1 -1
  97. package/chunks/{chunk-G2AE7GYZ.js → chunk-GRUASRWC.js} +1 -1
  98. package/chunks/{chunk-HH7R6RLK.js → chunk-GTQ35GRO.js} +1 -1
  99. package/chunks/{chunk-LWRJLRZS.js → chunk-GYLDOFLU.js} +3 -3
  100. package/chunks/{chunk-MZRJ2JJS.js → chunk-HDSI3RDN.js} +136 -9
  101. package/chunks/{chunk-RO5K7QUL.js → chunk-HHMJ5ONX.js} +45 -31
  102. package/chunks/{chunk-E4HNTYHK.js → chunk-HVVQYSBA.js} +32 -9
  103. package/chunks/{chunk-H2GVLBFU.js → chunk-I36GIR6K.js} +64 -2
  104. package/chunks/{chunk-VTFLRL55.js → chunk-IBRV4T3I.js} +2 -2
  105. package/chunks/{chunk-4VSTV4C2.js → chunk-IH22ZGZI.js} +53 -2
  106. package/chunks/{chunk-AOW7WIWE.js → chunk-IQH7Q5OP.js} +4 -4
  107. package/chunks/{chunk-OB444SG3.js → chunk-IYKGSUTA.js} +1 -1
  108. package/chunks/{chunk-HS5OZTQF.js → chunk-J2FLXQJM.js} +1 -1
  109. package/chunks/{chunk-BBCH7PBA.js → chunk-KACKEW2M.js} +2 -2
  110. package/chunks/{chunk-JE3J5HFM.js → chunk-KAOHUUM7.js} +62 -251
  111. package/chunks/{chunk-JCMDVGPR.js → chunk-KGLPVCX7.js} +2 -2
  112. package/chunks/{chunk-QKXZOHHQ.js → chunk-LDURD6EP.js} +15 -62
  113. package/chunks/{chunk-O4IH5UEC.js → chunk-LLIYDIGU.js} +20 -20
  114. package/chunks/{chunk-3XHMOJCP.js → chunk-MBC3PULP.js} +1 -1
  115. package/chunks/{chunk-SRZA7OU4.js → chunk-MMCGLNPP.js} +6 -6
  116. package/chunks/{chunk-3NG2ZQAJ.js → chunk-NZC74TT2.js} +1 -1
  117. package/chunks/{chunk-47C3HPMW.js → chunk-O5YL6KSX.js} +47 -18
  118. package/chunks/{chunk-EIHZ4FFM.js → chunk-O6PPYFQN.js} +3 -3
  119. package/chunks/{chunk-XCU752HT.js → chunk-OICDXWXP.js} +13 -19
  120. package/chunks/{chunk-VJCKLKZX.js → chunk-OOU7XOZF.js} +3 -3
  121. package/chunks/{chunk-OM5NSL25.js → chunk-P4P7CH7H.js} +38 -38
  122. package/chunks/{chunk-CIS4SY3R.js → chunk-PPBZHGEQ.js} +3 -3
  123. package/chunks/{chunk-PB7JBAHF.js → chunk-PVBIEIVZ.js} +0 -1
  124. package/chunks/{chunk-GG3MO6NO.js → chunk-PWGMHXIV.js} +2 -2
  125. package/chunks/{chunk-6N2PJAZG.js → chunk-PX2ZOOGQ.js} +1 -1
  126. package/chunks/{chunk-NNN2PKPV.js → chunk-PYYPSK6Q.js} +36 -495
  127. package/chunks/{chunk-TKOQGFRE.js → chunk-PZOWKCPJ.js} +1 -1
  128. package/chunks/{chunk-PJ546DX4.js → chunk-Q36IJ74U.js} +17 -11
  129. package/chunks/chunk-Q4FJVWI4.js +78 -0
  130. package/chunks/{chunk-PA4HU5IQ.js → chunk-QATPE3SN.js} +13 -7
  131. package/chunks/{chunk-MBUUQJPV.js → chunk-QGKAYDES.js} +5 -5
  132. package/chunks/{chunk-TFBQ5CKI.js → chunk-QNEBHC2E.js} +1 -1
  133. package/chunks/{chunk-6NA357SF.js → chunk-QTNSMJKU.js} +1 -1
  134. package/chunks/{chunk-TDLEDOJN.js → chunk-QU7VULWX.js} +5 -4
  135. package/chunks/{chunk-LOTGIM6V.js → chunk-R3IFSY55.js} +20 -20
  136. package/chunks/{chunk-ZX6EZ7EH.js → chunk-RBE3WRSN.js} +3 -3
  137. package/chunks/{chunk-YSZ2XZTG.js → chunk-RBKZ6SK4.js} +5 -5
  138. package/chunks/{chunk-FLRFAPDA.js → chunk-RCL6OXZC.js} +5 -5
  139. package/chunks/{chunk-H4W6TJFJ.js → chunk-RONRTFAQ.js} +1 -1
  140. package/chunks/{chunk-ZEGLZ3MN.js → chunk-SCYKHWRM.js} +5 -5
  141. package/chunks/{chunk-STUJ7IMZ.js → chunk-SI7XKACY.js} +56 -56
  142. package/chunks/{chunk-RL2HSTEB.js → chunk-SYZPPX3O.js} +1492 -1140
  143. package/chunks/{chunk-VUYJRNG5.js → chunk-T7TJPVTY.js} +3 -3
  144. package/chunks/{chunk-4V5YKOBI.js → chunk-TF7UC7F6.js} +3 -3
  145. package/chunks/{chunk-NXZD3VNX.js → chunk-TL7DSR47.js} +1 -1
  146. package/chunks/{chunk-BVFBDXI2.js → chunk-TPFV5YZK.js} +1 -1
  147. package/chunks/{chunk-YIHOHHJL.js → chunk-TZHXHWEW.js} +1 -1
  148. package/chunks/{chunk-3X5BDEXS.js → chunk-U6RMVE5X.js} +8 -8
  149. package/chunks/{chunk-HRVFPNGT.js → chunk-VFNKO4FK.js} +4 -4
  150. package/chunks/{chunk-VPALWDQL.js → chunk-VUIH3BQL.js} +31 -12
  151. package/chunks/{chunk-WVNML4HH.js → chunk-VW33WARJ.js} +1 -1
  152. package/chunks/{chunk-MICQVBPI.js → chunk-WCLHOKAZ.js} +1 -1
  153. package/chunks/{chunk-KMQ2ZH3Q.js → chunk-WVWCRZ6M.js} +2 -2
  154. package/chunks/{chunk-5NFAKADR.js → chunk-WZCVB2ER.js} +1 -36
  155. package/chunks/{chunk-JNQEW7B2.js → chunk-X3A72KX5.js} +6 -6
  156. package/chunks/{chunk-3JSIWFNA.js → chunk-XHHUGXYW.js} +527 -135
  157. package/chunks/{chunk-VIA4STCR.js → chunk-YCCBLTSL.js} +3 -3
  158. package/chunks/{chunk-Q5IEY2TN.js → chunk-Z3I5B4DH.js} +1 -1
  159. package/chunks/{chunk-O346IB64.js → chunk-ZAJNI63I.js} +1 -1
  160. package/chunks/{chunk-QR4U27UW.js → chunk-ZJFCDRVP.js} +4 -4
  161. package/chunks/{codex-subagent-executor-437LQYGM.js → codex-subagent-executor-IKWULWIZ.js} +35 -33
  162. package/chunks/{config-utils-CVLI36KM.js → config-utils-3IOTAFBG.js} +38 -34
  163. package/chunks/{contextCommand-2KSW7H5F.js → contextCommand-ZKG2JFCR.js} +33 -31
  164. package/chunks/{core-runtime-4IB27E7J.js → core-runtime-5CAK5DSM.js} +32 -30
  165. package/chunks/{create-sub-session-A73TQDAN.js → create-sub-session-DG4CVOQC.js} +33 -31
  166. package/chunks/{daemon-Y6AOK7LF.js → daemon-D4OAVQKB.js} +1 -1
  167. package/chunks/{daemon-git-worktree-guard-BTKVV3DZ.js → daemon-git-worktree-guard-S3SFT3H7.js} +32 -30
  168. package/chunks/{daemon-status-provider-ETDIOWMS.js → daemon-status-provider-GG64ZJR3.js} +40 -38
  169. package/chunks/{daemon-trust-policy-U5SPHJLP.js → daemon-trust-policy-XNWYLQ32.js} +38 -36
  170. package/chunks/{daemon-trust-policy-monitor-QKRCO5WI.js → daemon-trust-policy-monitor-DR5CRWMM.js} +38 -36
  171. package/chunks/{deferred-core-runtime-FRELZPIE.js → deferred-core-runtime-V4Q674KN.js} +32 -30
  172. package/chunks/{dist-54LGNLWW.js → dist-3M75XY4G.js} +1 -1
  173. package/chunks/{dist-YZBMQPNS.js → dist-6U5NQYA7.js} +5 -5
  174. package/chunks/{dist-FVMLRUVM.js → dist-AS2RPYOB.js} +1 -1
  175. package/chunks/{dist-HANHY2MK.js → dist-GFT4GU72.js} +2 -2
  176. package/chunks/{dist-Y5GP7SWL.js → dist-J7JK3GPY.js} +10 -9
  177. package/chunks/{dist-O723VE2K.js → dist-JTPRKF5H.js} +30 -27
  178. package/chunks/{dist-MGZKUISU.js → dist-MOO5VOC5.js} +7 -20
  179. package/chunks/{dist-IZ66D5A3.js → dist-NJ2L5QKL.js} +1 -1
  180. package/chunks/{dist-EI2XAB4W.js → dist-YC6LDCKH.js} +22 -28
  181. package/chunks/{edit-TQ3CABYP.js → edit-FPIWTN3L.js} +20 -18
  182. package/chunks/{enter-worktree-J46XVFRS.js → enter-worktree-55OWD4LT.js} +4 -3
  183. package/chunks/{enterPlanMode-JHOWELZO.js → enterPlanMode-GDZVXYB2.js} +18 -16
  184. package/chunks/{environment-LUM7XX27.js → environment-Q2BVTUQO.js} +36 -32
  185. package/chunks/{errors-SH32ID5I.js → errors-MZTLVUEM.js} +34 -32
  186. package/chunks/{execution-sandbox-settings-HIYVUBII.js → execution-sandbox-settings-3WJ67GX3.js} +3 -1
  187. package/chunks/{execution-tool-IIEL25CL.js → execution-tool-DZ4XSEFZ.js} +21 -19
  188. package/chunks/{execution-worker-NKKEZ4XF.js → execution-worker-L3TM3F5D.js} +24 -22
  189. package/chunks/{exit-worktree-BC4SDZCC.js → exit-worktree-MI6N4OUP.js} +4 -3
  190. package/chunks/{exitPlanMode-PUICCCQ5.js → exitPlanMode-VIGOD2KP.js} +18 -16
  191. package/chunks/{fast-path-QH3QTZZA.js → fast-path-JCKEFUUL.js} +4 -4
  192. package/chunks/{fast-path-settings-TQAYWLXR.js → fast-path-settings-VIYSH3SD.js} +2 -2
  193. package/chunks/{glob-OEB4WH3Z.js → glob-UOKQZHKL.js} +18 -16
  194. package/chunks/{goal-tools-KWGKFUSK.js → goal-tools-G4RIX4ER.js} +18 -16
  195. package/chunks/{handleAutoUpdate-KEA7JSUD.js → handleAutoUpdate-UZZEGL3N.js} +34 -32
  196. package/chunks/{i18n-AC3MUXKZ.js → i18n-IL33FVND.js} +32 -30
  197. package/chunks/{initializer-WBD32BEX.js → initializer-BCXBRM6Y.js} +38 -36
  198. package/chunks/{installationInfo-JRGFTKWY.js → installationInfo-V7OKUOJV.js} +32 -30
  199. package/chunks/{list-S7KW7NBX.js → list-LQHG6SXA.js} +41 -39
  200. package/chunks/{llm-E32WLISX.js → llm-JWCANCDC.js} +85 -74
  201. package/chunks/{llm-content-generator-OMKJHC5P.js → llm-content-generator-OXMMHUVK.js} +3 -3
  202. package/chunks/{loadedSettingsAdapter-5OSU3J46.js → loadedSettingsAdapter-EKXSRWMY.js} +38 -36
  203. package/chunks/{local-execution-environment-IQHCTUJ5.js → local-execution-environment-XIQLRMLF.js} +24 -22
  204. package/chunks/{loggingContentGenerator-JIYG3LJS.js → loggingContentGenerator-6KHNZDTZ.js} +20 -18
  205. package/chunks/{managed-npm-update-RKAT7AMQ.js → managed-npm-update-MBUH5TIX.js} +32 -30
  206. package/chunks/managed-runtime-attestation-worker-G23AEEMF.js +367 -0
  207. package/chunks/{mcp-SV72BZKG.js → mcp-AYVCEEN7.js} +38 -36
  208. package/chunks/{model-call-collection-PKDMVCZN.js → model-call-collection-OKUGOY4B.js} +1 -1
  209. package/chunks/{model-configuration-A52XMQW7.js → model-configuration-Q3MNGG3B.js} +38 -36
  210. package/chunks/{modelConfigUtils-7O4P3SLE.js → modelConfigUtils-WC5XDR34.js} +33 -31
  211. package/chunks/{monitor-ZXRV2DJB.js → monitor-7JUZXYZN.js} +18 -16
  212. package/chunks/{nonInteractiveCli-UPSGIYRC.js → nonInteractiveCli-B3GCZ6NJ.js} +74 -73
  213. package/chunks/{nonInteractiveToolExecutor-TDKVR43J.js → nonInteractiveToolExecutor-IUHO7PXG.js} +19 -17
  214. package/chunks/{notebook-edit-FBVHAHYM.js → notebook-edit-IYDACZDW.js} +19 -17
  215. package/chunks/{omni-3NREMV2Q.js → omni-DLBHISHC.js} +10 -7
  216. package/chunks/{openaiContentGenerator-EWPBZFIT.js → openaiContentGenerator-W5GN6H6Z.js} +12 -10
  217. package/chunks/{openaiResponsesContentGenerator-3CI3PINB.js → openaiResponsesContentGenerator-BXXRYJQQ.js} +5 -5
  218. package/chunks/{pidfile-BBUANGZX.js → pidfile-QIBF53CW.js} +32 -30
  219. package/chunks/{processUtils-6OHQLG7W.js → processUtils-2LU22KCR.js} +2 -2
  220. package/chunks/{prompt-terminal-ledger-ZBFYXJ4L.js → prompt-terminal-ledger-LXFVLR6C.js} +33 -31
  221. package/chunks/{qwenContentGenerator-62F5IKXJ.js → qwenContentGenerator-LYMLXBWI.js} +21 -19
  222. package/chunks/{reactive-degrade-URJMXJ7N.js → reactive-degrade-HPYBJHYA.js} +6 -6
  223. package/chunks/{read-file-IM4Q5TKI.js → read-file-SXS2MKDY.js} +6 -3
  224. package/chunks/{record-artifact-K4XSMW4X.js → record-artifact-XP3X7RE5.js} +3 -2
  225. package/chunks/{record-source-XZCI3IGU.js → record-source-2VBLKVIE.js} +2 -2
  226. package/chunks/{report-findings-MCGXBQFX.js → report-findings-D2QUYUOG.js} +4 -3
  227. package/chunks/{request-shutdown-TT62PREA.js → request-shutdown-R5SA5GE3.js} +1 -1
  228. package/chunks/{resumeHistoryUtils-O3NQMDVR.js → resumeHistoryUtils-UPGZGP5V.js} +35 -33
  229. package/chunks/{ripGrep-BG2FEVIV.js → ripGrep-X33VVIN5.js} +8 -5
  230. package/chunks/{run-qwen-serve-GMLWJITM.js → run-qwen-serve-CUB2NZ6P.js} +278 -79
  231. package/chunks/{runtime-SSGPOXRZ.js → runtime-2DAVBADX.js} +43 -41
  232. package/chunks/{sandboxConfig-ALYLLNWY.js → sandboxConfig-ESBH3F27.js} +34 -32
  233. package/chunks/{scheduled-tasks-QJTC5XQ7.js → scheduled-tasks-TGWYXZWW.js} +38 -36
  234. package/chunks/{scheduler-PEXTY7IG.js → scheduler-XGLZCXPN.js} +34 -32
  235. package/chunks/{send-message-3UM7XRTB.js → send-message-FBU6WDID.js} +1 -1
  236. package/chunks/{serve-OVAUTKXK.js → serve-7RX4AIID.js} +38 -36
  237. package/chunks/{server-3MMYOOJW.js → server-MJETIFJS.js} +1789 -375
  238. package/chunks/{session-PZBIKBQJ.js → session-7AVYU3TC.js} +75 -74
  239. package/chunks/{session-attachments-root-ESP5CNBV.js → session-attachments-root-RONFQ3D3.js} +32 -30
  240. package/chunks/{session-pr-refresh-B3N7PKUP.js → session-pr-refresh-ZPT6TAD4.js} +37 -35
  241. package/chunks/{settings-KSQ2DGPY.js → settings-FPMUAVWD.js} +37 -35
  242. package/chunks/{shell-3V26EVNC.js → shell-THD5EYOK.js} +18 -16
  243. package/chunks/{skill-XP7F3LBV.js → skill-2D6KXDC5.js} +52 -13
  244. package/chunks/{skill-settings-PDESL7S3.js → skill-settings-XW7X244B.js} +38 -36
  245. package/chunks/{spawnChannel-NVO7CCBW.js → spawnChannel-DBSAAUUT.js} +34 -32
  246. package/chunks/{standalone-update-FDWS2EGF.js → standalone-update-TFAWA676.js} +33 -31
  247. package/chunks/{start-opentui-ui-WIFFY5UD.js → start-opentui-ui-VYMAXPBH.js} +87 -86
  248. package/chunks/{startInteractiveUI-YBLIRIHD.js → startInteractiveUI-Z54XKH35.js} +1037 -966
  249. package/chunks/{task-create-PEI7AJLE.js → task-create-PVF66J3R.js} +2 -2
  250. package/chunks/{task-update-MQZRWBGK.js → task-update-RSIITTOK.js} +2 -2
  251. package/chunks/{team-create-Z5JUEMB7.js → team-create-TPCELNBJ.js} +18 -16
  252. package/chunks/{team-plan-approval-ZLLHMEQN.js → team-plan-approval-RUURGHQL.js} +18 -16
  253. package/chunks/{terminal-image-renderer-QFO2JTTT.js → terminal-image-renderer-SLJVUD4Z.js} +32 -30
  254. package/chunks/{theme-manager-N7ILUTRY.js → theme-manager-VBOIN2KT.js} +32 -30
  255. package/chunks/{tool-call-PLSQ34VE.js → tool-call-DUHP6UXC.js} +2 -2
  256. package/chunks/{tool-result-media-OAHUKGRK.js → tool-result-media-WU6QAREN.js} +10 -7
  257. package/chunks/{tool-search-534QKE2X.js → tool-search-ET4NH2LK.js} +7 -4
  258. package/chunks/{total-session-admission-EZJQKTPF.js → total-session-admission-UWMJWTWP.js} +35 -33
  259. package/chunks/{trustedFolders-4ZEV6RXD.js → trustedFolders-3WNZBUH7.js} +33 -31
  260. package/chunks/{update-relaunch-GB3SGRDP.js → update-relaunch-SHS3BD6V.js} +5 -5
  261. package/chunks/{updateCheck-DVAGAEQ4.js → updateCheck-MDF2FCRN.js} +32 -30
  262. package/chunks/{upload-config-DMZVTDH7.js → upload-config-LVVUIKA2.js} +4 -4
  263. package/chunks/{useAutoAcceptIndicator-PTQBS42B.js → useAutoAcceptIndicator-26OOM7OM.js} +41 -39
  264. package/chunks/{validateNonInterActiveAuth-DU3WXVSU.js → validateNonInterActiveAuth-TBCZCQIN.js} +72 -71
  265. package/chunks/{version-PNMZGKCV.js → version-MICV7I4Y.js} +1 -1
  266. package/chunks/{web-fetch-LMCOAHW6.js → web-fetch-3O2DFRE5.js} +13 -9
  267. package/chunks/{web-search-N7RR74LA.js → web-search-5FS3NB3D.js} +4 -4
  268. package/chunks/{web-shell-static-GI6FVIMI.js → web-shell-static-E3O6NW7Y.js} +4 -3
  269. package/chunks/{workflow-ZZPHI7FK.js → workflow-FRJO5ZUI.js} +19 -17
  270. package/chunks/{workspace-providers-status-TU73CNRF.js → workspace-providers-status-I5MO7Z2T.js} +43 -41
  271. package/chunks/{workspace-registration-store-743FRSOU.js → workspace-registration-store-CBHKV34L.js} +1 -1
  272. package/chunks/{workspace-registry-S7QTXFWM.js → workspace-registry-2UKNZO5M.js} +35 -33
  273. package/chunks/{workspace-runtime-coordinator-GWNDUIGO.js → workspace-runtime-coordinator-TKCI5WJW.js} +36 -34
  274. package/chunks/{workspace-service-CERZFJ3B.js → workspace-service-M3ZKR6WL.js} +40 -38
  275. package/chunks/{workspace-skills-status-5M3EIAUY.js → workspace-skills-status-OC3EYL7U.js} +41 -39
  276. package/chunks/{workspace-trust-reconciler-Q3LUKMQB.js → workspace-trust-reconciler-YQZSUOH4.js} +41 -39
  277. package/chunks/{write-file-CT54LXQL.js → write-file-BATJLBJX.js} +21 -19
  278. package/chunks/{zoom-image-EU3PGSZM.js → zoom-image-5I7DDLQE.js} +10 -6
  279. package/cli-entry.js +13 -0
  280. package/cli.js +24 -12
  281. package/execution-worker.js +1 -1
  282. package/export-transcript-document.css +1 -1
  283. package/export-transcript-document.js +104 -104
  284. package/package.json +3 -3
  285. package/web-shell/assets/{abnfDiagram-VCTEODGH-DDYEvG-M.js → abnfDiagram-VCTEODGH-DQHroFS1.js} +1 -1
  286. package/web-shell/assets/{arc-DQncKWFX.js → arc-BrOc_HVh.js} +1 -1
  287. package/web-shell/assets/{architectureDiagram-5GKGNRK7-C0-8u9zj.js → architectureDiagram-5GKGNRK7-DXce8IH6.js} +1 -1
  288. package/web-shell/assets/{blockDiagram-NRAW4CY4-Cpt59Ge5.js → blockDiagram-NRAW4CY4-96A3Q3-l.js} +1 -1
  289. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BvESWh83.js → c4Diagram-UCG6FXSJ-CQBg2PSg.js} +1 -1
  290. package/web-shell/assets/channel-CBP6pwSs.js +1 -0
  291. package/web-shell/assets/{chunk-2Q5K7J3B-wKulGIU6.js → chunk-2Q5K7J3B-i_jhVz-t.js} +1 -1
  292. package/web-shell/assets/{chunk-5VM5RSS4-BX6kRoq7.js → chunk-5VM5RSS4-Cx3gMrWT.js} +1 -1
  293. package/web-shell/assets/{chunk-F27PBJKO-wA4IqTt-.js → chunk-F27PBJKO-B9WwW7C0.js} +1 -1
  294. package/web-shell/assets/{chunk-G27WJ6UU-B7hzevlb.js → chunk-G27WJ6UU-B8t0FNPI.js} +1 -1
  295. package/web-shell/assets/{chunk-JWPE2WC7-BdBg9pJg.js → chunk-JWPE2WC7-Dg0__6CF.js} +1 -1
  296. package/web-shell/assets/{chunk-LCL6LL3I-DghmF6LJ.js → chunk-LCL6LL3I-DUwE5g3m.js} +1 -1
  297. package/web-shell/assets/{chunk-POPQ4Y6H-BbReTOod.js → chunk-POPQ4Y6H-BirYW5iS.js} +1 -1
  298. package/web-shell/assets/{chunk-SVP7TREG-C1t0_19D.js → chunk-SVP7TREG-_ONJKtFF.js} +1 -1
  299. package/web-shell/assets/{chunk-XXDRQBXY-DQBby5mI.js → chunk-XXDRQBXY-DGi0chgj.js} +1 -1
  300. package/web-shell/assets/classDiagram-DTDB5LWJ-_4_fFrN3.js +1 -0
  301. package/web-shell/assets/classDiagram-v2-JRS7N3AN-_4_fFrN3.js +1 -0
  302. package/web-shell/assets/{cose-bilkent-JH36ORCC-CNrSyg7B.js → cose-bilkent-JH36ORCC-BSSFxREn.js} +1 -1
  303. package/web-shell/assets/{cynefin-OW5HDTMX-DoxgDRN-.js → cynefin-OW5HDTMX-h-oYVCez.js} +1 -1
  304. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BmUwbS8Q.js → cynefinDiagram-5FMLGOSQ-CXj6T7Pm.js} +1 -1
  305. package/web-shell/assets/{dagre-3AP2YEHR-BJrOVIjc.js → dagre-3AP2YEHR-Ch9GIhJm.js} +1 -1
  306. package/web-shell/assets/{diagram-S7CK7UJ4-TDX4KU9V.js → diagram-S7CK7UJ4-Cq3W541T.js} +1 -1
  307. package/web-shell/assets/{diagram-UQ7AKVKN-D3VUQkGl.js → diagram-UQ7AKVKN-Bm1R5-sN.js} +1 -1
  308. package/web-shell/assets/{diagram-VSXAHHWV-CqCpgViy.js → diagram-VSXAHHWV-BW2qG6Vh.js} +1 -1
  309. package/web-shell/assets/{diagram-VX7I27RA-CthqfwCs.js → diagram-VX7I27RA-DN96PhRe.js} +1 -1
  310. package/web-shell/assets/{diagram-Z3DM3KII-BRY3Ahvu.js → diagram-Z3DM3KII-A8MnwaJr.js} +1 -1
  311. package/web-shell/assets/{ebnfDiagram-PWID7BFC-tJvTnIwp.js → ebnfDiagram-PWID7BFC-CZTpUypI.js} +1 -1
  312. package/web-shell/assets/{erDiagram-SSCWMZ5O-DT4b7w5B.js → erDiagram-SSCWMZ5O-CbxCRFru.js} +1 -1
  313. package/web-shell/assets/{flowDiagram-A5DVABFB-C5oirWSf.js → flowDiagram-A5DVABFB-Bt1PM2Dy.js} +1 -1
  314. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-ZD3kNlO4.js → ganttDiagram-EL5Y4UJY-CTgim3LX.js} +1 -1
  315. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Bp1sg_wH.js → gitGraphDiagram-WWUBYQGX-h4jX7S4l.js} +1 -1
  316. package/web-shell/assets/{index-DSIzVof7.js → index-BDxWHGNm.js} +1 -1
  317. package/web-shell/assets/index-Bd3iA5Er.js +2407 -0
  318. package/web-shell/assets/index-DuwfO01z.css +36 -0
  319. package/web-shell/assets/{infoDiagram-RXCK75RN-Btumz_CZ.js → infoDiagram-RXCK75RN-DsIsFmZ4.js} +1 -1
  320. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-Dx8_uvso.js → ishikawaDiagram-5VMMS53U-BgF2V3rC.js} +1 -1
  321. package/web-shell/assets/{journeyDiagram-EYS64GPL-DS5spUhj.js → journeyDiagram-EYS64GPL-CJ2ibWhB.js} +1 -1
  322. package/web-shell/assets/{kanban-definition-3QL26DDD-DttC9d4D.js → kanban-definition-3QL26DDD-oqNfpjND.js} +1 -1
  323. package/web-shell/assets/{layout-BDOJQJbX.js → layout-DKF2f-UC.js} +1 -1
  324. package/web-shell/assets/{linear-BsUVMxld.js → linear-CadmYA8J.js} +1 -1
  325. package/web-shell/assets/{mermaid.core-De4-EW4Z.js → mermaid.core-BSD13L-h.js} +6 -6
  326. package/web-shell/assets/{mindmap-definition-FBJOCRG2-BsYY98Wv.js → mindmap-definition-FBJOCRG2-Cg3jlHzV.js} +1 -1
  327. package/web-shell/assets/{pegDiagram-XKGWAZYB-DXnnQrVY.js → pegDiagram-XKGWAZYB-BGzqlBWk.js} +1 -1
  328. package/web-shell/assets/{pieDiagram-E7YTZNPT-DGLAGUYR.js → pieDiagram-E7YTZNPT-BVDdPYnC.js} +1 -1
  329. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-Y8DcMTa5.js → quadrantDiagram-AXDQQJYC-D7maRW6r.js} +1 -1
  330. package/web-shell/assets/{railroadDiagram-O6MQD6OU-ZgauslUZ.js → railroadDiagram-O6MQD6OU-C7J0Nnqc.js} +1 -1
  331. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-Kxtu4twe.js → requirementDiagram-EFPCY7ZU-CDEpUB7S.js} +1 -1
  332. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-BKsLF9EA.js → sankeyDiagram-P5KCCOFB-DoA0BWeR.js} +1 -1
  333. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-D8sCv1NK.js → sequenceDiagram-WJ2MYXX4-DlqRjDLl.js} +1 -1
  334. package/web-shell/assets/{sizeCapture-X5ZJPWSS-BX8sokZX.js → sizeCapture-X5ZJPWSS-3l2EJ1DB.js} +1 -1
  335. package/web-shell/assets/{stateDiagram-HBIQ2CUA-DFMl58kv.js → stateDiagram-HBIQ2CUA-Bdq0N6Lr.js} +1 -1
  336. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DtdYpKZp.js +1 -0
  337. package/web-shell/assets/{swimlanes-XN3QIQJK-BnMwURLN.js → swimlanes-XN3QIQJK-B4ArxdLV.js} +1 -1
  338. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-B_iL0Dc4.js +8 -0
  339. package/web-shell/assets/{timeline-definition-24CTP7MA-C8y77DDz.js → timeline-definition-24CTP7MA-B_Ug6D_k.js} +1 -1
  340. package/web-shell/assets/{vennDiagram-4TSXK5OY-DOWQgX9u.js → vennDiagram-4TSXK5OY-BR9tvaDT.js} +1 -1
  341. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-BM0AVIzE.js → wardleyDiagram-VM6X3IG4-BdGIt6qE.js} +1 -1
  342. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-B18-YghG.js → xychartDiagram-S5SC5T6Z-NxS8XkXN.js} +1 -1
  343. package/web-shell/index.html +2 -2
  344. package/web-shell/sw.js +1 -1
  345. package/bundled/computer-use/references/macos.md +0 -208
  346. package/bundled/computer-use/references/windows-linux.md +0 -247
  347. package/web-shell/assets/channel-B88Zt8_x.js +0 -1
  348. package/web-shell/assets/classDiagram-DTDB5LWJ-Dp-7ruHm.js +0 -1
  349. package/web-shell/assets/classDiagram-v2-JRS7N3AN-Dp-7ruHm.js +0 -1
  350. package/web-shell/assets/index-CpxLhWqx.js +0 -2337
  351. package/web-shell/assets/index-mr0Sw0G-.css +0 -36
  352. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B3HSbbo2.js +0 -1
  353. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-FnO0SUMi.js +0 -8
@@ -43,6 +43,12 @@ function parseExecutionSandboxSettings(value) {
43
43
  return { ...value };
44
44
  }
45
45
  __name(parseExecutionSandboxSettings, "parseExecutionSandboxSettings");
46
+ var FIRST_NON_V1_SETTINGS_VERSION = 2;
47
+ function legacyUsageStatisticsEnabled(scope) {
48
+ const version = scope.$version;
49
+ return typeof version === "number" && version >= FIRST_NON_V1_SETTINGS_VERSION ? void 0 : scope.usageStatisticsEnabled;
50
+ }
51
+ __name(legacyUsageStatisticsEnabled, "legacyUsageStatisticsEnabled");
46
52
  function selectOperatorExecutionSandbox(...scopes) {
47
53
  let selected;
48
54
  for (const scope of scopes) {
@@ -53,8 +59,29 @@ function selectOperatorExecutionSandbox(...scopes) {
53
59
  }
54
60
  __name(selectOperatorExecutionSandbox, "selectOperatorExecutionSandbox");
55
61
  function readOperatorSandboxSettings() {
62
+ return sandboxSettingsFromScopes(readOperatorSettingsScopes());
63
+ }
64
+ __name(readOperatorSandboxSettings, "readOperatorSandboxSettings");
65
+ function readBareModeOperatorSettings() {
66
+ const scopes = readOperatorSettingsScopes();
67
+ const usageStatisticsEnabled = scopes.reduce(
68
+ (current, scope) => {
69
+ const value = scope.privacy?.usageStatisticsEnabled ?? legacyUsageStatisticsEnabled(scope);
70
+ if (value === void 0 || value === null) return current;
71
+ if (typeof value === "boolean") return value;
72
+ return value ? current : false;
73
+ },
74
+ void 0
75
+ );
76
+ return {
77
+ ...sandboxSettingsFromScopes(scopes),
78
+ ...usageStatisticsEnabled === void 0 ? {} : { privacy: { usageStatisticsEnabled } }
79
+ };
80
+ }
81
+ __name(readBareModeOperatorSettings, "readBareModeOperatorSettings");
82
+ function readOperatorSettingsScopes() {
56
83
  const userSettingsPath = path.join(getGlobalQwenDirLite(), "settings.json");
57
- const scopes = [
84
+ return [
58
85
  getSystemDefaultsPath(),
59
86
  userSettingsPath,
60
87
  getSystemSettingsPath()
@@ -92,6 +119,9 @@ function readOperatorSandboxSettings() {
92
119
  );
93
120
  }
94
121
  });
122
+ }
123
+ __name(readOperatorSettingsScopes, "readOperatorSettingsScopes");
124
+ function sandboxSettingsFromScopes(scopes) {
95
125
  const executionSandbox = selectOperatorExecutionSandbox(...scopes);
96
126
  const sandbox = scopes.reduce(
97
127
  (current, scope) => scope.tools?.sandbox ?? current,
@@ -99,7 +129,7 @@ function readOperatorSandboxSettings() {
99
129
  );
100
130
  return { tools: { executionSandbox, sandbox } };
101
131
  }
102
- __name(readOperatorSandboxSettings, "readOperatorSandboxSettings");
132
+ __name(sandboxSettingsFromScopes, "sandboxSettingsFromScopes");
103
133
  function validateExecutionSandboxSelection(settings, args = {}) {
104
134
  const policy = parseExecutionSandboxSettings(
105
135
  settings.tools?.executionSandbox
@@ -133,6 +163,7 @@ export {
133
163
  parseExecutionSandboxSettings,
134
164
  selectOperatorExecutionSandbox,
135
165
  readOperatorSandboxSettings,
166
+ readBareModeOperatorSettings,
136
167
  validateExecutionSandboxSelection,
137
168
  assertExecutionSandboxSupported
138
169
  };
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  getGlobalQwenDir
5
- } from "./chunk-YWZOEHBT.js";
5
+ } from "./chunk-DE2WI7RU.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  SERVE_CONTROL_EXT_METHODS,
5
5
  STATUS_SCHEMA_VERSION
6
- } from "./chunk-RXB6Y33E.js";
6
+ } from "./chunk-4VULJ3LV.js";
7
7
  import {
8
8
  AcpChildCapacityExceededError,
9
9
  WorkspaceDrainingError
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  getPlanRequiredTeammatePreApprovalMessage,
8
8
  isPlanRequiredTeammateAwaitingApproval
9
- } from "./chunk-47C3HPMW.js";
9
+ } from "./chunk-O5YL6KSX.js";
10
10
  import {
11
11
  resolveActiveTeamName
12
12
  } from "./chunk-S6LOFUVP.js";
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  getUserSettingsPath,
5
5
  v1ToV2Migration
6
- } from "./chunk-OQE7AA2W.js";
6
+ } from "./chunk-36ZMEEBW.js";
7
7
  import {
8
8
  getSystemDefaultsPath,
9
9
  getSystemSettingsPath
@@ -13,7 +13,7 @@ import {
13
13
  TrustLevel,
14
14
  getExplicitTrustLevel,
15
15
  getTrustedFoldersPath
16
- } from "./chunk-JOFZBTVL.js";
16
+ } from "./chunk-245NB3M4.js";
17
17
  import {
18
18
  arePathsEquivalent
19
19
  } from "./chunk-MR3PXB6E.js";
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-ALGGS7UH.js";
23
23
  import {
24
24
  ideContextStore
25
- } from "./chunk-RL2HSTEB.js";
25
+ } from "./chunk-SYZPPX3O.js";
26
26
  import {
27
27
  init_esbuild_shims
28
28
  } from "./chunk-5O2XNYP6.js";
@@ -11,7 +11,7 @@ import {
11
11
  isCacheableReadResult,
12
12
  parsePDFPageRange,
13
13
  processSingleFileContent
14
- } from "./chunk-NNN2PKPV.js";
14
+ } from "./chunk-PYYPSK6Q.js";
15
15
  import {
16
16
  getCurrentToolCallSource
17
17
  } from "./chunk-CFMZLE3L.js";
@@ -21,6 +21,16 @@ import {
21
21
  import {
22
22
  runSideQuery
23
23
  } from "./chunk-GHKVBSBY.js";
24
+ import {
25
+ TOOL_RESULT_MEDIA_REMEDY,
26
+ clampInlineMediaPart,
27
+ getMaxInlineMediaBytes
28
+ } from "./chunk-Q4FJVWI4.js";
29
+ import {
30
+ ImageViewError,
31
+ boundImageBuffer,
32
+ sniffBoundableImageMime
33
+ } from "./chunk-CLNDQINM.js";
24
34
  import {
25
35
  INVOCATION_CONTEXT_META_KEY,
26
36
  getInvocationContext
@@ -34,7 +44,7 @@ import {
34
44
  } from "./chunk-XASQGHGO.js";
35
45
  import {
36
46
  defaultModalities
37
- } from "./chunk-4FCWKBOC.js";
47
+ } from "./chunk-ALTMZEBU.js";
38
48
  import {
39
49
  safeJsonStringify
40
50
  } from "./chunk-HHJLM3WQ.js";
@@ -6087,9 +6097,9 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
6087
6097
  clearTimeout(idleTimeoutId);
6088
6098
  idleTimeoutId = void 0;
6089
6099
  }
6090
- const rawResponseParts = wrapMcpCallToolResultAsParts(
6091
- this.serverToolName,
6092
- callToolResult
6100
+ const rawResponseParts = await this.boundImages(
6101
+ wrapMcpCallToolResultAsParts(this.serverToolName, callToolResult),
6102
+ signal
6093
6103
  );
6094
6104
  if (this.isMCPToolError(rawResponseParts)) {
6095
6105
  return await this.buildMcpToolError(rawResponseParts, {
@@ -6097,7 +6107,9 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
6097
6107
  args: this.params
6098
6108
  });
6099
6109
  }
6100
- const transformedParts = transformMcpContentToParts(rawResponseParts);
6110
+ const transformedParts = await this.clampInlineMedia(
6111
+ transformMcpContentToParts(rawResponseParts)
6112
+ );
6101
6113
  const truncated = await this.truncateTextParts(transformedParts);
6102
6114
  const fallbackText = getDisplayFromPartsWithPersistedOutput(
6103
6115
  transformedParts,
@@ -6221,11 +6233,13 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
6221
6233
  if (isParentAbortOutcome(outcome)) {
6222
6234
  throw outcome.reason;
6223
6235
  }
6224
- const rawResponseParts = outcome;
6236
+ const rawResponseParts = await this.boundImages(outcome, signal);
6225
6237
  if (this.isMCPToolError(rawResponseParts)) {
6226
6238
  return await this.buildMcpToolError(rawResponseParts, functionCalls[0]);
6227
6239
  }
6228
- const transformedParts = transformMcpContentToParts(rawResponseParts);
6240
+ const transformedParts = await this.clampInlineMedia(
6241
+ transformMcpContentToParts(rawResponseParts)
6242
+ );
6229
6243
  const truncated = await this.truncateTextParts(transformedParts);
6230
6244
  return {
6231
6245
  llmContent: truncated.parts,
@@ -6253,7 +6267,9 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
6253
6267
  let errorMessage;
6254
6268
  let persistedOutputFiles;
6255
6269
  if (imageContent) {
6256
- const truncatedContent = await this.truncateTextParts(imageContent);
6270
+ const truncatedContent = await this.truncateTextParts(
6271
+ await this.clampInlineMedia(imageContent)
6272
+ );
6257
6273
  llmContent = truncatedContent.parts;
6258
6274
  persistedOutputFiles = truncatedContent.persistedOutputFiles;
6259
6275
  errorMessage = `MCP tool '${this.serverToolName}' reported tool error for function call: ${safeJsonStringify(
@@ -6275,6 +6291,28 @@ var DiscoveredMCPToolInvocation = class _DiscoveredMCPToolInvocation extends Bas
6275
6291
  ...persistedOutputFiles !== void 0 ? { persistedOutputFiles } : {}
6276
6292
  };
6277
6293
  }
6294
+ boundImages(rawResponseParts, signal) {
6295
+ return boundMcpImageBlocks(
6296
+ rawResponseParts,
6297
+ signal,
6298
+ `${this.serverName}/${this.serverToolName}`
6299
+ );
6300
+ }
6301
+ async clampInlineMedia(parts) {
6302
+ return clampMcpInlineMedia(parts, await this.isOmniMediaDeliveryActive());
6303
+ }
6304
+ /**
6305
+ * Whether the omni funnel (`processToolResultOmniMedia`) takes over this
6306
+ * result's image, audio and video parts. It uploads by reference under its
6307
+ * own ceilings and bounds any part it keeps inline, so the inline clamp must
6308
+ * not pre-empt it. `isOmniEnabled()` runs first so non-omni sessions skip
6309
+ * the dynamic import, as in `fileUtils`.
6310
+ */
6311
+ async isOmniMediaDeliveryActive() {
6312
+ if (!this.cliConfig?.isOmniEnabled?.()) return false;
6313
+ const omni = await this.cliConfig.loadOmniMediaReader();
6314
+ return omni.isOmniDeliveryActive(this.cliConfig);
6315
+ }
6278
6316
  /**
6279
6317
  * Truncates text parts in the transformed result if they exceed the
6280
6318
  * configured threshold. Non-text parts (images, audio, etc.) are preserved.
@@ -6565,6 +6603,86 @@ function transformImageAudioBlock(block, toolName) {
6565
6603
  ];
6566
6604
  }
6567
6605
  __name(transformImageAudioBlock, "transformImageAudioBlock");
6606
+ async function boundMcpImageBlocks(rawResponseParts, signal, subject) {
6607
+ const funcResponse = rawResponseParts?.[0]?.functionResponse;
6608
+ const content = funcResponse?.response?.["content"];
6609
+ if (!funcResponse || !Array.isArray(content)) return rawResponseParts;
6610
+ const inlineByteCeiling = getMaxInlineMediaBytes();
6611
+ let changed = false;
6612
+ const boundedContent = [];
6613
+ for (const block of content) {
6614
+ const media = block.type === "image" ? { data: block.data, mimeType: block.mimeType } : block.type === "resource" && block.resource?.blob ? { data: block.resource.blob, mimeType: block.resource.mimeType } : void 0;
6615
+ const sniffedMime = typeof media?.data === "string" ? sniffBoundableImageMime(
6616
+ Buffer.from(media.data.slice(0, 16), "base64")
6617
+ ) : null;
6618
+ if (!media || !sniffedMime) {
6619
+ boundedContent.push(block);
6620
+ continue;
6621
+ }
6622
+ let bounded;
6623
+ try {
6624
+ const view = await boundImageBuffer(
6625
+ Buffer.from(media.data, "base64"),
6626
+ `${subject} ${sniffedMime}`,
6627
+ signal,
6628
+ inlineByteCeiling
6629
+ );
6630
+ bounded = view ? { data: view.bytes.toString("base64"), mimeType: view.mimeType } : { data: media.data, mimeType: sniffedMime };
6631
+ } catch (error) {
6632
+ if (!(error instanceof ImageViewError)) {
6633
+ throw error;
6634
+ }
6635
+ const message = `Unable to bound MCP image from ${subject} (${media.mimeType}): ${getErrorMessage(error)}`;
6636
+ if (error.code === "renderer_unavailable") {
6637
+ debugLogger5.warn(message);
6638
+ } else {
6639
+ debugLogger5.debug(message);
6640
+ }
6641
+ }
6642
+ if (!bounded || bounded.data === media.data && bounded.mimeType === media.mimeType) {
6643
+ boundedContent.push(block);
6644
+ continue;
6645
+ }
6646
+ changed = true;
6647
+ boundedContent.push(
6648
+ block.type === "resource" ? {
6649
+ ...block,
6650
+ resource: {
6651
+ ...block.resource,
6652
+ blob: bounded.data,
6653
+ mimeType: bounded.mimeType
6654
+ }
6655
+ } : { ...block, ...bounded }
6656
+ );
6657
+ }
6658
+ if (!changed) return rawResponseParts;
6659
+ return [
6660
+ {
6661
+ ...rawResponseParts[0],
6662
+ functionResponse: {
6663
+ ...funcResponse,
6664
+ response: { ...funcResponse.response, content: boundedContent }
6665
+ }
6666
+ },
6667
+ ...rawResponseParts.slice(1)
6668
+ ];
6669
+ }
6670
+ __name(boundMcpImageBlocks, "boundMcpImageBlocks");
6671
+ function clampMcpInlineMedia(parts, omniDeliveryActive) {
6672
+ const inlineByteCeiling = getMaxInlineMediaBytes();
6673
+ return parts.map((part) => {
6674
+ const mimeType = part.inlineData?.mimeType;
6675
+ if (!part.inlineData || omniDeliveryActive && /^(image|audio|video)\//.test(mimeType ?? "")) {
6676
+ return part;
6677
+ }
6678
+ return clampInlineMediaPart(
6679
+ part,
6680
+ inlineByteCeiling,
6681
+ TOOL_RESULT_MEDIA_REMEDY
6682
+ );
6683
+ });
6684
+ }
6685
+ __name(clampMcpInlineMedia, "clampMcpInlineMedia");
6568
6686
  function transformResourceBlock(block, toolName) {
6569
6687
  const resource = block.resource;
6570
6688
  if (resource?.text) {
@@ -6777,6 +6895,14 @@ var ToolCallEvent = class {
6777
6895
  function_name;
6778
6896
  function_args;
6779
6897
  duration_ms;
6898
+ /**
6899
+ * Epoch ms at which `duration_ms` started counting: when the call was
6900
+ * scheduled, before any approval wait. Set only when the producer measured
6901
+ * it. Readers must not derive it from `event.timestamp` instead — that is
6902
+ * when the event was logged, which for a scheduled batch is after every
6903
+ * call in the batch has settled.
6904
+ */
6905
+ started_at_ms;
6780
6906
  status;
6781
6907
  execution_status;
6782
6908
  success;
@@ -6801,6 +6927,7 @@ var ToolCallEvent = class {
6801
6927
  this.function_name = call.request.name;
6802
6928
  this.function_args = call.request.name === ToolNames.STRUCTURED_OUTPUT ? { ...STRUCTURED_OUTPUT_REDACTED_ARGS } : call.request.args;
6803
6929
  this.duration_ms = call.durationMs ?? 0;
6930
+ if (call.startTime !== void 0) this.started_at_ms = call.startTime;
6804
6931
  this.status = call.status;
6805
6932
  this.execution_status = call.response.executionStatus;
6806
6933
  this.success = call.status === "success";
@@ -9,30 +9,27 @@ import {
9
9
  formatContextFileDisplayPath,
10
10
  getMainSessionBaseSystemPrompt,
11
11
  stripTerminalControlSequences
12
- } from "./chunk-RL2HSTEB.js";
12
+ } from "./chunk-SYZPPX3O.js";
13
13
  import {
14
14
  qualifySkillName
15
- } from "./chunk-TFBQ5CKI.js";
15
+ } from "./chunk-QNEBHC2E.js";
16
16
  import {
17
17
  isMediaPolicyToolHiddenFromModel
18
18
  } from "./chunk-MNU36NGH.js";
19
- import {
20
- resolveSlimmingConfig
21
- } from "./chunk-GC3J5W2O.js";
22
19
  import {
23
20
  DiscoveredMCPTool,
24
21
  uiTelemetryService
25
- } from "./chunk-MZRJ2JJS.js";
22
+ } from "./chunk-HDSI3RDN.js";
23
+ import {
24
+ resolveSlimmingConfig
25
+ } from "./chunk-GC3J5W2O.js";
26
26
  import {
27
27
  DEFAULT_TOKEN_LIMIT
28
- } from "./chunk-4FCWKBOC.js";
28
+ } from "./chunk-ALTMZEBU.js";
29
29
  import {
30
30
  buildAvailableSkillsReminder,
31
31
  getStartupContextLength
32
32
  } from "./chunk-MNK4GIGD.js";
33
- import {
34
- buildSkillLlmContent
35
- } from "./chunk-A3E7JYX7.js";
36
33
  import {
37
34
  ToolNames
38
35
  } from "./chunk-RSWOFJBY.js";
@@ -320,20 +317,24 @@ function estimateFunctionResponseTokens(part, imageTokenEstimate) {
320
317
  return tokens;
321
318
  }
322
319
  __name(estimateFunctionResponseTokens, "estimateFunctionResponseTokens");
323
- function isBilledSkillBody(part, billedSkillBodies) {
320
+ function consumeBilledSkillBody(part, billedSkillBodies) {
324
321
  if (billedSkillBodies.size === 0) return false;
325
322
  const output = part.functionResponse?.response?.output;
326
323
  if (typeof output !== "string") return false;
327
- if (billedSkillBodies.has(output)) return true;
324
+ if (billedSkillBodies.delete(output)) return true;
328
325
  for (const body of billedSkillBodies) {
329
326
  if (output.startsWith(`${body}
330
- `)) return true;
327
+ `)) {
328
+ billedSkillBodies.delete(body);
329
+ return true;
330
+ }
331
331
  }
332
332
  return false;
333
333
  }
334
- __name(isBilledSkillBody, "isBilledSkillBody");
334
+ __name(consumeBilledSkillBody, "consumeBilledSkillBody");
335
335
  function estimateConversationTokens(conversation, billing) {
336
336
  let tokens = 0;
337
+ const remainingSkillBodies = new Set(billing.billedSkillBodies);
337
338
  for (const content of conversation) {
338
339
  for (const part of content.parts ?? []) {
339
340
  if (typeof part.text === "string") {
@@ -344,7 +345,7 @@ function estimateConversationTokens(conversation, billing) {
344
345
  } else if (part.functionCall) {
345
346
  tokens += estimateContextTextTokens(JSON.stringify(part.functionCall));
346
347
  } else if (part.functionResponse) {
347
- if (part.functionResponse.name === ToolNames.SKILL && isBilledSkillBody(part, billing.billedSkillBodies)) {
348
+ if (part.functionResponse.name === ToolNames.SKILL && consumeBilledSkillBody(part, remainingSkillBodies)) {
348
349
  continue;
349
350
  }
350
351
  tokens += estimateFunctionResponseTokens(
@@ -417,7 +418,18 @@ async function collectContextData(config, showDetails) {
417
418
  const memoryFilesTokens = memoryFiles.reduce((sum, f) => sum + f.tokens, 0);
418
419
  const skillTool = allTools.find((tool) => tool.name === ToolNames.SKILL);
419
420
  const skillToolDefinitionTokens = skillTool ? estimateContextTextTokens(JSON.stringify(skillTool.schema)) : 0;
420
- const loadedSkillNames = skillTool && "getLoadedSkillNames" in skillTool ? skillTool.getLoadedSkillNames() : /* @__PURE__ */ new Set();
421
+ const loadedContentNames = skillTool && "getLoadedSkillContentNames" in skillTool ? skillTool.getLoadedSkillContentNames() : /* @__PURE__ */ new Map();
422
+ const bodyTokensByName = /* @__PURE__ */ new Map();
423
+ for (const [content, name] of loadedContentNames) {
424
+ bodyTokensByName.set(
425
+ name,
426
+ (bodyTokensByName.get(name) ?? 0) + estimateContextTextTokens(content)
427
+ );
428
+ }
429
+ const loadedBodiesTokens = [...bodyTokensByName.values()].reduce(
430
+ (sum, tokens) => sum + tokens,
431
+ 0
432
+ );
421
433
  const skillManager = config.getSkillManager();
422
434
  const skillConfigs = skillManager ? await skillManager.listSkills() : [];
423
435
  const enabledSkillNames = new Set(
@@ -431,19 +443,11 @@ async function collectContextData(config, showDetails) {
431
443
  }
432
444
  }
433
445
  mergeSkillListing(skillListing, tailSkillListings.listing);
434
- let loadedBodiesTokens = 0;
435
- const billedSkillBodies = /* @__PURE__ */ new Set();
446
+ const billedSkillBodies = new Set(loadedContentNames.keys());
436
447
  const skills = skillConfigs.map((skill) => {
437
448
  const listingTokens = skillListing.byName.get(skill.name.toLowerCase())?.tokens ?? 0;
438
- const isLoaded = loadedSkillNames.has(skill.name);
439
- let bodyTokens;
440
- if (isLoaded && skill.body) {
441
- const baseDir = skill.filePath ? path.dirname(skill.filePath) : "";
442
- const body = buildSkillLlmContent(baseDir, skill.body);
443
- bodyTokens = estimateContextTextTokens(body);
444
- loadedBodiesTokens += bodyTokens;
445
- billedSkillBodies.add(body);
446
- }
449
+ const bodyTokens = bodyTokensByName.get(skill.name);
450
+ const isLoaded = bodyTokens !== void 0;
447
451
  return {
448
452
  name: skill.name,
449
453
  tokens: listingTokens,
@@ -451,7 +455,18 @@ async function collectContextData(config, showDetails) {
451
455
  bodyTokens
452
456
  };
453
457
  });
454
- const rowedNames = new Set(skillConfigs.map((s) => s.name.toLowerCase()));
458
+ const discoveredNames = new Set(skillConfigs.map((skill) => skill.name));
459
+ for (const [name, bodyTokens] of bodyTokensByName) {
460
+ if (!discoveredNames.has(name)) {
461
+ skills.push({
462
+ name,
463
+ tokens: skillListing.byName.get(name.toLowerCase())?.tokens ?? 0,
464
+ loaded: true,
465
+ bodyTokens
466
+ });
467
+ }
468
+ }
469
+ const rowedNames = new Set(skills.map((s) => s.name.toLowerCase()));
455
470
  for (const [key, entry] of skillListing.byName) {
456
471
  if (rowedNames.has(key)) continue;
457
472
  rowedNames.add(key);
@@ -587,7 +602,7 @@ async function collectContextData(config, showDetails) {
587
602
  mcpTools: showDetails ? detailMcpTools : [],
588
603
  memoryFiles: showDetails ? detailMemoryFiles : [],
589
604
  skills: showDetails ? detailSkills.filter(
590
- (skill) => enabledSkillNames.has(skill.name.toLowerCase())
605
+ (skill) => skill.loaded || enabledSkillNames.has(skill.name.toLowerCase())
591
606
  ) : [],
592
607
  isEstimated,
593
608
  showDetails
@@ -751,9 +766,8 @@ function formatContextUsageText(data) {
751
766
  lines.push("");
752
767
  lines.push("**Skills**");
753
768
  for (const skill of sortedSkills) {
754
- const label = skill.loaded ? `${skill.name} (active)` : skill.name;
755
769
  lines.push(
756
- fmtCategoryRow(label, skill.tokens, contextWindowSize, " \u2514 ")
770
+ fmtCategoryRow(skill.name, skill.tokens, contextWindowSize, " \u2514 ")
757
771
  );
758
772
  if (skill.loaded && skill.bodyTokens && skill.bodyTokens > 0) {
759
773
  lines.push(
@@ -1,20 +1,21 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
3
  import {
4
- multiSessionCompatibilityError
5
- } from "./chunk-MVC4XLNM.js";
4
+ multiSessionCompatibilityError,
5
+ parseMessageRoutingConfig
6
+ } from "./chunk-53IRNMPU.js";
6
7
  import {
7
8
  UNSAFE_OBJECT_KEYS,
8
9
  getPlugin
9
- } from "./chunk-VPALWDQL.js";
10
+ } from "./chunk-VUIH3BQL.js";
10
11
  import {
11
12
  CHANNEL_OUTPUT_MODE_FIELD,
12
13
  parseChannelOutputMode
13
- } from "./chunk-YWZOEHBT.js";
14
+ } from "./chunk-DE2WI7RU.js";
14
15
  import {
15
16
  loadSettings,
16
17
  saveSettings
17
- } from "./chunk-OQE7AA2W.js";
18
+ } from "./chunk-36ZMEEBW.js";
18
19
  import {
19
20
  init_esbuild_shims
20
21
  } from "./chunk-5O2XNYP6.js";
@@ -101,13 +102,22 @@ function assertStringRecord(key, value, allowedKeys) {
101
102
  }
102
103
  __name(assertStringRecord, "assertStringRecord");
103
104
  function assertSharedField(key, value, previous) {
105
+ if (key === "messageRoutes" || key === "defaultMessageRoute") {
106
+ return true;
107
+ }
104
108
  if (key === "multiSession") {
105
109
  if (typeof value !== "boolean") {
106
110
  throw invalidConfig(`Channel field "${key}" must be a boolean.`);
107
111
  }
108
112
  return true;
109
113
  }
114
+ if (key === "groupSenderPolicy" || key === "allowedGroupUsers") {
115
+ throw invalidConfig(
116
+ `Channel field "${key}" moved to groups["*"].${key === "groupSenderPolicy" ? "senders" : "allowedUsers"}.`
117
+ );
118
+ }
110
119
  const enumValues = {
120
+ privatePolicy: /* @__PURE__ */ new Set(["disabled", "allowlist", "pairing", "open"]),
111
121
  senderPolicy: /* @__PURE__ */ new Set(["allowlist", "pairing", "open"]),
112
122
  dmPolicy: /* @__PURE__ */ new Set(["open", "disabled"]),
113
123
  groupPolicy: /* @__PURE__ */ new Set(["disabled", "allowlist", "pairing", "open"]),
@@ -126,7 +136,7 @@ function assertSharedField(key, value, previous) {
126
136
  }
127
137
  return true;
128
138
  }
129
- if (key === "allowedUsers") {
139
+ if (key === "allowedUsers" || key === "operators") {
130
140
  if (!Array.isArray(value) || value.some((item) => typeof item !== "string")) {
131
141
  throw invalidConfig(`Channel field "${key}" must be a string array.`);
132
142
  }
@@ -149,10 +159,12 @@ function assertSharedField(key, value, previous) {
149
159
  const known = [
150
160
  "requireMention",
151
161
  "dispatchMode",
152
- "groupHistoryLimit"
162
+ "groupHistoryLimit",
163
+ "senders",
164
+ "allowedUsers"
153
165
  ].includes(nestedKey);
154
- const valid = nestedKey === "requireMention" && typeof nestedValue === "boolean" || nestedKey === "dispatchMode" && typeof nestedValue === "string" && ["collect", "steer", "followup"].includes(nestedValue) || nestedKey === "groupHistoryLimit" && typeof nestedValue === "number" && Number.isFinite(nestedValue);
155
- if (known && !valid && !(Object.hasOwn(previousGroup, nestedKey) && isDeepStrictEqual(previousGroup[nestedKey], nestedValue) && !containsUnsafeObjectKey(nestedValue))) {
166
+ const valid = nestedKey === "requireMention" && typeof nestedValue === "boolean" || nestedKey === "dispatchMode" && typeof nestedValue === "string" && ["collect", "steer", "followup"].includes(nestedValue) || nestedKey === "groupHistoryLimit" && typeof nestedValue === "number" && Number.isFinite(nestedValue) || nestedKey === "senders" && typeof nestedValue === "string" && ["open", "allowlist"].includes(nestedValue) || nestedKey === "allowedUsers" && Array.isArray(nestedValue) && nestedValue.every((item) => typeof item === "string");
167
+ if (known && !valid && !(nestedKey !== "senders" && Object.hasOwn(previousGroup, nestedKey) && isDeepStrictEqual(previousGroup[nestedKey], nestedValue) && !containsUnsafeObjectKey(nestedValue))) {
156
168
  throw invalidConfig(
157
169
  `Channel field "${key}.${groupId}.${nestedKey}" is invalid.`
158
170
  );
@@ -458,6 +470,17 @@ var WorkspaceChannelSettingsStore = class {
458
470
  webhooks: nextConfig["webhooks"]
459
471
  });
460
472
  if (multiSessionError) throw invalidConfig(multiSessionError);
473
+ try {
474
+ const routing = parseMessageRoutingConfig(name, nextConfig);
475
+ if (routing.messageRoutes !== void 0)
476
+ nextConfig["messageRoutes"] = routing.messageRoutes;
477
+ if (routing.defaultMessageRoute !== void 0)
478
+ nextConfig["defaultMessageRoute"] = routing.defaultMessageRoute;
479
+ } catch (error) {
480
+ throw invalidConfig(
481
+ error instanceof Error ? error.message : String(error)
482
+ );
483
+ }
461
484
  let crossFieldError;
462
485
  try {
463
486
  crossFieldError = plugin.management.validateConfig?.(nextConfig);