@qwen-code/qwen-code 0.19.12 → 0.20.0-nightly.20260721.cda0e0348

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 (280) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +1 -1
  2. package/bundled/qc-helper/docs/features/commands.md +54 -0
  3. package/bundled/qc-helper/docs/integration-github-action.md +1 -1
  4. package/bundled/qc-helper/docs/qwen-serve.md +44 -6
  5. package/bundled/review/DESIGN.md +2 -2
  6. package/bundled/review/SKILL.md +13 -9
  7. package/chunks/{MaxSizedBox-QOXLJGAF.js → MaxSizedBox-EE76OHAP.js} +30 -27
  8. package/chunks/{StandaloneSessionPicker-FLV6CGYJ.js → StandaloneSessionPicker-WZH4PC3K.js} +50 -45
  9. package/chunks/{acpAgent-OB2CTF3P.js → acpAgent-2ATF4LMP.js} +437 -156
  10. package/chunks/{agent-CKSI7BTR.js → agent-KTOOFWMV.js} +22 -22
  11. package/chunks/{agent-headless-U36LIYTU.js → agent-headless-WVJCQ27D.js} +22 -22
  12. package/chunks/{anthropicContentGenerator-ZZRGFEES.js → anthropicContentGenerator-W4JLNYWQ.js} +6 -5
  13. package/chunks/{artifact-tool-PHO5XEGZ.js → artifact-tool-WBCAMD3O.js} +2 -2
  14. package/chunks/{askUserQuestion-CEPBT47X.js → askUserQuestion-6DZC4UV5.js} +2 -2
  15. package/chunks/{bridge-AIKTINJG.js → bridge-T4TLAZSJ.js} +25 -25
  16. package/chunks/build-SSCNEHZZ.js +62 -0
  17. package/chunks/{ca-2SL2BXTK.js → ca-ISKASTR5.js} +606 -200
  18. package/chunks/{channel-worker-group-NEUVTPB2.js → channel-worker-group-QZV2SP5U.js} +4 -4
  19. package/chunks/{channel-worker-manager-7CQVOVWV.js → channel-worker-manager-3GMAU45H.js} +4 -4
  20. package/chunks/{channel-worker-supervisor-3BU2KNCZ.js → channel-worker-supervisor-QCXSXCRY.js} +3 -3
  21. package/chunks/{chunk-6ETOSWAO.js → chunk-246TW4IX.js} +3 -3
  22. package/chunks/{chunk-2CCDMJM7.js → chunk-25Y6JSH2.js} +3 -3
  23. package/chunks/{chunk-XSEWNUMZ.js → chunk-2CWOJ2FA.js} +8 -8
  24. package/chunks/{chunk-UZC5VPOJ.js → chunk-2GFRA3MN.js} +3 -3
  25. package/chunks/chunk-2GOPPEHK.js +442 -0
  26. package/chunks/{chunk-MRE77ST5.js → chunk-2ITGJJE2.js} +69 -2216
  27. package/chunks/{chunk-BABX5XRO.js → chunk-2LI23QA6.js} +1 -1
  28. package/chunks/{chunk-EFAXBOQO.js → chunk-32F7BZSK.js} +7 -7
  29. package/chunks/chunk-43T5WDQ7.js +127 -0
  30. package/chunks/{chunk-DJ4VHAFJ.js → chunk-4CWPMWCD.js} +7 -3
  31. package/chunks/{chunk-GMUPIMHF.js → chunk-4RA7PWIY.js} +3 -3
  32. package/chunks/{chunk-6IITZE7O.js → chunk-5JX5EWR5.js} +7 -7
  33. package/chunks/{chunk-OBSLEYCD.js → chunk-5PZ6R37W.js} +29 -2
  34. package/chunks/{chunk-HTHUX2T5.js → chunk-5QWWOFGG.js} +0 -1
  35. package/chunks/{chunk-3DJY4IFO.js → chunk-5SCI6E3E.js} +1 -1
  36. package/chunks/{chunk-GSPWDTYY.js → chunk-5WG2K5RH.js} +53 -16
  37. package/chunks/{chunk-NPMVLWYL.js → chunk-5YVZ2XLV.js} +6 -6
  38. package/chunks/{chunk-TKASNYDS.js → chunk-6DHWO5ZF.js} +3 -3
  39. package/chunks/{chunk-4CHDYDG3.js → chunk-6EFTQYW7.js} +1 -1
  40. package/chunks/{chunk-RKUMFUFM.js → chunk-6MC5ASQK.js} +4 -4
  41. package/chunks/{chunk-HZ4M2UQD.js → chunk-6RVJRVQR.js} +1 -1
  42. package/chunks/{chunk-W6CQPLWM.js → chunk-6ZBPS62S.js} +1 -1
  43. package/chunks/chunk-7KGXAXF7.js +114 -0
  44. package/chunks/{chunk-PK7COE5O.js → chunk-ABIL4ZQU.js} +1 -1
  45. package/chunks/{chunk-OEHCAWUA.js → chunk-ACW3VNUE.js} +2 -2
  46. package/chunks/{chunk-APOFULHK.js → chunk-AWVS63WA.js} +7 -6
  47. package/chunks/{chunk-KGWA7XYL.js → chunk-AY3CSB6F.js} +6 -226
  48. package/chunks/{chunk-XAAEDML2.js → chunk-AYCDXHZB.js} +1 -1
  49. package/chunks/{chunk-42VIHAYT.js → chunk-B452RETY.js} +1 -1
  50. package/chunks/{chunk-VAJS2E2D.js → chunk-BDBMYST4.js} +1 -1
  51. package/chunks/{chunk-5N7M4XYN.js → chunk-BUKOHGBE.js} +5 -5
  52. package/chunks/{chunk-F2RR4HO2.js → chunk-BVLROR2T.js} +1 -1
  53. package/chunks/{chunk-WIYV7CSF.js → chunk-BWK3FX3K.js} +3 -3
  54. package/chunks/{chunk-UE5TZ55T.js → chunk-C27BYUX6.js} +29 -2
  55. package/chunks/{chunk-KRMARA3A.js → chunk-CG2HPAVD.js} +29 -13
  56. package/chunks/{chunk-UOA2IHRI.js → chunk-CPCVCKKF.js} +1 -1
  57. package/chunks/{chunk-HD6EGS5K.js → chunk-CUJX3F4X.js} +31 -6
  58. package/chunks/{chunk-4RPARQ5D.js → chunk-D2VIDMVM.js} +2 -2
  59. package/chunks/{chunk-PUKUUASO.js → chunk-DMRO4GU2.js} +1 -1
  60. package/chunks/{chunk-64GC5EMF.js → chunk-DZZIOIVF.js} +1 -1
  61. package/chunks/{chunk-FUSMC3SZ.js → chunk-E5QFCC4X.js} +13 -8
  62. package/chunks/{chunk-LKR7QQ63.js → chunk-EAUYY7SS.js} +3 -3
  63. package/chunks/{chunk-NE6HHLL3.js → chunk-EDMGFJ3E.js} +2 -2
  64. package/chunks/{chunk-J2MKYJKZ.js → chunk-EIAK6Q2B.js} +2 -2
  65. package/chunks/{chunk-WEPXQKGP.js → chunk-EZVDJFZ7.js} +1 -1
  66. package/chunks/{chunk-NALRQ3SG.js → chunk-FCUUJKZF.js} +394 -128
  67. package/chunks/{chunk-4XCVGEEX.js → chunk-FSL5W5TI.js} +3 -3
  68. package/chunks/{chunk-CHPQFLW6.js → chunk-FYA3Y5JR.js} +5 -5
  69. package/chunks/{chunk-V4PCIS25.js → chunk-FZVSFBNW.js} +69 -7
  70. package/chunks/{chunk-4MPYGENG.js → chunk-G45NOBV7.js} +6 -6
  71. package/chunks/{chunk-OSSDHJDU.js → chunk-G45X5TRN.js} +1 -1
  72. package/chunks/{chunk-3B6PSWHE.js → chunk-GH7OEOYU.js} +4 -4
  73. package/chunks/{chunk-KANTXY7B.js → chunk-GKY2OJ7R.js} +2 -2
  74. package/chunks/chunk-GMGDLUC7.js +37 -0
  75. package/chunks/{chunk-2476XGOU.js → chunk-GPILFVPY.js} +1 -1
  76. package/chunks/{chunk-EISVEV45.js → chunk-H24SOJIQ.js} +2 -2
  77. package/chunks/{chunk-J6NT5YTN.js → chunk-H2XVO6NE.js} +1 -289
  78. package/chunks/{chunk-QIFTJDBY.js → chunk-IM2A6YO3.js} +1 -1
  79. package/chunks/{chunk-R3EDIMYZ.js → chunk-IYZENXFW.js} +1 -1
  80. package/chunks/{chunk-LPHGXXZX.js → chunk-JD3MKVKL.js} +1 -1
  81. package/chunks/{chunk-NUHSLBJZ.js → chunk-JNWZQ27S.js} +15 -9
  82. package/chunks/{chunk-ETN2G32U.js → chunk-JPRLCXAO.js} +4 -4
  83. package/chunks/{chunk-WHQNBBWW.js → chunk-JQMBPGOU.js} +2 -2
  84. package/chunks/{chunk-5QSVANRT.js → chunk-JR6UJ24K.js} +2 -2
  85. package/chunks/{chunk-VLHQMOZK.js → chunk-JRW46GQX.js} +3 -3
  86. package/chunks/{chunk-DUR7BZYK.js → chunk-KRI4VCHX.js} +53 -28
  87. package/chunks/{chunk-PR5XQ73G.js → chunk-KTNIZG2C.js} +2 -2
  88. package/chunks/{chunk-QSG4ZFG4.js → chunk-KTUQMDEP.js} +1 -1
  89. package/chunks/{chunk-HVGJWOR6.js → chunk-L4YSPHR4.js} +2 -2
  90. package/chunks/{chunk-BEZPRKD3.js → chunk-LC5CAVMS.js} +160 -2
  91. package/chunks/{chunk-67Q33DQY.js → chunk-LLDGOZMJ.js} +4 -4
  92. package/chunks/{chunk-UCTCDLDS.js → chunk-LWQ4IAOJ.js} +136 -4
  93. package/chunks/{chunk-GEHSF7MS.js → chunk-NEEB7UEN.js} +2545 -1974
  94. package/chunks/{chunk-GCY7QTCE.js → chunk-NO6XTCYT.js} +1822 -424
  95. package/chunks/{chunk-JCJPZMJV.js → chunk-OOCI5VVU.js} +1 -1
  96. package/chunks/{chunk-XSPFQQRE.js → chunk-OONJNQ42.js} +3 -3
  97. package/chunks/{chunk-ANRANWVE.js → chunk-OP4MOGXF.js} +1 -1
  98. package/chunks/{chunk-GW7BONBU.js → chunk-OV2KB55J.js} +5 -5
  99. package/chunks/{chunk-CPU6I5YV.js → chunk-P64HXIC5.js} +115 -32
  100. package/chunks/{chunk-SGPFJMRP.js → chunk-PBATSWUQ.js} +1 -1
  101. package/chunks/{chunk-GXFYV7MP.js → chunk-PFKNXN67.js} +1106 -592
  102. package/chunks/{chunk-KNGZ5EYL.js → chunk-PYNCSQSI.js} +198 -120
  103. package/chunks/{chunk-I7RRHHYG.js → chunk-QKTHJXCS.js} +1 -1
  104. package/chunks/chunk-QKYTTBYW.js +624 -0
  105. package/chunks/{chunk-76BFY7AF.js → chunk-QTERJVPZ.js} +1 -6
  106. package/chunks/{chunk-W4UN42YP.js → chunk-R3VZNHRX.js} +85 -21
  107. package/chunks/chunk-R5N7NF5D.js +1187 -0
  108. package/chunks/{chunk-ZSDFNE6Y.js → chunk-RF34V75B.js} +3 -3
  109. package/chunks/{chunk-HCCR43AY.js → chunk-RFIAR4YL.js} +1 -1
  110. package/chunks/chunk-RS7MT2QG.js +305 -0
  111. package/chunks/{chunk-BKNPMEN6.js → chunk-RVLZCXEE.js} +162 -17
  112. package/chunks/chunk-SV5PQVQE.js +71 -0
  113. package/chunks/{chunk-3ESL7JXA.js → chunk-U4VGYZN7.js} +3 -3
  114. package/chunks/{chunk-4CA4WUMS.js → chunk-UEY4AYUL.js} +2 -2
  115. package/chunks/{chunk-ZGT623SG.js → chunk-USTF7LPI.js} +12 -12
  116. package/chunks/chunk-V7RNNPGC.js +44 -0
  117. package/chunks/{chunk-VEFR4XJQ.js → chunk-W3BKN3LO.js} +1 -1
  118. package/chunks/{chunk-4SJJT466.js → chunk-WQQDJE2P.js} +94 -177
  119. package/chunks/{chunk-KMJOMWHE.js → chunk-WRRF6TEQ.js} +1 -1
  120. package/chunks/{chunk-GLH2NTPB.js → chunk-XCHUDLER.js} +1 -1
  121. package/chunks/{chunk-7SX6WZNO.js → chunk-XVVH63JG.js} +3 -3
  122. package/chunks/{chunk-N47VAEAJ.js → chunk-XZOBDSDG.js} +2379 -1291
  123. package/chunks/chunk-YGIUIIIF.js +125 -0
  124. package/chunks/{chunk-335ECZTA.js → chunk-ZEOZL37W.js} +1 -1
  125. package/chunks/{computer-use-4PUGCUQK.js → computer-use-M6MGRJF2.js} +22 -22
  126. package/chunks/{config-utils-6PJUXHLI.js → config-utils-MOGE4EVB.js} +3 -3
  127. package/chunks/{contextCommand-C57KTWFV.js → contextCommand-HTRJJYNE.js} +25 -26
  128. package/chunks/{create-sub-session-5Q42XR6I.js → create-sub-session-MB35IHCR.js} +22 -22
  129. package/chunks/{create-sub-session-DIJOV6HV.js → create-sub-session-P26FE5GG.js} +2 -2
  130. package/chunks/{cron-create-X462ERYA.js → cron-create-JWFHBDRQ.js} +4 -4
  131. package/chunks/{cron-delete-SL5UJUM3.js → cron-delete-GDX4E26G.js} +4 -4
  132. package/chunks/{cron-list-3MD6SVXI.js → cron-list-USMAIWPT.js} +4 -4
  133. package/chunks/{daemon-ZW6LHOXT.js → daemon-KLPTQIE4.js} +287 -143
  134. package/chunks/{daemon-status-provider-YPV3UXHT.js → daemon-status-provider-67EKK6S3.js} +29 -29
  135. package/chunks/{dist-NUXRQHC5.js → dist-OAV7LJGJ.js} +1 -1
  136. package/chunks/{dist-XLE6ODMB.js → dist-OMW6WDEO.js} +1 -1
  137. package/chunks/{dist-J2H4KTLB.js → dist-PJLG2XYX.js} +1 -1
  138. package/chunks/{dist-IEQSDXS7.js → dist-UIFWIFRO.js} +2 -2
  139. package/chunks/{dist-IGZMVS5R.js → dist-VGJTZL4E.js} +33 -22
  140. package/chunks/{dist-3DQNQJ6H.js → dist-XBJVSWS2.js} +1 -1
  141. package/chunks/{earlyInputCapture-5VDWSYAM.js → earlyInputCapture-7QJX25AC.js} +23 -23
  142. package/chunks/{edit-GORZTX2U.js → edit-BTPQWGAA.js} +23 -23
  143. package/chunks/{enter-worktree-LJB2AW4L.js → enter-worktree-N3SEYKOO.js} +22 -22
  144. package/chunks/{enterPlanMode-LIIPP37T.js → enterPlanMode-TN2JV5MY.js} +28 -23
  145. package/chunks/{environment-HQ2UHJ35.js → environment-HP6RK262.js} +24 -24
  146. package/chunks/{errors-6JD5VMVQ.js → errors-VHGRDDOQ.js} +24 -24
  147. package/chunks/{exit-worktree-IEP2WHOV.js → exit-worktree-FI3SQY3U.js} +22 -22
  148. package/chunks/{exitPlanMode-U5Z6XBLO.js → exitPlanMode-NZWRVIIY.js} +22 -22
  149. package/chunks/{fast-path-HFKNMP23.js → fast-path-EGP7AXNR.js} +3 -2
  150. package/chunks/{gemini-C2SCJH3N.js → gemini-AN5YMD5O.js} +70 -68
  151. package/chunks/{geminiContentGenerator-ADZTXEKV.js → geminiContentGenerator-ABTMU4FE.js} +4 -4
  152. package/chunks/{glob-GOAPGD6G.js → glob-5YABOPJB.js} +22 -22
  153. package/chunks/{grep-HZLSTX7D.js → grep-U67FKUJT.js} +22 -22
  154. package/chunks/{handleAutoUpdate-UF74WGFE.js → handleAutoUpdate-OOKBP5VD.js} +27 -28
  155. package/chunks/{i18n-FMXIYUOC.js → i18n-GMQV324P.js} +23 -23
  156. package/chunks/{initializer-ERDBM3DU.js → initializer-NWALZGQ5.js} +28 -28
  157. package/chunks/{installationInfo-LROMXYLX.js → installationInfo-Y3M433E7.js} +25 -23
  158. package/chunks/{keychain-token-storage-K23CFKGN.js → keychain-token-storage-DWRJMNH3.js} +2 -2
  159. package/chunks/{list-6JPJROU5.js → list-CQDDWHTS.js} +30 -30
  160. package/chunks/{loadedSettingsAdapter-QCWYUBBF.js → loadedSettingsAdapter-I5KG37EI.js} +27 -27
  161. package/chunks/{loop-wakeup-6H7OENTB.js → loop-wakeup-5GLTUBHA.js} +5 -5
  162. package/chunks/{ls-APTSOOS5.js → ls-FHBY3Y7I.js} +4 -4
  163. package/chunks/{lsp-HPACPJAN.js → lsp-B6VMEW6Y.js} +2 -2
  164. package/chunks/{mcp-3P3KWYWO.js → mcp-24HHCBSP.js} +27 -27
  165. package/chunks/{monitor-LMYKCF6R.js → monitor-Z7NZNNRC.js} +22 -22
  166. package/chunks/nonInteractiveCli-GVF2XDJT.js +126 -0
  167. package/chunks/{notebook-edit-IBEOVZ6A.js → notebook-edit-GFOYAQAZ.js} +23 -23
  168. package/chunks/{openaiContentGenerator-42PZKET5.js → openaiContentGenerator-XAAYV6WR.js} +11 -11
  169. package/chunks/{pidfile-VTBDIGOH.js → pidfile-ILI37KRQ.js} +23 -23
  170. package/chunks/{processUtils-L7ZKOGDG.js → processUtils-LIPJMLVZ.js} +2 -2
  171. package/chunks/{qwenContentGenerator-VR2CNFGI.js → qwenContentGenerator-DLJ3KKGZ.js} +24 -24
  172. package/chunks/{qwenOAuth2-6LS2T3Q6.js → qwenOAuth2-J47FU5PW.js} +11 -11
  173. package/chunks/react-SG7JAQSZ.js +8 -0
  174. package/chunks/{read-file-VSKOE22I.js → read-file-LCQ2KNNP.js} +8 -8
  175. package/chunks/{read-mcp-resource-C6NT52T6.js → read-mcp-resource-AKCL7I43.js} +2 -2
  176. package/chunks/{record-artifact-ENCU7QCL.js → record-artifact-PEUB7727.js} +2 -2
  177. package/chunks/resumeHistoryUtils-PSCSAKA6.js +78 -0
  178. package/chunks/{ripGrep-5V5FLW2A.js → ripGrep-Y2XW4EFC.js} +22 -22
  179. package/chunks/{run-qwen-serve-LSOPP4R2.js → run-qwen-serve-DQ5ZIR36.js} +1459 -148
  180. package/chunks/{runtime-LT7R4CS5.js → runtime-6MQFF2A6.js} +33 -31
  181. package/chunks/{scheduler-YOWQ7KZP.js → scheduler-K4S7NY3G.js} +22 -22
  182. package/chunks/{send-message-5GZ4FX2V.js → send-message-3RHE7HSM.js} +3 -3
  183. package/chunks/{serve-VWLBXKGK.js → serve-JFAAPC5J.js} +27 -27
  184. package/chunks/{server-3RW3FYOH.js → server-QB6CHRZN.js} +866 -271
  185. package/chunks/{session-ZONXFOBQ.js → session-FKPVXAAB.js} +79 -163
  186. package/chunks/{settings-JC3VC53L.js → settings-CADELKSU.js} +26 -26
  187. package/chunks/{shell-2NGEMAVM.js → shell-EON6WVVH.js} +22 -22
  188. package/chunks/{skill-3U2T6H3E.js → skill-FKSYXJ5U.js} +10 -10
  189. package/chunks/{spawnChannel-QEAUPARQ.js → spawnChannel-VM5IHLJO.js} +24 -24
  190. package/chunks/{src-75ZPXO7B.js → src-Q4XB6SVD.js} +66 -22
  191. package/chunks/{standalone-update-UUJWJWYY.js → standalone-update-KGZHPBMA.js} +24 -24
  192. package/chunks/{startInteractiveUI-V7XISPQ6.js → startInteractiveUI-EYDJIIIZ.js} +5484 -2045
  193. package/chunks/{syntheticOutput-ULOVVLY4.js → syntheticOutput-FG5PQKIR.js} +3 -3
  194. package/chunks/{task-create-DUE2PMNI.js → task-create-HX32YXO7.js} +7 -7
  195. package/chunks/{task-list-WVPNX7BZ.js → task-list-QWSY4ZIU.js} +5 -5
  196. package/chunks/{task-stop-CPEQWOT6.js → task-stop-GWC6UWAL.js} +2 -2
  197. package/chunks/{task-update-HY2LNFFB.js → task-update-NCTAB73Q.js} +7 -7
  198. package/chunks/{team-create-R6AXDYPG.js → team-create-CYP3YKYT.js} +22 -22
  199. package/chunks/{team-delete-JJV6IUOA.js → team-delete-KK37HTOG.js} +5 -5
  200. package/chunks/{team-plan-approval-O2ZPPT64.js → team-plan-approval-5LXIFKNV.js} +22 -22
  201. package/chunks/{theme-manager-YIX2IC2D.js → theme-manager-QOUMDWMP.js} +23 -23
  202. package/chunks/{todoWrite-JHHIDOIV.js → todoWrite-ERCAMLFS.js} +4 -4
  203. package/chunks/{tool-search-5IE2VO7X.js → tool-search-Q27QHQU3.js} +9 -9
  204. package/chunks/{total-session-admission-K6APQYEF.js → total-session-admission-HWVCZ2WR.js} +25 -25
  205. package/chunks/{trustedFolders-GPSSPVBF.js → trustedFolders-C6664IQC.js} +23 -23
  206. package/chunks/{update-relaunch-4BVAPX6Y.js → update-relaunch-QC3E4FZW.js} +9 -9
  207. package/chunks/{updateCheck-AHTHWLAM.js → updateCheck-MVUKJMBX.js} +33 -26
  208. package/chunks/useAutoAcceptIndicator-J234IFIS.js +80 -0
  209. package/chunks/{validateNonInterActiveAuth-UKAPCWDM.js → validateNonInterActiveAuth-YPPEKX4N.js} +61 -63
  210. package/chunks/{version-EXGWKKQE.js → version-5IXFQ4PT.js} +1 -1
  211. package/chunks/{web-fetch-ZDNE6FF2.js → web-fetch-L62NQVKN.js} +10 -10
  212. package/chunks/{workflow-G7U6OQWS.js → workflow-6MHBBFQU.js} +23 -23
  213. package/chunks/{workspace-providers-status-W6CEA6YM.js → workspace-providers-status-ZTW2B5QU.js} +30 -30
  214. package/chunks/{workspace-registration-store-OGBMWCLC.js → workspace-registration-store-P6QHCSMU.js} +7 -1
  215. package/chunks/{workspace-registry-ZUWQM44P.js → workspace-registry-R54M5O3W.js} +25 -25
  216. package/chunks/{workspace-service-UXX5P7GU.js → workspace-service-WYLRGM4A.js} +32 -32
  217. package/chunks/{workspace-skills-status-635B5R7N.js → workspace-skills-status-NN5QFU3A.js} +28 -28
  218. package/chunks/{write-file-DR3HN7IH.js → write-file-EAT3CHUK.js} +23 -23
  219. package/cli.js +11 -11
  220. package/locales/ca.js +763 -201
  221. package/package.json +3 -3
  222. package/web-shell/assets/{arc-_dVIKMdB.js → arc-B0iTWRo2.js} +1 -1
  223. package/web-shell/assets/{architectureDiagram-3BPJPVTR-MuN3nKpL.js → architectureDiagram-3BPJPVTR-DSQP4-9D.js} +1 -1
  224. package/web-shell/assets/{blockDiagram-GPEHLZMM-BtmvJjzx.js → blockDiagram-GPEHLZMM-BNPVXVT3.js} +1 -1
  225. package/web-shell/assets/{c4Diagram-AAUBKEIU-Dvi58_BU.js → c4Diagram-AAUBKEIU-DEHfJFiD.js} +1 -1
  226. package/web-shell/assets/channel-tVz-qNSq.js +1 -0
  227. package/web-shell/assets/{chunk-2J33WTMH-YqxOVhS1.js → chunk-2J33WTMH-VZ0uL1p9.js} +1 -1
  228. package/web-shell/assets/{chunk-4BX2VUAB-DoBgbC9z.js → chunk-4BX2VUAB-D5TKmvwG.js} +1 -1
  229. package/web-shell/assets/{chunk-55IACEB6-3NEQrBAr.js → chunk-55IACEB6-BDW1Lcq-.js} +1 -1
  230. package/web-shell/assets/{chunk-727SXJPM-DrCZQxp0.js → chunk-727SXJPM-Cj4h85iM.js} +1 -1
  231. package/web-shell/assets/{chunk-AQP2D5EJ-m_g3zjgv.js → chunk-AQP2D5EJ-5LeqiOhZ.js} +1 -1
  232. package/web-shell/assets/{chunk-FMBD7UC4-D1_crABJ.js → chunk-FMBD7UC4-BaTgsco7.js} +1 -1
  233. package/web-shell/assets/{chunk-ND2GUHAM-BdhgVtBx.js → chunk-ND2GUHAM-t3uGlIUk.js} +1 -1
  234. package/web-shell/assets/{chunk-QZHKN3VN-BlmThhm-.js → chunk-QZHKN3VN-rOnNXL2Q.js} +1 -1
  235. package/web-shell/assets/classDiagram-4FO5ZUOK-CWuaBxYV.js +1 -0
  236. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CWuaBxYV.js +1 -0
  237. package/web-shell/assets/{cose-bilkent-S5V4N54A-Cbjm_00Z.js → cose-bilkent-S5V4N54A-CcqXykgA.js} +1 -1
  238. package/web-shell/assets/{dagre-BM42HDAG-C39QNVgC.js → dagre-BM42HDAG-Dkjrchoy.js} +1 -1
  239. package/web-shell/assets/{diagram-2AECGRRQ-DNXSAixC.js → diagram-2AECGRRQ-B6lcra9M.js} +1 -1
  240. package/web-shell/assets/{diagram-5GNKFQAL-BCbGUPEA.js → diagram-5GNKFQAL-bAIzq3PT.js} +1 -1
  241. package/web-shell/assets/{diagram-KO2AKTUF-1eujKSDC.js → diagram-KO2AKTUF-G9MAZDNW.js} +1 -1
  242. package/web-shell/assets/{diagram-LMA3HP47-DUMKXgql.js → diagram-LMA3HP47-DVLF1uWZ.js} +1 -1
  243. package/web-shell/assets/{diagram-OG6HWLK6-BFktU3_u.js → diagram-OG6HWLK6-Cf7y20Tc.js} +1 -1
  244. package/web-shell/assets/{erDiagram-TEJ5UH35-BvJC7DLk.js → erDiagram-TEJ5UH35-C7ETZB3o.js} +1 -1
  245. package/web-shell/assets/{flowDiagram-I6XJVG4X-Cgu3PlOt.js → flowDiagram-I6XJVG4X-Cl2xgL6J.js} +1 -1
  246. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DLNXN5Xh.js → ganttDiagram-6RSMTGT7-BgjbMs3q.js} +1 -1
  247. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BQFRDv6R.js → gitGraphDiagram-PVQCEYII-JVX34Omm.js} +1 -1
  248. package/web-shell/assets/index-48bIcdqF.js +1197 -0
  249. package/web-shell/assets/{index-CdC3pjP3.js → index-BG7Zc4f_.js} +1 -1
  250. package/web-shell/assets/index-BI-JAO07.css +5 -0
  251. package/web-shell/assets/{infoDiagram-5YYISTIA-DT2mOSvp.js → infoDiagram-5YYISTIA-3NYyMeZU.js} +1 -1
  252. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-9fy_K4bd.js → ishikawaDiagram-YF4QCWOH-C03VCu-U.js} +1 -1
  253. package/web-shell/assets/{journeyDiagram-JHISSGLW-CoGSEuhE.js → journeyDiagram-JHISSGLW-C9PuBRZW.js} +1 -1
  254. package/web-shell/assets/{kanban-definition-UN3LZRKU-BP9hHYIj.js → kanban-definition-UN3LZRKU-C3LvioWR.js} +1 -1
  255. package/web-shell/assets/{linear-uIroDsmp.js → linear-Du6Yw8N_.js} +1 -1
  256. package/web-shell/assets/{mermaid.core-BUwoStsA.js → mermaid.core-BXY5D2-X.js} +5 -5
  257. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DZB-FWim.js → mindmap-definition-RKZ34NQL-2UrHLaDp.js} +1 -1
  258. package/web-shell/assets/{pieDiagram-4H26LBE5-YPptloKl.js → pieDiagram-4H26LBE5-dC03ml45.js} +1 -1
  259. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-dgk3DSzm.js → quadrantDiagram-W4KKPZXB-CD6jARrp.js} +1 -1
  260. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BH2En2i9.js → requirementDiagram-4Y6WPE33-BrK8aXfv.js} +1 -1
  261. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BB98feeI.js → sankeyDiagram-5OEKKPKP-B5Vitki_.js} +1 -1
  262. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CunAIGh8.js → sequenceDiagram-3UESZ5HK-CBy2t6Bo.js} +1 -1
  263. package/web-shell/assets/{stateDiagram-AJRCARHV-DTJs_-I2.js → stateDiagram-AJRCARHV-Enrka6T2.js} +1 -1
  264. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DUtYfXpW.js +1 -0
  265. package/web-shell/assets/{timeline-definition-PNZ67QCA-Cd4AN7O0.js → timeline-definition-PNZ67QCA-CwFq78ss.js} +1 -1
  266. package/web-shell/assets/{vennDiagram-CIIHVFJN-xIG-rUU9.js → vennDiagram-CIIHVFJN-BkOidM0g.js} +1 -1
  267. package/web-shell/assets/{wardley-L42UT6IY-D1UyjIcG.js → wardley-L42UT6IY-D_j13hQW.js} +1 -1
  268. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BVM0Mb99.js → wardleyDiagram-YWT4CUSO-7EveB1w6.js} +1 -1
  269. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BX31JDSz.js → xychartDiagram-2RQKCTM6-DRkBhMXr.js} +1 -1
  270. package/web-shell/index.html +2 -2
  271. package/chunks/chunk-EDFD7VOX.js +0 -368
  272. package/chunks/chunk-GFYFLDEG.js +0 -709
  273. package/chunks/chunk-LUJQUNKY.js +0 -3288
  274. package/chunks/nonInteractiveCli-YURFHZV5.js +0 -129
  275. package/web-shell/assets/channel-Bi5TehaT.js +0 -1
  276. package/web-shell/assets/classDiagram-4FO5ZUOK-BKhhRdd1.js +0 -1
  277. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BKhhRdd1.js +0 -1
  278. package/web-shell/assets/index-C_ouplMQ.js +0 -1187
  279. package/web-shell/assets/index-XGDFJE-X.css +0 -5
  280. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DrfFMYta.js +0 -1
