@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
@@ -4,9 +4,10 @@ import {
4
4
  PollingChannelBase,
5
5
  getGlobalQwenDir,
6
6
  getWorkspaceScopeDirName,
7
+ lowercaseGroupAllowedUsers,
7
8
  sanitizeDisplayText,
8
9
  sanitizeLogText
9
- } from "./chunk-YWZOEHBT.js";
10
+ } from "./chunk-DE2WI7RU.js";
10
11
  import "./chunk-6HOTTZKB.js";
11
12
  import "./chunk-XIOVKC72.js";
12
13
  import {
@@ -4070,15 +4071,28 @@ var GithubChannel = class extends PollingChannelBase {
4070
4071
  }
4071
4072
  const allowed = (this.config.allowedUsers ?? []).map((u) => u.toLowerCase());
4072
4073
  this.config.allowedUsers = allowed;
4074
+ this.gate.replaceAllowedUsers(allowed);
4075
+ lowercaseGroupAllowedUsers(this.config.groups);
4073
4076
  const botUsername = this.botUsername?.toLowerCase();
4074
- if (this.config.senderPolicy === "allowlist" && botUsername && allowed.includes(botUsername)) {
4075
- if (allowed.every((user) => user === botUsername)) {
4076
- throw new Error(`[Channel:${this.name}] GitHub allowlist only contains the authenticated GitHub account "${this.botUsername}", which cannot trigger this channel because self-authored comments are ignored. Use a separate bot account (or a separate bot-owned PAT) and allowlist the operator account.`);
4077
+ for (const [groupId, group] of Object.entries(this.config.groups)) {
4078
+ const defaults = this.config.groups["*"];
4079
+ if ((group.senders ?? defaults?.senders ?? "open") !== "allowlist") {
4080
+ continue;
4081
+ }
4082
+ const groupUsers = group.allowedUsers ?? defaults?.allowedUsers ?? [];
4083
+ if (!botUsername || !groupUsers.includes(botUsername))
4084
+ continue;
4085
+ if (groupUsers.every((user) => user === botUsername)) {
4086
+ process2.stderr.write(`[Channel:${this.name}] warning: GitHub group "${groupId}" allowlist only contains the authenticated GitHub account "${this.botUsername}", which cannot trigger this group because self-authored comments are ignored. Use a separate bot account (or a separate bot-owned PAT) and allowlist the operator account.
4087
+ `);
4088
+ continue;
4077
4089
  }
4078
- process2.stderr.write(`[Channel:${this.name}] warning: authenticated GitHub account "${this.botUsername}" is allowlisted but cannot trigger this channel; use a separate operator account.
4090
+ process2.stderr.write(`[Channel:${this.name}] warning: authenticated GitHub account "${this.botUsername}" is allowlisted in group "${groupId}" but cannot trigger this channel; use a separate operator account.
4079
4091
  `);
4080
4092
  }
4081
- this.gate.replaceAllowedUsers(allowed);
4093
+ if (this.config.operators) {
4094
+ this.config.operators = this.config.operators.map((u) => u.toLowerCase());
4095
+ }
4082
4096
  this.migrateLegacyPublicationState();
4083
4097
  this.inboundPersistenceBlocked = false;
4084
4098
  this.inboundRecoveryPending = true;
@@ -4567,7 +4581,10 @@ var GithubChannel = class extends PollingChannelBase {
4567
4581
  if (onlyMentioned && !hasMention)
4568
4582
  continue;
4569
4583
  const senderId = (comment.user?.login || "unknown").toLowerCase();
4570
- const allowed = this.gate.isAllowed(senderId) || directed && this.config.groupPolicy === "pairing" && this.groupGate.isGroupApproved(ctx.chatId);
4584
+ const allowed = this.senderGateFor({
4585
+ isGroup: true,
4586
+ chatId: ctx.chatId
4587
+ }).isAllowed(senderId);
4571
4588
  const envelope = {
4572
4589
  channelName: this.name,
4573
4590
  senderId,
@@ -4634,14 +4651,18 @@ ${details}`
4634
4651
  this.recordDispatched("dispatchedEvents", trigger.key);
4635
4652
  }
4636
4653
  async processAggregateLane(ctx) {
4637
- if (this.config.senderPolicy === "pairing" || this.config.groupPolicy === "pairing") {
4654
+ if (this.config.groupPolicy === "pairing") {
4638
4655
  await this.processCommentLane(ctx, false, true);
4639
4656
  return;
4640
4657
  }
4658
+ const senderGate = this.senderGateFor({
4659
+ isGroup: true,
4660
+ chatId: ctx.chatId
4661
+ });
4641
4662
  const newComments = (await this.fetchNewComments(ctx)).filter((comment) => {
4642
4663
  const key = comment.node_id || String(comment.id);
4643
4664
  const sender = (comment.user?.login || "unknown").toLowerCase();
4644
- return !this.cursor.dispatchedComments?.includes(key) && this.gate.isAllowed(sender);
4665
+ return !this.cursor.dispatchedComments?.includes(key) && senderGate.isAllowed(sender);
4645
4666
  });
4646
4667
  for (const comment of newComments) {
4647
4668
  this.recordDispatchedComment(comment.node_id || String(comment.id));
@@ -5175,24 +5196,6 @@ var plugin = {
5175
5196
  { value: "disabled", label: "Disabled" }
5176
5197
  ]
5177
5198
  },
5178
- {
5179
- key: "senderPolicy",
5180
- label: "Sender Policy",
5181
- kind: "enum",
5182
- required: true,
5183
- description: 'Use "Allowlist" with allowed users on public repos',
5184
- options: [
5185
- { value: "allowlist", label: "Allowlist" },
5186
- { value: "pairing", label: "Pairing" },
5187
- { value: "open", label: "Open" }
5188
- ]
5189
- },
5190
- {
5191
- key: "allowedUsers",
5192
- label: "Allowed Users",
5193
- kind: "string-list",
5194
- description: "GitHub usernames, used by Allowlist and Pairing policies"
5195
- },
5196
5199
  {
5197
5200
  key: "reasonFilter",
5198
5201
  label: "Reason Filter",
@@ -5,8 +5,9 @@ import {
5
5
  } from "./chunk-CKXUWR6I.js";
6
6
  import "./chunk-TZBFVXNX.js";
7
7
  import {
8
- PollingChannelBase
9
- } from "./chunk-YWZOEHBT.js";
8
+ PollingChannelBase,
9
+ lowercaseGroupAllowedUsers
10
+ } from "./chunk-DE2WI7RU.js";
10
11
  import "./chunk-6HOTTZKB.js";
11
12
  import {
12
13
  external_exports
@@ -13227,6 +13228,10 @@ var GitlabChannel = class extends PollingChannelBase {
13227
13228
  const allowed = (this.config.allowedUsers ?? []).map((u) => u.toLowerCase());
13228
13229
  this.config.allowedUsers = allowed;
13229
13230
  this.gate.replaceAllowedUsers(allowed);
13231
+ lowercaseGroupAllowedUsers(this.config.groups);
13232
+ if (this.config.operators) {
13233
+ this.config.operators = this.config.operators.map((u) => u.toLowerCase());
13234
+ }
13230
13235
  this.startPollLoop();
13231
13236
  }
13232
13237
  disconnect() {
@@ -13496,24 +13501,6 @@ var plugin = {
13496
13501
  { value: "disabled", label: "Disabled" }
13497
13502
  ]
13498
13503
  },
13499
- {
13500
- key: "senderPolicy",
13501
- label: "Sender Policy",
13502
- kind: "enum",
13503
- required: true,
13504
- description: 'Use "Allowlist" with allowed users on public projects',
13505
- options: [
13506
- { value: "allowlist", label: "Allowlist" },
13507
- { value: "pairing", label: "Pairing" },
13508
- { value: "open", label: "Open" }
13509
- ]
13510
- },
13511
- {
13512
- key: "allowedUsers",
13513
- label: "Allowed Users",
13514
- kind: "string-list",
13515
- description: "GitLab usernames, used by Allowlist and Pairing policies"
13516
- },
13517
13504
  {
13518
13505
  key: "action_prompt_template",
13519
13506
  label: "Action Templates",
@@ -9,7 +9,7 @@ import "./chunk-TZBFVXNX.js";
9
9
  import {
10
10
  ChannelBase,
11
11
  sanitizeLogText
12
- } from "./chunk-YWZOEHBT.js";
12
+ } from "./chunk-DE2WI7RU.js";
13
13
  import "./chunk-6HOTTZKB.js";
14
14
  import "./chunk-XIOVKC72.js";
15
15
  import "./chunk-RVIGZBIT.js";
@@ -5,7 +5,7 @@ import {
5
5
  isTerminalTaskLifecycleType,
6
6
  sanitizeLogText,
7
7
  truncateCodePoints
8
- } from "./chunk-YWZOEHBT.js";
8
+ } from "./chunk-DE2WI7RU.js";
9
9
  import "./chunk-6HOTTZKB.js";
10
10
  import "./chunk-XIOVKC72.js";
11
11
  import {
@@ -1414,13 +1414,11 @@ var DwsChannel = class extends PollingChannelBase {
1414
1414
  throw new Error("DWS channel profile must select exactly one login profile.");
1415
1415
  }
1416
1416
  const allGroups = config.groupPolicy !== "disabled" && config.groupPolicy !== "allowlist" && config.groups["*"]?.requireMention === false;
1417
- const groupSources = allGroups ? [{ kind: "group-all" }] : Object.entries(config.groups).filter(([conversationId, group]) => conversationId !== "*" && conversationId.trim().length > 0 && group.requireMention === false).map(([conversationId]) => ({
1417
+ const groupSources = allGroups ? [{ kind: "group-all" }] : Object.entries(config.groups).filter(([conversationId, group]) => conversationId !== "*" && conversationId.trim().length > 0 && (group.requireMention ?? config.groups["*"]?.requireMention) === false).map(([conversationId]) => ({
1418
1418
  kind: "group",
1419
1419
  conversationId
1420
1420
  }));
1421
1421
  const imSources = config.groupPolicy === "disabled" ? [] : [{ kind: "at" }, ...groupSources];
1422
- if (config.dmPolicy !== "disabled")
1423
- imSources.push({ kind: "direct" });
1424
1422
  if (config.approvalMode !== void 0 && config.approvalMode !== "default" && config.approvalMode !== "plan" && config.approvalMode !== "yolo") {
1425
1423
  throw new Error('DWS channels require approvalMode "default", "plan", or "yolo".');
1426
1424
  }
@@ -1431,6 +1429,8 @@ var DwsChannel = class extends PollingChannelBase {
1431
1429
  this.router.setChannelApprovalMode(name, config.approvalMode);
1432
1430
  this.userInstructions = userInstructions;
1433
1431
  this.client = client ?? new DwsClient({ executable: "dws", profile });
1432
+ if (this.privatePolicy !== "disabled")
1433
+ imSources.push({ kind: "direct" });
1434
1434
  this.imStates = imSources.map((source) => ({
1435
1435
  source,
1436
1436
  restartAttempts: 0
@@ -1642,8 +1642,12 @@ var DwsChannel = class extends PollingChannelBase {
1642
1642
  get todoPollInterval() {
1643
1643
  return TODO_POLL_INTERVAL_MS;
1644
1644
  }
1645
+ /** Document comments and native todos are one person's requests. */
1646
+ isPersonalConversation(target) {
1647
+ return this.documentSet.has(target.chatId) || this.todoTargets.has(target.chatId);
1648
+ }
1645
1649
  preflightInbound(envelope) {
1646
- if (!this.documentSet.has(envelope.chatId) && !this.todoTargets.has(envelope.chatId)) {
1650
+ if (!this.isPersonalConversation(envelope)) {
1647
1651
  return super.preflightInbound(envelope);
1648
1652
  }
1649
1653
  const result = this.gate.check(envelope.senderId, envelope.senderName);
@@ -1904,11 +1908,10 @@ Ask the bot operator to approve you with:
1904
1908
  }
1905
1909
  if (!this.dmGate.check(envelope).allowed)
1906
1910
  return "denied";
1907
- if (isGroup && this.config.groupPolicy === "pairing")
1911
+ const senderGate = this.senderGateFor(envelope);
1912
+ if (senderGate.isAllowed(delivery.senderId))
1908
1913
  return "allowed";
1909
- if (this.gate.isAllowed(delivery.senderId))
1910
- return "allowed";
1911
- return this.config.senderPolicy === "pairing" ? "unknown" : "denied";
1914
+ return senderGate === this.gate && this.privatePolicy === "pairing" ? "unknown" : "denied";
1912
1915
  }
1913
1916
  deferImDelivery(delivery, error, retryKind = "delivery") {
1914
1917
  if (!(this.cursor.pendingImDeliveries ?? []).includes(delivery))
@@ -2023,7 +2026,7 @@ Ask the bot operator to approve you with:
2023
2026
  `);
2024
2027
  }
2025
2028
  }
2026
- if (this.config.dmPolicy !== "disabled") {
2029
+ if (this.privatePolicy !== "disabled") {
2027
2030
  try {
2028
2031
  const checkpoint = this.cursor.notificationCheckpoint ?? {
2029
2032
  startTime: Math.max(0, (this.cursor.notificationWatermark ?? endTime) - NOTIFICATION_HISTORY_OVERLAP_MS),
@@ -2152,6 +2155,7 @@ Ask the bot operator to approve you with:
2152
2155
  messageId: `todo-${fingerprint}`,
2153
2156
  text: `Process this DingTalk todo:
2154
2157
  ${truncateCodePoints(title, MAX_COMMENT_CHARS)}`,
2158
+ bypassMessageRoutes: true,
2155
2159
  isGroup: true,
2156
2160
  isMentioned: true,
2157
2161
  isReplyToBot: false,
@@ -2361,7 +2365,7 @@ ${truncateCodePoints(JSON.stringify(detail.data), MAX_TODO_CONTEXT_CHARS)}`
2361
2365
  return (source.kind === "group" || source.kind === "group-all") && this.config.groupPolicy === "pairing" && !this.groupGate.isGroupApproved(message.conversationId);
2362
2366
  }
2363
2367
  isImSourceEnabled(source) {
2364
- return source.kind === "direct" ? this.config.dmPolicy !== "disabled" : this.config.groupPolicy !== "disabled";
2368
+ return source.kind === "direct" ? this.privatePolicy !== "disabled" : this.config.groupPolicy !== "disabled";
2365
2369
  }
2366
2370
  enabledPendingMessageCount() {
2367
2371
  return (this.cursor.pendingMessages ?? []).filter(({ source }) => this.isImSourceEnabled(source)).length;
@@ -2682,7 +2686,7 @@ ${truncateCodePoints(JSON.stringify(detail.data), MAX_TODO_CONTEXT_CHARS)}`
2682
2686
  return true;
2683
2687
  }
2684
2688
  async processDocumentNotification(message, key, notification) {
2685
- if (this.config.dmPolicy === "disabled")
2689
+ if (this.privatePolicy === "disabled")
2686
2690
  return;
2687
2691
  const notificationKey = documentNotificationKey(notification);
2688
2692
  if (this.cursor.processedMessages.includes(notificationKey)) {
@@ -2730,6 +2734,7 @@ ${truncateCodePoints(JSON.stringify(detail.data), MAX_TODO_CONTEXT_CHARS)}`
2730
2734
  threadId: notification.commentKey,
2731
2735
  messageId: message.messageId,
2732
2736
  text: truncateCodePoints(notification.request, MAX_COMMENT_CHARS),
2737
+ bypassMessageRoutes: true,
2733
2738
  isGroup: true,
2734
2739
  isMentioned: true,
2735
2740
  isReplyToBot: false,
@@ -2836,7 +2841,7 @@ ${context}` : "Document Markdown was unavailable; answer from the comment only."
2836
2841
  }
2837
2842
  }
2838
2843
  async replayPendingDocumentNotifications(signal) {
2839
- if (this.config.dmPolicy === "disabled")
2844
+ if (this.privatePolicy === "disabled")
2840
2845
  return;
2841
2846
  for (const pending of [
2842
2847
  ...this.cursor.pendingDocumentNotifications ?? []
@@ -3163,25 +3168,14 @@ var plugin = {
3163
3168
  ]
3164
3169
  },
3165
3170
  {
3166
- key: "dmPolicy",
3167
- label: "Direct Message Access",
3168
- kind: "enum",
3169
- required: true,
3170
- default: "open",
3171
- description: "Controls whether direct messages and document notifications can start tasks",
3172
- options: [
3173
- { value: "open", label: "Open" },
3174
- { value: "disabled", label: "Disabled" }
3175
- ]
3176
- },
3177
- {
3178
- key: "senderPolicy",
3179
- label: "Sender Policy",
3171
+ key: "privatePolicy",
3172
+ label: "Private Policy",
3180
3173
  kind: "enum",
3181
3174
  required: true,
3182
3175
  default: "pairing",
3183
- description: "Controls which DingTalk users may start direct-message, document-notification, native-todo, and non-paired group tasks",
3176
+ description: "Controls which DingTalk users may start direct-message, document-notification, and native-todo tasks",
3184
3177
  options: [
3178
+ { value: "disabled", label: "Disabled" },
3185
3179
  { value: "pairing", label: "Pairing" },
3186
3180
  { value: "allowlist", label: "Allowlist" },
3187
3181
  { value: "open", label: "Open" }
@@ -3,10 +3,10 @@
3
3
  import {
4
4
  EditTool,
5
5
  applyReplacement
6
- } from "./chunk-3DBI3LLL.js";
7
- import "./chunk-WVNCMGAO.js";
6
+ } from "./chunk-CWLTXYKP.js";
7
+ import "./chunk-6FURC4LI.js";
8
8
  import "./chunk-6URMIIZO.js";
9
- import "./chunk-RL2HSTEB.js";
9
+ import "./chunk-SYZPPX3O.js";
10
10
  import "./chunk-27CVFKVI.js";
11
11
  import "./chunk-VU6JX6MN.js";
12
12
  import "./chunk-GOFAQQZA.js";
@@ -17,15 +17,15 @@ import "./chunk-7TK2HU3T.js";
17
17
  import "./chunk-YNURCIW7.js";
18
18
  import "./chunk-KNMT4XIN.js";
19
19
  import "./chunk-HORVWHWX.js";
20
- import "./chunk-6N2PJAZG.js";
20
+ import "./chunk-PX2ZOOGQ.js";
21
21
  import "./chunk-JBUMBQAO.js";
22
22
  import "./chunk-5EZRLTLQ.js";
23
23
  import "./chunk-QHWCP53L.js";
24
24
  import "./chunk-E4YH24E6.js";
25
25
  import "./chunk-FDOMQENS.js";
26
26
  import "./chunk-SLQ4C6GN.js";
27
- import "./chunk-TFBQ5CKI.js";
28
- import "./chunk-N4VKU36J.js";
27
+ import "./chunk-QNEBHC2E.js";
28
+ import "./chunk-465XOJLQ.js";
29
29
  import "./chunk-U6H3XTFA.js";
30
30
  import "./chunk-6PVPNMXU.js";
31
31
  import "./chunk-NLHFXAC4.js";
@@ -35,7 +35,7 @@ import "./chunk-SK3RZOPS.js";
35
35
  import "./chunk-YVD6XEO3.js";
36
36
  import "./chunk-ELRMZTPF.js";
37
37
  import "./chunk-6C3D7BKK.js";
38
- import "./chunk-BVFBDXI2.js";
38
+ import "./chunk-TPFV5YZK.js";
39
39
  import "./chunk-MNU36NGH.js";
40
40
  import "./chunk-QXQMBRGL.js";
41
41
  import "./chunk-TWPJO254.js";
@@ -45,22 +45,21 @@ import "./chunk-O6GEWCJA.js";
45
45
  import "./chunk-I3K2QRZ5.js";
46
46
  import "./chunk-5ZPFMX67.js";
47
47
  import "./chunk-RSKMN2JH.js";
48
- import "./chunk-WVNML4HH.js";
48
+ import "./chunk-VW33WARJ.js";
49
49
  import "./chunk-VNTJJ4WQ.js";
50
50
  import "./chunk-BQMSZSG6.js";
51
- import "./chunk-LNUQA3OE.js";
52
- import "./chunk-47C3HPMW.js";
51
+ import "./chunk-CVRZNFXO.js";
52
+ import "./chunk-O5YL6KSX.js";
53
53
  import "./chunk-JX6XHPTX.js";
54
54
  import "./chunk-QCG3JVIW.js";
55
- import "./chunk-JE3J5HFM.js";
55
+ import "./chunk-KAOHUUM7.js";
56
56
  import "./chunk-P6OZD6V2.js";
57
- import "./chunk-QKXZOHHQ.js";
57
+ import "./chunk-LDURD6EP.js";
58
58
  import "./chunk-BKVPLSEI.js";
59
- import "./chunk-GG3MO6NO.js";
59
+ import "./chunk-PWGMHXIV.js";
60
60
  import "./chunk-H7VK3YDS.js";
61
61
  import "./chunk-S6LOFUVP.js";
62
62
  import "./chunk-Z72PLR74.js";
63
- import "./chunk-GC3J5W2O.js";
64
63
  import "./chunk-NAVJD2PQ.js";
65
64
  import "./chunk-Z27N2QYZ.js";
66
65
  import "./chunk-HP5Q3XUS.js";
@@ -70,20 +69,23 @@ import "./chunk-DJ2GSRLV.js";
70
69
  import "./chunk-U6673AVW.js";
71
70
  import "./chunk-VXQQCZPP.js";
72
71
  import "./chunk-KP2FHIFR.js";
73
- import "./chunk-OU4ZCLGJ.js";
72
+ import "./chunk-242INZ6Y.js";
74
73
  import "./chunk-KBVGO6H4.js";
75
- import "./chunk-MZRJ2JJS.js";
74
+ import "./chunk-HDSI3RDN.js";
76
75
  import "./chunk-VBT4BMCQ.js";
77
- import "./chunk-NNN2PKPV.js";
76
+ import "./chunk-PYYPSK6Q.js";
78
77
  import "./chunk-CFMZLE3L.js";
79
78
  import "./chunk-OJSU46VD.js";
80
79
  import "./chunk-HD7O6WLV.js";
81
80
  import "./chunk-GHKVBSBY.js";
81
+ import "./chunk-Q4FJVWI4.js";
82
+ import "./chunk-CLNDQINM.js";
82
83
  import "./chunk-GMTJ3YQW.js";
83
84
  import "./chunk-5ETULJLP.js";
85
+ import "./chunk-GC3J5W2O.js";
84
86
  import "./chunk-WZAD4ZNJ.js";
85
87
  import "./chunk-XASQGHGO.js";
86
- import "./chunk-4FCWKBOC.js";
88
+ import "./chunk-ALTMZEBU.js";
87
89
  import "./chunk-XZA32HII.js";
88
90
  import "./chunk-DYPTD5P5.js";
89
91
  import "./chunk-HHJLM3WQ.js";
@@ -2,15 +2,16 @@
2
2
  "use strict";
3
3
  import {
4
4
  writeWorktreeSession
5
- } from "./chunk-H4W6TJFJ.js";
5
+ } from "./chunk-RONRTFAQ.js";
6
6
  import {
7
7
  GitWorktreeService,
8
8
  writeWorktreeSessionMarker
9
- } from "./chunk-6N2PJAZG.js";
9
+ } from "./chunk-PX2ZOOGQ.js";
10
10
  import "./chunk-I3K2QRZ5.js";
11
11
  import "./chunk-QCG3JVIW.js";
12
12
  import "./chunk-P6OZD6V2.js";
13
- import "./chunk-NNN2PKPV.js";
13
+ import "./chunk-PYYPSK6Q.js";
14
+ import "./chunk-CLNDQINM.js";
14
15
  import "./chunk-GMTJ3YQW.js";
15
16
  import {
16
17
  BaseDeclarativeTool,
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import "./chunk-RL2HSTEB.js";
3
+ import "./chunk-SYZPPX3O.js";
4
4
  import "./chunk-27CVFKVI.js";
5
5
  import "./chunk-VU6JX6MN.js";
6
6
  import "./chunk-GOFAQQZA.js";
@@ -11,15 +11,15 @@ import "./chunk-7TK2HU3T.js";
11
11
  import "./chunk-YNURCIW7.js";
12
12
  import "./chunk-KNMT4XIN.js";
13
13
  import "./chunk-HORVWHWX.js";
14
- import "./chunk-6N2PJAZG.js";
14
+ import "./chunk-PX2ZOOGQ.js";
15
15
  import "./chunk-JBUMBQAO.js";
16
16
  import "./chunk-5EZRLTLQ.js";
17
17
  import "./chunk-QHWCP53L.js";
18
18
  import "./chunk-E4YH24E6.js";
19
19
  import "./chunk-FDOMQENS.js";
20
20
  import "./chunk-SLQ4C6GN.js";
21
- import "./chunk-TFBQ5CKI.js";
22
- import "./chunk-N4VKU36J.js";
21
+ import "./chunk-QNEBHC2E.js";
22
+ import "./chunk-465XOJLQ.js";
23
23
  import "./chunk-U6H3XTFA.js";
24
24
  import "./chunk-6PVPNMXU.js";
25
25
  import "./chunk-NLHFXAC4.js";
@@ -29,7 +29,7 @@ import "./chunk-SK3RZOPS.js";
29
29
  import "./chunk-YVD6XEO3.js";
30
30
  import "./chunk-ELRMZTPF.js";
31
31
  import "./chunk-6C3D7BKK.js";
32
- import "./chunk-BVFBDXI2.js";
32
+ import "./chunk-TPFV5YZK.js";
33
33
  import "./chunk-MNU36NGH.js";
34
34
  import "./chunk-QXQMBRGL.js";
35
35
  import "./chunk-TWPJO254.js";
@@ -39,27 +39,26 @@ import "./chunk-O6GEWCJA.js";
39
39
  import "./chunk-I3K2QRZ5.js";
40
40
  import "./chunk-5ZPFMX67.js";
41
41
  import "./chunk-RSKMN2JH.js";
42
- import "./chunk-WVNML4HH.js";
42
+ import "./chunk-VW33WARJ.js";
43
43
  import "./chunk-VNTJJ4WQ.js";
44
44
  import "./chunk-BQMSZSG6.js";
45
- import "./chunk-LNUQA3OE.js";
45
+ import "./chunk-CVRZNFXO.js";
46
46
  import {
47
47
  buildSubagentPlanToolBlockedResult,
48
48
  isPlanLifecycleToolUnavailableInSubagent
49
- } from "./chunk-47C3HPMW.js";
49
+ } from "./chunk-O5YL6KSX.js";
50
50
  import "./chunk-JX6XHPTX.js";
51
51
  import "./chunk-QCG3JVIW.js";
52
52
  import {
53
53
  getPlanModeSystemReminder
54
- } from "./chunk-JE3J5HFM.js";
54
+ } from "./chunk-KAOHUUM7.js";
55
55
  import "./chunk-P6OZD6V2.js";
56
- import "./chunk-QKXZOHHQ.js";
56
+ import "./chunk-LDURD6EP.js";
57
57
  import "./chunk-BKVPLSEI.js";
58
- import "./chunk-GG3MO6NO.js";
58
+ import "./chunk-PWGMHXIV.js";
59
59
  import "./chunk-H7VK3YDS.js";
60
60
  import "./chunk-S6LOFUVP.js";
61
61
  import "./chunk-Z72PLR74.js";
62
- import "./chunk-GC3J5W2O.js";
63
62
  import "./chunk-NAVJD2PQ.js";
64
63
  import "./chunk-Z27N2QYZ.js";
65
64
  import "./chunk-HP5Q3XUS.js";
@@ -69,20 +68,23 @@ import "./chunk-DJ2GSRLV.js";
69
68
  import "./chunk-U6673AVW.js";
70
69
  import "./chunk-VXQQCZPP.js";
71
70
  import "./chunk-KP2FHIFR.js";
72
- import "./chunk-OU4ZCLGJ.js";
71
+ import "./chunk-242INZ6Y.js";
73
72
  import "./chunk-KBVGO6H4.js";
74
- import "./chunk-MZRJ2JJS.js";
73
+ import "./chunk-HDSI3RDN.js";
75
74
  import "./chunk-VBT4BMCQ.js";
76
- import "./chunk-NNN2PKPV.js";
75
+ import "./chunk-PYYPSK6Q.js";
77
76
  import "./chunk-CFMZLE3L.js";
78
77
  import "./chunk-OJSU46VD.js";
79
78
  import "./chunk-HD7O6WLV.js";
80
79
  import "./chunk-GHKVBSBY.js";
80
+ import "./chunk-Q4FJVWI4.js";
81
+ import "./chunk-CLNDQINM.js";
81
82
  import "./chunk-GMTJ3YQW.js";
82
83
  import "./chunk-5ETULJLP.js";
84
+ import "./chunk-GC3J5W2O.js";
83
85
  import "./chunk-WZAD4ZNJ.js";
84
86
  import "./chunk-XASQGHGO.js";
85
- import "./chunk-4FCWKBOC.js";
87
+ import "./chunk-ALTMZEBU.js";
86
88
  import "./chunk-XZA32HII.js";
87
89
  import "./chunk-DYPTD5P5.js";
88
90
  import "./chunk-HHJLM3WQ.js";