@qwen-code/qwen-code 0.21.2 → 0.21.3-nightly.20260803.e1e5b42ce

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 (352) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +53 -38
  2. package/bundled/qc-helper/docs/features/channels/github.md +16 -5
  3. package/bundled/qc-helper/docs/features/channels/gitlab.md +6 -0
  4. package/bundled/qc-helper/docs/features/code-review.md +92 -24
  5. package/bundled/qc-helper/docs/features/commands.md +46 -38
  6. package/bundled/qc-helper/docs/features/hooks.md +115 -18
  7. package/bundled/qc-helper/docs/features/memory.md +27 -0
  8. package/bundled/qc-helper/docs/features/skills.md +46 -1
  9. package/bundled/qc-helper/docs/features/sub-agents.md +42 -9
  10. package/bundled/qc-helper/docs/features/tool-use-summaries.md +7 -7
  11. package/bundled/qc-helper/docs/qwen-serve.md +46 -25
  12. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +62 -31
  13. package/bundled/qc-helper/docs/support/troubleshooting.md +6 -1
  14. package/bundled/review/DESIGN.md +167 -32
  15. package/bundled/review/SKILL.md +207 -38
  16. package/chunks/{MaxSizedBox-TQBQ247P.js → MaxSizedBox-FCEK5P5K.js} +41 -38
  17. package/chunks/{StandaloneSessionPicker-2HPTKCLX.js → StandaloneSessionPicker-AT77J3PM.js} +63 -59
  18. package/chunks/{acp-startup-profiler-2C4A5ZTJ.js → acp-startup-profiler-3RICG2YW.js} +2 -2
  19. package/chunks/{acpAgent-PS6EDGH3.js → acpAgent-PBMKZ5KH.js} +664 -560
  20. package/chunks/{agent-VDOUB35F.js → agent-55W5BPK3.js} +37 -34
  21. package/chunks/{agent-headless-EO53EFS2.js → agent-headless-I7VMHI22.js} +37 -34
  22. package/chunks/{anthropicContentGenerator-OFHSZJBF.js → anthropicContentGenerator-3CAHEZBM.js} +341 -29
  23. package/chunks/{artifact-tool-RDN2W7ND.js → artifact-tool-TBOYEKTY.js} +2 -2
  24. package/chunks/{askUserQuestion-OZERWH5R.js → askUserQuestion-23Y5WZFJ.js} +2 -2
  25. package/chunks/{bridge-W7AZSRZQ.js → bridge-XNAWEDAN.js} +43 -40
  26. package/chunks/{ca-6W3SK7OQ.js → ca-NYKNH222.js} +50 -5
  27. package/chunks/{channel-management-service-5S7YCWX5.js → channel-management-service-UHX56NBO.js} +7 -7
  28. package/chunks/{channel-settings-store-JFVRSNER.js → channel-settings-store-7P6RJSSF.js} +44 -41
  29. package/chunks/{channel-worker-group-OVWGYMZS.js → channel-worker-group-NDG4WOOZ.js} +8 -8
  30. package/chunks/{channel-worker-manager-H55GKOQA.js → channel-worker-manager-ZCW6UW34.js} +8 -8
  31. package/chunks/{channel-worker-supervisor-CABBXYHK.js → channel-worker-supervisor-ATGFTZRN.js} +4 -4
  32. package/chunks/{chunk-6MPDY6ZG.js → chunk-24ER7UV4.js} +1 -1
  33. package/chunks/{chunk-QDK4F2N5.js → chunk-2DNKEBXY.js} +1 -1
  34. package/chunks/{chunk-AUOULH6Q.js → chunk-2GF3IDEK.js} +1610 -2196
  35. package/chunks/{chunk-JYBU6YUE.js → chunk-2M5N3DHY.js} +1 -1
  36. package/chunks/{chunk-LHKCY7DY.js → chunk-2UISUFHQ.js} +3 -3
  37. package/chunks/{chunk-BBIQAX4V.js → chunk-2ZCYE3F2.js} +30 -18
  38. package/chunks/{chunk-GJ2GBPBD.js → chunk-332FMXSD.js} +5 -5
  39. package/chunks/{chunk-JXVC2PL3.js → chunk-33FNCQSY.js} +2 -2
  40. package/chunks/{chunk-P755N4CS.js → chunk-3GALLNII.js} +6 -6
  41. package/chunks/{chunk-YANIWTRZ.js → chunk-3ICGQSVO.js} +1 -1
  42. package/chunks/{chunk-NBD76HUW.js → chunk-3LGZEYOF.js} +2 -2
  43. package/chunks/{chunk-E2BHWIDT.js → chunk-3RXUYQJI.js} +6 -2
  44. package/chunks/{chunk-E5Z2AVNV.js → chunk-3SH53ANB.js} +0 -11
  45. package/chunks/{chunk-N4ACHWNH.js → chunk-432XCUHF.js} +1 -1
  46. package/chunks/{chunk-JLZ3RBQG.js → chunk-44EJDGMS.js} +144 -11
  47. package/chunks/{chunk-KR32NIAN.js → chunk-4JP34TZ6.js} +10 -10
  48. package/chunks/{chunk-L2E5GFAG.js → chunk-4LKVQFHM.js} +2 -2
  49. package/chunks/{chunk-YDLJGZHL.js → chunk-4NFY2S7N.js} +0 -33
  50. package/chunks/{chunk-NHFEMWAZ.js → chunk-5WY5QEM6.js} +1 -1
  51. package/chunks/{chunk-56Z7QEAQ.js → chunk-6BUPGI3J.js} +16 -16
  52. package/chunks/{chunk-H6I4PGRV.js → chunk-6DNHLK7F.js} +4 -4
  53. package/chunks/{chunk-XQK4XXTN.js → chunk-6O5DVH27.js} +1 -1
  54. package/chunks/{chunk-2RFKHEXL.js → chunk-6PLDPT2C.js} +1 -1
  55. package/chunks/{chunk-Q5WZTTWE.js → chunk-7UPJXZLD.js} +6 -8
  56. package/chunks/{chunk-CBBP4BMC.js → chunk-7UXI6P72.js} +82 -207
  57. package/chunks/{chunk-6CQWRWUC.js → chunk-7XLPYF6B.js} +3 -3
  58. package/chunks/{chunk-VEMNQMHA.js → chunk-7ZH55K26.js} +5 -13
  59. package/chunks/{chunk-JJPKFJBT.js → chunk-A2FOI762.js} +3 -3
  60. package/chunks/{chunk-LYI2PZDK.js → chunk-A5LNZGJB.js} +2 -2
  61. package/chunks/{chunk-3APUUXRF.js → chunk-A5YZ3FA2.js} +2 -1
  62. package/chunks/{chunk-SHN4KHDK.js → chunk-A6SX5TAH.js} +3 -3
  63. package/chunks/{chunk-QCXGC7QB.js → chunk-A7PONO5G.js} +3 -3
  64. package/chunks/{chunk-SZ3KHTDR.js → chunk-AKA24BGO.js} +1 -1
  65. package/chunks/{chunk-RSVPYAGK.js → chunk-B4HXOGF5.js} +5 -5
  66. package/chunks/{chunk-D6MDRSZ6.js → chunk-BBXSRVSN.js} +22 -11
  67. package/chunks/{chunk-Q3T5KA2V.js → chunk-BFHXDAR7.js} +1 -1
  68. package/chunks/{chunk-L55JWS76.js → chunk-BGXZBI5B.js} +1 -1
  69. package/chunks/{chunk-2KKCCLPT.js → chunk-C4IUDGPI.js} +1 -1
  70. package/chunks/{chunk-MM7TH7ZM.js → chunk-CFDR3GNL.js} +18 -3
  71. package/chunks/{chunk-3F2WDAV6.js → chunk-CFVFQWFB.js} +14 -14
  72. package/chunks/{chunk-E2FN6SM7.js → chunk-CIUUYB23.js} +5 -5
  73. package/chunks/{chunk-JCJ7LKNA.js → chunk-DIEFUBV6.js} +1644 -1570
  74. package/chunks/{chunk-KWHKHSIS.js → chunk-DTAPI453.js} +8 -8
  75. package/chunks/{chunk-WWCMSZII.js → chunk-DV2GAGR7.js} +71 -7
  76. package/chunks/{chunk-675H6PLP.js → chunk-DYA25Y7U.js} +1 -1
  77. package/chunks/{chunk-3I6DUGQD.js → chunk-E4WHKETF.js} +32 -4
  78. package/chunks/{chunk-QTERJVPZ.js → chunk-EKTCKZV5.js} +1 -0
  79. package/chunks/{chunk-HX6RLYUO.js → chunk-ENOHFX2M.js} +4 -4
  80. package/chunks/{chunk-VMX5RZQH.js → chunk-EZZJHMFK.js} +18 -9
  81. package/chunks/{chunk-KXDONCPU.js → chunk-FBDRTW3I.js} +4 -4
  82. package/chunks/{chunk-FCYYAB4S.js → chunk-FHPKHXHT.js} +3 -3
  83. package/chunks/{chunk-DQ2O5QOJ.js → chunk-FJZS2MXB.js} +1 -1
  84. package/chunks/{chunk-EQNUDTL6.js → chunk-FVLPZSKH.js} +3 -3
  85. package/chunks/{chunk-2LEOZTBT.js → chunk-FYMMZV5F.js} +111 -26
  86. package/chunks/{chunk-UV6KF7T3.js → chunk-GNZ7MX73.js} +3 -3
  87. package/chunks/chunk-GOFAQQZA.js +132 -0
  88. package/chunks/{chunk-YUFIEIWC.js → chunk-GTM6IHBB.js} +2 -2
  89. package/chunks/{chunk-W3UKBMSI.js → chunk-GU5B6IF3.js} +118 -9
  90. package/chunks/{chunk-PCK4B6LR.js → chunk-GU5XWZU2.js} +1 -1
  91. package/chunks/{chunk-DEEABGH2.js → chunk-H2EDCJIM.js} +5954 -1766
  92. package/chunks/{chunk-FJ5WUMUQ.js → chunk-H36SETQS.js} +1 -1
  93. package/chunks/{chunk-6FMJLI5M.js → chunk-HFVW54NL.js} +41 -6
  94. package/chunks/chunk-HGCQ5SE7.js +136 -0
  95. package/chunks/{chunk-OFZKFPYG.js → chunk-HR4CHEQS.js} +3 -3
  96. package/chunks/{chunk-CO2U743O.js → chunk-I3GX6LGS.js} +4 -4
  97. package/chunks/{chunk-5NNHICSA.js → chunk-I7JDGNG6.js} +3 -3
  98. package/chunks/{chunk-RDJOB6S3.js → chunk-IEBT6DXF.js} +1 -1
  99. package/chunks/{chunk-EU5TBFJI.js → chunk-IV7QPMC2.js} +2 -2
  100. package/chunks/{chunk-B4AJNNOL.js → chunk-J26HHFI5.js} +1 -1
  101. package/chunks/{chunk-CNTR4GR6.js → chunk-JELIWHXD.js} +1 -1
  102. package/chunks/{chunk-FNDXMN7I.js → chunk-JQFMW7BD.js} +936 -223
  103. package/chunks/{chunk-IGTHU3T4.js → chunk-KKN2IE7Q.js} +1 -1
  104. package/chunks/{chunk-TZTAV5RH.js → chunk-KVUBYJDM.js} +2 -2
  105. package/chunks/{chunk-DUNI4EBW.js → chunk-KZXSAQYV.js} +86 -52
  106. package/chunks/chunk-LBOVL47Y.js +29 -0
  107. package/chunks/{chunk-FS674JW4.js → chunk-LBWNSLJK.js} +3 -3
  108. package/chunks/{chunk-I5BT7ADR.js → chunk-LEZFUYPM.js} +4 -4
  109. package/chunks/chunk-LLMGP5IC.js +222 -0
  110. package/chunks/{chunk-44F4LBWZ.js → chunk-LVW7BHTW.js} +56 -18
  111. package/chunks/{chunk-YGE3IXJP.js → chunk-M744OFVE.js} +1 -1
  112. package/chunks/chunk-MISUEWB4.js +8749 -0
  113. package/chunks/{chunk-7SJN2IWT.js → chunk-MJ2SKNTY.js} +5 -5
  114. package/chunks/{chunk-JE2CEOBO.js → chunk-MNTXIO6T.js} +4 -4
  115. package/chunks/{chunk-TEGJSJDF.js → chunk-MOHAWIAW.js} +2 -2
  116. package/chunks/{chunk-54YCNSK5.js → chunk-MVMBE5EH.js} +4521 -10220
  117. package/chunks/{chunk-PZEXDV3H.js → chunk-NCY2CDDX.js} +71 -43
  118. package/chunks/{chunk-TTJZAIFP.js → chunk-NJELCSFL.js} +3 -3
  119. package/chunks/{chunk-A7Y5H4TX.js → chunk-NXDJEZCI.js} +7 -7
  120. package/chunks/{chunk-PQNHRFJC.js → chunk-NYX53SV4.js} +0 -2
  121. package/chunks/{chunk-QARJNL2V.js → chunk-O2ZYHG33.js} +5 -4
  122. package/chunks/{chunk-6PQPKTXP.js → chunk-OPMLL3B3.js} +1 -1
  123. package/chunks/{chunk-PVNQRENX.js → chunk-OUQGNGIU.js} +1 -1
  124. package/chunks/{chunk-V7RNNPGC.js → chunk-P5Y23G2L.js} +18 -1
  125. package/chunks/{chunk-GURGAJTX.js → chunk-PDDYAXL2.js} +4 -1
  126. package/chunks/chunk-PWCQRLM5.js +1170 -0
  127. package/chunks/{chunk-GL4JOZXU.js → chunk-Q43MIWDH.js} +4 -4
  128. package/chunks/{chunk-V4XNUDPE.js → chunk-QFIYH5KR.js} +28 -7
  129. package/chunks/chunk-QL4TN4HS.js +59 -0
  130. package/chunks/{chunk-E6CJ2SMM.js → chunk-QMBEW7EW.js} +2 -2
  131. package/chunks/{chunk-U4VTUMMK.js → chunk-QONSRAEV.js} +1 -1
  132. package/chunks/{chunk-LOY7RWQG.js → chunk-QYPT3QUD.js} +3 -3
  133. package/chunks/{chunk-RG64CDT2.js → chunk-RJAVNGJJ.js} +131 -48
  134. package/chunks/{chunk-Z3S5EMOW.js → chunk-RPYYTL7E.js} +60 -12
  135. package/chunks/{chunk-V25K5ID7.js → chunk-SWCEYR6T.js} +1 -1
  136. package/chunks/{chunk-77V3VIKL.js → chunk-SXGNNAMC.js} +9 -9
  137. package/chunks/{chunk-7KAXXBER.js → chunk-TNQ5BEEB.js} +3 -3
  138. package/chunks/{chunk-R2XWGR75.js → chunk-TYERNYH4.js} +2 -2
  139. package/chunks/{chunk-45IOTAUS.js → chunk-U25CMJYY.js} +1 -1
  140. package/chunks/{chunk-7ULQIS27.js → chunk-UEJESCS7.js} +1 -1
  141. package/chunks/{chunk-HC45LTEN.js → chunk-UH7Z7Y45.js} +1 -1
  142. package/chunks/{chunk-P5VC5USY.js → chunk-UIKCPMID.js} +1 -1
  143. package/chunks/{chunk-CPZAH673.js → chunk-UKZEXS6K.js} +2 -0
  144. package/chunks/{chunk-HIVKI6O6.js → chunk-UO7AWUZJ.js} +9 -7
  145. package/chunks/{chunk-XP4L6KS3.js → chunk-URN76TKR.js} +2 -2
  146. package/chunks/{chunk-XUGZYLDH.js → chunk-UWSXFI6E.js} +1 -1
  147. package/chunks/{chunk-AOHY3QJ3.js → chunk-VA5NLVPT.js} +3 -3
  148. package/chunks/{chunk-FANRZEAJ.js → chunk-VWOVHOTT.js} +1 -1
  149. package/chunks/{chunk-NTDH4IML.js → chunk-W2K4OEW4.js} +7 -7
  150. package/chunks/{chunk-L32VV3ZJ.js → chunk-WH7W24EN.js} +12 -12
  151. package/chunks/{chunk-QTHQ6Z5X.js → chunk-WK4TJUEA.js} +1 -1
  152. package/chunks/{chunk-ZPZ7ZJEE.js → chunk-WUC6ZFXO.js} +1 -1
  153. package/chunks/{chunk-TIRRPCFS.js → chunk-X6QNZOTC.js} +1 -1
  154. package/chunks/{chunk-IIUGIWWY.js → chunk-XC2VAFVZ.js} +1 -1
  155. package/chunks/{chunk-D4HTUMGX.js → chunk-XC656O42.js} +3 -3
  156. package/chunks/{chunk-ZMOJ7ISP.js → chunk-XXOVLDZQ.js} +1 -1
  157. package/chunks/{chunk-THVU3RNH.js → chunk-YAVY33G4.js} +1 -1
  158. package/chunks/{chunk-PJOHNFIY.js → chunk-YIAC2OXH.js} +5 -5
  159. package/chunks/{chunk-CU47KXB5.js → chunk-YTSN63PD.js} +6 -6
  160. package/chunks/{chunk-DSFHVTWD.js → chunk-YXEVDA66.js} +2 -2
  161. package/chunks/{chunk-MB32MS4U.js → chunk-ZLJQIGCH.js} +260 -175
  162. package/chunks/{chunk-6TAASXWL.js → chunk-ZX6RZZFB.js} +3 -3
  163. package/chunks/{computer-use-5QWCFNKD.js → computer-use-BG2EHNJE.js} +37 -34
  164. package/chunks/{config-utils-WADIDWGG.js → config-utils-E3ZQTHGM.js} +4 -4
  165. package/chunks/{contextCommand-4Z7T7TUM.js → contextCommand-JAPYNKFC.js} +41 -38
  166. package/chunks/{core-runtime-6N4EFC2Q.js → core-runtime-2VCZN5QF.js} +37 -34
  167. package/chunks/{create-sub-session-AEREHZBQ.js → create-sub-session-52OUA2VU.js} +52 -43
  168. package/chunks/{create-sub-session-62YZWVAY.js → create-sub-session-J32WC64U.js} +2 -2
  169. package/chunks/{cron-create-6E7GIQTG.js → cron-create-HMFSHIAR.js} +4 -4
  170. package/chunks/{cron-delete-JD26XY3W.js → cron-delete-ZJFHOX57.js} +4 -4
  171. package/chunks/{cron-list-CUWFB44G.js → cron-list-ZEX2NBMN.js} +4 -4
  172. package/chunks/{daemon-PCNCI5YU.js → daemon-CCIX4BMG.js} +47 -6
  173. package/chunks/{daemon-status-provider-DDF7C5M7.js → daemon-status-provider-F2YGDKHR.js} +48 -45
  174. package/chunks/{daemon-trust-policy-Q4KSOJTR.js → daemon-trust-policy-XCY7JETR.js} +43 -40
  175. package/chunks/{daemon-trust-policy-monitor-V6FTE3IY.js → daemon-trust-policy-monitor-FBHB5GMQ.js} +43 -40
  176. package/chunks/{de-SY6O76BF.js → de-VL76CPLV.js} +50 -5
  177. package/chunks/{deferred-core-runtime-GHJ5GQHK.js → deferred-core-runtime-BBLJ4JUM.js} +37 -34
  178. package/chunks/display-image-2WOG27DY.js +184 -0
  179. package/chunks/{dist-ZHXOBXDN.js → dist-3BMEUGTG.js} +1 -1
  180. package/chunks/{dist-OAOC5OV4.js → dist-7JGAAQSC.js} +2 -2
  181. package/chunks/{dist-SL2LUMML.js → dist-A7H2KKUC.js} +1 -1
  182. package/chunks/{dist-ULIG4M5H.js → dist-C5U4LJKW.js} +162 -15
  183. package/chunks/{dist-2PERFI23.js → dist-DPPHJAVL.js} +3 -3
  184. package/chunks/{dist-PVEAFLHY.js → dist-HVBMEYWK.js} +1 -1
  185. package/chunks/{dist-26BIMQT6.js → dist-IKGVITP3.js} +676 -37
  186. package/chunks/{dist-WGMNT3JQ.js → dist-SFQ34F4M.js} +24 -6
  187. package/chunks/{earlyInputCapture-TQXLLISD.js → earlyInputCapture-ALVSMKP7.js} +38 -35
  188. package/chunks/{edit-FJEUV6KZ.js → edit-POB3CIHQ.js} +37 -34
  189. package/chunks/{en-NBK3JKCE.js → en-IRJ2WN5T.js} +61 -6
  190. package/chunks/{enter-worktree-7GE3TZ4P.js → enter-worktree-Q2N7UZWC.js} +37 -34
  191. package/chunks/{enterPlanMode-KR5TMPCJ.js → enterPlanMode-QGAH2GMP.js} +37 -34
  192. package/chunks/{environment-SWL3CMB3.js → environment-FE5AX2U5.js} +40 -37
  193. package/chunks/{errors-XQE7BGZV.js → errors-SLMCFLSC.js} +40 -37
  194. package/chunks/{exit-worktree-CHKTYNCV.js → exit-worktree-7WO2LPLF.js} +37 -34
  195. package/chunks/{exitPlanMode-QYAG6LWX.js → exitPlanMode-3PINWUTY.js} +37 -34
  196. package/chunks/{fast-path-Z2K7W6DC.js → fast-path-SVFFEL6U.js} +17 -4
  197. package/chunks/{fr-4KG5V7UT.js → fr-GK3HQYVB.js} +50 -5
  198. package/chunks/{gemini-YU4XKEDG.js → gemini-QECJNKNJ.js} +151 -90
  199. package/chunks/{geminiContentGenerator-ZZX6NBO4.js → geminiContentGenerator-ZFAZKT6R.js} +6 -6
  200. package/chunks/{glob-VYF5CXSX.js → glob-GXUNQYNR.js} +37 -34
  201. package/chunks/{goal-tools-HGO6VXPB.js → goal-tools-SPQ5M6D3.js} +3 -3
  202. package/chunks/{grep-5DP5ZUTW.js → grep-LVU5KBCV.js} +37 -34
  203. package/chunks/{handleAutoUpdate-UVBJ56DL.js → handleAutoUpdate-MPDHQY72.js} +43 -40
  204. package/chunks/{i18n-UQNYHEUD.js → i18n-LEYRN6RV.js} +39 -36
  205. package/chunks/{image-gen-WHPIZNWF.js → image-gen-4T2D4PTP.js} +9 -9
  206. package/chunks/{initializer-GMIICF4W.js → initializer-PQV2THBS.js} +44 -41
  207. package/chunks/{installationInfo-4MGG4WVI.js → installationInfo-XC3HXLTX.js} +38 -35
  208. package/chunks/{ja-F3GSQXMF.js → ja-3FA46IKD.js} +50 -5
  209. package/chunks/{keychain-token-storage-IKO4G53C.js → keychain-token-storage-7BT4TQ2A.js} +2 -2
  210. package/chunks/{kittyProtocolDetector-MBRTDRBK.js → kittyProtocolDetector-BFLAKYXH.js} +1 -1
  211. package/chunks/{list-CPN2W334.js → list-AQBTPZRG.js} +46 -43
  212. package/chunks/{list-agents-PXJ7ZUFB.js → list-agents-TWEGRJWO.js} +2 -2
  213. package/chunks/{loadedSettingsAdapter-ZQAV5NDO.js → loadedSettingsAdapter-EZYPDX2J.js} +43 -40
  214. package/chunks/{loggingContentGenerator-5E7W4IEP.js → loggingContentGenerator-WD6YWU7Q.js} +52 -37
  215. package/chunks/{loop-wakeup-Y26NQZ5I.js → loop-wakeup-6LLEOQYV.js} +5 -5
  216. package/chunks/{ls-ONQTTMQR.js → ls-H5WX22VK.js} +4 -4
  217. package/chunks/{lsp-YGHHRGMD.js → lsp-G6FXYEIS.js} +2 -2
  218. package/chunks/{managed-npm-update-MKKAXYXA.js → managed-npm-update-BMM57CHD.js} +40 -37
  219. package/chunks/{mcp-V5NTJF6X.js → mcp-FMI6NCWA.js} +43 -40
  220. package/chunks/{monitor-CO3ASY6E.js → monitor-PZJOYAA2.js} +37 -34
  221. package/chunks/nonInteractiveCli-QPX6R4LL.js +152 -0
  222. package/chunks/{notebook-edit-Z7AEE6FM.js → notebook-edit-GZF2SKTQ.js} +37 -34
  223. package/chunks/{openaiContentGenerator-CA3MQOP3.js → openaiContentGenerator-ZPLCFAAG.js} +18 -18
  224. package/chunks/{pidfile-NL7MKDRU.js → pidfile-PCADVJQW.js} +38 -35
  225. package/chunks/{processUtils-PB5K2DYH.js → processUtils-FKUVQVEU.js} +2 -2
  226. package/chunks/{pt-EQ33KWEN.js → pt-3AOBKPIJ.js} +50 -5
  227. package/chunks/{qwenContentGenerator-JYFNDCOS.js → qwenContentGenerator-2Y4R6YLB.js} +42 -40
  228. package/chunks/{qwenOAuth2-W2ALKQDD.js → qwenOAuth2-UCEHY3I2.js} +8 -8
  229. package/chunks/{read-file-IEOR5H5W.js → read-file-DYHDFVAS.js} +10 -10
  230. package/chunks/{read-mcp-resource-U2IJN5HM.js → read-mcp-resource-DRZSI3HE.js} +2 -2
  231. package/chunks/{record-artifact-MGPJ7EG4.js → record-artifact-IPIRWMFY.js} +3 -3
  232. package/chunks/{resumeHistoryUtils-BNBTP5AS.js → resumeHistoryUtils-5JS6R3AJ.js} +45 -42
  233. package/chunks/{ripGrep-UMQODKEB.js → ripGrep-2QOR3ZQT.js} +37 -34
  234. package/chunks/{ru-7OZAUKGG.js → ru-VJRAMC4W.js} +50 -5
  235. package/chunks/{run-qwen-serve-RN2R6QQW.js → run-qwen-serve-MTVRAUBR.js} +271 -60
  236. package/chunks/{runtime-QFJ2MJF5.js → runtime-DQGE2DYR.js} +50 -45
  237. package/chunks/{scheduler-AMYUFOZI.js → scheduler-BXIZQ4OO.js} +37 -34
  238. package/chunks/{sdk-exporters-http-4BQANSJ6.js → sdk-exporters-http-IKNWQJNV.js} +2 -2
  239. package/chunks/{sdk-impl-Z4VXWVFX.js → sdk-impl-7CUUMQDB.js} +2 -2
  240. package/chunks/{send-message-PMP4ATVM.js → send-message-LHJLVWFD.js} +5 -4
  241. package/chunks/{serve-EIIYJVX3.js → serve-D4GYHFLL.js} +44 -40
  242. package/chunks/{server-EP2LLAPD.js → server-S22MLWTJ.js} +618 -387
  243. package/chunks/{session-GMPZBLOW.js → session-AHNM6YXP.js} +151 -87
  244. package/chunks/{settings-LN7RNKBS.js → settings-77MDDUSX.js} +42 -39
  245. package/chunks/{shell-EM2OWU5X.js → shell-DLD2VQTQ.js} +37 -34
  246. package/chunks/{skill-T5VPSK73.js → skill-3B2PAQE4.js} +27 -14
  247. package/chunks/{skill-settings-GMR3GMNY.js → skill-settings-STR5NF4B.js} +42 -39
  248. package/chunks/{spawnChannel-YPCU62DI.js → spawnChannel-TOWYOVDZ.js} +39 -36
  249. package/chunks/{standalone-update-JAKIM2NF.js → standalone-update-F6ZWABD7.js} +40 -37
  250. package/chunks/{startInteractiveUI-YETQWGYF.js → startInteractiveUI-QR7MHDX7.js} +1829 -1036
  251. package/chunks/{syntheticOutput-D7E6ZFKR.js → syntheticOutput-EYL7DWO7.js} +3 -3
  252. package/chunks/{task-create-NFCYD43L.js → task-create-4ALZMGP5.js} +10 -9
  253. package/chunks/{task-list-TAVMGEVD.js → task-list-6CVQPORX.js} +6 -6
  254. package/chunks/{task-stop-ZDF2UJRM.js → task-stop-Y5ZTFVRX.js} +2 -2
  255. package/chunks/{task-update-6L7LHGEX.js → task-update-IKCEEWJ6.js} +10 -9
  256. package/chunks/{team-create-LFJ6HGNY.js → team-create-LQVIAVRF.js} +37 -34
  257. package/chunks/{team-delete-DPGGRQBU.js → team-delete-CE7DC53R.js} +6 -6
  258. package/chunks/{team-plan-approval-C2KLSDGO.js → team-plan-approval-G5PUNI52.js} +37 -34
  259. package/chunks/terminal-image-renderer-33GSM55L.js +90 -0
  260. package/chunks/{theme-manager-JQ3ZGBP5.js → theme-manager-DBFM5QOG.js} +38 -35
  261. package/chunks/{todoWrite-2UO5G6G6.js → todoWrite-FTZWQRZH.js} +108 -36
  262. package/chunks/{tool-search-FAZBFRJZ.js → tool-search-RGG7BBC4.js} +13 -12
  263. package/chunks/{total-session-admission-5CALIVYO.js → total-session-admission-LY3RMXXI.js} +44 -41
  264. package/chunks/{trustedFolders-KOPSP44S.js → trustedFolders-3M4IQ6K6.js} +39 -36
  265. package/chunks/{update-relaunch-6QL2TICS.js → update-relaunch-G3CMSX3M.js} +5 -5
  266. package/chunks/{updateCheck-4Q6RIKFW.js → updateCheck-ZKFGBDTG.js} +42 -39
  267. package/chunks/{useAutoAcceptIndicator-Q5BMKZV3.js → useAutoAcceptIndicator-7SAFZK5H.js} +47 -44
  268. package/chunks/{validateNonInterActiveAuth-GKOC5F6Z.js → validateNonInterActiveAuth-F2K6UGE4.js} +88 -84
  269. package/chunks/{version-VSATY2LD.js → version-KM6MYV2D.js} +1 -1
  270. package/chunks/{web-fetch-JCLKL6NL.js → web-fetch-SM4LZHRS.js} +13 -13
  271. package/chunks/{web-search-DSQTFUBX.js → web-search-OGKZNDAC.js} +8 -8
  272. package/chunks/{workflow-M6QAVKVJ.js → workflow-HU365RFR.js} +419 -304
  273. package/chunks/{workspace-providers-status-YKLTLMJA.js → workspace-providers-status-QKKXQHL7.js} +46 -43
  274. package/chunks/{workspace-registration-store-5DMGKU64.js → workspace-registration-store-7J7KOXFD.js} +2 -2
  275. package/chunks/{workspace-registry-PTYUSYXX.js → workspace-registry-KC66O6DH.js} +44 -41
  276. package/chunks/{workspace-service-25ML3T47.js → workspace-service-TEV5Q2AA.js} +51 -48
  277. package/chunks/{workspace-skills-status-YKZWOYRX.js → workspace-skills-status-VRL55OMU.js} +45 -42
  278. package/chunks/{workspace-trust-reconciler-5FI2S3OS.js → workspace-trust-reconciler-COC5M7CY.js} +50 -47
  279. package/chunks/{write-file-AY7VLP5X.js → write-file-3SO2BMNO.js} +37 -34
  280. package/chunks/{zh-H3YDK5QW.js → zh-ARWDLDLR.js} +58 -6
  281. package/chunks/{zh-TW-JYCP7XUA.js → zh-TW-Y4RGI3P7.js} +58 -6
  282. package/chunks/{zoom-image-S4LJZMD5.js → zoom-image-O3RWTVKV.js} +10 -10
  283. package/cli.js +32 -48
  284. package/locales/ca.js +68 -4
  285. package/locales/de.js +70 -4
  286. package/locales/en.js +84 -6
  287. package/locales/fr.js +72 -4
  288. package/locales/ja.js +69 -4
  289. package/locales/pt.js +68 -4
  290. package/locales/ru.js +71 -4
  291. package/locales/zh-TW.js +74 -6
  292. package/locales/zh.js +74 -6
  293. package/package.json +3 -3
  294. package/web-shell/assets/{arc-xjArKHU2.js → arc-KuwiZ67W.js} +1 -1
  295. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BgrQDNYG.js → architectureDiagram-3BPJPVTR-Cppop6HB.js} +1 -1
  296. package/web-shell/assets/{blockDiagram-GPEHLZMM-CXxWC-1_.js → blockDiagram-GPEHLZMM-DQ6HT72s.js} +1 -1
  297. package/web-shell/assets/{c4Diagram-AAUBKEIU-Dx1tLm3v.js → c4Diagram-AAUBKEIU-B8TX_Mh-.js} +1 -1
  298. package/web-shell/assets/channel-BZd6Ile0.js +1 -0
  299. package/web-shell/assets/{chunk-2J33WTMH-CBxjogVR.js → chunk-2J33WTMH-B2WBUTp8.js} +1 -1
  300. package/web-shell/assets/{chunk-4BX2VUAB-izb-rY5W.js → chunk-4BX2VUAB-DXUsWC6O.js} +1 -1
  301. package/web-shell/assets/{chunk-55IACEB6-NzLyvSb8.js → chunk-55IACEB6-DtB-6cyk.js} +1 -1
  302. package/web-shell/assets/{chunk-727SXJPM-DVyKb0dl.js → chunk-727SXJPM-B-PhPyC3.js} +1 -1
  303. package/web-shell/assets/{chunk-AQP2D5EJ-BtqL7NzB.js → chunk-AQP2D5EJ-DNaTFMSC.js} +1 -1
  304. package/web-shell/assets/{chunk-FMBD7UC4-iNpdKIO0.js → chunk-FMBD7UC4-DZ345tFf.js} +1 -1
  305. package/web-shell/assets/{chunk-ND2GUHAM-DI7cbFmX.js → chunk-ND2GUHAM-BR_EpgzJ.js} +1 -1
  306. package/web-shell/assets/{chunk-QZHKN3VN-3Y_-xFYs.js → chunk-QZHKN3VN-BTU-0gDT.js} +1 -1
  307. package/web-shell/assets/classDiagram-4FO5ZUOK-B7c-TqtK.js +1 -0
  308. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B7c-TqtK.js +1 -0
  309. package/web-shell/assets/{cose-bilkent-S5V4N54A--raRatZn.js → cose-bilkent-S5V4N54A-BmsKBCNt.js} +1 -1
  310. package/web-shell/assets/{dagre-BM42HDAG-B8SU70mO.js → dagre-BM42HDAG-Ba8YWdDC.js} +1 -1
  311. package/web-shell/assets/{diagram-2AECGRRQ-ewgoakXo.js → diagram-2AECGRRQ-CCt2SnI6.js} +1 -1
  312. package/web-shell/assets/{diagram-5GNKFQAL-Bm_JLTnS.js → diagram-5GNKFQAL-BVTLXEU7.js} +1 -1
  313. package/web-shell/assets/{diagram-KO2AKTUF-DEIUjUy9.js → diagram-KO2AKTUF-DpDAVCYV.js} +1 -1
  314. package/web-shell/assets/{diagram-LMA3HP47-C2Wmrpj-.js → diagram-LMA3HP47-8ljXg-TB.js} +1 -1
  315. package/web-shell/assets/{diagram-OG6HWLK6-CtYe6bFx.js → diagram-OG6HWLK6-JAXfQSmd.js} +1 -1
  316. package/web-shell/assets/{erDiagram-TEJ5UH35-DfpHcWLV.js → erDiagram-TEJ5UH35-CUeakG6k.js} +1 -1
  317. package/web-shell/assets/{flowDiagram-I6XJVG4X-CAiUhio5.js → flowDiagram-I6XJVG4X-Cd4Wrdwv.js} +1 -1
  318. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CYc7ezr4.js → ganttDiagram-6RSMTGT7-C0nMFvH_.js} +1 -1
  319. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-70lbkcRS.js → gitGraphDiagram-PVQCEYII-uKk88n_L.js} +1 -1
  320. package/web-shell/assets/index-BXGtjHs5.js +1756 -0
  321. package/web-shell/assets/{index-Ww86nT9f.js → index-C1UWBJSX.js} +1 -1
  322. package/web-shell/assets/index-WxSvj2tI.css +5 -0
  323. package/web-shell/assets/{infoDiagram-5YYISTIA-C7e8DWPa.js → infoDiagram-5YYISTIA-GfPN17hR.js} +1 -1
  324. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BYLr2op-.js → ishikawaDiagram-YF4QCWOH-CDbWTcGa.js} +1 -1
  325. package/web-shell/assets/{journeyDiagram-JHISSGLW-hEibAHKX.js → journeyDiagram-JHISSGLW-J8TvvVFz.js} +1 -1
  326. package/web-shell/assets/{kanban-definition-UN3LZRKU-F2rt8Uhp.js → kanban-definition-UN3LZRKU-Ds_ndLrs.js} +1 -1
  327. package/web-shell/assets/{linear-DPhyNezd.js → linear-DuL9O4i3.js} +1 -1
  328. package/web-shell/assets/{mermaid.core-ZUtnug0n.js → mermaid.core-DtK4PsQB.js} +5 -5
  329. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DDWcMoi8.js → mindmap-definition-RKZ34NQL-DD0r7MS3.js} +1 -1
  330. package/web-shell/assets/{pieDiagram-4H26LBE5-CTRKzw1_.js → pieDiagram-4H26LBE5-CxGPZ8Q-.js} +1 -1
  331. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CAEwYG_z.js → quadrantDiagram-W4KKPZXB-Ds7Buxed.js} +1 -1
  332. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CRjnH9D9.js → requirementDiagram-4Y6WPE33-DIx28ph5.js} +1 -1
  333. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-LPQT_sOd.js → sankeyDiagram-5OEKKPKP-AxdAYcVX.js} +1 -1
  334. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Ht2Iqvb0.js → sequenceDiagram-3UESZ5HK-CojoXAZ5.js} +1 -1
  335. package/web-shell/assets/{stateDiagram-AJRCARHV-CIUdqOXu.js → stateDiagram-AJRCARHV-Dy1WN3mi.js} +1 -1
  336. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BaTNMz02.js +1 -0
  337. package/web-shell/assets/{timeline-definition-PNZ67QCA-BcilneZF.js → timeline-definition-PNZ67QCA-DeWe_43M.js} +1 -1
  338. package/web-shell/assets/{vennDiagram-CIIHVFJN-BljwiiH1.js → vennDiagram-CIIHVFJN-BN8PVlFq.js} +1 -1
  339. package/web-shell/assets/{wardley-L42UT6IY-DeKjkYjq.js → wardley-L42UT6IY-CbjV_1hf.js} +1 -1
  340. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-L3U1H7KG.js → wardleyDiagram-YWT4CUSO-D2mw84_p.js} +1 -1
  341. package/web-shell/assets/{xychartDiagram-2RQKCTM6-IJnWsgMT.js → xychartDiagram-2RQKCTM6-er9CTQXi.js} +1 -1
  342. package/web-shell/index.html +2 -2
  343. package/chunks/chunk-4KP2F2TE.js +0 -82
  344. package/chunks/chunk-HGT6JR3U.js +0 -177
  345. package/chunks/nonInteractiveCli-ZJYEOO7U.js +0 -148
  346. package/web-shell/assets/channel-B1cyk94G.js +0 -1
  347. package/web-shell/assets/classDiagram-4FO5ZUOK-BpBYZoRE.js +0 -1
  348. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BpBYZoRE.js +0 -1
  349. package/web-shell/assets/index-C1k3PDuU.css +0 -5
  350. package/web-shell/assets/index-DZLIXILO.js +0 -1750
  351. package/web-shell/assets/insert-DmRbh9Rv.svg +0 -1
  352. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BmqqQZ6w.js +0 -1