@@ -2,19 +2,19 @@
2
2
  "use strict";
3
3
  import {
4
4
  getErrorMessage
5
- } from "./chunk-UZC5VPOJ.js";
5
+ } from "./chunk-2GFRA3MN.js";
6
6
  import {
7
7
  extensionToOutputString,
8
8
  getExtensionManager
9
- } from "./chunk-RKUMFUFM.js";
9
+ } from "./chunk-6MC5ASQK.js";
10
10
  import {
11
11
  loadSettings
12
- } from "./chunk-6IITZE7O.js";
12
+ } from "./chunk-5JX5EWR5.js";
13
13
  import {
14
14
  initializeI18n,
15
15
  resolveLanguageSetting,
16
16
  t
17
- } from "./chunk-TKASNYDS.js";
17
+ } from "./chunk-6DHWO5ZF.js";
18
18
  import {
19
19
  writeStderrLine,
20
20
  writeStdoutLine
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-FEOZBUMT.js";
6
6
  import {
7
7
  TextTokenizer
8
- } from "./chunk-V4PCIS25.js";
8
+ } from "./chunk-FZVSFBNW.js";
9
9
  import {
10
10
  createDebugLogger
11
- } from "./chunk-UE5TZ55T.js";
11
+ } from "./chunk-C27BYUX6.js";
12
12
  import {
13
13
  init_esbuild_shims
14
14
  } from "./chunk-5O2XNYP6.js";
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  STATUS_SCHEMA_VERSION
5
- } from "./chunk-64GC5EMF.js";
5
+ } from "./chunk-DZZIOIVF.js";
6
6
  import {
7
7
  detectRuntime,
8
8
  redactProxyCredentials
9
- } from "./chunk-4CHDYDG3.js";
9
+ } from "./chunk-6EFTQYW7.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -5,17 +5,17 @@ import {
5
5
  } from "./chunk-2W3OOD4W.js";
