@qwen-code/qwen-code 0.20.2-headless-image-routing.1 → 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-PLQQB22E.js → StandaloneSessionPicker-BIRMPLRD.js} +66 -59
  7. package/chunks/{acp-startup-profiler-N3RHHXJ3.js → acp-startup-profiler-RV3IV562.js} +2 -2
  8. package/chunks/{acpAgent-AIVK2EM5.js → acpAgent-6J2U72PQ.js} +705 -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-GHIZ4MSZ.js → build-RV63TIRH.js} +2 -3
  16. package/chunks/{ca-N6VVUFVB.js → ca-25EDXPFZ.js} +2 -0
  17. package/chunks/{channel-worker-group-QZV2SP5U.js → channel-worker-group-2ZD7TVAT.js} +8 -7
  18. package/chunks/{channel-worker-manager-3GMAU45H.js → channel-worker-manager-4OA4BCGB.js} +190 -30
  19. package/chunks/{channel-worker-supervisor-QCXSXCRY.js → channel-worker-supervisor-V7KCFJTS.js} +7 -6
  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-4DWTDZGS.js → chunk-2NH6DYI4.js} +12 -12
  24. package/chunks/chunk-2SCDWPXI.js +246 -0
  25. package/chunks/{chunk-QE4KFTBS.js → chunk-2X55UKQE.js} +3 -3
  26. package/chunks/{chunk-QBUDF33N.js → chunk-3QMGYBFN.js} +1 -1
  27. package/chunks/{chunk-3OAKYHRG.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-GHRSKGHF.js → chunk-4WIZGAH3.js} +7 -7
  31. package/chunks/{chunk-CAS7CB3T.js → chunk-55DJUCI2.js} +87 -29
  32. package/chunks/{chunk-QNLNLENL.js → chunk-5I2IWRSH.js} +2 -2
  33. package/chunks/{chunk-H24SOJIQ.js → chunk-5NBDS5S6.js} +147 -7
  34. package/chunks/{chunk-E4IMU4Y5.js → chunk-63P4EL5V.js} +1 -1
  35. package/chunks/chunk-6FGBXPWM.js +293 -0
  36. package/chunks/{chunk-FFFM6NJV.js → chunk-6GMVPFB2.js} +155 -73
  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-FZPTCQY7.js → chunk-7JURR4JT.js} +1 -1
  40. package/chunks/{chunk-Q6NAKZTA.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-YO2XRXY6.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-FRPDJNK3.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-ZDP2Y2AL.js → chunk-CIKQ7KKO.js} +4625 -8645
  52. package/chunks/{chunk-PEJWA3QQ.js → chunk-D3UEZIQH.js} +4 -2
  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-JC26SJ5Y.js → chunk-EBJQ6AXW.js} +13 -12
  58. package/chunks/{chunk-RCWKCN2Z.js → chunk-EPDRMGT4.js} +164 -17
  59. package/chunks/{chunk-FUFCALSJ.js → chunk-ETSW4KLJ.js} +2 -2
  60. package/chunks/{chunk-KHOVYUHX.js → chunk-FNQ6T3CV.js} +20 -3
  61. package/chunks/{chunk-SP5WRGVG.js → chunk-FQK6JAFG.js} +72 -23
  62. package/chunks/{chunk-NWZY2SPY.js → chunk-FSITMZJH.js} +8 -8
  63. package/chunks/{chunk-6RLROE6G.js → chunk-GLWP3FDB.js} +80 -15
  64. package/chunks/{chunk-KPBVP6SL.js → chunk-GSN55ZRI.js} +5 -5
  65. package/chunks/{chunk-MLYGPZGU.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-5G3ZVADU.js → chunk-IJTOWOD7.js} +17 -6
  69. package/chunks/chunk-IKCX4CCL.js +469 -0
  70. package/chunks/{chunk-LPEONXNV.js → chunk-IKYJHJNF.js} +3 -3
  71. package/chunks/{chunk-DTZY2SH2.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-46DK772E.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-RKWX4CMO.js → chunk-JVPM2ULZ.js} +6 -6
  78. package/chunks/{chunk-ENPCQK44.js → chunk-JXJFVC6E.js} +37 -18
  79. package/chunks/{chunk-NABLFI57.js → chunk-JZA3JUDJ.js} +1 -1
  80. package/chunks/{chunk-CGLQAVZE.js → chunk-K36B6G2O.js} +5 -5
  81. package/chunks/{chunk-GPSKDNEE.js → chunk-K4XWPEWB.js} +4 -4
  82. package/chunks/{chunk-QOZOIPSF.js → chunk-KIM5GUMA.js} +650 -113
  83. package/chunks/{chunk-JZSM2IZ3.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-O2XSCRCS.js → chunk-LB6DUZ26.js} +259 -67
  88. package/chunks/chunk-LEH5C7FV.js +232 -0
  89. package/chunks/{chunk-RWV32G2M.js → chunk-LH2BYDQ5.js} +6 -4
  90. package/chunks/{chunk-QKTHJXCS.js → chunk-LK7CHLVP.js} +79 -2
  91. package/chunks/{chunk-VRRF3GW5.js → chunk-LKEJ26GS.js} +11 -11
  92. package/chunks/{chunk-SQFXI7VK.js → chunk-LQIW3YFY.js} +227 -41
  93. package/chunks/chunk-LS77BEZP.js +405 -0
  94. package/chunks/{chunk-BSHD62QJ.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-3HFNGB2O.js → chunk-MVSUYZDT.js} +4 -4
  99. package/chunks/{chunk-T5IO6FZ4.js → chunk-MZAXJAUM.js} +1 -1
  100. package/chunks/{chunk-QKNXKTZX.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-CS2FSS7W.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-7THPNISK.js → chunk-PC6JANNU.js} +5 -5
  108. package/chunks/{chunk-OTQ6PSZC.js → chunk-PHOF65IG.js} +3498 -1030
  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-RECUEJ7B.js → chunk-PSOO6YXD.js} +18 -15
  113. package/chunks/{chunk-X6N25LXS.js → chunk-PWTZEM3C.js} +2 -2
  114. package/chunks/{chunk-5NJTNQUW.js → chunk-PWVFN2LF.js} +1 -1
  115. package/chunks/{chunk-7AUH6A4T.js → chunk-Q4M4MDQ4.js} +2 -2
  116. package/chunks/{chunk-EZPB6S2I.js → chunk-QAF7NMK7.js} +1 -1
  117. package/chunks/{chunk-5GI55PF5.js → chunk-R5AFZNQW.js} +5 -5
  118. package/chunks/{chunk-T5B5NQZX.js → chunk-RF3EXIHJ.js} +47 -60
  119. package/chunks/{chunk-4K7VDKAD.js → chunk-RHLZR4E5.js} +1 -1
  120. package/chunks/{chunk-TJDW42MV.js → chunk-RIBKPMRP.js} +220 -141
  121. package/chunks/{chunk-RVLZCXEE.js → chunk-RWTEFFPU.js} +82 -3
  122. package/chunks/{chunk-L5QZGCRH.js → chunk-RZIX2G32.js} +1 -1
  123. package/chunks/{chunk-LLKWRXSS.js → chunk-SQCQ4KO2.js} +350 -418
  124. package/chunks/{chunk-THJNPLI4.js → chunk-TARRHLLG.js} +1 -0
  125. package/chunks/{chunk-XCXYRDHB.js → chunk-TEHGS6UP.js} +47 -18
  126. package/chunks/{chunk-PQIVAWXN.js → chunk-TGILQ3YH.js} +8 -8
  127. package/chunks/{chunk-Q2YKNMLS.js → chunk-TOFQCPDC.js} +43 -10
  128. package/chunks/{chunk-L3KUB6XM.js → chunk-TPRQ7RZH.js} +586 -242
  129. package/chunks/{chunk-T4TZQJ7W.js → chunk-TWPJO254.js} +5 -16
  130. package/chunks/{chunk-HIP6TVWA.js → chunk-U7M2DMGW.js} +3 -3
  131. package/chunks/{chunk-ACW3VNUE.js → chunk-UDX5OBWR.js} +41 -9
  132. package/chunks/{chunk-LW2FUYBN.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-O4BHWVUD.js → chunk-VIA5XA4U.js} +5 -2
  137. package/chunks/{chunk-EBXZ2YGV.js → chunk-VRYUBFMC.js} +1 -1
  138. package/chunks/{chunk-TWVE5ZS5.js → chunk-VULLI6WQ.js} +172 -6
  139. package/chunks/{chunk-LNDD3IML.js → chunk-WCXCRJYB.js} +1 -1
  140. package/chunks/{chunk-2LI23QA6.js → chunk-X5XDDSSH.js} +1 -1
  141. package/chunks/{chunk-Q35QUZDQ.js → chunk-Y34KJKDC.js} +1 -1
  142. package/chunks/{chunk-7NR2AIK6.js → chunk-YBL3QUDD.js} +2 -2
  143. package/chunks/{chunk-H4AR2JQF.js → chunk-YH6G52F2.js} +3 -3
  144. package/chunks/{chunk-MBOJHHPI.js → chunk-YPE6A4GC.js} +2 -2
  145. package/chunks/{chunk-3EK5ZOUQ.js → chunk-YX324OPW.js} +1 -1
  146. package/chunks/{chunk-4PTLZ3NX.js → chunk-Z2BC6UJ5.js} +3 -3
  147. package/chunks/{chunk-QLJUC7TG.js → chunk-ZD6UTE4A.js} +1 -1
  148. package/chunks/{chunk-LX3COOXF.js → chunk-ZFDTEDCF.js} +6 -6
  149. package/chunks/chunk-ZJHVAS7M.js +289 -0
  150. package/chunks/{chunk-4OWXOUYF.js → chunk-ZNAUOR2I.js} +15 -12
  151. package/chunks/{chunk-T2L47JJK.js → chunk-ZOIFNCKL.js} +4 -4
  152. package/chunks/{computer-use-2VIV73WK.js → computer-use-SOQ4E3VX.js} +43 -35
  153. package/chunks/{config-utils-FYTBZLCJ.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-XDHHC2P4.js → create-sub-session-QRJLW5BV.js} +43 -35
  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-CS6SFEXC.js → edit-OBDSQURM.js} +43 -35
  171. package/chunks/{en-USMCCJAJ.js → en-MTWBNGDO.js} +15 -0
  172. package/chunks/{enter-worktree-LMAL75DY.js → enter-worktree-U6MRPQ2P.js} +43 -35
  173. package/chunks/{enterPlanMode-WVJB4DSS.js → enterPlanMode-BC5QUZZ2.js} +43 -35
  174. package/chunks/{environment-6YHC4JAJ.js → environment-W5UFC2CH.js} +46 -38
  175. package/chunks/errors-M7CLORXH.js +88 -0
  176. package/chunks/{exit-worktree-KPFD742L.js → exit-worktree-DGNYMECB.js} +43 -35
  177. package/chunks/{exitPlanMode-UEJS6CDY.js → exitPlanMode-GXTBWQAR.js} +43 -35
  178. package/chunks/{fast-path-G2N4NRCA.js → fast-path-JJZFJANL.js} +6 -6
  179. package/chunks/{fast-path-settings-DAOVFADC.js → fast-path-settings-WQJU2LAT.js} +2 -2
  180. package/chunks/{fr-WVHEBDDB.js → fr-45RLL55O.js} +1 -0
  181. package/chunks/{gemini-2MDVIOVT.js → gemini-QS36EBZV.js} +132 -102
  182. package/chunks/{geminiContentGenerator-ZXTDBMFR.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-562XFLIZ.js → glob-V7R3PSK3.js} +43 -35
  189. package/chunks/{grep-MGEFBDQK.js → grep-QYPSK7OP.js} +43 -35
  190. package/chunks/handleAutoUpdate-6DBEZYPV.js +81 -0
  191. package/chunks/{i18n-R6HJENXA.js → i18n-VUJJZIMU.js} +44 -36
  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-4KNYSOYC.js → managed-npm-update-JYEMMXA3.js} +94 -38
  206. package/chunks/mcp-6DBDJPFU.js +83 -0
  207. package/chunks/{monitor-DMHKE4SW.js → monitor-R3ODH5U6.js} +45 -36
  208. package/chunks/node-UUDY34IG.js +305 -0
  209. package/chunks/nonInteractiveCli-MOYCYBBU.js +141 -0
  210. package/chunks/{notebook-edit-35SJGEOR.js → notebook-edit-BNOK452R.js} +43 -35
  211. package/chunks/{openaiContentGenerator-5LPAFXPF.js → openaiContentGenerator-WMCU3O2H.js} +27 -17
  212. package/chunks/pidfile-TFRZZZIO.js +86 -0
  213. package/chunks/{processUtils-GM2I55KF.js → processUtils-RT7UNCC2.js} +2 -2
  214. package/chunks/{pt-OK455PLH.js → pt-22Q3FP73.js} +1 -0
  215. package/chunks/{qwenContentGenerator-HKOYNP7H.js → qwenContentGenerator-HHCRK4SX.js} +56 -42
  216. package/chunks/{qwenOAuth2-NUUYC3V5.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-5VH3F4NW.js → run-qwen-serve-FU6HEM4J.js} +271 -57
  224. package/chunks/{runtime-OH77YH7W.js → runtime-XXRRTNP6.js} +55 -45
  225. package/chunks/{scheduler-WJQSLCSV.js → scheduler-G2ZS2Z7E.js} +43 -35
  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-E4N4AI6Z.js → server-4UMH7OIZ.js} +2362 -411
  232. package/chunks/{session-5YUWIOQE.js → session-K3O3Q2SV.js} +105 -87
  233. package/chunks/{settings-YY7ZSFO7.js → settings-CR2EWTBA.js} +53 -45
  234. package/chunks/shell-HH3PF3A2.js +83 -0
  235. package/chunks/{skill-PAIDX3EU.js → skill-I3SDA4MB.js} +17 -16
  236. package/chunks/spawnChannel-RWNDBXGA.js +82 -0
  237. package/chunks/{src-IZXLJI5M.js → src-GE4TTTML.js} +302 -184
  238. package/chunks/{standalone-update-X675JVBL.js → standalone-update-Q6WFRZZQ.js} +45 -37
  239. package/chunks/{startInteractiveUI-ND2IVBU3.js → startInteractiveUI-SLZGHRPH.js} +747 -310
  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-2DEYNMMN.js → team-create-YJALH5D2.js} +46 -38
  246. package/chunks/{team-delete-BB3CG3QF.js → team-delete-QE2UXJL7.js} +7 -7
  247. package/chunks/{team-plan-approval-65AVAOCT.js → team-plan-approval-34QFYKGN.js} +43 -35
  248. package/chunks/theme-manager-SWRILQHI.js +77 -0
  249. package/chunks/{todoWrite-KRAUN54W.js → todoWrite-VQ7FKOHL.js} +5 -5
  250. package/chunks/{tool-search-ZQP3SMTV.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-LURI52LP.js → trustedFolders-KHXHY6PY.js} +44 -36
  255. package/chunks/{update-relaunch-BPWFIDLM.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-HWD6Y22I.js → validateNonInterActiveAuth-3R223G3R.js} +89 -80
  259. package/chunks/{version-OD4JAFG7.js → version-HS7YSFHV.js} +1 -1
  260. package/chunks/{web-fetch-RFBKNU24.js → web-fetch-NKCSG7ZE.js} +18 -16
  261. package/chunks/{web-search-AKTVS5YZ.js → web-search-S62WAP4S.js} +13 -27
  262. package/chunks/{workflow-VZVCOSZN.js → workflow-QAGU5RU4.js} +44 -36
  263. package/chunks/workspace-providers-status-QSVZUETE.js +86 -0
  264. package/chunks/{workspace-registration-store-Q5SFJSX4.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-3XQIBACV.js +0 -78
  333. package/chunks/agent-QXD5NSKA.js +0 -73
  334. package/chunks/agent-headless-4VXR2TBK.js +0 -67
  335. package/chunks/bridge-GIBRSPE6.js +0 -81
  336. package/chunks/chunk-CBOQ3HY7.js +0 -2019
  337. package/chunks/chunk-MA6GYKK7.js +0 -6928
  338. package/chunks/contextCommand-XQU7KLIH.js +0 -72
  339. package/chunks/daemon-status-provider-KQVNB4VA.js +0 -80
  340. package/chunks/earlyInputCapture-WP5SA3KH.js +0 -74
  341. package/chunks/errors-JEYPXX4S.js +0 -80
  342. package/chunks/handleAutoUpdate-2VJPAW43.js +0 -73
  343. package/chunks/initializer-UOX67ZFQ.js +0 -78
  344. package/chunks/installationInfo-NQNY34X3.js +0 -72
  345. package/chunks/list-2Z7KS7ZF.js +0 -81
  346. package/chunks/loadedSettingsAdapter-LIYY3LE4.js +0 -75
  347. package/chunks/mcp-AJ4QW3JA.js +0 -75
  348. package/chunks/nonInteractiveCli-PUSO5QF6.js +0 -134
  349. package/chunks/pidfile-EH2JW2PB.js +0 -78
  350. package/chunks/read-file-JZ5VXILQ.js +0 -31
  351. package/chunks/resumeHistoryUtils-Z3HG4WKM.js +0 -84
  352. package/chunks/ripGrep-JNLJCT2B.js +0 -65
  353. package/chunks/serve-NN5FXWR6.js +0 -81
  354. package/chunks/shell-FXT3NVC6.js +0 -75
  355. package/chunks/spawnChannel-XAWLXNOD.js +0 -74
  356. package/chunks/theme-manager-2WZHPK2M.js +0 -69
  357. package/chunks/total-session-admission-HULB2TEQ.js +0 -75
  358. package/chunks/updateCheck-D4ESCHBJ.js +0 -88
  359. package/chunks/useAutoAcceptIndicator-CBNLOF2P.js +0 -86
  360. package/chunks/workspace-providers-status-TJTVHORI.js +0 -78
  361. package/chunks/workspace-registry-H6VM5WXK.js +0 -79
  362. package/chunks/workspace-service-ZNKD3I2J.js +0 -90
  363. package/chunks/workspace-skills-status-OOBIXADG.js +0 -77
  364. package/chunks/write-file-CAKK5IAO.js +0 -65
  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,405 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-5O2XNYP6.js";
6
+ import {
7
+ __name
8
+ } from "./chunk-J2S4EL5Y.js";
9
+
10
+ // packages/core/src/core/tool-call-preparation.ts
11
+ init_esbuild_shims();
12
+ var preparationsByResponse = /* @__PURE__ */ new WeakMap();
13
+ function setToolCallPreparations(response, preparations) {
14
+ preparationsByResponse.set(response, preparations);
15
+ }
16
+ __name(setToolCallPreparations, "setToolCallPreparations");
17
+ function getToolCallPreparations(response) {
18
+ return preparationsByResponse.get(response) ?? [];
19
+ }
20
+ __name(getToolCallPreparations, "getToolCallPreparations");
21
+
22
+ // packages/core/src/utils/runtimeDiagnostics.ts
23
+ init_esbuild_shims();
24
+ var RUNTIME_PROFILE_ENV = "QWEN_CODE_PROFILE_RUNTIME";
25
+ function isRuntimeDiagnosticsEnabled(env = process.env) {
26
+ return env[RUNTIME_PROFILE_ENV] === "1";
27
+ }
28
+ __name(isRuntimeDiagnosticsEnabled, "isRuntimeDiagnosticsEnabled");
29
+ var RuntimeDiagnosticsCollector = class {
30
+ static {
31
+ __name(this, "RuntimeDiagnosticsCollector");
32
+ }
33
+ enabled;
34
+ now;
35
+ startedAt;
36
+ requestIndex = 0;
37
+ openAIWireRequestIndex = 0;
38
+ anthropicWireRequestIndex = 0;
39
+ requests = [];
40
+ openaiWireRequests = [];
41
+ anthropicWireRequests = [];
42
+ tools = createInitialToolDiagnostics();
43
+ constructor(options = {}) {
44
+ this.enabled = options.enabled ?? isRuntimeDiagnosticsEnabled();
45
+ this.now = options.now ?? (() => (/* @__PURE__ */ new Date()).toISOString());
46
+ this.startedAt = this.now();
47
+ }
48
+ reset(options = {}) {
49
+ this.enabled = options.enabled ?? isRuntimeDiagnosticsEnabled();
50
+ this.startedAt = this.now();
51
+ this.requestIndex = 0;
52
+ this.openAIWireRequestIndex = 0;
53
+ this.anthropicWireRequestIndex = 0;
54
+ this.requests = [];
55
+ this.openaiWireRequests = [];
56
+ this.anthropicWireRequests = [];
57
+ this.tools = createInitialToolDiagnostics();
58
+ }
59
+ isEnabled() {
60
+ return this.enabled;
61
+ }
62
+ recordGenerateContentRequest(request, options) {
63
+ if (!this.enabled) {
64
+ return;
65
+ }
66
+ this.requestIndex += 1;
67
+ this.requests.push({
68
+ index: this.requestIndex,
69
+ timestamp: this.now(),
70
+ source: options.source,
71
+ model: request.model,
72
+ stream: options.stream,
73
+ serializedBytes: utf8Bytes(toJsonSafeRequest(request)),
74
+ contents: summarizeContents(request.contents),
75
+ systemInstructionBytes: summarizeContentTextBytes(
76
+ request.config?.systemInstruction
77
+ ),
78
+ generationConfigBytes: utf8Bytes(toJsonSafeConfig(request.config)),
79
+ tools: summarizeToolSchemas(request.config?.tools)
80
+ });
81
+ }
82
+ recordOpenAIWireRequest(request) {
83
+ if (!this.enabled) {
84
+ return;
85
+ }
86
+ this.openAIWireRequestIndex += 1;
87
+ this.openaiWireRequests.push({
88
+ index: this.openAIWireRequestIndex,
89
+ timestamp: this.now(),
90
+ ...summarizeOpenAIWireRequest(request)
91
+ });
92
+ }
93
+ recordAnthropicWireRequest(request) {
94
+ if (!this.enabled) {
95
+ return;
96
+ }
97
+ this.anthropicWireRequestIndex += 1;
98
+ this.anthropicWireRequests.push({
99
+ index: this.anthropicWireRequestIndex,
100
+ timestamp: this.now(),
101
+ ...summarizeAnthropicWireRequest(request)
102
+ });
103
+ }
104
+ recordToolUse(name, args) {
105
+ if (!this.enabled) {
106
+ return;
107
+ }
108
+ const argBytes = utf8Bytes(args);
109
+ const tool = this.getToolNameDiagnostics(name);
110
+ tool.uses += 1;
111
+ tool.argBytes += argBytes;
112
+ tool.maxArgBytes = Math.max(tool.maxArgBytes, argBytes);
113
+ this.tools.toolUseCount += 1;
114
+ this.tools.totalToolUseArgBytes += argBytes;
115
+ this.tools.maxToolUseArgBytes = Math.max(
116
+ this.tools.maxToolUseArgBytes,
117
+ argBytes
118
+ );
119
+ }
120
+ recordToolResult(record) {
121
+ if (!this.enabled) {
122
+ return;
123
+ }
124
+ const tool = this.getToolNameDiagnostics(record.name);
125
+ tool.results += 1;
126
+ tool.resultBytes += record.resultBytes;
127
+ tool.maxResultBytes = Math.max(tool.maxResultBytes, record.resultBytes);
128
+ if (record.isError) {
129
+ tool.errors += 1;
130
+ this.tools.toolResultErrorCount += 1;
131
+ }
132
+ this.tools.toolResultCount += 1;
133
+ this.tools.totalToolResultBytes += record.resultBytes;
134
+ this.tools.maxToolResultBytes = Math.max(
135
+ this.tools.maxToolResultBytes,
136
+ record.resultBytes
137
+ );
138
+ }
139
+ snapshot() {
140
+ return {
141
+ enabled: this.enabled,
142
+ startedAt: this.startedAt,
143
+ requests: this.requests.map((request) => ({
144
+ ...request,
145
+ contents: {
146
+ ...request.contents,
147
+ roleCounts: { ...request.contents.roleCounts }
148
+ },
149
+ tools: { ...request.tools }
150
+ })),
151
+ openaiWireRequests: this.openaiWireRequests.map((request) => ({
152
+ ...request,
153
+ messageBytesByRole: { ...request.messageBytesByRole },
154
+ topLevelKeys: [...request.topLevelKeys]
155
+ })),
156
+ anthropicWireRequests: this.anthropicWireRequests.map((request) => ({
157
+ ...request,
158
+ messageBytesByRole: { ...request.messageBytesByRole },
159
+ topLevelKeys: [...request.topLevelKeys]
160
+ })),
161
+ tools: {
162
+ ...this.tools,
163
+ byName: Object.fromEntries(
164
+ Object.entries(this.tools.byName).map(([name, value]) => [
165
+ name,
166
+ { ...value }
167
+ ])
168
+ )
169
+ }
170
+ };
171
+ }
172
+ getToolNameDiagnostics(name) {
173
+ const existing = this.tools.byName[name];
174
+ if (existing) {
175
+ return existing;
176
+ }
177
+ const created = createInitialToolNameDiagnostics();
178
+ this.tools.byName[name] = created;
179
+ return created;
180
+ }
181
+ };
182
+ var runtimeDiagnostics = new RuntimeDiagnosticsCollector();
183
+ function summarizeOpenAIWireRequest(request) {
184
+ const requestRecord = asRecord(request);
185
+ const messages = Array.isArray(requestRecord["messages"]) ? requestRecord["messages"] : [];
186
+ const tools = Array.isArray(requestRecord["tools"]) ? requestRecord["tools"] : [];
187
+ const messageBytesByRole = {};
188
+ for (const message of messages) {
189
+ const messageRecord = asRecord(message);
190
+ const role = typeof messageRecord["role"] === "string" ? messageRecord["role"] : "unknown";
191
+ messageBytesByRole[role] = (messageBytesByRole[role] ?? 0) + utf8Bytes(messageRecord["content"]);
192
+ }
193
+ return {
194
+ model: typeof requestRecord["model"] === "string" ? requestRecord["model"] : "unknown",
195
+ stream: requestRecord["stream"] === true,
196
+ bodyBytes: utf8Bytes(request),
197
+ messageCount: messages.length,
198
+ messageBytesByRole,
199
+ toolsCount: tools.length,
200
+ toolSchemaBytes: utf8Bytes(tools),
201
+ topLevelKeys: Object.keys(requestRecord).sort()
202
+ };
203
+ }
204
+ __name(summarizeOpenAIWireRequest, "summarizeOpenAIWireRequest");
205
+ function summarizeAnthropicWireRequest(request) {
206
+ const requestRecord = asRecord(request);
207
+ const messages = Array.isArray(requestRecord["messages"]) ? requestRecord["messages"] : [];
208
+ const tools = Array.isArray(requestRecord["tools"]) ? requestRecord["tools"] : [];
209
+ const messageBytesByRole = {};
210
+ for (const message of messages) {
211
+ const messageRecord = asRecord(message);
212
+ const role = typeof messageRecord["role"] === "string" ? messageRecord["role"] : "unknown";
213
+ messageBytesByRole[role] = (messageBytesByRole[role] ?? 0) + utf8Bytes(messageRecord["content"]);
214
+ }
215
+ return {
216
+ model: typeof requestRecord["model"] === "string" ? requestRecord["model"] : "unknown",
217
+ stream: requestRecord["stream"] === true,
218
+ bodyBytes: utf8Bytes(request),
219
+ messageCount: messages.length,
220
+ messageBytesByRole,
221
+ systemBytes: utf8Bytes(requestRecord["system"]),
222
+ toolsCount: tools.length,
223
+ toolSchemaBytes: utf8Bytes(tools),
224
+ topLevelKeys: Object.keys(requestRecord).sort()
225
+ };
226
+ }
227
+ __name(summarizeAnthropicWireRequest, "summarizeAnthropicWireRequest");
228
+ function createInitialToolDiagnostics() {
229
+ return {
230
+ toolUseCount: 0,
231
+ toolResultCount: 0,
232
+ toolResultErrorCount: 0,
233
+ totalToolUseArgBytes: 0,
234
+ maxToolUseArgBytes: 0,
235
+ totalToolResultBytes: 0,
236
+ maxToolResultBytes: 0,
237
+ byName: /* @__PURE__ */ Object.create(null)
238
+ };
239
+ }
240
+ __name(createInitialToolDiagnostics, "createInitialToolDiagnostics");
241
+ function createInitialToolNameDiagnostics() {
242
+ return {
243
+ uses: 0,
244
+ argBytes: 0,
245
+ maxArgBytes: 0,
246
+ results: 0,
247
+ errors: 0,
248
+ resultBytes: 0,
249
+ maxResultBytes: 0
250
+ };
251
+ }
252
+ __name(createInitialToolNameDiagnostics, "createInitialToolNameDiagnostics");
253
+ function summarizeContents(contents) {
254
+ const summary = {
255
+ count: 0,
256
+ roleCounts: {},
257
+ partCount: 0,
258
+ textBytes: 0,
259
+ functionCallCount: 0,
260
+ functionCallArgBytes: 0,
261
+ functionResponseCount: 0,
262
+ functionResponseBytes: 0,
263
+ inlineDataCount: 0,
264
+ inlineDataBytes: 0,
265
+ fileDataCount: 0
266
+ };
267
+ const contentItems = Array.isArray(contents) ? contents : contents === void 0 || contents === null ? [] : [contents];
268
+ for (const content of contentItems) {
269
+ summary.count += 1;
270
+ if (typeof content === "string") {
271
+ summary.roleCounts["user"] = (summary.roleCounts["user"] ?? 0) + 1;
272
+ summary.partCount += 1;
273
+ summary.textBytes += utf8Bytes(content);
274
+ continue;
275
+ }
276
+ const contentRecord = asRecord(content);
277
+ const role = typeof contentRecord["role"] === "string" ? contentRecord["role"] : "unknown";
278
+ summary.roleCounts[role] = (summary.roleCounts[role] ?? 0) + 1;
279
+ const parts = Array.isArray(contentRecord["parts"]) ? contentRecord["parts"] : [];
280
+ summarizeParts(parts, summary);
281
+ }
282
+ return summary;
283
+ }
284
+ __name(summarizeContents, "summarizeContents");
285
+ function summarizeContentTextBytes(content) {
286
+ const summary = summarizeContents(content);
287
+ return summary.textBytes;
288
+ }
289
+ __name(summarizeContentTextBytes, "summarizeContentTextBytes");
290
+ function summarizeParts(parts, summary) {
291
+ for (const part of parts) {
292
+ summary.partCount += 1;
293
+ if (typeof part === "string") {
294
+ summary.textBytes += utf8Bytes(part);
295
+ continue;
296
+ }
297
+ const partRecord = asRecord(part);
298
+ if (typeof partRecord["text"] === "string") {
299
+ summary.textBytes += utf8Bytes(partRecord["text"]);
300
+ }
301
+ const functionCall = asOptionalRecord(partRecord["functionCall"]);
302
+ if (functionCall) {
303
+ summary.functionCallCount += 1;
304
+ summary.functionCallArgBytes += utf8Bytes(functionCall["args"]);
305
+ }
306
+ const functionResponse = asOptionalRecord(partRecord["functionResponse"]);
307
+ if (functionResponse) {
308
+ summary.functionResponseCount += 1;
309
+ summary.functionResponseBytes += utf8Bytes(functionResponse["response"]) + utf8Bytes(functionResponse["parts"]);
310
+ }
311
+ const inlineData = asOptionalRecord(partRecord["inlineData"]);
312
+ if (inlineData) {
313
+ summary.inlineDataCount += 1;
314
+ summary.inlineDataBytes += utf8Bytes(inlineData["data"]);
315
+ }
316
+ if (partRecord["fileData"]) {
317
+ summary.fileDataCount += 1;
318
+ }
319
+ }
320
+ }
321
+ __name(summarizeParts, "summarizeParts");
322
+ function summarizeToolSchemas(tools) {
323
+ const toolList = Array.isArray(tools) ? tools : [];
324
+ let functionDeclarationCount = 0;
325
+ for (const tool of toolList) {
326
+ const toolRecord = asRecord(tool);
327
+ const declarations = Array.isArray(toolRecord["functionDeclarations"]) ? toolRecord["functionDeclarations"] : [];
328
+ functionDeclarationCount += declarations.length;
329
+ }
330
+ return {
331
+ count: toolList.length,
332
+ functionDeclarationCount,
333
+ schemaBytes: utf8Bytes(toolList)
334
+ };
335
+ }
336
+ __name(summarizeToolSchemas, "summarizeToolSchemas");
337
+ function toJsonSafeRequest(request) {
338
+ return {
339
+ model: request.model,
340
+ contents: request.contents,
341
+ config: toJsonSafeConfig(request.config)
342
+ };
343
+ }
344
+ __name(toJsonSafeRequest, "toJsonSafeRequest");
345
+ function toJsonSafeConfig(config) {
346
+ if (!config) {
347
+ return void 0;
348
+ }
349
+ const configRecord = asRecord(config);
350
+ const safeConfig = {};
351
+ for (const [key, value] of Object.entries(configRecord)) {
352
+ if (key === "abortSignal") {
353
+ continue;
354
+ }
355
+ safeConfig[key] = value;
356
+ }
357
+ return safeConfig;
358
+ }
359
+ __name(toJsonSafeConfig, "toJsonSafeConfig");
360
+ function utf8Bytes(value) {
361
+ if (value === void 0 || value === null) {
362
+ return 0;
363
+ }
364
+ if (typeof value === "string") {
365
+ return Buffer.byteLength(value, "utf8");
366
+ }
367
+ return Buffer.byteLength(safeStringify(value), "utf8");
368
+ }
369
+ __name(utf8Bytes, "utf8Bytes");
370
+ function safeStringify(value) {
371
+ try {
372
+ return JSON.stringify(value) ?? "";
373
+ } catch {
374
+ return "[unserializable]";
375
+ }
376
+ }
377
+ __name(safeStringify, "safeStringify");
378
+ function asRecord(value) {
379
+ return typeof value === "object" && value !== null ? value : {};
380
+ }
381
+ __name(asRecord, "asRecord");
382
+ function asOptionalRecord(value) {
383
+ return typeof value === "object" && value !== null ? value : null;
384
+ }
385
+ __name(asOptionalRecord, "asOptionalRecord");
386
+
387
+ export {
388
+ setToolCallPreparations,
389
+ getToolCallPreparations,
390
+ isRuntimeDiagnosticsEnabled,
391
+ RuntimeDiagnosticsCollector,
392
+ runtimeDiagnostics,
393
+ summarizeOpenAIWireRequest,
394
+ summarizeAnthropicWireRequest
395
+ };
396
+ /**
397
+ * @license
398
+ * Copyright 2025 Google LLC
399
+ * SPDX-License-Identifier: Apache-2.0
400
+ */
401
+ /**
402
+ * @license
403
+ * Copyright 2026 Qwen
404
+ * SPDX-License-Identifier: Apache-2.0
405
+ */
@@ -8,13 +8,13 @@ import {
8
8
  } from "./chunk-3Z43GZUQ.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-VRRF3GW5.js";
11
+ } from "./chunk-LKEJ26GS.js";
12
12
  import {
13
13
  So
14
- } from "./chunk-OTQ6PSZC.js";
14
+ } from "./chunk-PHOF65IG.js";
15
15
  import {
16
16
  createDebugLogger
17
- } from "./chunk-OQB4EXO4.js";
17
+ } from "./chunk-NL7LTRLR.js";
18
18
  import {
19
19
  init_esbuild_shims
20
20
  } from "./chunk-5O2XNYP6.js";
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  createDebugLogger,
5
5
  isNodeError
