@qwen-code/qwen-code 0.22.2 → 0.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/bundled/computer-use/SKILL.md +3 -3
  2. package/bundled/qc-helper/docs/configuration/settings.md +37 -36
  3. package/bundled/qc-helper/docs/features/channels/dws.md +2 -0
  4. package/bundled/qc-helper/docs/features/channels/overview.md +34 -3
  5. package/bundled/qc-helper/docs/features/code-review.md +3 -3
  6. package/bundled/qc-helper/docs/features/computer-use.md +2 -2
  7. package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
  8. package/bundled/qc-helper/docs/qwen-serve.md +1 -1
  9. package/bundled/review/SKILL.md +81 -31
  10. package/bundled/review/references/persistence.md +7 -3
  11. package/bundled/review/references/posting.md +10 -4
  12. package/chunks/{MaxSizedBox-X5FZSNAJ.js → MaxSizedBox-X42SXBJH.js} +33 -35
  13. package/chunks/{StandaloneSessionPicker-AVLI6VJP.js → StandaloneSessionPicker-2FJAOLGG.js} +51 -53
  14. package/chunks/{acpAgent-MXEAN54C.js → acpAgent-2ZMIJAFV.js} +268 -186
  15. package/chunks/{agent-PJIPDWHB.js → agent-X5WX3L2I.js} +24 -26
  16. package/chunks/{agent-headless-B4JVD7UK.js → agent-headless-IZM25LJA.js} +24 -26
  17. package/chunks/{anthropicContentGenerator-HGMBACVE.js → anthropicContentGenerator-YVTB6QX7.js} +43 -47
  18. package/chunks/{artifact-tool-5YT4QF7Y.js → artifact-tool-XSMPHZBT.js} +9 -1
  19. package/chunks/{bridge-FKZTVIS3.js → bridge-ME6QXZNA.js} +37 -39
  20. package/chunks/{channel-management-service-X4AZ6IXX.js → channel-management-service-HQ6KDS7C.js} +6 -6
  21. package/chunks/{channel-settings-store-4UFCLBBG.js → channel-settings-store-PEOI7XCG.js} +47 -44
  22. package/chunks/{channel-worker-group-27HMGD5S.js → channel-worker-group-6NA6BBZV.js} +5 -5
  23. package/chunks/{channel-worker-manager-QEGX646Z.js → channel-worker-manager-NEZ2J6RK.js} +5 -5
  24. package/chunks/{channel-worker-supervisor-UEW2WWCC.js → channel-worker-supervisor-FKU7DIHJ.js} +4 -4
  25. package/chunks/{chunk-P5GGM4KS.js → chunk-2HYKTO7V.js} +3 -3
  26. package/chunks/{chunk-XDFHY4R3.js → chunk-2LNNVAUV.js} +2 -2
  27. package/chunks/{chunk-ZFKOCECU.js → chunk-2OBKDPZZ.js} +2 -2
  28. package/chunks/{chunk-3DXFGHAJ.js → chunk-2OUD5T67.js} +1 -1
  29. package/chunks/{chunk-EOGELB3H.js → chunk-2SXSLSQE.js} +1 -1
  30. package/chunks/{chunk-4JWNNLPT.js → chunk-2YOHKHYR.js} +2 -2
  31. package/chunks/{chunk-JU4EEXC7.js → chunk-36GSQ3MM.js} +2 -2
  32. package/chunks/chunk-36LGBEM6.js +130 -0
  33. package/chunks/{chunk-H2WDGQ6D.js → chunk-3JXM2CVW.js} +1 -1
  34. package/chunks/{chunk-G34IR3D6.js → chunk-3SZC4VP4.js} +26 -109
  35. package/chunks/{chunk-HVEYF6VT.js → chunk-3WK3QDNV.js} +1 -1
  36. package/chunks/{chunk-5XBFCMWD.js → chunk-3XKLXHGK.js} +17 -9
  37. package/chunks/{chunk-SFPGAQUL.js → chunk-42IDLQWS.js} +24 -18
  38. package/chunks/{chunk-43GGFFLY.js → chunk-4K7KNVWH.js} +1 -1
  39. package/chunks/{chunk-F6FV3C5K.js → chunk-4NDLQAY2.js} +24 -272
  40. package/chunks/{chunk-VVW4ZNFY.js → chunk-4QHPPXK2.js} +15 -7
  41. package/chunks/{chunk-IJKTMLBE.js → chunk-4TT3IVGA.js} +1 -1
  42. package/chunks/{chunk-C6K43ZDE.js → chunk-4VPCTGH6.js} +5 -5
  43. package/chunks/chunk-4VQBQLIZ.js +293 -0
  44. package/chunks/{chunk-OIVXBW3W.js → chunk-62GQFYID.js} +1 -1
  45. package/chunks/{chunk-BRVWYMKV.js → chunk-6MBXY6WM.js} +1 -1
  46. package/chunks/{chunk-AGR5UROZ.js → chunk-6X7EU5TI.js} +17 -29
  47. package/chunks/{chunk-PFCQ62V4.js → chunk-6ZPDLGHN.js} +6 -6
  48. package/chunks/{chunk-RIEFGNTP.js → chunk-734C6JGI.js} +207 -43
  49. package/chunks/{chunk-FBSSIAAQ.js → chunk-73RM4POK.js} +7 -7
  50. package/chunks/{chunk-KGJGEEVR.js → chunk-7FA2II6K.js} +10 -1
  51. package/chunks/chunk-7J6OTNGO.js +424 -0
  52. package/chunks/{chunk-O2UN57NX.js → chunk-7LOELM2I.js} +19 -2
  53. package/chunks/{chunk-DIMEPKCW.js → chunk-7S226YTK.js} +1 -1
  54. package/chunks/{chunk-CPGJJJLU.js → chunk-7T52W4SW.js} +1 -1
  55. package/chunks/{chunk-5O72BNDD.js → chunk-7VMIMAVB.js} +7 -7
  56. package/chunks/{chunk-XRSOI3DL.js → chunk-A3LWD5MK.js} +1 -1
  57. package/chunks/{chunk-F7TNAPZ4.js → chunk-AIAOIFY4.js} +5 -5
  58. package/chunks/{chunk-4CDSK5AZ.js → chunk-AYFA7MZV.js} +2 -2
  59. package/chunks/{chunk-3JGZSIDA.js → chunk-B466ZSHZ.js} +1 -1
  60. package/chunks/{chunk-L6BZRIUL.js → chunk-B5PHIJGI.js} +182 -4
  61. package/chunks/{chunk-3I6UTTDX.js → chunk-BKWNKLZB.js} +19 -19
  62. package/chunks/{chunk-3FDFA4MZ.js → chunk-BOWFGCEU.js} +1 -1
  63. package/chunks/{chunk-3AFMQUTI.js → chunk-C2X7KY45.js} +1 -1
  64. package/chunks/{chunk-FY76G3G5.js → chunk-C3PEFRKD.js} +4 -4
  65. package/chunks/{chunk-FDY5RMGH.js → chunk-CFJY4DGX.js} +1 -1
  66. package/chunks/{chunk-CCBZDVUA.js → chunk-CIZCL2MW.js} +33 -20
  67. package/chunks/{chunk-LDP5OD6N.js → chunk-CLWO3B77.js} +2 -2
  68. package/chunks/chunk-DJBQCO2E.js +842 -0
  69. package/chunks/{chunk-4J657AJR.js → chunk-DJECZIJX.js} +40 -40
  70. package/chunks/{chunk-F5SZP77N.js → chunk-DJEZ55D4.js} +71 -65
  71. package/chunks/{chunk-BAJKAAOY.js → chunk-DJPASAUV.js} +3840 -1055
  72. package/chunks/{chunk-RUGNCYNO.js → chunk-DMLVSW7L.js} +532 -22
  73. package/chunks/{chunk-4FTKQNWJ.js → chunk-DYXFD5RO.js} +181 -2
  74. package/chunks/{chunk-PDMJ3KGS.js → chunk-EB6QRGHM.js} +1 -1
  75. package/chunks/{chunk-DZWPESIF.js → chunk-EFWRMA2I.js} +3 -3
  76. package/chunks/{chunk-4MQEPP3Y.js → chunk-EQSBPBZ3.js} +5 -119
  77. package/chunks/{chunk-Z7TGYN5F.js → chunk-FROAFEFB.js} +2 -2
  78. package/chunks/{chunk-MZS7GEC7.js → chunk-FTF2YIZ5.js} +1 -1
  79. package/chunks/{chunk-Z7VOMGDC.js → chunk-FTJMWDND.js} +0 -24
  80. package/chunks/{chunk-43UYNAWX.js → chunk-G6FECKTJ.js} +2 -2
  81. package/chunks/{chunk-SJ3ZUWFK.js → chunk-GBJBJ4HX.js} +4 -4
  82. package/chunks/{chunk-IOPCFOTF.js → chunk-GPGU4S2N.js} +2 -2
  83. package/chunks/{chunk-6LFJEACX.js → chunk-GVIVASYK.js} +7 -7
  84. package/chunks/{chunk-Z4X5MTRT.js → chunk-HCOBAG2L.js} +2 -4
  85. package/chunks/{chunk-A7YP63XN.js → chunk-HP5LR5HL.js} +5 -5
  86. package/chunks/{chunk-7JPW6IYH.js → chunk-HVC3PNVC.js} +1 -1
  87. package/chunks/{chunk-TRZTNIQ6.js → chunk-I6LYRJPB.js} +2 -2
  88. package/chunks/{chunk-E55H6BZ7.js → chunk-ICURCKIU.js} +1335 -119
  89. package/chunks/{chunk-4HV6HH33.js → chunk-ISKH4QX3.js} +9 -9
  90. package/chunks/{chunk-WKK5BQNP.js → chunk-JHYH6PYQ.js} +43 -420
  91. package/chunks/{chunk-6IUNAPLR.js → chunk-K5KXUXWC.js} +1 -1
  92. package/chunks/{chunk-JHS74YAB.js → chunk-KID24ZFN.js} +1 -1
  93. package/chunks/{chunk-EFUM7RVY.js → chunk-KJO2LBUK.js} +942 -16
  94. package/chunks/{chunk-B7CDU2SL.js → chunk-KYWTPLBJ.js} +17 -20
  95. package/chunks/{chunk-JSHHYW6T.js → chunk-LHBUKJG2.js} +3 -3
  96. package/chunks/{chunk-P2SU6ZTI.js → chunk-LUEHOUHM.js} +1 -1
  97. package/chunks/{chunk-66KDY3LV.js → chunk-M3QRM3DE.js} +1 -1
  98. package/chunks/{chunk-V4QXXQJ2.js → chunk-MF7HCQWZ.js} +2 -2
  99. package/chunks/{chunk-W5MJJ2V7.js → chunk-MK2GIB46.js} +1 -1
  100. package/chunks/{chunk-Y6LSMB6J.js → chunk-MO3FC2WT.js} +1 -1
  101. package/chunks/{chunk-L6YT5H34.js → chunk-MPNBVAEU.js} +4 -4
  102. package/chunks/{chunk-CSMI4FP5.js → chunk-MSBO7X2W.js} +1 -1
  103. package/chunks/{chunk-5PA6UEYA.js → chunk-MZCJWS5Y.js} +1 -1
  104. package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
  105. package/chunks/{chunk-6LFTG244.js → chunk-NMOD2FXQ.js} +15 -5
  106. package/chunks/{chunk-KUX5D6DK.js → chunk-NV55WWD6.js} +11330 -10971
  107. package/chunks/{chunk-Q26AYA62.js → chunk-OU5APVWO.js} +2 -2
  108. package/chunks/{chunk-2K6ORIHJ.js → chunk-P2G476QN.js} +11 -11
  109. package/chunks/{chunk-OIP7C4FE.js → chunk-PADPMMYM.js} +4 -4
  110. package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
  111. package/chunks/{chunk-TGWAQ5RB.js → chunk-PZ66FRIC.js} +2071 -2124
  112. package/chunks/{chunk-7UYV53BC.js → chunk-Q2MSPKIJ.js} +1 -1
  113. package/chunks/{chunk-L2M46FP5.js → chunk-QYMAKPY5.js} +5 -5
  114. package/chunks/{chunk-JVPFTDBK.js → chunk-RFIDDFAL.js} +1 -1
  115. package/chunks/chunk-SEONHUS3.js +275 -0
  116. package/chunks/{chunk-ZGXYO7DY.js → chunk-SS4MRMKE.js} +122 -13
  117. package/chunks/{chunk-T32W2JHI.js → chunk-SS5SDCD3.js} +2 -2
  118. package/chunks/{chunk-3SGB2UHX.js → chunk-ST5MDGH3.js} +23 -11
  119. package/chunks/{chunk-MIIVI25Q.js → chunk-ST5V3ZOC.js} +2 -2
  120. package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
  121. package/chunks/{chunk-TWSKM647.js → chunk-T7KMERIX.js} +1 -1
  122. package/chunks/{chunk-77RG5SFQ.js → chunk-TEBDFQBZ.js} +1 -1
  123. package/chunks/{chunk-6CGL7E7G.js → chunk-TVC6HQ2U.js} +2 -2
  124. package/chunks/{chunk-BBWV7ONL.js → chunk-TZBSGJ6C.js} +6 -6
  125. package/chunks/{chunk-T3WXYEZ4.js → chunk-U54AYGEC.js} +38 -5
  126. package/chunks/{chunk-JCQD3INC.js → chunk-URE3QBBB.js} +1 -1
  127. package/chunks/{chunk-Y3QL45LS.js → chunk-V4264FEG.js} +8 -8
  128. package/chunks/{chunk-KEKZFOL6.js → chunk-V7EESTJV.js} +1 -1
  129. package/chunks/{chunk-R4PMVSR5.js → chunk-VBCPNIQD.js} +18 -20
  130. package/chunks/{chunk-RJC5EIKY.js → chunk-VGIFXISB.js} +3 -3
  131. package/chunks/{chunk-Z7FLBQPR.js → chunk-W3JH33JE.js} +7 -7
  132. package/chunks/{chunk-K2NQPH5D.js → chunk-WGY3AVGM.js} +3 -3
  133. package/chunks/{chunk-PKAYJDB3.js → chunk-WNPDGUJO.js} +21 -2
  134. package/chunks/{chunk-IZIVM7LZ.js → chunk-WXEA74YB.js} +1 -1
  135. package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
  136. package/chunks/{chunk-IK5BW3CS.js → chunk-XHF7WQ6B.js} +2 -2
  137. package/chunks/{chunk-2NYCN6F2.js → chunk-XSG6G3G6.js} +43 -26
  138. package/chunks/{chunk-HVQ3B7FF.js → chunk-Y5S7LBOZ.js} +43 -6
  139. package/chunks/{chunk-LXIBMVRN.js → chunk-YLSQLSH7.js} +13 -7
  140. package/chunks/{chunk-JSC3H3TD.js → chunk-ZEYFMJQA.js} +14 -6
  141. package/chunks/chunk-ZWJDJ6RU.js +2597 -0
  142. package/chunks/{chunk-QP4C6WCE.js → chunk-ZYMLPEZQ.js} +2 -2
  143. package/chunks/{chunk-BNMF3K5X.js → chunk-ZZMSC3RG.js} +52 -36
  144. package/chunks/{chunk-XDLEZ5HX.js → chunk-ZZUKP7HV.js} +1 -1
  145. package/chunks/{config-utils-BBOCOGZW.js → config-utils-R6M3TA34.js} +39 -39
  146. package/chunks/{contextCommand-EET67MQ2.js → contextCommand-ZCAP23J6.js} +36 -38
  147. package/chunks/{core-runtime-677KFX6Q.js → core-runtime-AXB6SK5D.js} +41 -43
  148. package/chunks/{create-sub-session-JKZAYZX7.js → create-sub-session-4QNE64MR.js} +34 -36
  149. package/chunks/{daemon-MJQUO7RA.js → daemon-3GNHB3M2.js} +495 -7
  150. package/chunks/{daemon-git-worktree-guard-6MVAAZZZ.js → daemon-git-worktree-guard-IVAJJWYK.js} +33 -35
  151. package/chunks/{daemon-status-provider-RFKZOK3S.js → daemon-status-provider-K3SJ5C2U.js} +42 -44
  152. package/chunks/{daemon-trust-policy-DRZPFB4Q.js → daemon-trust-policy-DOR3YG62.js} +41 -43
  153. package/chunks/{daemon-trust-policy-monitor-B5U6TQX5.js → daemon-trust-policy-monitor-KGGROSIV.js} +41 -43
  154. package/chunks/{deferred-core-runtime-BBVIOP24.js → deferred-core-runtime-WOYLUQQ7.js} +33 -35
  155. package/chunks/{dist-DJBNNPLN.js → dist-4WXLCBDR.js} +1 -1
  156. package/chunks/{dist-TJUDJTCB.js → dist-5VXFRTWU.js} +280 -48
  157. package/chunks/{dist-QODVOVWI.js → dist-6BPYWHVD.js} +31 -30
  158. package/chunks/{dist-ZBVOXSKF.js → dist-GFN5DCBX.js} +74 -65
  159. package/chunks/{dist-SATKXKUR.js → dist-HZNT6GQS.js} +1 -1
  160. package/chunks/{dist-ILDBUWDB.js → dist-LVZCXVPF.js} +1 -1
  161. package/chunks/{dist-7CKN54NL.js → dist-N6W6E753.js} +71 -64
  162. package/chunks/{dist-4Q7NTUNB.js → dist-NSV4NBPK.js} +31 -14
  163. package/chunks/{dist-UQUFZDIY.js → dist-SWQMYP2Q.js} +18 -16
  164. package/chunks/{earlyInputCapture-2JOMMNQ4.js → earlyInputCapture-OHBEVO4K.js} +33 -35
  165. package/chunks/{edit-BSV6YRVW.js → edit-LEQLAGPZ.js} +24 -26
  166. package/chunks/{enter-worktree-MQXFFPKM.js → enter-worktree-35QCAAFP.js} +3 -3
  167. package/chunks/{enterPlanMode-PKNF35FE.js → enterPlanMode-ONQN3WHE.js} +27 -29
  168. package/chunks/{environment-MOZMPUHR.js → environment-UANTR7A4.js} +37 -39
  169. package/chunks/{errors-DMPQVYJL.js → errors-WAK6KFBC.js} +36 -38
  170. package/chunks/{exit-worktree-L344UY7K.js → exit-worktree-XQD6D543.js} +3 -3
  171. package/chunks/{exitPlanMode-UE4FGCY4.js → exitPlanMode-UEYBG6P5.js} +24 -26
  172. package/chunks/{fast-path-773PV7PU.js → fast-path-WUL7UZ6H.js} +4 -4
  173. package/chunks/{fast-path-settings-XMFBYFUH.js → fast-path-settings-XH426LUU.js} +3 -3
  174. package/chunks/{glob-CZHOWUEA.js → glob-Y54QUWDY.js} +24 -26
  175. package/chunks/{goal-tools-YZQJXTGH.js → goal-tools-PTD3MBA7.js} +2 -1
  176. package/chunks/{handleAutoUpdate-SGXKTQM6.js → handleAutoUpdate-FP3NWNSG.js} +37 -39
  177. package/chunks/{i18n-B42HKHKH.js → i18n-INIU5X7A.js} +35 -37
  178. package/chunks/{image-gen-HAYOEQ4O.js → image-gen-J6FDGUZP.js} +4 -6
  179. package/chunks/{initializer-FB66WYR3.js → initializer-TYODV6GE.js} +41 -43
  180. package/chunks/{installationInfo-Y7AULNMX.js → installationInfo-AAPKYDSZ.js} +33 -35
  181. package/chunks/{list-2HWGSVRA.js → list-TUODDN6J.js} +44 -46
  182. package/chunks/{gemini-IP4FJAP5.js → llm-NSAVK5V3.js} +84 -82
  183. package/chunks/{geminiContentGenerator-PUNEBWJW.js → llm-content-generator-AY2QKXHE.js} +25 -25
  184. package/chunks/{loadedSettingsAdapter-7Y7IEI6T.js → loadedSettingsAdapter-KJCLZ3C4.js} +41 -43
  185. package/chunks/{loggingContentGenerator-2GGZNGLG.js → loggingContentGenerator-DSFQHXIF.js} +305 -27
  186. package/chunks/{managed-npm-update-5TEV2E3J.js → managed-npm-update-TSWENTK5.js} +33 -35
  187. package/chunks/{mcp-QGG5NMJJ.js → mcp-MWSAPFOL.js} +41 -43
  188. package/chunks/{monitor-FI7PY36Z.js → monitor-RW4GWJHB.js} +24 -26
  189. package/chunks/{nonInteractiveCli-4LO2TL72.js → nonInteractiveCli-JXKL343Q.js} +77 -78
  190. package/chunks/{notebook-edit-TPGMGBST.js → notebook-edit-CQNYS5OR.js} +24 -26
  191. package/chunks/{open-with-auth-4UI3KHUR.js → open-with-auth-YN3QZHVM.js} +1 -1
  192. package/chunks/{openaiContentGenerator-SUCYANUZ.js → openaiContentGenerator-J6QIF7EX.js} +13 -15
  193. package/chunks/{pidfile-JMF2CLMY.js → pidfile-QOIQZFT2.js} +33 -35
  194. package/chunks/process-registry-OAEG6WGC.js +662 -0
  195. package/chunks/{processUtils-IQZBYWSB.js → processUtils-GPHNANKZ.js} +2 -2
  196. package/chunks/{prompt-terminal-ledger-DCZO6S7C.js → prompt-terminal-ledger-FOMFTYOM.js} +34 -36
  197. package/chunks/{qwenContentGenerator-J4TXFGJT.js → qwenContentGenerator-WWDXPYQI.js} +28 -30
  198. package/chunks/{qwenOAuth2-RF33DNZW.js → qwenOAuth2-OF5WRBQT.js} +4 -6
  199. package/chunks/{read-file-QE2B5FTX.js → read-file-FQUQHC6N.js} +5 -5
  200. package/chunks/{record-artifact-RZGZBENU.js → record-artifact-VW23GS4F.js} +2 -2
  201. package/chunks/{report-findings-Q3SYKKW5.js → report-findings-AO5VYFLR.js} +7 -3
  202. package/chunks/{resumeHistoryUtils-CZ4JRDVW.js → resumeHistoryUtils-NSGF3UCB.js} +37 -39
  203. package/chunks/{ripGrep-R6B6HWPX.js → ripGrep-4CAT6SKV.js} +7 -7
  204. package/chunks/{run-qwen-serve-TPHZMSXJ.js → run-qwen-serve-5X6IDZER.js} +271 -86
  205. package/chunks/{runtime-TTIGSBM4.js → runtime-HK27GMPF.js} +46 -48
  206. package/chunks/{scheduled-tasks-QB4ZVUQS.js → scheduled-tasks-MN2ZZ5P6.js} +39 -41
  207. package/chunks/{scheduler-YRUG22M7.js → scheduler-WD4MHMO5.js} +35 -37
  208. package/chunks/{sdk-exporters-http-KCJ4ZFG7.js → sdk-exporters-http-TTU2CHBU.js} +1 -1
  209. package/chunks/{sdk-impl-HLSEDAEP.js → sdk-impl-UUMVYMAL.js} +10 -4
  210. package/chunks/{send-message-Y5I6NYAM.js → send-message-AJ4OCUBV.js} +18 -2
  211. package/chunks/{serve-MXXCDAQN.js → serve-2XCHPPGG.js} +41 -43
  212. package/chunks/{server-DFUSSSHI.js → server-GO2N5DH7.js} +4148 -3348
  213. package/chunks/{session-3TEHNENZ.js → session-IFNHTUBT.js} +81 -82
  214. package/chunks/session-pr-refresh-I3UBWMVP.js +364 -0
  215. package/chunks/{settings-VOZYKLTT.js → settings-L6N54CU6.js} +40 -42
  216. package/chunks/{shell-6RTKZVMI.js → shell-4Y5LLW6N.js} +24 -26
  217. package/chunks/{skill-FEOKFX26.js → skill-YOWTRAKQ.js} +58 -14
  218. package/chunks/{skill-settings-VA4XVYVL.js → skill-settings-ZL4JY5UE.js} +41 -43
  219. package/chunks/{spawnChannel-F6WVP723.js → spawnChannel-ZST6XJVJ.js} +35 -37
  220. package/chunks/{standalone-update-RGILUQVK.js → standalone-update-THVU3OKY.js} +36 -38
  221. package/chunks/{startInteractiveUI-WHJPFOGH.js → startInteractiveUI-XDFSHBZD.js} +401 -334
  222. package/chunks/{stdioHelpers-7A2EE64Z.js → stdioHelpers-AY6XCDY2.js} +3 -1
  223. package/chunks/{task-create-TMSV7RD5.js → task-create-QN4LYRSE.js} +3 -3
  224. package/chunks/{task-list-W55RBFRX.js → task-list-JPLGK45U.js} +2 -2
  225. package/chunks/{task-update-N536I4GQ.js → task-update-IWEOJFV2.js} +3 -3
  226. package/chunks/{team-create-QYSWCYCL.js → team-create-OOPXCDBA.js} +24 -26
  227. package/chunks/{team-delete-FJRFX33M.js → team-delete-RZVVSGCY.js} +2 -2
  228. package/chunks/{team-plan-approval-P7DAD644.js → team-plan-approval-DSX5EWAT.js} +24 -26
  229. package/chunks/{terminal-image-renderer-SMQE46UJ.js → terminal-image-renderer-KS25G33E.js} +33 -35
  230. package/chunks/{theme-manager-RFO5WWFF.js → theme-manager-YMZNG45F.js} +33 -35
  231. package/chunks/{tool-search-F2EMIAPV.js → tool-search-J5Q6U7DN.js} +9 -9
  232. package/chunks/{total-session-admission-HTVTP4BS.js → total-session-admission-PVN64JVV.js} +37 -39
  233. package/chunks/{trustedFolders-7OCNMUQE.js → trustedFolders-FATSC4YI.js} +35 -37
  234. package/chunks/{types-WYCFCEHR.js → types-HKLPXZB3.js} +1 -3
  235. package/chunks/{update-relaunch-4GF3OXMB.js → update-relaunch-SIKHLHVR.js} +6 -6
  236. package/chunks/{updateCheck-7QBDXZRT.js → updateCheck-D3YG2WCD.js} +36 -38
  237. package/chunks/{useAutoAcceptIndicator-UI4SNL2O.js → useAutoAcceptIndicator-ILINOSAS.js} +43 -45
  238. package/chunks/{validateNonInterActiveAuth-BPPA563H.js → validateNonInterActiveAuth-JUDQP6V4.js} +74 -75
  239. package/chunks/{version-ANP4TS6O.js → version-C63GDDWN.js} +1 -1
  240. package/chunks/{web-fetch-QJADSAH3.js → web-fetch-FOQZMNSC.js} +8 -10
  241. package/chunks/{web-search-7TTQKEKM.js → web-search-PUJTBFUC.js} +5 -7
  242. package/chunks/{web-shell-static-A6QMUNNV.js → web-shell-static-HNB4FDOE.js} +2 -2
  243. package/chunks/{workflow-5XN6XSOT.js → workflow-Y5IPINVH.js} +47 -58
  244. package/chunks/{workspace-providers-status-PDFZWL5Q.js → workspace-providers-status-IJ4VHFMB.js} +45 -47
  245. package/chunks/{workspace-registration-store-XKVW2YVH.js → workspace-registration-store-SMJWI2AI.js} +1 -1
  246. package/chunks/{workspace-registry-23R7XRB5.js → workspace-registry-BTGZIMPK.js} +37 -39
  247. package/chunks/{workspace-service-MUYO2QIC.js → workspace-service-SIN67ITC.js} +46 -51
  248. package/chunks/{workspace-skills-status-IKECTOOQ.js → workspace-skills-status-F3RKCUIX.js} +44 -46
  249. package/chunks/{workspace-trust-reconciler-KLGOB53D.js → workspace-trust-reconciler-PLIDLJZX.js} +45 -47
  250. package/chunks/{write-file-GGRBB5TZ.js → write-file-PAIGB33C.js} +26 -28
  251. package/chunks/{zoom-image-6ASG6J4C.js → zoom-image-LYQD7BQA.js} +5 -5
  252. package/cli.js +14 -14
  253. package/package.json +3 -3
  254. package/web-shell/assets/{abnfDiagram-VCTEODGH-uS-vtfs3.js → abnfDiagram-VCTEODGH-TRCMSA_6.js} +1 -1
  255. package/web-shell/assets/{arc-BSTnk5pu.js → arc-D9Uls5b3.js} +1 -1
  256. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DCMyiqzy.js → architectureDiagram-5GKGNRK7-Bwb8jPXg.js} +1 -1
  257. package/web-shell/assets/{blockDiagram-NRAW4CY4-C7_gt0r1.js → blockDiagram-NRAW4CY4-DHj71TSX.js} +1 -1
  258. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BeQg2L8B.js → c4Diagram-UCG6FXSJ-uKBBdbyr.js} +1 -1
  259. package/web-shell/assets/channel-CXjVLaBa.js +1 -0
  260. package/web-shell/assets/{chunk-2Q5K7J3B-DnV9bKBe.js → chunk-2Q5K7J3B-BZd0Phrl.js} +1 -1
  261. package/web-shell/assets/{chunk-5VM5RSS4-rT1GAcT7.js → chunk-5VM5RSS4-7KNeNBqN.js} +1 -1
  262. package/web-shell/assets/{chunk-F27PBJKO-BcgSxqGA.js → chunk-F27PBJKO-BeboS7Fi.js} +1 -1
  263. package/web-shell/assets/{chunk-G27WJ6UU-Bw1ZhyZq.js → chunk-G27WJ6UU-RV3JONoj.js} +1 -1
  264. package/web-shell/assets/{chunk-JWPE2WC7-D4iDw-96.js → chunk-JWPE2WC7-Yw9FCFsP.js} +1 -1
  265. package/web-shell/assets/{chunk-LCL6LL3I-D3MB3GTZ.js → chunk-LCL6LL3I-GIMnydDe.js} +1 -1
  266. package/web-shell/assets/{chunk-POPQ4Y6H-Cep2ndrS.js → chunk-POPQ4Y6H-Cfrux7bL.js} +1 -1
  267. package/web-shell/assets/{chunk-SVP7TREG-BuahMHJc.js → chunk-SVP7TREG-BlvIN0CO.js} +1 -1
  268. package/web-shell/assets/{chunk-XXDRQBXY-BdujIvJY.js → chunk-XXDRQBXY-DMs7Rr4t.js} +1 -1
  269. package/web-shell/assets/classDiagram-DTDB5LWJ-DANEijO3.js +1 -0
  270. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DANEijO3.js +1 -0
  271. package/web-shell/assets/{cose-bilkent-JH36ORCC-CGLLUbF8.js → cose-bilkent-JH36ORCC-DNGqTNwI.js} +1 -1
  272. package/web-shell/assets/{cynefin-OW5HDTMX-D6kDsRSh.js → cynefin-OW5HDTMX-CojMpaoH.js} +1 -1
  273. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-CCy78qZx.js → cynefinDiagram-5FMLGOSQ-DF07YXGo.js} +1 -1
  274. package/web-shell/assets/{dagre-3AP2YEHR-D5gJuJsf.js → dagre-3AP2YEHR-17-4WtCH.js} +1 -1
  275. package/web-shell/assets/{diagram-S7CK7UJ4-ZwEZ5W__.js → diagram-S7CK7UJ4-G3Wuyz9m.js} +1 -1
  276. package/web-shell/assets/{diagram-UQ7AKVKN-B036APjv.js → diagram-UQ7AKVKN-nyWIKZ8P.js} +1 -1
  277. package/web-shell/assets/{diagram-VSXAHHWV-BfDJ57Fq.js → diagram-VSXAHHWV-tKHhmYSC.js} +1 -1
  278. package/web-shell/assets/{diagram-VX7I27RA-Wha0p5rT.js → diagram-VX7I27RA-CpDf1hYk.js} +1 -1
  279. package/web-shell/assets/{diagram-Z3DM3KII-L20bz2K1.js → diagram-Z3DM3KII-Cah2IFXG.js} +1 -1
  280. package/web-shell/assets/{ebnfDiagram-PWID7BFC-D1ZM0Cp7.js → ebnfDiagram-PWID7BFC-DNaCkgxy.js} +1 -1
  281. package/web-shell/assets/{erDiagram-SSCWMZ5O-CMtA19v8.js → erDiagram-SSCWMZ5O-CAdRgcf1.js} +1 -1
  282. package/web-shell/assets/{flowDiagram-A5DVABFB-D96m326S.js → flowDiagram-A5DVABFB-CMUJAShL.js} +1 -1
  283. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BuHiYG2o.js → ganttDiagram-EL5Y4UJY-o-_MUNey.js} +1 -1
  284. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Ck3NmkSw.js → gitGraphDiagram-WWUBYQGX-_aG-2Z7O.js} +1 -1
  285. package/web-shell/assets/{index-CBGz4Qjl.js → index-BK_NKxiJ.js} +1 -1
  286. package/web-shell/assets/index-Ci-z4zWY.js +1913 -0
  287. package/web-shell/assets/index-LDlXZRHA.css +36 -0
  288. package/web-shell/assets/{infoDiagram-RXCK75RN-B6DAOyXe.js → infoDiagram-RXCK75RN-qJPeZbGP.js} +1 -1
  289. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-Bpg-joFo.js → ishikawaDiagram-5VMMS53U-7Om4vNo1.js} +1 -1
  290. package/web-shell/assets/{journeyDiagram-EYS64GPL-BclrHzGa.js → journeyDiagram-EYS64GPL-BNtXqmBW.js} +1 -1
  291. package/web-shell/assets/{kanban-definition-3QL26DDD-5gJzNTYG.js → kanban-definition-3QL26DDD-COgFec8P.js} +1 -1
  292. package/web-shell/assets/{layout-CEz_1L8z.js → layout-B9n81PC9.js} +1 -1
  293. package/web-shell/assets/{linear-CBjTq9Hc.js → linear-Bb6nXZQq.js} +1 -1
  294. package/web-shell/assets/{mermaid.core-Dzhbxx_I.js → mermaid.core-Cgrm3JVT.js} +6 -6
  295. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DQdVqlBF.js → mindmap-definition-FBJOCRG2-TKwLTjnG.js} +1 -1
  296. package/web-shell/assets/{pegDiagram-XKGWAZYB-D1JZlYXL.js → pegDiagram-XKGWAZYB-BJPuvlpi.js} +1 -1
  297. package/web-shell/assets/{pieDiagram-E7YTZNPT-BmkpYL0w.js → pieDiagram-E7YTZNPT-D01VkNsW.js} +1 -1
  298. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-DRvD6co5.js → quadrantDiagram-AXDQQJYC-C4hHsiv-.js} +1 -1
  299. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CEdjDuoo.js → railroadDiagram-O6MQD6OU-CuEO4xK2.js} +1 -1
  300. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BCHG-ie8.js → requirementDiagram-EFPCY7ZU-D5J_vIo5.js} +1 -1
  301. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C9cZMnye.js → sankeyDiagram-P5KCCOFB-DQKY223V.js} +1 -1
  302. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DYHRV4zL.js → sequenceDiagram-WJ2MYXX4-D27YV_cm.js} +1 -1
  303. package/web-shell/assets/{sizeCapture-X5ZJPWSS-DlK21aye.js → sizeCapture-X5ZJPWSS-TJg8UcwV.js} +1 -1
  304. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BrmZssvk.js → stateDiagram-HBIQ2CUA-CmnPzUIx.js} +1 -1
  305. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DNKPyrDc.js +1 -0
  306. package/web-shell/assets/{swimlanes-XN3QIQJK-D9xfcayR.js → swimlanes-XN3QIQJK-ByeP3_Nu.js} +1 -1
  307. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-ZL1HPC6w.js +8 -0
  308. package/web-shell/assets/{timeline-definition-24CTP7MA-D4gdDL_d.js → timeline-definition-24CTP7MA-BsFA5juR.js} +1 -1
  309. package/web-shell/assets/{vennDiagram-4TSXK5OY-DdhIExjI.js → vennDiagram-4TSXK5OY-DREP2ECo.js} +1 -1
  310. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9RS_Zof.js → wardleyDiagram-VM6X3IG4-iyd9lKi2.js} +1 -1
  311. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-orRgmxWk.js → xychartDiagram-S5SC5T6Z-CVr1_j9q.js} +1 -1
  312. package/web-shell/index.html +3 -3
  313. package/chunks/chunk-7DJCPZE3.js +0 -945
  314. package/chunks/chunk-J2OSJFP3.js +0 -202
  315. package/chunks/chunk-K2OJUPOE.js +0 -78
  316. package/chunks/chunk-P3QQPMQA.js +0 -19
  317. package/chunks/process-registry-PMJOA5CO.js +0 -172
  318. package/web-shell/assets/channel-CENAhErJ.js +0 -1
  319. package/web-shell/assets/classDiagram-DTDB5LWJ-CM6FArGH.js +0 -1
  320. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CM6FArGH.js +0 -1
  321. package/web-shell/assets/index-8hXIpvo4.js +0 -1865
  322. package/web-shell/assets/index-DclEv91i.css +0 -5
  323. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B2Q7XDaE.js +0 -1
  324. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DpZPOSbX.js +0 -8