6
6
  import {
7
7
  STATUS_SCHEMA_VERSION
8
- } from "./chunk-64GC5EMF.js";
8
+ } from "./chunk-DZZIOIVF.js";
9
9
  import {
10
10
  loadSettings
11
- } from "./chunk-6IITZE7O.js";
11
+ } from "./chunk-5JX5EWR5.js";
12
12
  import {
13
13
  writeStderrLine
14
14
  } from "./chunk-OWAK7LMW.js";
15
15
  import {
16
16
  SkillManager,
17
17
  isSafeModeEnv
18
- } from "./chunk-GCY7QTCE.js";
18
+ } from "./chunk-NO6XTCYT.js";
19
19
  import {
20
20
  init_esbuild_shims
21
21
  } from "./chunk-5O2XNYP6.js";
@@ -2,12 +2,12 @@
2
2
  "use strict";
3
3
  import {
4
4
  buildPermissionSettings
5
- } from "./chunk-QIFTJDBY.js";
5
+ } from "./chunk-IM2A6YO3.js";
6
6
  import {
7
7
  resolveVoiceStreamConfig,
8
8
  resolveVoiceTranscriptionConfig,
9
9
  transcribeVoiceAudio
10
- } from "./chunk-3ESL7JXA.js";
10
+ } from "./chunk-U4VGYZN7.js";
11
11
  import {
12
12
  getVoiceSettingsScope,
13
13
  isSelectableVoiceModel,
@@ -16,7 +16,7 @@ import {
16
16
  readVoiceMode,
17
17
  readVoiceModel,
18
18
  resolveVoiceTransport
19
- } from "./chunk-2476XGOU.js";
19
+ } from "./chunk-GPILFVPY.js";
20
20
  import {
21
21
  WorkspacePermissionRulesSessionRequiredError,
22
22
  WorkspaceSettingsPartialPersistError,
@@ -46,26 +46,27 @@ import {
46
46
  createIdleWorkspaceProvidersStatus,
47
47
  createIdleWorkspaceSkillsStatus,
48
48
  mapDomainErrorToErrorKind
49
- } from "./chunk-64GC5EMF.js";
49
+ } from "./chunk-DZZIOIVF.js";
50
50
  import {
51
51
  getPersistScopeForModelSelection,
52
52
  loadSettings
53
- } from "./chunk-6IITZE7O.js";
53
+ } from "./chunk-5JX5EWR5.js";
54
54
  import {
55
55
  getWorkspaceTrustStatus
56
- } from "./chunk-GMUPIMHF.js";
56
+ } from "./chunk-4RA7PWIY.js";
57
57
  import {
58
- writeStderrLine
58
+ writeStderrLine,
59
+ writeStderrLineSafe
59
60
  } from "./chunk-OWAK7LMW.js";
