@qwen-code/qwen-code 0.20.2-jobbench-no-todo-write.0 → 0.21.0

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 (370) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +5 -0
  2. package/bundled/qc-helper/docs/features/sub-agents.md +23 -5
  3. package/bundled/qc-helper/docs/integration-github-action.md +9 -9
  4. package/bundled/review/SKILL.md +7 -3
  5. package/chunks/MaxSizedBox-5DPPWPGT.js +85 -0
  6. package/chunks/{StandaloneSessionPicker-WBRBHD2M.js → StandaloneSessionPicker-BIRMPLRD.js} +66 -58
  7. package/chunks/{acp-startup-profiler-N3RHHXJ3.js → acp-startup-profiler-RV3IV562.js} +2 -2
  8. package/chunks/{acpAgent-BBQZ33CA.js → acpAgent-6J2U72PQ.js} +706 -182
  9. package/chunks/agent-6ODUANDO.js +81 -0
  10. package/chunks/agent-headless-7BYQTMHW.js +75 -0
  11. package/chunks/{anthropicContentGenerator-HGWAHO24.js → anthropicContentGenerator-75BKLTSP.js} +117 -43
  12. package/chunks/{artifact-tool-56T5IMBP.js → artifact-tool-Y5T7GG7F.js} +3 -3
  13. package/chunks/{askUserQuestion-E25OBIC2.js → askUserQuestion-2H6747FR.js} +3 -3
  14. package/chunks/bridge-ZUB64FAE.js +90 -0
  15. package/chunks/{build-SSCNEHZZ.js → build-RV63TIRH.js} +2 -3
  16. package/chunks/{ca-N6VVUFVB.js → ca-25EDXPFZ.js} +2 -0
  17. package/chunks/{channel-worker-group-LFBT7K64.js → channel-worker-group-2ZD7TVAT.js} +7 -6
  18. package/chunks/{channel-worker-manager-3RUPERG2.js → channel-worker-manager-4OA4BCGB.js} +189 -29
  19. package/chunks/{channel-worker-supervisor-A3KVATD3.js → channel-worker-supervisor-V7KCFJTS.js} +6 -5
  20. package/chunks/{chunk-TYQMGACW.js → chunk-22C7BQ6D.js} +508 -10967
  21. package/chunks/chunk-2JZBVYTU.js +452 -0
  22. package/chunks/{chunk-H2XVO6NE.js → chunk-2MIN6GRR.js} +1 -1
  23. package/chunks/{chunk-B2HSPMD4.js → chunk-2NH6DYI4.js} +12 -12
  24. package/chunks/chunk-2SCDWPXI.js +246 -0
  25. package/chunks/{chunk-JK26TQON.js → chunk-2X55UKQE.js} +3 -3
  26. package/chunks/{chunk-7VUQQBR7.js → chunk-3QMGYBFN.js} +2 -65
  27. package/chunks/{chunk-UMCULC5M.js → chunk-3RN6GBKS.js} +1 -1
  28. package/chunks/{chunk-QR6U5QPP.js → chunk-3SJ43L4W.js} +4 -0
  29. package/chunks/chunk-46UV252V.js +128 -0
  30. package/chunks/{chunk-GPMVHZP4.js → chunk-4WIZGAH3.js} +7 -7
  31. package/chunks/{chunk-CI3GWKGJ.js → chunk-55DJUCI2.js} +87 -29
  32. package/chunks/{chunk-QNLNLENL.js → chunk-5I2IWRSH.js} +2 -2
  33. package/chunks/{chunk-D7WXIW7H.js → chunk-5NBDS5S6.js} +145 -5
  34. package/chunks/{chunk-E4IMU4Y5.js → chunk-63P4EL5V.js} +1 -1
  35. package/chunks/chunk-6FGBXPWM.js +293 -0
  36. package/chunks/{chunk-NEEB7UEN.js → chunk-6GMVPFB2.js} +153 -72
  37. package/chunks/{chunk-KWK7UE6L.js → chunk-6OUGMXDC.js} +6 -6
  38. package/chunks/{chunk-QRUIS3DN.js → chunk-6PEXNQTX.js} +22 -1
  39. package/chunks/{chunk-77OZOGPT.js → chunk-7JURR4JT.js} +1 -1
  40. package/chunks/{chunk-4MWNZNJ4.js → chunk-7MVVZO4N.js} +4 -4
  41. package/chunks/{chunk-6ZBPS62S.js → chunk-7ZCNENPP.js} +1 -1
  42. package/chunks/{chunk-6X4GWOPW.js → chunk-A5L3JMUA.js} +1 -1
  43. package/chunks/{chunk-B3I77W5J.js → chunk-ACY3A37B.js} +3 -3
  44. package/chunks/chunk-AMDSOFFV.js +10860 -0
  45. package/chunks/{chunk-RV4C2ZFG.js → chunk-BIQWWWJN.js} +1 -1
  46. package/chunks/{chunk-ZHERRXZJ.js → chunk-BJX6ZSUK.js} +4 -4
  47. package/chunks/chunk-BK2UNYWD.js +29 -0
  48. package/chunks/{chunk-7TLUW4ZE.js → chunk-BKHWX6I2.js} +3 -3
  49. package/chunks/chunk-BPJSQIJX.js +100 -0
  50. package/chunks/{chunk-M7WBGLYP.js → chunk-BULDBTYC.js} +2 -0
  51. package/chunks/{chunk-H4A4A2SY.js → chunk-CIKQ7KKO.js} +4625 -8645
  52. package/chunks/{chunk-QZJY47IE.js → chunk-D3UEZIQH.js} +7 -5
  53. package/chunks/chunk-DHHOYAPR.js +1462 -0
  54. package/chunks/{chunk-LESHKUWF.js → chunk-DLWL3Z7A.js} +5 -3
  55. package/chunks/{chunk-XHATNRQA.js → chunk-DP3IHZGG.js} +0 -2
  56. package/chunks/chunk-E5TUC6CA.js +479 -0
  57. package/chunks/{chunk-6NRFYMKG.js → chunk-EBJQ6AXW.js} +11 -10
  58. package/chunks/{chunk-HABKX6LY.js → chunk-EPDRMGT4.js} +164 -17
  59. package/chunks/{chunk-P2BQZ7H7.js → chunk-ETSW4KLJ.js} +2 -2
  60. package/chunks/{chunk-KHOVYUHX.js → chunk-FNQ6T3CV.js} +20 -3
  61. package/chunks/{chunk-64EG42HV.js → chunk-FQK6JAFG.js} +72 -23
  62. package/chunks/{chunk-L6U47G5P.js → chunk-FSITMZJH.js} +8 -8
  63. package/chunks/{chunk-6RLROE6G.js → chunk-GLWP3FDB.js} +80 -15
  64. package/chunks/{chunk-CXIOPXRR.js → chunk-GSN55ZRI.js} +5 -5
  65. package/chunks/{chunk-LVA5OHQO.js → chunk-H4SBPHSA.js} +3 -3
  66. package/chunks/chunk-H5FFA6TH.js +902 -0
  67. package/chunks/{chunk-TDKQP3M6.js → chunk-HIJQF5B5.js} +1 -1
  68. package/chunks/{chunk-NXE6SQIV.js → chunk-IJTOWOD7.js} +14 -3
  69. package/chunks/chunk-IKCX4CCL.js +469 -0
  70. package/chunks/{chunk-7SSWNGEJ.js → chunk-IKYJHJNF.js} +3 -3
  71. package/chunks/{chunk-64XKYOXK.js → chunk-IO3IX5Q4.js} +1 -1
  72. package/chunks/{chunk-RS7MT2QG.js → chunk-IPUUTYMV.js} +2 -4
  73. package/chunks/{chunk-XU457J4V.js → chunk-IRH27ZC2.js} +2 -2
  74. package/chunks/{chunk-SVIMKSEI.js → chunk-J24WCGIN.js} +4 -4
  75. package/chunks/{chunk-4LVZNIDO.js → chunk-J56UI34H.js} +4 -13
  76. package/chunks/{chunk-TJTKSVIV.js → chunk-JLU636DO.js} +5 -1
  77. package/chunks/{chunk-7PIL2BYF.js → chunk-JVPM2ULZ.js} +6 -6
  78. package/chunks/{chunk-KBB5O3JO.js → chunk-JXJFVC6E.js} +37 -18
  79. package/chunks/chunk-JZA3JUDJ.js +82 -0
  80. package/chunks/{chunk-45PO6ZIS.js → chunk-K36B6G2O.js} +5 -5
  81. package/chunks/{chunk-GPSKDNEE.js → chunk-K4XWPEWB.js} +4 -4
  82. package/chunks/{chunk-K7EUPLIP.js → chunk-KIM5GUMA.js} +654 -117
  83. package/chunks/{chunk-42W5BDEY.js → chunk-KMQ33DO4.js} +7 -5
  84. package/chunks/{chunk-E2UVIFI2.js → chunk-KRXPRVGL.js} +0 -1
  85. package/chunks/{chunk-WHGVTP7Q.js → chunk-L26JL52R.js} +3 -3
  86. package/chunks/{chunk-7Z6JQEL6.js → chunk-L5UHQJTJ.js} +1 -1
  87. package/chunks/{chunk-26CBI4DC.js → chunk-LB6DUZ26.js} +259 -67
  88. package/chunks/chunk-LEH5C7FV.js +232 -0
  89. package/chunks/{chunk-UTGFTJ2H.js → chunk-LH2BYDQ5.js} +6 -4
  90. package/chunks/{chunk-QKTHJXCS.js → chunk-LK7CHLVP.js} +79 -2
  91. package/chunks/{chunk-V7WNRZL7.js → chunk-LKEJ26GS.js} +11 -11
  92. package/chunks/{chunk-6VPLV3L3.js → chunk-LQIW3YFY.js} +227 -41
  93. package/chunks/chunk-LS77BEZP.js +405 -0
  94. package/chunks/{chunk-5WDRI7US.js → chunk-M4FMGVY4.js} +3 -3
  95. package/chunks/{chunk-57FIIFJN.js → chunk-M5JM7OSF.js} +1 -1
  96. package/chunks/{chunk-7362QS5B.js → chunk-MB4MZHMJ.js} +80 -37
  97. package/chunks/{chunk-4K56OJFJ.js → chunk-MUP3T3AD.js} +1 -1
  98. package/chunks/{chunk-CJQ3FZ2G.js → chunk-MVSUYZDT.js} +4 -4
  99. package/chunks/{chunk-6FZYKBKV.js → chunk-MZAXJAUM.js} +1 -1
  100. package/chunks/{chunk-32L4D2O2.js → chunk-NH6KE4JX.js} +3 -3
  101. package/chunks/chunk-NIBLUX3Y.js +934 -0
  102. package/chunks/{chunk-OQB4EXO4.js → chunk-NL7LTRLR.js} +1 -1
  103. package/chunks/{chunk-6S5HSCOI.js → chunk-OFDOK3VM.js} +5 -5
  104. package/chunks/{chunk-LIZRAKPB.js → chunk-OHNBB4XR.js} +1 -1
  105. package/chunks/{chunk-MDZTPSXO.js → chunk-OKY7HXPG.js} +2 -2
  106. package/chunks/{chunk-NHDKSOEY.js → chunk-P3QQPMQA.js} +5 -5
  107. package/chunks/{chunk-4SCOLXTD.js → chunk-PC6JANNU.js} +5 -5
  108. package/chunks/{chunk-IWALV67J.js → chunk-PHOF65IG.js} +4300 -1284
  109. package/chunks/{chunk-OQ5SYCPE.js → chunk-PJIZUQVC.js} +2 -2
  110. package/chunks/{chunk-5DTTYNB7.js → chunk-PQNHRFJC.js} +16 -3
  111. package/chunks/{chunk-YM3SZTH4.js → chunk-PR75REBZ.js} +18 -1
  112. package/chunks/{chunk-5XORMWA2.js → chunk-PSOO6YXD.js} +18 -15
  113. package/chunks/{chunk-X6N25LXS.js → chunk-PWTZEM3C.js} +2 -2
  114. package/chunks/{chunk-GSX6P2JW.js → chunk-PWVFN2LF.js} +1 -1
  115. package/chunks/{chunk-AHX6AKPD.js → chunk-Q4M4MDQ4.js} +2 -2
  116. package/chunks/{chunk-3EHJ44GG.js → chunk-QAF7NMK7.js} +1 -1
  117. package/chunks/{chunk-WSYKDFYR.js → chunk-R5AFZNQW.js} +5 -5
  118. package/chunks/{chunk-63DJBU32.js → chunk-RF3EXIHJ.js} +39 -18
  119. package/chunks/{chunk-4K7VDKAD.js → chunk-RHLZR4E5.js} +1 -1
  120. package/chunks/{chunk-SXPSOMQ4.js → chunk-RIBKPMRP.js} +220 -141
  121. package/chunks/{chunk-RVLZCXEE.js → chunk-RWTEFFPU.js} +82 -3
  122. package/chunks/{chunk-ZUTM4LHM.js → chunk-RZIX2G32.js} +1 -1
  123. package/chunks/{chunk-ZKBNRL6O.js → chunk-SQCQ4KO2.js} +336 -404
  124. package/chunks/{chunk-THJNPLI4.js → chunk-TARRHLLG.js} +1 -0
  125. package/chunks/{chunk-RHYFF54J.js → chunk-TEHGS6UP.js} +50 -21
  126. package/chunks/{chunk-ACQJPDDS.js → chunk-TGILQ3YH.js} +8 -8
  127. package/chunks/{chunk-Q2YKNMLS.js → chunk-TOFQCPDC.js} +43 -10
  128. package/chunks/{chunk-ACZIBDYD.js → chunk-TPRQ7RZH.js} +587 -176
  129. package/chunks/{chunk-T4TZQJ7W.js → chunk-TWPJO254.js} +5 -16
  130. package/chunks/{chunk-7MWABCXU.js → chunk-U7M2DMGW.js} +3 -3
  131. package/chunks/{chunk-KQQ757OQ.js → chunk-UDX5OBWR.js} +41 -9
  132. package/chunks/{chunk-SRPZG4ER.js → chunk-USTWD7QV.js} +6 -4
  133. package/chunks/{chunk-NPQDJGKU.js → chunk-UUUTRMI2.js} +1 -1
  134. package/chunks/chunk-UW5EOVUN.js +249 -0
  135. package/chunks/{chunk-6IL7KRLE.js → chunk-VAK25FTU.js} +1 -1
  136. package/chunks/{chunk-TDDFEPBX.js → chunk-VIA5XA4U.js} +5 -2
  137. package/chunks/{chunk-3BJDQVE6.js → chunk-VRYUBFMC.js} +1 -1
  138. package/chunks/{chunk-PLQODS7F.js → chunk-VULLI6WQ.js} +172 -6
  139. package/chunks/{chunk-GN45XAAU.js → chunk-WCXCRJYB.js} +1 -1
  140. package/chunks/{chunk-2LI23QA6.js → chunk-X5XDDSSH.js} +1 -1
  141. package/chunks/{chunk-O32RMIMO.js → chunk-Y34KJKDC.js} +1 -1
  142. package/chunks/{chunk-7ZD5EKXE.js → chunk-YBL3QUDD.js} +2 -2
  143. package/chunks/{chunk-H4AR2JQF.js → chunk-YH6G52F2.js} +3 -3
  144. package/chunks/{chunk-3G3UUMRS.js → chunk-YPE6A4GC.js} +2 -2
  145. package/chunks/{chunk-3F2JUWCH.js → chunk-YX324OPW.js} +1 -1
  146. package/chunks/{chunk-CGIDQG6J.js → chunk-Z2BC6UJ5.js} +3 -3
  147. package/chunks/{chunk-QLJUC7TG.js → chunk-ZD6UTE4A.js} +1 -1
  148. package/chunks/{chunk-ZPWJZHJ2.js → chunk-ZFDTEDCF.js} +6 -6
  149. package/chunks/chunk-ZJHVAS7M.js +289 -0
  150. package/chunks/{chunk-XAGLQITN.js → chunk-ZNAUOR2I.js} +15 -12
  151. package/chunks/{chunk-T2L47JJK.js → chunk-ZOIFNCKL.js} +4 -4
  152. package/chunks/{computer-use-RZ3UUWYW.js → computer-use-SOQ4E3VX.js} +43 -34
  153. package/chunks/{config-utils-SQUBZEQM.js → config-utils-7V7GGIW6.js} +3 -3
  154. package/chunks/contextCommand-JLHYA34Z.js +80 -0
  155. package/chunks/{create-sub-session-AZ77LBL3.js → create-sub-session-IWW2IZ2T.js} +3 -3
  156. package/chunks/{create-sub-session-EQG73FT6.js → create-sub-session-QRJLW5BV.js} +43 -34
  157. package/chunks/{cron-create-KTWJM7QT.js → cron-create-YIID5XAW.js} +6 -6
  158. package/chunks/{cron-delete-2P3I5ULL.js → cron-delete-ZVHYCEP2.js} +5 -5
  159. package/chunks/{cron-list-PXDPGEDQ.js → cron-list-XEGS463Q.js} +5 -5
  160. package/chunks/{daemon-RAPSDJH7.js → daemon-YO6433NF.js} +350 -53
  161. package/chunks/daemon-status-provider-2233Q37D.js +89 -0
  162. package/chunks/{de-4IBXM7CN.js → de-HGRCYDEJ.js} +1 -0
  163. package/chunks/{dist-UIFWIFRO.js → dist-46NQKLTW.js} +2 -2
  164. package/chunks/{dist-XRYV6TJP.js → dist-AIKFMUKK.js} +50 -4
  165. package/chunks/{dist-XBJVSWS2.js → dist-BBLXMS3N.js} +14 -2
  166. package/chunks/{dist-OMW6WDEO.js → dist-F6IBUDR4.js} +40 -9
  167. package/chunks/{dist-PJLG2XYX.js → dist-WEAHOXDM.js} +1 -1
  168. package/chunks/{dist-OAV7LJGJ.js → dist-YFNEUWSE.js} +26 -2
  169. package/chunks/earlyInputCapture-A7NDU3PF.js +82 -0
  170. package/chunks/{edit-XRSKQPHQ.js → edit-OBDSQURM.js} +43 -34
  171. package/chunks/{en-USMCCJAJ.js → en-MTWBNGDO.js} +15 -0
  172. package/chunks/{enter-worktree-WAHCWE6I.js → enter-worktree-U6MRPQ2P.js} +43 -34
  173. package/chunks/{enterPlanMode-QIOYLDCF.js → enterPlanMode-BC5QUZZ2.js} +43 -34
  174. package/chunks/{environment-T3FXCDJI.js → environment-W5UFC2CH.js} +46 -37
  175. package/chunks/errors-M7CLORXH.js +88 -0
  176. package/chunks/{exit-worktree-RHVTLX6T.js → exit-worktree-DGNYMECB.js} +43 -34
  177. package/chunks/{exitPlanMode-UATOE2GQ.js → exitPlanMode-GXTBWQAR.js} +43 -34
  178. package/chunks/{fast-path-J3RHOYSZ.js → fast-path-JJZFJANL.js} +6 -6
  179. package/chunks/{fast-path-settings-XB3CPUJT.js → fast-path-settings-WQJU2LAT.js} +2 -2
  180. package/chunks/{fr-WVHEBDDB.js → fr-45RLL55O.js} +1 -0
  181. package/chunks/{gemini-P72OGOH6.js → gemini-QS36EBZV.js} +133 -102
  182. package/chunks/{geminiContentGenerator-F6EG5FXF.js → geminiContentGenerator-AG4KB6CV.js} +14 -8
  183. package/chunks/{getMachineId-bsd-QFVLPUPT.js → getMachineId-bsd-V7W3GODC.js} +1 -1
  184. package/chunks/{getMachineId-darwin-DGMQQE2E.js → getMachineId-darwin-TDO75DQP.js} +1 -1
  185. package/chunks/{getMachineId-linux-R4Z6CSWC.js → getMachineId-linux-TF43WQT2.js} +1 -1
  186. package/chunks/{getMachineId-unsupported-Z3SBVBUV.js → getMachineId-unsupported-ZGUO3TXT.js} +1 -1
  187. package/chunks/{getMachineId-win-SCK5UFDT.js → getMachineId-win-ECFYZZFQ.js} +1 -1
  188. package/chunks/{glob-WHASQZRX.js → glob-V7R3PSK3.js} +43 -34
  189. package/chunks/{grep-LS7AADJ3.js → grep-QYPSK7OP.js} +43 -34
  190. package/chunks/handleAutoUpdate-6DBEZYPV.js +81 -0
  191. package/chunks/{i18n-IMVASWIF.js → i18n-VUJJZIMU.js} +44 -35
  192. package/chunks/image-gen-Z3VPGKRC.js +240 -0
  193. package/chunks/initializer-UWAK5U5O.js +86 -0
  194. package/chunks/installationInfo-6O2YAA52.js +80 -0
  195. package/chunks/{ja-KY4ROZTE.js → ja-B7DF7DFG.js} +1 -0
  196. package/chunks/{keychain-token-storage-6ACJDYIB.js → keychain-token-storage-MDTG3WRM.js} +3 -3
  197. package/chunks/{kittyProtocolDetector-HCNNKJTI.js → kittyProtocolDetector-MBRTDRBK.js} +5 -3
  198. package/chunks/list-GB4ESM3T.js +89 -0
  199. package/chunks/list-agents-5KJJHR6I.js +80 -0
  200. package/chunks/loadedSettingsAdapter-OT6JVQ7U.js +83 -0
  201. package/chunks/loggingContentGenerator-HS3S5H3Q.js +1077 -0
  202. package/chunks/{loop-wakeup-RNMRVA66.js → loop-wakeup-FXKNNYSY.js} +7 -7
  203. package/chunks/{ls-J2ZI5XYK.js → ls-NTK6VOQJ.js} +5 -5
  204. package/chunks/{lsp-UMS3NUB5.js → lsp-2JI24STP.js} +3 -3
  205. package/chunks/{managed-npm-update-L6UY7OM7.js → managed-npm-update-JYEMMXA3.js} +94 -37
  206. package/chunks/mcp-6DBDJPFU.js +83 -0
  207. package/chunks/{monitor-DXYFB5QD.js → monitor-R3ODH5U6.js} +45 -35
  208. package/chunks/node-UUDY34IG.js +305 -0
  209. package/chunks/nonInteractiveCli-MOYCYBBU.js +141 -0
  210. package/chunks/{notebook-edit-KGD7YJEA.js → notebook-edit-BNOK452R.js} +43 -34
  211. package/chunks/{openaiContentGenerator-C74A2XAU.js → openaiContentGenerator-WMCU3O2H.js} +27 -17
  212. package/chunks/pidfile-TFRZZZIO.js +86 -0
  213. package/chunks/{processUtils-GUT5B4R6.js → processUtils-RT7UNCC2.js} +2 -2
  214. package/chunks/{pt-OK455PLH.js → pt-22Q3FP73.js} +1 -0
  215. package/chunks/{qwenContentGenerator-PT46FQPA.js → qwenContentGenerator-HHCRK4SX.js} +56 -41
  216. package/chunks/{qwenOAuth2-S7DZHUUU.js → qwenOAuth2-OWLB5AKH.js} +14 -27
  217. package/chunks/read-file-APMO3PSX.js +31 -0
  218. package/chunks/{read-mcp-resource-F6HYMDUY.js → read-mcp-resource-4DKQWGHD.js} +3 -3
  219. package/chunks/{record-artifact-7GCFLDD7.js → record-artifact-RQKFYO5B.js} +3 -3
  220. package/chunks/resumeHistoryUtils-6KRYEAWZ.js +91 -0
  221. package/chunks/ripGrep-BEJDEDXW.js +73 -0
  222. package/chunks/{ru-7SPDGMGD.js → ru-FZCNZHDC.js} +1 -0
  223. package/chunks/{run-qwen-serve-QO4PT5NV.js → run-qwen-serve-FU6HEM4J.js} +276 -62
  224. package/chunks/{runtime-EOTXBUM6.js → runtime-XXRRTNP6.js} +55 -44
  225. package/chunks/{scheduler-MAIQ2PHR.js → scheduler-G2ZS2Z7E.js} +43 -34
  226. package/chunks/{sdk-exporters-grpc-ETLH47EP.js → sdk-exporters-grpc-AK3LGHNO.js} +3 -3
  227. package/chunks/{sdk-exporters-http-T3POX73F.js → sdk-exporters-http-FYBSUCPD.js} +6 -6
  228. package/chunks/{sdk-impl-NSLPDH6I.js → sdk-impl-GMVPB7NB.js} +6 -6
  229. package/chunks/{send-message-PYIJ2PZL.js → send-message-Q6OOR6BR.js} +46 -9
  230. package/chunks/serve-7BSTXJ4T.js +89 -0
  231. package/chunks/{server-CBCC3XQC.js → server-4UMH7OIZ.js} +2348 -396
  232. package/chunks/{session-RQUEFQDL.js → session-K3O3Q2SV.js} +107 -88
  233. package/chunks/{settings-QHXCJDSR.js → settings-CR2EWTBA.js} +53 -44
  234. package/chunks/shell-HH3PF3A2.js +83 -0
  235. package/chunks/{skill-WHSGTGKP.js → skill-I3SDA4MB.js} +17 -15
  236. package/chunks/spawnChannel-RWNDBXGA.js +82 -0
  237. package/chunks/{src-F3HKX47D.js → src-GE4TTTML.js} +290 -171
  238. package/chunks/{standalone-update-BKLONSVI.js → standalone-update-Q6WFRZZQ.js} +45 -36
  239. package/chunks/{startInteractiveUI-TNJ37X5W.js → startInteractiveUI-SLZGHRPH.js} +736 -298
  240. package/chunks/{syntheticOutput-H7RTI5KL.js → syntheticOutput-I3757IWH.js} +4 -4
  241. package/chunks/{task-create-7474AJJD.js → task-create-N7WQSGYA.js} +10 -10
  242. package/chunks/{task-list-633HGOIB.js → task-list-FOPULZEP.js} +7 -7
  243. package/chunks/{task-stop-MNUGHPIA.js → task-stop-H6RHXFVQ.js} +4 -4
  244. package/chunks/{task-update-66GQB5LI.js → task-update-M57TFZJT.js} +10 -10
  245. package/chunks/{team-create-LUHJ7ZCC.js → team-create-YJALH5D2.js} +44 -35
  246. package/chunks/{team-delete-BB3CG3QF.js → team-delete-QE2UXJL7.js} +7 -7
  247. package/chunks/{team-plan-approval-X3DYRL6L.js → team-plan-approval-34QFYKGN.js} +43 -34
  248. package/chunks/theme-manager-SWRILQHI.js +77 -0
  249. package/chunks/todoWrite-VQ7FKOHL.js +358 -0
  250. package/chunks/{tool-search-BAWOETUY.js → tool-search-NF7GB6LE.js} +16 -16
  251. package/chunks/total-session-admission-DLHHHLD3.js +84 -0
  252. package/chunks/{tree-sitter-FS4VPMZA.js → tree-sitter-4D7QS7F6.js} +1 -1
  253. package/chunks/{tree-sitter-bash-6B46JJCV.js → tree-sitter-bash-VEJGF5XF.js} +1 -1
  254. package/chunks/{trustedFolders-4UEOIKOF.js → trustedFolders-KHXHY6PY.js} +44 -35
  255. package/chunks/{update-relaunch-WDWABT5P.js → update-relaunch-WBUZJC5O.js} +5 -5
  256. package/chunks/updateCheck-RKL6M5XN.js +92 -0
  257. package/chunks/useAutoAcceptIndicator-CFQ5BUJL.js +93 -0
  258. package/chunks/{validateNonInterActiveAuth-OKUE3JLF.js → validateNonInterActiveAuth-3R223G3R.js} +91 -81
  259. package/chunks/{version-GMUULLWB.js → version-HS7YSFHV.js} +1 -1
  260. package/chunks/{web-fetch-JBWTMPFN.js → web-fetch-NKCSG7ZE.js} +18 -16
  261. package/chunks/{web-search-27COJHJT.js → web-search-S62WAP4S.js} +13 -27
  262. package/chunks/{workflow-5L37J7YF.js → workflow-QAGU5RU4.js} +44 -35
  263. package/chunks/workspace-providers-status-QSVZUETE.js +86 -0
  264. package/chunks/{workspace-registration-store-TYPYXIP6.js → workspace-registration-store-24JMHDGF.js} +2 -2
  265. package/chunks/workspace-registry-UT4RBNBM.js +88 -0
  266. package/chunks/workspace-service-JFWRUS4V.js +98 -0
  267. package/chunks/workspace-skills-status-ZBBKJOI2.js +85 -0
  268. package/chunks/write-file-VHIXW5M7.js +73 -0
  269. package/chunks/{zh-WY5DWYZD.js → zh-LUIGBD55.js} +15 -0
  270. package/chunks/{zh-TW-BM47YBFH.js → zh-TW-F5KG2IYD.js} +15 -0
  271. package/cli-entry.js +10 -1
  272. package/cli.js +13 -13
  273. package/locales/ca.js +2 -0
  274. package/locales/de.js +1 -0
  275. package/locales/en.js +25 -0
  276. package/locales/fr.js +1 -0
  277. package/locales/ja.js +1 -0
  278. package/locales/pt.js +1 -0
  279. package/locales/ru.js +1 -0
  280. package/locales/zh-TW.js +23 -0
  281. package/locales/zh.js +23 -0
  282. package/package.json +3 -3
  283. package/web-shell/assets/{arc-BWFm0SI0.js → arc-DcbWnB9T.js} +1 -1
  284. package/web-shell/assets/{architectureDiagram-3BPJPVTR-CZ_yL-DQ.js → architectureDiagram-3BPJPVTR-kMMF5sud.js} +1 -1
  285. package/web-shell/assets/{blockDiagram-GPEHLZMM-B9F9mJvG.js → blockDiagram-GPEHLZMM-Htl9vTJS.js} +1 -1
  286. package/web-shell/assets/{c4Diagram-AAUBKEIU-BUdwJW5f.js → c4Diagram-AAUBKEIU-BnZnm0mQ.js} +1 -1
  287. package/web-shell/assets/channel-Cq7YKtfC.js +1 -0
  288. package/web-shell/assets/{chunk-2J33WTMH-w4cF-qlF.js → chunk-2J33WTMH-DziB7kDG.js} +1 -1
  289. package/web-shell/assets/{chunk-4BX2VUAB-BXwURxHJ.js → chunk-4BX2VUAB-CmkD8daw.js} +1 -1
  290. package/web-shell/assets/{chunk-55IACEB6-Gem3LalC.js → chunk-55IACEB6-CHAd9A_U.js} +1 -1
  291. package/web-shell/assets/{chunk-727SXJPM-A3ddVojI.js → chunk-727SXJPM-Dqaam3fE.js} +1 -1
  292. package/web-shell/assets/{chunk-AQP2D5EJ-CjHZ5L_R.js → chunk-AQP2D5EJ-D_-saBYM.js} +1 -1
  293. package/web-shell/assets/{chunk-FMBD7UC4-CKgdgcpv.js → chunk-FMBD7UC4-B9r_veWD.js} +1 -1
  294. package/web-shell/assets/{chunk-ND2GUHAM-Cn2Dykjb.js → chunk-ND2GUHAM-B3EaCSpL.js} +1 -1
  295. package/web-shell/assets/{chunk-QZHKN3VN--0SyraC5.js → chunk-QZHKN3VN-CYq8x9mn.js} +1 -1
  296. package/web-shell/assets/classDiagram-4FO5ZUOK-CQ9aC1Tg.js +1 -0
  297. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ9aC1Tg.js +1 -0
  298. package/web-shell/assets/{cose-bilkent-S5V4N54A-CphhAity.js → cose-bilkent-S5V4N54A-D0ng4uiB.js} +1 -1
  299. package/web-shell/assets/{dagre-BM42HDAG-DU--jiKp.js → dagre-BM42HDAG-DCZollQv.js} +1 -1
  300. package/web-shell/assets/{diagram-2AECGRRQ-BzvuZw1Y.js → diagram-2AECGRRQ-Dfk2pWS0.js} +1 -1
  301. package/web-shell/assets/{diagram-5GNKFQAL-D84-49Y0.js → diagram-5GNKFQAL-kX38ltWR.js} +1 -1
  302. package/web-shell/assets/{diagram-KO2AKTUF-DQTq-3_3.js → diagram-KO2AKTUF-CJz2vsXh.js} +1 -1
  303. package/web-shell/assets/{diagram-LMA3HP47-8FTrshzN.js → diagram-LMA3HP47-BvMLZm_7.js} +1 -1
  304. package/web-shell/assets/{diagram-OG6HWLK6-BCjpDBCm.js → diagram-OG6HWLK6-l7kfStkO.js} +1 -1
  305. package/web-shell/assets/{erDiagram-TEJ5UH35-BtRObkmg.js → erDiagram-TEJ5UH35-BSVa8GGT.js} +1 -1
  306. package/web-shell/assets/{flowDiagram-I6XJVG4X-DTrW6oxy.js → flowDiagram-I6XJVG4X-CoawKIXH.js} +1 -1
  307. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BgPNSW6j.js → ganttDiagram-6RSMTGT7-DFUDH0zF.js} +1 -1
  308. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BTclNgGV.js → gitGraphDiagram-PVQCEYII-Y2pvpT4e.js} +1 -1
  309. package/web-shell/assets/{index-CxA7AqY6.js → index-D0GX0zZf.js} +1 -1
  310. package/web-shell/assets/index-D9haPt0X.css +5 -0
  311. package/web-shell/assets/index-ckX9Pq5k.js +1230 -0
  312. package/web-shell/assets/{infoDiagram-5YYISTIA-DCE4AJt2.js → infoDiagram-5YYISTIA-CU8_zLiX.js} +1 -1
  313. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-C8iE6q4Y.js → ishikawaDiagram-YF4QCWOH-AVQiV0DU.js} +1 -1
  314. package/web-shell/assets/{journeyDiagram-JHISSGLW-C_dxdyEc.js → journeyDiagram-JHISSGLW-DQ0VSKa3.js} +1 -1
  315. package/web-shell/assets/{kanban-definition-UN3LZRKU-Dw3n1u3w.js → kanban-definition-UN3LZRKU-BqnWqsE_.js} +1 -1
  316. package/web-shell/assets/{linear-C2BF2zJ9.js → linear-BkoihsaA.js} +1 -1
  317. package/web-shell/assets/{mermaid.core-CGTQU3MA.js → mermaid.core-5RJs-31j.js} +5 -5
  318. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BVFZm9ZC.js → mindmap-definition-RKZ34NQL-D33Bxnpd.js} +1 -1
  319. package/web-shell/assets/{pieDiagram-4H26LBE5-Cc-TNN3n.js → pieDiagram-4H26LBE5-BuEAw3BH.js} +1 -1
  320. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CgW3Rzsi.js → quadrantDiagram-W4KKPZXB-Kox_usEq.js} +1 -1
  321. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BAaj0Y3B.js → requirementDiagram-4Y6WPE33-CNjeUif0.js} +1 -1
  322. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-XJWmekxS.js → sankeyDiagram-5OEKKPKP-BCd2OL_U.js} +1 -1
  323. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CtRc_0wf.js → sequenceDiagram-3UESZ5HK-CF2ZTsz0.js} +1 -1
  324. package/web-shell/assets/{stateDiagram-AJRCARHV-WCnvMGy5.js → stateDiagram-AJRCARHV-qenSzHtm.js} +1 -1
  325. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-B7W4zlCr.js +1 -0
  326. package/web-shell/assets/{timeline-definition-PNZ67QCA-C9cRx49L.js → timeline-definition-PNZ67QCA-B5DyWdgs.js} +1 -1
  327. package/web-shell/assets/{vennDiagram-CIIHVFJN-BvXOCEt-.js → vennDiagram-CIIHVFJN-DqP4I_o_.js} +1 -1
  328. package/web-shell/assets/{wardley-L42UT6IY-ByafGtzu.js → wardley-L42UT6IY-CJe2e4mg.js} +1 -1
  329. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-CozAnw8x.js → wardleyDiagram-YWT4CUSO-BMDSw-Rr.js} +1 -1
  330. package/web-shell/assets/{xychartDiagram-2RQKCTM6-Camu9Qvq.js → xychartDiagram-2RQKCTM6-BTVZYkxD.js} +1 -1
  331. package/web-shell/index.html +17 -13
  332. package/chunks/MaxSizedBox-HNWBEL5H.js +0 -77
  333. package/chunks/agent-KTMY6SF3.js +0 -72
  334. package/chunks/agent-headless-HJ56ZZOW.js +0 -66
  335. package/chunks/bridge-AMC5AD7W.js +0 -80
  336. package/chunks/chunk-CBOQ3HY7.js +0 -2019
  337. package/chunks/chunk-UHGNAWHK.js +0 -6928
  338. package/chunks/contextCommand-PW4GINQU.js +0 -71
  339. package/chunks/daemon-status-provider-3IWTBWQ3.js +0 -79
  340. package/chunks/earlyInputCapture-TYNI3B6E.js +0 -73
  341. package/chunks/errors-QAWTJTAW.js +0 -79
  342. package/chunks/handleAutoUpdate-V5A3JHOG.js +0 -72
  343. package/chunks/initializer-JJLF5JCJ.js +0 -77
  344. package/chunks/installationInfo-LAWMHQAG.js +0 -71
  345. package/chunks/list-L2ECB6UM.js +0 -80
  346. package/chunks/loadedSettingsAdapter-RLMZ4Z3E.js +0 -74
  347. package/chunks/mcp-E4O7Z6FO.js +0 -74
  348. package/chunks/nonInteractiveCli-GU2UKULE.js +0 -131
  349. package/chunks/pidfile-IWQWZNZV.js +0 -77
  350. package/chunks/read-file-ZOCXW4AD.js +0 -31
  351. package/chunks/resumeHistoryUtils-TJWRDE2L.js +0 -83
  352. package/chunks/ripGrep-OFKAW2VE.js +0 -64
  353. package/chunks/serve-UB4CF67Q.js +0 -80
  354. package/chunks/shell-RPK7EAOC.js +0 -74
  355. package/chunks/spawnChannel-IUP3ZNMT.js +0 -73
  356. package/chunks/theme-manager-ALL7F4CJ.js +0 -68
  357. package/chunks/total-session-admission-PLONPNXI.js +0 -74
  358. package/chunks/updateCheck-PVROE4GR.js +0 -87
  359. package/chunks/useAutoAcceptIndicator-6BNLNN5S.js +0 -85
  360. package/chunks/workspace-providers-status-2U3IF4TX.js +0 -77
  361. package/chunks/workspace-registry-DLQDDDIF.js +0 -78
  362. package/chunks/workspace-service-7K3LF4QX.js +0 -89
  363. package/chunks/workspace-skills-status-4DOZ3DBS.js +0 -76
  364. package/chunks/write-file-PTPXDKZ3.js +0 -64
  365. package/web-shell/assets/channel-DiLlxxIf.js +0 -1
  366. package/web-shell/assets/classDiagram-4FO5ZUOK-CkylTdM4.js +0 -1
  367. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CkylTdM4.js +0 -1
  368. package/web-shell/assets/index-CGtQqOIa.css +0 -5
  369. package/web-shell/assets/index-TtM0hVjU.js +0 -1207
  370. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-D1gzH2Ue.js +0 -1