@@ -3,17 +3,17 @@
3
3
  import {
4
4
  getGitVersion,
5
5
  getNpmVersion
6
- } from "./chunk-Q5WZTTWE.js";
6
+ } from "./chunk-7UPJXZLD.js";
7
7
  import {
8
8
  buildEnvStatusFromEnv,
9
9
  snapshotProcessEnv
10
- } from "./chunk-VEMNQMHA.js";
10
+ } from "./chunk-7ZH55K26.js";
11
11
  import {
12
12
  mapDomainErrorToErrorKind
13
- } from "./chunk-GURGAJTX.js";
13
+ } from "./chunk-PDDYAXL2.js";
14
14
  import {
15
15
  canUseRipgrep
16
- } from "./chunk-54YCNSK5.js";
16
+ } from "./chunk-MVMBE5EH.js";
17
17
  import {
18
18
  init_esbuild_shims
19
19
  } from "./chunk-5O2XNYP6.js";
@@ -3,6 +3,10 @@
3
3
  import {
4
4
  HEADLESS_YOLO_NO_SANDBOX_WARNING
5
5
  } from "./chunk-6H67XLET.js";
6
+ import {
7
+ isValidMemoryBudgetMb,
8
+ memoryBudgetRangeError
9
+ } from "./chunk-HGCQ5SE7.js";
6
10
  import {
7
11
  DEFAULT_RING_SIZE
8
12
  } from "./chunk-GLWP3FDB.js";