6
- } from "./chunk-OQB4EXO4.js";
6
+ } from "./chunk-NL7LTRLR.js";
7
7
  import {
8
8
  init_esbuild_shims
9
9
  } from "./chunk-5O2XNYP6.js";
@@ -12,13 +12,13 @@ import {
12
12
  SPAN_TOOL_BLOCKED_ON_USER,
13
13
  SPAN_TOOL_EXECUTION,
14
14
  safeJsonStringify
15
- } from "./chunk-M7WBGLYP.js";
15
+ } from "./chunk-BULDBTYC.js";
16
16
  import {
17
17
  createDebugLogger,
18
18
  getCurrentSessionId,
19
19
  setSessionContext,
20
20
  setShellTracePropagation
21
- } from "./chunk-OQB4EXO4.js";
21
+ } from "./chunk-NL7LTRLR.js";
22
22
  import {
23
23
  DiagLogLevel,
24
24
  ROOT_CONTEXT,
@@ -31,7 +31,7 @@ import {
31
31
  init_esm,
32
32
  metrics,
33
33
  trace
34
- } from "./chunk-THJNPLI4.js";
34
+ } from "./chunk-TARRHLLG.js";
35
35
  import {
36
36
  init_esbuild_shims
37
37
  } from "./chunk-5O2XNYP6.js";