60
61
  import {
61
62
  ModelsConfig,
62
63
  SkillManager,
63
64
  require_yauzl
64
- } from "./chunk-GCY7QTCE.js";
65
+ } from "./chunk-NO6XTCYT.js";
65
66
  import {
66
67
  Storage,
67
68
  createDebugLogger
68
- } from "./chunk-UE5TZ55T.js";
69
+ } from "./chunk-C27BYUX6.js";
69
70
  import {
70
71
  init_esbuild_shims
71
72
  } from "./chunk-5O2XNYP6.js";
@@ -1187,11 +1188,11 @@ function createDaemonWorkspaceService(deps) {
1187
1188
  );
1188
1189
  },
1189
1190
  async preheatAcpChild(_ctx, opts) {
1190
- const startedAt = Date.now();
1191
+ const startedAt = performance.now();
1191
1192
  const channelLive = /* @__PURE__ */ __name(() => isChannelLive?.() ?? false, "channelLive");
1192
1193
  const finish = /* @__PURE__ */ __name((result) => ({
1193
1194
  ...result,
1194
- durationMs: Date.now() - startedAt
1195
+ durationMs: Math.max(0, Math.round(performance.now() - startedAt))
1195
1196
  }), "finish");
1196
1197
  if (channelLive()) {
1197
1198
  return finish({ ready: true, channelLive: true });
@@ -1201,43 +1202,67 @@ function createDaemonWorkspaceService(deps) {
1201
1202
  ready: false,
1202
1203
  channelLive: false,
1203
1204
  reason: "error",
1204
- error: "ACP preheat is not wired"
1205
+ error: "ACP preheat is unavailable"
1205
1206
  });
1206
1207
  }