@@ -16,13 +20,10 @@ import {
16
20
  } from "./chunk-ALMR3E6Q.js";
17
21
  import {
18
22
  loadSettings
19
- } from "./chunk-W3UKBMSI.js";
20
- import {
21
- writeStderrLine
22
- } from "./chunk-OWAK7LMW.js";
23
+ } from "./chunk-GU5B6IF3.js";
23
24
  import {
24
25
  MCP_BUDGET_WARN_FRACTION
25
- } from "./chunk-54YCNSK5.js";
26
+ } from "./chunk-MVMBE5EH.js";
26
27
  import {
27
28
  parsePositiveIntegerEnv
28
29
  } from "./chunk-6PVPNMXU.js";
@@ -30,6 +31,12 @@ import {
30
31
  openBrowserSecurely,
31
32
  shouldLaunchBrowser
32
33
  } from "./chunk-NAVJD2PQ.js";
34
+ import {
35
+ MEMORY_PROJECT_SCOPES
36
+ } from "./chunk-E4WHKETF.js";
37
+ import {
38
+ writeStderrLine
39
+ } from "./chunk-OWAK7LMW.js";
33
40
  import {
34
41
  init_esbuild_shims
35
42
  } from "./chunk-5O2XNYP6.js";
@@ -93,7 +100,7 @@ var serveCommand = {
93
100
  description: "Bearer token required on every request. Falls back to the QWEN_SERVER_TOKEN env var."
94
101
  }).option("max-sessions", {
95
102
  type: "number",
96
- default: 20,
103
+ default: 32,
97
104
  description: "Cap on concurrent live sessions. New spawn requests beyond this return 503; attach to existing sessions still works. Set to 0 to disable."
98
105
  }).option("max-total-sessions", {
99
106
  type: "number",
@@ -107,6 +114,10 @@ var serveCommand = {
107
114
  array: true,
108
115
  requiresArg: true,
109
116
  description: "Absolute workspace path to register with this daemon. POST /session requests with a mismatched cwd return 400 workspace_mismatch. Defaults to process.cwd() when omitted. Repeat to register isolated workspace runtimes; the first is primary."
117
+ }).option("memory-project-scope", {
118
+ type: "string",
119
+ choices: MEMORY_PROJECT_SCOPES,
120
+ description: 'Choose how project memory is partitioned. "git-root" preserves the legacy shared scope; "workspace" keeps each daemon workspace isolated. Overrides QWEN_CODE_MEMORY_PROJECT_SCOPE when provided.'
110
121
  }).option("max-connections", {
111
122
  type: "number",
112
123
  default: 256,
@@ -165,6 +176,9 @@ var serveCommand = {
165
176
  type: "boolean",
166
177
  default: true,
167
178
  description: "HTTP bridge mode: attempt to preheat one primary `qwen --acp` child; trusted secondaries start one on demand. Stage 2 native in-process mode is not yet implemented; this flag will become opt-in then."
179
+ }).option("memory-budget-mb", {
180
+ type: "number",
181
+ description: "Total memory budget in MB for the daemon process tree. When unset, derived as 50% of cgroup-constrained or host memory, and capped at the resolved available memory either way. Currently observed and reported under `limits.memory` in daemon status; it does not yet size any child process. Must be an integer in [1024, 1048576]."
168
182
  }).option("mcp-client-budget", {
169
183
  type: "number",
170
184
  description: "Cap on live MCP clients spawned inside the ACP child for the bound workspace. Positive integer. Combine with --mcp-budget-mode to control behavior at the cap. When unset, mode defaults to off (no accounting-driven enforcement, but GET /workspace/mcp still reports `clientCount`). Distinct from claude-code MCP_SERVER_CONNECTION_BATCH_SIZE which gates startup concurrency, not the total client count."
@@ -253,6 +267,11 @@ var serveCommand = {
253
267
  process.exit(1);
254
268
  }
255
269
  const resolvedMcpMode = mcpBudgetMode ?? (mcpClientBudget !== void 0 ? "warn" : "off");
270
+ const memoryBudgetMb = argv["memory-budget-mb"];
271
+ if (memoryBudgetMb !== void 0 && !isValidMemoryBudgetMb(memoryBudgetMb)) {
272
+ writeStderrLine(memoryBudgetRangeError());
273
+ process.exit(1);
274
+ }
256
275
  const maxPendingPromptsPerSession = argv["max-pending-prompts-per-session"];
257
276
  if (maxPendingPromptsPerSession !== Number.POSITIVE_INFINITY && (!Number.isFinite(maxPendingPromptsPerSession) || !Number.isInteger(maxPendingPromptsPerSession) || maxPendingPromptsPerSession < 0)) {
258
277
  writeStderrLine(
@@ -312,7 +331,7 @@ var serveCommand = {
312
331
  process.exit(1);
313
332
  }
314
333
  }
315
- const { runQwenServe } = await import("./run-qwen-serve-RN2R6QQW.js");
334
+ const { runQwenServe } = await import("./run-qwen-serve-MTVRAUBR.js");
316
335
  try {
317
336
  const handle = await runQwenServe({
318
337
  port: argv.port,
@@ -328,6 +347,7 @@ var serveCommand = {
328
347
  maxJournalEvents: argv["max-journal-events"],
329
348
  maxJournalBytes: argv["max-journal-bytes"],
330
349
  workspace: argv.workspace,
350
+ ...argv["memory-project-scope"] !== void 0 ? { memoryProjectScope: argv["memory-project-scope"] } : {},
331
351
  requireAuth: argv["require-auth"],
332
352
  enableSessionShell: argv["enable-session-shell"],
333
353
  serveWebShell: argv.web,
@@ -336,6 +356,7 @@ var serveCommand = {
336
356
  allowPrivateAuthBaseUrl: argv["allow-private-auth-base-url"],
337
357
  mcpClientBudget,
338
358
  mcpBudgetMode: resolvedMcpMode,
359
+ ...memoryBudgetMb !== void 0 ? { memoryBudgetMb } : {},
339
360
  ...argv["allow-origin"] && argv["allow-origin"].length > 0 ? { allowOrigins: argv["allow-origin"] } : {},
340
361
  ...argv["prompt-deadline-ms"] !== void 0 ? { promptDeadlineMs: argv["prompt-deadline-ms"] } : {},
341
362
  ...argv["writer-idle-timeout-ms"] !== void 0 ? { writerIdleTimeoutMs: argv["writer-idle-timeout-ms"] } : {},
@@ -0,0 +1,59 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ writeStderrLine
5
+ } from "./chunk-OWAK7LMW.js";
6
+ import {
7
+ init_esbuild_shims
8
+ } from "./chunk-5O2XNYP6.js";
9
+ import {
10
+ __name
11
+ } from "./chunk-J2S4EL5Y.js";
12
+
13
+ // packages/cli/src/utils/uncaught-exception-handler.ts
14
+ init_esbuild_shims();
15
+ function getErrnoCode(error) {
16
+ if (!error || typeof error !== "object") {
17
+ return void 0;
18
+ }
19
+ const code = error.code;
20
+ return typeof code === "string" ? code : void 0;
21
+ }
22
+ __name(getErrnoCode, "getErrnoCode");
23
+ function isExpectedPtyRaceError(error) {
24
+ if (!(error instanceof Error)) {
25
+ return false;
26
+ }
27
+ const message = error.message;
28
+ const code = getErrnoCode(error);
29
+ if (code === "EIO" && message.includes("read") || message.includes("read EIO")) {
30
+ return true;
31
+ }
32
+ if (code === "EAGAIN" && message.includes("read") || message.includes("read EAGAIN")) {
33
+ return true;
34
+ }
35
+ return message.includes("ioctl(2) failed, EBADF") || message.includes("Cannot resize a pty that has already exited");
36
+ }
37
+ __name(isExpectedPtyRaceError, "isExpectedPtyRaceError");
38
+ function handleUncaughtException(error) {
39
+ if (isExpectedPtyRaceError(error)) {
40
+ return;
41
+ }
42
+ if (error instanceof Error) {
43
+ writeStderrLine(error.stack ?? error.message);
44
+ } else {
45
+ writeStderrLine(String(error));
46
+ }
47
+ process.exit(1);
48
+ }
49
+ __name(handleUncaughtException, "handleUncaughtException");
50
+
51
+ export {
52
+ isExpectedPtyRaceError,
53
+ handleUncaughtException
54
+ };
55
+ /**
56
+ * @license
57
+ * Copyright 2026 Qwen Team
58
+ * SPDX-License-Identifier: Apache-2.0
59
+ */
@@ -11,12 +11,12 @@ import {
11
11
  isQuotaExhaustedError,
12
12
  isQwenQuotaExceededError,
13
13
  isRateLimitError
14
- } from "./chunk-XQK4XXTN.js";
14
+ } from "./chunk-6O5DVH27.js";
15
15
  import {
16
16
  createDebugLogger,
17
17
  getErrorStatus,
18
18
  isAbortError
19
- } from "./chunk-E2BHWIDT.js";
19
+ } from "./chunk-3RXUYQJI.js";
20
20
  import {
21
21
  init_esbuild_shims
22
22
  } from "./chunk-5O2XNYP6.js";
@@ -67,7 +67,7 @@ function isChannelWebhookTaskResultMessage(value) {
67
67
  }
68
68
  __name(isChannelWebhookTaskResultMessage, "isChannelWebhookTaskResultMessage");
69
69
 
70
- // packages/cli/src/serve/channel-delivery-ipc.ts
70
+ // packages/cli/src/runtime/channel-delivery-ipc.ts
71
71
  init_esbuild_shims();
72
72
  import { randomUUID as randomUUID2 } from "node:crypto";
73
73
  var ChannelDeliveryError = class extends Error {
@@ -2,13 +2,13 @@
2
2
  "use strict";
3
3
  import {
4
4
  delay
5
- } from "./chunk-E6CJ2SMM.js";
5
+ } from "./chunk-QMBEW7EW.js";
6
6
  import {
7
7
  isTlsVerificationDisabled
8
- } from "./chunk-Q3T5KA2V.js";
8
+ } from "./chunk-BFHXDAR7.js";
9
9
  import {
10
10
  getErrorMessage
11
- } from "./chunk-E2BHWIDT.js";
11
+ } from "./chunk-3RXUYQJI.js";
12
12
  import {
13
13
  init_esbuild_shims
14
14
  } from "./chunk-5O2XNYP6.js";
@@ -2,13 +2,13 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-3F2WDAV6.js";
5
+ } from "./chunk-CFVFQWFB.js";
6
6
  import {
7
7
  SessionReferenceService,
8
8
  SessionService,
9
9
  readManyFiles,
10
10
  stripTerminalControlSequences
11
- } from "./chunk-54YCNSK5.js";
11
+ } from "./chunk-MVMBE5EH.js";
12
12
  import {
13
13
  emptyMcpResourceText,
14
14
  formatMcpResourceContents,
@@ -16,14 +16,15 @@ import {
16
16
  } from "./chunk-ZPJWUGCS.js";
17
17
  import {
18
18
  shouldRunVisionBridge
19
- } from "./chunk-DUNI4EBW.js";
19
+ } from "./chunk-KZXSAQYV.js";
20
20
  import {
21
21
  Storage,
22
22
  getErrorMessage,
23
23
  isNodeError,
24
24
  isSubpath,
25
- unescapePath
26
- } from "./chunk-E2BHWIDT.js";
25
+ unescapePath,
26
+ unescapeShellSpecials
27
+ } from "./chunk-3RXUYQJI.js";
27
28
  import {
28
29
  init_esbuild_shims
29
30
  } from "./chunk-5O2XNYP6.js";
@@ -230,7 +231,8 @@ function isSessionId(value) {
230
231
  __name(isSessionId, "isSessionId");
231
232
  function parseSessionRef(pathName) {
232
233
  if (!pathName.startsWith(SESSION_MENTION_PREFIX)) return null;
233
- const remainder = pathName.slice(SESSION_MENTION_PREFIX.length).trim();
234
+ const rawRemainder = pathName.slice(SESSION_MENTION_PREFIX.length).trim();
235
+ const remainder = process.platform === "win32" ? unescapeShellSpecials(rawRemainder) : rawRemainder;
234
236
  if (remainder.length === 0) return null;
235
237
  return isSessionId(remainder) ? { id: remainder } : { title: remainder };
236
238
  }
@@ -368,14 +370,29 @@ async function resolveAtCommandQuery({
368
370
  }
369
371
  const fileDiscovery = config.getFileService();
370
372
  const respectFileIgnore = config.getFileFilteringOptions();
373
+ const configuredProjectTempDir = Storage.getGlobalTempDir();
374
+ const projectTempDir = await fs2.realpath(configuredProjectTempDir).catch(() => path.resolve(configuredProjectTempDir));
371
375
  const pathSpecsToRead = [];
372
376
  const atPathToResolvedSpecMap = /* @__PURE__ */ new Map();
373
377
  const contentLabelsForDisplay = [];
378
+ const displayPaths = /* @__PURE__ */ new Map();
379
+ const displayPathsByCanonicalPath = /* @__PURE__ */ new Map();
374
380
  const ignoredByReason = {
375
381
  git: [],
376
382
  qwen: [],
377
383
  both: []
378
384
  };
385
+ const getIgnoreReason = /* @__PURE__ */ __name((candidate) => {
386
+ const gitIgnored = respectFileIgnore.respectGitIgnore && fileDiscovery.shouldIgnoreFile(candidate, {
387
+ respectGitIgnore: true,
388
+ respectQwenIgnore: false
389
+ });
390
+ const qwenIgnored = respectFileIgnore.respectQwenIgnore && fileDiscovery.shouldIgnoreFile(candidate, {
391
+ respectGitIgnore: false,
392
+ respectQwenIgnore: true
393
+ });
394
+ return gitIgnored && qwenIgnored ? "both" : gitIgnored ? "git" : qwenIgnored ? "qwen" : void 0;
395
+ }, "getIgnoreReason");
379
396
  const mcpServerNames = new Set(Object.keys(config.getMcpServers() || {}));
380
397
  const mcpResourceRefs = [];
381
398
  const mcpServerMentions = [];
@@ -413,7 +430,10 @@ async function resolveAtCommandQuery({
413
430
  )) {
414
431
  sessionMentions.push({ originalAtPath, ref: sessionRef });
415
432
  }
416
- atPathToResolvedSpecMap.set(originalAtPath, pathName);
433
+ atPathToResolvedSpecMap.set(
434
+ originalAtPath,
435
+ buildSessionRef(sessionRef.id ?? sessionRef.title)
436
+ );
417
437
  continue;
418
438
  }
419
439
  const resourceRef = parseMcpResourceRef(pathName, mcpServerNames);
@@ -447,24 +467,16 @@ async function resolveAtCommandQuery({
447
467
  continue;
448
468
  }
449
469
  const workspaceContext = config.getWorkspaceContext();
450
- const projectTempDir = Storage.getGlobalTempDir();
451
470
  const absolutePathName = path.isAbsolute(pathName) ? pathName : path.resolve(workspaceContext.getDirectories()[0] || "", pathName);
452
- if (!isSubpath(projectTempDir, absolutePathName) && !workspaceContext.isPathWithinWorkspace(pathName)) {
471
+ if (!isSubpath(configuredProjectTempDir, absolutePathName) && !isSubpath(projectTempDir, absolutePathName) && !workspaceContext.isPathWithinWorkspace(pathName)) {
453
472
  onDebugMessage(
454
473
  `Path ${pathName} is not in the workspace and will be skipped.`
455
474
  );
456
475
  continue;
457
476
  }
458
- const gitIgnored = respectFileIgnore.respectGitIgnore && fileDiscovery.shouldIgnoreFile(pathName, {
459
- respectGitIgnore: true,
460
- respectQwenIgnore: false
461
- });
462
- const qwenIgnored = respectFileIgnore.respectQwenIgnore && fileDiscovery.shouldIgnoreFile(pathName, {
463
- respectGitIgnore: false,
464
- respectQwenIgnore: true
465
- });
466
- if (gitIgnored || qwenIgnored) {
467
- const reason = gitIgnored && qwenIgnored ? "both" : gitIgnored ? "git" : "qwen";
477
+ const ignoredReason = getIgnoreReason(pathName);
478
+ if (ignoredReason) {
479
+ const reason = ignoredReason;
468
480
  ignoredByReason[reason].push(pathName);
469
481
  const reasonText = reason === "both" ? "ignored by both git and qwen" : reason === "git" ? "git-ignored" : "qwen-ignored";
470
482
  onDebugMessage(`Path ${pathName} is ${reasonText} and will be skipped.`);
@@ -472,17 +484,39 @@ async function resolveAtCommandQuery({
472
484
  }
473
485
  let resolvedSuccessfully = false;
474
486
  let sawNotFound = false;
487
+ let deferredIgnoreReason;
475
488
  for (const dir of config.getWorkspaceContext().getDirectories()) {
476
- let currentPathSpec = pathName;
477
489
  try {
478
490
  const absolutePath = path.resolve(dir, pathName);
479
- const stats = await fs2.stat(absolutePath);
491
+ const canonicalPath = await fs2.realpath(absolutePath);
492
+ const stats = await fs2.stat(canonicalPath);
493
+ if (!isSubpath(configuredProjectTempDir, canonicalPath) && !isSubpath(projectTempDir, canonicalPath) && !workspaceContext.isPathWithinWorkspace(canonicalPath)) {
494
+ onDebugMessage(
495
+ `Path ${pathName} is not in the workspace and will be skipped.`
496
+ );
497
+ continue;
498
+ }
499
+ const canonicalIgnoreReason = getIgnoreReason(canonicalPath);
500
+ if (canonicalIgnoreReason) {
501
+ deferredIgnoreReason = canonicalIgnoreReason;
502
+ const reasonText = canonicalIgnoreReason === "both" ? "ignored by both git and qwen" : canonicalIgnoreReason === "git" ? "git-ignored" : "qwen-ignored";
503
+ onDebugMessage(
504
+ `Path ${pathName} is ${reasonText} and will be skipped.`
505
+ );
506
+ continue;
507
+ }
480
508
  if (stats.isDirectory()) {
481
- currentPathSpec = pathName;
482
509
  onDebugMessage(`Path ${pathName} resolved to directory.`);
483
510
  } else {
484
511
  onDebugMessage(`Path ${pathName} resolved to file: ${absolutePath}`);
485
512
  }
513
+ pathSpecsToRead.push(canonicalPath);
514
+ atPathToResolvedSpecMap.set(originalAtPath, pathName);
515
+ contentLabelsForDisplay.push(pathName);
516
+ displayPaths.set(canonicalPath, pathName);
517
+ const canonicalDisplays = displayPathsByCanonicalPath.get(canonicalPath) ?? /* @__PURE__ */ new Set();
518
+ canonicalDisplays.add(pathName);
519
+ displayPathsByCanonicalPath.set(canonicalPath, canonicalDisplays);
486
520
  resolvedSuccessfully = true;
487
521
  } catch (error) {
488
522
  if (isNodeError(error) && error.code === "ENOENT") {
@@ -495,9 +529,6 @@ async function resolveAtCommandQuery({
495
529
  }
496
530
  }
497
531
  if (resolvedSuccessfully) {
498
- pathSpecsToRead.push(currentPathSpec);
499
- atPathToResolvedSpecMap.set(originalAtPath, currentPathSpec);
500
- contentLabelsForDisplay.push(pathName);
501
532
  break;
502
533
  }
503
534
  }
@@ -506,31 +537,37 @@ async function resolveAtCommandQuery({
506
537
  `Path ${pathName} not found. Path ${pathName} will be skipped.`
507
538
  );
508
539
  }
540
+ if (!resolvedSuccessfully && deferredIgnoreReason) {
541
+ ignoredByReason[deferredIgnoreReason].push(pathName);
542
+ }
509
543
  }
510
- let initialQueryText = "";
511
- for (let i = 0; i < commandParts.length; i++) {
512
- const part = commandParts[i];
513
- if (part.type === "text") {
514
- initialQueryText += part.content;
515
- } else {
516
- const resolvedSpec = atPathToResolvedSpecMap.get(part.content);
517
- if (i > 0 && initialQueryText.length > 0 && !initialQueryText.endsWith(" ")) {
518
- const prevPart = commandParts[i - 1];
519
- if (prevPart.type === "text" || prevPart.type === "atPath" && atPathToResolvedSpecMap.has(prevPart.content)) {
520
- initialQueryText += " ";
521
- }
522
- }
523
- if (resolvedSpec) {
524
- initialQueryText += `@${resolvedSpec}`;
544
+ const buildInitialQueryText = /* @__PURE__ */ __name(() => {
545
+ let text = "";
546
+ for (let i = 0; i < commandParts.length; i++) {
547
+ const part = commandParts[i];
548
+ if (part.type === "text") {
549
+ text += part.content;
525
550
  } else {
526
- if (i > 0 && initialQueryText.length > 0 && !initialQueryText.endsWith(" ") && !part.content.startsWith(" ")) {
527
- initialQueryText += " ";
551
+ const resolvedSpec = atPathToResolvedSpecMap.get(part.content);
552
+ if (i > 0 && text.length > 0 && !text.endsWith(" ")) {
553
+ const prevPart = commandParts[i - 1];
554
+ if (prevPart.type === "text" || prevPart.type === "atPath") {
555
+ text += " ";
556
+ }
557
+ }
558
+ if (resolvedSpec) {
559
+ text += `@${resolvedSpec}`;
560
+ } else {
561
+ if (i > 0 && text.length > 0 && !text.endsWith(" ") && !part.content.startsWith(" ")) {
562
+ text += " ";
563
+ }
564
+ text += part.content;
528
565
  }
529
- initialQueryText += part.content;
530
566
  }
531
567
  }
532
- }
533
- initialQueryText = initialQueryText.trim();
568
+ return text.trim();
569
+ }, "buildInitialQueryText");
570
+ let initialQueryText = buildInitialQueryText();
534
571
  const totalIgnored = ignoredByReason["git"].length + ignoredByReason["qwen"].length + ignoredByReason["both"].length;
535
572
  if (totalIgnored > 0) {
536
573
  const messages = [];
@@ -787,12 +824,58 @@ ${messages.join("\n")}`;
787
824
  );
788
825
  const fileParts = [];
789
826
  let fileDisplays = [];
790
- if (pathSpecsToRead.length > 0) {
827
+ const revalidatedPathSpecs = [];
828
+ const revalidatedDisplayPaths = /* @__PURE__ */ new Map();
829
+ const validatedPathIdentities = /* @__PURE__ */ new Map();
830
+ const pruneSkippedPath = /* @__PURE__ */ __name((approvedPath) => {
831
+ const displayPath = displayPaths.get(approvedPath);
832
+ const displayLabels = displayPathsByCanonicalPath.get(approvedPath) ?? new Set(displayPath ? [displayPath] : []);
833
+ for (const [originalAtPath, resolvedSpec] of atPathToResolvedSpecMap) {
834
+ if (resolvedSpec === approvedPath || displayLabels.has(resolvedSpec)) {
835
+ atPathToResolvedSpecMap.delete(originalAtPath);
836
+ }
837
+ }
838
+ for (let index = contentLabelsForDisplay.length - 1; index >= 0; index--) {
839
+ const label = contentLabelsForDisplay[index];
840
+ if (label === approvedPath || displayLabels.has(label)) {
841
+ contentLabelsForDisplay.splice(index, 1);
842
+ }
843
+ }
844
+ }, "pruneSkippedPath");
845
+ for (const approvedPath of pathSpecsToRead) {
846
+ try {
847
+ const currentPath = await fs2.realpath(approvedPath);
848
+ const stats = await fs2.stat(currentPath);
849
+ if (currentPath === approvedPath && (stats.isFile() || stats.isDirectory()) && (isSubpath(configuredProjectTempDir, currentPath) || isSubpath(projectTempDir, currentPath) || config.getWorkspaceContext().isPathWithinWorkspace(currentPath)) && getIgnoreReason(currentPath) === void 0) {
850
+ revalidatedPathSpecs.push(currentPath);
851
+ const displayPath = displayPaths.get(approvedPath);
852
+ if (displayPath) revalidatedDisplayPaths.set(currentPath, displayPath);
853
+ validatedPathIdentities.set(currentPath, {
854
+ dev: stats.dev,
855
+ ino: stats.ino
856
+ });
857
+ } else {
858
+ pruneSkippedPath(approvedPath);
859
+ onDebugMessage(
860
+ `Path ${approvedPath} failed revalidation and will be skipped.`
861
+ );
862
+ }
863
+ } catch {
864
+ pruneSkippedPath(approvedPath);
865
+ onDebugMessage(
866
+ `Path ${approvedPath} changed before it could be read and will be skipped.`
867
+ );
868
+ }
869
+ }
870
+ initialQueryText = buildInitialQueryText();
871
+ if (revalidatedPathSpecs.length > 0) {
791
872
  try {
792
873
  const result = await readManyFiles(config, {
793
- paths: pathSpecsToRead,
874
+ paths: revalidatedPathSpecs,
794
875
  signal,
795
- preserveUnsupportedImageForBridge: shouldRunVisionBridge(config)
876
+ preserveUnsupportedImageForBridge: shouldRunVisionBridge(config),
877
+ validatedPathIdentities,
878
+ displayPaths: revalidatedDisplayPaths
796
879
  });
797
880
  const parts = Array.isArray(result.contentParts) ? result.contentParts : [result.contentParts];
798
881
  fileDisplays = result.files.map((file, index) => ({
@@ -2,12 +2,12 @@
2
2
  "use strict";
3
3
  import {
4
4
  stringifyGenAiJson
5
- } from "./chunk-QDK4F2N5.js";
5
+ } from "./chunk-2DNKEBXY.js";
6
6
  import {
7
7
  getMeter,
8
8
  isTelemetrySdkInitialized,
9
9
  truncateSpanError
10
- } from "./chunk-QARJNL2V.js";
10
+ } from "./chunk-O2ZYHG33.js";
11
11
  import {
12
12
  require_src
13
13
  } from "./chunk-W4RQUHY3.js";
@@ -22,7 +22,7 @@ import {
22
22
  createDebugLogger,
23
23
  formatTraceparent,
24
24
  getActiveSpanTraceContext
25
- } from "./chunk-E2BHWIDT.js";
25
+ } from "./chunk-3RXUYQJI.js";
26
26
  import {
27
27
  ROOT_CONTEXT,
28
28
  SpanKind,
@@ -554,6 +554,8 @@ init_esbuild_shims();
554
554
  import { monitorEventLoopDelay } from "node:perf_hooks";
555
555
  var DEFAULT_RESOLUTION_MS = 20;
556
556
  var DEFAULT_STALL_THRESHOLD_MS = 1e3;
557
+ var DEFAULT_EVENT_LOOP_SUSPEND_THRESHOLD_MS = 5 * 60 * 1e3;
558
+ var DEFAULT_SUSPEND_CPU_RATIO = 0.01;
557
559
  var NS_PER_MS = 1e6;
558
560
  function startEventLoopLagMonitor(options = {}) {
559
561
  const resolutionMs = positiveFiniteOrDefault(
@@ -564,24 +566,54 @@ function startEventLoopLagMonitor(options = {}) {
564
566
  options.stallThresholdMs,
565
567
  DEFAULT_STALL_THRESHOLD_MS
566
568
  );
569
+ const suspendThresholdMs = positiveFiniteOrDefault(
570
+ options.suspendThresholdMs,
571
+ DEFAULT_EVENT_LOOP_SUSPEND_THRESHOLD_MS
572
+ );
573
+ const suspendCpuRatio = fractionOrDefault(
574
+ options.suspendCpuRatio,
575
+ DEFAULT_SUSPEND_CPU_RATIO
576
+ );
567
577
  const histogram = monitorEventLoopDelay({ resolution: resolutionMs });
568
578
  histogram.enable();
569
579
  let disposed = false;
570
580
  let lastReportedMaxMs = 0;
581
+ let lastObservedMaxMs = 0;
582
+ let lastCheckTimeMs = Date.now();
583
+ let lastCpuUsage = safeCpuUsage();
584
+ let pendingSuspendGapMs = 0;
571
585
  const readMaxMs = /* @__PURE__ */ __name(() => nsToMs(histogram.max), "readMaxMs");
572
- const checkForNewMaxStall = /* @__PURE__ */ __name(() => {
573
- if (disposed || !options.onNewMaxStall) return;
586
+ const checkHistogram = /* @__PURE__ */ __name(() => {
587
+ if (disposed) return;
588
+ const nowMs = Date.now();
589
+ const cpuUsage = safeCpuUsage();
590
+ const elapsedMs = Math.max(0, nowMs - lastCheckTimeMs);
574
591
  const maxMs = readMaxMs();
575
- if (maxMs >= stallThresholdMs && maxMs > lastReportedMaxMs) {
592
+ const newMaxMs = maxMs > lastObservedMaxMs ? maxMs : 0;
593
+ const cpuRatio = calculateCpuRatio(lastCpuUsage, cpuUsage, elapsedMs);
594
+ lastCheckTimeMs = nowMs;
595
+ if (cpuUsage) lastCpuUsage = cpuUsage;
596
+ lastObservedMaxMs = maxMs;
597
+ const isLowCpuGap = elapsedMs >= suspendThresholdMs && cpuRatio !== void 0 && cpuRatio <= suspendCpuRatio;
598
+ const suspendGapMs = isLowCpuGap ? elapsedMs : pendingSuspendGapMs;
599
+ pendingSuspendGapMs = isLowCpuGap ? elapsedMs : 0;
600
+ if (newMaxMs >= suspendThresholdMs && suspendGapMs >= suspendThresholdMs && newMaxMs <= suspendGapMs * 1.5) {
601
+ histogram.reset();
602
+ lastObservedMaxMs = 0;
603
+ lastReportedMaxMs = 0;
604
+ pendingSuspendGapMs = 0;
605
+ return;
606
+ }
607
+ if (options.onNewMaxStall && maxMs >= stallThresholdMs && maxMs > lastReportedMaxMs) {
576
608
  lastReportedMaxMs = maxMs;
577
609
  try {
578
610
  options.onNewMaxStall(maxMs);
579
611
  } catch {
580
612
  }
581
613
  }
582
- }, "checkForNewMaxStall");
583
- const interval = options.onNewMaxStall !== void 0 ? setInterval(checkForNewMaxStall, resolutionMs) : void 0;
584
- interval?.unref();
614
+ }, "checkHistogram");
615
+ const interval = setInterval(checkHistogram, resolutionMs);
616
+ interval.unref();
585
617
  return {
586
618
  snapshot() {
587
619
  return {
@@ -594,14 +626,26 @@ function startEventLoopLagMonitor(options = {}) {
594
626
  dispose() {
595
627
  if (disposed) return;
596
628
  disposed = true;
597
- if (interval) {
598
- clearInterval(interval);
599
- }
629
+ clearInterval(interval);
600
630
  histogram.disable();
601
631
  }
602
632
  };
603
633
  }
604
634
  __name(startEventLoopLagMonitor, "startEventLoopLagMonitor");
635
+ function safeCpuUsage() {
636
+ try {
637
+ return process.cpuUsage();
638
+ } catch {
639
+ return void 0;
640
+ }
641
+ }
642
+ __name(safeCpuUsage, "safeCpuUsage");
643
+ function calculateCpuRatio(previous, current, elapsedMs) {
644
+ if (!previous || !current || elapsedMs <= 0) return void 0;
645
+ const cpuMicroseconds = current.user - previous.user + (current.system - previous.system);
646
+ return Math.max(0, cpuMicroseconds / (elapsedMs * 1e3));
647
+ }
648
+ __name(calculateCpuRatio, "calculateCpuRatio");
605
649
  function nsToMs(value) {
606
650
  return Number.isFinite(value) ? value / NS_PER_MS : 0;
607
651
  }
@@ -610,6 +654,10 @@ function positiveFiniteOrDefault(value, fallback) {
610
654
  return value !== void 0 && Number.isFinite(value) && value > 0 ? value : fallback;
611
655
  }
612
656
  __name(positiveFiniteOrDefault, "positiveFiniteOrDefault");
657
+ function fractionOrDefault(value, fallback) {
658
+ return value !== void 0 && Number.isFinite(value) && value >= 0 && value <= 1 ? value : fallback;
659
+ }
660
+ __name(fractionOrDefault, "fractionOrDefault");
613
661
 
614
662
  // packages/core/src/telemetry/event-loop-lag-metrics.ts
615
663
  init_esbuild_shims();
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  BaseJsonOutputAdapter
5
- } from "./chunk-JJPKFJBT.js";
5
+ } from "./chunk-A2FOI762.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";