@@ -81,6 +81,8 @@ var MEMORY_RECALL_DURATION = `${SERVICE_NAME}.memory.recall.duration`;
81
81
  var CHANNEL_MEMORY_RECALL_COUNT = `${SERVICE_NAME}.channel.memory.recall.count`;
82
82
  var CHANNEL_MEMORY_RECALL_DURATION = `${SERVICE_NAME}.channel.memory.recall.duration`;
83
83
  var CHANNEL_MEMORY_RECALL_SELECTED_COUNT = `${SERVICE_NAME}.channel.memory.recall.selected_count`;
84
+ var MEMORY_RECALL_DELIVERY_COUNT = `${SERVICE_NAME}.memory.recall.delivery.count`;
85
+ var MEMORY_RECALL_DELIVERY_LATENCY = `${SERVICE_NAME}.memory.recall.delivery.latency`;
84
86
  var baseMetricDefinition = {
85
87
  // session.id on metrics is opt-in: each session is a new value, so
86
88
  // attaching it by default would create unbounded time-series fan-out on
@@ -337,6 +339,8 @@ var memoryRecallDurationHistogram;
337
339
  var channelMemoryRecallCounter;
338
340
  var channelMemoryRecallDurationHistogram;
339
341
  var channelMemoryRecallSelectedCountHistogram;
342
+ var memoryRecallDeliveryCounter;
343
+ var memoryRecallDeliveryLatencyHistogram;
340
344
  var isMetricsInitialized = false;
341
345
  var isPerformanceMonitoringEnabled = false;
342
346
  function getMeter() {
@@ -452,6 +456,21 @@ function initializeMetrics(config) {
452
456
  valueType: ValueType.INT
453
457
  }
454
458
  );
459
+ memoryRecallDeliveryCounter = meter.createCounter(
460
+ MEMORY_RECALL_DELIVERY_COUNT,
461
+ {
462
+ description: "Counts auto-memory recall delivery outcomes, tagged by phase and delivery point.",
463
+ valueType: ValueType.INT
464
+ }
465
+ );
466
+ memoryRecallDeliveryLatencyHistogram = meter.createHistogram(
467
+ MEMORY_RECALL_DELIVERY_LATENCY,
468
+ {
469
+ description: "Latency from auto-memory recall prefetch start to delivery or discard.",
470
+ unit: "ms",
471
+ valueType: ValueType.INT
472
+ }
473
+ );
455
474
  initializePerformanceMonitoring(config);
456
475
  isMetricsInitialized = true;
457
476
  }