1207
1208
  if (!inFlightAcpPreheat) {
1208
- inFlightAcpPreheat = preheatAcpChildOnBridge().finally(() => {
1209
- inFlightAcpPreheat = void 0;
1210
- });
1211
- void inFlightAcpPreheat.catch((err) => {
1212
- writeStderrLine(
1213
- `qwen serve: ACP preheat failed: ${err instanceof Error ? err.message : String(err)}`
1214
- );
1215
- });
1209
+ const promise = Promise.resolve().then(preheatAcpChildOnBridge);
1210
+ inFlightAcpPreheat = promise;
1211
+ void promise.then(
1212
+ () => {
1213
+ if (inFlightAcpPreheat === promise) {
1214
+ inFlightAcpPreheat = void 0;
1215
+ }
1216
+ },
1217
+ (err) => {
1218
+ try {
1219
+ writeStderrLineSafe(
1220
+ `qwen serve: ACP preheat failed: ${err instanceof Error ? err.message : String(err)}`
1221
+ );
1222
+ } finally {
1223
+ if (inFlightAcpPreheat === promise) {
1224
+ inFlightAcpPreheat = void 0;
1225
+ }
1226
+ }
1227
+ }
1228
+ );
1216
1229
  }
1230
+ const sharedPreheat = inFlightAcpPreheat;
1217
1231
  try {
1218
1232
  await withTimeout(
1219
- inFlightAcpPreheat,
1233
+ sharedPreheat,
1220
1234
  opts?.timeoutMs ?? 5e3,
1221
1235
  "ACP preheat"
1222
1236
  );
1223
1237
  } catch (err) {
1224
1238
  if (err instanceof TimeoutError) {
1225
- inFlightAcpPreheat = void 0;
1226
- writeStderrLine(
1239
+ writeStderrLineSafe(
1227
1240
  `qwen serve: ACP preheat timed out after ${opts?.timeoutMs ?? 5e3}ms`
1228
1241
  );
1229
1242
  }
1230
1243
  const live2 = channelLive();
1231
- const message = err instanceof Error ? err.message : String(err);
1244
+ if (live2) {
1245
+ return finish({ ready: true, channelLive: true });
1246
+ }
1232
1247
  return finish({
1233
- ready: live2,
1234
- channelLive: live2,
1248
+ ready: false,
1249
+ channelLive: false,
1235
1250
  reason: err instanceof TimeoutError ? "timeout" : "error",
1236
- error: message
1251
+ error: err instanceof TimeoutError ? "ACP preheat did not complete before the timeout" : "ACP preheat failed"
1237
1252
  });
1238
1253
  }
1239
1254
  const live = channelLive();
1240
- return finish({ ready: live, channelLive: live });
1255
+ if (!live) {
1256
+ writeStderrLineSafe(
1257
+ "qwen serve: ACP preheat resolved without a live channel"
1258
+ );
1259
+ }
1260
+ return live ? finish({ ready: true, channelLive: true }) : finish({
1261
+ ready: false,
1262
+ channelLive: false,
1263
+ reason: "error",
1264
+ error: "ACP preheat did not produce a live channel"
1265
+ });
1241
1266
  },