@@ -1,945 +0,0 @@
1
- // Force strict mode and setup for ESM
2
- "use strict";
3
- import {
4
- stringifyGenAiJson
5
- } from "./chunk-Y3QL45LS.js";
6
- import {
7
- DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH,
8
- SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT,
9
- SERVICE_NAME,
10
- getMeter,
11
- isTelemetrySdkInitialized,
12
- isValidSensitiveSpanAttributeMaxLength
13
- } from "./chunk-L6BZRIUL.js";
14
- import {
15
- FatalConfigError,
16
- createDebugLogger
17
- } from "./chunk-UHQFIS7N.js";
18
- import {
19
- ValueType,
20
- diag,
21
- init_esm
22
- } from "./chunk-TBWQLLFO.js";
23
- import {
24
- init_esbuild_shims
25
- } from "./chunk-5O2XNYP6.js";
26
- import {
27
- __name
28
- } from "./chunk-J2S4EL5Y.js";
29
-
30
- // packages/core/src/telemetry/config.ts
31
- init_esbuild_shims();
32
-
33
- // packages/core/src/telemetry/index.ts
34
- init_esbuild_shims();
35
-
36
- // packages/core/src/telemetry/daemon-metrics.ts
37
- init_esbuild_shims();
38
- init_esm();
39
- var DAEMON_HTTP_REQUEST_COUNT = `${SERVICE_NAME}.daemon.http.request.count`;
40
- var DAEMON_HTTP_REQUEST_DURATION = `${SERVICE_NAME}.daemon.http.request.duration`;
41
- var DAEMON_SESSION_ACTIVE = `${SERVICE_NAME}.daemon.session.active`;
42
- var DAEMON_SESSION_LIFECYCLE = `${SERVICE_NAME}.daemon.session.lifecycle`;
43
- var DAEMON_CHANNEL_LIFECYCLE = `${SERVICE_NAME}.daemon.channel.lifecycle`;
44
- var DAEMON_PROMPT_QUEUE_WAIT = `${SERVICE_NAME}.daemon.prompt.queue_wait`;
45
- var DAEMON_PROMPT_DURATION = `${SERVICE_NAME}.daemon.prompt.duration`;
46
- var DAEMON_BRIDGE_ERROR_COUNT = `${SERVICE_NAME}.daemon.bridge.error.count`;
47
- var DAEMON_CANCEL_COUNT = `${SERVICE_NAME}.daemon.cancel.count`;
48
- var DAEMON_PIPE_MESSAGE_BYTES = `${SERVICE_NAME}.daemon.pipe.message_bytes`;
49
- var DAEMON_SSE_ACTIVE = `${SERVICE_NAME}.daemon.sse.active`;
50
- var DAEMON_PROCESS_HEAP_USED = `${SERVICE_NAME}.daemon.process.heap_used`;
51
- var KNOWN_ERROR_TYPES = /* @__PURE__ */ new Set([
52
- "SessionNotFoundError",
53
- "WorkspaceMismatchError",
54
- "InvalidClientIdError",
55
- "SessionLimitExceededError",
56
- "RestoreInProgressError",
57
- "InvalidSessionScopeError",
58
- "TrustGateError",
59
- "WorkspaceInitConflictError",
60
- "WorkspaceInitPathEscapeError",
61
- "WorkspaceInitSymlinkError",
62
- "WorkspaceInitRaceError",
63
- "McpServerNotFoundError",
64
- "McpServerRestartFailedError",
65
- "PromptDeadlineExceededError",
66
- "InvalidSessionMetadataError",
67
- "SubscriberLimitExceededError",
68
- "BridgeChannelClosedError",
69
- "BridgeTimeoutError",
70
- "SessionRestoreTimeoutError",
71
- "BridgeChannelQuarantinedError",
72
- "PermissionForbiddenError"
73
- ]);
74
- var initialized = false;
75
- var httpRequestCounter;
76
- var httpRequestDurationHistogram;
77
- var sessionLifecycleCounter;
78
- var channelLifecycleCounter;
79
- var promptQueueWaitHistogram;
80
- var promptDurationHistogram;
81
- var bridgeErrorCounter;
82
- var cancelCounter;
83
- var pipeMessageBytesHistogram;
84
- function normalizeErrorType(err) {
85
- const name = err instanceof Error ? err.name : typeof err;
86
- return KNOWN_ERROR_TYPES.has(name) ? name : "unknown";
87
- }
88
- __name(normalizeErrorType, "normalizeErrorType");
89
- function initializeDaemonMetrics() {
90
- if (initialized) return;
91
- const meter = getMeter();
92
- if (!meter) return;
93
- httpRequestCounter = meter.createCounter(DAEMON_HTTP_REQUEST_COUNT, {
94
- description: "Daemon HTTP request count by route and status class.",
95
- valueType: ValueType.INT
96
- });
97
- httpRequestDurationHistogram = meter.createHistogram(
98
- DAEMON_HTTP_REQUEST_DURATION,
99
- {
100
- description: "Daemon HTTP request duration in milliseconds.",
101
- unit: "ms",
102
- valueType: ValueType.DOUBLE,
103
- advice: {
104
- explicitBucketBoundaries: [
105
- 1,
106
- 2,
107
- 5,
108
- 10,
109
- 25,
110
- 50,
111
- 100,
112
- 250,
113
- 500,
114
- 1e3,
115
- 2500,
116
- 5e3,
117
- 1e4,
118
- 3e4
119
- ]
120
- }
121
- }
122
- );
123
- sessionLifecycleCounter = meter.createCounter(DAEMON_SESSION_LIFECYCLE, {
124
- description: "Daemon session lifecycle events (spawn, close, die).",
125
- valueType: ValueType.INT
126
- });
127
- channelLifecycleCounter = meter.createCounter(DAEMON_CHANNEL_LIFECYCLE, {
128
- description: "Daemon ACP channel lifecycle events (spawn, exit).",
129
- valueType: ValueType.INT
130
- });
131
- promptQueueWaitHistogram = meter.createHistogram(DAEMON_PROMPT_QUEUE_WAIT, {
132
- description: "Time a prompt waited in the per-session FIFO queue.",
133
- unit: "ms",
134
- valueType: ValueType.DOUBLE,
135
- advice: {
136
- explicitBucketBoundaries: [
137
- 1,
138
- 5,
139
- 10,
140
- 50,
141
- 100,
142
- 500,
143
- 1e3,
144
- 5e3,
145
- 1e4,
146
- 3e4,
147
- 6e4
148
- ]
149
- }
150
- });
151
- promptDurationHistogram = meter.createHistogram(DAEMON_PROMPT_DURATION, {
152
- description: "End-to-end prompt duration from dispatch to completion.",
153
- unit: "ms",
154
- valueType: ValueType.DOUBLE,
155
- advice: {
156
- explicitBucketBoundaries: [
157
- 100,
158
- 500,
159
- 1e3,
160
- 2500,
161
- 5e3,
162
- 1e4,
163
- 3e4,
164
- 6e4,
165
- 12e4,
166
- 3e5,
167
- 6e5
168
- ]
169
- }
170
- });
171
- bridgeErrorCounter = meter.createCounter(DAEMON_BRIDGE_ERROR_COUNT, {
172
- description: "Daemon bridge error count by normalized error type.",
173
- valueType: ValueType.INT
174
- });
175
- cancelCounter = meter.createCounter(DAEMON_CANCEL_COUNT, {
176
- description: "Daemon cancel request count.",
177
- valueType: ValueType.INT
178
- });
179
- pipeMessageBytesHistogram = meter.createHistogram(DAEMON_PIPE_MESSAGE_BYTES, {
180
- description: "Daemon ACP child pipe message payload size in bytes.",
181
- unit: "By",
182
- valueType: ValueType.INT,
183
- advice: {
184
- explicitBucketBoundaries: [
185
- 256,
186
- 1024,
187
- 4096,
188
- 16384,
189
- 65536,
190
- 262144,
191
- 1048576,
192
- 4194304,
193
- 16777216
194
- ]
195
- }
196
- });
197
- initialized = true;
198
- }
199
- __name(initializeDaemonMetrics, "initializeDaemonMetrics");
200
- var gaugesRegistered = false;
201
- function registerDaemonGaugeCallbacks(callbacks) {
202
- if (gaugesRegistered) return;
203
- const meter = getMeter();
204
- if (!meter) return;
205
- meter.createObservableGauge(DAEMON_SESSION_ACTIVE, {
206
- description: "Current number of active daemon sessions.",
207
- valueType: ValueType.INT
208
- }).addCallback((result) => {
209
- try {
210
- result.observe(callbacks.sessionCount());
211
- } catch {
212
- }
213
- });
214
- meter.createObservableGauge(DAEMON_SSE_ACTIVE, {
215
- description: "Current number of active SSE connections.",
216
- valueType: ValueType.INT
217
- }).addCallback((result) => {
218
- try {
219
- result.observe(callbacks.sseCount());
220
- } catch {
221
- }
222
- });
223
- meter.createObservableGauge(DAEMON_PROCESS_HEAP_USED, {
224
- description: "Daemon process heap memory usage in bytes.",
225
- unit: "bytes",
226
- valueType: ValueType.INT
227
- }).addCallback((result) => {
228
- try {
229
- result.observe(callbacks.heapUsed());
230
- } catch {
231
- }
232
- });
233
- gaugesRegistered = true;
234
- }
235
- __name(registerDaemonGaugeCallbacks, "registerDaemonGaugeCallbacks");
236
- function recordDaemonHttpRequest(durationMs, route, statusCode, deferredRuntimePath) {
237
- if (!initialized) return;
238
- const statusClass = `${Math.floor(statusCode / 100)}xx`;
239
- httpRequestCounter?.add(1, { route, status_class: statusClass });
240
- httpRequestDurationHistogram?.record(durationMs, {
241
- route,
242
- runtime_path: deferredRuntimePath ?? "none"
243
- });
244
- }
245
- __name(recordDaemonHttpRequest, "recordDaemonHttpRequest");
246
- function recordDaemonSessionLifecycle(action) {
247
- if (!initialized) return;
248
- sessionLifecycleCounter?.add(1, { action });
249
- }
250
- __name(recordDaemonSessionLifecycle, "recordDaemonSessionLifecycle");
251
- function recordDaemonChannelLifecycle(action, expected) {
252
- if (!initialized) return;
253
- channelLifecycleCounter?.add(1, {
254
- action,
255
- ...expected != null ? { expected } : {}
256
- });
257
- }
258
- __name(recordDaemonChannelLifecycle, "recordDaemonChannelLifecycle");
259
- function recordDaemonPromptQueueWait(durationMs) {
260
- if (!initialized) return;
261
- promptQueueWaitHistogram?.record(durationMs);
262
- }
263
- __name(recordDaemonPromptQueueWait, "recordDaemonPromptQueueWait");
264
- function recordDaemonPromptDuration(durationMs) {
265
- if (!initialized) return;
266
- promptDurationHistogram?.record(durationMs);
267
- }
268
- __name(recordDaemonPromptDuration, "recordDaemonPromptDuration");
269
- function recordDaemonBridgeError(err) {
270
- if (!initialized) return;
271
- bridgeErrorCounter?.add(1, { error_type: normalizeErrorType(err) });
272
- }
273
- __name(recordDaemonBridgeError, "recordDaemonBridgeError");
274
- function recordDaemonCancel() {
275
- if (!initialized) return;
276
- cancelCounter?.add(1);
277
- }
278
- __name(recordDaemonCancel, "recordDaemonCancel");
279
- function recordDaemonPipeMessage(direction, bytes) {
280
- if (!initialized) return;
281
- pipeMessageBytesHistogram?.record(bytes, { direction });
282
- }
283
- __name(recordDaemonPipeMessage, "recordDaemonPipeMessage");
284
-
285
- // packages/core/src/telemetry/event-loop-lag.ts
286
- init_esbuild_shims();
287
- import { monitorEventLoopDelay } from "node:perf_hooks";
288
- var DEFAULT_RESOLUTION_MS = 20;
289
- var DEFAULT_STALL_THRESHOLD_MS = 1e3;
290
- var DEFAULT_EVENT_LOOP_SUSPEND_THRESHOLD_MS = 5 * 60 * 1e3;
291
- var DEFAULT_SUSPEND_CPU_RATIO = 0.01;
292
- var NS_PER_MS = 1e6;
293
- function startEventLoopLagMonitor(options = {}) {
294
- const resolutionMs = positiveFiniteOrDefault(
295
- options.resolutionMs,
296
- DEFAULT_RESOLUTION_MS
297
- );
298
- const stallThresholdMs = positiveFiniteOrDefault(
299
- options.stallThresholdMs,
300
- DEFAULT_STALL_THRESHOLD_MS
301
- );
302
- const suspendThresholdMs = positiveFiniteOrDefault(
303
- options.suspendThresholdMs,
304
- DEFAULT_EVENT_LOOP_SUSPEND_THRESHOLD_MS
305
- );
306
- const suspendCpuRatio = fractionOrDefault(
307
- options.suspendCpuRatio,
308
- DEFAULT_SUSPEND_CPU_RATIO
309
- );
310
- const histogram = monitorEventLoopDelay({ resolution: resolutionMs });
311
- histogram.enable();
312
- let disposed = false;
313
- let lastReportedMaxMs = 0;
314
- let lastObservedMaxMs = 0;
315
- let lastCheckTimeMs = Date.now();
316
- let lastCpuUsage = safeCpuUsage();
317
- let pendingSuspendGapMs = 0;
318
- const readMaxMs = /* @__PURE__ */ __name(() => nsToMs(histogram.max), "readMaxMs");
319
- const checkHistogram = /* @__PURE__ */ __name(() => {
320
- if (disposed) return;
321
- const nowMs = Date.now();
322
- const cpuUsage = safeCpuUsage();
323
- const elapsedMs = Math.max(0, nowMs - lastCheckTimeMs);
324
- const maxMs = readMaxMs();
325
- const newMaxMs = maxMs > lastObservedMaxMs ? maxMs : 0;
326
- const cpuRatio = calculateCpuRatio(lastCpuUsage, cpuUsage, elapsedMs);
327
- lastCheckTimeMs = nowMs;
328
- if (cpuUsage) lastCpuUsage = cpuUsage;
329
- lastObservedMaxMs = maxMs;
330
- const isLowCpuGap = elapsedMs >= suspendThresholdMs && cpuRatio !== void 0 && cpuRatio <= suspendCpuRatio;
331
- const suspendGapMs = isLowCpuGap ? elapsedMs : pendingSuspendGapMs;
332
- pendingSuspendGapMs = isLowCpuGap ? elapsedMs : 0;
333
- if (newMaxMs >= suspendThresholdMs && suspendGapMs >= suspendThresholdMs && newMaxMs <= suspendGapMs * 1.5) {
334
- histogram.reset();
335
- lastObservedMaxMs = 0;
336
- lastReportedMaxMs = 0;
337
- pendingSuspendGapMs = 0;
338
- return;
339
- }
340
- if (options.onNewMaxStall && maxMs >= stallThresholdMs && maxMs > lastReportedMaxMs) {
341
- lastReportedMaxMs = maxMs;
342
- try {
343
- options.onNewMaxStall(maxMs);
344
- } catch {
345
- }
346
- }
347
- }, "checkHistogram");
348
- const interval = setInterval(checkHistogram, resolutionMs);
349
- interval.unref();
350
- return {
351
- snapshot() {
352
- return {
353
- meanMs: nsToMs(histogram.mean),
354
- p50Ms: nsToMs(histogram.percentile(50)),
355
- p99Ms: nsToMs(histogram.percentile(99)),
356
- maxMs: readMaxMs()
357
- };
358
- },
359
- dispose() {
360
- if (disposed) return;
361
- disposed = true;
362
- clearInterval(interval);
363
- histogram.disable();
364
- }
365
- };
366
- }
367
- __name(startEventLoopLagMonitor, "startEventLoopLagMonitor");
368
- function safeCpuUsage() {
369
- try {
370
- return process.cpuUsage();
371
- } catch {
372
- return void 0;
373
- }
374
- }
375
- __name(safeCpuUsage, "safeCpuUsage");
376
- function calculateCpuRatio(previous, current, elapsedMs) {
377
- if (!previous || !current || elapsedMs <= 0) return void 0;
378
- const cpuMicroseconds = current.user - previous.user + (current.system - previous.system);
379
- return Math.max(0, cpuMicroseconds / (elapsedMs * 1e3));
380
- }
381
- __name(calculateCpuRatio, "calculateCpuRatio");
382
- function nsToMs(value) {
383
- return Number.isFinite(value) ? value / NS_PER_MS : 0;
384
- }
385
- __name(nsToMs, "nsToMs");
386
- function positiveFiniteOrDefault(value, fallback) {
387
- return value !== void 0 && Number.isFinite(value) && value > 0 ? value : fallback;
388
- }
389
- __name(positiveFiniteOrDefault, "positiveFiniteOrDefault");
390
- function fractionOrDefault(value, fallback) {
391
- return value !== void 0 && Number.isFinite(value) && value >= 0 && value <= 1 ? value : fallback;
392
- }
393
- __name(fractionOrDefault, "fractionOrDefault");
394
-
395
- // packages/core/src/telemetry/event-loop-lag-metrics.ts
396
- init_esbuild_shims();
397
- init_esm();
398
- var DAEMON_EVENT_LOOP_LAG = `${SERVICE_NAME}.daemon.event_loop.lag`;
399
- var ACP_EVENT_LOOP_LAG = `${SERVICE_NAME}.acp.event_loop.lag`;
400
- var daemonGaugeRegistered = false;
401
- var acpGaugeRegistered = false;
402
- function registerDaemonEventLoopLagGauge(read) {
403
- if (daemonGaugeRegistered) return;
404
- daemonGaugeRegistered = registerEventLoopLagGauge(
405
- DAEMON_EVENT_LOOP_LAG,
406
- read
407
- );
408
- }
409
- __name(registerDaemonEventLoopLagGauge, "registerDaemonEventLoopLagGauge");
410
- function registerAcpEventLoopLagGauge(read) {
411
- if (acpGaugeRegistered) return;
412
- acpGaugeRegistered = registerEventLoopLagGauge(ACP_EVENT_LOOP_LAG, read);
413
- }
414
- __name(registerAcpEventLoopLagGauge, "registerAcpEventLoopLagGauge");
415
- function registerEventLoopLagGauge(name, read) {
416
- const meter = getMeter();
417
- if (!meter) return false;
418
- meter.createObservableGauge(name, {
419
- description: "Event loop lag in milliseconds.",
420
- unit: "ms",
421
- valueType: ValueType.DOUBLE
422
- }).addCallback((result) => {
423
- try {
424
- const snapshot = read();
425
- result.observe(snapshot.meanMs, { stat: "mean" });
426
- result.observe(snapshot.p50Ms, { stat: "p50" });
427
- result.observe(snapshot.p99Ms, { stat: "p99" });
428
- result.observe(snapshot.maxMs, { stat: "max" });
429
- } catch {
430
- }
431
- });
432
- return true;
433
- }
434
- __name(registerEventLoopLagGauge, "registerEventLoopLagGauge");
435
-
436
- // packages/core/src/telemetry/detailed-span-attributes.ts
437
- init_esbuild_shims();
438
- var SHORT_TRUNCATION_SUFFIX = "...[TRUNCATED]";
439
- var debugLogger = createDebugLogger("GEN_AI_CONTENT");
440
- function areSensitiveSpanAttributesEnabled(config) {
441
- return isTelemetrySdkInitialized() && config.getTelemetryIncludeSensitiveSpanAttributes();
442
- }
443
- __name(areSensitiveSpanAttributesEnabled, "areSensitiveSpanAttributesEnabled");
444
- function truncateContent(content, maxSize = DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH, originalLength = content.length) {
445
- if (!Number.isSafeInteger(maxSize) || maxSize < 1) {
446
- throw new TypeError(
447
- `maxSize must be a positive safe integer, got ${String(maxSize)}`
448
- );
449
- }
450
- if (!Number.isSafeInteger(originalLength) || originalLength < 0) {
451
- throw new TypeError(
452
- `originalLength must be a non-negative safe integer, got ${String(
453
- originalLength
454
- )}`
455
- );
456
- }
457
- if (originalLength < content.length) {
458
- throw new TypeError(
459
- `originalLength must be greater than or equal to content length, got ${originalLength} for content length ${content.length}`
460
- );
461
- }
462
- if (originalLength <= maxSize && content.length <= maxSize) {
463
- return { content, truncated: false };
464
- }
465
- if (originalLength > content.length && content.length <= maxSize) {
466
- return { content, truncated: true };
467
- }
468
- const suffix = `
469
-
470
- [TRUNCATED - Content exceeds configured limit of ${maxSize} characters]`;
471
- if (suffix.length >= maxSize) {
472
- if (SHORT_TRUNCATION_SUFFIX.length >= maxSize) {
473
- return {
474
- content: SHORT_TRUNCATION_SUFFIX.slice(0, maxSize),
475
- truncated: true
476
- };
477
- }
478
- return {
479
- content: content.slice(0, maxSize - SHORT_TRUNCATION_SUFFIX.length) + SHORT_TRUNCATION_SUFFIX,
480
- truncated: true
481
- };
482
- }
483
- return {
484
- content: content.slice(0, maxSize - suffix.length) + suffix,
485
- truncated: true
486
- };
487
- }
488
- __name(truncateContent, "truncateContent");
489
- function getMaxContentSize(config) {
490
- return config.getTelemetrySensitiveSpanAttributeMaxLength();
491
- }
492
- __name(getMaxContentSize, "getMaxContentSize");
493
- function truncatePrefixedContent(prefix, content, maxSize) {
494
- const prefixedContent = `${prefix}${content}`;
495
- const result = truncateContent(prefixedContent, maxSize);
496
- return {
497
- ...result,
498
- originalLength: content.length
499
- };
500
- }
501
- __name(truncatePrefixedContent, "truncatePrefixedContent");
502
- function addAgentInputMessageAttributes(config, span, promptText) {
503
- if (!areSensitiveSpanAttributesEnabled(config) || promptText.trim().length === 0) {
504
- return;
505
- }
506
- writeJsonAttribute(config, span, "gen_ai.input.messages", [
507
- {
508
- role: "user",
509
- parts: [{ type: "text", content: promptText }]
510
- }
511
- ]);
512
- }
513
- __name(addAgentInputMessageAttributes, "addAgentInputMessageAttributes");
514
- function addAgentOutputMessageAttributes(config, span, responseText, finishReason) {
515
- if (!areSensitiveSpanAttributesEnabled(config) || responseText.trim().length === 0) {
516
- return;
517
- }
518
- const reason = normalizeAgentFinishReason(finishReason);
519
- if (!reason) return;
520
- writeJsonAttribute(config, span, "gen_ai.output.messages", [
521
- {
522
- role: "assistant",
523
- parts: [{ type: "text", content: responseText }],
524
- finish_reason: reason
525
- }
526
- ]);
527
- }
528
- __name(addAgentOutputMessageAttributes, "addAgentOutputMessageAttributes");
529
- function normalizeAgentFinishReason(finishReason) {
530
- const reason = finishReason?.trim().toLowerCase();
531
- if (!reason || reason === "finish_reason_unspecified") return void 0;
532
- if (reason === "stop") return "stop";
533
- if (reason === "max_tokens") return "length";
534
- if (reason === "tool_calls" || reason === "function_call" || reason === "tool_call") {
535
- return "tool_call";
536
- }
537
- if (reason === "safety" || reason === "recitation" || reason === "language" || reason === "blocklist" || reason === "prohibited_content" || reason === "spii" || reason === "image_safety" || reason === "image_prohibited_content" || reason === "image_recitation" || reason === "image_other") {
538
- return "content_filter";
539
- }
540
- return reason;
541
- }
542
- __name(normalizeAgentFinishReason, "normalizeAgentFinishReason");
543
- var AgentOutputMessageCapture = class {
544
- constructor(config) {
545
- this.config = config;
546
- this.enabled = areSensitiveSpanAttributesEnabled(config);
547
- this.maxLength = this.enabled ? config.getTelemetrySensitiveSpanAttributeMaxLength() : 0;
548
- }
549
- static {
550
- __name(this, "AgentOutputMessageCapture");
551
- }
552
- enabled;
553
- maxLength;
554
- responseText = "";
555
- finishReason;
556
- overflow = false;
557
- committed;
558
- beginResponse() {
559
- if (!this.enabled) return;
560
- this.clearResponse();
561
- this.committed = void 0;
562
- }
563
- appendText(text) {
564
- if (!this.enabled || !text || this.overflow) return;
565
- const remaining = this.maxLength - this.responseText.length;
566
- if (text.length > remaining) {
567
- this.responseText = "";
568
- this.overflow = true;
569
- this.committed = void 0;
570
- return;
571
- }
572
- this.responseText += text;
573
- }
574
- observeFinishReason(finishReason) {
575
- if (!this.enabled) return;
576
- const normalized = normalizeAgentFinishReason(finishReason);
577
- if (normalized) this.finishReason = normalized;
578
- }
579
- restartAttempt(preserveText) {
580
- if (!this.enabled) return;
581
- if (!preserveText) {
582
- this.clearResponse();
583
- } else {
584
- this.finishReason = void 0;
585
- }
586
- this.committed = void 0;
587
- }
588
- commitResponse(hasToolCalls) {
589
- if (!this.enabled || hasToolCalls || this.overflow || this.responseText.trim().length === 0 || !this.finishReason) {
590
- this.committed = void 0;
591
- return;
592
- }
593
- this.committed = {
594
- responseText: this.responseText,
595
- finishReason: this.finishReason
596
- };
597
- }
598
- writeToSpan(span) {
599
- if (!span || !this.committed) return;
600
- addAgentOutputMessageAttributes(
601
- this.config,
602
- span,
603
- this.committed.responseText,
604
- this.committed.finishReason
605
- );
606
- }
607
- clearResponse() {
608
- this.responseText = "";
609
- this.finishReason = void 0;
610
- this.overflow = false;
611
- }
612
- };
613
- function addUserPromptAttributes(config, span, promptText) {
614
- if (!areSensitiveSpanAttributesEnabled(config) || !promptText) return;
615
- const { content, truncated, originalLength } = truncatePrefixedContent(
616
- `[USER PROMPT]
617
- `,
618
- promptText,
619
- getMaxContentSize(config)
620
- );
621
- span.setAttributes({
622
- new_context: content,
623
- ...truncated && {
624
- new_context_truncated: true,
625
- new_context_original_length: originalLength
626
- }
627
- });
628
- }
629
- __name(addUserPromptAttributes, "addUserPromptAttributes");
630
- function addToolArgumentsAttributes(config, span, argumentsValue) {
631
- if (!areSensitiveSpanAttributesEnabled(config)) return;
632
- writeJsonAttribute(
633
- config,
634
- span,
635
- "gen_ai.tool.call.arguments",
636
- argumentsValue,
637
- true
638
- );
639
- }
640
- __name(addToolArgumentsAttributes, "addToolArgumentsAttributes");
641
- function addToolCallResultAttributes(config, span, result) {
642
- if (!areSensitiveSpanAttributesEnabled(config)) return;
643
- writeJsonAttribute(config, span, "gen_ai.tool.call.result", result, true);
644
- }
645
- __name(addToolCallResultAttributes, "addToolCallResultAttributes");
646
- function writeJsonAttribute(config, span, key, value, requireObject = false) {
647
- let serialized;
648
- try {
649
- serialized = stringifyGenAiJson(
650
- value,
651
- getMaxContentSize(config),
652
- requireObject
653
- );
654
- } catch {
655
- debugLogger.debug(`Failed to serialize ${key} span attribute`);
656
- return;
657
- }
658
- if (serialized === void 0) return;
659
- try {
660
- span.setAttribute(key, serialized);
661
- } catch {
662
- debugLogger.debug(`Failed to set ${key} span attribute`);
663
- }
664
- }
665
- __name(writeJsonAttribute, "writeJsonAttribute");
666
-
667
- // packages/core/src/telemetry/index.ts
668
- var DEFAULT_TELEMETRY_TARGET = "local" /* LOCAL */;
669
- var DEFAULT_OTLP_ENDPOINT = "http://localhost:4317";
670
-
671
- // packages/core/src/telemetry/resource-attributes.ts
672
- init_esbuild_shims();
673
- init_esm();
674
- var RESERVED_RESOURCE_ATTRIBUTE_KEYS = /* @__PURE__ */ new Set([
675
- "service.version",
676
- "session.id"
677
- ]);
678
- function warn(msg, warnings) {
679
- diag.warn(msg);
680
- warnings?.push(msg);
681
- }
682
- __name(warn, "warn");
683
- function parseOtelResourceAttributes(raw, warnings) {
684
- if (!raw) return {};
685
- const out = {};
686
- for (const pair of raw.split(",")) {
687
- const trimmed = pair.trim();
688
- if (!trimmed) continue;
689
- const idx = trimmed.indexOf("=");
690
- if (idx < 0) {
691
- warn(
692
- `Skipping malformed OTEL_RESOURCE_ATTRIBUTES entry: "${trimmed}" (hint: percent-encode literal commas as %2C)`,
693
- warnings
694
- );
695
- continue;
696
- }
697
- const rawKey = trimmed.slice(0, idx).trim();
698
- if (!rawKey) continue;
699
- const valueRaw = trimmed.slice(idx + 1).trim();
700
- let key;
701
- try {
702
- key = decodeURIComponent(rawKey);
703
- } catch {
704
- warn(
705
- `Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES key "${rawKey}", using raw key`,
706
- warnings
707
- );
708
- key = rawKey;
709
- }
710
- let value;
711
- try {
712
- value = decodeURIComponent(valueRaw);
713
- } catch {
714
- warn(
715
- `Invalid percent-encoding in OTEL_RESOURCE_ATTRIBUTES for key "${key}", using raw value`,
716
- warnings
717
- );
718
- value = valueRaw;
719
- }
720
- out[key] = value;
721
- }
722
- return out;
723
- }
724
- __name(parseOtelResourceAttributes, "parseOtelResourceAttributes");
725
- function stripReservedResourceAttributes(attrs, source, warnings) {
726
- for (const k of RESERVED_RESOURCE_ATTRIBUTE_KEYS) {
727
- if (k in attrs) {
728
- warn(`${source} cannot override reserved key "${k}"; ignoring`, warnings);
729
- delete attrs[k];
730
- }
731
- }
732
- return attrs;
733
- }
734
- __name(stripReservedResourceAttributes, "stripReservedResourceAttributes");
735
- function coerceStringResourceAttributes(raw, warnings) {
736
- if (raw === null || raw === void 0) return {};
737
- if (typeof raw !== "object" || Array.isArray(raw)) {
738
- warn(
739
- "settings.telemetry.resourceAttributes must be an object; ignoring",
740
- warnings
741
- );
742
- return {};
743
- }
744
- const out = {};
745
- for (const [k, v] of Object.entries(raw)) {
746
- const key = k.trim();
747
- if (!key) {
748
- warn(
749
- "settings.telemetry.resourceAttributes has an empty or whitespace-only key; ignoring",
750
- warnings
751
- );
752
- continue;
753
- }
754
- if (typeof v === "string") {
755
- out[key] = v;
756
- } else {
757
- warn(
758
- `settings.telemetry.resourceAttributes value for "${key}" must be a string (got ${typeof v}); ignoring`,
759
- warnings
760
- );
761
- }
762
- }
763
- return out;
764
- }
765
- __name(coerceStringResourceAttributes, "coerceStringResourceAttributes");
766
-
767
- // packages/core/src/telemetry/config.ts
768
- function parseBooleanEnvFlag(value) {
769
- if (value === void 0) return void 0;
770
- return value === "true" || value === "1";
771
- }
772
- __name(parseBooleanEnvFlag, "parseBooleanEnvFlag");
773
- function parseTelemetryTargetValue(value) {
774
- if (value === void 0) return void 0;
775
- if (value === "local" /* LOCAL */ || value === "local") {
776
- return "local" /* LOCAL */;
777
- }
778
- if (value === "gcp" /* GCP */ || value === "gcp") {
779
- return "gcp" /* GCP */;
780
- }
781
- return void 0;
782
- }
783
- __name(parseTelemetryTargetValue, "parseTelemetryTargetValue");
784
- function parseSensitiveSpanAttributeMaxLengthEnvValue(envName, value) {
785
- if (value === void 0) return void 0;
786
- const trimmed = value.trim();
787
- const parsed = Number(trimmed);
788
- if (!/^\d+$/.test(trimmed) || !isValidSensitiveSpanAttributeMaxLength(parsed)) {
789
- throw new FatalConfigError(
790
- `Invalid ${envName}: must be a positive integer no greater than ${SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT}, got '${value}'`
791
- );
792
- }
793
- return parsed;
794
- }
795
- __name(parseSensitiveSpanAttributeMaxLengthEnvValue, "parseSensitiveSpanAttributeMaxLengthEnvValue");
796
- function parseSensitiveSpanAttributeMaxLengthSetting(settingName, value) {
797
- if (value === void 0) return void 0;
798
- if (typeof value !== "number" || !isValidSensitiveSpanAttributeMaxLength(value)) {
799
- throw new FatalConfigError(
800
- `Invalid ${settingName}: must be a positive integer no greater than ${SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT}, got ${String(
801
- value
802
- )}`
803
- );
804
- }
805
- return value;
806
- }
807
- __name(parseSensitiveSpanAttributeMaxLengthSetting, "parseSensitiveSpanAttributeMaxLengthSetting");
808
- function parseTelemetryUserId(source, value) {
809
- if (value === void 0) return void 0;
810
- if (typeof value !== "string") {
811
- throw new FatalConfigError(
812
- `Invalid ${source}: must be a string, got ${typeof value}`
813
- );
814
- }
815
- return value.trim() || void 0;
816
- }
817
- __name(parseTelemetryUserId, "parseTelemetryUserId");
818
- async function resolveTelemetrySettings(options) {
819
- const argv = options.argv ?? {};
820
- const env = options.env ?? {};
821
- const settings = options.settings ?? {};
822
- const enabled = argv.telemetry ?? parseBooleanEnvFlag(env["QWEN_TELEMETRY_ENABLED"]) ?? settings.enabled;
823
- const rawTarget = argv.telemetryTarget ?? env["QWEN_TELEMETRY_TARGET"] ?? settings.target;
824
- const target = parseTelemetryTargetValue(rawTarget);
825
- if (rawTarget !== void 0 && target === void 0) {
826
- throw new FatalConfigError(
827
- `Invalid telemetry target: ${String(
828
- rawTarget
829
- )}. Valid values are: local, gcp`
830
- );
831
- }
832
- const otlpEndpoint = argv.telemetryOtlpEndpoint ?? env["QWEN_TELEMETRY_OTLP_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_ENDPOINT"] ?? settings.otlpEndpoint;
833
- const rawProtocol = argv.telemetryOtlpProtocol ?? env["QWEN_TELEMETRY_OTLP_PROTOCOL"] ?? settings.otlpProtocol;
834
- const otlpProtocol = ["grpc", "http"].find(
835
- (p) => p === rawProtocol
836
- );
837
- if (rawProtocol !== void 0 && otlpProtocol === void 0) {
838
- throw new FatalConfigError(
839
- `Invalid telemetry OTLP protocol: ${String(
840
- rawProtocol
841
- )}. Valid values are: grpc, http`
842
- );
843
- }
844
- const logPrompts = argv.telemetryLogPrompts ?? parseBooleanEnvFlag(env["QWEN_TELEMETRY_LOG_PROMPTS"]) ?? settings.logPrompts;
845
- const userId = parseTelemetryUserId(
846
- "QWEN_TELEMETRY_USER_ID",
847
- env["QWEN_TELEMETRY_USER_ID"]
848
- ) ?? parseTelemetryUserId("telemetry.userId", settings.userId);
849
- const includeSensitiveSpanAttributes = parseBooleanEnvFlag(
850
- env["QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES"]
851
- ) ?? settings.includeSensitiveSpanAttributes ?? false;
852
- const sensitiveSpanAttributeMaxLength = parseSensitiveSpanAttributeMaxLengthEnvValue(
853
- "QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH",
854
- env["QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH"]
855
- ) ?? parseSensitiveSpanAttributeMaxLengthSetting(
856
- "telemetry.sensitiveSpanAttributeMaxLength",
857
- settings.sensitiveSpanAttributeMaxLength
858
- ) ?? DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH;
859
- const outfile = argv.telemetryOutfile ?? env["QWEN_TELEMETRY_OUTFILE"] ?? settings.outfile;
860
- const otlpTracesEndpoint = env["QWEN_TELEMETRY_OTLP_TRACES_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] ?? settings.otlpTracesEndpoint;
861
- const otlpLogsEndpoint = env["QWEN_TELEMETRY_OTLP_LOGS_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_LOGS_ENDPOINT"] ?? settings.otlpLogsEndpoint;
862
- const otlpMetricsEndpoint = env["QWEN_TELEMETRY_OTLP_METRICS_ENDPOINT"] ?? env["OTEL_EXPORTER_OTLP_METRICS_ENDPOINT"] ?? settings.otlpMetricsEndpoint;
863
- const resourceAttributeWarnings = [];
864
- const envResourceAttrs = stripReservedResourceAttributes(
865
- parseOtelResourceAttributes(
866
- env["OTEL_RESOURCE_ATTRIBUTES"],
867
- resourceAttributeWarnings
868
- ),
869
- "OTEL_RESOURCE_ATTRIBUTES",
870
- resourceAttributeWarnings
871
- );
872
- const settingsResourceAttrs = stripReservedResourceAttributes(
873
- coerceStringResourceAttributes(
874
- settings.resourceAttributes,
875
- resourceAttributeWarnings
876
- ),
877
- "settings.telemetry.resourceAttributes",
878
- resourceAttributeWarnings
879
- );
880
- const mergedResourceAttrs = {
881
- ...envResourceAttrs,
882
- ...settingsResourceAttrs
883
- };
884
- const otelServiceName = env["OTEL_SERVICE_NAME"]?.trim();
885
- if (otelServiceName) {
886
- mergedResourceAttrs["service.name"] = otelServiceName;
887
- }
888
- const resourceAttributes = Object.keys(mergedResourceAttrs).length ? mergedResourceAttrs : void 0;
889
- const metricsIncludeSessionId = parseBooleanEnvFlag(env["QWEN_TELEMETRY_METRICS_INCLUDE_SESSION_ID"]) ?? settings.metrics?.includeSessionId ?? false;
890
- return {
891
- enabled,
892
- target,
893
- otlpEndpoint,
894
- otlpProtocol,
895
- otlpTracesEndpoint,
896
- otlpLogsEndpoint,
897
- otlpMetricsEndpoint,
898
- logPrompts,
899
- userId,
900
- includeSensitiveSpanAttributes,
901
- sensitiveSpanAttributeMaxLength,
902
- outfile,
903
- resourceAttributes,
904
- metrics: { includeSessionId: metricsIncludeSessionId },
905
- resourceAttributeWarnings: resourceAttributeWarnings.length ? resourceAttributeWarnings : void 0
906
- };
907
- }
908
- __name(resolveTelemetrySettings, "resolveTelemetrySettings");
909
-
910
- export {
911
- parseBooleanEnvFlag,
912
- resolveTelemetrySettings,
913
- initializeDaemonMetrics,
914
- registerDaemonGaugeCallbacks,
915
- recordDaemonHttpRequest,
916
- recordDaemonSessionLifecycle,
917
- recordDaemonChannelLifecycle,
918
- recordDaemonPromptQueueWait,
919
- recordDaemonPromptDuration,
920
- recordDaemonBridgeError,
921
- recordDaemonCancel,
922
- recordDaemonPipeMessage,
923
- startEventLoopLagMonitor,
924
- registerDaemonEventLoopLagGauge,
925
- registerAcpEventLoopLagGauge,
926
- areSensitiveSpanAttributesEnabled,
927
- addAgentInputMessageAttributes,
928
- addAgentOutputMessageAttributes,
929
- AgentOutputMessageCapture,
930
- addUserPromptAttributes,
931
- addToolArgumentsAttributes,
932
- addToolCallResultAttributes,
933
- DEFAULT_TELEMETRY_TARGET,
934
- DEFAULT_OTLP_ENDPOINT
935
- };
936
- /**
937
- * @license
938
- * Copyright 2026 Qwen Team
939
- * SPDX-License-Identifier: Apache-2.0
940
- */
941
- /**
942
- * @license
943
- * Copyright 2025 Google LLC
944
- * SPDX-License-Identifier: Apache-2.0
945
- */