@@ -811,6 +830,20 @@ function recordChannelMemoryRecallMetrics(observation) {
811
830
  );
812
831
  }
813
832
  __name(recordChannelMemoryRecallMetrics, "recordChannelMemoryRecallMetrics");
833
+ function recordMemoryRecallDeliveryMetrics(config, latencyMs, attrs) {
834
+ if (!isMetricsInitialized) return;
835
+ const common = baseMetricDefinition.getCommonAttributes(config);
836
+ const metricAttributes = {
837
+ ...common,
838
+ phase: attrs.phase,
839
+ delivery_point: attrs.delivery_point,
840
+ strategy: attrs.strategy,
841
+ ...attrs.discard_reason ? { discard_reason: attrs.discard_reason } : {}
842
+ };
843
+ memoryRecallDeliveryCounter?.add(1, metricAttributes);
844
+ memoryRecallDeliveryLatencyHistogram?.record(latencyMs, metricAttributes);
845
+ }
846
+ __name(recordMemoryRecallDeliveryMetrics, "recordMemoryRecallDeliveryMetrics");
814
847
 
815
848
  // packages/core/src/telemetry/detailed-span-attributes.ts
816
849
  init_esbuild_shims();
@@ -962,7 +995,7 @@ function sweepStaleSpans(now) {
962
995
  if (!ctx.ended) {
963
996
  ctx.ended = true;
964
997
  const ageMs = now - ctx.startTime;
965
- const toolName = ctx.attributes["tool.name"];
998
+ const toolName = ctx.attributes["gen_ai.tool.name"] ?? ctx.attributes["tool.name"];
966
999
  const callId = ctx.attributes["tool.call_id"];
967
1000
  try {
968
1001
  ctx.span.setAttributes({
@@ -1018,14 +1051,18 @@ function getSpanId(span) {
1018
1051
  return span.spanContext().spanId || "";
1019
1052
  }
1020
1053
  __name(getSpanId, "getSpanId");
1021
- var SPAN_ERROR_MAX_CHARS = 1024;
1022
- function truncateSpanError(s) {
1023
- if (s.length <= SPAN_ERROR_MAX_CHARS) return s;
1024
- let end = SPAN_ERROR_MAX_CHARS;
1054
+ var SPAN_TEXT_MAX_CHARS = 1024;
1055
+ function truncateSpanText(s) {
1056
+ if (s.length <= SPAN_TEXT_MAX_CHARS) return s;
1057
+ let end = SPAN_TEXT_MAX_CHARS;
1025
1058
  const code = s.charCodeAt(end - 1);
1026
1059
  if (code >= 55296 && code <= 56319) end--;
1027
1060
  return s.slice(0, end) + "\u2026[truncated]";
1028
1061
  }
1062
+ __name(truncateSpanText, "truncateSpanText");
1063
+ function truncateSpanError(s) {
1064
+ return truncateSpanText(s);
1065
+ }
1029
1066
  __name(truncateSpanError, "truncateSpanError");
1030
1067
  function getTracer() {
1031
1068
  return trace.getTracer(SERVICE_NAME, "1.0.0");
@@ -1167,7 +1204,7 @@ async function withInteractionSpan(config, options, fn, getResultStatus) {
1167
1204
  );
1168
1205
  }
1169
1206
  __name(withInteractionSpan, "withInteractionSpan");
1170
- function startLLMRequestSpan(model, promptId) {
1207
+ function startLLMRequestSpan(model, promptId, options) {
1171
1208
  if (!isTelemetrySdkInitialized()) {
1172
1209
  return NOOP_SPAN;
1173
1210
  }
@@ -1176,13 +1213,14 @@ function startLLMRequestSpan(model, promptId) {
1176
1213
  const sessionId = resolveSessionId(parentCtx);
1177
1214
  const attributes = {
1178
1215
  ...sessionId ? { "session.id": sessionId } : {},
1179
- "qwen-code.model": model,
1216
+ ...sessionId ? { "gen_ai.conversation.id": sessionId } : {},
1180
1217
  "qwen-code.prompt_id": promptId,
1181
1218
  "llm_request.context": subagentContext.getStore() ? "subagent" : interactionContext.getStore() ? "interaction" : "standalone",
1182
- // Dual-emit OTel GenAI semantic convention (Stable). Private name
1183
- // (qwen-code.model) remains authoritative; gen_ai.* is a compat layer
1184
- // for spec-aware backends. See docs/design/telemetry-llm-request-timing-design.md (D8).
1185
- "gen_ai.request.model": model
1219
+ // Emit the version-pinned OTel GenAI semantic convention.
1220
+ "gen_ai.request.model": model,
1221
+ ...options?.operationName ? { "gen_ai.operation.name": options.operationName } : {},
1222
+ ...options?.providerName ? { "gen_ai.provider.name": options.providerName } : {},
1223
+ ...options?.outputType ? { "gen_ai.output.type": options.outputType } : {}
1186
1224
  };
1187
1225
  const span = getTracer().startSpan(
1188
1226
  SPAN_LLM_REQUEST,
@@ -1216,21 +1254,20 @@ function endLLMRequestSpan(span, metadata) {
1216
1254
  const duration = metadata?.durationMs ?? Date.now() - spanCtx.startTime;
1217
1255
  const endAttributes = { duration_ms: duration };
1218
1256
  if (metadata) {
1219
- if (metadata.inputTokens !== void 0) {
1220
- endAttributes["input_tokens"] = metadata.inputTokens;
1257
+ if (metadata.inputTokens !== void 0 && Number.isSafeInteger(metadata.inputTokens) && metadata.inputTokens >= 0) {
1221
1258
  endAttributes["gen_ai.usage.input_tokens"] = metadata.inputTokens;
1222
1259
  }
1223
- if (metadata.outputTokens !== void 0) {
1224
- endAttributes["output_tokens"] = metadata.outputTokens;
1260
+ if (metadata.outputTokens !== void 0 && Number.isSafeInteger(metadata.outputTokens) && metadata.outputTokens >= 0) {
1225
1261
  endAttributes["gen_ai.usage.output_tokens"] = metadata.outputTokens;
1226
1262
  }
1227
- if (metadata.cachedInputTokens !== void 0) {
1228
- endAttributes["cached_input_tokens"] = metadata.cachedInputTokens;
1229
- endAttributes["gen_ai.usage.cached_tokens"] = metadata.cachedInputTokens;
1263
+ if (metadata.cachedInputTokensReported && metadata.cachedInputTokens !== void 0 && Number.isSafeInteger(metadata.cachedInputTokens) && metadata.cachedInputTokens >= 0) {
1264
+ endAttributes["gen_ai.usage.cache_read.input_tokens"] = metadata.cachedInputTokens;
1265
+ }
1266
+ if (metadata.cacheCreationInputTokens !== void 0 && Number.isSafeInteger(metadata.cacheCreationInputTokens) && metadata.cacheCreationInputTokens >= 0) {
1267
+ endAttributes["gen_ai.usage.cache_creation.input_tokens"] = metadata.cacheCreationInputTokens;
1230
1268
  }
1231
1269
  if (metadata.ttftMs !== void 0) {
1232
1270
  endAttributes["ttft_ms"] = metadata.ttftMs;
1233
- endAttributes["gen_ai.server.time_to_first_token"] = metadata.ttftMs / 1e3;
1234
1271
  }
1235
1272
  if (metadata.requestSetupMs !== void 0) {
1236
1273
  endAttributes["request_setup_ms"] = metadata.requestSetupMs;
@@ -1252,18 +1289,18 @@ function endLLMRequestSpan(span, metadata) {
1252
1289
  if (metadata.error !== void 0)
1253
1290
  endAttributes["error"] = truncateSpanError(metadata.error);
1254
1291
  if (metadata.responseId !== void 0) {
1255
- endAttributes["response_id"] = metadata.responseId;
1256
1292
  endAttributes["gen_ai.response.id"] = metadata.responseId;
1257
1293
  }
1258
- if (metadata.finishReason !== void 0) {
1259
- endAttributes["finish_reason"] = metadata.finishReason;
1260
- endAttributes["gen_ai.response.finish_reasons"] = [
1261
- metadata.finishReason
1262
- ];
1294
+ if (metadata.responseModel !== void 0) {
1295
+ endAttributes["gen_ai.response.model"] = metadata.responseModel;
1296
+ }
1297
+ const finishReasons = metadata.finishReasons?.length ? metadata.finishReasons : metadata.finishReason !== void 0 ? [metadata.finishReason] : void 0;
1298
+ if (finishReasons) {
1299
+ endAttributes["finish_reason"] = finishReasons[0];
1300
+ endAttributes["gen_ai.response.finish_reasons"] = finishReasons;
1263
1301
  }
1264
1302
  if (metadata.thoughtsTokenCount !== void 0) {
1265
1303
  endAttributes["thoughts_token_count"] = metadata.thoughtsTokenCount;
1266
- endAttributes["gen_ai.usage.reasoning_tokens"] = metadata.thoughtsTokenCount;
1267
1304
  }
1268
1305
  if (metadata.subagentName !== void 0) {
1269
1306
  endAttributes["subagent_name"] = metadata.subagentName;
@@ -1279,7 +1316,7 @@ function endLLMRequestSpan(span, metadata) {
1279
1316
  spanCtx.span.setAttributes(endAttributes);
1280
1317
  try {
1281
1318
  if (metadata?.config && metadata.success) {
1282
- const model = String(spanCtx.attributes["qwen-code.model"] ?? "");
1319
+ const model = String(spanCtx.attributes["gen_ai.request.model"] ?? "");
1283
1320
  if (metadata.requestSetupMs !== void 0) {
1284
1321
  recordApiRequestBreakdown(metadata.config, metadata.requestSetupMs, {
1285
1322
  model,
@@ -1338,8 +1375,10 @@ function startToolSpan(toolName, attrs) {
1338
1375
  const sessionId = resolveSessionId(parentCtx);
1339
1376
  const attributes = {
1340
1377
  ...sessionId ? { "session.id": sessionId } : {},
1341
- "tool.name": toolName,
1342
- ...attrs
1378
+ ...attrs,
1379
+ "gen_ai.operation.name": "execute_tool",
1380
+ "gen_ai.tool.name": toolName,
1381
+ "gen_ai.tool.type": "function"
1343
1382
  };
1344
1383
  const span = getTracer().startSpan(
1345
1384
  SPAN_TOOL,
@@ -1666,18 +1705,21 @@ function startSubagentSpan(opts) {
1666
1705
  const attributes = {
1667
1706
  // Spec-aligned (OTel GenAI Agent Spans, Development status).
1668
1707
  "gen_ai.operation.name": "invoke_agent",
1669
- "gen_ai.provider.name": SERVICE_NAME,
1670
- "gen_ai.agent.id": opts.agentId,
1671
1708
  "gen_ai.agent.name": opts.subagentName,
1672
1709
  "gen_ai.conversation.id": opts.sessionId,
1673
- // Vendor (qwen-code-specific). Dual-emit id/name so dashboards already
1674
- // querying spec keys still work.
1710
+ // Vendor identity and lifecycle. The per-invocation ID stays private;
1711
+ // gen_ai.agent.id is reserved for a stable agent definition identity.
1675
1712
  "qwen-code.subagent.id": opts.agentId,
1676
1713
  "qwen-code.subagent.name": opts.subagentName,
1677
1714
  "qwen-code.subagent.invocation_kind": opts.invocationKind,
1678
1715
  "qwen-code.subagent.is_built_in": opts.isBuiltIn,
1679
1716
  "qwen-code.subagent.depth": opts.depth
1680
1717
  };
1718
+ if (opts.agentDescription !== void 0) {
1719
+ attributes["gen_ai.agent.description"] = truncateSpanText(
1720
+ opts.agentDescription
1721
+ );
1722
+ }
1681
1723
  if (opts.modelOverride !== void 0) {
1682
1724
  attributes["gen_ai.request.model"] = opts.modelOverride;
1683
1725
  }
@@ -1830,7 +1872,7 @@ function initializeTelemetry(config) {
1830
1872
  telemetryInitPromise ??= (async () => {
1831
1873
  const debugLogger3 = createDebugLogger("OTEL");
1832
1874
  try {
1833
- const { startTelemetrySdk } = await import("./sdk-impl-NSLPDH6I.js");
1875
+ const { startTelemetrySdk } = await import("./sdk-impl-GMVPB7NB.js");
1834
1876
  if (telemetryInitialized) return;
1835
1877
  const started = await startTelemetrySdk(config);
1836
1878
  if (!started) return;
@@ -2203,6 +2245,7 @@ export {
2203
2245
  recordMemoryDreamMetrics,
2204
2246
  recordMemoryRecallMetrics,
2205
2247
  recordChannelMemoryRecallMetrics,
2248
+ recordMemoryRecallDeliveryMetrics,
2206
2249
  deriveTraceId,
2207
2250
  randomSpanId,
2208
2251
  randomHexString,