@@ -0,0 +1,934 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ getMeter,
5
+ isTelemetrySdkInitialized,
6
+ truncateSpanError
7
+ } from "./chunk-MB4MZHMJ.js";
8
+ import {
9
+ require_src
10
+ } from "./chunk-HTR4WV6U.js";
11
+ import {
12
+ DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH,
13
+ SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT,
14
+ SERVICE_NAME,
15
+ isValidSensitiveSpanAttributeMaxLength
16
+ } from "./chunk-BULDBTYC.js";
17
+ import {
18
+ init_esm as init_esm2
19
+ } from "./chunk-U7ZFW55U.js";
20
+ import {
21
+ FatalConfigError,
22
+ formatTraceparent,
23
+ getActiveSpanTraceContext
24
+ } from "./chunk-NL7LTRLR.js";
25
+ import {
26
+ ROOT_CONTEXT,
27
+ SpanKind,
28
+ SpanStatusCode,
29
+ ValueType,
30
+ context,
31
+ diag,
32
+ init_esm,
33
+ propagation,
34
+ trace
35
+ } from "./chunk-TARRHLLG.js";
36
+ import {
37
+ init_esbuild_shims
38
+ } from "./chunk-5O2XNYP6.js";
39
+ import {
40
+ __name,
41
+ __toESM
42
+ } from "./chunk-J2S4EL5Y.js";
43
+
44
+ // packages/core/src/telemetry/config.ts
45
+ init_esbuild_shims();
46
+
47
+ // packages/core/src/telemetry/index.ts
48
+ init_esbuild_shims();
49
+ init_esm();
50
+ init_esm2();
51
+
52
+ // packages/core/src/telemetry/daemon-tracing.ts
53
+ init_esbuild_shims();
54
+ init_esm();
55
+ var import_api_logs = __toESM(require_src(), 1);
56
+ import { createHash } from "node:crypto";
57
+ var DAEMON_TRACEPARENT_META_KEY = "qwen.telemetry.traceparent";
58
+ var DAEMON_TRACESTATE_META_KEY = "qwen.telemetry.tracestate";
59
+ var SPAN_DAEMON_REQUEST = "qwen-code.daemon.request";
60
+ var SPAN_DAEMON_BRIDGE = "qwen-code.daemon.bridge";
61
+ var EVENT_DAEMON_ERROR = "qwen-code.daemon.error";
62
+ function errorMessage(error) {
63
+ if (error instanceof Error) return error.message;
64
+ return String(error);
65
+ }
66
+ __name(errorMessage, "errorMessage");
67
+ function errorType(error) {
68
+ if (error instanceof Error) return error.name || "Error";
69
+ return typeof error;
70
+ }
71
+ __name(errorType, "errorType");
72
+ var INVALID_TRACE_ID = "0".repeat(32);
73
+ var INVALID_SPAN_ID = "0".repeat(16);
74
+ function stripReservedTraceMeta(meta) {
75
+ if (!meta || typeof meta !== "object" || Array.isArray(meta)) return {};
76
+ const record = meta;
77
+ if (!(DAEMON_TRACEPARENT_META_KEY in record) && !(DAEMON_TRACESTATE_META_KEY in record)) {
78
+ return { ...record };
79
+ }
80
+ const out = { ...record };
81
+ delete out[DAEMON_TRACEPARENT_META_KEY];
82
+ delete out[DAEMON_TRACESTATE_META_KEY];
83
+ return out;
84
+ }
85
+ __name(stripReservedTraceMeta, "stripReservedTraceMeta");
86
+ function hashDaemonWorkspace(workspace) {
87
+ return createHash("sha256").update(workspace).digest("hex").slice(0, 16);
88
+ }
89
+ __name(hashDaemonWorkspace, "hashDaemonWorkspace");
90
+ async function withDaemonSpan(name, attributes, fn, options = {}) {
91
+ if (!isTelemetrySdkInitialized()) {
92
+ return await fn(void 0);
93
+ }
94
+ const autoOkOnSuccess = options.autoOkOnSuccess ?? true;
95
+ const tracer = trace.getTracer(SERVICE_NAME);
96
+ const spanOptions = {
97
+ kind: SpanKind.INTERNAL,
98
+ attributes,
99
+ ...options.startTime ? { startTime: options.startTime } : {}
100
+ };
101
+ const run = /* @__PURE__ */ __name(async (span) => {
102
+ try {
103
+ const result = await fn(span);
104
+ if (autoOkOnSuccess) {
105
+ span.setStatus({ code: SpanStatusCode.OK });
106
+ }
107
+ return result;
108
+ } catch (error) {
109
+ recordDaemonError(span, error);
110
+ throw error;
111
+ } finally {
112
+ span.end();
113
+ }
114
+ }, "run");
115
+ return options.parentContext ? await tracer.startActiveSpan(
116
+ name,
117
+ spanOptions,
118
+ options.parentContext,
119
+ run
120
+ ) : await tracer.startActiveSpan(name, spanOptions, run);
121
+ }
122
+ __name(withDaemonSpan, "withDaemonSpan");
123
+ async function withDaemonRequestSpan(options, fn) {
124
+ return await withDaemonSpan(
125
+ SPAN_DAEMON_REQUEST,
126
+ {
127
+ "http.request.method": options.method,
128
+ "http.route": options.route,
129
+ "qwen-code.daemon.operation": "http_request",
130
+ ...options.workspaceHash ? { "qwen-code.workspace.hash": options.workspaceHash } : {},
131
+ ...options.sessionId ? { "session.id": options.sessionId } : {},
132
+ ...options.clientId ? { "qwen-code.client_id": options.clientId } : {},
133
+ ...options.permissionRequestId ? {
134
+ "qwen-code.daemon.permission.request_id": options.permissionRequestId
135
+ } : {},
136
+ ...options.deferredRuntimeWaitMs !== void 0 ? {
137
+ "qwen-code.daemon.runtime.wait_ms": options.deferredRuntimeWaitMs
138
+ } : {},
139
+ ...options.deferredRuntimePath ? { "qwen-code.daemon.runtime.path": options.deferredRuntimePath } : {}
140
+ },
141
+ fn,
142
+ { autoOkOnSuccess: false, startTime: options.startTime }
143
+ );
144
+ }
145
+ __name(withDaemonRequestSpan, "withDaemonRequestSpan");
146
+ async function withDaemonBridgeSpan(operation, attributes, fn) {
147
+ return await withDaemonSpan(
148
+ SPAN_DAEMON_BRIDGE,
149
+ {
150
+ "qwen-code.daemon.operation": operation,
151
+ ...attributes
152
+ },
153
+ async () => await fn()
154
+ );
155
+ }
156
+ __name(withDaemonBridgeSpan, "withDaemonBridgeSpan");
157
+ function recordDaemonHttpResponse(span, statusCode) {
158
+ try {
159
+ span?.setAttribute("http.response.status_code", statusCode);
160
+ } catch {
161
+ }
162
+ }
163
+ __name(recordDaemonHttpResponse, "recordDaemonHttpResponse");
164
+ function addDaemonRequestAttribute(key, value) {
165
+ try {
166
+ trace.getSpan(context.active())?.setAttribute(key, value);
167
+ } catch {
168
+ }
169
+ }
170
+ __name(addDaemonRequestAttribute, "addDaemonRequestAttribute");
171
+ function recordDaemonError(span, error, attributes = {}) {
172
+ const target = span ?? trace.getSpan(context.active());
173
+ if (!target) return;
174
+ try {
175
+ const message = truncateSpanError(errorMessage(error));
176
+ target.recordException(error instanceof Error ? error : new Error(message));
177
+ target.setAttributes({
178
+ "error.type": errorType(error),
179
+ "error.message": message,
180
+ ...attributes
181
+ });
182
+ target.setStatus({ code: SpanStatusCode.ERROR, message });
183
+ } catch {
184
+ }
185
+ }
186
+ __name(recordDaemonError, "recordDaemonError");
187
+ function emitDaemonLog(body, attributes = {}, options) {
188
+ if (!isTelemetrySdkInitialized()) return;
189
+ try {
190
+ import_api_logs.logs.getLogger(SERVICE_NAME).emit({
191
+ body,
192
+ timestamp: /* @__PURE__ */ new Date(),
193
+ attributes: {
194
+ "event.name": options?.eventName ?? EVENT_DAEMON_ERROR,
195
+ ...attributes
196
+ },
197
+ ...options?.severityNumber != null ? { severityNumber: options.severityNumber } : {}
198
+ });
199
+ } catch {
200
+ }
201
+ }
202
+ __name(emitDaemonLog, "emitDaemonLog");
203
+ function captureDaemonTelemetryContext() {
204
+ return { context: context.active() };
205
+ }
206
+ __name(captureDaemonTelemetryContext, "captureDaemonTelemetryContext");
207
+ async function runWithDaemonTelemetryContext(captured, fn) {
208
+ const ctx = captured && typeof captured === "object" && "context" in captured && captured.context ? captured.context : void 0;
209
+ if (!ctx) return await fn();
210
+ return await context.with(ctx, fn);
211
+ }
212
+ __name(runWithDaemonTelemetryContext, "runWithDaemonTelemetryContext");
213
+ function injectDaemonTraceContext(request) {
214
+ const currentMeta = request._meta;
215
+ const nextMeta = stripReservedTraceMeta(currentMeta);
216
+ try {
217
+ const ctx = getActiveSpanTraceContext();
218
+ if (ctx) {
219
+ nextMeta[DAEMON_TRACEPARENT_META_KEY] = formatTraceparent(ctx);
220
+ }
221
+ } catch {
222
+ }
223
+ if (!currentMeta && !nextMeta[DAEMON_TRACEPARENT_META_KEY]) {
224
+ return request;
225
+ }
226
+ return {
227
+ ...request,
228
+ _meta: nextMeta
229
+ };
230
+ }
231
+ __name(injectDaemonTraceContext, "injectDaemonTraceContext");
232
+ function extractDaemonTraceContext(source) {
233
+ const meta = source?._meta;
234
+ if (!meta || typeof meta !== "object" || Array.isArray(meta)) {
235
+ return void 0;
236
+ }
237
+ const record = meta;
238
+ const traceparent = record[DAEMON_TRACEPARENT_META_KEY];
239
+ if (typeof traceparent !== "string" || traceparent.length === 0) {
240
+ return void 0;
241
+ }
242
+ const carrier = { traceparent };
243
+ const tracestate = record[DAEMON_TRACESTATE_META_KEY];
244
+ if (typeof tracestate === "string" && tracestate.length > 0) {
245
+ carrier["tracestate"] = tracestate;
246
+ }
247
+ const extracted = propagation.extract(ROOT_CONTEXT, carrier);
248
+ if (trace.getSpanContext(extracted)) return extracted;
249
+ const parts = traceparent.split("-");
250
+ const traceId = parts[1];
251
+ const spanId = parts[2];
252
+ const flags = parts[3];
253
+ if (parts[0] !== "00" || !traceId?.match(/^[0-9a-f]{32}$/) || !spanId?.match(/^[0-9a-f]{16}$/) || !flags?.match(/^[0-9a-f]{2}$/) || traceId === INVALID_TRACE_ID || spanId === INVALID_SPAN_ID) {
254
+ return void 0;
255
+ }
256
+ return trace.setSpan(
257
+ ROOT_CONTEXT,
258
+ trace.wrapSpanContext({
259
+ traceId,
260
+ spanId,
261
+ traceFlags: Number.parseInt(flags, 16),
262
+ isRemote: true
263
+ })
264
+ );
265
+ }
266
+ __name(extractDaemonTraceContext, "extractDaemonTraceContext");
267
+ function createDaemonBridgeTelemetry() {
268
+ return {
269
+ captureContext: captureDaemonTelemetryContext,
270
+ runWithContext: runWithDaemonTelemetryContext,
271
+ withSpan: withDaemonBridgeSpan,
272
+ setActiveSpanAttributes(attributes) {
273
+ if (!isTelemetrySdkInitialized()) return;
274
+ try {
275
+ trace.getSpan(context.active())?.setAttributes(attributes);
276
+ } catch {
277
+ }
278
+ },
279
+ event(name, attributes) {
280
+ if (!isTelemetrySdkInitialized()) return;
281
+ try {
282
+ const activeSpan = trace.getSpan(context.active());
283
+ if (activeSpan) {
284
+ activeSpan.addEvent(name, attributes);
285
+ return;
286
+ }
287
+ const span = trace.getTracer(SERVICE_NAME).startSpan(SPAN_DAEMON_BRIDGE, {
288
+ kind: SpanKind.INTERNAL,
289
+ attributes: {
290
+ "event.name": name,
291
+ "qwen-code.daemon.operation": `event.${name}`,
292
+ ...attributes
293
+ }
294
+ });
295
+ span.addEvent(name, attributes);
296
+ span.setStatus({ code: SpanStatusCode.OK });
297
+ span.end();
298
+ } catch {
299
+ }
300
+ },
301
+ injectPromptContext: injectDaemonTraceContext
302
+ };
303
+ }
304
+ __name(createDaemonBridgeTelemetry, "createDaemonBridgeTelemetry");
305
+
306
+ // packages/core/src/telemetry/daemon-metrics.ts
307
+ init_esbuild_shims();
308
+ init_esm();
309
+ var DAEMON_HTTP_REQUEST_COUNT = `${SERVICE_NAME}.daemon.http.request.count`;
310
+ var DAEMON_HTTP_REQUEST_DURATION = `${SERVICE_NAME}.daemon.http.request.duration`;
311
+ var DAEMON_SESSION_ACTIVE = `${SERVICE_NAME}.daemon.session.active`;
312
+ var DAEMON_SESSION_LIFECYCLE = `${SERVICE_NAME}.daemon.session.lifecycle`;
313
+ var DAEMON_CHANNEL_LIFECYCLE = `${SERVICE_NAME}.daemon.channel.lifecycle`;
314
+ var DAEMON_PROMPT_QUEUE_WAIT = `${SERVICE_NAME}.daemon.prompt.queue_wait`;
315
+ var DAEMON_PROMPT_DURATION = `${SERVICE_NAME}.daemon.prompt.duration`;
316
+ var DAEMON_BRIDGE_ERROR_COUNT = `${SERVICE_NAME}.daemon.bridge.error.count`;
317
+ var DAEMON_CANCEL_COUNT = `${SERVICE_NAME}.daemon.cancel.count`;
318
+ var DAEMON_PIPE_MESSAGE_BYTES = `${SERVICE_NAME}.daemon.pipe.message_bytes`;
319
+ var DAEMON_SSE_ACTIVE = `${SERVICE_NAME}.daemon.sse.active`;
320
+ var DAEMON_PROCESS_HEAP_USED = `${SERVICE_NAME}.daemon.process.heap_used`;
321
+ var KNOWN_ERROR_TYPES = /* @__PURE__ */ new Set([
322
+ "SessionNotFoundError",
323
+ "WorkspaceMismatchError",
324
+ "InvalidClientIdError",
325
+ "SessionLimitExceededError",
326
+ "RestoreInProgressError",
327
+ "InvalidSessionScopeError",
328
+ "TrustGateError",
329
+ "WorkspaceInitConflictError",
330
+ "WorkspaceInitPathEscapeError",
331
+ "WorkspaceInitSymlinkError",
332
+ "WorkspaceInitRaceError",
333
+ "McpServerNotFoundError",
334
+ "McpServerRestartFailedError",
335
+ "PromptDeadlineExceededError",
336
+ "InvalidSessionMetadataError",
337
+ "SubscriberLimitExceededError",
338
+ "BridgeChannelClosedError",
339
+ "BridgeTimeoutError",
340
+ "PermissionForbiddenError"
341
+ ]);
342
+ var initialized = false;
343
+ var httpRequestCounter;
344
+ var httpRequestDurationHistogram;
345
+ var sessionLifecycleCounter;
346
+ var channelLifecycleCounter;
347
+ var promptQueueWaitHistogram;
348
+ var promptDurationHistogram;
349
+ var bridgeErrorCounter;
350
+ var cancelCounter;
351
+ var pipeMessageBytesHistogram;
352
+ function normalizeErrorType(err) {
353
+ const name = err instanceof Error ? err.name : typeof err;
354
+ return KNOWN_ERROR_TYPES.has(name) ? name : "unknown";
355
+ }
356
+ __name(normalizeErrorType, "normalizeErrorType");
357
+ function initializeDaemonMetrics() {
358
+ if (initialized) return;
359
+ const meter = getMeter();
360
+ if (!meter) return;
361
+ httpRequestCounter = meter.createCounter(DAEMON_HTTP_REQUEST_COUNT, {
362
+ description: "Daemon HTTP request count by route and status class.",
363
+ valueType: ValueType.INT
364
+ });
365
+ httpRequestDurationHistogram = meter.createHistogram(
366
+ DAEMON_HTTP_REQUEST_DURATION,
367
+ {
368
+ description: "Daemon HTTP request duration in milliseconds.",
369
+ unit: "ms",
370
+ valueType: ValueType.DOUBLE,
371
+ advice: {
372
+ explicitBucketBoundaries: [
373
+ 1,
374
+ 2,
375
+ 5,
376
+ 10,
377
+ 25,
378
+ 50,
379
+ 100,
380
+ 250,
381
+ 500,
382
+ 1e3,
383
+ 2500,
384
+ 5e3,
385
+ 1e4,
386
+ 3e4
387
+ ]
388
+ }
389
+ }
390
+ );
391
+ sessionLifecycleCounter = meter.createCounter(DAEMON_SESSION_LIFECYCLE, {
392
+ description: "Daemon session lifecycle events (spawn, close, die).",
393
+ valueType: ValueType.INT
394
+ });
395
+ channelLifecycleCounter = meter.createCounter(DAEMON_CHANNEL_LIFECYCLE, {
396
+ description: "Daemon ACP channel lifecycle events (spawn, exit).",
397
+ valueType: ValueType.INT
398
+ });
399
+ promptQueueWaitHistogram = meter.createHistogram(DAEMON_PROMPT_QUEUE_WAIT, {
400
+ description: "Time a prompt waited in the per-session FIFO queue.",
401
+ unit: "ms",
402
+ valueType: ValueType.DOUBLE,
403
+ advice: {
404
+ explicitBucketBoundaries: [
405
+ 1,
406
+ 5,
407
+ 10,
408
+ 50,
409
+ 100,
410
+ 500,
411
+ 1e3,
412
+ 5e3,
413
+ 1e4,
414
+ 3e4,
415
+ 6e4
416
+ ]
417
+ }
418
+ });
419
+ promptDurationHistogram = meter.createHistogram(DAEMON_PROMPT_DURATION, {
420
+ description: "End-to-end prompt duration from dispatch to completion.",
421
+ unit: "ms",
422
+ valueType: ValueType.DOUBLE,
423
+ advice: {
424
+ explicitBucketBoundaries: [
425
+ 100,
426
+ 500,
427
+ 1e3,
428
+ 2500,
429
+ 5e3,
430
+ 1e4,
431
+ 3e4,
432
+ 6e4,
433
+ 12e4,
434
+ 3e5,
435
+ 6e5
436
+ ]
437
+ }
438
+ });
439
+ bridgeErrorCounter = meter.createCounter(DAEMON_BRIDGE_ERROR_COUNT, {
440
+ description: "Daemon bridge error count by normalized error type.",
441
+ valueType: ValueType.INT
442
+ });
443
+ cancelCounter = meter.createCounter(DAEMON_CANCEL_COUNT, {
444
+ description: "Daemon cancel request count.",
445
+ valueType: ValueType.INT
446
+ });
447
+ pipeMessageBytesHistogram = meter.createHistogram(DAEMON_PIPE_MESSAGE_BYTES, {
448
+ description: "Daemon ACP child pipe message payload size in bytes.",
449
+ unit: "By",
450
+ valueType: ValueType.INT,
451
+ advice: {
452
+ explicitBucketBoundaries: [
453
+ 256,
454
+ 1024,
455
+ 4096,
456
+ 16384,
457
+ 65536,
458
+ 262144,
459
+ 1048576,
460
+ 4194304,
461
+ 16777216
462
+ ]
463
+ }
464
+ });
465
+ initialized = true;
466
+ }
467
+ __name(initializeDaemonMetrics, "initializeDaemonMetrics");
468
+ var gaugesRegistered = false;
469
+ function registerDaemonGaugeCallbacks(callbacks) {
470
+ if (gaugesRegistered) return;
471
+ const meter = getMeter();
472
+ if (!meter) return;
473
+ meter.createObservableGauge(DAEMON_SESSION_ACTIVE, {
474
+ description: "Current number of active daemon sessions.",
475
+ valueType: ValueType.INT
476
+ }).addCallback((result) => {
477
+ try {
478
+ result.observe(callbacks.sessionCount());
479
+ } catch {
480
+ }
481
+ });
482
+ meter.createObservableGauge(DAEMON_SSE_ACTIVE, {
483
+ description: "Current number of active SSE connections.",
484
+ valueType: ValueType.INT
485
+ }).addCallback((result) => {
486
+ try {
487
+ result.observe(callbacks.sseCount());
488
+ } catch {
489
+ }
490
+ });
491
+ meter.createObservableGauge(DAEMON_PROCESS_HEAP_USED, {
492
+ description: "Daemon process heap memory usage in bytes.",
493
+ unit: "bytes",
494
+ valueType: ValueType.INT
495
+ }).addCallback((result) => {
496
+ try {
497
+ result.observe(callbacks.heapUsed());
498
+ } catch {
499
+ }
500
+ });
501
+ gaugesRegistered = true;
502
+ }
503
+ __name(registerDaemonGaugeCallbacks, "registerDaemonGaugeCallbacks");
504
+ function recordDaemonHttpRequest(durationMs, route, statusCode, deferredRuntimePath) {
505
+ if (!initialized) return;
506
+ const statusClass = `${Math.floor(statusCode / 100)}xx`;
507
+ httpRequestCounter?.add(1, { route, status_class: statusClass });
508
+ httpRequestDurationHistogram?.record(durationMs, {
509
+ route,
510
+ runtime_path: deferredRuntimePath ?? "none"
511
+ });
512
+ }
513
+ __name(recordDaemonHttpRequest, "recordDaemonHttpRequest");
514
+ function recordDaemonSessionLifecycle(action) {
515
+ if (!initialized) return;
516
+ sessionLifecycleCounter?.add(1, { action });
517
+ }
518
+ __name(recordDaemonSessionLifecycle, "recordDaemonSessionLifecycle");
519
+ function recordDaemonChannelLifecycle(action, expected) {
520
+ if (!initialized) return;
521
+ channelLifecycleCounter?.add(1, {
522
+ action,
523
+ ...expected != null ? { expected } : {}
524
+ });
525
+ }
526
+ __name(recordDaemonChannelLifecycle, "recordDaemonChannelLifecycle");
527
+ function recordDaemonPromptQueueWait(durationMs) {
528
+ if (!initialized) return;
529
+ promptQueueWaitHistogram?.record(durationMs);
530
+ }
531
+ __name(recordDaemonPromptQueueWait, "recordDaemonPromptQueueWait");
532
+ function recordDaemonPromptDuration(durationMs) {
533
+ if (!initialized) return;
534
+ promptDurationHistogram?.record(durationMs);
535
+ }
536
+ __name(recordDaemonPromptDuration, "recordDaemonPromptDuration");
537
+ function recordDaemonBridgeError(err) {
538
+ if (!initialized) return;
539
+ bridgeErrorCounter?.add(1, { error_type: normalizeErrorType(err) });
540
+ }
541
+ __name(recordDaemonBridgeError, "recordDaemonBridgeError");
542
+ function recordDaemonCancel() {
543
+ if (!initialized) return;
544
+ cancelCounter?.add(1);
545
+ }
546
+ __name(recordDaemonCancel, "recordDaemonCancel");
547
+ function recordDaemonPipeMessage(direction, bytes) {
548
+ if (!initialized) return;
549
+ pipeMessageBytesHistogram?.record(bytes, { direction });
550
+ }
551
+ __name(recordDaemonPipeMessage, "recordDaemonPipeMessage");
552
+
553
+ // packages/core/src/telemetry/event-loop-lag.ts
554
+ init_esbuild_shims();
555
+ import { monitorEventLoopDelay } from "node:perf_hooks";
556
+ var DEFAULT_RESOLUTION_MS = 20;
557
+ var DEFAULT_STALL_THRESHOLD_MS = 1e3;
558
+ var NS_PER_MS = 1e6;
559
+ function startEventLoopLagMonitor(options = {}) {
560
+ const resolutionMs = positiveFiniteOrDefault(
561
+ options.resolutionMs,
562
+ DEFAULT_RESOLUTION_MS
563
+ );
564
+ const stallThresholdMs = positiveFiniteOrDefault(
565
+ options.stallThresholdMs,
566
+ DEFAULT_STALL_THRESHOLD_MS
567
+ );
568
+ const histogram = monitorEventLoopDelay({ resolution: resolutionMs });
569
+ histogram.enable();
570
+ let disposed = false;
571
+ let lastReportedMaxMs = 0;
572
+ const readMaxMs = /* @__PURE__ */ __name(() => nsToMs(histogram.max), "readMaxMs");
573
+ const checkForNewMaxStall = /* @__PURE__ */ __name(() => {
574
+ if (disposed || !options.onNewMaxStall) return;
575
+ const maxMs = readMaxMs();
576
+ if (maxMs >= stallThresholdMs && maxMs > lastReportedMaxMs) {
577
+ lastReportedMaxMs = maxMs;
578
+ try {
579
+ options.onNewMaxStall(maxMs);
580
+ } catch {
581
+ }
582
+ }
583
+ }, "checkForNewMaxStall");
584
+ const interval = options.onNewMaxStall !== void 0 ? setInterval(checkForNewMaxStall, resolutionMs) : void 0;
585
+ interval?.unref();
586
+ return {
587
+ snapshot() {
588
+ return {
589
+ meanMs: nsToMs(histogram.mean),
590
+ p50Ms: nsToMs(histogram.percentile(50)),
591
+ p99Ms: nsToMs(histogram.percentile(99)),
592
+ maxMs: readMaxMs()
593
+ };
594
+ },
595
+ dispose() {
596
+ if (disposed) return;
597
+ disposed = true;
598
+ if (interval) {
599
+ clearInterval(interval);
600
+ }
601
+ histogram.disable();
602
+ }
603
+ };
604
+ }
605
+ __name(startEventLoopLagMonitor, "startEventLoopLagMonitor");
606
+ function nsToMs(value) {
607
+ return Number.isFinite(value) ? value / NS_PER_MS : 0;
608
+ }
609
+ __name(nsToMs, "nsToMs");
610
+ function positiveFiniteOrDefault(value, fallback) {
611
+ return value !== void 0 && Number.isFinite(value) && value > 0 ? value : fallback;
612
+ }
613
+ __name(positiveFiniteOrDefault, "positiveFiniteOrDefault");
614
+
615
+ // packages/core/src/telemetry/event-loop-lag-metrics.ts
616
+ init_esbuild_shims();
617
+ init_esm();
618
+ var DAEMON_EVENT_LOOP_LAG = `${SERVICE_NAME}.daemon.event_loop.lag`;
619
+ var ACP_EVENT_LOOP_LAG = `${SERVICE_NAME}.acp.event_loop.lag`;
620
+ var daemonGaugeRegistered = false;
621
+ var acpGaugeRegistered = false;
622
+ function registerDaemonEventLoopLagGauge(read) {
623
+ if (daemonGaugeRegistered) return;
624
+ daemonGaugeRegistered = registerEventLoopLagGauge(
625
+ DAEMON_EVENT_LOOP_LAG,
626
+ read
627
+ );
628
+ }
629
+ __name(registerDaemonEventLoopLagGauge, "registerDaemonEventLoopLagGauge");
630
+ function registerAcpEventLoopLagGauge(read) {
631
+ if (acpGaugeRegistered) return;
632
+ acpGaugeRegistered = registerEventLoopLagGauge(ACP_EVENT_LOOP_LAG, read);
633
+ }
634
+ __name(registerAcpEventLoopLagGauge, "registerAcpEventLoopLagGauge");
635
+ function registerEventLoopLagGauge(name, read) {
636
+ const meter = getMeter();
637
+ if (!meter) return false;
638
+ meter.createObservableGauge(name, {
639
+ description: "Event loop lag in milliseconds.",
640
+ unit: "ms",
641
+ valueType: ValueType.DOUBLE
642
+ }).addCallback((result) => {
643
+ try {
644
+ const snapshot = read();
645
+ result.observe(snapshot.meanMs, { stat: "mean" });
646
+ result.observe(snapshot.p50Ms, { stat: "p50" });
647
+ result.observe(snapshot.p99Ms, { stat: "p99" });
648
+ result.observe(snapshot.maxMs, { stat: "max" });
649
+ } catch {
650
+ }
651
+ });
652
+ return true;
653
+ }
654
+ __name(registerEventLoopLagGauge, "registerEventLoopLagGauge");
655
+
656
+ // packages/core/src/telemetry/index.ts
657
+ var TelemetryTarget = /* @__PURE__ */ ((TelemetryTarget2) => {
658
+ TelemetryTarget2["GCP"] = "gcp";
659
+ TelemetryTarget2["LOCAL"] = "local";
660
+ return TelemetryTarget2;
661
+ })(TelemetryTarget || {});
662
+ var DEFAULT_TELEMETRY_TARGET = "local" /* LOCAL */;
663
+ var DEFAULT_OTLP_ENDPOINT = "http://localhost:4317";
664
+
665
+ // packages/core/src/telemetry/resource-attributes.ts
666
+ init_esbuild_shims();
667
+ init_esm();
668
+ var RESERVED_RESOURCE_ATTRIBUTE_KEYS = /* @__PURE__ */ new Set([
669
+ "service.version",
670
+ "session.id"
671
+ ]);
672
+ function warn(msg, warnings) {
673
+ diag.warn(msg);
674
+ warnings?.push(msg);
675
+ }
676
+ __name(warn, "warn");
677
+ function parseOtelResourceAttributes(raw, warnings) {
678
+ if (!raw) return {};
679
+ const out = {};
680
+ for (const pair of raw.split(",")) {
681
+ const trimmed = pair.trim();
682
+ if (!trimmed) continue;
683
+ const idx = trimmed.indexOf("=");
684
+ if (idx < 0) {
685
+ warn(
686
+ `Skipping malformed OTEL_RESOURCE_ATTRIBUTES entry: "${trimmed}" (hint: percent-encode literal commas as %2C)`,
687
+ warnings
688
+ );
689
+ continue;
690
+ }
691
+ const rawKey = trimmed.slice(0, idx).trim();
692
+ if (!rawKey) continue;
693
+ const valueRaw = trimmed.slice(idx + 1).trim();
694
+ let key;
695
+ try {
696
+ key = decodeURIComponent(rawKey);
697
+ } catch {
698
+ warn(
699
+ `Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES key "${rawKey}", using raw key`,
700
+ warnings
701
+ );
702
+ key = rawKey;
703
+ }
704
+ let value;
705
+ try {
706
+ value = decodeURIComponent(valueRaw);
707
+ } catch {
708
+ warn(
709
+ `Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES for key "${key}", using raw value`,
710
+ warnings
711
+ );
712
+ value = valueRaw;
713
+ }
714
+ out[key] = value;
715
+ }
716
+ return out;
717
+ }
718
+ __name(parseOtelResourceAttributes, "parseOtelResourceAttributes");
719
+ function stripReservedResourceAttributes(attrs, source, warnings) {
720
+ for (const k of RESERVED_RESOURCE_ATTRIBUTE_KEYS) {
721
+ if (k in attrs) {
722
+ warn(`${source} cannot override reserved key "${k}"; ignoring`, warnings);
723
+ delete attrs[k];
724
+ }
725
+ }
726
+ return attrs;
727
+ }
728
+ __name(stripReservedResourceAttributes, "stripReservedResourceAttributes");
729
+ function coerceStringResourceAttributes(raw, warnings) {
730
+ if (raw === null || raw === void 0) return {};
731
+ if (typeof raw !== "object" || Array.isArray(raw)) {
732
+ warn(
733
+ "settings.telemetry.resourceAttributes must be an object; ignoring",
734
+ warnings
735
+ );
736
+ return {};
737
+ }
738
+ const out = {};
739
+ for (const [k, v] of Object.entries(raw)) {
740
+ const key = k.trim();
741
+ if (!key) {
742
+ warn(
743
+ "settings.telemetry.resourceAttributes has an empty or whitespace-only key; ignoring",
744
+ warnings
745
+ );
746
+ continue;
747
+ }
748
+ if (typeof v === "string") {
749
+ out[key] = v;
750
+ } else {
751
+ warn(
752
+ `settings.telemetry.resourceAttributes value for "${key}" must be a string (got ${typeof v}); ignoring`,
753
+ warnings
754
+ );
755
+ }
756
+ }
757
+ return out;
758
+ }
759
+ __name(coerceStringResourceAttributes, "coerceStringResourceAttributes");
760
+
761
+ // packages/core/src/telemetry/config.ts
762
+ function parseBooleanEnvFlag(value) {
763
+ if (value === void 0) return void 0;
764
+ return value === "true" || value === "1";
765
+ }
766
+ __name(parseBooleanEnvFlag, "parseBooleanEnvFlag");
767
+ function parseTelemetryTargetValue(value) {
768
+ if (value === void 0) return void 0;
769
+ if (value === "local" /* LOCAL */ || value === "local") {
770
+ return "local" /* LOCAL */;
771
+ }
772
+ if (value === "gcp" /* GCP */ || value === "gcp") {
773
+ return "gcp" /* GCP */;
774
+ }
775
+ return void 0;
776
+ }
777
+ __name(parseTelemetryTargetValue, "parseTelemetryTargetValue");
778
+ function parseSensitiveSpanAttributeMaxLengthEnvValue(envName, value) {
779
+ if (value === void 0) return void 0;
780
+ const trimmed = value.trim();
781
+ const parsed = Number(trimmed);
782
+ if (!/^\d+$/.test(trimmed) || !isValidSensitiveSpanAttributeMaxLength(parsed)) {
783
+ throw new FatalConfigError(
784
+ `Invalid ${envName}: must be a positive integer no greater than ${SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT}, got '${value}'`
785
+ );
786
+ }
787
+ return parsed;
788
+ }
789
+ __name(parseSensitiveSpanAttributeMaxLengthEnvValue, "parseSensitiveSpanAttributeMaxLengthEnvValue");
790
+ function parseSensitiveSpanAttributeMaxLengthSetting(settingName, value) {
791
+ if (value === void 0) return void 0;
792
+ if (typeof value !== "number" || !isValidSensitiveSpanAttributeMaxLength(value)) {
793
+ throw new FatalConfigError(
794
+ `Invalid ${settingName}: must be a positive integer no greater than ${SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT}, got ${String(
795
+ value
796
+ )}`
797
+ );
798
+ }
799
+ return value;
800
+ }
801
+ __name(parseSensitiveSpanAttributeMaxLengthSetting, "parseSensitiveSpanAttributeMaxLengthSetting");
802
+ async function resolveTelemetrySettings(options) {
803
+ const argv = options.argv ?? {};
804
+ const env = options.env ?? {};
805
+ const settings = options.settings ?? {};
806
+ const enabled = argv.telemetry ?? parseBooleanEnvFlag(env["QWEN_TELEMETRY_ENABLED"]) ?? settings.enabled;
807
+ const rawTarget = argv.telemetryTarget ?? env["QWEN_TELEMETRY_TARGET"] ?? settings.target;
808
+ const target = parseTelemetryTargetValue(rawTarget);
809
+ if (rawTarget !== void 0 && target === void 0) {
810
+ throw new FatalConfigError(
811
+ `Invalid telemetry target: ${String(
812
+ rawTarget
813
+ )}. Valid values are: local, gcp`
814
+ );
815
+ }
816
+ const otlpEndpoint = argv.telemetryOtlpEndpoint ?? env["QWEN_TELEMETRY_OTLP_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_ENDPOINT"] ?? settings.otlpEndpoint;
817
+ const rawProtocol = argv.telemetryOtlpProtocol ?? env["QWEN_TELEMETRY_OTLP_PROTOCOL"] ?? settings.otlpProtocol;
818
+ const otlpProtocol = ["grpc", "http"].find(
819
+ (p) => p === rawProtocol
820
+ );
821
+ if (rawProtocol !== void 0 && otlpProtocol === void 0) {
822
+ throw new FatalConfigError(
823
+ `Invalid telemetry OTLP protocol: ${String(
824
+ rawProtocol
825
+ )}. Valid values are: grpc, http`
826
+ );
827
+ }
828
+ const logPrompts = argv.telemetryLogPrompts ?? parseBooleanEnvFlag(env["QWEN_TELEMETRY_LOG_PROMPTS"]) ?? settings.logPrompts;
829
+ const includeSensitiveSpanAttributes = parseBooleanEnvFlag(
830
+ env["QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES"]
831
+ ) ?? settings.includeSensitiveSpanAttributes ?? false;
832
+ const sensitiveSpanAttributeMaxLength = parseSensitiveSpanAttributeMaxLengthEnvValue(
833
+ "QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH",
834
+ env["QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH"]
835
+ ) ?? parseSensitiveSpanAttributeMaxLengthSetting(
836
+ "telemetry.sensitiveSpanAttributeMaxLength",
837
+ settings.sensitiveSpanAttributeMaxLength
838
+ ) ?? DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH;
839
+ const outfile = argv.telemetryOutfile ?? env["QWEN_TELEMETRY_OUTFILE"] ?? settings.outfile;
840
+ const otlpTracesEndpoint = env["QWEN_TELEMETRY_OTLP_TRACES_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] ?? settings.otlpTracesEndpoint;
841
+ const otlpLogsEndpoint = env["QWEN_TELEMETRY_OTLP_LOGS_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_LOGS_ENDPOINT"] ?? settings.otlpLogsEndpoint;
842
+ const otlpMetricsEndpoint = env["QWEN_TELEMETRY_OTLP_METRICS_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_METRICS_ENDPOINT"] ?? settings.otlpMetricsEndpoint;
843
+ const resourceAttributeWarnings = [];
844
+ const envResourceAttrs = stripReservedResourceAttributes(
845
+ parseOtelResourceAttributes(
846
+ env["OTEL_RESOURCE_ATTRIBUTES"],
847
+ resourceAttributeWarnings
848
+ ),
849
+ "OTEL_RESOURCE_ATTRIBUTES",
850
+ resourceAttributeWarnings
851
+ );
852
+ const settingsResourceAttrs = stripReservedResourceAttributes(
853
+ coerceStringResourceAttributes(
854
+ settings.resourceAttributes,
855
+ resourceAttributeWarnings
856
+ ),
857
+ "settings.telemetry.resourceAttributes",
858
+ resourceAttributeWarnings
859
+ );
860
+ const mergedResourceAttrs = {
861
+ ...envResourceAttrs,
862
+ ...settingsResourceAttrs
863
+ };
864
+ const otelServiceName = env["OTEL_SERVICE_NAME"]?.trim();
865
+ if (otelServiceName) {
866
+ mergedResourceAttrs["service.name"] = otelServiceName;
867
+ }
868
+ const resourceAttributes = Object.keys(mergedResourceAttrs).length ? mergedResourceAttrs : void 0;
869
+ const metricsIncludeSessionId = parseBooleanEnvFlag(env["QWEN_TELEMETRY_METRICS_INCLUDE_SESSION_ID"]) ?? settings.metrics?.includeSessionId ?? false;
870
+ return {
871
+ enabled,
872
+ target,
873
+ otlpEndpoint,
874
+ otlpProtocol,
875
+ otlpTracesEndpoint,
876
+ otlpLogsEndpoint,
877
+ otlpMetricsEndpoint,
878
+ logPrompts,
879
+ includeSensitiveSpanAttributes,
880
+ sensitiveSpanAttributeMaxLength,
881
+ outfile,
882
+ resourceAttributes,
883
+ metrics: { includeSessionId: metricsIncludeSessionId },
884
+ resourceAttributeWarnings: resourceAttributeWarnings.length ? resourceAttributeWarnings : void 0
885
+ };
886
+ }
887
+ __name(resolveTelemetrySettings, "resolveTelemetrySettings");
888
+
889
+ export {
890
+ parseBooleanEnvFlag,
891
+ parseTelemetryTargetValue,
892
+ resolveTelemetrySettings,
893
+ DAEMON_TRACEPARENT_META_KEY,
894
+ DAEMON_TRACESTATE_META_KEY,
895
+ hashDaemonWorkspace,
896
+ withDaemonSpan,
897
+ withDaemonRequestSpan,
898
+ withDaemonBridgeSpan,
899
+ recordDaemonHttpResponse,
900
+ addDaemonRequestAttribute,
901
+ recordDaemonError,
902
+ emitDaemonLog,
903
+ captureDaemonTelemetryContext,
904
+ runWithDaemonTelemetryContext,
905
+ injectDaemonTraceContext,
906
+ extractDaemonTraceContext,
907
+ createDaemonBridgeTelemetry,
908
+ initializeDaemonMetrics,
909
+ registerDaemonGaugeCallbacks,
910
+ recordDaemonHttpRequest,
911
+ recordDaemonSessionLifecycle,
912
+ recordDaemonChannelLifecycle,
913
+ recordDaemonPromptQueueWait,
914
+ recordDaemonPromptDuration,
915
+ recordDaemonBridgeError,
916
+ recordDaemonCancel,
917
+ recordDaemonPipeMessage,
918
+ startEventLoopLagMonitor,
919
+ registerDaemonEventLoopLagGauge,
920
+ registerAcpEventLoopLagGauge,
921
+ TelemetryTarget,
922
+ DEFAULT_TELEMETRY_TARGET,
923
+ DEFAULT_OTLP_ENDPOINT
924
+ };
925
+ /**
926
+ * @license
927
+ * Copyright 2026 Qwen Team
928
+ * SPDX-License-Identifier: Apache-2.0
929
+ */
930
+ /**
931
+ * @license
932
+ * Copyright 2025 Google LLC
933
+ * SPDX-License-Identifier: Apache-2.0
934
+ */