@qwen-code/qwen-code 0.22.2 → 0.22.3

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 (324) hide show
  1. package/bundled/computer-use/SKILL.md +3 -3
  2. package/bundled/qc-helper/docs/configuration/settings.md +37 -36
  3. package/bundled/qc-helper/docs/features/channels/dws.md +2 -0
  4. package/bundled/qc-helper/docs/features/channels/overview.md +34 -3
  5. package/bundled/qc-helper/docs/features/code-review.md +3 -3
  6. package/bundled/qc-helper/docs/features/computer-use.md +2 -2
  7. package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
  8. package/bundled/qc-helper/docs/qwen-serve.md +1 -1
  9. package/bundled/review/SKILL.md +81 -31
  10. package/bundled/review/references/persistence.md +7 -3
  11. package/bundled/review/references/posting.md +10 -4
  12. package/chunks/{MaxSizedBox-X5FZSNAJ.js → MaxSizedBox-X42SXBJH.js} +33 -35
  13. package/chunks/{StandaloneSessionPicker-AVLI6VJP.js → StandaloneSessionPicker-2FJAOLGG.js} +51 -53
  14. package/chunks/{acpAgent-MXEAN54C.js → acpAgent-2ZMIJAFV.js} +268 -186
  15. package/chunks/{agent-PJIPDWHB.js → agent-X5WX3L2I.js} +24 -26
  16. package/chunks/{agent-headless-B4JVD7UK.js → agent-headless-IZM25LJA.js} +24 -26
  17. package/chunks/{anthropicContentGenerator-HGMBACVE.js → anthropicContentGenerator-YVTB6QX7.js} +43 -47
  18. package/chunks/{artifact-tool-5YT4QF7Y.js → artifact-tool-XSMPHZBT.js} +9 -1
  19. package/chunks/{bridge-FKZTVIS3.js → bridge-ME6QXZNA.js} +37 -39
  20. package/chunks/{channel-management-service-X4AZ6IXX.js → channel-management-service-HQ6KDS7C.js} +6 -6
  21. package/chunks/{channel-settings-store-4UFCLBBG.js → channel-settings-store-PEOI7XCG.js} +47 -44
  22. package/chunks/{channel-worker-group-27HMGD5S.js → channel-worker-group-6NA6BBZV.js} +5 -5
  23. package/chunks/{channel-worker-manager-QEGX646Z.js → channel-worker-manager-NEZ2J6RK.js} +5 -5
  24. package/chunks/{channel-worker-supervisor-UEW2WWCC.js → channel-worker-supervisor-FKU7DIHJ.js} +4 -4
  25. package/chunks/{chunk-P5GGM4KS.js → chunk-2HYKTO7V.js} +3 -3
  26. package/chunks/{chunk-XDFHY4R3.js → chunk-2LNNVAUV.js} +2 -2
  27. package/chunks/{chunk-ZFKOCECU.js → chunk-2OBKDPZZ.js} +2 -2
  28. package/chunks/{chunk-3DXFGHAJ.js → chunk-2OUD5T67.js} +1 -1
  29. package/chunks/{chunk-EOGELB3H.js → chunk-2SXSLSQE.js} +1 -1
  30. package/chunks/{chunk-4JWNNLPT.js → chunk-2YOHKHYR.js} +2 -2
  31. package/chunks/{chunk-JU4EEXC7.js → chunk-36GSQ3MM.js} +2 -2
  32. package/chunks/chunk-36LGBEM6.js +130 -0
  33. package/chunks/{chunk-H2WDGQ6D.js → chunk-3JXM2CVW.js} +1 -1
  34. package/chunks/{chunk-G34IR3D6.js → chunk-3SZC4VP4.js} +26 -109
  35. package/chunks/{chunk-HVEYF6VT.js → chunk-3WK3QDNV.js} +1 -1
  36. package/chunks/{chunk-5XBFCMWD.js → chunk-3XKLXHGK.js} +17 -9
  37. package/chunks/{chunk-SFPGAQUL.js → chunk-42IDLQWS.js} +24 -18
  38. package/chunks/{chunk-43GGFFLY.js → chunk-4K7KNVWH.js} +1 -1
  39. package/chunks/{chunk-F6FV3C5K.js → chunk-4NDLQAY2.js} +24 -272
  40. package/chunks/{chunk-VVW4ZNFY.js → chunk-4QHPPXK2.js} +15 -7
  41. package/chunks/{chunk-IJKTMLBE.js → chunk-4TT3IVGA.js} +1 -1
  42. package/chunks/{chunk-C6K43ZDE.js → chunk-4VPCTGH6.js} +5 -5
  43. package/chunks/chunk-4VQBQLIZ.js +293 -0
  44. package/chunks/{chunk-OIVXBW3W.js → chunk-62GQFYID.js} +1 -1
  45. package/chunks/{chunk-BRVWYMKV.js → chunk-6MBXY6WM.js} +1 -1
  46. package/chunks/{chunk-AGR5UROZ.js → chunk-6X7EU5TI.js} +17 -29
  47. package/chunks/{chunk-PFCQ62V4.js → chunk-6ZPDLGHN.js} +6 -6
  48. package/chunks/{chunk-RIEFGNTP.js → chunk-734C6JGI.js} +207 -43
  49. package/chunks/{chunk-FBSSIAAQ.js → chunk-73RM4POK.js} +7 -7
  50. package/chunks/{chunk-KGJGEEVR.js → chunk-7FA2II6K.js} +10 -1
  51. package/chunks/chunk-7J6OTNGO.js +424 -0
  52. package/chunks/{chunk-O2UN57NX.js → chunk-7LOELM2I.js} +19 -2
  53. package/chunks/{chunk-DIMEPKCW.js → chunk-7S226YTK.js} +1 -1
  54. package/chunks/{chunk-CPGJJJLU.js → chunk-7T52W4SW.js} +1 -1
  55. package/chunks/{chunk-5O72BNDD.js → chunk-7VMIMAVB.js} +7 -7
  56. package/chunks/{chunk-XRSOI3DL.js → chunk-A3LWD5MK.js} +1 -1
  57. package/chunks/{chunk-F7TNAPZ4.js → chunk-AIAOIFY4.js} +5 -5
  58. package/chunks/{chunk-4CDSK5AZ.js → chunk-AYFA7MZV.js} +2 -2
  59. package/chunks/{chunk-3JGZSIDA.js → chunk-B466ZSHZ.js} +1 -1
  60. package/chunks/{chunk-L6BZRIUL.js → chunk-B5PHIJGI.js} +182 -4
  61. package/chunks/{chunk-3I6UTTDX.js → chunk-BKWNKLZB.js} +19 -19
  62. package/chunks/{chunk-3FDFA4MZ.js → chunk-BOWFGCEU.js} +1 -1
  63. package/chunks/{chunk-3AFMQUTI.js → chunk-C2X7KY45.js} +1 -1
  64. package/chunks/{chunk-FY76G3G5.js → chunk-C3PEFRKD.js} +4 -4
  65. package/chunks/{chunk-FDY5RMGH.js → chunk-CFJY4DGX.js} +1 -1
  66. package/chunks/{chunk-CCBZDVUA.js → chunk-CIZCL2MW.js} +33 -20
  67. package/chunks/{chunk-LDP5OD6N.js → chunk-CLWO3B77.js} +2 -2
  68. package/chunks/chunk-DJBQCO2E.js +842 -0
  69. package/chunks/{chunk-4J657AJR.js → chunk-DJECZIJX.js} +40 -40
  70. package/chunks/{chunk-F5SZP77N.js → chunk-DJEZ55D4.js} +71 -65
  71. package/chunks/{chunk-BAJKAAOY.js → chunk-DJPASAUV.js} +3840 -1055
  72. package/chunks/{chunk-RUGNCYNO.js → chunk-DMLVSW7L.js} +532 -22
  73. package/chunks/{chunk-4FTKQNWJ.js → chunk-DYXFD5RO.js} +181 -2
  74. package/chunks/{chunk-PDMJ3KGS.js → chunk-EB6QRGHM.js} +1 -1
  75. package/chunks/{chunk-DZWPESIF.js → chunk-EFWRMA2I.js} +3 -3
  76. package/chunks/{chunk-4MQEPP3Y.js → chunk-EQSBPBZ3.js} +5 -119
  77. package/chunks/{chunk-Z7TGYN5F.js → chunk-FROAFEFB.js} +2 -2
  78. package/chunks/{chunk-MZS7GEC7.js → chunk-FTF2YIZ5.js} +1 -1
  79. package/chunks/{chunk-Z7VOMGDC.js → chunk-FTJMWDND.js} +0 -24
  80. package/chunks/{chunk-43UYNAWX.js → chunk-G6FECKTJ.js} +2 -2
  81. package/chunks/{chunk-SJ3ZUWFK.js → chunk-GBJBJ4HX.js} +4 -4
  82. package/chunks/{chunk-IOPCFOTF.js → chunk-GPGU4S2N.js} +2 -2
  83. package/chunks/{chunk-6LFJEACX.js → chunk-GVIVASYK.js} +7 -7
  84. package/chunks/{chunk-Z4X5MTRT.js → chunk-HCOBAG2L.js} +2 -4
  85. package/chunks/{chunk-A7YP63XN.js → chunk-HP5LR5HL.js} +5 -5
  86. package/chunks/{chunk-7JPW6IYH.js → chunk-HVC3PNVC.js} +1 -1
  87. package/chunks/{chunk-TRZTNIQ6.js → chunk-I6LYRJPB.js} +2 -2
  88. package/chunks/{chunk-E55H6BZ7.js → chunk-ICURCKIU.js} +1335 -119
  89. package/chunks/{chunk-4HV6HH33.js → chunk-ISKH4QX3.js} +9 -9
  90. package/chunks/{chunk-WKK5BQNP.js → chunk-JHYH6PYQ.js} +43 -420
  91. package/chunks/{chunk-6IUNAPLR.js → chunk-K5KXUXWC.js} +1 -1
  92. package/chunks/{chunk-JHS74YAB.js → chunk-KID24ZFN.js} +1 -1
  93. package/chunks/{chunk-EFUM7RVY.js → chunk-KJO2LBUK.js} +942 -16
  94. package/chunks/{chunk-B7CDU2SL.js → chunk-KYWTPLBJ.js} +17 -20
  95. package/chunks/{chunk-JSHHYW6T.js → chunk-LHBUKJG2.js} +3 -3
  96. package/chunks/{chunk-P2SU6ZTI.js → chunk-LUEHOUHM.js} +1 -1
  97. package/chunks/{chunk-66KDY3LV.js → chunk-M3QRM3DE.js} +1 -1
  98. package/chunks/{chunk-V4QXXQJ2.js → chunk-MF7HCQWZ.js} +2 -2
  99. package/chunks/{chunk-W5MJJ2V7.js → chunk-MK2GIB46.js} +1 -1
  100. package/chunks/{chunk-Y6LSMB6J.js → chunk-MO3FC2WT.js} +1 -1
  101. package/chunks/{chunk-L6YT5H34.js → chunk-MPNBVAEU.js} +4 -4
  102. package/chunks/{chunk-CSMI4FP5.js → chunk-MSBO7X2W.js} +1 -1
  103. package/chunks/{chunk-5PA6UEYA.js → chunk-MZCJWS5Y.js} +1 -1
  104. package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
  105. package/chunks/{chunk-6LFTG244.js → chunk-NMOD2FXQ.js} +15 -5
  106. package/chunks/{chunk-KUX5D6DK.js → chunk-NV55WWD6.js} +11330 -10971
  107. package/chunks/{chunk-Q26AYA62.js → chunk-OU5APVWO.js} +2 -2
  108. package/chunks/{chunk-2K6ORIHJ.js → chunk-P2G476QN.js} +11 -11
  109. package/chunks/{chunk-OIP7C4FE.js → chunk-PADPMMYM.js} +4 -4
  110. package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
  111. package/chunks/{chunk-TGWAQ5RB.js → chunk-PZ66FRIC.js} +2071 -2124
  112. package/chunks/{chunk-7UYV53BC.js → chunk-Q2MSPKIJ.js} +1 -1
  113. package/chunks/{chunk-L2M46FP5.js → chunk-QYMAKPY5.js} +5 -5
  114. package/chunks/{chunk-JVPFTDBK.js → chunk-RFIDDFAL.js} +1 -1
  115. package/chunks/chunk-SEONHUS3.js +275 -0
  116. package/chunks/{chunk-ZGXYO7DY.js → chunk-SS4MRMKE.js} +122 -13
  117. package/chunks/{chunk-T32W2JHI.js → chunk-SS5SDCD3.js} +2 -2
  118. package/chunks/{chunk-3SGB2UHX.js → chunk-ST5MDGH3.js} +23 -11
  119. package/chunks/{chunk-MIIVI25Q.js → chunk-ST5V3ZOC.js} +2 -2
  120. package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
  121. package/chunks/{chunk-TWSKM647.js → chunk-T7KMERIX.js} +1 -1
  122. package/chunks/{chunk-77RG5SFQ.js → chunk-TEBDFQBZ.js} +1 -1
  123. package/chunks/{chunk-6CGL7E7G.js → chunk-TVC6HQ2U.js} +2 -2
  124. package/chunks/{chunk-BBWV7ONL.js → chunk-TZBSGJ6C.js} +6 -6
  125. package/chunks/{chunk-T3WXYEZ4.js → chunk-U54AYGEC.js} +38 -5
  126. package/chunks/{chunk-JCQD3INC.js → chunk-URE3QBBB.js} +1 -1
  127. package/chunks/{chunk-Y3QL45LS.js → chunk-V4264FEG.js} +8 -8
  128. package/chunks/{chunk-KEKZFOL6.js → chunk-V7EESTJV.js} +1 -1
  129. package/chunks/{chunk-R4PMVSR5.js → chunk-VBCPNIQD.js} +18 -20
  130. package/chunks/{chunk-RJC5EIKY.js → chunk-VGIFXISB.js} +3 -3
  131. package/chunks/{chunk-Z7FLBQPR.js → chunk-W3JH33JE.js} +7 -7
  132. package/chunks/{chunk-K2NQPH5D.js → chunk-WGY3AVGM.js} +3 -3
  133. package/chunks/{chunk-PKAYJDB3.js → chunk-WNPDGUJO.js} +21 -2
  134. package/chunks/{chunk-IZIVM7LZ.js → chunk-WXEA74YB.js} +1 -1
  135. package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
  136. package/chunks/{chunk-IK5BW3CS.js → chunk-XHF7WQ6B.js} +2 -2
  137. package/chunks/{chunk-2NYCN6F2.js → chunk-XSG6G3G6.js} +43 -26
  138. package/chunks/{chunk-HVQ3B7FF.js → chunk-Y5S7LBOZ.js} +43 -6
  139. package/chunks/{chunk-LXIBMVRN.js → chunk-YLSQLSH7.js} +13 -7
  140. package/chunks/{chunk-JSC3H3TD.js → chunk-ZEYFMJQA.js} +14 -6
  141. package/chunks/chunk-ZWJDJ6RU.js +2597 -0
  142. package/chunks/{chunk-QP4C6WCE.js → chunk-ZYMLPEZQ.js} +2 -2
  143. package/chunks/{chunk-BNMF3K5X.js → chunk-ZZMSC3RG.js} +52 -36
  144. package/chunks/{chunk-XDLEZ5HX.js → chunk-ZZUKP7HV.js} +1 -1
  145. package/chunks/{config-utils-BBOCOGZW.js → config-utils-R6M3TA34.js} +39 -39
  146. package/chunks/{contextCommand-EET67MQ2.js → contextCommand-ZCAP23J6.js} +36 -38
  147. package/chunks/{core-runtime-677KFX6Q.js → core-runtime-AXB6SK5D.js} +41 -43
  148. package/chunks/{create-sub-session-JKZAYZX7.js → create-sub-session-4QNE64MR.js} +34 -36
  149. package/chunks/{daemon-MJQUO7RA.js → daemon-3GNHB3M2.js} +495 -7
  150. package/chunks/{daemon-git-worktree-guard-6MVAAZZZ.js → daemon-git-worktree-guard-IVAJJWYK.js} +33 -35
  151. package/chunks/{daemon-status-provider-RFKZOK3S.js → daemon-status-provider-K3SJ5C2U.js} +42 -44
  152. package/chunks/{daemon-trust-policy-DRZPFB4Q.js → daemon-trust-policy-DOR3YG62.js} +41 -43
  153. package/chunks/{daemon-trust-policy-monitor-B5U6TQX5.js → daemon-trust-policy-monitor-KGGROSIV.js} +41 -43
  154. package/chunks/{deferred-core-runtime-BBVIOP24.js → deferred-core-runtime-WOYLUQQ7.js} +33 -35
  155. package/chunks/{dist-DJBNNPLN.js → dist-4WXLCBDR.js} +1 -1
  156. package/chunks/{dist-TJUDJTCB.js → dist-5VXFRTWU.js} +280 -48
  157. package/chunks/{dist-QODVOVWI.js → dist-6BPYWHVD.js} +31 -30
  158. package/chunks/{dist-ZBVOXSKF.js → dist-GFN5DCBX.js} +74 -65
  159. package/chunks/{dist-SATKXKUR.js → dist-HZNT6GQS.js} +1 -1
  160. package/chunks/{dist-ILDBUWDB.js → dist-LVZCXVPF.js} +1 -1
  161. package/chunks/{dist-7CKN54NL.js → dist-N6W6E753.js} +71 -64
  162. package/chunks/{dist-4Q7NTUNB.js → dist-NSV4NBPK.js} +31 -14
  163. package/chunks/{dist-UQUFZDIY.js → dist-SWQMYP2Q.js} +18 -16
  164. package/chunks/{earlyInputCapture-2JOMMNQ4.js → earlyInputCapture-OHBEVO4K.js} +33 -35
  165. package/chunks/{edit-BSV6YRVW.js → edit-LEQLAGPZ.js} +24 -26
  166. package/chunks/{enter-worktree-MQXFFPKM.js → enter-worktree-35QCAAFP.js} +3 -3
  167. package/chunks/{enterPlanMode-PKNF35FE.js → enterPlanMode-ONQN3WHE.js} +27 -29
  168. package/chunks/{environment-MOZMPUHR.js → environment-UANTR7A4.js} +37 -39
  169. package/chunks/{errors-DMPQVYJL.js → errors-WAK6KFBC.js} +36 -38
  170. package/chunks/{exit-worktree-L344UY7K.js → exit-worktree-XQD6D543.js} +3 -3
  171. package/chunks/{exitPlanMode-UE4FGCY4.js → exitPlanMode-UEYBG6P5.js} +24 -26
  172. package/chunks/{fast-path-773PV7PU.js → fast-path-WUL7UZ6H.js} +4 -4
  173. package/chunks/{fast-path-settings-XMFBYFUH.js → fast-path-settings-XH426LUU.js} +3 -3
  174. package/chunks/{glob-CZHOWUEA.js → glob-Y54QUWDY.js} +24 -26
  175. package/chunks/{goal-tools-YZQJXTGH.js → goal-tools-PTD3MBA7.js} +2 -1
  176. package/chunks/{handleAutoUpdate-SGXKTQM6.js → handleAutoUpdate-FP3NWNSG.js} +37 -39
  177. package/chunks/{i18n-B42HKHKH.js → i18n-INIU5X7A.js} +35 -37
  178. package/chunks/{image-gen-HAYOEQ4O.js → image-gen-J6FDGUZP.js} +4 -6
  179. package/chunks/{initializer-FB66WYR3.js → initializer-TYODV6GE.js} +41 -43
  180. package/chunks/{installationInfo-Y7AULNMX.js → installationInfo-AAPKYDSZ.js} +33 -35
  181. package/chunks/{list-2HWGSVRA.js → list-TUODDN6J.js} +44 -46
  182. package/chunks/{gemini-IP4FJAP5.js → llm-NSAVK5V3.js} +84 -82
  183. package/chunks/{geminiContentGenerator-PUNEBWJW.js → llm-content-generator-AY2QKXHE.js} +25 -25
  184. package/chunks/{loadedSettingsAdapter-7Y7IEI6T.js → loadedSettingsAdapter-KJCLZ3C4.js} +41 -43
  185. package/chunks/{loggingContentGenerator-2GGZNGLG.js → loggingContentGenerator-DSFQHXIF.js} +305 -27
  186. package/chunks/{managed-npm-update-5TEV2E3J.js → managed-npm-update-TSWENTK5.js} +33 -35
  187. package/chunks/{mcp-QGG5NMJJ.js → mcp-MWSAPFOL.js} +41 -43
  188. package/chunks/{monitor-FI7PY36Z.js → monitor-RW4GWJHB.js} +24 -26
  189. package/chunks/{nonInteractiveCli-4LO2TL72.js → nonInteractiveCli-JXKL343Q.js} +77 -78
  190. package/chunks/{notebook-edit-TPGMGBST.js → notebook-edit-CQNYS5OR.js} +24 -26
  191. package/chunks/{open-with-auth-4UI3KHUR.js → open-with-auth-YN3QZHVM.js} +1 -1
  192. package/chunks/{openaiContentGenerator-SUCYANUZ.js → openaiContentGenerator-J6QIF7EX.js} +13 -15
  193. package/chunks/{pidfile-JMF2CLMY.js → pidfile-QOIQZFT2.js} +33 -35
  194. package/chunks/process-registry-OAEG6WGC.js +662 -0
  195. package/chunks/{processUtils-IQZBYWSB.js → processUtils-GPHNANKZ.js} +2 -2
  196. package/chunks/{prompt-terminal-ledger-DCZO6S7C.js → prompt-terminal-ledger-FOMFTYOM.js} +34 -36
  197. package/chunks/{qwenContentGenerator-J4TXFGJT.js → qwenContentGenerator-WWDXPYQI.js} +28 -30
  198. package/chunks/{qwenOAuth2-RF33DNZW.js → qwenOAuth2-OF5WRBQT.js} +4 -6
  199. package/chunks/{read-file-QE2B5FTX.js → read-file-FQUQHC6N.js} +5 -5
  200. package/chunks/{record-artifact-RZGZBENU.js → record-artifact-VW23GS4F.js} +2 -2
  201. package/chunks/{report-findings-Q3SYKKW5.js → report-findings-AO5VYFLR.js} +7 -3
  202. package/chunks/{resumeHistoryUtils-CZ4JRDVW.js → resumeHistoryUtils-NSGF3UCB.js} +37 -39
  203. package/chunks/{ripGrep-R6B6HWPX.js → ripGrep-4CAT6SKV.js} +7 -7
  204. package/chunks/{run-qwen-serve-TPHZMSXJ.js → run-qwen-serve-5X6IDZER.js} +271 -86
  205. package/chunks/{runtime-TTIGSBM4.js → runtime-HK27GMPF.js} +46 -48
  206. package/chunks/{scheduled-tasks-QB4ZVUQS.js → scheduled-tasks-MN2ZZ5P6.js} +39 -41
  207. package/chunks/{scheduler-YRUG22M7.js → scheduler-WD4MHMO5.js} +35 -37
  208. package/chunks/{sdk-exporters-http-KCJ4ZFG7.js → sdk-exporters-http-TTU2CHBU.js} +1 -1
  209. package/chunks/{sdk-impl-HLSEDAEP.js → sdk-impl-UUMVYMAL.js} +10 -4
  210. package/chunks/{send-message-Y5I6NYAM.js → send-message-AJ4OCUBV.js} +18 -2
  211. package/chunks/{serve-MXXCDAQN.js → serve-2XCHPPGG.js} +41 -43
  212. package/chunks/{server-DFUSSSHI.js → server-GO2N5DH7.js} +4148 -3348
  213. package/chunks/{session-3TEHNENZ.js → session-IFNHTUBT.js} +81 -82
  214. package/chunks/session-pr-refresh-I3UBWMVP.js +364 -0
  215. package/chunks/{settings-VOZYKLTT.js → settings-L6N54CU6.js} +40 -42
  216. package/chunks/{shell-6RTKZVMI.js → shell-4Y5LLW6N.js} +24 -26
  217. package/chunks/{skill-FEOKFX26.js → skill-YOWTRAKQ.js} +58 -14
  218. package/chunks/{skill-settings-VA4XVYVL.js → skill-settings-ZL4JY5UE.js} +41 -43
  219. package/chunks/{spawnChannel-F6WVP723.js → spawnChannel-ZST6XJVJ.js} +35 -37
  220. package/chunks/{standalone-update-RGILUQVK.js → standalone-update-THVU3OKY.js} +36 -38
  221. package/chunks/{startInteractiveUI-WHJPFOGH.js → startInteractiveUI-XDFSHBZD.js} +401 -334
  222. package/chunks/{stdioHelpers-7A2EE64Z.js → stdioHelpers-AY6XCDY2.js} +3 -1
  223. package/chunks/{task-create-TMSV7RD5.js → task-create-QN4LYRSE.js} +3 -3
  224. package/chunks/{task-list-W55RBFRX.js → task-list-JPLGK45U.js} +2 -2
  225. package/chunks/{task-update-N536I4GQ.js → task-update-IWEOJFV2.js} +3 -3
  226. package/chunks/{team-create-QYSWCYCL.js → team-create-OOPXCDBA.js} +24 -26
  227. package/chunks/{team-delete-FJRFX33M.js → team-delete-RZVVSGCY.js} +2 -2
  228. package/chunks/{team-plan-approval-P7DAD644.js → team-plan-approval-DSX5EWAT.js} +24 -26
  229. package/chunks/{terminal-image-renderer-SMQE46UJ.js → terminal-image-renderer-KS25G33E.js} +33 -35
  230. package/chunks/{theme-manager-RFO5WWFF.js → theme-manager-YMZNG45F.js} +33 -35
  231. package/chunks/{tool-search-F2EMIAPV.js → tool-search-J5Q6U7DN.js} +9 -9
  232. package/chunks/{total-session-admission-HTVTP4BS.js → total-session-admission-PVN64JVV.js} +37 -39
  233. package/chunks/{trustedFolders-7OCNMUQE.js → trustedFolders-FATSC4YI.js} +35 -37
  234. package/chunks/{types-WYCFCEHR.js → types-HKLPXZB3.js} +1 -3
  235. package/chunks/{update-relaunch-4GF3OXMB.js → update-relaunch-SIKHLHVR.js} +6 -6
  236. package/chunks/{updateCheck-7QBDXZRT.js → updateCheck-D3YG2WCD.js} +36 -38
  237. package/chunks/{useAutoAcceptIndicator-UI4SNL2O.js → useAutoAcceptIndicator-ILINOSAS.js} +43 -45
  238. package/chunks/{validateNonInterActiveAuth-BPPA563H.js → validateNonInterActiveAuth-JUDQP6V4.js} +74 -75
  239. package/chunks/{version-ANP4TS6O.js → version-C63GDDWN.js} +1 -1
  240. package/chunks/{web-fetch-QJADSAH3.js → web-fetch-FOQZMNSC.js} +8 -10
  241. package/chunks/{web-search-7TTQKEKM.js → web-search-PUJTBFUC.js} +5 -7
  242. package/chunks/{web-shell-static-A6QMUNNV.js → web-shell-static-HNB4FDOE.js} +2 -2
  243. package/chunks/{workflow-5XN6XSOT.js → workflow-Y5IPINVH.js} +47 -58
  244. package/chunks/{workspace-providers-status-PDFZWL5Q.js → workspace-providers-status-IJ4VHFMB.js} +45 -47
  245. package/chunks/{workspace-registration-store-XKVW2YVH.js → workspace-registration-store-SMJWI2AI.js} +1 -1
  246. package/chunks/{workspace-registry-23R7XRB5.js → workspace-registry-BTGZIMPK.js} +37 -39
  247. package/chunks/{workspace-service-MUYO2QIC.js → workspace-service-SIN67ITC.js} +46 -51
  248. package/chunks/{workspace-skills-status-IKECTOOQ.js → workspace-skills-status-F3RKCUIX.js} +44 -46
  249. package/chunks/{workspace-trust-reconciler-KLGOB53D.js → workspace-trust-reconciler-PLIDLJZX.js} +45 -47
  250. package/chunks/{write-file-GGRBB5TZ.js → write-file-PAIGB33C.js} +26 -28
  251. package/chunks/{zoom-image-6ASG6J4C.js → zoom-image-LYQD7BQA.js} +5 -5
  252. package/cli.js +14 -14
  253. package/package.json +3 -3
  254. package/web-shell/assets/{abnfDiagram-VCTEODGH-uS-vtfs3.js → abnfDiagram-VCTEODGH-TRCMSA_6.js} +1 -1
  255. package/web-shell/assets/{arc-BSTnk5pu.js → arc-D9Uls5b3.js} +1 -1
  256. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DCMyiqzy.js → architectureDiagram-5GKGNRK7-Bwb8jPXg.js} +1 -1
  257. package/web-shell/assets/{blockDiagram-NRAW4CY4-C7_gt0r1.js → blockDiagram-NRAW4CY4-DHj71TSX.js} +1 -1
  258. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BeQg2L8B.js → c4Diagram-UCG6FXSJ-uKBBdbyr.js} +1 -1
  259. package/web-shell/assets/channel-CXjVLaBa.js +1 -0
  260. package/web-shell/assets/{chunk-2Q5K7J3B-DnV9bKBe.js → chunk-2Q5K7J3B-BZd0Phrl.js} +1 -1
  261. package/web-shell/assets/{chunk-5VM5RSS4-rT1GAcT7.js → chunk-5VM5RSS4-7KNeNBqN.js} +1 -1
  262. package/web-shell/assets/{chunk-F27PBJKO-BcgSxqGA.js → chunk-F27PBJKO-BeboS7Fi.js} +1 -1
  263. package/web-shell/assets/{chunk-G27WJ6UU-Bw1ZhyZq.js → chunk-G27WJ6UU-RV3JONoj.js} +1 -1
  264. package/web-shell/assets/{chunk-JWPE2WC7-D4iDw-96.js → chunk-JWPE2WC7-Yw9FCFsP.js} +1 -1
  265. package/web-shell/assets/{chunk-LCL6LL3I-D3MB3GTZ.js → chunk-LCL6LL3I-GIMnydDe.js} +1 -1
  266. package/web-shell/assets/{chunk-POPQ4Y6H-Cep2ndrS.js → chunk-POPQ4Y6H-Cfrux7bL.js} +1 -1
  267. package/web-shell/assets/{chunk-SVP7TREG-BuahMHJc.js → chunk-SVP7TREG-BlvIN0CO.js} +1 -1
  268. package/web-shell/assets/{chunk-XXDRQBXY-BdujIvJY.js → chunk-XXDRQBXY-DMs7Rr4t.js} +1 -1
  269. package/web-shell/assets/classDiagram-DTDB5LWJ-DANEijO3.js +1 -0
  270. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DANEijO3.js +1 -0
  271. package/web-shell/assets/{cose-bilkent-JH36ORCC-CGLLUbF8.js → cose-bilkent-JH36ORCC-DNGqTNwI.js} +1 -1
  272. package/web-shell/assets/{cynefin-OW5HDTMX-D6kDsRSh.js → cynefin-OW5HDTMX-CojMpaoH.js} +1 -1
  273. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-CCy78qZx.js → cynefinDiagram-5FMLGOSQ-DF07YXGo.js} +1 -1
  274. package/web-shell/assets/{dagre-3AP2YEHR-D5gJuJsf.js → dagre-3AP2YEHR-17-4WtCH.js} +1 -1
  275. package/web-shell/assets/{diagram-S7CK7UJ4-ZwEZ5W__.js → diagram-S7CK7UJ4-G3Wuyz9m.js} +1 -1
  276. package/web-shell/assets/{diagram-UQ7AKVKN-B036APjv.js → diagram-UQ7AKVKN-nyWIKZ8P.js} +1 -1
  277. package/web-shell/assets/{diagram-VSXAHHWV-BfDJ57Fq.js → diagram-VSXAHHWV-tKHhmYSC.js} +1 -1
  278. package/web-shell/assets/{diagram-VX7I27RA-Wha0p5rT.js → diagram-VX7I27RA-CpDf1hYk.js} +1 -1
  279. package/web-shell/assets/{diagram-Z3DM3KII-L20bz2K1.js → diagram-Z3DM3KII-Cah2IFXG.js} +1 -1
  280. package/web-shell/assets/{ebnfDiagram-PWID7BFC-D1ZM0Cp7.js → ebnfDiagram-PWID7BFC-DNaCkgxy.js} +1 -1
  281. package/web-shell/assets/{erDiagram-SSCWMZ5O-CMtA19v8.js → erDiagram-SSCWMZ5O-CAdRgcf1.js} +1 -1
  282. package/web-shell/assets/{flowDiagram-A5DVABFB-D96m326S.js → flowDiagram-A5DVABFB-CMUJAShL.js} +1 -1
  283. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BuHiYG2o.js → ganttDiagram-EL5Y4UJY-o-_MUNey.js} +1 -1
  284. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Ck3NmkSw.js → gitGraphDiagram-WWUBYQGX-_aG-2Z7O.js} +1 -1
  285. package/web-shell/assets/{index-CBGz4Qjl.js → index-BK_NKxiJ.js} +1 -1
  286. package/web-shell/assets/index-Ci-z4zWY.js +1913 -0
  287. package/web-shell/assets/index-LDlXZRHA.css +36 -0
  288. package/web-shell/assets/{infoDiagram-RXCK75RN-B6DAOyXe.js → infoDiagram-RXCK75RN-qJPeZbGP.js} +1 -1
  289. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-Bpg-joFo.js → ishikawaDiagram-5VMMS53U-7Om4vNo1.js} +1 -1
  290. package/web-shell/assets/{journeyDiagram-EYS64GPL-BclrHzGa.js → journeyDiagram-EYS64GPL-BNtXqmBW.js} +1 -1
  291. package/web-shell/assets/{kanban-definition-3QL26DDD-5gJzNTYG.js → kanban-definition-3QL26DDD-COgFec8P.js} +1 -1
  292. package/web-shell/assets/{layout-CEz_1L8z.js → layout-B9n81PC9.js} +1 -1
  293. package/web-shell/assets/{linear-CBjTq9Hc.js → linear-Bb6nXZQq.js} +1 -1
  294. package/web-shell/assets/{mermaid.core-Dzhbxx_I.js → mermaid.core-Cgrm3JVT.js} +6 -6
  295. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DQdVqlBF.js → mindmap-definition-FBJOCRG2-TKwLTjnG.js} +1 -1
  296. package/web-shell/assets/{pegDiagram-XKGWAZYB-D1JZlYXL.js → pegDiagram-XKGWAZYB-BJPuvlpi.js} +1 -1
  297. package/web-shell/assets/{pieDiagram-E7YTZNPT-BmkpYL0w.js → pieDiagram-E7YTZNPT-D01VkNsW.js} +1 -1
  298. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-DRvD6co5.js → quadrantDiagram-AXDQQJYC-C4hHsiv-.js} +1 -1
  299. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CEdjDuoo.js → railroadDiagram-O6MQD6OU-CuEO4xK2.js} +1 -1
  300. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BCHG-ie8.js → requirementDiagram-EFPCY7ZU-D5J_vIo5.js} +1 -1
  301. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C9cZMnye.js → sankeyDiagram-P5KCCOFB-DQKY223V.js} +1 -1
  302. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DYHRV4zL.js → sequenceDiagram-WJ2MYXX4-D27YV_cm.js} +1 -1
  303. package/web-shell/assets/{sizeCapture-X5ZJPWSS-DlK21aye.js → sizeCapture-X5ZJPWSS-TJg8UcwV.js} +1 -1
  304. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BrmZssvk.js → stateDiagram-HBIQ2CUA-CmnPzUIx.js} +1 -1
  305. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DNKPyrDc.js +1 -0
  306. package/web-shell/assets/{swimlanes-XN3QIQJK-D9xfcayR.js → swimlanes-XN3QIQJK-ByeP3_Nu.js} +1 -1
  307. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-ZL1HPC6w.js +8 -0
  308. package/web-shell/assets/{timeline-definition-24CTP7MA-D4gdDL_d.js → timeline-definition-24CTP7MA-BsFA5juR.js} +1 -1
  309. package/web-shell/assets/{vennDiagram-4TSXK5OY-DdhIExjI.js → vennDiagram-4TSXK5OY-DREP2ECo.js} +1 -1
  310. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9RS_Zof.js → wardleyDiagram-VM6X3IG4-iyd9lKi2.js} +1 -1
  311. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-orRgmxWk.js → xychartDiagram-S5SC5T6Z-CVr1_j9q.js} +1 -1
  312. package/web-shell/index.html +3 -3
  313. package/chunks/chunk-7DJCPZE3.js +0 -945
  314. package/chunks/chunk-J2OSJFP3.js +0 -202
  315. package/chunks/chunk-K2OJUPOE.js +0 -78
  316. package/chunks/chunk-P3QQPMQA.js +0 -19
  317. package/chunks/process-registry-PMJOA5CO.js +0 -172
  318. package/web-shell/assets/channel-CENAhErJ.js +0 -1
  319. package/web-shell/assets/classDiagram-DTDB5LWJ-CM6FArGH.js +0 -1
  320. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CM6FArGH.js +0 -1
  321. package/web-shell/assets/index-8hXIpvo4.js +0 -1865
  322. package/web-shell/assets/index-DclEv91i.css +0 -5
  323. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B2Q7XDaE.js +0 -1
  324. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DpZPOSbX.js +0 -8