1242
1267
  async getWorkspaceAcpStatus(_ctx) {
1243
1268
  return { channelLive: isChannelLive?.() ?? false };
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-QRUIS3DN.js";
8
8
  import {
9
9
  isWorkspaceTrusted
10
- } from "./chunk-GMUPIMHF.js";
10
+ } from "./chunk-4RA7PWIY.js";
11
11
  import {
12
12
  require_main
13
13
  } from "./chunk-5M6IDOMF.js";
@@ -15,7 +15,7 @@ import {
15
15
  QWEN_DIR,
16
16
  Storage,
17
17
  getErrorMessage
18
- } from "./chunk-UE5TZ55T.js";
18
+ } from "./chunk-C27BYUX6.js";
19
19
  import {
20
20
  init_esbuild_shims
21
21
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  atomicWriteFileSync
5
- } from "./chunk-VAJS2E2D.js";
5
+ } from "./chunk-BDBMYST4.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -4,14 +4,14 @@ import {
4
4
  resolveModelConfig,
5
5
  resolveProviderProtocol,
6
6
  stripRuntimeSnapshotPrefix
7
- } from "./chunk-GCY7QTCE.js";
7
+ } from "./chunk-NO6XTCYT.js";
8
8
  import {
9
9
  external_exports
10
10
  } from "./chunk-H6XPXXMH.js";
