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

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 (360) hide show
  1. package/bundled/coordinate/SKILL.md +52 -0
  2. package/bundled/qc-helper/docs/configuration/model-providers.md +10 -8
  3. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  4. package/bundled/qc-helper/docs/features/arena.md +4 -3
  5. package/bundled/qc-helper/docs/features/commands.md +7 -6
  6. package/bundled/qc-helper/docs/features/dual-output.md +5 -0
  7. package/bundled/qc-helper/docs/features/headless.md +8 -0
  8. package/bundled/qc-helper/docs/features/multi-agent-coordination.md +30 -0
  9. package/bundled/qc-helper/docs/qwen-serve.md +7 -7
  10. package/bundled/review/SKILL.md +17 -7
  11. package/chunks/{MaxSizedBox-FVSXOMKP.js → MaxSizedBox-G7QPSZTF.js} +45 -44
  12. package/chunks/{StandaloneSessionPicker-Q27UAQ3X.js → StandaloneSessionPicker-3CTEPV7S.js} +65 -64
  13. package/chunks/{acp-startup-profiler-VNTFWYAC.js → acp-startup-profiler-JMJBZDVO.js} +2 -2
  14. package/chunks/{acpAgent-C6TV2BIU.js → acpAgent-43JURWOW.js} +1107 -285
  15. package/chunks/{agent-IPODFZTU.js → agent-MIY4LJJJ.js} +42 -41
  16. package/chunks/agent-headless-LWVA6GR5.js +87 -0
  17. package/chunks/{anthropicContentGenerator-D3Y4RFT4.js → anthropicContentGenerator-7HEP7Q5D.js} +8 -8
  18. package/chunks/{artifact-tool-N652YE4L.js → artifact-tool-M7UAJ5NT.js} +2 -2
  19. package/chunks/{askUserQuestion-ONW74PKJ.js → askUserQuestion-7G3LI3IZ.js} +2 -2
  20. package/chunks/{bridge-YX2R6VVM.js → bridge-PTTJEBNP.js} +47 -46
  21. package/chunks/{ca-ZLKAB4K3.js → ca-4CQ6MYNQ.js} +2 -1
  22. package/chunks/{channel-management-service-PHELKOW2.js → channel-management-service-PQ6SU56M.js} +6 -6
  23. package/chunks/channel-settings-store-IKK34GMH.js +102 -0
  24. package/chunks/{channel-worker-group-WQP4RCDO.js → channel-worker-group-WBRE33ZV.js} +8 -7
  25. package/chunks/{channel-worker-manager-MRDFAKIM.js → channel-worker-manager-V4LYVTPH.js} +8 -7
  26. package/chunks/{channel-worker-supervisor-IVSDIMI4.js → channel-worker-supervisor-YDAGW2RP.js} +6 -5
  27. package/chunks/{chunk-I7XTOGIS.js → chunk-23GFHEM3.js} +4 -4
  28. package/chunks/{chunk-IIJEYBNH.js → chunk-25OFRBH2.js} +188 -58
  29. package/chunks/{chunk-E2XBEWAK.js → chunk-2AAFGCWP.js} +650 -129
  30. package/chunks/{chunk-J6SZID63.js → chunk-2AZMF6G5.js} +2 -2
  31. package/chunks/{chunk-VVSMEI6C.js → chunk-2R2HYSUQ.js} +21 -102
  32. package/chunks/{chunk-DZUO626D.js → chunk-2XZWO53E.js} +3 -3
  33. package/chunks/{chunk-VKJ4KTPJ.js → chunk-3GCU5O2E.js} +1 -1
  34. package/chunks/{chunk-AJ6LQ5A6.js → chunk-3LHYTQ2R.js} +1 -1
  35. package/chunks/{chunk-LU7RJB2W.js → chunk-3SOTXJNO.js} +8 -8
  36. package/chunks/{chunk-SKSOLRPK.js → chunk-45HPDU3F.js} +3 -3
  37. package/chunks/{chunk-OWMAZHIX.js → chunk-47FQVRCO.js} +1 -1
  38. package/chunks/{chunk-K4QON4BH.js → chunk-4C4QSXE3.js} +23 -23
  39. package/chunks/{chunk-UMEB4DHF.js → chunk-4EX3DBFH.js} +4 -4
  40. package/chunks/{chunk-MFDYOYZZ.js → chunk-4MHDNGAV.js} +25 -2
  41. package/chunks/{chunk-SVY7G3WS.js → chunk-4PFKN7CQ.js} +7 -7
  42. package/chunks/{chunk-HV76SFIA.js → chunk-5HBFERG5.js} +3 -3
  43. package/chunks/{chunk-WAUGQKUU.js → chunk-6LYDH7VT.js} +9 -5
  44. package/chunks/{chunk-S6HYI3MF.js → chunk-6S52N6PG.js} +2 -2
  45. package/chunks/{chunk-FVKHVJZQ.js → chunk-732MOPEM.js} +1 -1
  46. package/chunks/{chunk-UHJ5S7DF.js → chunk-7QE3QFU3.js} +8 -8
  47. package/chunks/{chunk-WCG5O7IP.js → chunk-7SUQZ7QH.js} +2 -2
  48. package/chunks/{chunk-CQGGDOR5.js → chunk-AAOONL5N.js} +1 -1
  49. package/chunks/{chunk-B7SQOICP.js → chunk-AKLY5M2C.js} +4 -4
  50. package/chunks/{chunk-UVX4Y6IN.js → chunk-AQHNAA7E.js} +1 -1
  51. package/chunks/{chunk-DVQECPGW.js → chunk-BIXG46YI.js} +12 -12
  52. package/chunks/{chunk-4TRQPFDP.js → chunk-BJKREW56.js} +6 -8
  53. package/chunks/{chunk-7S4DYMFG.js → chunk-BNRNVMOT.js} +27 -18
  54. package/chunks/{chunk-PIA35YOG.js → chunk-BR6TUEKJ.js} +9 -8
  55. package/chunks/{chunk-Q3JQ7OSU.js → chunk-BTYS2JAY.js} +1 -1
  56. package/chunks/{chunk-H6XPXXMH.js → chunk-CQ35AJ4Z.js} +252 -254
  57. package/chunks/{chunk-COBO5EBO.js → chunk-CTQE2NB2.js} +1 -1
  58. package/chunks/{chunk-MTE6R5HF.js → chunk-DEKY5Y7V.js} +3 -3
  59. package/chunks/{chunk-BCZ2TTSH.js → chunk-DM4C3OX5.js} +1 -1
  60. package/chunks/{chunk-HDHLWOG5.js → chunk-DSKLWQHC.js} +2 -2
  61. package/chunks/{chunk-KKBPOU75.js → chunk-EFIMD5VA.js} +1 -1
  62. package/chunks/{chunk-CTJLZLB5.js → chunk-EN2J77G7.js} +1 -1
  63. package/chunks/{chunk-67EWJE77.js → chunk-ENEEQMGM.js} +1 -1
  64. package/chunks/{chunk-RKCPPZV6.js → chunk-EOBM4T2Z.js} +1 -1
  65. package/chunks/{chunk-7C7RTJPC.js → chunk-ESVSQKPY.js} +4 -4
  66. package/chunks/{chunk-CPG6P4GG.js → chunk-EYS3GGM3.js} +1 -1
  67. package/chunks/{chunk-4PYCZH2V.js → chunk-EYW54TBD.js} +3 -3
  68. package/chunks/{chunk-UXV3DYVT.js → chunk-F4T5J34H.js} +1 -1
  69. package/chunks/{chunk-FOGU3LJX.js → chunk-F6AOBFUN.js} +1 -1
  70. package/chunks/{chunk-ZBVS26BY.js → chunk-FPGTNKCP.js} +7 -5
  71. package/chunks/{chunk-BO2VRKY2.js → chunk-G64M7R2Y.js} +5 -5
  72. package/chunks/{chunk-EI3HZX6C.js → chunk-GJJQV4PY.js} +1 -1
  73. package/chunks/{chunk-CKASRHZI.js → chunk-GLWWPFTW.js} +1 -1
  74. package/chunks/{chunk-GM463R2B.js → chunk-GZGDJ4E6.js} +1 -1
  75. package/chunks/{chunk-W5UC37EE.js → chunk-HHGQGTJQ.js} +2 -0
  76. package/chunks/chunk-HHJLM3WQ.js +41 -0
  77. package/chunks/{chunk-2Z6PYTOK.js → chunk-HMCSRTDY.js} +1 -1
  78. package/chunks/{chunk-L2AFWWJE.js → chunk-HUE2M6VI.js} +50 -5
  79. package/chunks/{chunk-F32C6V5B.js → chunk-HZV75ET2.js} +3 -3
  80. package/chunks/{chunk-6ZRFAKXK.js → chunk-IEP44U2R.js} +1 -1
  81. package/chunks/{chunk-AOHJKPKL.js → chunk-IQFYO5BF.js} +1 -1
  82. package/chunks/{chunk-UDXSXLER.js → chunk-IW6RQPQB.js} +14 -4
  83. package/chunks/{chunk-XCWO3SMQ.js → chunk-IX7CFQGA.js} +3 -3
  84. package/chunks/{chunk-UO2N5QWP.js → chunk-J4EVBAB3.js} +27 -4
  85. package/chunks/{chunk-ZZCWJWTF.js → chunk-JHMFKJEP.js} +1 -1
  86. package/chunks/{chunk-Y3NNBNGM.js → chunk-JKEO6OQY.js} +4 -4
  87. package/chunks/{chunk-6Q5ABMTU.js → chunk-JLYYGKRN.js} +23 -19
  88. package/chunks/{chunk-HOUK5CR2.js → chunk-JOXXPM3X.js} +6 -6
  89. package/chunks/{chunk-E2FPSSKP.js → chunk-JPA7IDTE.js} +57 -13
  90. package/chunks/{chunk-OQTXYMKW.js → chunk-JS4Q5NG5.js} +3 -3
  91. package/chunks/{chunk-PBRVUF5B.js → chunk-K7JW6V5O.js} +1 -1
  92. package/chunks/{chunk-3P2LV43B.js → chunk-KCCODSAA.js} +3 -3
  93. package/chunks/{chunk-DREZZAZM.js → chunk-KCDQGIHS.js} +13 -5
  94. package/chunks/{chunk-KHLBIO6M.js → chunk-KFCTC5IJ.js} +11 -11
  95. package/chunks/{chunk-M6HMMKVG.js → chunk-KPVVWKF3.js} +1 -1
  96. package/chunks/{chunk-MVUQRLOH.js → chunk-KT4OWAAZ.js} +3 -3
  97. package/chunks/{chunk-W4RQUHY3.js → chunk-L2GTEEEU.js} +142 -23
  98. package/chunks/{chunk-X7XXP7CN.js → chunk-LA3FF7RO.js} +2 -2
  99. package/chunks/{chunk-DX3RGJMS.js → chunk-LT532KF4.js} +71 -12
  100. package/chunks/{chunk-JT7XS4YW.js → chunk-M2NMFAFR.js} +1 -1
  101. package/chunks/{chunk-YTFDX4PR.js → chunk-M6NDLY2T.js} +1 -1
  102. package/chunks/{chunk-VBU76UYP.js → chunk-MCHGE3EC.js} +302 -290
  103. package/chunks/{chunk-3WOZVMGJ.js → chunk-MDQSCFAZ.js} +7 -7
  104. package/chunks/{chunk-EKPKKXY2.js → chunk-MLZCPGDX.js} +1 -1
  105. package/chunks/{chunk-OIVKILPI.js → chunk-MPBRV3UU.js} +3 -0
  106. package/chunks/{chunk-VFMASYQA.js → chunk-MS7GNABG.js} +3 -0
  107. package/chunks/{chunk-2FRY5CRX.js → chunk-MWZYNOCG.js} +3 -3
  108. package/chunks/{chunk-ONSZH6VM.js → chunk-MZQ4I4AP.js} +2 -2
  109. package/chunks/{chunk-TG3IUQ6M.js → chunk-N3ZWGKXN.js} +4 -4
  110. package/chunks/{chunk-7MH4J33A.js → chunk-N7NBMAMW.js} +2 -2
  111. package/chunks/{chunk-EUNWC2VS.js → chunk-NC4O6UE6.js} +2 -2
  112. package/chunks/{chunk-4P66JPNV.js → chunk-NFSSQDB5.js} +5 -5
  113. package/chunks/{chunk-FTO3P6PZ.js → chunk-NM3E6GGL.js} +3 -3
  114. package/chunks/{chunk-FYTHSJDQ.js → chunk-NQPYPDOY.js} +2 -2
  115. package/chunks/{chunk-HUWENAHO.js → chunk-NWPO6I7V.js} +1 -1
  116. package/chunks/{chunk-SR7RZ4MS.js → chunk-O4BBDP2G.js} +2 -2
  117. package/chunks/{chunk-X76PVMPQ.js → chunk-OC5SKSNX.js} +3 -3
  118. package/chunks/{chunk-6S4NCX23.js → chunk-OGQERNHD.js} +3 -3
  119. package/chunks/{chunk-DA4HRSBW.js → chunk-OPBATTFQ.js} +1 -1
  120. package/chunks/{chunk-5BRSWOSC.js → chunk-P7KCJGBR.js} +4 -4
  121. package/chunks/{chunk-TZ3FN4B2.js → chunk-PBYVS6QT.js} +3 -3
  122. package/chunks/{chunk-VNNWAZSI.js → chunk-QG2IEE2E.js} +3 -3
  123. package/chunks/{chunk-XGLVQQ6F.js → chunk-QGZN4RYB.js} +4 -4
  124. package/chunks/{chunk-2UUMVNYT.js → chunk-QTI7SRXI.js} +3 -3
  125. package/chunks/{chunk-B2GJNDTV.js → chunk-QUESTNOP.js} +1 -1
  126. package/chunks/{chunk-6WIKTX4C.js → chunk-RUKNJEJO.js} +1 -1
  127. package/chunks/{chunk-6CONQTS2.js → chunk-RUVZZKDH.js} +1 -1
  128. package/chunks/{chunk-QUI267ZP.js → chunk-SAQHDAUJ.js} +42 -8
  129. package/chunks/{chunk-DCGYLIYO.js → chunk-SUTP6CZA.js} +5 -5
  130. package/chunks/{chunk-HGBUHVFO.js → chunk-T4576UW4.js} +3 -3
  131. package/chunks/{chunk-TZEZYNYD.js → chunk-T4FTABSW.js} +1 -1
  132. package/chunks/{chunk-SEZ556DZ.js → chunk-T6W4KACQ.js} +1 -1
  133. package/chunks/{chunk-EV3LZGGK.js → chunk-TKAEODJR.js} +572 -42
  134. package/chunks/{chunk-NV3F44FL.js → chunk-TNQLAI6I.js} +2 -2
  135. package/chunks/{chunk-A6PSUNCY.js → chunk-TNS2M7VL.js} +5 -5
  136. package/chunks/{chunk-ZUIOLZ4V.js → chunk-TTB6GBJ6.js} +8323 -2227
  137. package/chunks/{chunk-YGT2AUJ7.js → chunk-U2JLICUY.js} +33 -16
  138. package/chunks/{chunk-PDUIXSYP.js → chunk-U7QUDFPD.js} +7 -7
  139. package/chunks/{chunk-PWYEWOZM.js → chunk-UEUE6LJX.js} +1 -1
  140. package/chunks/{chunk-O3VWAZLP.js → chunk-UIZGNLBP.js} +770 -932
  141. package/chunks/{chunk-V3KCCRKA.js → chunk-UM57UTTV.js} +3 -3
  142. package/chunks/{chunk-EQL65XGA.js → chunk-V3LXMASR.js} +47 -21
  143. package/chunks/{chunk-LHEC5V6G.js → chunk-VRWOMUZM.js} +2 -2
  144. package/chunks/{chunk-5C7FDVHB.js → chunk-W2ITCESM.js} +176 -477
  145. package/chunks/{chunk-7OFX3YZW.js → chunk-W2PNY24B.js} +1 -1
  146. package/chunks/{chunk-T3FNRMFJ.js → chunk-X5GLCWPX.js} +1 -1
  147. package/chunks/{chunk-BSI645OU.js → chunk-XBLYC4MI.js} +3 -3
  148. package/chunks/{chunk-GNPNYXJB.js → chunk-XLQS3VI6.js} +2 -2
  149. package/chunks/{chunk-TCRQD7F6.js → chunk-XT6TGJFD.js} +1 -1
  150. package/chunks/{chunk-PYQADEFD.js → chunk-XTH2OMDS.js} +1 -1
  151. package/chunks/{chunk-PFWPBYL2.js → chunk-XUMBOJC2.js} +3 -3
  152. package/chunks/{chunk-P6RBCBBE.js → chunk-YIKMBYMT.js} +3 -3
  153. package/chunks/{chunk-WOJZWRAZ.js → chunk-YRLW2MSX.js} +1 -1
  154. package/chunks/{chunk-7WUUNAJP.js → chunk-YVVIFFU4.js} +3 -3
  155. package/chunks/chunk-Z7B6SRPM.js +32 -0
  156. package/chunks/{chunk-IA7TGCN2.js → chunk-ZV4XVYL3.js} +4 -4
  157. package/chunks/{chunk-PJRW65JO.js → chunk-ZWPWQEF5.js} +1 -1
  158. package/chunks/{computer-use-5LGM2YO5.js → computer-use-7TIKEXBX.js} +42 -41
  159. package/chunks/{config-utils-ULCSRMWD.js → config-utils-6MVJ54TY.js} +6 -6
  160. package/chunks/{contextCommand-JT44ADUD.js → contextCommand-5QKI7MRY.js} +44 -43
  161. package/chunks/{core-runtime-XHEJM2VB.js → core-runtime-USS7ZF3H.js} +42 -41
  162. package/chunks/{create-sub-session-QIDZUOPU.js → create-sub-session-Y4WYDZGC.js} +2 -2
  163. package/chunks/{create-sub-session-UQBDJF5G.js → create-sub-session-ZD2F3BH2.js} +42 -41
  164. package/chunks/{cron-create-VONA5JYY.js → cron-create-ZOVA3CC2.js} +4 -4
  165. package/chunks/{cron-delete-5JXSP2MI.js → cron-delete-7Z3H4LJY.js} +4 -4
  166. package/chunks/{cron-list-KE4F2CIR.js → cron-list-UHGX3IQG.js} +4 -4
  167. package/chunks/{daemon-GWD7BT6E.js → daemon-Y3NOHFKQ.js} +38 -7
  168. package/chunks/daemon-status-provider-PMP4J7BC.js +103 -0
  169. package/chunks/daemon-trust-policy-2252VKXI.js +99 -0
  170. package/chunks/{daemon-trust-policy-monitor-LUMB46CL.js → daemon-trust-policy-monitor-OSGGKJXT.js} +49 -48
  171. package/chunks/{de-LIW4XVLN.js → de-UBEBKG6V.js} +2 -1
  172. package/chunks/{deferred-core-runtime-BFB6YRTZ.js → deferred-core-runtime-3VD4V6YZ.js} +42 -41
  173. package/chunks/{display-image-NQRSIBXM.js → display-image-ZE3GZNIK.js} +4 -4
  174. package/chunks/{dist-Z3CS4OVP.js → dist-AVUYBK7L.js} +11 -5
  175. package/chunks/{dist-6BMOAE3Z.js → dist-BNWP6IZL.js} +4 -4
  176. package/chunks/{dist-3NTTUAHT.js → dist-EFJILGIS.js} +3 -3
  177. package/chunks/{dist-EZE3V3Q7.js → dist-MAIUUIWN.js} +3 -3
  178. package/chunks/{dist-B2CGTW6T.js → dist-NPS52B2V.js} +3 -3
  179. package/chunks/{dist-J47AXBZC.js → dist-PKSRQAR2.js} +3 -3
  180. package/chunks/{dist-OTUO3AS2.js → dist-Q2WJ2IZU.js} +13 -5
  181. package/chunks/{dist-EWW3J4HQ.js → dist-ZWDH5HLS.js} +3 -3
  182. package/chunks/{earlyInputCapture-GPULMO2H.js → earlyInputCapture-ER4HGLJN.js} +43 -42
  183. package/chunks/{edit-XYMQNMWU.js → edit-B3MT7O53.js} +42 -41
  184. package/chunks/{en-SY5GTIGX.js → en-X6YV7GME.js} +2 -1
  185. package/chunks/{enter-worktree-TIASENJP.js → enter-worktree-WVIYVSDJ.js} +42 -41
  186. package/chunks/{enterPlanMode-K6LTIGWM.js → enterPlanMode-DDCIM6HA.js} +42 -41
  187. package/chunks/{environment-3XX7LUMG.js → environment-LITGMOUP.js} +45 -44
  188. package/chunks/{errors-VTFZ6M4W.js → errors-E5CIOR2I.js} +44 -43
  189. package/chunks/{exit-worktree-IBKPEHUJ.js → exit-worktree-NQ2A6URE.js} +42 -41
  190. package/chunks/exitPlanMode-YXSWN4D3.js +85 -0
  191. package/chunks/{fast-path-QOBSDLA6.js → fast-path-PH3DBS6X.js} +3 -3
  192. package/chunks/{fast-path-settings-RPAVBD7P.js → fast-path-settings-LNOFM2YP.js} +2 -2
  193. package/chunks/{fr-RQFO7U4P.js → fr-VENTC2BS.js} +2 -1
  194. package/chunks/{gemini-OCRXJUWF.js → gemini-4YPO4ADY.js} +88 -87
  195. package/chunks/{geminiContentGenerator-VHSPCS6F.js → geminiContentGenerator-GMSVVXOU.js} +6 -6
  196. package/chunks/{glob-BVX4L3CM.js → glob-3Y3VHLM2.js} +42 -41
  197. package/chunks/{goal-tools-SWNB6GP4.js → goal-tools-JDK2SNMV.js} +4 -4
  198. package/chunks/{grep-CJSUX5NJ.js → grep-VUHUDZYG.js} +42 -41
  199. package/chunks/handleAutoUpdate-OBFFPWSJ.js +94 -0
  200. package/chunks/{i18n-BPEDXABF.js → i18n-4PJA5KKU.js} +43 -42
  201. package/chunks/{image-gen-DEEXNNA2.js → image-gen-4IFV4HES.js} +10 -10
  202. package/chunks/initializer-ZTY3VSWL.js +100 -0
  203. package/chunks/{installationInfo-JCUKPGDB.js → installationInfo-6USRNCD2.js} +43 -42
  204. package/chunks/{ja-KOZKHJHZ.js → ja-QHT4EQTO.js} +2 -1
  205. package/chunks/{keychain-token-storage-TVAMTNP7.js → keychain-token-storage-JTWUYFU7.js} +2 -2
  206. package/chunks/list-U2ZDKYWN.js +103 -0
  207. package/chunks/{list-agents-Z4WABFDZ.js → list-agents-4GQ2XNEU.js} +2 -2
  208. package/chunks/loadedSettingsAdapter-WW4HIVLO.js +97 -0
  209. package/chunks/{loggingContentGenerator-MOOIBKKR.js → loggingContentGenerator-XXG6YWUE.js} +46 -27
  210. package/chunks/{loop-wakeup-UZ5RL5Y2.js → loop-wakeup-HOQI3K5D.js} +5 -5
  211. package/chunks/{ls-TVHDGIES.js → ls-O4VBQRG7.js} +4 -4
  212. package/chunks/{lsp-CVN6OQPI.js → lsp-APQJ5ZEZ.js} +2 -2
  213. package/chunks/{managed-npm-update-7K2LDL7V.js → managed-npm-update-7GM2LPLL.js} +43 -42
  214. package/chunks/mcp-7KZW2T5P.js +97 -0
  215. package/chunks/{monitor-EXI73A5P.js → monitor-RQROQHLD.js} +42 -41
  216. package/chunks/nonInteractiveCli-U7JNJGS6.js +163 -0
  217. package/chunks/{notebook-edit-GKKQJQQU.js → notebook-edit-XQA6YCH2.js} +42 -41
  218. package/chunks/{openaiContentGenerator-NSPCP4FY.js → openaiContentGenerator-BZW2IB42.js} +29 -29
  219. package/chunks/{pidfile-IU4ETBRE.js → pidfile-NX5VZ3IK.js} +43 -42
  220. package/chunks/{processUtils-GZOVMFK4.js → processUtils-M635AD23.js} +2 -2
  221. package/chunks/{pt-U6AOCTMF.js → pt-VL3I5RNY.js} +2 -1
  222. package/chunks/{qwenContentGenerator-BBTNTOMB.js → qwenContentGenerator-KHJ73E2C.js} +48 -48
  223. package/chunks/{qwenOAuth2-D6L2W25Z.js → qwenOAuth2-QMK25XO7.js} +9 -9
  224. package/chunks/read-file-6LKIKKXD.js +32 -0
  225. package/chunks/{read-mcp-resource-PZ4ZF6YL.js → read-mcp-resource-TJSJRH4F.js} +2 -2
  226. package/chunks/{record-artifact-P4HFMS7X.js → record-artifact-FXF5LHPE.js} +3 -3
  227. package/chunks/{resumeHistoryUtils-VUY4B6BO.js → resumeHistoryUtils-RR2KEVH5.js} +49 -48
  228. package/chunks/ripGrep-CF2WRBYV.js +85 -0
  229. package/chunks/{ru-CMX4UMYP.js → ru-4RCKL4PY.js} +2 -1
  230. package/chunks/{run-qwen-serve-7BDTKCFP.js → run-qwen-serve-L5TF57J4.js} +57 -50
  231. package/chunks/{runtime-VMWGIAX7.js → runtime-3RE3BPR4.js} +55 -54
  232. package/chunks/{scheduler-MUKPARY5.js → scheduler-LXQZAMYT.js} +44 -43
  233. package/chunks/{sdk-exporters-http-XVTZQRCE.js → sdk-exporters-http-7SYSCGEO.js} +3 -3
  234. package/chunks/{sdk-impl-7W7AKCS4.js → sdk-impl-VZI6M6EH.js} +6 -6
  235. package/chunks/{send-message-CAMSLG2L.js → send-message-RBYLV5NY.js} +6 -6
  236. package/chunks/{serve-7G5R52HX.js → serve-5D4S7GIA.js} +49 -48
  237. package/chunks/{server-FTSWAHXF.js → server-ILZB6TTC.js} +391 -172
  238. package/chunks/{session-FLUDUMZJ.js → session-SXCZITZ4.js} +114 -94
  239. package/chunks/{settings-CJVTBEW7.js → settings-4RQB3OVF.js} +48 -47
  240. package/chunks/{shell-2DOQIYEE.js → shell-FCTR3OI2.js} +42 -41
  241. package/chunks/{skill-2GOEKN34.js → skill-IAKHPD5H.js} +19 -19
  242. package/chunks/{skill-settings-5FEOMZQS.js → skill-settings-SOR23NOP.js} +48 -47
  243. package/chunks/{spawnChannel-VJRIO75F.js → spawnChannel-I6VAWYQJ.js} +45 -43
  244. package/chunks/{standalone-update-OC5IKJGY.js → standalone-update-5NN3MTYH.js} +44 -43
  245. package/chunks/{startInteractiveUI-HFHFI2ZR.js → startInteractiveUI-OYGL3NZJ.js} +589 -329
  246. package/chunks/{syntheticOutput-PEBJQYJV.js → syntheticOutput-D3Z64LJC.js} +3 -3
  247. package/chunks/{task-create-5NWCQSJF.js → task-create-URFZ5EUX.js} +10 -10
  248. package/chunks/{task-list-53265TRZ.js → task-list-6JDFMPUW.js} +5 -5
  249. package/chunks/{task-stop-FPCOIRYX.js → task-stop-HHUGCD25.js} +2 -2
  250. package/chunks/{task-update-5HN577LS.js → task-update-LCJM3EYG.js} +10 -10
  251. package/chunks/{team-create-ZWAXZR75.js → team-create-J4JP6AXN.js} +44 -43
  252. package/chunks/{team-delete-MMQB4OSC.js → team-delete-PZGGBQLM.js} +5 -5
  253. package/chunks/{team-plan-approval-LH23GCUV.js → team-plan-approval-7BEAIR2H.js} +42 -41
  254. package/chunks/{terminal-image-renderer-7L3GCHD5.js → terminal-image-renderer-SGGTG5LN.js} +44 -43
  255. package/chunks/theme-manager-67TSB7LH.js +89 -0
  256. package/chunks/{todoWrite-JGV6VLOX.js → todoWrite-WINAZSZI.js} +4 -4
  257. package/chunks/{tool-search-BZOZHGKI.js → tool-search-XPOFDWOX.js} +19 -19
  258. package/chunks/{total-session-admission-KP4CJTSB.js → total-session-admission-SZJFAM25.js} +47 -46
  259. package/chunks/{trustedFolders-57QEHV67.js → trustedFolders-44NTYYV4.js} +43 -42
  260. package/chunks/{update-relaunch-53MODFE4.js → update-relaunch-K33Q3WEH.js} +5 -5
  261. package/chunks/{updateCheck-4QDI7CUZ.js → updateCheck-VBRNPLS4.js} +45 -44
  262. package/chunks/{useAutoAcceptIndicator-VVQUPTM5.js → useAutoAcceptIndicator-AUNRB5S7.js} +52 -51
  263. package/chunks/{validateNonInterActiveAuth-KKVD5E43.js → validateNonInterActiveAuth-WTO36MTA.js} +83 -82
  264. package/chunks/{version-IB5ASN63.js → version-JZA6HYPI.js} +1 -1
  265. package/chunks/{web-fetch-APSFQMIH.js → web-fetch-LLHPV2IR.js} +19 -19
  266. package/chunks/{web-search-EWEHMFIW.js → web-search-4HCHRZ3U.js} +11 -11
  267. package/chunks/{workflow-LA4ACRO4.js → workflow-YI74QTWW.js} +43 -42
  268. package/chunks/workspace-providers-status-CI3AO2BH.js +100 -0
  269. package/chunks/{workspace-registration-store-WSLHN7HA.js → workspace-registration-store-KPIKXDHA.js} +1 -1
  270. package/chunks/{workspace-registry-5HXRV7L4.js → workspace-registry-XE22QDE6.js} +47 -46
  271. package/chunks/{workspace-service-SSP4PLBC.js → workspace-service-WI2FD72A.js} +54 -53
  272. package/chunks/workspace-skills-status-FFZU6FXL.js +100 -0
  273. package/chunks/{workspace-trust-reconciler-PASUNEKQ.js → workspace-trust-reconciler-GJLNXR2U.js} +54 -53
  274. package/chunks/write-file-IEAC3XC3.js +87 -0
  275. package/chunks/{zh-AGL2FVBI.js → zh-LMSTK4WD.js} +2 -1
  276. package/chunks/{zh-TW-KI66MHQY.js → zh-TW-SQ4HTSCW.js} +2 -1
  277. package/chunks/{zoom-image-NAVVM4R2.js → zoom-image-GTVVT25J.js} +15 -15
  278. package/cli.js +13 -13
  279. package/locales/ca.js +1 -0
  280. package/locales/de.js +1 -0
  281. package/locales/en.js +1 -0
  282. package/locales/fr.js +1 -0
  283. package/locales/ja.js +1 -0
  284. package/locales/pt.js +1 -0
  285. package/locales/ru.js +1 -0
  286. package/locales/zh-TW.js +1 -0
  287. package/locales/zh.js +1 -0
  288. package/package.json +3 -3
  289. package/web-shell/assets/{arc-BGiARkbG.js → arc-B13-S0Yo.js} +1 -1
  290. package/web-shell/assets/{architectureDiagram-3BPJPVTR-3QBZDeqg.js → architectureDiagram-3BPJPVTR-CHvWNlVW.js} +1 -1
  291. package/web-shell/assets/{blockDiagram-GPEHLZMM-CbJI0j0o.js → blockDiagram-GPEHLZMM-CXebOlXF.js} +1 -1
  292. package/web-shell/assets/{c4Diagram-AAUBKEIU-pita1IYy.js → c4Diagram-AAUBKEIU-BQpx4y3Q.js} +1 -1
  293. package/web-shell/assets/channel-BB_Hm8Rf.js +1 -0
  294. package/web-shell/assets/{chunk-2J33WTMH-WzTFww1i.js → chunk-2J33WTMH-Cak1exSv.js} +1 -1
  295. package/web-shell/assets/{chunk-4BX2VUAB-8TIRo9bL.js → chunk-4BX2VUAB-BIc8BV5_.js} +1 -1
  296. package/web-shell/assets/{chunk-55IACEB6-CuCr34qf.js → chunk-55IACEB6-DoeJ5BL1.js} +1 -1
  297. package/web-shell/assets/{chunk-727SXJPM-Bb_xWEAx.js → chunk-727SXJPM-BDR_wYSu.js} +1 -1
  298. package/web-shell/assets/{chunk-AQP2D5EJ-C8T1b2Qw.js → chunk-AQP2D5EJ-BhRRGRq1.js} +1 -1
  299. package/web-shell/assets/{chunk-FMBD7UC4-kjpyMkNM.js → chunk-FMBD7UC4-BJGAwVXr.js} +1 -1
  300. package/web-shell/assets/{chunk-ND2GUHAM-Dm35jDmi.js → chunk-ND2GUHAM-vhE73bsD.js} +1 -1
  301. package/web-shell/assets/{chunk-QZHKN3VN-BPVKwuby.js → chunk-QZHKN3VN-BuTBZsdR.js} +1 -1
  302. package/web-shell/assets/classDiagram-4FO5ZUOK-B_hFK54Y.js +1 -0
  303. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B_hFK54Y.js +1 -0
  304. package/web-shell/assets/{cose-bilkent-S5V4N54A-M-7J9Xyz.js → cose-bilkent-S5V4N54A-CVHKipHP.js} +1 -1
  305. package/web-shell/assets/{dagre-BM42HDAG-u6rmS689.js → dagre-BM42HDAG-C1DPa8SV.js} +1 -1
  306. package/web-shell/assets/{diagram-2AECGRRQ-nAisfOUB.js → diagram-2AECGRRQ-BYP_QxkT.js} +1 -1
  307. package/web-shell/assets/{diagram-5GNKFQAL-CpobRd3l.js → diagram-5GNKFQAL-Cray7ruQ.js} +1 -1
  308. package/web-shell/assets/{diagram-KO2AKTUF-B82W_wPq.js → diagram-KO2AKTUF-Ds4vJANi.js} +1 -1
  309. package/web-shell/assets/{diagram-LMA3HP47-ClTkmPW6.js → diagram-LMA3HP47-DxFrDykH.js} +1 -1
  310. package/web-shell/assets/{diagram-OG6HWLK6-42fbxGPW.js → diagram-OG6HWLK6-BdIO-pF_.js} +1 -1
  311. package/web-shell/assets/{erDiagram-TEJ5UH35-8_zQfzlQ.js → erDiagram-TEJ5UH35-5JA8KDYV.js} +1 -1
  312. package/web-shell/assets/{flowDiagram-I6XJVG4X-DQDoN_oV.js → flowDiagram-I6XJVG4X-DL4drKro.js} +1 -1
  313. package/web-shell/assets/{ganttDiagram-6RSMTGT7-Cqd646fB.js → ganttDiagram-6RSMTGT7-ijX2DD6_.js} +1 -1
  314. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-B6qWs_tS.js → gitGraphDiagram-PVQCEYII-_lPsFLFF.js} +1 -1
  315. package/web-shell/assets/index-BTwNYZkp.js +1785 -0
  316. package/web-shell/assets/{index-BCeQB_tk.js → index-C-YoqYbs.js} +1 -1
  317. package/web-shell/assets/{index-eYjX7fQg.css → index-dHAFxPHb.css} +1 -1
  318. package/web-shell/assets/{infoDiagram-5YYISTIA-BVyDAHuu.js → infoDiagram-5YYISTIA-COFClLab.js} +1 -1
  319. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BBHM904I.js → ishikawaDiagram-YF4QCWOH-Div9KOgO.js} +1 -1
  320. package/web-shell/assets/{journeyDiagram-JHISSGLW-B5Bv5Z_0.js → journeyDiagram-JHISSGLW-VAw5u0wc.js} +1 -1
  321. package/web-shell/assets/{kanban-definition-UN3LZRKU-BwSTb0YF.js → kanban-definition-UN3LZRKU-CncCn8Nl.js} +1 -1
  322. package/web-shell/assets/{linear-CHtTm36c.js → linear-D6ad7e_k.js} +1 -1
  323. package/web-shell/assets/{mermaid.core-vBCuAUkf.js → mermaid.core-BV1IECGb.js} +5 -5
  324. package/web-shell/assets/{mindmap-definition-RKZ34NQL-CNfKHJrA.js → mindmap-definition-RKZ34NQL-a3jeNgPr.js} +1 -1
  325. package/web-shell/assets/{pieDiagram-4H26LBE5-DT6QMLhc.js → pieDiagram-4H26LBE5-DsVRY5BW.js} +1 -1
  326. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Rb2Dar4i.js → quadrantDiagram-W4KKPZXB-D6zgexJK.js} +1 -1
  327. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CA9YzPUY.js → requirementDiagram-4Y6WPE33-VEpSwJjn.js} +1 -1
  328. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CJ5SkhJw.js → sankeyDiagram-5OEKKPKP-CYEuOFne.js} +1 -1
  329. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-T31AiuVM.js → sequenceDiagram-3UESZ5HK-CCg0lI-9.js} +1 -1
  330. package/web-shell/assets/{stateDiagram-AJRCARHV-f7Xpd_Xh.js → stateDiagram-AJRCARHV-BHXPsL0B.js} +1 -1
  331. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-eTG8D0QT.js +1 -0
  332. package/web-shell/assets/{timeline-definition-PNZ67QCA-dCwsTscr.js → timeline-definition-PNZ67QCA-gqTf9a0k.js} +1 -1
  333. package/web-shell/assets/{vennDiagram-CIIHVFJN-SQtBFYkQ.js → vennDiagram-CIIHVFJN-C4DXXkBh.js} +1 -1
  334. package/web-shell/assets/{wardley-L42UT6IY-Dfh4eW0B.js → wardley-L42UT6IY-CMK46EiX.js} +1 -1
  335. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BWBKXBsC.js → wardleyDiagram-YWT4CUSO-DTk1Gzt9.js} +1 -1
  336. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DVqzcaxh.js → xychartDiagram-2RQKCTM6-BcJsM1dH.js} +1 -1
  337. package/web-shell/index.html +2 -2
  338. package/chunks/agent-headless-JOL3STCJ.js +0 -86
  339. package/chunks/channel-settings-store-CDUEUDYS.js +0 -101
  340. package/chunks/chunk-PDPFQ2FO.js +0 -156
  341. package/chunks/daemon-status-provider-67M3LFIJ.js +0 -102
  342. package/chunks/daemon-trust-policy-3XCIBLLT.js +0 -98
  343. package/chunks/exitPlanMode-2U23CG2U.js +0 -84
  344. package/chunks/handleAutoUpdate-2F3RWBIT.js +0 -93
  345. package/chunks/initializer-QRD7X25L.js +0 -99
  346. package/chunks/list-G6SHYRHQ.js +0 -102
  347. package/chunks/loadedSettingsAdapter-S4EPYP35.js +0 -96
  348. package/chunks/mcp-R2Z6IKPN.js +0 -96
  349. package/chunks/nonInteractiveCli-E6CEE6IG.js +0 -162
  350. package/chunks/read-file-S2BROE4F.js +0 -32
  351. package/chunks/ripGrep-V4EX6SLA.js +0 -84
  352. package/chunks/theme-manager-7WO6DXIT.js +0 -88
  353. package/chunks/workspace-providers-status-5C3HGWHF.js +0 -99
  354. package/chunks/workspace-skills-status-DX7CA34S.js +0 -99
  355. package/chunks/write-file-3N2WAE3F.js +0 -86
  356. package/web-shell/assets/channel-3vYOf77E.js +0 -1
  357. package/web-shell/assets/classDiagram-4FO5ZUOK-Dr2aqxvr.js +0 -1
  358. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Dr2aqxvr.js +0 -1
  359. package/web-shell/assets/index-Dv9zBWC9.js +0 -1775
  360. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-wucbNzkr.js +0 -1
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: coordinate
3
+ description: Coordinate up to three Qwen Code teammates with enforced read-only workers, an optional worktree-pinned writer, shared tasks, peer messages, and existing Agent View tabs. Invoke explicitly with /coordinate.
4
+ argument-hint: '<goal>'
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # Coordinate Qwen Code Teammates
9
+
10
+ Act as the team leader. Decompose the goal, keep task ownership clear, reconcile disagreements, and deliver the final result.
11
+
12
+ ## Build one bounded team
13
+
14
+ When `team_create` is available:
15
+
16
+ 1. Create one team and one self-contained task per current investigation workstream. Do not queue an implementation task while read-only teammates are idle because tasks are auto-assigned.
17
+ 2. Spawn one to three named investigation teammates with `read_only: true`. Do not pass `model`; use the session-default model unless the selected agent definition explicitly overrides it.
18
+ 3. Assign tasks and let teammates collaborate through `send_message` and the shared task list. Send targeted follow-ups when evidence conflicts, a task needs clarification, or a result is incomplete.
19
+ 4. Accept or reject each result based on its evidence. Reassign rejected work instead of silently using it.
20
+
21
+ Read-only teammates have a positive execution allowlist. They cannot use shell, edit or write files, save memory, create schedules, invoke arbitrary deferred tools, or spawn agents. This is enforced by the runtime, not only by this prompt.
22
+
23
+ ## Pin the only writer to a worktree
24
+
25
+ When the goal requires code changes:
26
+
27
+ 1. Finish the parallel investigation first.
28
+ 2. Send each investigation teammate a `shutdown_request`. Once shutdown is pending, they are excluded from automatic task assignment.
29
+ 3. Call `enter_worktree` once and keep the returned path.
30
+ 4. Create the implementation task, then spawn exactly one named writer with `subagent_type: "general-purpose"` and `working_dir: <path>`. Do not set `read_only` for this teammate.
31
+ 5. Give the writer the accepted investigation evidence and require all changes to stay inside the worktree.
32
+ 6. Review and verify the worktree result. The leader alone decides whether and how to integrate it into the current branch.
33
+ 7. Do not remove the worktree until accepted changes have been integrated or deliberately discarded.
34
+
35
+ If the checkout is not a Git repository or worktree creation fails, keep all teammates read-only and let the leader make the final change in the current checkout.
36
+
37
+ After synthesis, send each still-active teammate a `shutdown_request`, then delete the team.
38
+
39
+ The existing Agent View tabs show teammate conversations, messages, status, and approvals. Do not create another roster, session manager, or terminal UI.
40
+
41
+ If the Agent Team tools are unavailable, say that `experimental.agentTeam` must be enabled and Qwen Code restarted. Ordinary subagents are an acceptable fallback for parallel research, but describe them accurately: they report only to the leader and cannot collaborate as a team.
42
+
43
+ ## Keep coordination bounded
44
+
45
+ - Use one teammate for a narrow task and no more than three for this workflow.
46
+ - Give every task an objective, scope, completion condition, and required evidence.
47
+ - Default every teammate to `read_only: true`; add one worktree writer only when implementation is required.
48
+ - Do not use Arena: it is for competing solutions to the same task, not collaboration on different tasks.
49
+ - Do not claim that in-process teammates are independent PTY sessions or heterogeneous CLIs.
50
+ - Finish implementation before running the smallest relevant verification once.
51
+
52
+ Return the outcome, material evidence or disagreements, changes made by the leader, verification, and remaining risks.
@@ -583,14 +583,14 @@ The optional `reasoning` field under `generationConfig` controls how aggressivel
583
583
 
