@qwen-code/qwen-code 0.21.7 → 0.21.8

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 (314) hide show
  1. package/README.md +2 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +43 -30
  3. package/bundled/qc-helper/docs/features/channels/dingtalk.md +40 -2
  4. package/bundled/qc-helper/docs/features/channels/feishu.md +13 -2
  5. package/bundled/qc-helper/docs/features/channels/github.md +13 -11
  6. package/bundled/qc-helper/docs/features/channels/gitlab.md +13 -11
  7. package/bundled/qc-helper/docs/features/channels/overview.md +49 -31
  8. package/bundled/qc-helper/docs/features/channels/plugins.md +2 -2
  9. package/bundled/qc-helper/docs/features/channels/qqbot.md +4 -2
  10. package/bundled/qc-helper/docs/features/channels/telegram.md +4 -2
  11. package/bundled/qc-helper/docs/features/channels/wecom.md +1 -1
  12. package/bundled/qc-helper/docs/features/code-review.md +4 -0
  13. package/bundled/qc-helper/docs/features/commands.md +1 -1
  14. package/bundled/qc-helper/docs/features/hooks.md +52 -0
  15. package/bundled/qc-helper/docs/integration-jetbrains.md +1 -0
  16. package/bundled/qc-helper/docs/qwen-serve.md +4 -1
  17. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +50 -36
  18. package/bundled/review/SKILL.md +28 -5
  19. package/chunks/{MaxSizedBox-ANWZBPTS.js → MaxSizedBox-7PM6BGJ5.js} +26 -22
  20. package/chunks/{StandaloneSessionPicker-XKS3VU3A.js → StandaloneSessionPicker-3UQHM7GV.js} +44 -40
  21. package/chunks/{acp-startup-profiler-ORIQ2CCQ.js → acp-startup-profiler-B5BYAMYQ.js} +2 -2
  22. package/chunks/{acpAgent-KUAZ3GCZ.js → acpAgent-5UWLFV6V.js} +534 -262
  23. package/chunks/{agent-T6PTGX5R.js → agent-624T2BLO.js} +26 -22
  24. package/chunks/{agent-headless-PR7YCB7S.js → agent-headless-2EE5J2KX.js} +26 -22
  25. package/chunks/{artifact-tool-U4VOZIK5.js → artifact-tool-N652YE4L.js} +1 -1
  26. package/chunks/{askUserQuestion-XOBQLPFA.js → askUserQuestion-ONW74PKJ.js} +1 -1
  27. package/chunks/{bridge-NU6YEEHK.js → bridge-JENKGFFP.js} +29 -25
  28. package/chunks/{ca-NYKNH222.js → ca-ZLKAB4K3.js} +6 -0
  29. package/chunks/{channel-management-service-FSQ7SHYI.js → channel-management-service-DDWUPHMU.js} +19 -10
  30. package/chunks/{channel-settings-store-35VQVUVV.js → channel-settings-store-SA6JZSPH.js} +34 -30
  31. package/chunks/{channel-worker-group-JWQK224X.js → channel-worker-group-E67EN3RV.js} +5 -5
  32. package/chunks/{channel-worker-manager-77E3OXRQ.js → channel-worker-manager-SW4C45CF.js} +5 -5
  33. package/chunks/{channel-worker-supervisor-62YWUGP2.js → channel-worker-supervisor-5SRD24FG.js} +3 -3
  34. package/chunks/{chunk-CJXIIILK.js → chunk-2FRY5CRX.js} +1 -1
  35. package/chunks/{chunk-ZJ3VGYHK.js → chunk-2ILAOM2I.js} +34 -17
  36. package/chunks/{chunk-6XJMFJ4D.js → chunk-2M4K4KYS.js} +177 -120
  37. package/chunks/{chunk-CNIID3TV.js → chunk-2UUMVNYT.js} +1 -1
  38. package/chunks/{chunk-22NBYCPD.js → chunk-3P2LV43B.js} +1 -1
  39. package/chunks/{chunk-2U3WZGZG.js → chunk-3PY4LPJF.js} +19 -131
  40. package/chunks/{chunk-SPMY6CX6.js → chunk-3SE7J4DR.js} +3 -3
  41. package/chunks/{chunk-6UWFTUQL.js → chunk-3WNQOYHQ.js} +66 -22
  42. package/chunks/{chunk-KXSDEOFU.js → chunk-4ALIARFY.js} +1 -1
  43. package/chunks/{chunk-D3UEZIQH.js → chunk-4DU3NCHG.js} +48 -55
  44. package/chunks/{chunk-BGG4MBYD.js → chunk-4PYCZH2V.js} +4 -187
  45. package/chunks/{chunk-H2UQ2M5Z.js → chunk-4WU6NY7F.js} +96 -22
  46. package/chunks/{chunk-TLV2IMHR.js → chunk-5ZGR6RKJ.js} +3 -3
  47. package/chunks/{chunk-3K7FH2KQ.js → chunk-67N6HB5H.js} +1310 -171
  48. package/chunks/{chunk-EORNAQDT.js → chunk-6TR7CFXH.js} +1 -1
  49. package/chunks/{chunk-NG2R4N5O.js → chunk-6ZRFAKXK.js} +1 -1
  50. package/chunks/{chunk-P2AJ7FTI.js → chunk-757GB46F.js} +1 -1
  51. package/chunks/{chunk-72LNFGUY.js → chunk-77QVBFCU.js} +3 -3
  52. package/chunks/{chunk-OH2VKQXH.js → chunk-7DVT4LVV.js} +37 -30
  53. package/chunks/{chunk-KKJJB5X6.js → chunk-7VUERJHS.js} +1503 -815
  54. package/chunks/{chunk-VOARQPTA.js → chunk-B52AWKBB.js} +65 -21
  55. package/chunks/{chunk-Y4EWSQF7.js → chunk-BF224XHL.js} +2 -2
  56. package/chunks/{chunk-PJOBIWUG.js → chunk-BF52U4XJ.js} +1 -1
  57. package/chunks/{chunk-55LYDVPU.js → chunk-C5VWPTGT.js} +1 -1
  58. package/chunks/{chunk-W7U4ESW2.js → chunk-CG3WBKJK.js} +1 -1
  59. package/chunks/chunk-COBO5EBO.js +135 -0
  60. package/chunks/chunk-CPG6P4GG.js +82 -0
  61. package/chunks/{chunk-DIEFUBV6.js → chunk-DIWZNWZT.js} +205 -35
  62. package/chunks/{chunk-AE77C5ZU.js → chunk-DQSDACD2.js} +1 -1
  63. package/chunks/{chunk-P3LEG54R.js → chunk-DX5W5AON.js} +2 -2
  64. package/chunks/{chunk-EUQTXRKZ.js → chunk-E4ZBKMSF.js} +5 -5
  65. package/chunks/{chunk-FPM27XN4.js → chunk-EIVICVHM.js} +4 -4
  66. package/chunks/{chunk-YHEEE624.js → chunk-EN2TKTFH.js} +1 -1
  67. package/chunks/chunk-F6WFNA7U.js +22 -0
  68. package/chunks/{chunk-FZBZSYKU.js → chunk-FN6YXJOP.js} +1 -1
  69. package/chunks/{chunk-KR4ZSC7K.js → chunk-FWBXMANW.js} +3 -3
  70. package/chunks/{chunk-LA7YLSR6.js → chunk-FYAXKJK7.js} +327 -67
  71. package/chunks/{chunk-CSZEXZBE.js → chunk-GBDINRIL.js} +3 -3
  72. package/chunks/{chunk-SCI7K3GM.js → chunk-GOEVOFQI.js} +19 -10
  73. package/chunks/{chunk-LEMXGVEP.js → chunk-GQCEQPYQ.js} +3 -3
  74. package/chunks/{chunk-Y7E5LNLO.js → chunk-GXSNGY5M.js} +1027 -876
  75. package/chunks/{chunk-6XU3PH66.js → chunk-HA3SAB64.js} +22 -69
  76. package/chunks/{chunk-Y4NGLFGJ.js → chunk-HUWENAHO.js} +1 -1
  77. package/chunks/{chunk-3ULCB3NE.js → chunk-HV76SFIA.js} +1 -1
  78. package/chunks/{chunk-CB2464BK.js → chunk-HWX5HPUG.js} +14 -4
  79. package/chunks/{chunk-LZC3B5N2.js → chunk-IA7TGCN2.js} +2 -2
  80. package/chunks/{chunk-RERATVSK.js → chunk-IBYULW65.js} +6 -6
  81. package/chunks/{chunk-HYRDKNUY.js → chunk-IUQ52YJK.js} +1 -1
  82. package/chunks/{chunk-TDXGKHDN.js → chunk-IYES5WOT.js} +2 -2
  83. package/chunks/{chunk-RGSBTHSU.js → chunk-KAQCJO6Y.js} +131 -4
  84. package/chunks/{chunk-VWOVHOTT.js → chunk-KJZ26VBX.js} +1 -1
  85. package/chunks/{chunk-6GONZVLS.js → chunk-KKDVZLGL.js} +1 -1
  86. package/chunks/{chunk-MKVZE4ZJ.js → chunk-KTJFU7RT.js} +3 -2
  87. package/chunks/{chunk-R574ATRM.js → chunk-M2PNLYGY.js} +41 -0
  88. package/chunks/{chunk-6EOI4HOK.js → chunk-M3STHEMM.js} +12 -17
  89. package/chunks/chunk-NGYI5EF5.js +244 -0
  90. package/chunks/{chunk-ALGGS7UH.js → chunk-NPQ5ZKRP.js} +82 -1
  91. package/chunks/{chunk-HQB2KUAN.js → chunk-NPUXXRJI.js} +1 -1
  92. package/chunks/{chunk-QETYKPMG.js → chunk-NVRDQFCX.js} +1 -1
  93. package/chunks/{chunk-PQBHU2IA.js → chunk-OHKJVAKG.js} +10 -10
  94. package/chunks/{chunk-CYR3HI5X.js → chunk-OQTXYMKW.js} +2 -2
  95. package/chunks/{chunk-DBOFL3LQ.js → chunk-PG62DFWD.js} +10 -10
  96. package/chunks/{chunk-2VSTGY6M.js → chunk-PJRW65JO.js} +1 -1
  97. package/chunks/{chunk-33ACCIIY.js → chunk-PLFATELK.js} +1 -1
  98. package/chunks/{chunk-IC4Z6LX6.js → chunk-PYQADEFD.js} +5 -0
  99. package/chunks/{chunk-MAJS7AT4.js → chunk-QGHSP65Z.js} +2 -2
  100. package/chunks/{chunk-OHJLEW5J.js → chunk-QQWD7LZV.js} +4 -4
  101. package/chunks/{chunk-ZXU5UHMI.js → chunk-QXVSWG66.js} +2 -2
  102. package/chunks/{chunk-E33LOKRA.js → chunk-RPWVIXDB.js} +18 -1
  103. package/chunks/{chunk-TYKC75AX.js → chunk-S3Y3GBFD.js} +1 -1
  104. package/chunks/{chunk-7UFKAV7Y.js → chunk-S6HYI3MF.js} +2 -2
  105. package/chunks/chunk-SAH4BD2J.js +92 -0
  106. package/chunks/{chunk-OMKQH5C5.js → chunk-SNRT2TJJ.js} +6 -23
  107. package/chunks/chunk-SR7RZ4MS.js +202 -0
  108. package/chunks/{chunk-CXE7E23H.js → chunk-TE3ZAJE7.js} +45 -17
  109. package/chunks/{chunk-S7CV4KO6.js → chunk-TKSZJ5BV.js} +3 -3
  110. package/chunks/{chunk-3NB7TSE2.js → chunk-U5SLIG7E.js} +1 -1
  111. package/chunks/chunk-UA5H3DS2.js +203 -0
  112. package/chunks/{chunk-24ER7UV4.js → chunk-UFALT4LK.js} +1 -1
  113. package/chunks/{chunk-YJQCUTT2.js → chunk-VWMUDKLC.js} +3 -3
  114. package/chunks/{chunk-RMH5OWLD.js → chunk-VXZ5HAOV.js} +1 -1
  115. package/chunks/{chunk-BVWVWGLE.js → chunk-WAUGQKUU.js} +4 -64
  116. package/chunks/{chunk-SHZYHGQH.js → chunk-WG6542MA.js} +1 -1
  117. package/chunks/{chunk-5KH532V7.js → chunk-WV5J6Q6N.js} +1 -1
  118. package/chunks/{chunk-RNVQB725.js → chunk-XHD7CRP2.js} +2 -2
  119. package/chunks/{chunk-W4B7UBUS.js → chunk-XZKQT2B2.js} +5 -5
  120. package/chunks/{chunk-6HVUFDS2.js → chunk-Y4TETC74.js} +22 -13
  121. package/chunks/{chunk-RZHU3ILK.js → chunk-YEF7XEO2.js} +4 -4
  122. package/chunks/{chunk-RUL4S3K3.js → chunk-YHJFF7KH.js} +146 -45
  123. package/chunks/{chunk-23RZCH76.js → chunk-YOM7DEGB.js} +3 -3
  124. package/chunks/{chunk-OFI7IGST.js → chunk-ZCLLJARV.js} +9 -9
  125. package/chunks/{chunk-GSS34377.js → chunk-ZHA242R4.js} +2 -2
  126. package/chunks/{chunk-TRLYP7OF.js → chunk-ZPLALRXZ.js} +17 -9
  127. package/chunks/{chunk-WUC6ZFXO.js → chunk-ZWBUH5UP.js} +1 -1
  128. package/chunks/{computer-use-KEAPATUY.js → computer-use-ESQYJ3JY.js} +26 -22
  129. package/chunks/{config-utils-K7SCOWHD.js → config-utils-XQHBJP7G.js} +4 -4
  130. package/chunks/{contextCommand-ZJA6A5K5.js → contextCommand-CX3YF4ZE.js} +28 -24
  131. package/chunks/{core-runtime-QMJPWHCI.js → core-runtime-DIAU7JMG.js} +30 -26
  132. package/chunks/{create-sub-session-DJE6XICH.js → create-sub-session-HDPD6HOA.js} +26 -22
  133. package/chunks/{create-sub-session-E4PBYXV5.js → create-sub-session-QIDZUOPU.js} +1 -1
  134. package/chunks/{cron-create-GRBWYMIJ.js → cron-create-VONA5JYY.js} +1 -1
  135. package/chunks/{cron-delete-4CMKBR2M.js → cron-delete-5JXSP2MI.js} +1 -1
  136. package/chunks/{cron-list-W7K4ASOA.js → cron-list-KE4F2CIR.js} +1 -1
  137. package/chunks/{daemon-SCTQMM7Z.js → daemon-VZBGJUNL.js} +30 -0
  138. package/chunks/{daemon-status-provider-FSWDPE2G.js → daemon-status-provider-H6O4UQ4F.js} +33 -29
  139. package/chunks/{daemon-trust-policy-P5L5VFAY.js → daemon-trust-policy-BNUXG6MT.js} +33 -29
  140. package/chunks/{daemon-trust-policy-monitor-73JYN6ET.js → daemon-trust-policy-monitor-E4EQ7GF4.js} +33 -29
  141. package/chunks/{de-VL76CPLV.js → de-LIW4XVLN.js} +5 -0
  142. package/chunks/{deferred-core-runtime-BWRCCFTE.js → deferred-core-runtime-CBMSHPAU.js} +26 -22
  143. package/chunks/{display-image-O2XFPQTC.js → display-image-NQRSIBXM.js} +2 -2
  144. package/chunks/{dist-DPPHJAVL.js → dist-EEEQGCZA.js} +918 -142
  145. package/chunks/{dist-K4WWQBHS.js → dist-HIACTZEK.js} +55 -15
  146. package/chunks/{dist-3BMEUGTG.js → dist-IRL7WA5Z.js} +1 -1
  147. package/chunks/{dist-HVBMEYWK.js → dist-KVISB2O2.js} +1 -1
  148. package/chunks/{dist-KS4O2NKE.js → dist-MBF3I5MX.js} +14 -8
  149. package/chunks/{dist-SFQ34F4M.js → dist-MKX5OSFF.js} +5 -4
  150. package/chunks/{dist-7JGAAQSC.js → dist-RCH3I7SS.js} +2 -2
  151. package/chunks/{dist-C5U4LJKW.js → dist-TUSWNE2I.js} +5 -4
  152. package/chunks/{earlyInputCapture-L5ST23A6.js → earlyInputCapture-UIOP7OIN.js} +26 -22
  153. package/chunks/{edit-LHHRFNFK.js → edit-ITMZYFKA.js} +26 -22
  154. package/chunks/{en-IRJ2WN5T.js → en-SY5GTIGX.js} +6 -0
  155. package/chunks/{enter-worktree-6NXCRZPF.js → enter-worktree-S4PL5UV6.js} +26 -22
  156. package/chunks/{enterPlanMode-ZVQT4U7D.js → enterPlanMode-YV52NNJT.js} +26 -22
  157. package/chunks/{environment-GJ2HWJOS.js → environment-NGOWPRZV.js} +30 -26
  158. package/chunks/{errors-6RLH3XXC.js → errors-BU26DTDX.js} +28 -24
  159. package/chunks/{exit-worktree-I2YLUHHY.js → exit-worktree-XRM6LH5F.js} +26 -22
  160. package/chunks/{exitPlanMode-7CCWKO7I.js → exitPlanMode-ZLI5F7KR.js} +26 -22
  161. package/chunks/{fast-path-DVFD4HQD.js → fast-path-UJWORIED.js} +23 -3
  162. package/chunks/{fast-path-settings-WQJU2LAT.js → fast-path-settings-37WQD5B2.js} +6 -3
  163. package/chunks/{fr-GK3HQYVB.js → fr-RQFO7U4P.js} +5 -0
  164. package/chunks/{gemini-7FWGOYD4.js → gemini-ZSKNDUMU.js} +77 -65
  165. package/chunks/{geminiContentGenerator-V2WVLIXU.js → geminiContentGenerator-YGEXOEKD.js} +1 -1
  166. package/chunks/{glob-3N6GGI75.js → glob-7KZG44BR.js} +26 -22
  167. package/chunks/{goal-tools-APOW6UXL.js → goal-tools-PXWN5VK3.js} +4 -2
  168. package/chunks/{grep-V43ILZVX.js → grep-6ZFC7RJ5.js} +26 -22
  169. package/chunks/{handleAutoUpdate-A5WFVWIA.js → handleAutoUpdate-KSEL3TQS.js} +30 -26
  170. package/chunks/{i18n-PLVQ4FBZ.js → i18n-ZIUXBW5V.js} +27 -23
  171. package/chunks/{image-gen-7C6IK6DC.js → image-gen-AUIZJJNK.js} +7 -5
  172. package/chunks/{initializer-CVAIKZYL.js → initializer-7AHY3N6Q.js} +33 -29
  173. package/chunks/{installationInfo-J6QDHNTK.js → installationInfo-VGBXMYLY.js} +27 -23
  174. package/chunks/{ja-3FA46IKD.js → ja-KOZKHJHZ.js} +5 -0
  175. package/chunks/{list-ZZ4OUUWV.js → list-PSFKQHLB.js} +36 -32
  176. package/chunks/{list-agents-KFFIIS2G.js → list-agents-Z4WABFDZ.js} +1 -1
  177. package/chunks/{loadedSettingsAdapter-QRYRJSWL.js → loadedSettingsAdapter-FTMRCTOF.js} +33 -29
  178. package/chunks/{loggingContentGenerator-OJCO75HM.js → loggingContentGenerator-MZAN52UV.js} +7 -5
  179. package/chunks/{loop-wakeup-TLMJPMMP.js → loop-wakeup-UZ5RL5Y2.js} +2 -2
  180. package/chunks/{ls-UVVE2XGE.js → ls-TVHDGIES.js} +1 -1
  181. package/chunks/{lsp-QMEA2VLB.js → lsp-CVN6OQPI.js} +1 -1
  182. package/chunks/{managed-npm-update-PCOSCP2N.js → managed-npm-update-O4NHK45X.js} +27 -23
  183. package/chunks/{mcp-M3WKKWKY.js → mcp-6CFP2AYQ.js} +33 -29
  184. package/chunks/{monitor-GN24FH6C.js → monitor-DAKD6OU4.js} +26 -22
  185. package/chunks/{nonInteractiveCli-KPTU3VSQ.js → nonInteractiveCli-RC7VIUZL.js} +66 -60
  186. package/chunks/{notebook-edit-4YM65BBO.js → notebook-edit-474DPMRL.js} +34 -22
  187. package/chunks/{openaiContentGenerator-EDQT6GTV.js → openaiContentGenerator-2NFY2MWO.js} +19 -9
  188. package/chunks/{pidfile-JOIIRN2C.js → pidfile-KBFVDNQP.js} +26 -22
  189. package/chunks/{process-registry-2CHQBXH5.js → process-registry-PMJOA5CO.js} +15 -0
  190. package/chunks/{processUtils-5SV4MX3Q.js → processUtils-6GRYH4Y3.js} +2 -2
  191. package/chunks/{pt-3AOBKPIJ.js → pt-U6AOCTMF.js} +5 -0
  192. package/chunks/{qwenContentGenerator-ODRJSUGR.js → qwenContentGenerator-KAHU6IZY.js} +33 -28
  193. package/chunks/{qwenOAuth2-NESCMZ47.js → qwenOAuth2-RRQTCP4W.js} +7 -5
  194. package/chunks/{read-file-HPSODLPK.js → read-file-3M6WXDXP.js} +6 -4
  195. package/chunks/{read-mcp-resource-2TNSJTC3.js → read-mcp-resource-PZ4ZF6YL.js} +1 -1
  196. package/chunks/{record-artifact-RAON52FC.js → record-artifact-P4HFMS7X.js} +2 -2
  197. package/chunks/{resumeHistoryUtils-TXCOFFMQ.js → resumeHistoryUtils-D6TAY3HX.js} +30 -26
  198. package/chunks/{ripGrep-ZKQGTQAO.js → ripGrep-PLPENT3E.js} +26 -22
  199. package/chunks/{ru-VJRAMC4W.js → ru-CMX4UMYP.js} +5 -0
  200. package/chunks/{run-qwen-serve-ZPKPKECF.js → run-qwen-serve-ZAFIJKJC.js} +168 -54
  201. package/chunks/{runtime-2FLNNM36.js → runtime-ZED7CYOZ.js} +38 -34
  202. package/chunks/{scheduler-365PJHNR.js → scheduler-MD3AL2W5.js} +26 -22
  203. package/chunks/{send-message-ZM7MRUGP.js → send-message-CAMSLG2L.js} +4 -3
  204. package/chunks/{serve-QD2RNLKJ.js → serve-E3VUDRZN.js} +33 -29
  205. package/chunks/{server-XLJVLTYM.js → server-OWMEMAKR.js} +450 -231
  206. package/chunks/{session-3VTUHH4Q.js → session-HZ57QK7K.js} +158 -97
  207. package/chunks/{settings-KULVPCQC.js → settings-V7BR3RKP.js} +32 -28
  208. package/chunks/{shell-3SWW22MH.js → shell-23OMNMW6.js} +26 -22
  209. package/chunks/{skill-KDHWYS7W.js → skill-6HBDYZRS.js} +7 -5
  210. package/chunks/{skill-settings-NMY4JEJC.js → skill-settings-HWJLTU7M.js} +32 -28
  211. package/chunks/{spawnChannel-ZKS4Q5OU.js → spawnChannel-N6KKUW5B.js} +27 -23
  212. package/chunks/{standalone-update-7CXPGAQ4.js → standalone-update-QGIKHATD.js} +28 -24
  213. package/chunks/{startInteractiveUI-2QQLEKM6.js → startInteractiveUI-GX2CRL42.js} +365 -155
  214. package/chunks/{syntheticOutput-ZLCUTKO2.js → syntheticOutput-PEBJQYJV.js} +2 -2
  215. package/chunks/{task-create-CQP5UEA3.js → task-create-5NWCQSJF.js} +5 -4
  216. package/chunks/{task-list-XLEZOJXP.js → task-list-53265TRZ.js} +1 -1
  217. package/chunks/{task-stop-7ZQM5CFF.js → task-stop-FPCOIRYX.js} +1 -1
  218. package/chunks/{task-update-JA75U2SN.js → task-update-5HN577LS.js} +5 -4
  219. package/chunks/{team-create-2WTNGAOX.js → team-create-CFFKU7KL.js} +26 -22
  220. package/chunks/{team-delete-MHY3UZGY.js → team-delete-MMQB4OSC.js} +1 -1
  221. package/chunks/{team-plan-approval-LZTYLEG4.js → team-plan-approval-6EFOKR6A.js} +26 -22
  222. package/chunks/{terminal-image-renderer-R5HHAFJN.js → terminal-image-renderer-TLDNACQY.js} +28 -24
  223. package/chunks/{theme-manager-PAUCSJFF.js → theme-manager-5LJ3H7VO.js} +26 -22
  224. package/chunks/{todoWrite-UPVOHYGD.js → todoWrite-JGV6VLOX.js} +1 -1
  225. package/chunks/{tool-search-2BFCGLI6.js → tool-search-UJV3A24H.js} +9 -6
  226. package/chunks/{total-session-admission-MK4SINFK.js → total-session-admission-D63QYXGO.js} +29 -25
  227. package/chunks/{trustedFolders-TJ5S26N7.js → trustedFolders-KZCOB53W.js} +30 -24
  228. package/chunks/{update-relaunch-N7AYLARF.js → update-relaunch-IFILM3SA.js} +5 -5
  229. package/chunks/{updateCheck-QRZ3DVT5.js → updateCheck-YZ2CRCFC.js} +29 -25
  230. package/chunks/{useAutoAcceptIndicator-DBJ7Y5AF.js → useAutoAcceptIndicator-AXEVNA3Q.js} +35 -31
  231. package/chunks/{validateNonInterActiveAuth-6ZQWUDS3.js → validateNonInterActiveAuth-3WTOJFWA.js} +61 -57
  232. package/chunks/{version-AJQGQWXC.js → version-GXK7OHZY.js} +1 -1
  233. package/chunks/{web-fetch-QWJYRXFL.js → web-fetch-ILB4GAVR.js} +12 -8
  234. package/chunks/{web-search-2AOXJGHU.js → web-search-HKRPGPZZ.js} +8 -6
  235. package/chunks/{workflow-ERH3SJG2.js → workflow-FXIPRQQA.js} +750 -147
  236. package/chunks/{workspace-providers-status-HZ474RA4.js → workspace-providers-status-NYHC7HSR.js} +35 -31
  237. package/chunks/{workspace-registration-store-6EUP4JXG.js → workspace-registration-store-AKEB7OMW.js} +1 -1
  238. package/chunks/{workspace-registry-R4APRRNC.js → workspace-registry-CDAS5TVZ.js} +29 -25
  239. package/chunks/{workspace-service-HFIFDMU7.js → workspace-service-PAMUKMAV.js} +36 -32
  240. package/chunks/{workspace-skills-status-HAHEIHGK.js → workspace-skills-status-YQSHCCMS.js} +33 -29
  241. package/chunks/{workspace-trust-reconciler-65GTAGDK.js → workspace-trust-reconciler-RPTXOIY2.js} +36 -32
  242. package/chunks/{write-file-B34CDELV.js → write-file-CGS57TS4.js} +26 -22
  243. package/chunks/{zh-ARWDLDLR.js → zh-AGL2FVBI.js} +6 -0
  244. package/chunks/{zh-TW-Y4RGI3P7.js → zh-TW-KI66MHQY.js} +6 -0
  245. package/chunks/{zoom-image-HPRBZHSS.js → zoom-image-E7D72GYV.js} +6 -4
  246. package/cli.js +13 -13
  247. package/locales/ca.js +10 -0
  248. package/locales/de.js +9 -0
  249. package/locales/en.js +10 -0
  250. package/locales/fr.js +9 -0
  251. package/locales/ja.js +9 -0
  252. package/locales/pt.js +9 -0
  253. package/locales/ru.js +9 -0
  254. package/locales/zh-TW.js +10 -0
  255. package/locales/zh.js +10 -0
  256. package/package.json +3 -3
  257. package/web-shell/assets/{arc-Ip-FFDJ0.js → arc-DybZaz32.js} +1 -1
  258. package/web-shell/assets/{architectureDiagram-3BPJPVTR-CChqgwIb.js → architectureDiagram-3BPJPVTR-jN3qBd19.js} +1 -1
  259. package/web-shell/assets/{blockDiagram-GPEHLZMM-BHN-Tfss.js → blockDiagram-GPEHLZMM-Ct5DZPrj.js} +1 -1
  260. package/web-shell/assets/{c4Diagram-AAUBKEIU-BhyjzDjN.js → c4Diagram-AAUBKEIU-CUAFMlUG.js} +1 -1
  261. package/web-shell/assets/channel-BMwLrwLW.js +1 -0
  262. package/web-shell/assets/{chunk-2J33WTMH-BB9eyHrx.js → chunk-2J33WTMH-CuV8n90B.js} +1 -1
  263. package/web-shell/assets/{chunk-4BX2VUAB-BeV7ce_J.js → chunk-4BX2VUAB-BUzl_kls.js} +1 -1
  264. package/web-shell/assets/{chunk-55IACEB6-DO7kXDiV.js → chunk-55IACEB6-BnDBLX6A.js} +1 -1
  265. package/web-shell/assets/{chunk-727SXJPM-B27MPznD.js → chunk-727SXJPM-B83uTOjm.js} +1 -1
  266. package/web-shell/assets/{chunk-AQP2D5EJ-DHIjqjD_.js → chunk-AQP2D5EJ-DM3HLgpT.js} +1 -1
  267. package/web-shell/assets/{chunk-FMBD7UC4-DabMqyN2.js → chunk-FMBD7UC4-CSQ5hgyb.js} +1 -1
  268. package/web-shell/assets/{chunk-ND2GUHAM-Dw7Nnnxc.js → chunk-ND2GUHAM-BWOF4SxX.js} +1 -1
  269. package/web-shell/assets/{chunk-QZHKN3VN-DdaZew1Q.js → chunk-QZHKN3VN-BsOH9LMi.js} +1 -1
  270. package/web-shell/assets/classDiagram-4FO5ZUOK-BGDv98jY.js +1 -0
  271. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BGDv98jY.js +1 -0
  272. package/web-shell/assets/{cose-bilkent-S5V4N54A-CgBpCYH5.js → cose-bilkent-S5V4N54A-IENqH2iJ.js} +1 -1
  273. package/web-shell/assets/{dagre-BM42HDAG-BB4IU8G0.js → dagre-BM42HDAG--dyzDTGo.js} +1 -1
  274. package/web-shell/assets/{diagram-2AECGRRQ-BcUTHU37.js → diagram-2AECGRRQ-BE7Dcqof.js} +1 -1
  275. package/web-shell/assets/{diagram-5GNKFQAL-B6Lyihyv.js → diagram-5GNKFQAL-Cr8-5OTj.js} +1 -1
  276. package/web-shell/assets/{diagram-KO2AKTUF-CRIJOjpG.js → diagram-KO2AKTUF-Bzey3uAY.js} +1 -1
  277. package/web-shell/assets/{diagram-LMA3HP47-DdNiwWWT.js → diagram-LMA3HP47-sErl28Xb.js} +1 -1
  278. package/web-shell/assets/{diagram-OG6HWLK6-Dz4b32Do.js → diagram-OG6HWLK6-Dq30ATIo.js} +1 -1
  279. package/web-shell/assets/{erDiagram-TEJ5UH35-D-8NGw77.js → erDiagram-TEJ5UH35-BkCoEfVW.js} +1 -1
  280. package/web-shell/assets/{flowDiagram-I6XJVG4X-Dun26LyM.js → flowDiagram-I6XJVG4X-DHwO0rrI.js} +1 -1
  281. package/web-shell/assets/{ganttDiagram-6RSMTGT7-F10Hu1Gc.js → ganttDiagram-6RSMTGT7-s7vAPxWq.js} +1 -1
  282. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Bf8Ez6-D.js → gitGraphDiagram-PVQCEYII-CQxhwPOU.js} +1 -1
  283. package/web-shell/assets/index-Bckpjr-I.css +5 -0
  284. package/web-shell/assets/{index-BXqw-nGq.js → index-CF4wApWp.js} +1 -1
  285. package/web-shell/assets/index-DwEr9HEW.js +1768 -0
  286. package/web-shell/assets/{infoDiagram-5YYISTIA-DVgTMLvj.js → infoDiagram-5YYISTIA-BnFrD0bq.js} +1 -1
  287. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-uT-KepvK.js → ishikawaDiagram-YF4QCWOH-Bf9zK5NK.js} +1 -1
  288. package/web-shell/assets/{journeyDiagram-JHISSGLW-Vg_XadQf.js → journeyDiagram-JHISSGLW-CyGAhsxi.js} +1 -1
  289. package/web-shell/assets/{kanban-definition-UN3LZRKU-Dyv1ESBE.js → kanban-definition-UN3LZRKU-CbsK5akB.js} +1 -1
  290. package/web-shell/assets/{linear-BMIepYX3.js → linear-cQsF4P8D.js} +1 -1
  291. package/web-shell/assets/{mermaid.core-zA8pJ9ag.js → mermaid.core-Z4HVqrKY.js} +5 -5
  292. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BCW_BZ_5.js → mindmap-definition-RKZ34NQL-CYnrBo_f.js} +1 -1
  293. package/web-shell/assets/{pieDiagram-4H26LBE5-DseNEGp2.js → pieDiagram-4H26LBE5-CBzOfhrs.js} +1 -1
  294. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-6Z7wr1Fi.js → quadrantDiagram-W4KKPZXB-D4LK1Ebn.js} +1 -1
  295. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CVOlCRPf.js → requirementDiagram-4Y6WPE33-Bzti2Lcj.js} +1 -1
  296. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CGhgrUJZ.js → sankeyDiagram-5OEKKPKP-yTBw5Z2s.js} +1 -1
  297. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-dlqmpLuQ.js → sequenceDiagram-3UESZ5HK-D07UVRiZ.js} +1 -1
  298. package/web-shell/assets/{stateDiagram-AJRCARHV-B9EW10Xb.js → stateDiagram-AJRCARHV-UE_lHsTn.js} +1 -1
  299. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DC6xgXjX.js +1 -0
  300. package/web-shell/assets/{timeline-definition-PNZ67QCA-BBRh0mgZ.js → timeline-definition-PNZ67QCA-DRvYdiTs.js} +1 -1
  301. package/web-shell/assets/{vennDiagram-CIIHVFJN-B8Gs-REP.js → vennDiagram-CIIHVFJN-CQLIXs0u.js} +1 -1
  302. package/web-shell/assets/{wardley-L42UT6IY-D_y80Ur7.js → wardley-L42UT6IY-JZz_Xqse.js} +1 -1
  303. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-D-CNfHJ-.js → wardleyDiagram-YWT4CUSO--i7BiJwB.js} +1 -1
  304. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DQ5CvELo.js → xychartDiagram-2RQKCTM6-Bkc-bW0S.js} +1 -1
  305. package/web-shell/index.html +2 -2
  306. package/chunks/chunk-6PEXNQTX.js +0 -68
  307. package/chunks/chunk-IUFV6FYU.js +0 -81
  308. package/web-shell/assets/channel-Cu8qd6OB.js +0 -1
  309. package/web-shell/assets/classDiagram-4FO5ZUOK-BI3KrXhq.js +0 -1
  310. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BI3KrXhq.js +0 -1
  311. package/web-shell/assets/index-QQlUCJGg.css +0 -5
  312. package/web-shell/assets/index-hcgjV7vS.js +0 -1768
  313. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CJTZJJ5X.js +0 -1
  314. package/chunks/{anthropicContentGenerator-DTMVEL5M.js → anthropicContentGenerator-SSFE2753.js} +9 -9