@@ -13,7 +13,7 @@ Save the review results to a Markdown file for future reference:
13
13
 
14
14
  - Local changes review → `.qwen/reviews/<YYYY-MM-DD>-<HHMMSS>-local.md`
15
15
  - PR review → `.qwen/reviews/<YYYY-MM-DD>-<HHMMSS>-pr-<number>.md`
16
- - File review → `.qwen/reviews/<YYYY-MM-DD>-<HHMMSS>-<filename>.md`
16
+ - File review → `.qwen/reviews/<YYYY-MM-DD>-<HHMMSS>-<target>.md` (`<target>` is the capture's published token — the plan's `target` field, never the raw filename: `qwen review run` pins the saved report against that same token, and a bare filename agrees with it only at the repo root, which is why the drift went unnoticed). When `<target>` itself ends in `.md`, the name ENDS at `<target>` — do not double the extension: `qwen review run`'s report pin for such targets matches `…-<target>` with no second `.md`, so a doubled `…<target>.md` name silently loses the run's `Report:` line
17
17
 
18
18
  Include hours/minutes/seconds in the filename to avoid overwriting on same-day re-reviews.
19
19
 
@@ -74,6 +74,8 @@ The JSON helper is fail-closed because it carries the authoritative review resul
74
74
 
75
75
  If reviewing a PR **at high effort**, update the review cache for incremental review support. Low and medium reviews must NOT write it, and neither must a `--topology minimal` run at any effort — a cache hit would make a later high-effort review of the same SHA report "No new changes since last review", silently converting a cheaper pass into a full-review verdict.