11
11
  import {
12
12
  AuthType,
13
13
  MODEL_GENERATION_CONFIG_FIELDS
14
- } from "./chunk-CPU6I5YV.js";
14
+ } from "./chunk-P64HXIC5.js";
15
15
  import {
16
16
  REASONING_EFFORT_TIERS,
17
17
  normalizeReasoningEffort
@@ -16566,6 +16566,8 @@ var SERVE_CAPABILITY_REGISTRY = {
16566
16566
  workspace_mcp: { since: "v1" },
16567
16567
  workspace_skills: { since: "v1" },
16568
16568
  workspace_providers: { since: "v1" },
16569
+ workspace_acp_preheat: { since: "v1" },
16570
+ workspace_acp_status: { since: "v1" },
16569
16571
  auth_provider_install: { since: "v1" },
16570
16572
  // Workspace memory CRUD (`GET/POST /workspace/memory`). Daemon exposes
16571
16573
  // hierarchical QWEN.md state and accepts append/replace writes scoped
@@ -16788,6 +16790,9 @@ var SERVE_CAPABILITY_REGISTRY = {
16788
16790
  // Singular session shell routes resolve the owning live workspace runtime.
16789
16791
  multi_workspace_session_shell: { since: "v1" },
16790
16792
  persistent_workspace_registration: { since: "v1" },
16793
+ // Optional presentation-only names and updates to those names for workspace
16794
+ // runtimes. Workspace ids and canonical paths remain the routing identities.
16795
+ workspace_display_name: { since: "v1" },
16791
16796
  workspace_runtime_removal: { since: "v1" },
16792
16797
  // Workspace-qualified core REST routes under `/workspaces/:workspace/...`.
16793
16798
  // Covers core file/status/permissions/trust/lifecycle/MCP/tool, memory,
@@ -17459,6 +17464,7 @@ function parseDaemonStatusDetail(raw) {
17459
17464
  }
17460
17465
  __name(parseDaemonStatusDetail, "parseDaemonStatusDetail");
17461
17466
  async function buildDaemonStatusResponse(detail, input) {
17467
+ const daemonLogStatus = input.daemonLog?.getStatus();
17462
17468
  const bridgeSnapshot = input.bridge.getDaemonStatusSnapshot();
17463
17469
  const lastActivity = input.bridge.lastActivityAt ?? null;
17464
17470
  const workspaceRuntimes = input.workspaceRegistry?.list();
@@ -17531,6 +17537,13 @@ async function buildDaemonStatusResponse(detail, input) {
17531
17537
  totalAdmissionSnapshot,
17532
17538
  workspaceSnapshots
17533
17539
  );
17540
+ if (daemonLogStatus?.health === "degraded") {
17541
+ issues.push({
17542
+ code: "daemon_log_degraded",
17543
+ severity: "warning",
17544
+ message: "Daemon file logging is degraded; inspect full status for details."
17545
+ });
17546
+ }
17534
17547
  if (detail === "full") {
17535
17548
  full = await buildFullStatus(
17536
17549
  input,
@@ -17553,7 +17566,17 @@ async function buildDaemonStatusResponse(detail, input) {
17553
17566
  ...input.startup ? { startup: cloneStartup(input.startup) } : {},
17554
17567
  ...input.qwenCodeVersion ? { qwenCodeVersion: input.qwenCodeVersion } : {},
17555
17568
  ...input.daemonLog?.getDaemonId() ? { daemonId: input.daemonLog.getDaemonId() } : {},
17556
- ...detail === "full" && input.daemonLog?.getLogPath() ? { logPath: input.daemonLog.getLogPath() } : {}
17569
+ ...daemonLogStatus ? {
17570
+ runId: daemonLogStatus.runId,
17571
+ logMode: daemonLogStatus.mode,
17572
+ logHealth: daemonLogStatus.health
17573
+ } : {},
17574
+ ...detail === "full" && input.daemonLog?.getLogPath() ? { logPath: input.daemonLog.getLogPath() } : {},
17575
+ ...detail === "full" && daemonLogStatus ? {
17576
+ logIssues: daemonLogStatus.issues,
17577
+ logDroppedRecords: daemonLogStatus.droppedRecords,
17578
+ logDroppedBytes: daemonLogStatus.droppedBytes
17579
+ } : {}
17557
17580
  },
17558
17581
  security: {
17559
17582
  tokenConfigured: Boolean(input.opts.token),
@@ -17580,6 +17603,7 @@ async function buildDaemonStatusResponse(detail, input) {
17580
17603
  workspaces: workspaceRuntimes.map((runtime) => ({
17581
17604
  id: runtime.workspaceId,
17582
17605
  cwd: runtime.workspaceCwd,
17606
+ ...runtime.displayName !== void 0 ? { displayName: runtime.displayName } : {},
17583
17607
  primary: runtime.primary,
17584
17608
  trusted: runtime.trusted
17585
17609
  }))
@@ -18249,6 +18273,138 @@ var WorkspaceVoiceCoordinator = class {
18249
18273
  }
18250
18274
  };
18251
18275
 
18276
+ // packages/cli/src/serve/server/access-log.ts
18277
+ init_esbuild_shims();
18278
+ import { performance } from "node:perf_hooks";
18279
+ var SESSION_ID_RE = /\/session\/([^/]+)/;
18280
+ var ACCESS_LOG_BURST = 60;
18281
+ var ACCESS_LOG_REFILL_PER_SECOND = 2;
18282
+ var ROUTE_MAX_BYTES = 2 * 1024;
18283
+ var SESSION_ID_MAX_BYTES = 256;
18284
+ var CLIENT_ID_MAX_BYTES = 256;
18285
+ var ACCESS_LOG_CONTROLLER_LOCAL = "accessLogController";
18286
+ function emptySuppressedCounts() {
18287
+ return {
18288
+ suppressed: 0,
18289
+ status2xx: 0,
18290
+ status3xx: 0,
18291
+ status4xx: 0,
18292
+ status5xx: 0,
18293
+ statusOther: 0
18294
+ };
18295
+ }
18296
+ __name(emptySuppressedCounts, "emptySuppressedCounts");
18297
+ function countSuppressed(counts, status) {
18298
+ counts.suppressed += 1;
18299
+ if (status >= 200 && status < 300) counts.status2xx += 1;
18300
+ else if (status >= 300 && status < 400) counts.status3xx += 1;
18301
+ else if (status >= 400 && status < 500) counts.status4xx += 1;
18302
+ else if (status >= 500 && status < 600) counts.status5xx += 1;
18303
+ else counts.statusOther += 1;
18304
+ }
18305
+ __name(countSuppressed, "countSuppressed");
18306
+ function firstRawHeader(rawHeaders, targetName) {
18307
+ for (let i = 0; i + 1 < rawHeaders.length; i += 2) {
18308
+ if (rawHeaders[i]?.toLowerCase() === targetName) return rawHeaders[i + 1];
18309
+ }
18310
+ return void 0;
18311
+ }
18312
+ __name(firstRawHeader, "firstRawHeader");
18313
+ function truncateUtf8(value, maxBytes) {
18314
+ const bytes = Buffer.from(value, "utf8");
18315
+ if (bytes.length <= maxBytes) return { value };
18316
+ let end = maxBytes;
18317
+ while (end > 0 && (bytes[end] & 192) === 128) end -= 1;
18318
+ return {
18319
+ value: bytes.subarray(0, end).toString("utf8"),
18320
+ originalBytes: bytes.length
18321
+ };
18322
+ }
18323
+ __name(truncateUtf8, "truncateUtf8");
18324
+ function installAccessLogMiddleware(app, daemonLog, monotonicNow = () => performance.now()) {
18325
+ let sealed = false;
18326
+ let tokens = ACCESS_LOG_BURST;
18327
+ let refillBaseline = monotonicNow();
18328
+ let suppressed = emptySuppressedCounts();
18329
+ const refill = /* @__PURE__ */ __name(() => {
18330
+ const now = Math.max(monotonicNow(), refillBaseline);
18331
+ tokens = Math.min(
18332
+ ACCESS_LOG_BURST,
18333
+ tokens + (now - refillBaseline) / 1e3 * ACCESS_LOG_REFILL_PER_SECOND
18334
+ );
18335
+ refillBaseline = now;
18336
+ }, "refill");
18337
+ const flushSuppressed = /* @__PURE__ */ __name(() => {
18338
+ if (!daemonLog || suppressed.suppressed === 0) return false;
18339
+ daemonLog.warn("access logs suppressed", suppressed);
18340
+ suppressed = emptySuppressedCounts();
18341
+ return true;
18342
+ }, "flushSuppressed");
18343
+ const controller = {
18344
+ sealAndFlushSuppressed: /* @__PURE__ */ __name(() => {
18345
+ if (sealed) return;
18346
+ sealed = true;
18347
+ try {
18348
+ flushSuppressed();
18349
+ } catch {
18350
+ }
18351
+ }, "sealAndFlushSuppressed")
18352
+ };
18353
+ app.locals[ACCESS_LOG_CONTROLLER_LOCAL] = controller;
18354
+ if (!daemonLog) return controller;
18355
+ app.use((req, res, next) => {
18356
+ const { method, path: reqPath } = req;
18357
+ if (method === "GET" && reqPath === "/health" || method === "POST" && reqPath.endsWith("/heartbeat")) {
18358
+ return next();
18359
+ }
18360
+ const startMs = monotonicNow();
18361
+ res.on("finish", () => {
18362
+ try {
18363
+ if (sealed) return;
18364
+ const status = res.statusCode;
18365
+ if (method === "GET" && reqPath.endsWith("/events") && status === 200) {
18366
+ return;
18367
+ }
18368
+ refill();
18369
+ if (suppressed.suppressed > 0 && tokens >= 1) {
18370
+ tokens -= 1;
18371
+ flushSuppressed();
18372
+ }
18373
+ if (tokens < 1) {
18374
+ countSuppressed(suppressed, status);
18375
+ return;
18376
+ }
18377
+ tokens -= 1;
18378
+ const route = truncateUtf8(`${method} ${reqPath}`, ROUTE_MAX_BYTES);
18379
+ const sessionMatch = reqPath.match(SESSION_ID_RE);
18380
+ const sessionId = sessionMatch?.[1] ? truncateUtf8(sessionMatch[1], SESSION_ID_MAX_BYTES) : void 0;
18381
+ const rawClientId = firstRawHeader(req.rawHeaders, "x-qwen-client-id");
18382
+ const clientId = rawClientId ? truncateUtf8(rawClientId, CLIENT_ID_MAX_BYTES) : void 0;
18383
+ const ctx = {
18384
+ route: route.value,
18385
+ ...route.originalBytes ? { routeOriginalBytes: route.originalBytes } : {},
18386
+ ...sessionId ? {
18387
+ sessionId: sessionId.value,
18388
+ ...sessionId.originalBytes ? { sessionIdOriginalBytes: sessionId.originalBytes } : {}
18389
+ } : {},
18390
+ ...clientId ? {
18391
+ clientId: clientId.value,
18392
+ ...clientId.originalBytes ? { clientIdOriginalBytes: clientId.originalBytes } : {}
18393
+ } : {},
18394
+ status,
18395
+ durationMs: Math.max(0, Math.round(monotonicNow() - startMs))
18396
+ };
18397
+ if (status >= 400) daemonLog.warn("request completed", ctx);
18398
+ else daemonLog.info("request completed", ctx);
18399
+ } catch {
18400
+ }
18401
+ });
18402
+ next();
18403
+ });
18404
+ return controller;
18405
+ }
18406
+ __name(installAccessLogMiddleware, "installAccessLogMiddleware");
18407
+
18252
18408
  export {
18253
18409
  require_express2 as require_express,
18254
18410
  sanitizeForStderr,
@@ -18310,7 +18466,9 @@ export {
18310
18466
  isBrowserAutomationMcpAvailable,
18311
18467
  MAX_CONCURRENT_VOICE_SESSIONS,
18312
18468
  VoiceLeaseAbortError,
18313
- WorkspaceVoiceCoordinator
18469
+ WorkspaceVoiceCoordinator,
18470
+ ACCESS_LOG_CONTROLLER_LOCAL,
18471
+ installAccessLogMiddleware
18314
18472
  };
18315
18473
  /**
18316
18474
  * @license
@@ -3,17 +3,17 @@
3
3
  import {
4
4
  getGitVersion,
5
5
  getNpmVersion
6
- } from "./chunk-3B6PSWHE.js";
6
+ } from "./chunk-GH7OEOYU.js";
7
7
  import {
8
8
  buildEnvStatusFromEnv,
9
9
  snapshotProcessEnv
10
- } from "./chunk-5QSVANRT.js";
10
+ } from "./chunk-JR6UJ24K.js";
11
11
  import {
12
12
  mapDomainErrorToErrorKind
13
- } from "./chunk-64GC5EMF.js";
13
+ } from "./chunk-DZZIOIVF.js";
14
14
  import {
15
15
  canUseRipgrep
16
- } from "./chunk-GCY7QTCE.js";
16
+ } from "./chunk-NO6XTCYT.js";
17
17
  import {
18
18
  init_esbuild_shims
19
19
  } from "./chunk-5O2XNYP6.js";