@@ -12,7 +12,7 @@ import {
12
12
  isTerminalTaskLifecycleType,
13
13
  sanitizeLogText,
14
14
  sanitizeSenderName
15
- } from "./chunk-DIEFUBV6.js";
15
+ } from "./chunk-DIWZNWZT.js";
16
16
  import "./chunk-UDXSXLER.js";
17
17
  import "./chunk-H6XPXXMH.js";
18
18
  import "./chunk-CR3C7WXL.js";
@@ -5073,6 +5073,8 @@ var DingtalkInteractiveCardClient = class {
5073
5073
 
5074
5074
  // packages/channels/dingtalk/dist/interactive-card-types.js
5075
5075
  init_esbuild_shims();
5076
+ var DINGTALK_INTERACTIVE_CARD_TIMEOUT_EXCLUSIVE_MINIMUM = 0;
5077
+ var DINGTALK_INTERACTIVE_CARD_TIMEOUT_MAXIMUM_MS = 2147483647;
5076
5078
  var DEFAULT_QUESTION_TIMEOUT_MS = 27e4;
5077
5079
  function asRecord(value) {
5078
5080
  return value !== null && typeof value === "object" && !Array.isArray(value) ? value : void 0;
@@ -5117,7 +5119,7 @@ function parseDingtalkInteractiveCardConfig(value) {
5117
5119
  throw new Error("DingTalk interactiveCards.questionCard must be an object.");
5118
5120
  }
5119
5121
  const timeoutMs = question?.["timeoutMs"] === void 0 ? DEFAULT_QUESTION_TIMEOUT_MS : question["timeoutMs"];
5120
- if (typeof timeoutMs !== "number" || !Number.isFinite(timeoutMs) || timeoutMs <= 0) {
5122
+ if (typeof timeoutMs !== "number" || !Number.isFinite(timeoutMs) || timeoutMs <= DINGTALK_INTERACTIVE_CARD_TIMEOUT_EXCLUSIVE_MINIMUM) {
5121
5123
  throw new Error("DingTalk interactiveCards.questionCard.timeoutMs must be a finite positive number.");
5122
5124
  }
5123
5125
  return {
@@ -5127,7 +5129,7 @@ function parseDingtalkInteractiveCardConfig(value) {
5127
5129
  },
5128
5130
  questionCard: {
5129
5131
  enabled: optionalBoolean(question?.["enabled"], "questionCard.enabled", true),
5130
- timeoutMs
5132
+ timeoutMs: Math.min(timeoutMs, DINGTALK_INTERACTIVE_CARD_TIMEOUT_MAXIMUM_MS)
5131
5133
  }
5132
5134
  };
5133
5135
  }
@@ -6206,9 +6208,9 @@ var IMAGE_INSTRUCTIONS = [
6206
6208
  "",
6207
6209
  "Only use a real image file inside the workspace or system temporary directory."
6208
6210
  ].join("\n");
6209
- function withNonBotMentionContext(data, text) {
6211
+ function collectNonBotMentionIds(data) {
6210
6212
  if (!Array.isArray(data.atUsers) || typeof data.chatbotUserId !== "string") {
6211
- return text;
6213
+ return [];
6212
6214
  }
6213
6215
  const mentions = /* @__PURE__ */ new Set();
6214
6216
  for (const user of data.atUsers) {
@@ -6218,18 +6220,13 @@ function withNonBotMentionContext(data, text) {
6218
6220
  if (dingtalkId === data.chatbotUserId)
6219
6221
  continue;
6220
6222
  const staffId = typeof user.staffId === "string" ? user.staffId : void 0;
6221
- const stableId = dingtalkId || staffId;
6223
+ const stableId = staffId || dingtalkId;
6222
6224
  if (stableId)
6223
6225
  mentions.add(stableId);
6224
6226
  }
6225
- if (mentions.size === 0)
6226
- return text;
6227
- const memberLabel = mentions.size === 1 ? "member" : "members";
6228
- const context = `[Mentioned ${mentions.size} other group ${memberLabel}]`;
6229
- return text ? `${context}
6230
- ${text}` : context;
6227
+ return [...mentions];
6231
6228
  }
6232
- __name(withNonBotMentionContext, "withNonBotMentionContext");
6229
+ __name(collectNonBotMentionIds, "collectNonBotMentionIds");
6233
6230
  var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
6234
6231
  static {
6235
6232
  __name(this, "DingtalkChannel");
@@ -7278,7 +7275,7 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
7278
7275
  const quoted = this.extractQuotedContext(data);
7279
7276
  const chatId = conversationId || sessionWebhook;
7280
7277
  const messageText = isMentioned ? cleanText : cleanText || content.text;
7281
- const envelopeText = isGroup ? withNonBotMentionContext(data, messageText) : messageText;
7278
+ const mentionedMemberIds = isGroup ? collectNonBotMentionIds(data) : [];
7282
7279
  const senderId = senderStaffId || senderIdValue || "";
7283
7280
  const senderName = senderNick || senderId || "Unknown";
7284
7281
  const envelope = {
@@ -7287,7 +7284,8 @@ var DingtalkChannel = class _DingtalkChannel extends ChannelBase {
7287
7284
  senderName,
7288
7285
  chatId,
7289
7286
  ...isGroup && conversationTitle ? { chatName: conversationTitle } : {},
7290
- text: envelopeText,
7287
+ text: messageText,
7288
+ ...mentionedMemberIds.length > 0 ? { mentionedMemberIds } : {},
7291
7289
  isGroup,
7292
7290
  isMentioned,
7293
7291
  isReplyToBot: quoted.isReplyToBot,
@@ -7336,6 +7334,48 @@ var plugin = {
7336
7334
  kind: "secret",
7337
7335
  required: true,
7338
7336
  envResolvable: true
7337
+ },
7338
+ {
7339
+ key: "interactiveCards",
7340
+ label: "Interactive Cards",
7341
+ kind: "object",
7342
+ properties: [
7343
+ {
7344
+ key: "enabled",
7345
+ label: "Enabled",
7346
+ kind: "boolean"
7347
+ },
7348
+ {
7349
+ key: "statusCard",
7350
+ label: "Status Card",
7351
+ kind: "object",
7352
+ properties: [
7353
+ {
7354
+ key: "enabled",
7355
+ label: "Enabled",
7356
+ kind: "boolean"
7357
+ }
7358
+ ]
7359
+ },
7360
+ {
7361
+ key: "questionCard",
7362
+ label: "Question Card",
7363
+ kind: "object",
7364
+ properties: [
7365
+ {
7366
+ key: "enabled",
7367
+ label: "Enabled",
7368
+ kind: "boolean"
7369
+ },
7370
+ {
7371
+ key: "timeoutMs",
7372
+ label: "Timeout (ms)",
7373
+ kind: "number",
7374
+ exclusiveMinimum: DINGTALK_INTERACTIVE_CARD_TIMEOUT_EXCLUSIVE_MINIMUM
7375
+ }
7376
+ ]
7377
+ }
7378
+ ]
7339
7379
  }
7340
7380
  ]
7341
7381
  },
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  ChannelBase,
5
5
  isTerminalTaskLifecycleType
6
- } from "./chunk-DIEFUBV6.js";
6
+ } from "./chunk-DIWZNWZT.js";
7
7
  import "./chunk-UDXSXLER.js";
8
8
  import "./chunk-H6XPXXMH.js";
9
9
  import {
@@ -10,7 +10,7 @@ import "./chunk-T3CHYWJZ.js";
10
10
  import {
11
11
  ChannelBase,
12
12
  sanitizeLogText
13
- } from "./chunk-DIEFUBV6.js";
13
+ } from "./chunk-DIWZNWZT.js";
14
14
  import "./chunk-UDXSXLER.js";
15
15
  import "./chunk-H6XPXXMH.js";
16
16
  import "./chunk-CR3C7WXL.js";
@@ -5,7 +5,7 @@ import {
5
5
  getGlobalQwenDir,
6
6
  getWorkspaceScopeDirName,
7
7
  sanitizeLogText
8
- } from "./chunk-DIEFUBV6.js";
8
+ } from "./chunk-DIWZNWZT.js";
9
9
  import "./chunk-UDXSXLER.js";
10
10
  import "./chunk-H6XPXXMH.js";
11
11
  import {
@@ -3916,7 +3916,7 @@ function isInboundEnvelope(value) {
3916
3916
  if (value === null || typeof value !== "object")
3917
3917
  return false;
3918
3918
  const envelope = value;
3919
- return typeof envelope.channelName === "string" && typeof envelope.senderId === "string" && typeof envelope.senderName === "string" && typeof envelope.chatId === "string" && typeof envelope.text === "string" && typeof envelope.isGroup === "boolean" && typeof envelope.isMentioned === "boolean" && typeof envelope.isReplyToBot === "boolean" && (envelope.chatName === void 0 || typeof envelope.chatName === "string") && (envelope.threadId === void 0 || typeof envelope.threadId === "string") && (envelope.messageId === void 0 || typeof envelope.messageId === "string") && (envelope.referencedText === void 0 || typeof envelope.referencedText === "string") && (envelope.imageBase64 === void 0 || typeof envelope.imageBase64 === "string") && (envelope.imageMimeType === void 0 || typeof envelope.imageMimeType === "string") && (envelope.attachments === void 0 || Array.isArray(envelope.attachments)) && (envelope.metadata === void 0 || typeof envelope.metadata === "string") && (envelope.alreadyPrefixed === void 0 || envelope.alreadyPrefixed === true);
3919
+ return typeof envelope.channelName === "string" && typeof envelope.senderId === "string" && typeof envelope.senderName === "string" && typeof envelope.chatId === "string" && typeof envelope.text === "string" && typeof envelope.isGroup === "boolean" && typeof envelope.isMentioned === "boolean" && typeof envelope.isReplyToBot === "boolean" && (envelope.chatName === void 0 || typeof envelope.chatName === "string") && (envelope.threadId === void 0 || typeof envelope.threadId === "string") && (envelope.messageId === void 0 || typeof envelope.messageId === "string") && (envelope.referencedText === void 0 || typeof envelope.referencedText === "string") && isOptionalStringArray(envelope.mentionedMemberIds) && (envelope.imageBase64 === void 0 || typeof envelope.imageBase64 === "string") && (envelope.imageMimeType === void 0 || typeof envelope.imageMimeType === "string") && (envelope.attachments === void 0 || Array.isArray(envelope.attachments)) && (envelope.metadata === void 0 || typeof envelope.metadata === "string") && (envelope.alreadyPrefixed === void 0 || envelope.alreadyPrefixed === true);
3920
3920
  }
3921
3921
  __name(isInboundEnvelope, "isInboundEnvelope");
3922
3922
  function isInboundTaskRecord(value) {
@@ -4553,7 +4553,7 @@ var GithubChannel = class extends PollingChannelBase {
4553
4553
  if (onlyMentioned && !hasMention)
4554
4554
  continue;
4555
4555
  const senderId = (comment.user?.login || "unknown").toLowerCase();
4556
- const allowed = this.gate.isAllowed(senderId);
4556
+ const allowed = this.gate.isAllowed(senderId) || directed && this.config.groupPolicy === "pairing" && this.groupGate.isGroupApproved(ctx.chatId);
4557
4557
  const envelope = {
4558
4558
  channelName: this.name,
4559
4559
  senderId,
@@ -4563,7 +4563,10 @@ var GithubChannel = class extends PollingChannelBase {
4563
4563
  messageId: String(comment.id),
4564
4564
  text: this.botUsername ? stripBotMention(body, this.botUsername) : body,
4565
4565
  isGroup: true,
4566
- isMentioned: hasMention || directed && allowed,
4566
+ // Never synthesize a mention into an unapproved pairing group: the
4567
+ // pairing step must keep dropping ambient comments, and a synthesized
4568
+ // mention would turn every ambient comment into a pairing request.
4569
+ isMentioned: hasMention || directed && allowed && (this.config.groupPolicy !== "pairing" || this.groupGate.isGroupApproved(ctx.chatId)),
4567
4570
  isReplyToBot: false,
4568
4571
  metadata: this.buildRouteMetadata(ctx)
4569
4572
  };
@@ -4575,8 +4578,10 @@ var GithubChannel = class extends PollingChannelBase {
4575
4578
  }
4576
4579
  if (allowed) {
4577
4580
  this.recordDispatchedComment(key);
4578
- if (hasMention)
4579
- dispatched = true;
4581
+ }
4582
+ if (hasMention && (allowed || this.config.groupPolicy === "pairing")) {
4583
+ dispatched = true;
4584
+ this.recordDispatchedBody(`${ctx.chatId}|${ctx.threadId}`);
4580
4585
  }
4581
4586
  }
4582
4587
  if (!dispatched && !ctx.lastReadAt) {
@@ -4615,7 +4620,7 @@ ${details}`
4615
4620
  this.recordDispatched("dispatchedEvents", trigger.key);
4616
4621
  }
4617
4622
  async processAggregateLane(ctx) {
4618
- if (this.config.senderPolicy === "pairing") {
4623
+ if (this.config.senderPolicy === "pairing" || this.config.groupPolicy === "pairing") {
4619
4624
  await this.processCommentLane(ctx, false, true);
4620
4625
  return;
4621
4626
  }
@@ -5147,11 +5152,12 @@ var plugin = {
5147
5152
  label: "Group Policy",
5148
5153
  kind: "enum",
5149
5154
  required: true,
5150
- description: 'Must be "Open" for notifications to flow',
5155
+ description: 'Must be "Open", "Allowlist", or "Pairing" for notifications to flow',
5151
5156
  default: "open",
5152
5157
  options: [
5153
5158
  { value: "open", label: "Open" },
5154
5159
  { value: "allowlist", label: "Allowlist" },
5160
+ { value: "pairing", label: "Pairing" },
5155
5161
  { value: "disabled", label: "Disabled" }
5156
5162
  ]
5157
5163
  },
@@ -8,7 +8,7 @@ import {
8
8
  sanitizePromptText,
9
9
  sanitizeSenderName,
10
10
  truncateCodePoints
11
- } from "./chunk-DIEFUBV6.js";
11
+ } from "./chunk-DIWZNWZT.js";
12
12
  import "./chunk-UDXSXLER.js";
13
13
  import "./chunk-H6XPXXMH.js";
14
14
  import {
@@ -3047,9 +3047,10 @@ var QQChannel = class _QQChannel extends ChannelBase {
3047
3047
  * Returns null when the message has no meaningful text after @-tag stripping.
3048
3048
  */
3049
3049
  prepareGroupMessage(event, chatId, { forceAtMention } = {}) {
3050
- const senderName = event.author?.username || event.author?.id || event.author?.member_openid || "QQ User";
3050
+ const senderName = event.author?.username || "QQ User";
3051
3051
  const safeName = sanitizeSenderName(senderName);
3052
3052
  const senderOpenId = event.author?.member_openid || event.author?.user_openid || "";
3053
+ const senderIdentity = senderOpenId || event.author?.id || "";
3053
3054
  const content = (event.content || "").trim();
3054
3055
  const cleanText = content.replace(/<@[^>]{1,64}>/g, "").trim();
3055
3056
  const safeContent = content.replace(/\[atMention=[^\]]*]/g, "").replace(/\[botOpenId:[^\]]*]/g, "").replace(/\[bot]/g, "");
@@ -3068,7 +3069,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
3068
3069
  \u673A\u5668\u4EBA OPENID: ${groupBotOpenId}` : "";
3069
3070
  const showSenderOpenId = this.qqConfig.allowMention !== false && !!senderOpenId && QQ_OPENID_RE.test(senderOpenId);
3070
3071
  if (!showSenderOpenId && this.qqConfig.allowMention !== false && senderOpenId) {
3071
- const dedupKey = `${chatId}:${senderOpenId}`.slice(0, 64);
3072
+ const dedupKey = `${chatId}:${truncateCodePoints(senderOpenId, 64)}`;
3072
3073
  if (!this.warnedSenderOpenIds.has(dedupKey)) {
3073
3074
  this.warnedSenderOpenIds.add(dedupKey);
3074
3075
  if (this.warnedSenderOpenIds.size > 500) {
@@ -3078,7 +3079,7 @@ var QQChannel = class _QQChannel extends ChannelBase {
3078
3079
  `);
3079
3080
  }
3080
3081
  }
3081
- const senderTag = showSenderOpenId ? `(${senderOpenId})` : senderOpenId ? `(${truncateCodePoints(sanitizeSenderName(senderOpenId), 8)}\u2026)` : "";
3082
+ const senderTag = showSenderOpenId ? `(${senderOpenId})` : senderIdentity ? `(${truncateCodePoints(sanitizeSenderName(senderIdentity), 8)}\u2026)` : "";
3082
3083
  const text = isSlash ? sanitizePromptText(safeCleanText) : `[atMention=${effectiveIsAtBot}]${openIdSuffix} [${safeName}${senderTag}]: ${sanitizePromptText(this.qqConfig.allowMention !== false ? safeContent : safeCleanText)}${suffixFromBotOpenId}`;
3083
3084
  return {
3084
3085
  isAtBot: effectiveIsAtBot,
@@ -11,11 +11,11 @@ import {
11
11
  sendMessage,
12
12
  sendTyping,
13
13
  uploadToCdn
14
- } from "./chunk-WUC6ZFXO.js";
14
+ } from "./chunk-ZWBUH5UP.js";
15
15
  import {
16
16
  ChannelBase,
17
17
  isTerminalTaskLifecycleType
18
- } from "./chunk-DIEFUBV6.js";
18
+ } from "./chunk-DIWZNWZT.js";
19
19
  import "./chunk-UDXSXLER.js";
20
20
  import "./chunk-H6XPXXMH.js";
21
21
  import {
@@ -6,7 +6,7 @@ import {
6
6
  import "./chunk-T3CHYWJZ.js";
7
7
  import {
8
8
  PollingChannelBase
9
- } from "./chunk-DIEFUBV6.js";
9
+ } from "./chunk-DIWZNWZT.js";
10
10
  import "./chunk-UDXSXLER.js";
11
11
  import {
12
12
  external_exports
@@ -13215,8 +13215,8 @@ var GitlabChannel = class extends PollingChannelBase {
13215
13215
  process2.stderr.write(`[Channel:${this.name}] warning: action_prompt_template is not configured; no todos will be processed
13216
13216
  `);
13217
13217
  }
13218
- if (cfg.groupPolicy !== "open" && cfg.groupPolicy !== "allowlist") {
13219
- process2.stderr.write(`[Channel:${this.name}] warning: groupPolicy is "${cfg.groupPolicy ?? "disabled"}"; must be "open" (or "allowlist" with the project listed) for todos to be dispatched
13218
+ if (cfg.groupPolicy !== "open" && cfg.groupPolicy !== "allowlist" && cfg.groupPolicy !== "pairing") {
13219
+ process2.stderr.write(`[Channel:${this.name}] warning: groupPolicy is "${cfg.groupPolicy ?? "disabled"}"; must be "open", "allowlist" (with the project listed), or "pairing" (after one-time group approval) for todos to be dispatched
13220
13220
  `);
13221
13221
  }
13222
13222
  this.api = new Gitlab2({
@@ -13481,11 +13481,12 @@ var plugin = {
13481
13481
  label: "Group Policy",
13482
13482
  kind: "enum",
13483
13483
  required: true,
13484
- description: 'Must be "Open" or "Allowlist" for todos to be processed',
13484
+ description: 'Must be "Open", "Allowlist", or "Pairing" for todos to be processed',
13485
13485
  default: "open",
13486
13486
  options: [
13487
13487
  { value: "open", label: "Open" },
13488
13488
  { value: "allowlist", label: "Allowlist" },
13489
+ { value: "pairing", label: "Pairing" },
13489
13490
  { value: "disabled", label: "Disabled" }
13490
13491
  ]
13491
13492
  },
@@ -8,21 +8,21 @@ import {
8
8
  stopAndGetCapturedInput,
9
9
  stopEarlyInputCapture
10
10
  } from "./chunk-TZEZYNYD.js";
11
- import "./chunk-Y7E5LNLO.js";
11
+ import "./chunk-GXSNGY5M.js";
12
12
  import "./chunk-GOFAQQZA.js";
13
13
  import "./chunk-5M6IDOMF.js";
14
14
  import "./chunk-TWPJO254.js";
15
15
  import "./chunk-H6XPXXMH.js";
16
- import "./chunk-CNIID3TV.js";
16
+ import "./chunk-2UUMVNYT.js";
17
17
  import "./chunk-MVUQRLOH.js";
18
18
  import "./chunk-XCWO3SMQ.js";
19
19
  import "./chunk-7MH4J33A.js";
20
20
  import "./chunk-6PVPNMXU.js";
21
- import "./chunk-RMH5OWLD.js";
21
+ import "./chunk-VXZ5HAOV.js";
22
22
  import "./chunk-IRH27ZC2.js";
23
23
  import "./chunk-QHWCP53L.js";
24
24
  import "./chunk-GNPNYXJB.js";
25
- import "./chunk-Y4NGLFGJ.js";
25
+ import "./chunk-HUWENAHO.js";
26
26
  import "./chunk-O6GEWCJA.js";
27
27
  import "./chunk-T26EAKDL.js";
28
28
  import "./chunk-ZPJWUGCS.js";
@@ -31,37 +31,41 @@ import "./chunk-J6SZID63.js";
31
31
  import "./chunk-KRXPRVGL.js";
32
32
  import "./chunk-GM463R2B.js";
33
33
  import "./chunk-SEZ556DZ.js";
34
- import "./chunk-CJXIIILK.js";
35
- import "./chunk-3K7FH2KQ.js";
36
- import "./chunk-BVWVWGLE.js";
34
+ import "./chunk-2FRY5CRX.js";
35
+ import "./chunk-67N6HB5H.js";
36
+ import "./chunk-WAUGQKUU.js";
37
+ import "./chunk-PLFATELK.js";
38
+ import "./chunk-L4N6TIP7.js";
39
+ import "./chunk-SAH4BD2J.js";
40
+ import "./chunk-CPG6P4GG.js";
37
41
  import "./chunk-S6LOFUVP.js";
38
- import "./chunk-LZC3B5N2.js";
42
+ import "./chunk-2J3OJGTL.js";
43
+ import "./chunk-IA7TGCN2.js";
39
44
  import "./chunk-K623ENWT.js";
40
45
  import "./chunk-AQ37AY7B.js";
41
46
  import "./chunk-EQL65XGA.js";
42
- import "./chunk-IIJEYBNH.js";
43
- import "./chunk-22NBYCPD.js";
47
+ import "./chunk-3P2LV43B.js";
44
48
  import "./chunk-NAVJD2PQ.js";
45
- import "./chunk-3ULCB3NE.js";
46
- import "./chunk-BGG4MBYD.js";
49
+ import "./chunk-HV76SFIA.js";
50
+ import "./chunk-4PYCZH2V.js";
51
+ import "./chunk-P3QQPMQA.js";
52
+ import "./chunk-SR7RZ4MS.js";
53
+ import "./chunk-M6HMMKVG.js";
47
54
  import "./chunk-DGEIYUC3.js";
48
55
  import "./chunk-MPHPFVKK.js";
49
56
  import "./chunk-AXMWHKXA.js";
50
- import "./chunk-DJ2GSRLV.js";
51
- import "./chunk-33ACCIIY.js";
52
- import "./chunk-L4N6TIP7.js";
53
- import "./chunk-2J3OJGTL.js";
54
- import "./chunk-P3QQPMQA.js";
55
- import "./chunk-M6HMMKVG.js";
56
57
  import "./chunk-GLCZKT5V.js";
58
+ import "./chunk-DJ2GSRLV.js";
57
59
  import "./chunk-EI3HZX6C.js";
58
- import "./chunk-2U3WZGZG.js";
60
+ import "./chunk-3PY4LPJF.js";
59
61
  import "./chunk-WOJZWRAZ.js";
60
62
  import "./chunk-VGC4I5JJ.js";
61
63
  import "./chunk-FVKHVJZQ.js";
62
- import "./chunk-NG2R4N5O.js";
63
- import "./chunk-IC4Z6LX6.js";
64
- import "./chunk-6EOI4HOK.js";
64
+ import "./chunk-COBO5EBO.js";
65
+ import "./chunk-6ZRFAKXK.js";
66
+ import "./chunk-PYQADEFD.js";
67
+ import "./chunk-M3STHEMM.js";
68
+ import "./chunk-F6WFNA7U.js";
65
69
  import "./chunk-46UV252V.js";
66
70
  import "./chunk-ZBVS26BY.js";
67
71
  import "./chunk-KKBPOU75.js";
@@ -10,21 +10,21 @@ import {
10
10
  getDiffStat,
11
11
  needsUtf8Bom,
12
12
  safeLiteralReplace
13
- } from "./chunk-Y7E5LNLO.js";
13
+ } from "./chunk-GXSNGY5M.js";
14
14
  import "./chunk-GOFAQQZA.js";
15
15
  import "./chunk-5M6IDOMF.js";
16
16
  import "./chunk-TWPJO254.js";
17
17
  import "./chunk-H6XPXXMH.js";
18
- import "./chunk-CNIID3TV.js";
18
+ import "./chunk-2UUMVNYT.js";
19
19
  import "./chunk-MVUQRLOH.js";
20
20
  import "./chunk-XCWO3SMQ.js";
21
21
  import "./chunk-7MH4J33A.js";
22
22
  import "./chunk-6PVPNMXU.js";
23
- import "./chunk-RMH5OWLD.js";
23
+ import "./chunk-VXZ5HAOV.js";
24
24
  import "./chunk-IRH27ZC2.js";
25
25
  import "./chunk-QHWCP53L.js";
26
26
  import "./chunk-GNPNYXJB.js";
27
- import "./chunk-Y4NGLFGJ.js";
27
+ import "./chunk-HUWENAHO.js";
28
28
  import "./chunk-O6GEWCJA.js";
29
29
  import "./chunk-T26EAKDL.js";
30
30
  import "./chunk-ZPJWUGCS.js";
@@ -33,29 +33,31 @@ import "./chunk-J6SZID63.js";
33
33
  import "./chunk-KRXPRVGL.js";
34
34
  import "./chunk-GM463R2B.js";
35
35
  import "./chunk-SEZ556DZ.js";
36
- import "./chunk-CJXIIILK.js";
37
- import "./chunk-3K7FH2KQ.js";
38
- import "./chunk-BVWVWGLE.js";
36
+ import "./chunk-2FRY5CRX.js";
37
+ import "./chunk-67N6HB5H.js";
38
+ import "./chunk-WAUGQKUU.js";
39
+ import "./chunk-PLFATELK.js";
40
+ import "./chunk-L4N6TIP7.js";
41
+ import "./chunk-SAH4BD2J.js";
42
+ import "./chunk-CPG6P4GG.js";
39
43
  import "./chunk-S6LOFUVP.js";
40
- import "./chunk-LZC3B5N2.js";
44
+ import "./chunk-2J3OJGTL.js";
45
+ import "./chunk-IA7TGCN2.js";
41
46
  import "./chunk-K623ENWT.js";
42
47
  import "./chunk-AQ37AY7B.js";
43
48
  import "./chunk-EQL65XGA.js";
44
- import "./chunk-IIJEYBNH.js";
45
- import "./chunk-22NBYCPD.js";
49
+ import "./chunk-3P2LV43B.js";
46
50
  import "./chunk-NAVJD2PQ.js";
47
- import "./chunk-3ULCB3NE.js";
48
- import "./chunk-BGG4MBYD.js";
51
+ import "./chunk-HV76SFIA.js";
52
+ import "./chunk-4PYCZH2V.js";
53
+ import "./chunk-P3QQPMQA.js";
54
+ import "./chunk-SR7RZ4MS.js";
55
+ import "./chunk-M6HMMKVG.js";
49
56
  import "./chunk-DGEIYUC3.js";
50
57
  import "./chunk-MPHPFVKK.js";
51
58
  import "./chunk-AXMWHKXA.js";
52
- import "./chunk-DJ2GSRLV.js";
53
- import "./chunk-33ACCIIY.js";
54
- import "./chunk-L4N6TIP7.js";
55
- import "./chunk-2J3OJGTL.js";
56
- import "./chunk-P3QQPMQA.js";
57
- import "./chunk-M6HMMKVG.js";
58
59
  import "./chunk-GLCZKT5V.js";
60
+ import "./chunk-DJ2GSRLV.js";
59
61
  import "./chunk-EI3HZX6C.js";
60
62
  import {
61
63
  FileOperationEvent,
@@ -64,21 +66,23 @@ import {
64
66
  getLanguageFromFilePath,
65
67
  getSpecificMimeType,
66
68
  logFileOperation
67
- } from "./chunk-2U3WZGZG.js";
69
+ } from "./chunk-3PY4LPJF.js";
68
70
  import "./chunk-WOJZWRAZ.js";
69
71
  import "./chunk-VGC4I5JJ.js";
70
72
  import {
71
73
  isAnyAutoMemPath,
72
74
  isTeamAutoMemPath
73
75
  } from "./chunk-FVKHVJZQ.js";
74
- import "./chunk-NG2R4N5O.js";
76
+ import "./chunk-COBO5EBO.js";
77
+ import "./chunk-6ZRFAKXK.js";
75
78
  import {
76
79
  BaseDeclarativeTool,
77
80
  StructuredToolError,
78
81
  ToolDisplayNames,
79
82
  ToolNames
80
- } from "./chunk-IC4Z6LX6.js";
81
- import "./chunk-6EOI4HOK.js";
83
+ } from "./chunk-PYQADEFD.js";
84
+ import "./chunk-M3STHEMM.js";
85
+ import "./chunk-F6WFNA7U.js";
82
86
  import "./chunk-46UV252V.js";
83
87
  import "./chunk-ZBVS26BY.js";
84
88
  import "./chunk-KKBPOU75.js";
@@ -1420,6 +1420,7 @@ var en_default = {
1420
1420
  "Press Esc again to clear.": "Press Esc again to clear.",
1421
1421
  "Ctrl+Q to queue \xB7 \u2191 to edit queued messages": "Ctrl+Q to queue \xB7 \u2191 to edit queued messages",
1422
1422
  "Enter to steer \xB7 Ctrl+Q to queue": "Enter to steer \xB7 Ctrl+Q to queue",
1423
+ "{{count}} queued": "{{count}} queued",
1423
1424
  "Queue message for the next turn": "Queue message for the next turn",
1424
1425
  // ============================================================================
1425
1426
  // MCP Status
@@ -1545,7 +1546,12 @@ var en_default = {
1545
1546
  "Background agent needs approval": "Background agent needs approval",
1546
1547
  "Approve or deny the request above": "Approve or deny the request above",
1547
1548
  Running: "Running",
1549
+ Pausing: "Pausing",
1548
1550
  Paused: "Paused",
1551
+ "Pause is cooperative; in-flight work may finish before the workflow is paused. An agent call waiting on a tool approval keeps the run in this state and still counts against the active-time limit until the approval is answered.": "Pause is cooperative; in-flight work may finish before the workflow is paused. An agent call waiting on a tool approval keeps the run in this state and still counts against the active-time limit until the approval is answered.",
1552
+ "Paused: no new agents will start; script code between agent calls keeps running. Press p to resume. /clear, /branch, and switching sessions cancel paused runs.": "Paused: no new agents will start; script code between agent calls keeps running. Press p to resume. /clear, /branch, and switching sessions cancel paused runs.",
1553
+ "Pause/resume was rejected; the workflow state changed. Try again.": "Pause/resume was rejected; the workflow state changed. Try again.",
1554
+ "Tip: use `/workflows p <runId>` or Background tasks + p to cooperatively pause/resume; use `/workflows <runId>` for details.": "Tip: use `/workflows p <runId>` or Background tasks + p to cooperatively pause/resume; use `/workflows <runId>` for details.",
1549
1555
  Completed: "Completed",
1550
1556
  Failed: "Failed",
1551
1557
  Stopped: "Stopped",
@@ -4,21 +4,21 @@ import {
4
4
  GitWorktreeService,
5
5
  writeWorktreeSession,
6
6
  writeWorktreeSessionMarker
7
- } from "./chunk-Y7E5LNLO.js";
7
+ } from "./chunk-GXSNGY5M.js";
8
8
  import "./chunk-GOFAQQZA.js";
9
9
  import "./chunk-5M6IDOMF.js";
10
10
  import "./chunk-TWPJO254.js";
11
11
  import "./chunk-H6XPXXMH.js";
12
- import "./chunk-CNIID3TV.js";
12
+ import "./chunk-2UUMVNYT.js";
13
13
  import "./chunk-MVUQRLOH.js";
14
14
  import "./chunk-XCWO3SMQ.js";
15
15
  import "./chunk-7MH4J33A.js";
16
16
  import "./chunk-6PVPNMXU.js";
17
- import "./chunk-RMH5OWLD.js";
17
+ import "./chunk-VXZ5HAOV.js";
18
18
  import "./chunk-IRH27ZC2.js";
19
19
  import "./chunk-QHWCP53L.js";
20
20
  import "./chunk-GNPNYXJB.js";
21
- import "./chunk-Y4NGLFGJ.js";
21
+ import "./chunk-HUWENAHO.js";
22
22
  import "./chunk-O6GEWCJA.js";
23
23
  import "./chunk-T26EAKDL.js";
24
24
  import "./chunk-ZPJWUGCS.js";
@@ -27,42 +27,46 @@ import "./chunk-J6SZID63.js";
27
27
  import "./chunk-KRXPRVGL.js";
28
28
  import "./chunk-GM463R2B.js";
29
29
  import "./chunk-SEZ556DZ.js";
30
- import "./chunk-CJXIIILK.js";
31
- import "./chunk-3K7FH2KQ.js";
32
- import "./chunk-BVWVWGLE.js";
30
+ import "./chunk-2FRY5CRX.js";
31
+ import "./chunk-67N6HB5H.js";
32
+ import "./chunk-WAUGQKUU.js";
33
+ import "./chunk-PLFATELK.js";
34
+ import "./chunk-L4N6TIP7.js";
35
+ import "./chunk-SAH4BD2J.js";
36
+ import "./chunk-CPG6P4GG.js";
33
37
  import "./chunk-S6LOFUVP.js";
34
- import "./chunk-LZC3B5N2.js";
38
+ import "./chunk-2J3OJGTL.js";
39
+ import "./chunk-IA7TGCN2.js";
35
40
  import "./chunk-K623ENWT.js";
36
41
  import "./chunk-AQ37AY7B.js";
37
42
  import "./chunk-EQL65XGA.js";
38
- import "./chunk-IIJEYBNH.js";
39
- import "./chunk-22NBYCPD.js";
43
+ import "./chunk-3P2LV43B.js";
40
44
  import "./chunk-NAVJD2PQ.js";
41
- import "./chunk-3ULCB3NE.js";
42
- import "./chunk-BGG4MBYD.js";
45
+ import "./chunk-HV76SFIA.js";
46
+ import "./chunk-4PYCZH2V.js";
47
+ import "./chunk-P3QQPMQA.js";
48
+ import "./chunk-SR7RZ4MS.js";
49
+ import "./chunk-M6HMMKVG.js";
43
50
  import "./chunk-DGEIYUC3.js";
44
51
  import "./chunk-MPHPFVKK.js";
45
52
  import "./chunk-AXMWHKXA.js";
46
- import "./chunk-DJ2GSRLV.js";
47
- import "./chunk-33ACCIIY.js";
48
- import "./chunk-L4N6TIP7.js";
49
- import "./chunk-2J3OJGTL.js";
50
- import "./chunk-P3QQPMQA.js";
51
- import "./chunk-M6HMMKVG.js";
52
53
  import "./chunk-GLCZKT5V.js";
54
+ import "./chunk-DJ2GSRLV.js";
53
55
  import "./chunk-EI3HZX6C.js";
54
- import "./chunk-2U3WZGZG.js";
56
+ import "./chunk-3PY4LPJF.js";
55
57
  import "./chunk-WOJZWRAZ.js";
56
58
  import "./chunk-VGC4I5JJ.js";
57
59
  import "./chunk-FVKHVJZQ.js";
58
- import "./chunk-NG2R4N5O.js";
60
+ import "./chunk-COBO5EBO.js";
61
+ import "./chunk-6ZRFAKXK.js";
59
62
  import {
60
63
  BaseDeclarativeTool,
61
64
  BaseToolInvocation,
62
65
  ToolDisplayNames,
63
66
  ToolNames
64
- } from "./chunk-IC4Z6LX6.js";
65
- import "./chunk-6EOI4HOK.js";
67
+ } from "./chunk-PYQADEFD.js";
68
+ import "./chunk-M3STHEMM.js";
69
+ import "./chunk-F6WFNA7U.js";
66
70
  import "./chunk-46UV252V.js";
67
71
  import "./chunk-ZBVS26BY.js";
68
72
  import "./chunk-KKBPOU75.js";