76
76
 
77
+ **A local or file-path review at high effort writes its cache the same way, from the capture's candidate.** **Before promoting, CHECK the candidate is this round's own:** read the file at the plan's `cacheCandidatePath` and compare its `stateId` to the plan's `cacheCandidateStateId` — the path is stable per target and local/file reviews take no lease, so a concurrent same-target run overwrites the file mid-round, and promoting the foreign candidate would anchor the next round's "no changes" to a tree this round never reviewed. A mismatch (or an absent `cacheCandidateStateId` field on a plan that published a path) is treated exactly like a withheld candidate: skip the cache write and say so. `capture-local` wrote this round's content anchor to the plan's `cacheCandidatePath` (`.qwen/tmp/qwen-review-<target>-cache-candidate.json`): the hashed per-file state and HEAD of exactly what was captured, deterministic, not yours to recompute. Read that file, add the ledger fields — `lastReviewDate`, `round`, `findingsCount`, `verdict`, and `findings[]` under the same id-carrying rules as the PR cache below — and write the merged object to the path the capture named in its plan, `cachePath` — **read that field, do not compute the name**, for the reason the incremental bullet in Step 1 gives: `target` is derived inside the command and `safeTarget` is not hand-reproducible. **The fail-closed conditions here are keyed to the PR cache's marker rule below — one definition, read twice.** Do NOT apply that rule's literal CHECK here: it keys on a `sha` inside the posted review's `qwen-review-ledger` marker, and a local round posts nothing and has no marker to read — a literal check would skip this write on every round and the feature would never persist. What this write takes from that rule is its WITHHOLDING CONDITIONS, applied as conditions on this round's own caps. For a local or file-path round the rule is a POSITIVE one, deliberately — and its fail-closed half is deliberately NOT a list: the list that lived here was "completed" three times, and each time a fourth shape walked through it (the last one an Uncoverable chunk and a whiffed lens, which withheld the PR marker's `sha` but never this write). **Write the cache only when every Critical this round raised carries a confirmed disposition: fixed, or confirmed-standing and recorded in `findings[]` under an id — and skip this write under any condition that would withhold the PR marker's `sha` in the rule below, plus the one local-only condition the marker cannot see: a non-empty `skippedFiles` in the capture (skipped content is in no diff and no hash).** At the time of writing those conditions are: `cannotTellCriticals` (a verifier that returned CANNOT-TELL, or a deadline stop or timed-out batch that never returned one), an Uncoverable chunk, the context-unavailable state, `scopeUnproven` (a chunk nobody read, an idle or blind agent), a finding still marked `— [unverified]`, the deterministic gates, and any `unreviewedDimensions` entry other than a depth-only build-and-test one (a whiffed lens withholds the marker's `sha`, so it withholds this write). The examples are the set as written, not the gate: the gate is the marker paragraph's withholding set — if it changes, this write changes with it, because a second hand-copied list here is how they drifted once already. Anything else withholds the candidate and says so. The reason is one reason, and it is why the rule is stated as a rule: the anchor's whole claim is "the next round may skip this", and a claim nobody ruled on is exactly what the next round must not skip — the round after it stops decided over a Critical that was never verified: skipped content is in no diff and no hash, so a candidate promoted over it would anchor the next round's "no changes" past work this round could not read. A run that ended with unreviewed or undecided scope skips this write and says so, because the candidate would anchor the next round's skip past scope nobody reviewed. (A capture that detected a mid-capture tree change — or a tracked path carrying a visibility bit, or an enumeration of them that failed — withholds the candidate itself and says so; then there is nothing to promote.) Low and medium local reviews must NOT write it, for the PR cache's exact reason.
78
+
77
79
  **The cache advances exactly when the marker anchored — read the marker, do not re-derive the net.** `compose-review` already computed whether this round may certify a range: its posted body's ledger marker carries a `sha` on a clean round and withholds it otherwise (unproven coverage, an undecided blocker, any cap other than a depth-only `unreviewed-dimension` — where depth-only means every entry names the build-and-test dimension or is the machine's own relayed stop entry; a whiffed LENS in that field withholds). The cache and the marker must never disagree about what a clean round is, and a hand-copied condition list here is how they drifted once already — the list in this paragraph aged out of sync with the module and told a whiffed-lens round to cache the sha the marker had refused. So the rule is mechanical: **write `lastCommitSha` into the cache only if the composed body's marker carries a `sha`** (check the composed JSON's body for `"sha"` inside the `qwen-review-ledger` comment); when it does not, **skip the cache write entirely and say so in the terminal output**. Caching this SHA would scope the next high-effort run to `lastCommitSha..HEAD` — or, worse, let the same-SHA shortcut report "No new changes since last review" and skip the run outright, Step 6 re-check included: a whiffed Security lens at SHA A followed by an incremental review at SHA B means no run ever reviews A's diff for security, and an existing blocker this run could only mark `cannot tell` would never be re-checked at the same SHA, while the cached verdict reads as full coverage. Leave the previous cache entry in place (or none), so the next high-effort run re-covers the whole range — re-detecting any uncoverable chunk and re-ruling on any undecided blocker, keeping both disclosures alive:
78
80
 
79
81
  1. Create `.qwen/review-cache/` directory if it doesn't exist
@@ -82,7 +84,7 @@ If reviewing a PR **at high effort**, update the review cache for incremental re
82
84
  ```json
83
85
  {
84
86
  "lastCommitSha": "<HEAD SHA captured in Step 1>",
85
- "lastModelId": "<your model id — the YOUR_MODEL_ID value declared at the top of the skill prompt>",
87
+ "lastModelId": "<reviewModelId from the fetch report copied verbatim>",
86
88
  "lastReviewDate": "<ISO timestamp>",
87
89
  "round": <N — 1 on a first review, previous round + 1 after>,
88
90
  "findingsCount": <number>,
@@ -100,6 +102,8 @@ If reviewing a PR **at high effort**, update the review cache for incremental re
100
102
  }
101
103
  ```
102
104
 
103
- The cache is the FALLBACK copy of the ledger — the authoritative one rides the posted review body itself: `compose-review` embeds a machine-readable marker (an HTML comment, invisible on the PR page) carrying this round's findings, round number, and — when the run ended clean — the reviewed head `sha`, and the next round's `pr-context` reads it back wherever it runs. The `sha` is what lets a fresh environment recover BOTH halves of incremental review, the work list and the anchor (Step 1's recovered-anchor check), where the cache could only ever serve the machine that wrote it. It is withheld under the fail-closed conditions that skip this cache write **and under every cap `compose-review` computes itself except `unreviewed-dimension`** — `cannotTellCriticals`, `uncoverableChunks`, the context-unavailable state, `scopeUnproven` (coverage the module could not prove — a chunk nobody read, an idle or blind agent), findings still `— [unverified]`, the deterministic gates because an anchor written past unread scope would let the next round's incremental range skip it forever: a fail-closed round still posts its findings; it just never certifies a range. The wider net is measured, not cautionary: gated on the input fields alone, a round the module itself stamped "could not certify that any of this diff was reviewed" still carried the anchor. **`unreviewedDimensions` is the deliberate exception, and it is measured too**: it is prose about DEPTH "the integration suite CI skipped did not run locally" is true of every round on a repo whose suites do not fit `build-test`'s whole-call budget — so gating on it closed a loop with no exit, where an untestable dimension capped the verdict, the cap withheld the anchor, and the missing anchor made the next round re-review the full diff of a PR that had not changed a line (measured: PR #9113 round 2, 119 minutes, 34M input tokens). A dimension nobody could run says nothing about WHICH LINES were read, and the anchor's only claim is about lines. A run that posts therefore persists its ledger even when this cache write is skipped; a run that does not post has only this cache, which is exactly why the cache remains. The `findings` ledger is what lets the **next** run open with "R1-2 is fixed" instead of a from-scratch list (see Step 6's previous-round section). Write every **newly confirmed high-confidence** finding under a fresh `R<round>-<n>` id, and carry a still-standing previous entry forward **under the id it already has** — the whole payoff is that `R1-2` names the same claim in every round, so a finding that survives is re-reported, never renumbered while a finding ruled `fixed` this round leaves the ledger (the report said so; the cache is for what the next round must check, not history). Low-confidence and terminal-only findings stay out: the ledger holds claims this review stands behind, because next round re-asserts each one by id. Findings the convergence posture deferred stay out the same way — carrying them as ledger work would hand the next round the very re-ruling the posture exists to end. Their durable record on the PR is the POSTED deferral list (up to 20 entries; the body's overflow count names how many more) — and it is **not guaranteed**: the list is the first section the body budget trims, so an overflowing body can carry none of it. The findings artifact carries each deferred finding's full content under its `D<round>-<n>` id but no structured deferred marker yet, and the run report is machine-local — so an entry past the rendered cap, or in a list the budget trimmed, has no cross-round record on the PR at all. Keep the deferral list within its cap by collapsing families first (the bounded/unbounded rule) rather than deferring twenty-plus point findings; when the budget trims it, the terminal summary is where the author's copy comes from.
105
+ `lastModelId` is COPIED, not typed: it is the fetch report's `reviewModelId` the provider-qualified identity (`<model>@<digest>`) the CLI sampled at the round's start, the same string the next round's same-model gate compares against. The skill prompt's own model token (`YOUR_MODEL_ID`, the value the loader declares) is the BARE model id, which is not the same kind of string: a cache written with it fails the gate as `cross-model-anchor` on every later round and never heals — every round rewrites the cache with the same bare id — so cache-path incremental scoping and the `upToDate` stop die for every PR, and a run that does not post loses the anchor entirely. When the fetch report carries NO `reviewModelId` (the runtime published no identity), omit the `lastModelId` field entirelydo not substitute anything; Step 1 then omits `--since-model` and the gate fails closed to a full review, the correct state for an unrecorded identity.
106
+
107
+ The cache is the FALLBACK copy of the ledger — the authoritative one rides the posted review body itself: `compose-review` embeds a machine-readable marker (an HTML comment, invisible on the PR page) carrying this round's findings, round number, and — when the run ended clean — the reviewed head `sha`, and the next round's `pr-context` reads it back wherever it runs. The `sha` is what lets a fresh environment recover BOTH halves of incremental review, the work list and the anchor (Step 1's recovered-anchor check), where the cache could only ever serve the machine that wrote it. It is withheld under the fail-closed conditions that skip this cache write **and under every cap `compose-review` computes itself except `unreviewed-dimension`** — `cannotTellCriticals`, `uncoverableChunks`, the context-unavailable state, `scopeUnproven` (coverage the module could not prove — a chunk nobody read, an idle or blind agent), findings still `— [unverified]`, the deterministic gates — because an anchor written past unread scope would let the next round's incremental range skip it forever: a fail-closed round still posts its findings; it just never certifies a range. The wider net is measured, not cautionary: gated on the input fields alone, a round the module itself stamped "could not certify that any of this diff was reviewed" still carried the anchor. **`unreviewedDimensions` is the deliberate exception, and it is measured too**: it is prose about DEPTH — "the integration suite CI skipped did not run locally" is true of every round on a repo whose suites do not fit `build-test`'s whole-call budget — so gating on it closed a loop with no exit, where an untestable dimension capped the verdict, the cap withheld the anchor, and the missing anchor made the next round re-review the full diff of a PR that had not changed a line (measured: PR #9113 round 2, 119 minutes, 34M input tokens). A dimension nobody could run says nothing about WHICH LINES were read, and the anchor's only claim is about lines. A run that posts therefore persists its ledger even when this cache write is skipped; a run that does not post has only this cache, which is exactly why the cache remains. The `findings` ledger is what lets the **next** run open with "R1-2 is fixed" instead of a from-scratch list (see Step 6's previous-round section). Write every **newly confirmed high-confidence** finding under a fresh `R<round>-<n>` id, and carry a still-standing previous entry forward **under the id it already has** — the whole payoff is that `R1-2` names the same claim in every round, so a finding that survives is re-reported, never renumbered — while a finding ruled `fixed` this round leaves the ledger (the report said so; the cache is for what the next round must check, not history). Low-confidence and terminal-only findings stay out: the ledger holds claims this review stands behind, because next round re-asserts each one by id. Findings the convergence posture deferred stay out the same way — carrying them as ledger work would hand the next round the very re-ruling the posture exists to end. Their durable record on the PR is the POSTED deferral list (up to 20 entries; the body's overflow count names how many more) — and it is **not guaranteed**: the list is the first section the body budget trims, so an overflowing body can carry none of it. The list opens with an invisible `<!-- qwen-review-deferred -->` marker so later tooling can locate the block across rounds, and the findings artifact carries each deferred finding's full content under its `D<round>-<n>` id — the CI review job uploads it and the report as run artifacts (what the overflow count's "see the run report" pointer resolves to — kept for the artifact's 90-day retention window, not forever), and a local run's saved artifact under `.qwen/reviews/` holds the same — so an entry past the rendered cap, or in a list the budget trimmed, keeps a recoverable record even though the PR page never shows it. Keep the deferral list within its cap by collapsing families first (the bounded/unbounded rule) rather than deferring twenty-plus point findings; when the budget trims it, the terminal summary is where the author's copy comes from.
104
108
 
105
109
  3. Ensure `.qwen/reviews/` and `.qwen/review-cache/` are ignored by `.gitignore` — a broader rule like `.qwen/*` also satisfies this. Only warn the user if those paths are not ignored at all.
@@ -36,10 +36,16 @@ Also skip this step (independently of the gate above) if the review target is no
36
36
 
37
37
  **Use the "Create Review" API to submit verdict + inline comments in a single call** (like Copilot Code Review). This eliminates separate summary comments — the inline comments ARE the review.
38
38
 
39
- **A Critical's comment body carries its witness.** After the failure scenario, quote the observed output that settled the verdict — fenced, trimmed to the deciding lines — or the verifier's `witness: not run — <reason>` line (Step 4's witness rule). The witness is the difference between a comment the author can act on and a claim they have to re-derive before they can trust; the findings artifact already holds the string (`witness`), so this is a copy from data, not a fresh transcription.
39
+ **A posted comment's body carries its witness — Critical and Suggestion alike.** After the failure scenario, quote the observed output that settled the verdict — fenced, trimmed to the deciding lines — or the verifier's `witness: not run — <reason>` line (Step 4's witness rule). The witness is the difference between a comment the author can act on and a claim they have to re-derive before they can trust; the findings artifact already holds the string (`witness`), so this is a copy from data, not a fresh transcription.
40
+
41
+ **Neutralize any severity marker that appears INSIDE the quoted witness.** The witness is program output — a test log, a diff, a probe transcript — and a review test suite's own output routinely prints the literal string `**[Critical]**` (this repo's suites carry hundreds of such lines). But `.github/workflows/qwen-autofix.yml` classifies a comment by whether `**[Critical]**` occurs _anywhere_ in its body (a position-independent substring test, unlike the CLI's `severityOf`, which anchors to the body's FIRST marker). So a **Suggestion** whose witness quotes a literal `**[Critical]**` is silently reclassified Critical: the autofix bot applies a non-blocking suggestion, and the comment drops out of the deferred-listing disclosure. Before fencing the witness, strip the bold from any `**[Critical]**` / `**[Suggestion]**` it contains — write `[Critical]` / `[Suggestion]` — so the marker in the quoted output can never be mistaken for this comment's own. (The finding's own severity prefix, the real first marker, is untouched; only markers inside the witness fence are de-bolded.)
42
+
43
+ **And a Critical's claim line carries its two decision axes as bracket tags**, right after the id and the `(fix-induced)` marking when either is present: `**[Critical]** R7-2: [fails-closed] [new-surface] sparse checkout wedges the incremental round…`. One tag per axis the artifact's `direction` / `baseline` carries (`[certifies-falsely]` or `[fails-closed]`; `[regression]` or `[new-surface]`), none for an axis it does not — copied from data, never re-derived from the prose. `compose-review` reads them off the claim line only: the floor's Critical arm moves a `[fails-closed]` `[new-surface]` comment into the deferral list under a resolved `critical` floor (Step 6's posture), and the ledger marker records the axes as fields so the next round's work list shows them. A Suggestion's claim line carries no axis tags.
40
44
 
41
45
  **And a comment whose fix adds a guard carries the test that must pin it.** When the finding's `fixWitness` is anything other than `N/A`, the posted body closes with it, in one sentence of ordinary prose: name the test that must fail if the fix is removed, and ask for the mutation that proves it (remove the guard, run that test, confirm it reds). One sentence, after the suggestion block — not a heading, not a checklist. This is the reviewer-side half of a measured loop: roughly a third of every post-first-round finding on six multi-round pull requests was introduced by the fix immediately before it, overwhelmingly as a guard or branch with no test of its own, and the deterministic gate re-runs only the tests that exist — so an unwitnessed guard passes every gate and returns as next round's finding. A fixer who is told the acceptance criterion closes it in THIS round; one who is not, does not (measured; DESIGN.md — The fix round that wrote the next round's findings (#9578)). The line reaches every fixer — a contributor, a maintainer, any bot — which is the point: the review cannot assume the fix comes from something it can configure. A finding whose `fixWitness` is `N/A` adds nothing (do not write "no test needed" — silence says it), and this sentence never changes what the comment reports or at what severity.
42
46
 
47
+ **And a comment whose fix rests on an existing fact carries that fact.** When the finding has a `fixConstraint`, the posted body carries it in one sentence of ordinary prose immediately before the fix-witness sentence, which still closes the body — and when the finding's `fixWitness` is `N/A`, where no fix-witness sentence stands, the constraint sentence takes its place after the suggestion block: state the fact the fix must not violate and its source — the quoted constant, the `file:line` — copied from the artifact, not re-derived. `fixWitness` pins the fix's claim; this pins its premises, the class that passed a witnessed test and was still wrong twice on one merged fix — a hand-picked bound below a configurable limit, and a newly shared registry that broke a `callId` uniqueness relied on elsewhere (measured; DESIGN.md — The fix whose premises were wrong (#10153)). The evidence bar is the `witness` bar, and it holds at posting as it did at finding: a constraint that names no constant and no `file:line` is not posted — a wrong `fixWitness` costs one unwritten test; a wrong constraint is misdirection the fixer will follow. A finding with no `fixConstraint` adds nothing — no `N/A`, no "no constraints observed"; the sentence is absent and the comment is that much shorter — and, like the fix-witness sentence, this one never changes what the comment reports or at what severity. And the rule follows the finding through the two moves the orchestrator performs: a Critical carrying either fix-side sentence — the fix-witness or the constraint sentence — that moves to `bodyCriticals` — unmappable, or relocated by the 422 recovery — appends the same sentence to that entry, copied from the artifact — the constraint before the witness when the finding carries both — because that entry is the finding's sole published copy, and a witness or a premise lost there is one no fixer ever sees. A third move exists and carries neither sentence: on an Aone target the platform performs no server-side anchor validation, so `submit` validates every anchor itself and relocates an unanchorable Critical into the body as a one-line entry rebuilt from the claim line alone — a channel structurally too narrow for either sentence. Closing that channel is the structured body-Critical projection, larger than this rule. Two more moves exist and carry neither sentence: a finding carried into `deferredSuggestions` renders as the typed one-line entry — a `DeferredEntry` holds no fix-side field, and the line is capped at 240 characters — and a Suggestion dropped as a duplicate posts a name-and-location account only, never the finding's own text — both structurally too narrow for either sentence; until a deferral entry grows the fields, the loss is a named acceptance, not a silent one.
48
+
43
49
  **Resolve every anchor before you submit — do not post the line numbers the agents reported.** GitHub rejects the whole review with a 422 if any comment's `(path, line)` falls outside every hunk of that file, and it does so all-or-nothing: one miscounted anchor takes every Critical in the review down with it. The line is therefore computed from the diff, not carried over from an agent. The resolver input already exists — Step 6's `findings --to-anchors` wrote it from the artifact, one entry per anchored location of every high-confidence Critical and Suggestion (do NOT hand-project it from the artifact's `locations[]`: the resolver wants `path` where the artifact stores `file`, and a hand projection once produced all-null anchors). Run the resolver:
44
50
 
45
51
  ```bash
@@ -213,12 +219,12 @@ Then reference each finding's `assets` URLs in its inline comment body as `![evi
213
219
  {
214
220
  "path": "src/file.ts",
215
221
  "line": 42,
216
- "body": "**[Critical]** issue description as plain sentences carrying the concrete trigger and the wrong outcome\n\n```suggestion\nfix code\n```\n\n_— YOUR_MODEL_ID via Qwen Code /review_",
222
+ "body": "**[Critical]** issue description as plain sentences carrying the concrete trigger and the wrong outcome\n\nWitness:\n```\nthe observed output that settled the verdict, trimmed — or `witness: not run — <reason>`\n```\n\n```suggestion\nfix code\n```\n\n_— YOUR_MODEL_ID via Qwen Code /review_",
217
223
  },
218
224
  {
219
225
  "path": "src/other.ts",
220
226
  "line": 88,
221
- "body": "**[Suggestion]** recommended improvement as plain sentences carrying the concrete cost (what is duplicated, wasted, or fragile)\n\n```suggestion\nimproved code\n```\n\n_— YOUR_MODEL_ID via Qwen Code /review_",
227
+ "body": "**[Suggestion]** recommended improvement as plain sentences carrying the concrete cost (what is duplicated, wasted, or fragile)\n\nWitness:\n```\nthe observed output that settled the verdict, trimmed — or `witness: not run — <reason>`\n```\n\n```suggestion\nimproved code\n```\n\n_— YOUR_MODEL_ID via Qwen Code /review_",
222
228
  },
223
229
  ],
224
230
  "state": {
@@ -247,7 +253,7 @@ The verdict is a computed fact and this is the second place it must not be re-de
247
253
 
248
254
  When `startLine === line`, emit only `"line"` — a single-line comment needs no side (it defaults to `RIGHT`, which is what every comment here is). Do **not** send `start_line` on its own: the multi-line form that omits `start_side` is the one shape of this feature that fails, and it fails by discarding every inline blocker in the review.
249
255
 
250
- - Comment body format: `**[Critical]** issue description\n\n```suggestion\nfix\n```\n\n_— YOUR_MODEL_ID via Qwen Code /review_` — use the `**[Suggestion]**` prefix for Suggestion-level findings so the author can tell blockers from recommendations at a glance. Write the description as plain reviewer prose: state the problem, when it bites, and what to do about it, in ordinary sentences — no `— Failure scenario:` label, no `<trigger> → <wrong outcome>` arrow notation, no section-header voice. The description MUST still carry the finding's concrete failure scenario (the trigger and the wrong outcome, or the concrete cost) — a posted comment that says only what to change, without why it fails, has lost the evidence the finder was required to produce; the scaffolding is gone, the evidence is not. The prefix must be the **first thing in the body** and the footer must be present: the CLI's counting, its unmarked-draft gates, and the attribution-off strip machinery key off them. The autofix coupling is narrower — `.github/workflows/qwen-autofix.yml` recognizes Critical findings by the `**[Critical]**` substring in comment bodies (position-independent) and keeps Suggestion findings out of the autofix loop by its absence; it never reads the footer. Changing the prefix silently makes the autofix bot start applying non-blocking suggestions. (When the operator turned `review.attribution` off, `submit` strips the prefix and the footer from what GitHub receives — you write them regardless; they are the pipeline's counting and filtering signals.)
256
+ - Comment body format: `**[Critical]** issue description\n\nWitness:\n```\n<observed output, or witness: not run — <reason>>\n```\n\n```suggestion\nfix\n```\n\n_— YOUR_MODEL_ID via Qwen Code /review_` — the witness slot is not optional for a Critical or Suggestion (Step 4's witness rule; the artifact already holds the `witness` string, so this is a copy from data) — use the `**[Suggestion]**` prefix for Suggestion-level findings so the author can tell blockers from recommendations at a glance. Write the description as plain reviewer prose: state the problem, when it bites, and what to do about it, in ordinary sentences — no `— Failure scenario:` label, no `<trigger> → <wrong outcome>` arrow notation, no section-header voice. The description MUST still carry the finding's concrete failure scenario (the trigger and the wrong outcome, or the concrete cost) — a posted comment that says only what to change, without why it fails, has lost the evidence the finder was required to produce; the scaffolding is gone, the evidence is not. The prefix must be the **first thing in the body** and the footer must be present: the CLI's counting, its unmarked-draft gates, and the attribution-off strip machinery key off them. The autofix coupling is narrower — `.github/workflows/qwen-autofix.yml` recognizes Critical findings by the `**[Critical]**` substring in comment bodies (position-independent) and keeps Suggestion findings out of the autofix loop by its absence; it never reads the footer. Changing the prefix silently makes the autofix bot start applying non-blocking suggestions. (When the operator turned `review.attribution` off, `submit` strips the prefix and the footer from what GitHub receives — you write them regardless; they are the pipeline's counting and filtering signals.)
251
257
  - The model name is declared at the top of this prompt. You MUST include it in every footer. Do NOT omit the model name.
252
258
  - Use ` ```suggestion ` for one-click fixes; regular code blocks if fix spans multiple locations.
253
259
  - Only ONE comment per unique issue.
@@ -14,82 +14,80 @@ import "./chunk-E7REAOTN.js";
14
14
  import "./chunk-2MIN6GRR.js";
15
15
  import "./chunk-QHTIBUWB.js";
16
16
  import "./chunk-RKUWKYED.js";
17
- import "./chunk-KUX5D6DK.js";
18
- import "./chunk-3DXFGHAJ.js";
17
+ import "./chunk-NV55WWD6.js";
18
+ import "./chunk-2OUD5T67.js";
19
19
  import "./chunk-CQH5KTKC.js";
20
20
  import "./chunk-LJZSMWOH.js";
21
- import "./chunk-6LFTG244.js";
22
- import "./chunk-PKAYJDB3.js";
23
- import "./chunk-6IUNAPLR.js";
24
- import "./chunk-OIVXBW3W.js";
25
- import "./chunk-4CDSK5AZ.js";
21
+ import "./chunk-NMOD2FXQ.js";
22
+ import "./chunk-WNPDGUJO.js";
23
+ import "./chunk-K5KXUXWC.js";
24
+ import "./chunk-62GQFYID.js";
25
+ import "./chunk-AYFA7MZV.js";
26
26
  import "./chunk-XQFT3QUF.js";
27
27
  import "./chunk-VTHREBQM.js";
28
28
  import "./chunk-ZPJWUGCS.js";
29
- import "./chunk-H2WDGQ6D.js";
30
- import "./chunk-MIIVI25Q.js";
31
- import "./chunk-TGWAQ5RB.js";
29
+ import "./chunk-3JXM2CVW.js";
30
+ import "./chunk-ST5V3ZOC.js";
31
+ import "./chunk-PZ66FRIC.js";
32
32
  import "./chunk-GOFAQQZA.js";
33
33
  import "./chunk-5M6IDOMF.js";
34
34
  import "./chunk-TWPJO254.js";
35
35
  import "./chunk-CQ35AJ4Z.js";
36
36
  import "./chunk-EKSCLBBF.js";
37
- import "./chunk-P2SU6ZTI.js";
38
- import "./chunk-IZIVM7LZ.js";
39
- import "./chunk-SFPGAQUL.js";
37
+ import "./chunk-LUEHOUHM.js";
38
+ import "./chunk-WXEA74YB.js";
39
+ import "./chunk-42IDLQWS.js";
40
40
  import "./chunk-6PVPNMXU.js";
41
41
  import "./chunk-JB4JIVTJ.js";
42
+ import "./chunk-DJBQCO2E.js";
42
43
  import "./chunk-IRH27ZC2.js";
43
44
  import "./chunk-QHWCP53L.js";
44
45
  import "./chunk-D5LUXLUH.js";
45
46
  import "./chunk-O6GEWCJA.js";
46
47
  import "./chunk-T26EAKDL.js";
47
- import "./chunk-EOGELB3H.js";
48
+ import "./chunk-2SXSLSQE.js";
48
49
  import "./chunk-CPBF7KYF.js";
49
- import "./chunk-EFUM7RVY.js";
50
+ import "./chunk-KJO2LBUK.js";
50
51
  import "./chunk-TTX2JUE6.js";
51
- import "./chunk-43GGFFLY.js";
52
+ import "./chunk-4K7KNVWH.js";
52
53
  import "./chunk-SMPR7SPO.js";
53
54
  import "./chunk-JWALNCLT.js";
54
55
  import "./chunk-NIFYWDYN.js";
55
- import "./chunk-3AFMQUTI.js";
56
- import "./chunk-WKK5BQNP.js";
56
+ import "./chunk-C2X7KY45.js";
57
+ import "./chunk-JHYH6PYQ.js";
58
+ import "./chunk-7J6OTNGO.js";
57
59
  import "./chunk-V5J4J5TP.js";
58
60
  import "./chunk-MLXTMF7H.js";
59
61
  import "./chunk-NAVJD2PQ.js";
60
- import "./chunk-3JGZSIDA.js";
61
- import "./chunk-VVW4ZNFY.js";
62
+ import "./chunk-B466ZSHZ.js";
63
+ import "./chunk-4QHPPXK2.js";
62
64
  import "./chunk-QHMLYMMS.js";
63
- import "./chunk-7DJCPZE3.js";
64
- import "./chunk-P3QQPMQA.js";
65
- import "./chunk-HVEYF6VT.js";
65
+ import "./chunk-3WK3QDNV.js";
66
66
  import "./chunk-VNOVK4I7.js";
67
- import "./chunk-SAH4BD2J.js";
68
- import "./chunk-PDMJ3KGS.js";
67
+ import "./chunk-PQEISIKS.js";
68
+ import "./chunk-EB6QRGHM.js";
69
69
  import "./chunk-CMHFCLBU.js";
70
70
  import "./chunk-S6LOFUVP.js";
71
+ import "./chunk-CFKIH3D3.js";
71
72
  import "./chunk-2LD5U7Q3.js";
72
73
  import "./chunk-DJ2GSRLV.js";
73
- import "./chunk-J2OSJFP3.js";
74
- import "./chunk-K2OJUPOE.js";
75
- import "./chunk-CFKIH3D3.js";
76
- import "./chunk-4FTKQNWJ.js";
77
- import "./chunk-Y3QL45LS.js";
78
- import "./chunk-L2M46FP5.js";
79
- import "./chunk-YRLW2MSX.js";
74
+ import "./chunk-DYXFD5RO.js";
75
+ import "./chunk-V4264FEG.js";
76
+ import "./chunk-QYMAKPY5.js";
77
+ import "./chunk-XBVNNDPK.js";
80
78
  import "./chunk-VGC4I5JJ.js";
81
- import "./chunk-3I6UTTDX.js";
79
+ import "./chunk-BKWNKLZB.js";
82
80
  import "./chunk-6PJOTWAN.js";
83
81
  import "./chunk-BWORX6FA.js";
84
82
  import "./chunk-WZAD4ZNJ.js";
85
83
  import "./chunk-FPGTNKCP.js";
86
84
  import "./chunk-6DIGWMGT.js";
87
- import "./chunk-Z7FLBQPR.js";
85
+ import "./chunk-W3JH33JE.js";
88
86
  import "./chunk-XZA32HII.js";
89
87
  import "./chunk-23RFD54N.js";
90
88
  import "./chunk-PPKZ7JOE.js";
91
89
  import "./chunk-HHJLM3WQ.js";
92
- import "./chunk-L6BZRIUL.js";
90
+ import "./chunk-B5PHIJGI.js";
93
91
  import "./chunk-74TONY4F.js";
94
92
  import "./chunk-XF63PKEN.js";
95
93
  import "./chunk-CAJTKR6W.js";
@@ -4,16 +4,16 @@ import {
4
4
  ConfigContext,
5
5
  SessionPicker,
6
6
  SettingsContext
7
- } from "./chunk-CCBZDVUA.js";
7
+ } from "./chunk-CIZCL2MW.js";
8
8
  import {
9
9
  KeypressProvider
10
- } from "./chunk-T32W2JHI.js";
11
- import "./chunk-IJKTMLBE.js";
12
- import "./chunk-K2NQPH5D.js";
13
- import "./chunk-FDY5RMGH.js";
10
+ } from "./chunk-SS5SDCD3.js";
11
+ import "./chunk-4TT3IVGA.js";
12
+ import "./chunk-WGY3AVGM.js";
13
+ import "./chunk-CFJY4DGX.js";
14
14
  import "./chunk-4WGODMVR.js";
15
15
  import "./chunk-NU7RKEZR.js";
16
- import "./chunk-2NYCN6F2.js";
16
+ import "./chunk-XSG6G3G6.js";
17
17
  import "./chunk-3SH53ANB.js";
18
18
  import "./chunk-WAOIHTJS.js";
19
19
  import {
@@ -32,106 +32,104 @@ import "./chunk-TPI7O7HR.js";
32
32
  import "./chunk-EKTCKZV5.js";
33
33
  import "./chunk-QFCDF5PL.js";
34
34
  import "./chunk-KW7NOTN6.js";
35
- import "./chunk-L6YT5H34.js";
36
- import "./chunk-CSMI4FP5.js";
35
+ import "./chunk-MPNBVAEU.js";
36
+ import "./chunk-MSBO7X2W.js";
37
37
  import "./chunk-E7REAOTN.js";
38
- import "./chunk-XDLEZ5HX.js";
38
+ import "./chunk-ZZUKP7HV.js";
39
39
  import "./chunk-2MIN6GRR.js";
40
40
  import "./chunk-QHTIBUWB.js";
41
41
  import "./chunk-57OAHC2Y.js";
42
- import "./chunk-CPGJJJLU.js";
43
- import "./chunk-F7TNAPZ4.js";
42
+ import "./chunk-7T52W4SW.js";
43
+ import "./chunk-AIAOIFY4.js";
44
44
  import "./chunk-RKUWKYED.js";
45
- import "./chunk-JSC3H3TD.js";
45
+ import "./chunk-ZEYFMJQA.js";
46
46
  import "./chunk-GOXKNSDZ.js";
47
47
  import "./chunk-IDS7MSUP.js";
48
- import "./chunk-LDP5OD6N.js";
48
+ import "./chunk-CLWO3B77.js";
49
49
  import "./chunk-5EJZE3FP.js";
50
- import "./chunk-IK5BW3CS.js";
51
- import "./chunk-5PA6UEYA.js";
52
- import "./chunk-V4QXXQJ2.js";
50
+ import "./chunk-XHF7WQ6B.js";
51
+ import "./chunk-MZCJWS5Y.js";
52
+ import "./chunk-MF7HCQWZ.js";
53
53
  import "./chunk-NPQ5ZKRP.js";
54
54
  import "./chunk-MR3PXB6E.js";
55
- import "./chunk-KUX5D6DK.js";
56
- import "./chunk-3DXFGHAJ.js";
55
+ import "./chunk-NV55WWD6.js";
56
+ import "./chunk-2OUD5T67.js";
57
57
  import "./chunk-CQH5KTKC.js";
58
58
  import "./chunk-LJZSMWOH.js";
59
- import "./chunk-6LFTG244.js";
60
- import "./chunk-PKAYJDB3.js";
61
- import "./chunk-6IUNAPLR.js";
62
- import "./chunk-OIVXBW3W.js";
63
- import "./chunk-4CDSK5AZ.js";
59
+ import "./chunk-NMOD2FXQ.js";
60
+ import "./chunk-WNPDGUJO.js";
61
+ import "./chunk-K5KXUXWC.js";
62
+ import "./chunk-62GQFYID.js";
63
+ import "./chunk-AYFA7MZV.js";
64
64
  import "./chunk-XQFT3QUF.js";
65
65
  import "./chunk-VTHREBQM.js";
66
66
  import "./chunk-ZPJWUGCS.js";
67
- import "./chunk-H2WDGQ6D.js";
68
- import "./chunk-MIIVI25Q.js";
67
+ import "./chunk-3JXM2CVW.js";
68
+ import "./chunk-ST5V3ZOC.js";
69
69
  import {
70
70
  SessionService
71
- } from "./chunk-TGWAQ5RB.js";
71
+ } from "./chunk-PZ66FRIC.js";
72
72
  import "./chunk-GOFAQQZA.js";
73
73
  import "./chunk-5M6IDOMF.js";
74
74
  import "./chunk-TWPJO254.js";
75
75
  import "./chunk-CQ35AJ4Z.js";
76
76
  import "./chunk-EKSCLBBF.js";
77
- import "./chunk-P2SU6ZTI.js";
78
- import "./chunk-IZIVM7LZ.js";
79
- import "./chunk-SFPGAQUL.js";
77
+ import "./chunk-LUEHOUHM.js";
78
+ import "./chunk-WXEA74YB.js";
79
+ import "./chunk-42IDLQWS.js";
80
80
  import "./chunk-6PVPNMXU.js";
81
81
  import "./chunk-JB4JIVTJ.js";
82
+ import "./chunk-DJBQCO2E.js";
82
83
  import "./chunk-IRH27ZC2.js";
83
84
  import "./chunk-QHWCP53L.js";
84
85
  import "./chunk-D5LUXLUH.js";
85
86
  import "./chunk-O6GEWCJA.js";
86
87
  import "./chunk-T26EAKDL.js";
87
- import "./chunk-EOGELB3H.js";
88
+ import "./chunk-2SXSLSQE.js";
88
89
  import "./chunk-CPBF7KYF.js";
89
- import "./chunk-EFUM7RVY.js";
90
+ import "./chunk-KJO2LBUK.js";
90
91
  import "./chunk-TTX2JUE6.js";
91
- import "./chunk-43GGFFLY.js";
92
+ import "./chunk-4K7KNVWH.js";
92
93
  import {
93
94
  getGitBranch
94
95
  } from "./chunk-SMPR7SPO.js";
95
96
  import "./chunk-JWALNCLT.js";
96
97
  import "./chunk-NIFYWDYN.js";
97
- import "./chunk-3AFMQUTI.js";
98
- import "./chunk-WKK5BQNP.js";
98
+ import "./chunk-C2X7KY45.js";
99
+ import "./chunk-JHYH6PYQ.js";
100
+ import "./chunk-7J6OTNGO.js";
99
101
  import "./chunk-V5J4J5TP.js";
100
102
  import "./chunk-MLXTMF7H.js";
101
103
  import "./chunk-NAVJD2PQ.js";
102
- import "./chunk-3JGZSIDA.js";
103
- import "./chunk-VVW4ZNFY.js";
104
+ import "./chunk-B466ZSHZ.js";
105
+ import "./chunk-4QHPPXK2.js";
104
106
  import "./chunk-QHMLYMMS.js";
105
- import "./chunk-7DJCPZE3.js";
106
- import "./chunk-P3QQPMQA.js";
107
- import "./chunk-HVEYF6VT.js";
107
+ import "./chunk-3WK3QDNV.js";
108
108
  import "./chunk-VNOVK4I7.js";
109
- import "./chunk-SAH4BD2J.js";
110
- import "./chunk-PDMJ3KGS.js";
109
+ import "./chunk-PQEISIKS.js";
110
+ import "./chunk-EB6QRGHM.js";
111
111
  import "./chunk-CMHFCLBU.js";
112
112
  import "./chunk-S6LOFUVP.js";
113
+ import "./chunk-CFKIH3D3.js";
113
114
  import "./chunk-2LD5U7Q3.js";
114
115
  import "./chunk-DJ2GSRLV.js";
115
- import "./chunk-J2OSJFP3.js";
116
- import "./chunk-K2OJUPOE.js";
117
- import "./chunk-CFKIH3D3.js";
118
- import "./chunk-4FTKQNWJ.js";
119
- import "./chunk-Y3QL45LS.js";
120
- import "./chunk-L2M46FP5.js";
121
- import "./chunk-YRLW2MSX.js";
116
+ import "./chunk-DYXFD5RO.js";
117
+ import "./chunk-V4264FEG.js";
118
+ import "./chunk-QYMAKPY5.js";
119
+ import "./chunk-XBVNNDPK.js";
122
120
  import "./chunk-VGC4I5JJ.js";
123
- import "./chunk-3I6UTTDX.js";
121
+ import "./chunk-BKWNKLZB.js";
124
122
  import "./chunk-6PJOTWAN.js";
125
123
  import "./chunk-BWORX6FA.js";
126
124
  import "./chunk-WZAD4ZNJ.js";
127
125
  import "./chunk-FPGTNKCP.js";
128
126
  import "./chunk-6DIGWMGT.js";
129
- import "./chunk-Z7FLBQPR.js";
127
+ import "./chunk-W3JH33JE.js";
130
128
  import "./chunk-XZA32HII.js";
131
129
  import "./chunk-23RFD54N.js";
132
130
  import "./chunk-PPKZ7JOE.js";
133
131
  import "./chunk-HHJLM3WQ.js";
134
- import "./chunk-L6BZRIUL.js";
132
+ import "./chunk-B5PHIJGI.js";
135
133
  import "./chunk-74TONY4F.js";
136
134
  import "./chunk-XF63PKEN.js";
137
135
  import "./chunk-CAJTKR6W.js";
@@ -140,10 +138,10 @@ import "./chunk-AQ37AY7B.js";
140
138
  import "./chunk-PDQGMSZK.js";
141
139
  import "./chunk-UTLCH2FK.js";
142
140
  import "./chunk-UHQFIS7N.js";
143
- import "./chunk-Y6LSMB6J.js";
141
+ import "./chunk-MO3FC2WT.js";
144
142
  import {
145
143
  writeStdoutLine
146
- } from "./chunk-KGJGEEVR.js";
144
+ } from "./chunk-7FA2II6K.js";
147
145
  import "./chunk-75DOP5OR.js";
148
146
  import "./chunk-DMTGGOSA.js";
149
147
  import "./chunk-YQ3U5MUC.js";