584
584
  ### Per-provider behavior
585
585
 
586
- | Protocol / provider | Wire shape | Notes |
587
- | --------------------------------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
588
- | **OpenAI / DashScope** (`qwen3.8-max` family) | Flat `reasoning_effort: <effort>` body parameter | The five `/effort` tiers (`low`, `medium`, `high`, `xhigh`, `max`) are passed through verbatim for any model id starting with `qwen3.8-max` (including dated snapshots and `-latest` aliases); DashScope applies any model-specific mapping. For this family the tier ships alone: a conflicting `enable_thinking` or `thinking_budget` is dropped (warn-logged, once per generator) DashScope rejects requests combining `reasoning_effort` with `thinking_budget`, and two thinking controls should not ship together. An explicit `enable_thinking: false` in `extra_body` is honoured rather than dropped: it overrides the configured tier as `reasoning_effort: 'none'`, one of the few places `extra_body` does not win verbatim. Other Qwen models continue to map a selected effort to `enable_thinking: true`; a `reasoning_effort` override passes through there unless it conflicts with a `thinking_budget` (a pair DashScope rejects), in which case the inert `reasoning_effort` is dropped and both `enable_thinking` and `thinking_budget` survive. |
589
- | **OpenAI / DeepSeek** (`api.deepseek.com`) | Flat `reasoning_effort: <effort>` body parameter | When `reasoning.effort` is set in the nested config shape, it's rewritten to flat `reasoning_effort` and `'low'`/`'medium'` are normalized to `'high'`, `'xhigh'` to `'max'` — mirroring DeepSeek's [server-side back-compat](https://api-docs.deepseek.com/zh-cn/api/create-chat-completion). Top-level `samplingParams.reasoning_effort` or `extra_body.reasoning_effort` overrides skip this normalization and ship verbatim. |
590
- | **OpenAI** (other compatible servers) | `reasoning: { effort, ... }` passed through verbatim | Set via `samplingParams` (e.g. `samplingParams.reasoning_effort` for GPT-5/o-series) when the provider expects a different shape. |
591
- | **Anthropic** (real `api.anthropic.com`) | `output_config: { effort }` plus the `effort-2025-11-24` beta header | Real Anthropic accepts `'low'`/`'medium'`/`'high'` only. `'max'` is **clamped to `'high'`** with a `debugLogger.warn` line (once per generator); if you want max effort, switch the baseURL to a DeepSeek-compatible endpoint that supports it. |
592
- | **Anthropic** (`api.deepseek.com/anthropic`) | Same `output_config: { effort }` + beta header | `'max'` is passed through unchanged. |
593
- | **Gemini** (`@google/genai`) | `thinkingConfig: { includeThoughts: true, thinkingLevel }` | `'low'` → `LOW`, `'high'`/`'max'` → `HIGH`, others → `THINKING_LEVEL_UNSPECIFIED` (Gemini has no `MAX` tier). |
586
+ | Protocol / provider | Wire shape | Notes |
587
+ | --------------------------------------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
588
+ | **OpenAI / DashScope** (`qwen3.8-max` family) | Flat `reasoning_effort: <effort>` body parameter | The five `/effort` tiers (`low`, `medium`, `high`, `xhigh`, `max`) are passed through verbatim for any model id starting with `qwen3.8-max` (including dated snapshots and `-latest` aliases); DashScope applies any model-specific mapping. When `reasoning_effort` and `thinking_budget` conflict, the normal `extra_body` > `samplingParams` > `reasoning` precedence keeps only the higher-priority field; an explicit same-layer pair keeps `reasoning_effort`, matching the provider's behavior before cross-layer resolution. If a static field wins, `/effort` reports that field instead of implying the requested tier is effective. When an effort tier wins, a conflicting `enable_thinking` is also dropped. An explicit `enable_thinking: false` in `extra_body` is honoured rather than dropped: it overrides the configured tier as `reasoning_effort: 'none'`, one of the few places `extra_body` does not win verbatim. Other Qwen models continue to map a selected effort to `enable_thinking: true`; a `reasoning_effort` override passes through there unless it conflicts with a `thinking_budget` (a pair DashScope rejects), in which case the inert `reasoning_effort` is dropped and both `enable_thinking` and `thinking_budget` survive. |
589
+ | **OpenAI / DeepSeek** (`api.deepseek.com`) | Flat `reasoning_effort: <effort>` body parameter | When `reasoning.effort` is set in the nested config shape, it's rewritten to flat `reasoning_effort` and `'low'`/`'medium'` are normalized to `'high'`, `'xhigh'` to `'max'` — mirroring DeepSeek's [server-side back-compat](https://api-docs.deepseek.com/zh-cn/api/create-chat-completion). Top-level `samplingParams.reasoning_effort` or `extra_body.reasoning_effort` overrides skip this normalization and ship verbatim. |
590
+ | **OpenAI** (other compatible servers) | `reasoning: { effort, ... }` passed through verbatim | Set via `samplingParams` (e.g. `samplingParams.reasoning_effort` for GPT-5/o-series) when the provider expects a different shape. |
591
+ | **Anthropic** (real `api.anthropic.com`) | `output_config: { effort }` plus the `effort-2025-11-24` beta header | Real Anthropic accepts `'low'`/`'medium'`/`'high'` only. `'max'` is **clamped to `'high'`** with a `debugLogger.warn` line (once per generator); if you want max effort, switch the baseURL to a DeepSeek-compatible endpoint that supports it. |
592
+ | **Anthropic** (`api.deepseek.com/anthropic`) | Same `output_config: { effort }` + beta header | `'max'` is passed through unchanged. |
593
+ | **Gemini** (`@google/genai`) | `thinkingConfig: { includeThoughts: true, thinkingLevel }` | `'low'` → `LOW`, `'high'`/`'max'` → `HIGH`, others → `THINKING_LEVEL_UNSPECIFIED` (Gemini has no `MAX` tier). |
594
594
 
595
595
  ### `reasoning: false`
596
596
 
@@ -604,6 +604,8 @@ On a `api.deepseek.com` baseURL, the OpenAI pipeline emits the explicit `thinkin
604
604
  >
605
605
  > When `generationConfig.samplingParams` is set on an OpenAI-compatible provider, the pipeline ships those keys to the wire **verbatim** and skips the separate `reasoning` injection entirely. So a config like `{ samplingParams: { temperature: 0.5 }, reasoning: { effort: 'max' } }` will silently drop the reasoning field on OpenAI/DeepSeek requests.
606
606
  >
607
+ > DashScope Qwen models are an exception: their provider reads `reasoning` directly and maps it to `reasoning_effort` or `enable_thinking`. On the qwen3.8-max family, provider-specific `samplingParams` fields still take precedence when the wire parameters conflict; on older qwen hybrids, a configured effort tier collapses to `enable_thinking: true`, which overrides a `samplingParams.enable_thinking` value.
608
+ >
607
609
  > If you set `samplingParams`, include the reasoning knob inside it directly — for DeepSeek that's `samplingParams.reasoning_effort`, for GPT-5/o-series it's `samplingParams.reasoning_effort` (their flat field) or `samplingParams.reasoning` (the nested object). For OpenRouter and other providers the field name varies; consult the provider docs.
608
610
  >
609
611
  > The Anthropic and Gemini converters are unaffected — they always read `reasoning.effort` directly regardless of `samplingParams`.
@@ -5,6 +5,7 @@ export default {
5
5
  'tool-use-summaries': 'Tool-Use Summaries',
6
6
  'markdown-rendering': 'Markdown Rendering',
7
7
  'sub-agents': 'SubAgents',
8
+ 'multi-agent-coordination': 'Multi-Agent Coordination',
8
9
  arena: 'Agent Arena',
9
10
  skills: 'Skills',
10
11
  memory: 'Memory',
@@ -200,14 +200,14 @@ Agent Arena is experimental. Current limitations:
200
200
 
201
201
  ## Comparison with other multi-agent modes
202
202
 
203
- Agent Arena is one of several planned multi-agent modes in Qwen Code. **Agent Team** and **Agent Swarm** are not yet implemented — the table below describes their intended design for reference.
203
+ Agent Arena and the experimental Agent Team runtime serve different multi-agent workflows. Agent Swarm remains a planned mode.
204
204
 
205
- | | **Agent Arena** | **Agent Team** (planned) | **Agent Swarm** (planned) |
205
+ | | **Agent Arena** | **Agent Team** | **Agent Swarm** (planned) |
206
206
  | :---------------- | :----------------------------------------------------- | :------------------------------------------------- | :------------------------------------------------------- |
207
207
  | **Goal** | Competitive: Find the best solution to the _same_ task | Collaborative: Tackle _different_ aspects together | Batch parallel: Dynamically spawn workers for bulk tasks |
208
208
  | **Agents** | Pre-configured models compete independently | Teammates collaborate with assigned roles | Workers spawned on-the-fly, destroyed on completion |
209
209
  | **Communication** | No inter-agent communication | Direct peer-to-peer messaging | One-way: results aggregated by parent |
210
- | **Isolation** | Full: separate Git worktrees | Independent sessions with shared task list | Lightweight ephemeral context per worker |
210
+ | **Isolation** | Full: separate Git worktrees | In-process teammates with a shared task list | Lightweight ephemeral context per worker |
211
211
  | **Output** | One selected solution applied to workspace | Synthesized results from multiple perspectives | Aggregated results from parallel processing |
212
212
  | **Best for** | Benchmarking, choosing between model approaches | Research, complex collaboration, cross-layer work | Batch operations, data processing, map-reduce tasks |
213
213
 
@@ -216,4 +216,5 @@ Agent Arena is one of several planned multi-agent modes in Qwen Code. **Agent Te
216
216
  Explore related approaches for parallel and delegated work:
217
217
 
218
218
  - **Lightweight delegation**: [Subagents](./sub-agents.md) handle focused subtasks within your session — better when you don't need model comparison
219
+ - **Collaborative execution**: [Multi-Agent Coordination](./multi-agent-coordination.md) uses Agent Team for shared tasks and teammate messaging
219
220
  - **Manual parallel sessions**: Run multiple Qwen Code sessions yourself in separate terminals with [Git worktrees](https://git-scm.com/docs/git-worktree) for full manual control
@@ -139,12 +139,13 @@ Commands for managing AI tools and models.
139
139
 
140
140
  These commands invoke bundled skills that provide specialized workflows.
141
141
 
142
- | Command | Description | Usage Examples |
143
- | ------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------- |
144
- | `/review` | Multi-agent code review (12 parallel agents at high effort) | `/review`, `/review 123`, `/review 123 --comment`, `/review --effort low` |
145
- | `/loop` | Run a prompt on a recurring schedule | `/loop 5m check the build` |
146
- | `/simplify` | Review recent changes and apply safe cleanup edits directly | `/simplify`, `/simplify focus on duplication` |
147
- | `/qc-helper` | Answer questions about Qwen Code usage and configuration | `/qc-helper how do I configure MCP?` |
142
+ | Command | Description | Usage Examples |
143
+ | ------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------- |
144
+ | `/review` | Multi-agent code review (12 parallel agents at high effort) | `/review`, `/review 123`, `/review 123 --comment`, `/review --effort low` |
145
+ | `/coordinate` | Coordinate read-only workers and one optional worktree writer | `/coordinate investigate and fix the authentication regression` |
146
+ | `/loop` | Run a prompt on a recurring schedule | `/loop 5m check the build` |
147
+ | `/simplify` | Review recent changes and apply safe cleanup edits directly | `/simplify`, `/simplify focus on duplication` |
148
+ | `/qc-helper` | Answer questions about Qwen Code usage and configuration | `/qc-helper how do I configure MCP?` |
148
149
 
149
150
  See [Code Review](./code-review.md) for full `/review` documentation.
150
151
 
@@ -256,6 +256,11 @@ Events are emitted as JSON Lines (one object per line). The schema is the same
256
256
  one used by the non-interactive `--output-format=stream-json` mode, with
257
257
  `includePartialMessages` always enabled.
258
258
 
259
+ Protocol version 2 bounds textual `tool_result.content` values to 65,536 UTF-8
260
+ bytes after JSON string serialization. Oversized values become deterministic
261
+ head/tail previews; the event type and field schema are unchanged. This is a
262
+ field limit, not a universal JSONL frame-size limit.
263
+
259
264
  The first event on the channel is always `system` / `session_start`, emitted
260
265
  when the bridge is constructed. Use it to correlate the channel with a
261
266
  session id before any other event arrives.
@@ -215,6 +215,14 @@ Output (streaming as events occur):
215
215
 
216
216
  When combined with `--include-partial-messages`, additional stream events are emitted in real-time (message_start, content_block_delta, etc.) for real-time UI updates.
217
217
 
218
+ For JSON and stream-JSON output, textual `tool_result.content` values are
219
+ bounded to 65,536 UTF-8 bytes after JSON string serialization. Oversized
220
+ values are emitted as deterministic head/tail previews. The same bound applies
221
+ to persistent stream-JSON sessions, SDK transports, subagent tool results, and
222
+ Dual Output. Text mode still prints only the final response, while retaining
223
+ only the bounded preview internally. This limit does not cap an entire JSON
224
+ session, JSONL event, tool input, or partial message.
225
+
218
226
  ```bash
219
227
  qwen -p "Write a Python script" --output-format stream-json --include-partial-messages
220
228
  ```
@@ -0,0 +1,30 @@
1
+ # Multi-Agent Coordination
2
+
3
+ Qwen Code can coordinate several teammates with the experimental Agent Team runtime. Teammates receive separate tasks, share a task list, exchange messages, and appear in the existing Agent View tabs. `/coordinate` defaults investigation workers to an enforced read-only tool set and can place one writer in a leader-owned Git worktree.
4
+
5
+ ## Enable Agent Team
6
+
7
+ Set `experimental.agentTeam` to `true` in Qwen Code settings and restart, or start Qwen Code with `QWEN_CODE_ENABLE_AGENT_TEAM=1`.
8
+
9
+ ## Run a coordinated task
10
+
11
+ Use the bundled skill with a goal:
12
+
13
+ ```text
14
+ /coordinate investigate the authentication regression and propose the smallest fix
15
+ ```
16
+
17
+ The leader creates a team, assigns up to three independent workstreams, and uses the existing team tools for messages and task state. Teammate conversations and approvals remain visible through the existing Agent View UI. Read-only teammates cannot execute shell commands or write files. If implementation is needed, the leader can create one Git worktree and pin one writer teammate to it; the leader remains the only merge authority for the current branch.
18
+
19
+ If Agent Team is disabled, `/coordinate` can still use ordinary foreground agents for read-only parallel investigation. That fallback is delegation, not a collaborating team: the workers report only to the leader.
20
+
21
+ ## Choosing the right multi-agent mode
22
+
23
+ | Mode | Use it for | Communication | Workspace behavior |
24
+ | ----------------------------- | --------------------------------------------------------------- | ---------------------------------- | ----------------------------------------------------------- |
25
+ | `/coordinate` with Agent Team | Different workstreams contributing to one result | Shared tasks and teammate messages | Enforced read-only workers; optional single worktree writer |
26
+ | Subagents | Small delegated tasks | Worker reports to parent | Depends on the selected agent |
27
+ | Arena | Several models competing on the same task | Agents do not collaborate | Isolated worktrees; one winner is selected |
28
+ | Herdr | Coordinating different CLI products or remote terminal sessions | External terminal-level control | Managed outside Qwen Code |
29
+
30
+ The current workflow deliberately reuses the in-process Agent Team runtime and Agent View UI. Teammates normally inherit the session model, although an agent definition can override it. Persistent independent PTY sessions, cross-vendor workers, and remote attach are separate product concerns and are not implemented by `/coordinate`.
@@ -393,7 +393,7 @@ Notes:
393
393
  | `--max-total-sessions <n>` | derived | Optional non-negative integer daemon-wide cap on fresh session creation across all registered workspace runtimes. It applies to new child sessions, session restore, and branch/fork-created sessions; attaching to an existing live session does not consume a slot. Set to `0` for unlimited. When omitted with several startup/restored workspaces, the daemon derives a fixed cap from the per-workspace limit and the startup workspace count; later dynamic registration does not recompute it. |
394
394
  | `--max-pending-prompts-per-session <n>` | `5` | Per-session cap on prompts accepted by `POST /session/:id/prompt` but not yet settled, including queued prompts and the active prompt. The bridge rejects overflow synchronously with `503`, `Retry-After: 5`, and `code: "prompt_queue_full"` before returning a `promptId`. Set to `0` to disable. `branchSession` serializes on the same FIFO but does not count against this prompt cap. |
395
395
  | `--workspace <path>` | `process.cwd()` | Absolute workspace directory registered by this daemon. Repeat the flag to host multiple workspaces in one process; the first is primary and remains the default when a request omits `cwd`. Relative values are rejected. Session requests whose canonical `cwd` is not registered return `400 workspace_mismatch`. |
396
- | `--memory-project-scope <mode>` | `git-root` | Project-memory partitioning mode. `git-root` (default) shares memory among workspaces resolved to the same Git root; `workspace` keys memory by the exact registered workspace directory so each daemon workspace gets its own isolated memory. Overrides `QWEN_CODE_MEMORY_PROJECT_SCOPE` when provided; an unrecognized env value is ignored with a one-time warning and falls back to `git-root`. Switching to `workspace` does not migrate existing git-root project memory — those entries stop being visible until you switch back. |
396
+ | `--memory-project-scope <mode>` | `workspace` | Project-memory partitioning mode. `workspace` (default) keys memory by the exact registered workspace directory so each daemon workspace gets its own isolated memory; `git-root` is the legacy compatibility mode shared by workspaces resolved to the same Git root. Overrides `QWEN_CODE_MEMORY_PROJECT_SCOPE` when provided; a blank env value is treated as unset, while an unrecognized non-empty value is ignored with a one-time warning and retains the legacy `git-root` behavior. The new default does not migrate existing git-root project memory — use an explicit `git-root` scope to read those entries during migration. |
397
397
  | `--channel <name\|all>` | — | Experimental daemon-managed channel worker. Repeat the flag to select multiple configured channels, or pass `all` to start every configured channel. `all` cannot be combined with named channels. Selected channel `cwd` values must resolve to a registered workspace; a multi-workspace daemon runs one worker per owning workspace. The worker is owned by `qwen serve`; stop the daemon to stop serve-managed channels. |
398
398
  | `--max-connections <n>` | `256` | Listener-level TCP connection cap (`server.maxConnections`). Bounds raw socket count irrespective of session count — slow / phantom SSE clients get rejected at accept time once full. Raise alongside `--max-sessions` if your deployment expects many SSE subscribers per session. |
399
399
  | `--memory-budget-mb <n>` | 50% of cgroup/host | Total memory budget in MB for the whole daemon process tree. When unset, derived as 50% of the cgroup limit or host memory; either way the effective value is capped at resolved available memory, and both the configured and effective figures are reported. Currently observation only — it does not change how any `qwen --acp` child is sized. Resolved figures appear under `limits.memory` in `GET /daemon/status`, alongside registered and live child counts and advisory per-child shares under `runtime.memory`. A host too small for the minimum reports `insufficientMemory` rather than being clamped upward; because the derived fraction is 50%, any host under ~2 GB trips this. Pass an explicit `--memory-budget-mb 1024` on such a host to override the derived figure (the flag still requires at least 1024 MB of available memory to clear the warning). Must be an integer in `[1024, 1048576]`. |
@@ -417,12 +417,12 @@ Notes:
417
417
 
418
418
  > **Memory project scope caveats.**
419
419
  >
420
- > - **Daemon vs. standalone CLI.** `--memory-project-scope` (and
421
- > `QWEN_CODE_MEMORY_PROJECT_SCOPE`) only affects daemon-managed runtimes.
422
- > A standalone `qwen` TUI started in the same directory still uses the
423
- > git-root scope unless the environment variable is exported globally. To keep
424
- > both entry points consistent, pin the scope in the workspace `.env` or
425
- > `settings.env` so every process that reads the workspace agrees.
420
+ > - **Daemon vs. standalone CLI.** The flag or daemon launch environment sets
421
+ > one frozen scope for every runtime owned by that daemon. A workspace `.env`
422
+ > or `settings.env` cannot override it for one registered workspace. A
423
+ > standalone `qwen` TUI still defaults to git-root scope; to keep both entry
424
+ > points consistent, export `QWEN_CODE_MEMORY_PROJECT_SCOPE` in the shell or
425
+ > service environment that launches them.
426
426
  > - **Directory-name collisions.** The storage key is derived by
427
427
  > `sanitizeCwd`, which replaces every non-alphanumeric character with
428
428
  > `-`. Sibling directories that differ only in punctuation (e.g.
@@ -505,6 +505,10 @@ Two things the command's briefs carry that no orchestrator should be relaying by
505
505
 
506
506
  The fixed dimensions are domain-blind. When a diff concentrates in a domain with a recognizable failure grammar — a reconnect/backoff state machine, a module loader, a cron scheduler, a wire-protocol codec, a cache layer, a data migration — write 1–2 additional finder briefs specialized to that domain and launch them alongside the standard set, labeled `Agent 8a/8b: <domain> angle`.
507
507
 
508
+ One such domain is now carried by the fixed dimensions rather than left to an Agent 8 you might not get: a diff that **models another system's execution** — a shell/git guard, a sandbox, a permission interpreter. Its sharpest failure is not the syntax layer a hand-brief would name but the STATE-propagation layer — what the model carries or drops across a function/`eval`/subshell/`$(…)` boundary the real system crosses differently — and finding it needs the real system run as an oracle, not read. Agent 2 (Security) carries the model-of-execution divergence hunt on the 3A dimension fan-out — whole-diff, and told to run real bash/git to discover it. On a 3B territory fan-out Agent 2 does not run, but when the manifest declares the diff a modeled executable system the chunk agents carry the SAME lens, scoped to their own territory (`buildChunkAgentPrompt` attaches it) — so the within-territory half is covered on both topologies. The cross-chunk contract — a divergence whose add and check sit in different chunks — falls to the reverse-audit layer receipts and their cap below, with invariant-c as a heavy-file backstop (measured; DESIGN.md — The divergence the static finders could not see (PR #8687)).
509
+
510
+ For such a diff the **reverse audit** also owes per-layer coverage, and this is enforced without you: the auditor brief asks each defect layer be walked and receipted on its own line (`Layer walked: <id>`), and `compose-review`'s `layerAuditGate` reads those receipts and adds one `unreviewedDimensions` entry per unwalked layer — capping a would-be Approve exactly like any dimension nobody reviewed. It is **opt-in and deterministic**: it fires only when a `.qwen/review-context.json` matching rule (read from the trusted base branch) sets the `modeled-executable-system` domain on the diff, so a maintainer arms it per guard/interpreter path, and the model neither runs it nor can suppress it. It only ever withholds an Approve — it never ends the audit loop or blocks a Request changes — so a converged loop that skipped a layer is disclosed and capped rather than certified clean. The automated cap measures the shell/git layer set only for now: arming the domain on a non-shell modeled system (a SQL planner, a codec) would owe those shell layers indefinitely, so keep it to shell/git guards until a manifest-declared taxonomy lands.
511
+
508
512
  **This is the one brief you write**, so it is the one place `--role` does not help: build the diff-reading block with `"${QWEN_CODE_CLI:-qwen}" review agent-prompt --plan <plan> --whole-diff` and append your domain brief to it. A specialized brief names the domain's specific invariants to walk, the way the invariant checklist does for a rewritten file. Examples: for a module loader — resolution order, ESM/CJS interop, circular-import timing, cache invalidation; for reconnect logic — state flags reset on every exit path, backoff growth and cap, timer cancellation on teardown, buffered-data loss when a retry is abandoned.
509
513
 
510
514
  Rules: at most `plan.budget.specialistCap` — which is **0 below 80 source lines**, so on a small diff there is no ruling to make and you launch none regardless of how concentrated it looks; launch none when no domain stands out (the common case — most diffs get zero). They are not in the roster, so nothing will ask for them. Their findings are `Source: [review]`, use the standard finding format including the failure scenario, and go through Step 4 verification like any other finding.
@@ -563,7 +567,7 @@ Before verification, merge findings that refer to the same issue (same file, sam
563
567
 
564
568
  Launch verification agents that between them receive **all** non-pre-confirmed findings. **Up to `plan.budget.verifyShard` findings per agent** (8), so `ceil(N / verifyShard)` agents, launched together in one response. It is flat rather than size-derived on purpose: it is a fact about how much a verifier can re-trace before its quality collapses on the tail of its list, which is a property of the verifier and not of the diff. It lives in the budget so it has one home instead of being restated here and in whatever reads it.
565
569
 
566
- **At high effort, the verifiers do not launch alone.** Step 5's first reverse-audit launch — the convergence pair on a 3A plan, round 1's per-chunk fan-out on 3B — goes out **in the same response** as these verifier shards, exactly as every later round's verification rides alongside the next round's auditors (Step 5's pipelined loop; this is its k=0 case). The batch is self-contained: write the shard files **and the cumulative findings file** (Step 5 defines its form — every entry **not yet through Step 4** carries the `— [unverified]` tag; a pre-confirmed `[build]`/`[test]` entry is already through it and enters untagged, exactly as the Step 4 close-out line says) first, then build both prompt sets from them, then fire every agent together. Nothing here waits on a verdict: the tagged state is exactly what Step 5's merge rules are built around. A real run has held its round-1 auditor 22 minutes behind a verifier whose verdicts that auditor never needed, while a sibling run of the same skill, the same day, launched the two together (measured; DESIGN.md — The 22-minute serial first verification). At medium there is no reverse audit, so the verifiers launch alone; a Step 4 with no shards — zero findings, or only pre-confirmed ones — has no verifiers, so the first reverse-audit launch goes out alone, on time, its findings file carrying whatever entries exist (empty is fine; the builder accepts it and tells the auditor so).
570
+ **At high effort, the verifiers do not launch alone.** Step 5's first reverse-audit launch — the convergence pair, whole-diff on a 3A plan and per-chunk (rounds 1 and 2 together) on 3B — goes out **in the same response** as these verifier shards, exactly as every later round's verification rides alongside the next round's auditors (Step 5's pipelined loop; this is its k=0 case). The batch is self-contained: write the shard files **and the cumulative findings file** (Step 5 defines its form — every entry **not yet through Step 4** carries the `— [unverified]` tag; a pre-confirmed `[build]`/`[test]` entry is already through it and enters untagged, exactly as the Step 4 close-out line says) first, then build both prompt sets from them, then fire every agent together. Nothing here waits on a verdict: the tagged state is exactly what Step 5's merge rules are built around. A real run has held its round-1 auditor 22 minutes behind a verifier whose verdicts that auditor never needed, while a sibling run of the same skill, the same day, launched the two together (measured; DESIGN.md — The 22-minute serial first verification). At medium there is no reverse audit, so the verifiers launch alone; a Step 4 with no shards — zero findings, or only pre-confirmed ones — has no verifiers, so the first reverse-audit launch goes out alone, on time, its findings file carrying whatever entries exist (empty is fine; the builder accepts it and tells the auditor so).
567
571
 
568
572
  A single verifier for every finding was cheaper, but on a large review it becomes the most context-starved agent in the pipeline: it must re-read code for each of 30-60 findings inside one context window, and its quality collapses on the tail of the list. Sharding keeps each verifier's job small; the cost is still far below one-agent-per-finding.
569
573
 
@@ -622,17 +626,20 @@ After deduplication, run reverse audit **iteratively** — the first launch ride
622
626
  **Each round is a fan-out, not one agent.**
623
627
 
624
628
  - **Small diffs (Step 3A path):** one reverse audit agent per round, reading the whole diff — except rounds 1 and 2, which are **the convergence pair** and launch together (below).
625
- - **Large diffs (Step 3B path):** one reverse audit agent **per chunk** per round, launched together in a single response. A single agent asked to re-read a 5 800-line diff with a growing finding list appended is the most context-starved agent in the pipeline — precisely on the PRs where the reverse audit matters most. Each per-chunk auditor gets the same territory as its Step 3B counterpart, plus the cumulative finding list for the **whole** diff (so it knows what is already covered elsewhere).
629
+ - **Large diffs (Step 3B path):** one reverse audit agent **per chunk** per round, launched together in a single response — and rounds 1 and 2 are **the convergence pair** here too, their per-chunk auditors launched together (below). A single agent asked to re-read a 5 800-line diff with a growing finding list appended is the most context-starved agent in the pipeline — precisely on the PRs where the reverse audit matters most. Each per-chunk auditor gets the same territory as its Step 3B counterpart, plus the cumulative finding list for the **whole** diff (so it knows what is already covered elsewhere).
626
630
  - **The builder schedules the 3B fan-out; you do not.** Rounds 1 and 2 audit every chunk — they are what establishes each territory's record. From round 3 on, `--all-chunks` reads the harness transcripts and **retires** any chunk whose own last two audits were substantively dry (the receipt named what it examined AND the transcript shows the diff was opened): a retired chunk is cold-checked on alternating rounds instead of every round, and a cold check that yields anything returns it to every-round auditing. The savings land on the odd rounds — every retired chunk cold-checks together on the even ones, so an even round's fan-out is unchanged; expect the odd rounds to shrink, not the even ones (under the 3-round huge-diff cap only round 3 can shrink — the cap ends the loop before round 5). The blocks it prints are the round; the `retirement:` note after the `end of round` line names each skipped chunk and its certificate — relay that note in your narration, and do not hand-build an auditor for a chunk the builder skipped. Why, measured: on a real 6-chunk run, two chunks were dry in **all five rounds** — a third of the loop's auditors re-certifying territories that had already converged, while the three hot chunks were where every finding came from. Attention follows evidence; the certificate a retired chunk holds (two consecutive substantive dry audits) is exactly the one the whole loop used to end on.
627
631
 
628
- **The convergence pair (3A only).** Rounds 1 and 2 launch **in one response** — together with Step 4's verifier shards (Step 4 names this) — each built by its own `agent-prompt` call: `--round 1` and `--round 2`, the **same** `--findings` file. This is not a loosened criterion; it is the serial shape's own arithmetic made concurrent: a dry round leaves the cumulative list unchanged, so round 2's launch input was already substantively identical to round 1's — the same entries, at most with verification tags the merge had cleared in between — an independent rerun that the serial shape bought with a full round of wall clock, and that one budget-gated run could no longer afford at all, shipping a capped verdict for want of a second dry audit it had time to run in parallel but not in series (measured; DESIGN.md — The serial convergence pair). What the two-consecutive-dry criterion demands is unchanged: two independent, substantively-dry audits of the whole diff. The one delta the pair does introduce is the same one-round suppression window the pipelined loop already accepts (the merge bullet in the termination rules): the round-2 member audits with entries a verifier may be rejecting mid-flight still on its do-not-re-report list.
632
+ **The convergence pair 3A (whole-diff form).** Rounds 1 and 2 launch **in one response** — together with Step 4's verifier shards (Step 4 names this) — each built by its own `agent-prompt` call: `--round 1` and `--round 2`, the **same** `--findings` file. This is not a loosened criterion; it is the serial shape's own arithmetic made concurrent: a dry round leaves the cumulative list unchanged, so round 2's launch input was already substantively identical to round 1's — the same entries, at most with verification tags the merge had cleared in between — an independent rerun that the serial shape bought with a full round of wall clock, and that one budget-gated run could no longer afford at all, shipping a capped verdict for want of a second dry audit it had time to run in parallel but not in series (measured; DESIGN.md — The serial convergence pair). What the two-consecutive-dry criterion demands is unchanged: two independent, substantively-dry audits of the whole diff. The one delta the pair does introduce is the same one-round suppression window the pipelined loop already accepts (the merge bullet in the termination rules): the round-2 member audits with entries a verifier may be rejecting mid-flight still on its do-not-re-report list.
629
633
 
630
634
  - **Both members dry** (substantive receipts, per the termination rules): the audit has converged. Wait for the riding verifiers' verdicts, apply the final merge, and proceed to Step 6.
631
635
  - **Either member reports findings**: the pair is one reporting round. Its members could not see each other, so first dedup the pair against itself (same defect, same location, same root cause keeps one, at the highest severity), merge into the cumulative list, and continue serially: the pair's verifiers ride with round 3's auditor — verify builds over the **deduped union**, sharded per Step 4's `verifyShard` exactly as any reporting round's findings are, **every shard passed as `--round 2`** (the pair's later label; never one build per member — the dedup already merged cross-member findings, and a per-member split would put one entry in front of two verifiers) — and convergence now needs two consecutive dry rounds from round 3 on. A dry member of a reporting pair is **not** carried forward as half of that evidence — its dry predates the other member's findings entering the list. One exception, and it is the retroactively-dry rule below, not a third rule: if a later merge retires the pair in full — every finding from both members rejected — the pair counts as the dry predecessor, and round 3's dry return ends the loop.
632
636
  - The substantive-return check applies per member, relaunch-once included. A twice-whiffed member makes the pair not dry — silence is not convergence evidence — and its scope joins the outstanding-whiffed-scopes list exactly as for any round.
633
- - If the round-2 build is refused by the deadline gate (exit 4), launch round 1 alone and treat the refusal as the budget stop it is (the termination rules below). Defensive only: under the gate's pricing a paired round 2 admits strictly cheaper than the round 1 just admitted, so this cannot currently fire — the rule exists so a future pricing change degrades to the serial shape instead of to a guess.
637
+ - If the deadline gate refuses one of the pair's builds (exit 4) and admits the other, launch the admitted member alone and treat the refusal as the budget stop it is (the termination rules below). If it refuses BOTH builds, nothing launches: the remaining budget cannot cover even one round plus the reserve, the first refusal's stop marker is the stop, and the two refusals each name their own round's stop entry — proceed to Step 6 and relay the MARKER's entry only (it holds the first refusal, and it is the one `compose-review` renders). The single-refusal split is defensive only: while the runtime's tool-concurrency pool holds both whole-diff members at once, the gate prices the paired round 2 at one round's wall, so it admits no dearer than the round 1 just admitted and that split cannot currently fire — the rule exists so a future pricing change degrades to the serial shape instead of to a guess.
638
+
639
+ **The convergence pair — 3B (per-chunk form).** On 3B the pair applies per chunk. Launch `--all-chunks --round 1` **and** `--all-chunks --round 2` **in the same response** — both fan out to every chunk (rounds 1 and 2 always do, and the retirement schedule only reads history from round 3, so round 2's build needs nothing round 1 has produced yet), so each chunk's two establishing audits run concurrently instead of a round-wall apart. This is the same arithmetic as 3A read per territory: a chunk dry in round 1 leaves its slice of the cumulative list unchanged, so that chunk's round-2 auditor re-runs substantively the same audit — one round's wall the serial shape paid on every chunked review (measured; DESIGN.md — The serial 3B convergence rounds). The convergence contract is unchanged and reads per chunk through the retirement ledger: a chunk dry in both members holds its two-consecutive-dry certificate, and a pair dry on **every** chunk converges at the round-3 `--all-chunks` build (`CONVERGED`, exit 5) exactly as an all-dry pair does on 3A. Same one-round suppression window, per chunk (a round-2 auditor audits with entries a verifier may be clearing mid-flight). The launch coupling holds too: both members ride with the Step 4 verifier shards (Step 4 names this).
634
640
 
635
- On 3B the pair does not apply: rounds already fan out per chunk, rounds 1 and 2 are what establishes each chunk's record, and the retirement schedule is the convergence ledger there. What 3B shares is the launch coupling: its round 1 also rides with the Step 4 verifiers.
641
+ - **Any auditor in either member reports findings**: the pair is one reporting round, exactly as on 3A — wait for BOTH fan-outs to return in full before the dedup (every chunk has an auditor in each member, and members cannot see each other across rounds either), dedup the pair against itself across rounds **and** chunks (same defect, same location, same root cause keeps one, at the highest severity), and merge the union into the cumulative list once. The pair's verifiers ride round 3's `--all-chunks` build: one batch over the **deduped union**, sharded per Step 4's `verifyShard`, **every shard passed as `--round 2`** (the pair's later label — never one build per member). Round 2's auditors are already in flight when round 1's returns land, so the pipelined k/k+1 rule below does not launch them again; this bullet is the pair's only transition. Convergence then reads per chunk through the retirement ledger as above: a chunk that reported in either member holds no certificate and stays under every-round audit, and the pair counts as one reporting round for the retroactively-dry rule — retired only when every finding from **both** members is rejected.
642
+ - If the deadline gate refuses one member's `--all-chunks` build (exit 4) and admits the other's, launch the admitted member alone and take the stop. The gate prices the round-2 build as the pair's wall — both fan-outs in waves of the runtime's tool-concurrency pool — so this split fires exactly when the pair plus the reserve does not fit but one round still does, and the admitted round alone keeps the serial shape. If it refuses BOTH builds, nothing launches: the remaining budget cannot cover even one round plus the reserve, the first refusal's stop marker is the stop, and the two refusals each name their own round's stop entry — proceed to Step 6 and relay the MARKER's entry only (it holds the first refusal, and it is the one `compose-review` renders).
636
643
 
637
644
  **Do not write the reverse auditor's prompt. Ask for it — and hand it the findings so far so it prints the whole block:**
638
645
 
@@ -648,6 +655,9 @@ Write **the cumulative list of every finding reported so far** (Steps 3-4 plus a
648
655
  [--rules <the rules file from Step 2>]
649
656
 
650
657
  # Step 3B (large diff): one auditor PER CHUNK per round — ONE call builds them all.
658
+ # The convergence pair is two of these builds — --round 1 and --round 2, same
659
+ # --findings — launched together in one response, each redirected to its own
660
+ # round file (the <k> in the redirect names them apart).
651
661
  "${QWEN_CODE_CLI:-qwen}" review agent-prompt --plan <the plan report from Step 1> --role reverse-audit --all-chunks \
652
662
  --findings <the cumulative findings file> \
653
663
  --round <k> \
@@ -671,12 +681,12 @@ The brief holds what the auditor is for: hunt only the **gaps** no prior agent c
671
681
  - Stop at the plan's **`reverseAuditRounds` cap** — 5, or 3 for a huge diff (effective ≥ 3000 lines) — and say so in the output rather than implying convergence. The builder enforces this itself: a round past the cap gets a `ROUND CAP:` refusal on stderr and exit **4**, and — like the time-budget gate — writes a marker `compose-review` caps the verdict on whether or not you relay anything; still add the entry the message names to `unreviewedDimensions` so the terminal report agrees. If the cap round reported findings, its verifiers have NOT launched — that launch rides the next round's build, which the cap forbids — so verify them before Step 6 through `agent-prompt --role verify` **only** (never a hand-rolled agent), under the same bounded tail as the budget stop below: that builder is gated on the compose floor and refuses once too little time remains, and when the deadline is within the floor you stop waiting on any verifier batch still out and compose with the tags in hand — no fresh re-verification pass, and nothing already confirmed re-verified. This matters most on exactly the huge diffs the cap targets: a time-budgeted CI run that stops at the cap with ~30-90 minutes left must not spend it on an unbounded tail and die before compose. The tag backstop below (and `compose-review`'s machine-read of it) is what catches a miss.
672
682
  - Findings **reported** by each round are merged into the cumulative list **before** the next round begins, so each round sees an updated baseline. **The merge runs unconditionally — before every round build and before Step 6, whether or not the previous round reported findings**: under the pipelined loop below, round _k_'s verdicts land during round _k+1_, and every termination mode (two dry rounds, CONVERGED, budget stop, the round cap) can arrive with the final rounds dry — a merge keyed to "some round reported something" would never apply the last verdicts that landed. Each merge applies every Step 4 verdict that has landed: confirmed removes the tag, rejected removes the entry. Verification status does not gate the merge — the list exists so auditors do not re-report what is already filed, and an unverified entry serves that purpose exactly as well as a confirmed one. The trade, named: an entry a verifier later rejects will have suppressed one round of rediscovery in its neighbourhood — the window is one round in one location, and the plan's round cap still bounds the loop. The tag is what keeps this mechanical rather than remembered: an entry enters the list tagged `— [unverified]`; the merge after its Step 4 verdict removes the tag (confirmed) or the entry (rejected). Step 6's confirmed-only read then has something to key on — anything still tagged is left out of the confirmed set — instead of a memory of which round each entry arrived in. The tag rides inside the findings file, which is hashed into the record key and copied to the digest-named list file each block points at — so a launch that drops the pointer matches no record, and the delivery floor counts the agent's read of that file exactly as it counts the brief's.
673
683
  - **A reporting round whose every finding the verifier rejected is retroactively dry.** The merge already removes a rejected entry from the cumulative list; from the merge that applies the last of a round's rejections, the round also stops counting as a reporting round, and the two-consecutive-dry rule reads rounds' **effective** status. Rejected means rejected — an entry confirmed at low confidence keeps its round a reporting round. Under the pipelined loop a round's verdicts land while the next round runs, so the upgrade usually arrives one round late, and that is still one round saved: a measured run held round 2 dry, watched round 3's sole finding be rejected, and then ran rounds 4 **and 5** — round 4's dry return plus the rejection already in hand was the two-dry evidence, and the fifth round audited nothing the loop had not already answered (measured; DESIGN.md — The rounds a rejected finding bought (PR #8353)). The rule leans on the rejection bar the verifier's brief already enforces — a rejection claims direct counter-evidence, never mere unverifiability — so a round retired by rejections is retired on evidence, not on doubt. **It pairs forward only, and is consulted when a round returns**: on round _k_'s dry return, first apply every verdict that has landed (the unconditional merge — the retirement takes effect at this application, not at some earlier moment), then end the loop if round _k−1_ was dry or is now retired. Round _k−1_ counts **launches, not labels**: the convergence pair is one round here — a pair member is never round _k−1_ on its own (the pair bullet's not-carried-forward rule stands), and a reporting pair retires only when every finding from **both** members is rejected. The upgrade never ends the loop by itself — a preceding dry round plus a freshly-retired round stops nothing while the next round is already in flight: that round was launched, and its return is taken whatever it says, because a launched auditor can be carrying a real Critical. This is the measured shape (round 4's return is where the loop closes under this rule — the measured run, which predates it, ran a fifth round; a cap-5 shape — under the 3-round huge-diff tier the upgrade can only ever retire rounds 1–2, since the cap round's verdicts land during its solo verification, after the loop has already ended) and the only pairing licensed here. It softens nothing else: a whiffed scope stays not-audited whatever the verdicts say, and on 3B the retirement ledger's per-chunk certificates are untouched — this rule reads at the level the round counter reads.
674
- - **Verification rides alongside the next round, not ahead of it.** When round _k_ returns with new findings, one response launches BOTH round _k_'s verifiers (Step 4, `--role verify --round k` with that round's new findings) AND round _k+1_'s auditors — build the two prompt sets first, then fire every agent together, exactly as Step 3 fans out. (Step 4's initial verification is the k=0 case of the same rule: its shards ride with the first reverse-audit launch — the convergence pair on 3A, round 1's fan-out on 3B.) The serial shape (audit → wait for verification → next round) spent 5-8 minutes per round waiting for verifiers whose results the next round's auditors never needed. Two orderings still hold: the **last** round's verification must complete before Step 6 (that ordering is what keeps unverified entries out of the report and the PR, backed by the tag backstop at the end of this step — which `compose-review` machine-checks from `findingsPath`, Step 6), and a rejected finding leaves the cumulative list at the next merge.
684
+ - **Verification rides alongside the next round, not ahead of it.** When round _k_ returns with new findings, one response launches BOTH round _k_'s verifiers (Step 4, `--role verify --round k` with that round's new findings) AND round _k+1_'s auditors — build the two prompt sets first, then fire every agent together, exactly as Step 3 fans out. (Step 4's initial verification is the k=0 case of the same rule: its shards ride with the first reverse-audit launch — the convergence pair, whole-diff on 3A and per-chunk rounds 1 and 2 on 3B. The convergence pair is the one exception on the LAUNCH side: a pair member's return never triggers this rule per member — round 2's auditors are already in flight — and the pair bullets above define the one transition; the pair's findings still verify as the k=2 case, riding round 3.) The serial shape (audit → wait for verification → next round) spent 5-8 minutes per round waiting for verifiers whose results the next round's auditors never needed. Two orderings still hold: the **last** round's verification must complete before Step 6 (that ordering is what keeps unverified entries out of the report and the PR, backed by the tag backstop at the end of this step — which `compose-review` machine-checks from `findingsPath`, Step 6), and a rejected finding leaves the cumulative list at the next merge.
675
685
  - **The round builder is also the loop's clock.** In a time-budgeted run (CI exports `QWEN_REVIEW_DEADLINE_EPOCH`; a local run normally has no deadline and is untouched), `agent-prompt --role reverse-audit` refuses to build a round that no longer fits: the remaining time must cover **the round itself** (estimated from the costliest round's measured cost so far — a repair relaunch can make one round the expensive one, and the gate prices the worst case the run has proved, not the newest dip — or a conservative constant for round 1) **plus** the reserve kept for its verification, compose-review and submission. On refusal it prints a `BUDGET:` line to stderr and exits **4**. That refusal is a termination rule, not an error — do not rebuild the round, do not relaunch auditors, and do not retry the command. The builder also records a budget-stop marker that `compose-review` reads directly, so the verdict is capped whether or not you relay anything; still add the exact entry the message names (`reverse audit — stopped before round <k> by the review time budget`) to `unreviewedDimensions` so the terminal report and the body agree, and proceed to Step 6. **The tail after a budget stop is bounded, and its order is load-bearing.** Verify the last round's findings — the ones whose verifiers would have ridden the round the gate just refused — **only through `agent-prompt --role verify`, never a hand-rolled `agent`**: that builder is gated on a **compose floor** and prints a `VERIFY BUDGET:` refusal (exit 4) once too little time remains, at which point you stop verifying and compose **immediately** — findings still carrying `— [unverified]` keep the tag, and `compose-review` caps the verdict on it and never treats an unverified finding as a confirmed blocker; everything earlier rounds confirmed still posts. **Bound the wait, not just the launch:** the builder gate stops a verifier from being _built_ below the floor, but a verifier admitted _above_ it can still run a real filesystem/git E2E workload past the floor while you wait on its batch — and `agent-prompt` builds prompts, it cannot cancel a running agent. So when the deadline is within the compose floor and a verifier batch has not returned, **stop waiting on it yourself**: take the findings in hand at their current tag and compose. A verifier you stopped waiting on leaves its findings `— [unverified]`, which caps the verdict exactly as a refused build would. Do **not** re-verify findings already confirmed in earlier rounds, and do **not** invent a fresh re-verification pass — that is the unbounded work a wall runs into. Compose and submit are non-negotiable; they always run. Why this exists, measured twice: a +1699-line PR's CI review ran the audit loop to the 5-round cap and was killed while round 5's findings were still being verified (#8368); and a 4,269-line cross-worktree git guard stopped the audit correctly with ~110 minutes left, then a single hand-rolled agent re-running a 15-family shell/git bypass battery with real filesystem E2E consumed all of it — the wall hit mid-verification, compose never ran, and ~20 E2E-confirmed Critical bypasses were never posted (measured; DESIGN.md — The killed-before-compose tail (PR #8687)). A review that stops on the budget still reports everything it proved; one that runs past it reports nothing.
676
686
 
677
687
  **Reverse audit findings go through Step 4 verification like any other finding.** They used to skip it on the theory that the auditor "already has full context." That premise fails exactly when the diff is large — the auditor with the least room to think was the one whose output nobody checked.
678
688
 
679
- If both members of the convergence pair find nothing, the second opinion has already run — that is what the pair is for. (On 3B, a first dry round is still only half the evidence: the second round runs before believing it.)
689
+ If both members of the convergence pair find nothing, the second opinion has already run — that is what the pair is for. (On 3B this holds per chunk: rounds 1 and 2 launch together, so each chunk's two establishing audits run at once, and a chunk is believed dry only when both members are.)
680
690
 
681
691
  All confirmed findings (from aggregation + all reverse audit rounds) proceed to Step 6. An entry still tagged `— [unverified]` when the loop ends is not among them: the final merge before Step 6 applies every verdict that landed, so a tag that survives means the verifier never ruled on that entry — relaunch it once, and if the tag still survives, add `reverse audit finding <id> — the verifier never ruled on it` to `unreviewedDimensions` (which caps a would-be Approve at COMMENT) and treat that entry as low-confidence (terminal-only, "Needs Human Review"), never as confirmed. This is also machine-checked: Step 6 passes this file to `compose-review` as `findingsPath`, and any tag still in it there caps the verdict at Comment and says so in the body — a tag you forgot to exclude cannot ride an Approve or a Request changes out the door.
682
692
 
@@ -4,83 +4,84 @@ import {
4
4
  MINIMUM_MAX_HEIGHT,
5
5
  MaxSizedBox,
6
6
  setMaxSizedBoxDebugging
7
- } from "./chunk-ONSZH6VM.js";
8
- import "./chunk-EKPKKXY2.js";
7
+ } from "./chunk-MZQ4I4AP.js";
8
+ import "./chunk-MLZCPGDX.js";
9
9
  import "./chunk-SV5PQVQE.js";
10
- import "./chunk-CTJLZLB5.js";
10
+ import "./chunk-EN2J77G7.js";
11
11
  import "./chunk-2IIJTXYF.js";
12
12
  import "./chunk-5QWWOFGG.js";
13
13
  import "./chunk-4NFY2S7N.js";
14
14
  import "./chunk-2MIN6GRR.js";
15
15
  import "./chunk-QHTIBUWB.js";
16
16
  import "./chunk-RKUWKYED.js";
17
- import "./chunk-O3VWAZLP.js";
17
+ import "./chunk-UIZGNLBP.js";
18
18
  import "./chunk-GOFAQQZA.js";
19
19
  import "./chunk-5M6IDOMF.js";
20
20
  import "./chunk-TWPJO254.js";
21
- import "./chunk-H6XPXXMH.js";
22
- import "./chunk-2UUMVNYT.js";
23
- import "./chunk-MVUQRLOH.js";
24
- import "./chunk-XCWO3SMQ.js";
25
- import "./chunk-7MH4J33A.js";
21
+ import "./chunk-CQ35AJ4Z.js";
22
+ import "./chunk-QTI7SRXI.js";
23
+ import "./chunk-KT4OWAAZ.js";
24
+ import "./chunk-IX7CFQGA.js";
25
+ import "./chunk-N7NBMAMW.js";
26
26
  import "./chunk-6PVPNMXU.js";
27
- import "./chunk-TCRQD7F6.js";
27
+ import "./chunk-XT6TGJFD.js";
28
28
  import "./chunk-IRH27ZC2.js";
29
29
  import "./chunk-QHWCP53L.js";
30
- import "./chunk-GNPNYXJB.js";
31
- import "./chunk-HUWENAHO.js";
30
+ import "./chunk-XLQS3VI6.js";
31
+ import "./chunk-NWPO6I7V.js";
32
32
  import "./chunk-O6GEWCJA.js";
33
33
  import "./chunk-T26EAKDL.js";
34
34
  import "./chunk-ZPJWUGCS.js";
35
35
  import "./chunk-CPBF7KYF.js";
36
- import "./chunk-J6SZID63.js";
36
+ import "./chunk-2AZMF6G5.js";
37
37
  import "./chunk-KRXPRVGL.js";
38
- import "./chunk-GM463R2B.js";
39
- import "./chunk-SEZ556DZ.js";
40
- import "./chunk-2FRY5CRX.js";
41
- import "./chunk-QUI267ZP.js";
42
- import "./chunk-WAUGQKUU.js";
43
- import "./chunk-DZUO626D.js";
44
- import "./chunk-4TRQPFDP.js";
38
+ import "./chunk-GZGDJ4E6.js";
39
+ import "./chunk-T6W4KACQ.js";
40
+ import "./chunk-MWZYNOCG.js";
41
+ import "./chunk-SAQHDAUJ.js";
42
+ import "./chunk-6LYDH7VT.js";
43
+ import "./chunk-2XZWO53E.js";
44
+ import "./chunk-BJKREW56.js";
45
45
  import "./chunk-SAH4BD2J.js";
46
- import "./chunk-CPG6P4GG.js";
46
+ import "./chunk-25OFRBH2.js";
47
+ import "./chunk-EYS3GGM3.js";
47
48
  import "./chunk-S6LOFUVP.js";
48
49
  import "./chunk-2J3OJGTL.js";
49
- import "./chunk-IA7TGCN2.js";
50
+ import "./chunk-ZV4XVYL3.js";
50
51
  import "./chunk-K623ENWT.js";
51
52
  import "./chunk-AQ37AY7B.js";
52
- import "./chunk-EQL65XGA.js";
53
- import "./chunk-3P2LV43B.js";
53
+ import "./chunk-V3LXMASR.js";
54
+ import "./chunk-KCCODSAA.js";
54
55
  import "./chunk-NAVJD2PQ.js";
55
- import "./chunk-HV76SFIA.js";
56
- import "./chunk-4PYCZH2V.js";
56
+ import "./chunk-5HBFERG5.js";
57
+ import "./chunk-EYW54TBD.js";
57
58
  import "./chunk-P3QQPMQA.js";
58
- import "./chunk-SR7RZ4MS.js";
59
- import "./chunk-M6HMMKVG.js";
59
+ import "./chunk-O4BBDP2G.js";
60
+ import "./chunk-KPVVWKF3.js";
60
61
  import "./chunk-KM73TBQ4.js";
61
62
  import "./chunk-MPHPFVKK.js";
62
63
  import "./chunk-AXMWHKXA.js";
63
64
  import "./chunk-GLCZKT5V.js";
64
65
  import "./chunk-DJ2GSRLV.js";
65
- import "./chunk-EI3HZX6C.js";
66
- import "./chunk-YGT2AUJ7.js";
67
- import "./chunk-WOJZWRAZ.js";
66
+ import "./chunk-GJJQV4PY.js";
67
+ import "./chunk-U2JLICUY.js";
68
+ import "./chunk-YRLW2MSX.js";
68
69
  import "./chunk-VGC4I5JJ.js";
69
- import "./chunk-FVKHVJZQ.js";
70
- import "./chunk-COBO5EBO.js";
71
- import "./chunk-6ZRFAKXK.js";
72
- import "./chunk-PYQADEFD.js";
73
- import "./chunk-3WOZVMGJ.js";
70
+ import "./chunk-732MOPEM.js";
71
+ import "./chunk-CTQE2NB2.js";
72
+ import "./chunk-IEP44U2R.js";
73
+ import "./chunk-XTH2OMDS.js";
74
+ import "./chunk-MDQSCFAZ.js";
74
75
  import "./chunk-F6WFNA7U.js";
75
76
  import "./chunk-46UV252V.js";
76
- import "./chunk-ZBVS26BY.js";
77
- import "./chunk-KKBPOU75.js";
78
- import "./chunk-EUNWC2VS.js";
79
- import "./chunk-FOGU3LJX.js";
80
- import "./chunk-L2AFWWJE.js";
81
- import "./chunk-W4RQUHY3.js";
82
- import "./chunk-PDPFQ2FO.js";
83
- import "./chunk-OIVKILPI.js";
77
+ import "./chunk-FPGTNKCP.js";
78
+ import "./chunk-EFIMD5VA.js";
79
+ import "./chunk-NC4O6UE6.js";
80
+ import "./chunk-F6AOBFUN.js";
81
+ import "./chunk-HUE2M6VI.js";
82
+ import "./chunk-HHJLM3WQ.js";
83
+ import "./chunk-L2GTEEEU.js";
84
+ import "./chunk-MPBRV3UU.js";
84
85
  import "./chunk-VOQXFAY5.js";
85
86
  import "./chunk-75DOP5OR.js";
86
87
  import "./chunk-DMTGGOSA.js";