@costrict/csc 4.0.1

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 (535) hide show
  1. package/README.md +398 -0
  2. package/dist/chunk-04hza677.js +24 -0
  3. package/dist/chunk-0559sa47.js +269 -0
  4. package/dist/chunk-06saje2v.js +39 -0
  5. package/dist/chunk-07069jq1.js +30 -0
  6. package/dist/chunk-070x53zd.js +2377 -0
  7. package/dist/chunk-0731m51q.js +8 -0
  8. package/dist/chunk-0858agqy.js +481 -0
  9. package/dist/chunk-09vwyeam.js +16 -0
  10. package/dist/chunk-0h5jp1k7.js +142 -0
  11. package/dist/chunk-0hhpf3sk.js +703 -0
  12. package/dist/chunk-0rpb2bdp.js +8 -0
  13. package/dist/chunk-0vkfrmqm.js +690 -0
  14. package/dist/chunk-0xjaqda8.js +1124 -0
  15. package/dist/chunk-0xv28twy.js +140 -0
  16. package/dist/chunk-0yrqcj0z.js +117 -0
  17. package/dist/chunk-1141xmr4.js +8 -0
  18. package/dist/chunk-11nzax0s.js +38 -0
  19. package/dist/chunk-13hhjhs8.js +1299 -0
  20. package/dist/chunk-15yrwc9c.js +110 -0
  21. package/dist/chunk-168xb8v1.js +436 -0
  22. package/dist/chunk-1a1qct3y.js +120 -0
  23. package/dist/chunk-1cwdhk7a.js +969 -0
  24. package/dist/chunk-1dz5e26z.js +726 -0
  25. package/dist/chunk-1h2famwb.js +49 -0
  26. package/dist/chunk-1hreef20.js +27 -0
  27. package/dist/chunk-1mpdkjdj.js +66 -0
  28. package/dist/chunk-1pvfqrpv.js +78 -0
  29. package/dist/chunk-1r1zzbv3.js +112 -0
  30. package/dist/chunk-1rvwfjaq.js +71 -0
  31. package/dist/chunk-1w2y3m4g.js +47290 -0
  32. package/dist/chunk-1xf1hn04.js +366 -0
  33. package/dist/chunk-225mq9kr.js +908 -0
  34. package/dist/chunk-238g70xa.js +36 -0
  35. package/dist/chunk-23my8c16.js +516 -0
  36. package/dist/chunk-26wtxbdc.js +13870 -0
  37. package/dist/chunk-2a42s11t.js +412 -0
  38. package/dist/chunk-2eykm0j0.js +20 -0
  39. package/dist/chunk-2fwze72g.js +24 -0
  40. package/dist/chunk-2gdm9hp2.js +1179 -0
  41. package/dist/chunk-2gzv8nrw.js +205 -0
  42. package/dist/chunk-2jb168ef.js +772 -0
  43. package/dist/chunk-2k995y2x.js +880 -0
  44. package/dist/chunk-2nayx6q1.js +63 -0
  45. package/dist/chunk-2p2kknmh.js +165 -0
  46. package/dist/chunk-2qa6bvek.js +146 -0
  47. package/dist/chunk-2qz6r4n3.js +74 -0
  48. package/dist/chunk-2s460rgh.js +61 -0
  49. package/dist/chunk-2wv3ttqg.js +199 -0
  50. package/dist/chunk-2wvz22ag.js +71 -0
  51. package/dist/chunk-2wz9qb4j.js +164 -0
  52. package/dist/chunk-30rst83v.js +168 -0
  53. package/dist/chunk-39jcea92.js +737 -0
  54. package/dist/chunk-3bes9fg8.js +78 -0
  55. package/dist/chunk-3c25bcsw.js +17 -0
  56. package/dist/chunk-3cg807vs.js +38 -0
  57. package/dist/chunk-3dy7fxmg.js +1072 -0
  58. package/dist/chunk-3h8a89gy.js +46 -0
  59. package/dist/chunk-3j0f3yyd.js +17 -0
  60. package/dist/chunk-3mgywd32.js +8 -0
  61. package/dist/chunk-3ng1qsw3.js +281 -0
  62. package/dist/chunk-3nk79af8.js +8 -0
  63. package/dist/chunk-3ns6ys7f.js +1648 -0
  64. package/dist/chunk-3sj7jkgr.js +35 -0
  65. package/dist/chunk-3tg3p70s.js +513 -0
  66. package/dist/chunk-3v18yz1s.js +21933 -0
  67. package/dist/chunk-3vxgde8h.js +830 -0
  68. package/dist/chunk-3w6s9m5w.js +16 -0
  69. package/dist/chunk-3x2jaxpw.js +254 -0
  70. package/dist/chunk-3xyekzfn.js +113 -0
  71. package/dist/chunk-3yeacwwq.js +115 -0
  72. package/dist/chunk-3z5e623j.js +130 -0
  73. package/dist/chunk-3z9478wf.js +14 -0
  74. package/dist/chunk-46fcr28b.js +131 -0
  75. package/dist/chunk-495d85x1.js +8066 -0
  76. package/dist/chunk-4bfwebv9.js +276 -0
  77. package/dist/chunk-4g3v8y12.js +23 -0
  78. package/dist/chunk-4gn5yqrx.js +79 -0
  79. package/dist/chunk-4jfp4pr0.js +24 -0
  80. package/dist/chunk-4jm600zv.js +13 -0
  81. package/dist/chunk-4nspekjp.js +69 -0
  82. package/dist/chunk-4pbx3g7s.js +26 -0
  83. package/dist/chunk-4t6efhvx.js +102 -0
  84. package/dist/chunk-4te4ttsn.js +42 -0
  85. package/dist/chunk-4x6wg2kg.js +254 -0
  86. package/dist/chunk-4y23e4m9.js +399 -0
  87. package/dist/chunk-4zfkzkt6.js +37 -0
  88. package/dist/chunk-4zh96y27.js +202 -0
  89. package/dist/chunk-512kh02z.js +117 -0
  90. package/dist/chunk-538ydk68.js +85 -0
  91. package/dist/chunk-56ax2vae.js +255 -0
  92. package/dist/chunk-56r79b2b.js +69 -0
  93. package/dist/chunk-57zse1aw.js +393 -0
  94. package/dist/chunk-5c5xde65.js +229 -0
  95. package/dist/chunk-5c8g21yn.js +334 -0
  96. package/dist/chunk-5hfekx34.js +158 -0
  97. package/dist/chunk-5j8wked2.js +125 -0
  98. package/dist/chunk-5krq9sjq.js +291 -0
  99. package/dist/chunk-5kstcfhs.js +180 -0
  100. package/dist/chunk-5q9t5raw.js +1077 -0
  101. package/dist/chunk-5z0vwms1.js +20 -0
  102. package/dist/chunk-5z28bqne.js +6748 -0
  103. package/dist/chunk-616twzqj.js +17 -0
  104. package/dist/chunk-62me46b4.js +115 -0
  105. package/dist/chunk-62xkxk9z.js +32 -0
  106. package/dist/chunk-64c1avct.js +13 -0
  107. package/dist/chunk-677as3nh.js +15 -0
  108. package/dist/chunk-68jt10ky.js +170 -0
  109. package/dist/chunk-6aspnjtj.js +213 -0
  110. package/dist/chunk-6bd8brc4.js +48 -0
  111. package/dist/chunk-6dj5t602.js +341 -0
  112. package/dist/chunk-6e7578mb.js +183 -0
  113. package/dist/chunk-6gr3c3w9.js +378 -0
  114. package/dist/chunk-6km733xr.js +1393 -0
  115. package/dist/chunk-6kpdq5vp.js +269 -0
  116. package/dist/chunk-6mzwkxka.js +591 -0
  117. package/dist/chunk-6n4rgw3j.js +308 -0
  118. package/dist/chunk-6p4cyhb3.js +16 -0
  119. package/dist/chunk-6ps660aq.js +177 -0
  120. package/dist/chunk-6rvt67cg.js +156 -0
  121. package/dist/chunk-6tq2v3rk.js +186 -0
  122. package/dist/chunk-6vhnnq2y.js +1410 -0
  123. package/dist/chunk-6wyva7w0.js +208 -0
  124. package/dist/chunk-6x0hj15f.js +502 -0
  125. package/dist/chunk-71pmx33m.js +367 -0
  126. package/dist/chunk-71ynp714.js +101 -0
  127. package/dist/chunk-73rpbt04.js +1947 -0
  128. package/dist/chunk-74vem2p2.js +34238 -0
  129. package/dist/chunk-760252na.js +101 -0
  130. package/dist/chunk-7739pg2c.js +4261 -0
  131. package/dist/chunk-78ynhtwg.js +71 -0
  132. package/dist/chunk-7aw745vx.js +40175 -0
  133. package/dist/chunk-7ethp9j4.js +785 -0
  134. package/dist/chunk-7f9h59mx.js +123 -0
  135. package/dist/chunk-7gwn2q3t.js +267 -0
  136. package/dist/chunk-7j39efa9.js +4521 -0
  137. package/dist/chunk-7nzp7c14.js +113 -0
  138. package/dist/chunk-7p0pvq5a.js +1189 -0
  139. package/dist/chunk-7pe7wxtx.js +37 -0
  140. package/dist/chunk-7wm5s02e.js +216 -0
  141. package/dist/chunk-7xyswgjh.js +8 -0
  142. package/dist/chunk-80ex85y3.js +231 -0
  143. package/dist/chunk-80v8c3v8.js +94 -0
  144. package/dist/chunk-8225arm6.js +6374 -0
  145. package/dist/chunk-82eajk9f.js +885 -0
  146. package/dist/chunk-83hfzbx3.js +10 -0
  147. package/dist/chunk-84bn8nbd.js +130 -0
  148. package/dist/chunk-85em0j2s.js +61 -0
  149. package/dist/chunk-86vz5aga.js +585 -0
  150. package/dist/chunk-86zqm75k.js +119 -0
  151. package/dist/chunk-894yt5ch.js +127 -0
  152. package/dist/chunk-89f30geq.js +114 -0
  153. package/dist/chunk-89m2z6cf.js +542 -0
  154. package/dist/chunk-89spcmeg.js +203 -0
  155. package/dist/chunk-8a1q7y7t.js +38 -0
  156. package/dist/chunk-8b9j5s4r.js +22 -0
  157. package/dist/chunk-8g5pe1gr.js +37 -0
  158. package/dist/chunk-8h45f69y.js +151 -0
  159. package/dist/chunk-8henn231.js +63 -0
  160. package/dist/chunk-8jprqan8.js +1580 -0
  161. package/dist/chunk-8pn8tvgg.js +637 -0
  162. package/dist/chunk-8psrvmy6.js +797 -0
  163. package/dist/chunk-8sq45snx.js +1585 -0
  164. package/dist/chunk-8tj3ttfr.js +122 -0
  165. package/dist/chunk-8tnsngw2.js +31 -0
  166. package/dist/chunk-8y12jxg8.js +10 -0
  167. package/dist/chunk-8ymf4e6z.js +48 -0
  168. package/dist/chunk-8yrcxv0n.js +17 -0
  169. package/dist/chunk-90wp6wez.js +10510 -0
  170. package/dist/chunk-92cm1qp0.js +387 -0
  171. package/dist/chunk-95g4wtbk.js +83 -0
  172. package/dist/chunk-95h99qt5.js +350 -0
  173. package/dist/chunk-9663bsk0.js +15 -0
  174. package/dist/chunk-96mf19ww.js +130 -0
  175. package/dist/chunk-97kwfkef.js +172626 -0
  176. package/dist/chunk-9d4wp328.js +121 -0
  177. package/dist/chunk-9h9j6e8f.js +340 -0
  178. package/dist/chunk-9k8qsaph.js +33068 -0
  179. package/dist/chunk-9mfbqw9k.js +24 -0
  180. package/dist/chunk-9n6x41fh.js +89 -0
  181. package/dist/chunk-9nsdc461.js +43 -0
  182. package/dist/chunk-9nyem167.js +68 -0
  183. package/dist/chunk-9q3r5pd2.js +80 -0
  184. package/dist/chunk-9wf38cty.js +83 -0
  185. package/dist/chunk-9x5zgy22.js +12 -0
  186. package/dist/chunk-a136cvvz.js +27 -0
  187. package/dist/chunk-a4twdmhf.js +45 -0
  188. package/dist/chunk-a53syfz4.js +348 -0
  189. package/dist/chunk-a783nmpc.js +240 -0
  190. package/dist/chunk-a8ejc632.js +3094 -0
  191. package/dist/chunk-a9vdeb6y.js +258 -0
  192. package/dist/chunk-a9zh40sj.js +48 -0
  193. package/dist/chunk-ae76ded0.js +30 -0
  194. package/dist/chunk-akdsj21e.js +37 -0
  195. package/dist/chunk-ase86y73.js +15 -0
  196. package/dist/chunk-avb9ff81.js +98 -0
  197. package/dist/chunk-ayydhscx.js +26 -0
  198. package/dist/chunk-az3db85f.js +301 -0
  199. package/dist/chunk-az7hwp39.js +111 -0
  200. package/dist/chunk-b4wg70y1.js +54 -0
  201. package/dist/chunk-b81hd3m6.js +32 -0
  202. package/dist/chunk-ba17dx50.js +30 -0
  203. package/dist/chunk-bcfd2zw7.js +20 -0
  204. package/dist/chunk-bcv6qax7.js +32 -0
  205. package/dist/chunk-bef1t5q0.js +1460 -0
  206. package/dist/chunk-bend4tmg.js +208 -0
  207. package/dist/chunk-bhxz6rzk.js +475 -0
  208. package/dist/chunk-bj6k61m9.js +130 -0
  209. package/dist/chunk-bnrctxq5.js +112 -0
  210. package/dist/chunk-bt64sq5y.js +19 -0
  211. package/dist/chunk-bxcfz5gy.js +56 -0
  212. package/dist/chunk-c11k4btd.js +1095 -0
  213. package/dist/chunk-c3eaj3gr.js +2997 -0
  214. package/dist/chunk-c51ns2ke.js +40 -0
  215. package/dist/chunk-c5kags80.js +141 -0
  216. package/dist/chunk-c6sjhj89.js +1284 -0
  217. package/dist/chunk-c77cvfqz.js +14 -0
  218. package/dist/chunk-cb68zyey.js +117 -0
  219. package/dist/chunk-cczpp302.js +223 -0
  220. package/dist/chunk-ce2v5y9y.js +338 -0
  221. package/dist/chunk-cfv996bs.js +22 -0
  222. package/dist/chunk-cgfdkzhb.js +12 -0
  223. package/dist/chunk-cj3ptgbw.js +918 -0
  224. package/dist/chunk-ck22v5n3.js +2745 -0
  225. package/dist/chunk-ck4be14j.js +8588 -0
  226. package/dist/chunk-cmwfcp4h.js +120 -0
  227. package/dist/chunk-cnsj3vq2.js +35 -0
  228. package/dist/chunk-cnvsytvx.js +182 -0
  229. package/dist/chunk-cp1aqm3d.js +66 -0
  230. package/dist/chunk-cpgjt97m.js +126 -0
  231. package/dist/chunk-cqrdcwc6.js +115 -0
  232. package/dist/chunk-crmjpsqe.js +68 -0
  233. package/dist/chunk-ctya0ggm.js +1606 -0
  234. package/dist/chunk-cvkzqcxn.js +26 -0
  235. package/dist/chunk-d4mdda98.js +94 -0
  236. package/dist/chunk-d8vwvym7.js +693 -0
  237. package/dist/chunk-d8xwx5h7.js +431 -0
  238. package/dist/chunk-dgepe1tj.js +557 -0
  239. package/dist/chunk-dggvswz1.js +104 -0
  240. package/dist/chunk-dgqrcy74.js +48 -0
  241. package/dist/chunk-dhgfme5s.js +622 -0
  242. package/dist/chunk-dkzwgrsa.js +336 -0
  243. package/dist/chunk-dmfnhfbm.js +63 -0
  244. package/dist/chunk-dnh7jtpb.js +37 -0
  245. package/dist/chunk-drtj50ge.js +112 -0
  246. package/dist/chunk-dtj6da60.js +173 -0
  247. package/dist/chunk-e3jdmhj3.js +122 -0
  248. package/dist/chunk-e5ey47fq.js +78 -0
  249. package/dist/chunk-ehtwnxpg.js +1591 -0
  250. package/dist/chunk-enz148g9.js +79 -0
  251. package/dist/chunk-eq5csq9z.js +147 -0
  252. package/dist/chunk-eqp1rfft.js +17 -0
  253. package/dist/chunk-ers3hn71.js +58 -0
  254. package/dist/chunk-evs073nf.js +9300 -0
  255. package/dist/chunk-ew2qn2ct.js +128 -0
  256. package/dist/chunk-ewadzrm8.js +103 -0
  257. package/dist/chunk-ewhxrzr7.js +282 -0
  258. package/dist/chunk-f076572y.js +29 -0
  259. package/dist/chunk-f1fd8rrx.js +458 -0
  260. package/dist/chunk-f2mhrmww.js +62 -0
  261. package/dist/chunk-f2rspz95.js +661 -0
  262. package/dist/chunk-f4evkbn3.js +109 -0
  263. package/dist/chunk-f5ma3nh5.js +3436 -0
  264. package/dist/chunk-f77bmbss.js +262 -0
  265. package/dist/chunk-fafwc5w7.js +63 -0
  266. package/dist/chunk-fas0j37w.js +206 -0
  267. package/dist/chunk-fbv4apne.js +51 -0
  268. package/dist/chunk-fbvwrs77.js +74 -0
  269. package/dist/chunk-feyzykye.js +10 -0
  270. package/dist/chunk-fk80f449.js +29032 -0
  271. package/dist/chunk-fqz39wqc.js +2754 -0
  272. package/dist/chunk-fs870v81.js +321 -0
  273. package/dist/chunk-fvrd2wnw.js +119 -0
  274. package/dist/chunk-fwqpwb0b.js +68 -0
  275. package/dist/chunk-fyc5fepv.js +10 -0
  276. package/dist/chunk-fz0ch109.js +329 -0
  277. package/dist/chunk-fzsn5y4x.js +74 -0
  278. package/dist/chunk-g1k68z1b.js +15 -0
  279. package/dist/chunk-g338npwr.js +1061 -0
  280. package/dist/chunk-g4mn27j2.js +125 -0
  281. package/dist/chunk-g5k4zxrz.js +285 -0
  282. package/dist/chunk-g7hbj02n.js +47 -0
  283. package/dist/chunk-g9f19ttm.js +15 -0
  284. package/dist/chunk-gmpnr1zb.js +248 -0
  285. package/dist/chunk-gnsx2xas.js +58 -0
  286. package/dist/chunk-gr2j2pnw.js +449 -0
  287. package/dist/chunk-gs8skfag.js +700 -0
  288. package/dist/chunk-gte39pa1.js +62 -0
  289. package/dist/chunk-gvee52bj.js +41 -0
  290. package/dist/chunk-gzvt7jsh.js +109 -0
  291. package/dist/chunk-gzykgb04.js +445 -0
  292. package/dist/chunk-h0qngp9w.js +157 -0
  293. package/dist/chunk-h4b85amj.js +2331 -0
  294. package/dist/chunk-h5w7hchy.js +851 -0
  295. package/dist/chunk-hakdhagh.js +16606 -0
  296. package/dist/chunk-hamq5sbn.js +398 -0
  297. package/dist/chunk-hezhnvr6.js +369 -0
  298. package/dist/chunk-hh7cmy4k.js +20 -0
  299. package/dist/chunk-hhgyxd84.js +259 -0
  300. package/dist/chunk-hk9xz7gk.js +118 -0
  301. package/dist/chunk-hkn7tzgv.js +2007 -0
  302. package/dist/chunk-hnafabz8.js +266 -0
  303. package/dist/chunk-hqhmy4sg.js +4181 -0
  304. package/dist/chunk-hvdbzsar.js +127 -0
  305. package/dist/chunk-hzhe8ygc.js +547 -0
  306. package/dist/chunk-j05addbw.js +132 -0
  307. package/dist/chunk-j2k4p94p.js +55 -0
  308. package/dist/chunk-j3a4p81y.js +184 -0
  309. package/dist/chunk-j5bth84e.js +97 -0
  310. package/dist/chunk-j64ga6ta.js +8035 -0
  311. package/dist/chunk-j7e5xs2n.js +225 -0
  312. package/dist/chunk-j9gxwbe3.js +349 -0
  313. package/dist/chunk-jaaxk89e.js +113 -0
  314. package/dist/chunk-jbe9jra5.js +132 -0
  315. package/dist/chunk-jd32zbps.js +15 -0
  316. package/dist/chunk-jdgeec04.js +4249 -0
  317. package/dist/chunk-jhvzhfs0.js +61 -0
  318. package/dist/chunk-jmczk6av.js +173 -0
  319. package/dist/chunk-jmmy2389.js +146 -0
  320. package/dist/chunk-jmt3t5ka.js +655 -0
  321. package/dist/chunk-jnhkref0.js +30 -0
  322. package/dist/chunk-jrw2ydrt.js +122 -0
  323. package/dist/chunk-jwrvnvn4.js +40 -0
  324. package/dist/chunk-jzmz18nn.js +65 -0
  325. package/dist/chunk-k04vbmv4.js +646 -0
  326. package/dist/chunk-k0p9w03v.js +4957 -0
  327. package/dist/chunk-k3dhz0k9.js +135 -0
  328. package/dist/chunk-k3s4yk22.js +477 -0
  329. package/dist/chunk-k9ssqns7.js +32 -0
  330. package/dist/chunk-kadfnk84.js +182 -0
  331. package/dist/chunk-kddy2dqe.js +251 -0
  332. package/dist/chunk-kfd89dsd.js +21 -0
  333. package/dist/chunk-kqnj25tn.js +6956 -0
  334. package/dist/chunk-kt7g00mq.js +435 -0
  335. package/dist/chunk-kwdta9bw.js +3437 -0
  336. package/dist/chunk-kwekc97v.js +18 -0
  337. package/dist/chunk-kyqp0hdk.js +410 -0
  338. package/dist/chunk-m19387gd.js +192 -0
  339. package/dist/chunk-m1k6c44h.js +97 -0
  340. package/dist/chunk-m2bcpk8j.js +30 -0
  341. package/dist/chunk-m2f2brtj.js +290 -0
  342. package/dist/chunk-m3vd4kjb.js +895 -0
  343. package/dist/chunk-m4y35n20.js +2845 -0
  344. package/dist/chunk-m53f3dw3.js +237 -0
  345. package/dist/chunk-m7e9yz7v.js +112 -0
  346. package/dist/chunk-m7gb3xym.js +196 -0
  347. package/dist/chunk-m85hmjj5.js +446 -0
  348. package/dist/chunk-mafty4rg.js +30 -0
  349. package/dist/chunk-mbgrtfd1.js +67 -0
  350. package/dist/chunk-mc9gapvy.js +1811 -0
  351. package/dist/chunk-md75xjhp.js +283 -0
  352. package/dist/chunk-mdkxrfbj.js +666 -0
  353. package/dist/chunk-mfq8d0nf.js +126 -0
  354. package/dist/chunk-mg4j7qa1.js +192 -0
  355. package/dist/chunk-mjnb2hkr.js +132 -0
  356. package/dist/chunk-mnc0y0d0.js +190 -0
  357. package/dist/chunk-mpvn2d5c.js +155 -0
  358. package/dist/chunk-mr2kw49k.js +116 -0
  359. package/dist/chunk-ms3y5kf0.js +252 -0
  360. package/dist/chunk-mwz7he7v.js +169 -0
  361. package/dist/chunk-mx28h61f.js +1147 -0
  362. package/dist/chunk-my3kzsjn.js +99 -0
  363. package/dist/chunk-n0a4xh5h.js +128 -0
  364. package/dist/chunk-n0qaeaa5.js +256 -0
  365. package/dist/chunk-n24pwjkp.js +139 -0
  366. package/dist/chunk-n2qz0nhv.js +93 -0
  367. package/dist/chunk-n7d8481f.js +68 -0
  368. package/dist/chunk-n7ttdtk0.js +641 -0
  369. package/dist/chunk-n9axs6t8.js +716 -0
  370. package/dist/chunk-netzwgv1.js +154 -0
  371. package/dist/chunk-nh3cd07f.js +14358 -0
  372. package/dist/chunk-njhgsxjj.js +237 -0
  373. package/dist/chunk-nk5x8t2h.js +132 -0
  374. package/dist/chunk-nka1g8f4.js +773 -0
  375. package/dist/chunk-nneembm7.js +31 -0
  376. package/dist/chunk-nq0fxyxh.js +752 -0
  377. package/dist/chunk-nt837qt9.js +21 -0
  378. package/dist/chunk-p0ng6w7n.js +315 -0
  379. package/dist/chunk-p1e5ajm6.js +90 -0
  380. package/dist/chunk-p2816w9z.js +1486 -0
  381. package/dist/chunk-p2d5nh3g.js +342 -0
  382. package/dist/chunk-p3a8pcmp.js +780 -0
  383. package/dist/chunk-p5rg8b87.js +157 -0
  384. package/dist/chunk-p7vkh4wx.js +15 -0
  385. package/dist/chunk-p99pzx02.js +65 -0
  386. package/dist/chunk-p9ce1a80.js +279 -0
  387. package/dist/chunk-pakvqawt.js +2544 -0
  388. package/dist/chunk-pfc94kdv.js +5387 -0
  389. package/dist/chunk-pfnzae5b.js +71 -0
  390. package/dist/chunk-pgyrvzpr.js +862 -0
  391. package/dist/chunk-pj77mrv7.js +879 -0
  392. package/dist/chunk-pk3s1vqt.js +136 -0
  393. package/dist/chunk-ppwjyveh.js +8 -0
  394. package/dist/chunk-ps1ds612.js +183 -0
  395. package/dist/chunk-ps49ymvj.js +43 -0
  396. package/dist/chunk-pshjyzq4.js +17656 -0
  397. package/dist/chunk-pskjqhz7.js +116 -0
  398. package/dist/chunk-pvc81kgd.js +1030 -0
  399. package/dist/chunk-pwwa7s62.js +11 -0
  400. package/dist/chunk-q3j9ktw6.js +313 -0
  401. package/dist/chunk-q4t5gjz6.js +180 -0
  402. package/dist/chunk-q7tpyeb3.js +39 -0
  403. package/dist/chunk-q82r31er.js +151 -0
  404. package/dist/chunk-qajrkk97.js +298 -0
  405. package/dist/chunk-qb6ej6am.js +118 -0
  406. package/dist/chunk-qbrsmra3.js +23 -0
  407. package/dist/chunk-qezabsdm.js +65 -0
  408. package/dist/chunk-qfdazq4f.js +81 -0
  409. package/dist/chunk-qjb5b625.js +382 -0
  410. package/dist/chunk-qjeytdb7.js +47 -0
  411. package/dist/chunk-qkn19vqd.js +116 -0
  412. package/dist/chunk-qnfx3qtx.js +617 -0
  413. package/dist/chunk-qp1047f9.js +16239 -0
  414. package/dist/chunk-qp2qdcda.js +100 -0
  415. package/dist/chunk-qtfc6wdh.js +19 -0
  416. package/dist/chunk-qvpvpfby.js +4951 -0
  417. package/dist/chunk-qwcs5mar.js +151 -0
  418. package/dist/chunk-qywms8ma.js +84 -0
  419. package/dist/chunk-qz2x630m.js +49145 -0
  420. package/dist/chunk-r1c1vckq.js +606 -0
  421. package/dist/chunk-r1cmrvhq.js +660 -0
  422. package/dist/chunk-r4w1khtr.js +479 -0
  423. package/dist/chunk-r5c7ntjh.js +308 -0
  424. package/dist/chunk-r6pqswky.js +118 -0
  425. package/dist/chunk-rcpmj2s6.js +51 -0
  426. package/dist/chunk-re5rh06v.js +151 -0
  427. package/dist/chunk-reta5k4w.js +127 -0
  428. package/dist/chunk-rfpx3se2.js +114 -0
  429. package/dist/chunk-rfzv16n9.js +140 -0
  430. package/dist/chunk-rhq6rjsm.js +139 -0
  431. package/dist/chunk-rn0v1hk8.js +34 -0
  432. package/dist/chunk-rpmxbsc4.js +106 -0
  433. package/dist/chunk-rw0b3wq4.js +54 -0
  434. package/dist/chunk-rwg99z4w.js +277 -0
  435. package/dist/chunk-rzz2be44.js +144 -0
  436. package/dist/chunk-s1pwx4p8.js +1029 -0
  437. package/dist/chunk-s2jznn2t.js +63 -0
  438. package/dist/chunk-s3pzvdss.js +50 -0
  439. package/dist/chunk-s5hrc81b.js +256 -0
  440. package/dist/chunk-s6zh6vsc.js +115 -0
  441. package/dist/chunk-sac40vch.js +41 -0
  442. package/dist/chunk-sd36yzx8.js +954 -0
  443. package/dist/chunk-sd6tyy2k.js +445 -0
  444. package/dist/chunk-sg9s9fhh.js +220 -0
  445. package/dist/chunk-st29kcjw.js +70 -0
  446. package/dist/chunk-szj5wvdy.js +28 -0
  447. package/dist/chunk-tazmxz0r.js +115 -0
  448. package/dist/chunk-tbbgpakn.js +352 -0
  449. package/dist/chunk-tbjjq4ry.js +70 -0
  450. package/dist/chunk-tezak8rx.js +6157 -0
  451. package/dist/chunk-tf79jran.js +15 -0
  452. package/dist/chunk-tg8bdmhy.js +148 -0
  453. package/dist/chunk-thjjw26s.js +369 -0
  454. package/dist/chunk-tq1ak9qz.js +3594 -0
  455. package/dist/chunk-tqvxvgcq.js +390 -0
  456. package/dist/chunk-ts2p6bv1.js +224 -0
  457. package/dist/chunk-tsmzsjkv.js +167 -0
  458. package/dist/chunk-ttk5dzz8.js +25 -0
  459. package/dist/chunk-v1kzp02e.js +785 -0
  460. package/dist/chunk-v4rp12y4.js +269 -0
  461. package/dist/chunk-v4t6dyyh.js +9076 -0
  462. package/dist/chunk-v78fj8by.js +145 -0
  463. package/dist/chunk-v9smspw2.js +4301 -0
  464. package/dist/chunk-var1et7e.js +66 -0
  465. package/dist/chunk-vest0y6x.js +3830 -0
  466. package/dist/chunk-vf5sd1nq.js +12 -0
  467. package/dist/chunk-vf612n57.js +472 -0
  468. package/dist/chunk-vhqtr0f1.js +343 -0
  469. package/dist/chunk-vnfempy5.js +43 -0
  470. package/dist/chunk-vp5pr5yv.js +443 -0
  471. package/dist/chunk-vp8cvspq.js +157 -0
  472. package/dist/chunk-vqqtdc8s.js +75 -0
  473. package/dist/chunk-vyjeh50y.js +2149 -0
  474. package/dist/chunk-w0nwhqww.js +295 -0
  475. package/dist/chunk-w32xjs44.js +306 -0
  476. package/dist/chunk-w4mdb23d.js +111 -0
  477. package/dist/chunk-w5j84xcj.js +226 -0
  478. package/dist/chunk-w78f4cd8.js +158 -0
  479. package/dist/chunk-wbpxzaty.js +66 -0
  480. package/dist/chunk-wfz0qffj.js +3939 -0
  481. package/dist/chunk-wm26jyc3.js +156 -0
  482. package/dist/chunk-wmw9c9ga.js +440 -0
  483. package/dist/chunk-wpp8s8bh.js +433 -0
  484. package/dist/chunk-wrb0tqk3.js +198 -0
  485. package/dist/chunk-wswsvthr.js +946 -0
  486. package/dist/chunk-wzpdet3m.js +843 -0
  487. package/dist/chunk-x1pmes5j.js +482 -0
  488. package/dist/chunk-x6r4v44b.js +8 -0
  489. package/dist/chunk-x92g7cqn.js +421 -0
  490. package/dist/chunk-xedf6d09.js +66 -0
  491. package/dist/chunk-xgwhhpvz.js +154 -0
  492. package/dist/chunk-xkxd7n8n.js +310 -0
  493. package/dist/chunk-xrt6e27s.js +60 -0
  494. package/dist/chunk-xsq9ae7x.js +90 -0
  495. package/dist/chunk-xv3era3s.js +8 -0
  496. package/dist/chunk-xwz1db00.js +34 -0
  497. package/dist/chunk-xx0570gb.js +120 -0
  498. package/dist/chunk-xxshn0tn.js +314 -0
  499. package/dist/chunk-xzc7k2hh.js +122 -0
  500. package/dist/chunk-y1784krc.js +19 -0
  501. package/dist/chunk-y2hdgkmv.js +244 -0
  502. package/dist/chunk-y82j1dne.js +524 -0
  503. package/dist/chunk-ybae225f.js +669 -0
  504. package/dist/chunk-ye7fmmc4.js +95 -0
  505. package/dist/chunk-ygj29dpk.js +100 -0
  506. package/dist/chunk-yj2t6a2t.js +216 -0
  507. package/dist/chunk-yja33bsx.js +300 -0
  508. package/dist/chunk-yjkamwzv.js +121 -0
  509. package/dist/chunk-ymjz2by8.js +120 -0
  510. package/dist/chunk-yqtda7b6.js +105 -0
  511. package/dist/chunk-yqx2fkma.js +2362 -0
  512. package/dist/chunk-yzx3mhfd.js +110 -0
  513. package/dist/chunk-z1bs6d7k.js +24 -0
  514. package/dist/chunk-z2dp53wn.js +17 -0
  515. package/dist/chunk-z6e5jp2w.js +119 -0
  516. package/dist/chunk-z915v06p.js +148 -0
  517. package/dist/chunk-ze6zvkg6.js +22820 -0
  518. package/dist/chunk-zejm280k.js +39 -0
  519. package/dist/chunk-zeytvkxt.js +142 -0
  520. package/dist/chunk-zgjh33vv.js +276 -0
  521. package/dist/chunk-zgncjtyk.js +264 -0
  522. package/dist/chunk-zmgzhwae.js +4389 -0
  523. package/dist/chunk-ztf1hdpb.js +456 -0
  524. package/dist/chunk-zzm33q8x.js +8 -0
  525. package/dist/cli.js +139 -0
  526. package/dist/download-ripgrep.js +24821 -0
  527. package/dist/vendor/audio-capture/arm64-darwin/audio-capture.node +0 -0
  528. package/dist/vendor/audio-capture/arm64-linux/audio-capture.node +0 -0
  529. package/dist/vendor/audio-capture/arm64-win32/audio-capture.node +0 -0
  530. package/dist/vendor/audio-capture/x64-darwin/audio-capture.node +0 -0
  531. package/dist/vendor/audio-capture/x64-linux/audio-capture.node +0 -0
  532. package/dist/vendor/audio-capture/x64-win32/audio-capture.node +0 -0
  533. package/package.json +177 -0
  534. package/scripts/download-ripgrep.ts +335 -0
  535. package/scripts/postinstall.cjs +319 -0
@@ -0,0 +1,1393 @@
1
+ // @bun
2
+ import {
3
+ envDynamic,
4
+ getFeatureValue_CACHED_MAY_BE_STALE,
5
+ getOauthAccountInfo,
6
+ getOrCreateUserID,
7
+ init_auth,
8
+ init_config1 as init_config,
9
+ init_envDynamic,
10
+ init_growthbook,
11
+ init_metadata,
12
+ sanitizeToolNameForAnalytics
13
+ } from "./chunk-qp1047f9.js";
14
+ import {
15
+ getAgentId,
16
+ getAgentName,
17
+ getParentSessionId,
18
+ init_teammate
19
+ } from "./chunk-1cwdhk7a.js";
20
+ import {
21
+ require_src
22
+ } from "./chunk-p2816w9z.js";
23
+ import {
24
+ djb2Hash,
25
+ init_hash
26
+ } from "./chunk-8tnsngw2.js";
27
+ import {
28
+ init_cleanupRegistry,
29
+ init_debug,
30
+ init_slowOperations,
31
+ jsonParse,
32
+ jsonStringify,
33
+ logForDebugging
34
+ } from "./chunk-ctya0ggm.js";
35
+ import {
36
+ init_errors
37
+ } from "./chunk-z6e5jp2w.js";
38
+ import {
39
+ getEventLogger,
40
+ getIsNonInteractiveSession,
41
+ getPromptId,
42
+ getSessionId,
43
+ init_state
44
+ } from "./chunk-h4b85amj.js";
45
+ import {
46
+ init_envUtils,
47
+ isEnvTruthy
48
+ } from "./chunk-jaaxk89e.js";
49
+ import {
50
+ __esm,
51
+ __toESM
52
+ } from "./chunk-qp2qdcda.js";
53
+
54
+ // src/utils/taggedId.ts
55
+ function base58Encode(n) {
56
+ const base = BigInt(BASE_58_CHARS.length);
57
+ const result = new Array(ENCODED_LENGTH).fill(BASE_58_CHARS[0]);
58
+ let i = ENCODED_LENGTH - 1;
59
+ let value = n;
60
+ while (value > 0n) {
61
+ const rem = Number(value % base);
62
+ result[i] = BASE_58_CHARS[rem];
63
+ value = value / base;
64
+ i--;
65
+ }
66
+ return result.join("");
67
+ }
68
+ function uuidToBigInt(uuid) {
69
+ const hex = uuid.replace(/-/g, "");
70
+ if (hex.length !== 32) {
71
+ throw new Error(`Invalid UUID hex length: ${hex.length}`);
72
+ }
73
+ return BigInt("0x" + hex);
74
+ }
75
+ function toTaggedId(tag, uuid) {
76
+ const n = uuidToBigInt(uuid);
77
+ return `${tag}_${VERSION}${base58Encode(n)}`;
78
+ }
79
+ var BASE_58_CHARS = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz", VERSION = "01", ENCODED_LENGTH = 22;
80
+ var init_taggedId = () => {};
81
+
82
+ // src/utils/telemetryAttributes.ts
83
+ function shouldIncludeAttribute(envVar) {
84
+ const defaultValue = METRICS_CARDINALITY_DEFAULTS[envVar];
85
+ const envValue = process.env[envVar];
86
+ if (envValue === undefined) {
87
+ return defaultValue;
88
+ }
89
+ return isEnvTruthy(envValue);
90
+ }
91
+ function getTelemetryAttributes() {
92
+ const userId = getOrCreateUserID();
93
+ const sessionId = getSessionId();
94
+ const attributes = {
95
+ "user.id": userId
96
+ };
97
+ if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_SESSION_ID")) {
98
+ attributes["session.id"] = sessionId;
99
+ }
100
+ if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
101
+ attributes["app.version"] = "4.0.1";
102
+ }
103
+ const oauthAccount = getOauthAccountInfo();
104
+ if (oauthAccount) {
105
+ const orgId = oauthAccount.organizationUuid;
106
+ const email = oauthAccount.emailAddress;
107
+ const accountUuid = oauthAccount.accountUuid;
108
+ if (orgId)
109
+ attributes["organization.id"] = orgId;
110
+ if (email)
111
+ attributes["user.email"] = email;
112
+ if (accountUuid && shouldIncludeAttribute("OTEL_METRICS_INCLUDE_ACCOUNT_UUID")) {
113
+ attributes["user.account_uuid"] = accountUuid;
114
+ attributes["user.account_id"] = process.env.CLAUDE_CODE_ACCOUNT_TAGGED_ID || toTaggedId("user", accountUuid);
115
+ }
116
+ }
117
+ if (envDynamic.terminal) {
118
+ attributes["terminal.type"] = envDynamic.terminal;
119
+ }
120
+ return attributes;
121
+ }
122
+ var METRICS_CARDINALITY_DEFAULTS;
123
+ var init_telemetryAttributes = __esm(() => {
124
+ init_state();
125
+ init_auth();
126
+ init_config();
127
+ init_envDynamic();
128
+ init_envUtils();
129
+ init_taggedId();
130
+ METRICS_CARDINALITY_DEFAULTS = {
131
+ OTEL_METRICS_INCLUDE_SESSION_ID: true,
132
+ OTEL_METRICS_INCLUDE_VERSION: false,
133
+ OTEL_METRICS_INCLUDE_ACCOUNT_UUID: true
134
+ };
135
+ });
136
+
137
+ // src/utils/telemetry/events.ts
138
+ function isUserPromptLoggingEnabled() {
139
+ return isEnvTruthy(process.env.OTEL_LOG_USER_PROMPTS);
140
+ }
141
+ function redactIfDisabled(content) {
142
+ return isUserPromptLoggingEnabled() ? content : "<REDACTED>";
143
+ }
144
+ async function logOTelEvent(eventName, metadata = {}) {
145
+ const eventLogger = getEventLogger();
146
+ if (!eventLogger) {
147
+ if (!hasWarnedNoEventLogger) {
148
+ hasWarnedNoEventLogger = true;
149
+ logForDebugging(`[3P telemetry] Event dropped (no event logger initialized): ${eventName}`, { level: "warn" });
150
+ }
151
+ return;
152
+ }
153
+ if (false) {}
154
+ const attributes = {
155
+ ...getTelemetryAttributes(),
156
+ "event.name": eventName,
157
+ "event.timestamp": new Date().toISOString(),
158
+ "event.sequence": eventSequence++
159
+ };
160
+ const promptId = getPromptId();
161
+ if (promptId) {
162
+ attributes["prompt.id"] = promptId;
163
+ }
164
+ const workspaceDir = process.env.CLAUDE_CODE_WORKSPACE_HOST_PATHS;
165
+ if (workspaceDir) {
166
+ attributes["workspace.host_paths"] = workspaceDir.split("|");
167
+ }
168
+ for (const [key, value] of Object.entries(metadata)) {
169
+ if (value !== undefined) {
170
+ attributes[key] = value;
171
+ }
172
+ }
173
+ eventLogger.emit({
174
+ body: `claude_code.${eventName}`,
175
+ attributes
176
+ });
177
+ }
178
+ var eventSequence = 0, hasWarnedNoEventLogger = false;
179
+ var init_events = __esm(() => {
180
+ init_state();
181
+ init_debug();
182
+ init_envUtils();
183
+ init_telemetryAttributes();
184
+ });
185
+
186
+ // src/utils/telemetry/perfettoTracing.ts
187
+ function stringToNumericHash(str) {
188
+ return Math.abs(djb2Hash(str)) || 1;
189
+ }
190
+ function getProcessIdForAgent(agentId) {
191
+ const existing = agentIdToProcessId.get(agentId);
192
+ if (existing !== undefined)
193
+ return existing;
194
+ processIdCounter++;
195
+ agentIdToProcessId.set(agentId, processIdCounter);
196
+ return processIdCounter;
197
+ }
198
+ function getCurrentAgentInfo() {
199
+ const agentId = getAgentId() ?? getSessionId();
200
+ const agentName = getAgentName() ?? "main";
201
+ const parentSessionId = getParentSessionId();
202
+ const existing = agentRegistry.get(agentId);
203
+ if (existing)
204
+ return existing;
205
+ const info = {
206
+ agentId,
207
+ agentName,
208
+ parentAgentId: parentSessionId,
209
+ processId: agentId === getSessionId() ? 1 : getProcessIdForAgent(agentId),
210
+ threadId: stringToNumericHash(agentName)
211
+ };
212
+ agentRegistry.set(agentId, info);
213
+ totalAgentCount++;
214
+ return info;
215
+ }
216
+ function getTimestamp() {
217
+ return (Date.now() - startTimeMs) * 1000;
218
+ }
219
+ function generateSpanId() {
220
+ return `span_${++spanIdCounter}`;
221
+ }
222
+ function initializePerfettoTracing() {
223
+ const envValue = process.env.CLAUDE_CODE_PERFETTO_TRACE;
224
+ logForDebugging(`[Perfetto] initializePerfettoTracing called, env value: ${envValue}`);
225
+ if (false) {}
226
+ }
227
+ function emitProcessMetadata(agentInfo) {
228
+ if (!isEnabled)
229
+ return;
230
+ metadataEvents.push({
231
+ name: "process_name",
232
+ cat: "__metadata",
233
+ ph: "M",
234
+ ts: 0,
235
+ pid: agentInfo.processId,
236
+ tid: 0,
237
+ args: { name: agentInfo.agentName }
238
+ });
239
+ metadataEvents.push({
240
+ name: "thread_name",
241
+ cat: "__metadata",
242
+ ph: "M",
243
+ ts: 0,
244
+ pid: agentInfo.processId,
245
+ tid: agentInfo.threadId,
246
+ args: { name: agentInfo.agentName }
247
+ });
248
+ if (agentInfo.parentAgentId) {
249
+ metadataEvents.push({
250
+ name: "parent_agent",
251
+ cat: "__metadata",
252
+ ph: "M",
253
+ ts: 0,
254
+ pid: agentInfo.processId,
255
+ tid: 0,
256
+ args: {
257
+ parent_agent_id: agentInfo.parentAgentId
258
+ }
259
+ });
260
+ }
261
+ }
262
+ function isPerfettoTracingEnabled() {
263
+ return isEnabled;
264
+ }
265
+ function registerAgent(agentId, agentName, parentAgentId) {
266
+ if (!isEnabled)
267
+ return;
268
+ const info = {
269
+ agentId,
270
+ agentName,
271
+ parentAgentId,
272
+ processId: getProcessIdForAgent(agentId),
273
+ threadId: stringToNumericHash(agentName)
274
+ };
275
+ agentRegistry.set(agentId, info);
276
+ totalAgentCount++;
277
+ emitProcessMetadata(info);
278
+ }
279
+ function unregisterAgent(agentId) {
280
+ if (!isEnabled)
281
+ return;
282
+ agentRegistry.delete(agentId);
283
+ agentIdToProcessId.delete(agentId);
284
+ }
285
+ function startLLMRequestPerfettoSpan(args) {
286
+ if (!isEnabled)
287
+ return "";
288
+ const spanId = generateSpanId();
289
+ const agentInfo = getCurrentAgentInfo();
290
+ pendingSpans.set(spanId, {
291
+ name: "API Call",
292
+ category: "api",
293
+ startTime: getTimestamp(),
294
+ agentInfo,
295
+ args: {
296
+ model: args.model,
297
+ prompt_tokens: args.promptTokens,
298
+ message_id: args.messageId,
299
+ is_speculative: args.isSpeculative ?? false,
300
+ query_source: args.querySource
301
+ }
302
+ });
303
+ events.push({
304
+ name: "API Call",
305
+ cat: "api",
306
+ ph: "B",
307
+ ts: pendingSpans.get(spanId).startTime,
308
+ pid: agentInfo.processId,
309
+ tid: agentInfo.threadId,
310
+ args: pendingSpans.get(spanId).args
311
+ });
312
+ return spanId;
313
+ }
314
+ function endLLMRequestPerfettoSpan(spanId, metadata) {
315
+ if (!isEnabled || !spanId)
316
+ return;
317
+ const pending = pendingSpans.get(spanId);
318
+ if (!pending)
319
+ return;
320
+ const endTime = getTimestamp();
321
+ const duration = endTime - pending.startTime;
322
+ const promptTokens = metadata.promptTokens ?? pending.args.prompt_tokens;
323
+ const ttftMs = metadata.ttftMs;
324
+ const ttltMs = metadata.ttltMs;
325
+ const outputTokens = metadata.outputTokens;
326
+ const cacheReadTokens = metadata.cacheReadTokens;
327
+ const itps = ttftMs !== undefined && promptTokens !== undefined && ttftMs > 0 ? Math.round(promptTokens / (ttftMs / 1000) * 100) / 100 : undefined;
328
+ const samplingMs = ttltMs !== undefined && ttftMs !== undefined ? ttltMs - ttftMs : undefined;
329
+ const otps = samplingMs !== undefined && outputTokens !== undefined && samplingMs > 0 ? Math.round(outputTokens / (samplingMs / 1000) * 100) / 100 : undefined;
330
+ const cacheHitRate = cacheReadTokens !== undefined && promptTokens !== undefined && promptTokens > 0 ? Math.round(cacheReadTokens / promptTokens * 1e4) / 100 : undefined;
331
+ const requestSetupMs = metadata.requestSetupMs;
332
+ const attemptStartTimes = metadata.attemptStartTimes;
333
+ const args = {
334
+ ...pending.args,
335
+ ttft_ms: ttftMs,
336
+ ttlt_ms: ttltMs,
337
+ prompt_tokens: promptTokens,
338
+ output_tokens: outputTokens,
339
+ cache_read_tokens: cacheReadTokens,
340
+ cache_creation_tokens: metadata.cacheCreationTokens,
341
+ message_id: metadata.messageId ?? pending.args.message_id,
342
+ success: metadata.success ?? true,
343
+ error: metadata.error,
344
+ duration_ms: duration / 1000,
345
+ request_setup_ms: requestSetupMs,
346
+ itps,
347
+ otps,
348
+ cache_hit_rate_pct: cacheHitRate
349
+ };
350
+ const setupUs = requestSetupMs !== undefined && requestSetupMs > 0 ? requestSetupMs * 1000 : 0;
351
+ if (setupUs > 0) {
352
+ const setupEndTs = pending.startTime + setupUs;
353
+ events.push({
354
+ name: "Request Setup",
355
+ cat: "api,setup",
356
+ ph: "B",
357
+ ts: pending.startTime,
358
+ pid: pending.agentInfo.processId,
359
+ tid: pending.agentInfo.threadId,
360
+ args: {
361
+ request_setup_ms: requestSetupMs,
362
+ attempt_count: attemptStartTimes?.length ?? 1
363
+ }
364
+ });
365
+ if (attemptStartTimes && attemptStartTimes.length > 1) {
366
+ const baseWallMs = attemptStartTimes[0];
367
+ for (let i = 0;i < attemptStartTimes.length - 1; i++) {
368
+ const attemptStartUs = pending.startTime + (attemptStartTimes[i] - baseWallMs) * 1000;
369
+ const attemptEndUs = pending.startTime + (attemptStartTimes[i + 1] - baseWallMs) * 1000;
370
+ events.push({
371
+ name: `Attempt ${i + 1} (retry)`,
372
+ cat: "api,retry",
373
+ ph: "B",
374
+ ts: attemptStartUs,
375
+ pid: pending.agentInfo.processId,
376
+ tid: pending.agentInfo.threadId,
377
+ args: { attempt: i + 1 }
378
+ });
379
+ events.push({
380
+ name: `Attempt ${i + 1} (retry)`,
381
+ cat: "api,retry",
382
+ ph: "E",
383
+ ts: attemptEndUs,
384
+ pid: pending.agentInfo.processId,
385
+ tid: pending.agentInfo.threadId
386
+ });
387
+ }
388
+ }
389
+ events.push({
390
+ name: "Request Setup",
391
+ cat: "api,setup",
392
+ ph: "E",
393
+ ts: setupEndTs,
394
+ pid: pending.agentInfo.processId,
395
+ tid: pending.agentInfo.threadId
396
+ });
397
+ }
398
+ if (ttftMs !== undefined) {
399
+ const firstTokenStartTs = pending.startTime + setupUs;
400
+ const firstTokenEndTs = firstTokenStartTs + ttftMs * 1000;
401
+ events.push({
402
+ name: "First Token",
403
+ cat: "api,ttft",
404
+ ph: "B",
405
+ ts: firstTokenStartTs,
406
+ pid: pending.agentInfo.processId,
407
+ tid: pending.agentInfo.threadId,
408
+ args: {
409
+ ttft_ms: ttftMs,
410
+ prompt_tokens: promptTokens,
411
+ itps,
412
+ cache_hit_rate_pct: cacheHitRate
413
+ }
414
+ });
415
+ events.push({
416
+ name: "First Token",
417
+ cat: "api,ttft",
418
+ ph: "E",
419
+ ts: firstTokenEndTs,
420
+ pid: pending.agentInfo.processId,
421
+ tid: pending.agentInfo.threadId
422
+ });
423
+ const actualSamplingMs = ttltMs !== undefined ? ttltMs - ttftMs - setupUs / 1000 : undefined;
424
+ if (actualSamplingMs !== undefined && actualSamplingMs > 0) {
425
+ events.push({
426
+ name: "Sampling",
427
+ cat: "api,sampling",
428
+ ph: "B",
429
+ ts: firstTokenEndTs,
430
+ pid: pending.agentInfo.processId,
431
+ tid: pending.agentInfo.threadId,
432
+ args: {
433
+ sampling_ms: actualSamplingMs,
434
+ output_tokens: outputTokens,
435
+ otps
436
+ }
437
+ });
438
+ events.push({
439
+ name: "Sampling",
440
+ cat: "api,sampling",
441
+ ph: "E",
442
+ ts: firstTokenEndTs + actualSamplingMs * 1000,
443
+ pid: pending.agentInfo.processId,
444
+ tid: pending.agentInfo.threadId
445
+ });
446
+ }
447
+ }
448
+ events.push({
449
+ name: pending.name,
450
+ cat: pending.category,
451
+ ph: "E",
452
+ ts: endTime,
453
+ pid: pending.agentInfo.processId,
454
+ tid: pending.agentInfo.threadId,
455
+ args
456
+ });
457
+ pendingSpans.delete(spanId);
458
+ }
459
+ function startToolPerfettoSpan(toolName, args) {
460
+ if (!isEnabled)
461
+ return "";
462
+ const spanId = generateSpanId();
463
+ const agentInfo = getCurrentAgentInfo();
464
+ pendingSpans.set(spanId, {
465
+ name: `Tool: ${toolName}`,
466
+ category: "tool",
467
+ startTime: getTimestamp(),
468
+ agentInfo,
469
+ args: {
470
+ tool_name: toolName,
471
+ ...args
472
+ }
473
+ });
474
+ events.push({
475
+ name: `Tool: ${toolName}`,
476
+ cat: "tool",
477
+ ph: "B",
478
+ ts: pendingSpans.get(spanId).startTime,
479
+ pid: agentInfo.processId,
480
+ tid: agentInfo.threadId,
481
+ args: pendingSpans.get(spanId).args
482
+ });
483
+ return spanId;
484
+ }
485
+ function endToolPerfettoSpan(spanId, metadata) {
486
+ if (!isEnabled || !spanId)
487
+ return;
488
+ const pending = pendingSpans.get(spanId);
489
+ if (!pending)
490
+ return;
491
+ const endTime = getTimestamp();
492
+ const duration = endTime - pending.startTime;
493
+ const args = {
494
+ ...pending.args,
495
+ success: metadata?.success ?? true,
496
+ error: metadata?.error,
497
+ result_tokens: metadata?.resultTokens,
498
+ duration_ms: duration / 1000
499
+ };
500
+ events.push({
501
+ name: pending.name,
502
+ cat: pending.category,
503
+ ph: "E",
504
+ ts: endTime,
505
+ pid: pending.agentInfo.processId,
506
+ tid: pending.agentInfo.threadId,
507
+ args
508
+ });
509
+ pendingSpans.delete(spanId);
510
+ }
511
+ function startUserInputPerfettoSpan(context) {
512
+ if (!isEnabled)
513
+ return "";
514
+ const spanId = generateSpanId();
515
+ const agentInfo = getCurrentAgentInfo();
516
+ pendingSpans.set(spanId, {
517
+ name: "Waiting for User Input",
518
+ category: "user_input",
519
+ startTime: getTimestamp(),
520
+ agentInfo,
521
+ args: {
522
+ context
523
+ }
524
+ });
525
+ events.push({
526
+ name: "Waiting for User Input",
527
+ cat: "user_input",
528
+ ph: "B",
529
+ ts: pendingSpans.get(spanId).startTime,
530
+ pid: agentInfo.processId,
531
+ tid: agentInfo.threadId,
532
+ args: pendingSpans.get(spanId).args
533
+ });
534
+ return spanId;
535
+ }
536
+ function endUserInputPerfettoSpan(spanId, metadata) {
537
+ if (!isEnabled || !spanId)
538
+ return;
539
+ const pending = pendingSpans.get(spanId);
540
+ if (!pending)
541
+ return;
542
+ const endTime = getTimestamp();
543
+ const duration = endTime - pending.startTime;
544
+ const args = {
545
+ ...pending.args,
546
+ decision: metadata?.decision,
547
+ source: metadata?.source,
548
+ duration_ms: duration / 1000
549
+ };
550
+ events.push({
551
+ name: pending.name,
552
+ cat: pending.category,
553
+ ph: "E",
554
+ ts: endTime,
555
+ pid: pending.agentInfo.processId,
556
+ tid: pending.agentInfo.threadId,
557
+ args
558
+ });
559
+ pendingSpans.delete(spanId);
560
+ }
561
+ function startInteractionPerfettoSpan(userPrompt) {
562
+ if (!isEnabled)
563
+ return "";
564
+ const spanId = generateSpanId();
565
+ const agentInfo = getCurrentAgentInfo();
566
+ pendingSpans.set(spanId, {
567
+ name: "Interaction",
568
+ category: "interaction",
569
+ startTime: getTimestamp(),
570
+ agentInfo,
571
+ args: {
572
+ user_prompt_length: userPrompt?.length
573
+ }
574
+ });
575
+ events.push({
576
+ name: "Interaction",
577
+ cat: "interaction",
578
+ ph: "B",
579
+ ts: pendingSpans.get(spanId).startTime,
580
+ pid: agentInfo.processId,
581
+ tid: agentInfo.threadId,
582
+ args: pendingSpans.get(spanId).args
583
+ });
584
+ return spanId;
585
+ }
586
+ function endInteractionPerfettoSpan(spanId) {
587
+ if (!isEnabled || !spanId)
588
+ return;
589
+ const pending = pendingSpans.get(spanId);
590
+ if (!pending)
591
+ return;
592
+ const endTime = getTimestamp();
593
+ const duration = endTime - pending.startTime;
594
+ events.push({
595
+ name: pending.name,
596
+ cat: pending.category,
597
+ ph: "E",
598
+ ts: endTime,
599
+ pid: pending.agentInfo.processId,
600
+ tid: pending.agentInfo.threadId,
601
+ args: {
602
+ ...pending.args,
603
+ duration_ms: duration / 1000
604
+ }
605
+ });
606
+ pendingSpans.delete(spanId);
607
+ }
608
+ var isEnabled = false, metadataEvents, events, pendingSpans, agentRegistry, totalAgentCount = 0, startTimeMs = 0, spanIdCounter = 0, processIdCounter = 1, agentIdToProcessId, STALE_SPAN_TTL_MS, STALE_SPAN_CLEANUP_INTERVAL_MS;
609
+ var init_perfettoTracing = __esm(() => {
610
+ init_state();
611
+ init_cleanupRegistry();
612
+ init_debug();
613
+ init_envUtils();
614
+ init_errors();
615
+ init_hash();
616
+ init_slowOperations();
617
+ init_teammate();
618
+ metadataEvents = [];
619
+ events = [];
620
+ pendingSpans = new Map;
621
+ agentRegistry = new Map;
622
+ agentIdToProcessId = new Map;
623
+ STALE_SPAN_TTL_MS = 30 * 60 * 1000;
624
+ STALE_SPAN_CLEANUP_INTERVAL_MS = 60 * 1000;
625
+ });
626
+
627
+ // src/utils/telemetry/betaSessionTracing.ts
628
+ import { createHash } from "crypto";
629
+ function clearBetaTracingState() {
630
+ seenHashes.clear();
631
+ lastReportedMessageHash.clear();
632
+ }
633
+ function isBetaTracingEnabled() {
634
+ const baseEnabled = isEnvTruthy(process.env.ENABLE_BETA_TRACING_DETAILED) && Boolean(process.env.BETA_TRACING_ENDPOINT);
635
+ if (!baseEnabled) {
636
+ return false;
637
+ }
638
+ if (process.env.USER_TYPE !== "ant") {
639
+ return getIsNonInteractiveSession() || getFeatureValue_CACHED_MAY_BE_STALE("tengu_trace_lantern", false);
640
+ }
641
+ return true;
642
+ }
643
+ function truncateContent(content, maxSize = MAX_CONTENT_SIZE) {
644
+ if (content.length <= maxSize) {
645
+ return { content, truncated: false };
646
+ }
647
+ return {
648
+ content: content.slice(0, maxSize) + `
649
+
650
+ [TRUNCATED - Content exceeds 60KB limit]`,
651
+ truncated: true
652
+ };
653
+ }
654
+ function shortHash(content) {
655
+ return createHash("sha256").update(content).digest("hex").slice(0, 12);
656
+ }
657
+ function hashSystemPrompt(systemPrompt) {
658
+ return `sp_${shortHash(systemPrompt)}`;
659
+ }
660
+ function hashMessage(message) {
661
+ const content = jsonStringify(message.message.content);
662
+ return `msg_${shortHash(content)}`;
663
+ }
664
+ function extractSystemReminderContent(text) {
665
+ const match = text.trim().match(SYSTEM_REMINDER_REGEX);
666
+ return match && match[1] ? match[1].trim() : null;
667
+ }
668
+ function formatMessagesForContext(messages) {
669
+ const contextParts = [];
670
+ const systemReminders = [];
671
+ for (const message of messages) {
672
+ const content = message.message.content;
673
+ if (typeof content === "string") {
674
+ const reminderContent = extractSystemReminderContent(content);
675
+ if (reminderContent) {
676
+ systemReminders.push(reminderContent);
677
+ } else {
678
+ contextParts.push(`[USER]
679
+ ${content}`);
680
+ }
681
+ } else if (Array.isArray(content)) {
682
+ for (const block of content) {
683
+ if (block.type === "text") {
684
+ const reminderContent = extractSystemReminderContent(block.text);
685
+ if (reminderContent) {
686
+ systemReminders.push(reminderContent);
687
+ } else {
688
+ contextParts.push(`[USER]
689
+ ${block.text}`);
690
+ }
691
+ } else if (block.type === "tool_result") {
692
+ const resultContent = typeof block.content === "string" ? block.content : jsonStringify(block.content);
693
+ const reminderContent = extractSystemReminderContent(resultContent);
694
+ if (reminderContent) {
695
+ systemReminders.push(reminderContent);
696
+ } else {
697
+ contextParts.push(`[TOOL RESULT: ${block.tool_use_id}]
698
+ ${resultContent}`);
699
+ }
700
+ }
701
+ }
702
+ }
703
+ }
704
+ return { contextParts, systemReminders };
705
+ }
706
+ function addBetaInteractionAttributes(span, userPrompt) {
707
+ if (!isBetaTracingEnabled()) {
708
+ return;
709
+ }
710
+ const { content: truncatedPrompt, truncated } = truncateContent(`[USER PROMPT]
711
+ ${userPrompt}`);
712
+ span.setAttributes({
713
+ new_context: truncatedPrompt,
714
+ ...truncated && {
715
+ new_context_truncated: true,
716
+ new_context_original_length: userPrompt.length
717
+ }
718
+ });
719
+ }
720
+ function addBetaLLMRequestAttributes(span, newContext, messagesForAPI) {
721
+ if (!isBetaTracingEnabled()) {
722
+ return;
723
+ }
724
+ if (newContext?.systemPrompt) {
725
+ const promptHash = hashSystemPrompt(newContext.systemPrompt);
726
+ const preview = newContext.systemPrompt.slice(0, 500);
727
+ span.setAttribute("system_prompt_hash", promptHash);
728
+ span.setAttribute("system_prompt_preview", preview);
729
+ span.setAttribute("system_prompt_length", newContext.systemPrompt.length);
730
+ if (!seenHashes.has(promptHash)) {
731
+ seenHashes.add(promptHash);
732
+ const { content: truncatedPrompt, truncated } = truncateContent(newContext.systemPrompt);
733
+ logOTelEvent("system_prompt", {
734
+ system_prompt_hash: promptHash,
735
+ system_prompt: truncatedPrompt,
736
+ system_prompt_length: String(newContext.systemPrompt.length),
737
+ ...truncated && { system_prompt_truncated: "true" }
738
+ });
739
+ }
740
+ }
741
+ if (newContext?.tools) {
742
+ try {
743
+ const toolsArray = jsonParse(newContext.tools);
744
+ const toolsWithHashes = toolsArray.map((tool) => {
745
+ const toolJson = jsonStringify(tool);
746
+ const toolHash = shortHash(toolJson);
747
+ return {
748
+ name: typeof tool.name === "string" ? tool.name : "unknown",
749
+ hash: toolHash,
750
+ json: toolJson
751
+ };
752
+ });
753
+ span.setAttribute("tools", jsonStringify(toolsWithHashes.map(({ name, hash }) => ({ name, hash }))));
754
+ span.setAttribute("tools_count", toolsWithHashes.length);
755
+ for (const { name, hash, json } of toolsWithHashes) {
756
+ if (!seenHashes.has(`tool_${hash}`)) {
757
+ seenHashes.add(`tool_${hash}`);
758
+ const { content: truncatedTool, truncated } = truncateContent(json);
759
+ logOTelEvent("tool", {
760
+ tool_name: sanitizeToolNameForAnalytics(name),
761
+ tool_hash: hash,
762
+ tool: truncatedTool,
763
+ ...truncated && { tool_truncated: "true" }
764
+ });
765
+ }
766
+ }
767
+ } catch {
768
+ span.setAttribute("tools_parse_error", true);
769
+ }
770
+ }
771
+ if (messagesForAPI && messagesForAPI.length > 0 && newContext?.querySource) {
772
+ const querySource = newContext.querySource;
773
+ const lastHash = lastReportedMessageHash.get(querySource);
774
+ let startIndex = 0;
775
+ if (lastHash) {
776
+ for (let i = 0;i < messagesForAPI.length; i++) {
777
+ const msg = messagesForAPI[i];
778
+ if (msg && hashMessage(msg) === lastHash) {
779
+ startIndex = i + 1;
780
+ break;
781
+ }
782
+ }
783
+ }
784
+ const newMessages = messagesForAPI.slice(startIndex).filter((m) => m.type === "user");
785
+ if (newMessages.length > 0) {
786
+ const { contextParts, systemReminders } = formatMessagesForContext(newMessages);
787
+ if (contextParts.length > 0) {
788
+ const fullContext = contextParts.join(`
789
+
790
+ ---
791
+
792
+ `);
793
+ const { content: truncatedContext, truncated } = truncateContent(fullContext);
794
+ span.setAttributes({
795
+ new_context: truncatedContext,
796
+ new_context_message_count: newMessages.length,
797
+ ...truncated && {
798
+ new_context_truncated: true,
799
+ new_context_original_length: fullContext.length
800
+ }
801
+ });
802
+ }
803
+ if (systemReminders.length > 0) {
804
+ const fullReminders = systemReminders.join(`
805
+
806
+ ---
807
+
808
+ `);
809
+ const { content: truncatedReminders, truncated: remindersTruncated } = truncateContent(fullReminders);
810
+ span.setAttributes({
811
+ system_reminders: truncatedReminders,
812
+ system_reminders_count: systemReminders.length,
813
+ ...remindersTruncated && {
814
+ system_reminders_truncated: true,
815
+ system_reminders_original_length: fullReminders.length
816
+ }
817
+ });
818
+ }
819
+ const lastMessage = messagesForAPI[messagesForAPI.length - 1];
820
+ if (lastMessage) {
821
+ lastReportedMessageHash.set(querySource, hashMessage(lastMessage));
822
+ }
823
+ }
824
+ }
825
+ }
826
+ function addBetaLLMResponseAttributes(endAttributes, metadata) {
827
+ if (!isBetaTracingEnabled() || !metadata) {
828
+ return;
829
+ }
830
+ if (metadata.modelOutput !== undefined) {
831
+ const { content: modelOutput, truncated: outputTruncated } = truncateContent(metadata.modelOutput);
832
+ endAttributes["response.model_output"] = modelOutput;
833
+ if (outputTruncated) {
834
+ endAttributes["response.model_output_truncated"] = true;
835
+ endAttributes["response.model_output_original_length"] = metadata.modelOutput.length;
836
+ }
837
+ }
838
+ if (process.env.USER_TYPE === "ant" && metadata.thinkingOutput !== undefined) {
839
+ const { content: thinkingOutput, truncated: thinkingTruncated } = truncateContent(metadata.thinkingOutput);
840
+ endAttributes["response.thinking_output"] = thinkingOutput;
841
+ if (thinkingTruncated) {
842
+ endAttributes["response.thinking_output_truncated"] = true;
843
+ endAttributes["response.thinking_output_original_length"] = metadata.thinkingOutput.length;
844
+ }
845
+ }
846
+ }
847
+ function addBetaToolInputAttributes(span, toolName, toolInput) {
848
+ if (!isBetaTracingEnabled()) {
849
+ return;
850
+ }
851
+ const { content: truncatedInput, truncated } = truncateContent(`[TOOL INPUT: ${toolName}]
852
+ ${toolInput}`);
853
+ span.setAttributes({
854
+ tool_input: truncatedInput,
855
+ ...truncated && {
856
+ tool_input_truncated: true,
857
+ tool_input_original_length: toolInput.length
858
+ }
859
+ });
860
+ }
861
+ function addBetaToolResultAttributes(endAttributes, toolName, toolResult) {
862
+ if (!isBetaTracingEnabled()) {
863
+ return;
864
+ }
865
+ const { content: truncatedResult, truncated } = truncateContent(`[TOOL RESULT: ${toolName}]
866
+ ${toolResult}`);
867
+ endAttributes["new_context"] = truncatedResult;
868
+ if (truncated) {
869
+ endAttributes["new_context_truncated"] = true;
870
+ endAttributes["new_context_original_length"] = toolResult.length;
871
+ }
872
+ }
873
+ var seenHashes, lastReportedMessageHash, MAX_CONTENT_SIZE, SYSTEM_REMINDER_REGEX;
874
+ var init_betaSessionTracing = __esm(() => {
875
+ init_state();
876
+ init_growthbook();
877
+ init_metadata();
878
+ init_envUtils();
879
+ init_slowOperations();
880
+ init_events();
881
+ seenHashes = new Set;
882
+ lastReportedMessageHash = new Map;
883
+ MAX_CONTENT_SIZE = 60 * 1024;
884
+ SYSTEM_REMINDER_REGEX = /^<system-reminder>\n?([\s\S]*?)\n?<\/system-reminder>$/;
885
+ });
886
+
887
+ // src/utils/telemetry/sessionTracing.ts
888
+ import { AsyncLocalStorage } from "async_hooks";
889
+ function getSpanId(span) {
890
+ return span.spanContext().spanId || "";
891
+ }
892
+ function ensureCleanupInterval() {
893
+ if (_cleanupIntervalStarted)
894
+ return;
895
+ _cleanupIntervalStarted = true;
896
+ const interval = setInterval(() => {
897
+ const cutoff = Date.now() - SPAN_TTL_MS;
898
+ for (const [spanId, weakRef] of activeSpans) {
899
+ const ctx = weakRef.deref();
900
+ if (ctx === undefined) {
901
+ activeSpans.delete(spanId);
902
+ strongSpans.delete(spanId);
903
+ } else if (ctx.startTime < cutoff) {
904
+ if (!ctx.ended)
905
+ ctx.span.end();
906
+ activeSpans.delete(spanId);
907
+ strongSpans.delete(spanId);
908
+ }
909
+ }
910
+ }, 60000);
911
+ if (typeof interval.unref === "function") {
912
+ interval.unref();
913
+ }
914
+ }
915
+ function isEnhancedTelemetryEnabled() {
916
+ if (false) {}
917
+ return false;
918
+ }
919
+ function isAnyTracingEnabled() {
920
+ return isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
921
+ }
922
+ function getTracer() {
923
+ return import_api.trace.getTracer("com.anthropic.claude_code.tracing", "1.0.0");
924
+ }
925
+ function createSpanAttributes(spanType, customAttributes = {}) {
926
+ const baseAttributes = getTelemetryAttributes();
927
+ const attributes = {
928
+ ...baseAttributes,
929
+ "span.type": spanType,
930
+ ...customAttributes
931
+ };
932
+ return attributes;
933
+ }
934
+ function startInteractionSpan(userPrompt) {
935
+ ensureCleanupInterval();
936
+ const perfettoSpanId = isPerfettoTracingEnabled() ? startInteractionPerfettoSpan(userPrompt) : undefined;
937
+ if (!isAnyTracingEnabled()) {
938
+ if (perfettoSpanId) {
939
+ const dummySpan = import_api.trace.getActiveSpan() || getTracer().startSpan("dummy");
940
+ const spanId2 = getSpanId(dummySpan);
941
+ const spanContextObj2 = {
942
+ span: dummySpan,
943
+ startTime: Date.now(),
944
+ attributes: {},
945
+ perfettoSpanId
946
+ };
947
+ activeSpans.set(spanId2, new WeakRef(spanContextObj2));
948
+ interactionContext.enterWith(spanContextObj2);
949
+ return dummySpan;
950
+ }
951
+ return import_api.trace.getActiveSpan() || getTracer().startSpan("dummy");
952
+ }
953
+ const tracer = getTracer();
954
+ const isUserPromptLoggingEnabled2 = isEnvTruthy(process.env.OTEL_LOG_USER_PROMPTS);
955
+ const promptToLog = isUserPromptLoggingEnabled2 ? userPrompt : "<REDACTED>";
956
+ interactionSequence++;
957
+ const attributes = createSpanAttributes("interaction", {
958
+ user_prompt: promptToLog,
959
+ user_prompt_length: userPrompt.length,
960
+ "interaction.sequence": interactionSequence
961
+ });
962
+ const span = tracer.startSpan("claude_code.interaction", {
963
+ attributes
964
+ });
965
+ addBetaInteractionAttributes(span, userPrompt);
966
+ const spanId = getSpanId(span);
967
+ const spanContextObj = {
968
+ span,
969
+ startTime: Date.now(),
970
+ attributes,
971
+ perfettoSpanId
972
+ };
973
+ activeSpans.set(spanId, new WeakRef(spanContextObj));
974
+ interactionContext.enterWith(spanContextObj);
975
+ return span;
976
+ }
977
+ function endInteractionSpan() {
978
+ const spanContext = interactionContext.getStore();
979
+ if (!spanContext) {
980
+ return;
981
+ }
982
+ if (spanContext.ended) {
983
+ return;
984
+ }
985
+ if (spanContext.perfettoSpanId) {
986
+ endInteractionPerfettoSpan(spanContext.perfettoSpanId);
987
+ }
988
+ if (!isAnyTracingEnabled()) {
989
+ spanContext.ended = true;
990
+ activeSpans.delete(getSpanId(spanContext.span));
991
+ interactionContext.enterWith(undefined);
992
+ return;
993
+ }
994
+ const duration = Date.now() - spanContext.startTime;
995
+ spanContext.span.setAttributes({
996
+ "interaction.duration_ms": duration
997
+ });
998
+ spanContext.span.end();
999
+ spanContext.ended = true;
1000
+ activeSpans.delete(getSpanId(spanContext.span));
1001
+ interactionContext.enterWith(undefined);
1002
+ }
1003
+ function startLLMRequestSpan(model, newContext, messagesForAPI, fastMode) {
1004
+ const perfettoSpanId = isPerfettoTracingEnabled() ? startLLMRequestPerfettoSpan({
1005
+ model,
1006
+ querySource: newContext?.querySource,
1007
+ messageId: undefined
1008
+ }) : undefined;
1009
+ if (!isAnyTracingEnabled()) {
1010
+ if (perfettoSpanId) {
1011
+ const dummySpan = import_api.trace.getActiveSpan() || getTracer().startSpan("dummy");
1012
+ const spanId2 = getSpanId(dummySpan);
1013
+ const spanContextObj2 = {
1014
+ span: dummySpan,
1015
+ startTime: Date.now(),
1016
+ attributes: { model },
1017
+ perfettoSpanId
1018
+ };
1019
+ activeSpans.set(spanId2, new WeakRef(spanContextObj2));
1020
+ strongSpans.set(spanId2, spanContextObj2);
1021
+ return dummySpan;
1022
+ }
1023
+ return import_api.trace.getActiveSpan() || getTracer().startSpan("dummy");
1024
+ }
1025
+ const tracer = getTracer();
1026
+ const parentSpanCtx = interactionContext.getStore();
1027
+ const attributes = createSpanAttributes("llm_request", {
1028
+ model,
1029
+ "llm_request.context": parentSpanCtx ? "interaction" : "standalone",
1030
+ speed: fastMode ? "fast" : "normal"
1031
+ });
1032
+ const ctx = parentSpanCtx ? import_api.trace.setSpan(import_api.context.active(), parentSpanCtx.span) : import_api.context.active();
1033
+ const span = tracer.startSpan("claude_code.llm_request", { attributes }, ctx);
1034
+ if (newContext?.querySource) {
1035
+ span.setAttribute("query_source", newContext.querySource);
1036
+ }
1037
+ addBetaLLMRequestAttributes(span, newContext, messagesForAPI);
1038
+ const spanId = getSpanId(span);
1039
+ const spanContextObj = {
1040
+ span,
1041
+ startTime: Date.now(),
1042
+ attributes,
1043
+ perfettoSpanId
1044
+ };
1045
+ activeSpans.set(spanId, new WeakRef(spanContextObj));
1046
+ strongSpans.set(spanId, spanContextObj);
1047
+ return span;
1048
+ }
1049
+ function endLLMRequestSpan(span, metadata) {
1050
+ let llmSpanContext;
1051
+ if (span) {
1052
+ const spanId2 = getSpanId(span);
1053
+ llmSpanContext = activeSpans.get(spanId2)?.deref();
1054
+ } else {
1055
+ llmSpanContext = Array.from(activeSpans.values()).findLast((r) => {
1056
+ const ctx = r.deref();
1057
+ return ctx?.attributes["span.type"] === "llm_request" || ctx?.attributes["model"];
1058
+ })?.deref();
1059
+ }
1060
+ if (!llmSpanContext) {
1061
+ return;
1062
+ }
1063
+ const duration = Date.now() - llmSpanContext.startTime;
1064
+ if (llmSpanContext.perfettoSpanId) {
1065
+ endLLMRequestPerfettoSpan(llmSpanContext.perfettoSpanId, {
1066
+ ttftMs: metadata?.ttftMs,
1067
+ ttltMs: duration,
1068
+ promptTokens: metadata?.inputTokens,
1069
+ outputTokens: metadata?.outputTokens,
1070
+ cacheReadTokens: metadata?.cacheReadTokens,
1071
+ cacheCreationTokens: metadata?.cacheCreationTokens,
1072
+ success: metadata?.success,
1073
+ error: metadata?.error,
1074
+ requestSetupMs: metadata?.requestSetupMs,
1075
+ attemptStartTimes: metadata?.attemptStartTimes
1076
+ });
1077
+ }
1078
+ if (!isAnyTracingEnabled()) {
1079
+ const spanId2 = getSpanId(llmSpanContext.span);
1080
+ activeSpans.delete(spanId2);
1081
+ strongSpans.delete(spanId2);
1082
+ return;
1083
+ }
1084
+ const endAttributes = {
1085
+ duration_ms: duration
1086
+ };
1087
+ if (metadata) {
1088
+ if (metadata.inputTokens !== undefined)
1089
+ endAttributes["input_tokens"] = metadata.inputTokens;
1090
+ if (metadata.outputTokens !== undefined)
1091
+ endAttributes["output_tokens"] = metadata.outputTokens;
1092
+ if (metadata.cacheReadTokens !== undefined)
1093
+ endAttributes["cache_read_tokens"] = metadata.cacheReadTokens;
1094
+ if (metadata.cacheCreationTokens !== undefined)
1095
+ endAttributes["cache_creation_tokens"] = metadata.cacheCreationTokens;
1096
+ if (metadata.success !== undefined)
1097
+ endAttributes["success"] = metadata.success;
1098
+ if (metadata.statusCode !== undefined)
1099
+ endAttributes["status_code"] = metadata.statusCode;
1100
+ if (metadata.error !== undefined)
1101
+ endAttributes["error"] = metadata.error;
1102
+ if (metadata.attempt !== undefined)
1103
+ endAttributes["attempt"] = metadata.attempt;
1104
+ if (metadata.hasToolCall !== undefined)
1105
+ endAttributes["response.has_tool_call"] = metadata.hasToolCall;
1106
+ if (metadata.ttftMs !== undefined)
1107
+ endAttributes["ttft_ms"] = metadata.ttftMs;
1108
+ addBetaLLMResponseAttributes(endAttributes, metadata);
1109
+ }
1110
+ llmSpanContext.span.setAttributes(endAttributes);
1111
+ llmSpanContext.span.end();
1112
+ const spanId = getSpanId(llmSpanContext.span);
1113
+ activeSpans.delete(spanId);
1114
+ strongSpans.delete(spanId);
1115
+ }
1116
+ function startToolSpan(toolName, toolAttributes, toolInput) {
1117
+ const perfettoSpanId = isPerfettoTracingEnabled() ? startToolPerfettoSpan(toolName, toolAttributes) : undefined;
1118
+ if (!isAnyTracingEnabled()) {
1119
+ if (perfettoSpanId) {
1120
+ const dummySpan = import_api.trace.getActiveSpan() || getTracer().startSpan("dummy");
1121
+ const spanId2 = getSpanId(dummySpan);
1122
+ const spanContextObj2 = {
1123
+ span: dummySpan,
1124
+ startTime: Date.now(),
1125
+ attributes: { "span.type": "tool", tool_name: toolName },
1126
+ perfettoSpanId
1127
+ };
1128
+ activeSpans.set(spanId2, new WeakRef(spanContextObj2));
1129
+ toolContext.enterWith(spanContextObj2);
1130
+ return dummySpan;
1131
+ }
1132
+ return import_api.trace.getActiveSpan() || getTracer().startSpan("dummy");
1133
+ }
1134
+ const tracer = getTracer();
1135
+ const parentSpanCtx = interactionContext.getStore();
1136
+ const attributes = createSpanAttributes("tool", {
1137
+ tool_name: toolName,
1138
+ ...toolAttributes
1139
+ });
1140
+ const ctx = parentSpanCtx ? import_api.trace.setSpan(import_api.context.active(), parentSpanCtx.span) : import_api.context.active();
1141
+ const span = tracer.startSpan("claude_code.tool", { attributes }, ctx);
1142
+ if (toolInput) {
1143
+ addBetaToolInputAttributes(span, toolName, toolInput);
1144
+ }
1145
+ const spanId = getSpanId(span);
1146
+ const spanContextObj = {
1147
+ span,
1148
+ startTime: Date.now(),
1149
+ attributes,
1150
+ perfettoSpanId
1151
+ };
1152
+ activeSpans.set(spanId, new WeakRef(spanContextObj));
1153
+ toolContext.enterWith(spanContextObj);
1154
+ return span;
1155
+ }
1156
+ function startToolBlockedOnUserSpan() {
1157
+ const perfettoSpanId = isPerfettoTracingEnabled() ? startUserInputPerfettoSpan("tool_permission") : undefined;
1158
+ if (!isAnyTracingEnabled()) {
1159
+ if (perfettoSpanId) {
1160
+ const dummySpan = import_api.trace.getActiveSpan() || getTracer().startSpan("dummy");
1161
+ const spanId2 = getSpanId(dummySpan);
1162
+ const spanContextObj2 = {
1163
+ span: dummySpan,
1164
+ startTime: Date.now(),
1165
+ attributes: { "span.type": "tool.blocked_on_user" },
1166
+ perfettoSpanId
1167
+ };
1168
+ activeSpans.set(spanId2, new WeakRef(spanContextObj2));
1169
+ strongSpans.set(spanId2, spanContextObj2);
1170
+ return dummySpan;
1171
+ }
1172
+ return import_api.trace.getActiveSpan() || getTracer().startSpan("dummy");
1173
+ }
1174
+ const tracer = getTracer();
1175
+ const parentSpanCtx = toolContext.getStore();
1176
+ const attributes = createSpanAttributes("tool.blocked_on_user");
1177
+ const ctx = parentSpanCtx ? import_api.trace.setSpan(import_api.context.active(), parentSpanCtx.span) : import_api.context.active();
1178
+ const span = tracer.startSpan("claude_code.tool.blocked_on_user", { attributes }, ctx);
1179
+ const spanId = getSpanId(span);
1180
+ const spanContextObj = {
1181
+ span,
1182
+ startTime: Date.now(),
1183
+ attributes,
1184
+ perfettoSpanId
1185
+ };
1186
+ activeSpans.set(spanId, new WeakRef(spanContextObj));
1187
+ strongSpans.set(spanId, spanContextObj);
1188
+ return span;
1189
+ }
1190
+ function endToolBlockedOnUserSpan(decision, source) {
1191
+ const blockedSpanContext = Array.from(activeSpans.values()).findLast((r) => r.deref()?.attributes["span.type"] === "tool.blocked_on_user")?.deref();
1192
+ if (!blockedSpanContext) {
1193
+ return;
1194
+ }
1195
+ if (blockedSpanContext.perfettoSpanId) {
1196
+ endUserInputPerfettoSpan(blockedSpanContext.perfettoSpanId, {
1197
+ decision,
1198
+ source
1199
+ });
1200
+ }
1201
+ if (!isAnyTracingEnabled()) {
1202
+ const spanId2 = getSpanId(blockedSpanContext.span);
1203
+ activeSpans.delete(spanId2);
1204
+ strongSpans.delete(spanId2);
1205
+ return;
1206
+ }
1207
+ const duration = Date.now() - blockedSpanContext.startTime;
1208
+ const attributes = {
1209
+ duration_ms: duration
1210
+ };
1211
+ if (decision) {
1212
+ attributes["decision"] = decision;
1213
+ }
1214
+ if (source) {
1215
+ attributes["source"] = source;
1216
+ }
1217
+ blockedSpanContext.span.setAttributes(attributes);
1218
+ blockedSpanContext.span.end();
1219
+ const spanId = getSpanId(blockedSpanContext.span);
1220
+ activeSpans.delete(spanId);
1221
+ strongSpans.delete(spanId);
1222
+ }
1223
+ function startToolExecutionSpan() {
1224
+ if (!isAnyTracingEnabled()) {
1225
+ return import_api.trace.getActiveSpan() || getTracer().startSpan("dummy");
1226
+ }
1227
+ const tracer = getTracer();
1228
+ const parentSpanCtx = toolContext.getStore();
1229
+ const attributes = createSpanAttributes("tool.execution");
1230
+ const ctx = parentSpanCtx ? import_api.trace.setSpan(import_api.context.active(), parentSpanCtx.span) : import_api.context.active();
1231
+ const span = tracer.startSpan("claude_code.tool.execution", { attributes }, ctx);
1232
+ const spanId = getSpanId(span);
1233
+ const spanContextObj = {
1234
+ span,
1235
+ startTime: Date.now(),
1236
+ attributes
1237
+ };
1238
+ activeSpans.set(spanId, new WeakRef(spanContextObj));
1239
+ strongSpans.set(spanId, spanContextObj);
1240
+ return span;
1241
+ }
1242
+ function endToolExecutionSpan(metadata) {
1243
+ if (!isAnyTracingEnabled()) {
1244
+ return;
1245
+ }
1246
+ const executionSpanContext = Array.from(activeSpans.values()).findLast((r) => r.deref()?.attributes["span.type"] === "tool.execution")?.deref();
1247
+ if (!executionSpanContext) {
1248
+ return;
1249
+ }
1250
+ const duration = Date.now() - executionSpanContext.startTime;
1251
+ const attributes = {
1252
+ duration_ms: duration
1253
+ };
1254
+ if (metadata) {
1255
+ if (metadata.success !== undefined)
1256
+ attributes["success"] = metadata.success;
1257
+ if (metadata.error !== undefined)
1258
+ attributes["error"] = metadata.error;
1259
+ }
1260
+ executionSpanContext.span.setAttributes(attributes);
1261
+ executionSpanContext.span.end();
1262
+ const spanId = getSpanId(executionSpanContext.span);
1263
+ activeSpans.delete(spanId);
1264
+ strongSpans.delete(spanId);
1265
+ }
1266
+ function endToolSpan(toolResult, resultTokens) {
1267
+ const toolSpanContext = toolContext.getStore();
1268
+ if (!toolSpanContext) {
1269
+ return;
1270
+ }
1271
+ if (toolSpanContext.perfettoSpanId) {
1272
+ endToolPerfettoSpan(toolSpanContext.perfettoSpanId, {
1273
+ success: true,
1274
+ resultTokens
1275
+ });
1276
+ }
1277
+ if (!isAnyTracingEnabled()) {
1278
+ const spanId2 = getSpanId(toolSpanContext.span);
1279
+ activeSpans.delete(spanId2);
1280
+ toolContext.enterWith(undefined);
1281
+ return;
1282
+ }
1283
+ const duration = Date.now() - toolSpanContext.startTime;
1284
+ const endAttributes = {
1285
+ duration_ms: duration
1286
+ };
1287
+ if (toolResult) {
1288
+ const toolName = toolSpanContext.attributes["tool_name"] || "unknown";
1289
+ addBetaToolResultAttributes(endAttributes, toolName, toolResult);
1290
+ }
1291
+ if (resultTokens !== undefined) {
1292
+ endAttributes["result_tokens"] = resultTokens;
1293
+ }
1294
+ toolSpanContext.span.setAttributes(endAttributes);
1295
+ toolSpanContext.span.end();
1296
+ const spanId = getSpanId(toolSpanContext.span);
1297
+ activeSpans.delete(spanId);
1298
+ toolContext.enterWith(undefined);
1299
+ }
1300
+ function isToolContentLoggingEnabled() {
1301
+ return isEnvTruthy(process.env.OTEL_LOG_TOOL_CONTENT);
1302
+ }
1303
+ function addToolContentEvent(eventName, attributes) {
1304
+ if (!isAnyTracingEnabled() || !isToolContentLoggingEnabled()) {
1305
+ return;
1306
+ }
1307
+ const currentSpanCtx = toolContext.getStore();
1308
+ if (!currentSpanCtx) {
1309
+ return;
1310
+ }
1311
+ const processedAttributes = {};
1312
+ for (const [key, value] of Object.entries(attributes)) {
1313
+ if (typeof value === "string") {
1314
+ const { content, truncated } = truncateContent(value);
1315
+ processedAttributes[key] = content;
1316
+ if (truncated) {
1317
+ processedAttributes[`${key}_truncated`] = true;
1318
+ processedAttributes[`${key}_original_length`] = value.length;
1319
+ }
1320
+ } else {
1321
+ processedAttributes[key] = value;
1322
+ }
1323
+ }
1324
+ currentSpanCtx.span.addEvent(eventName, processedAttributes);
1325
+ }
1326
+ function startHookSpan(hookEvent, hookName, numHooks, hookDefinitions) {
1327
+ if (!isBetaTracingEnabled()) {
1328
+ return import_api.trace.getActiveSpan() || getTracer().startSpan("dummy");
1329
+ }
1330
+ const tracer = getTracer();
1331
+ const parentSpanCtx = toolContext.getStore() ?? interactionContext.getStore();
1332
+ const attributes = createSpanAttributes("hook", {
1333
+ hook_event: hookEvent,
1334
+ hook_name: hookName,
1335
+ num_hooks: numHooks,
1336
+ hook_definitions: hookDefinitions
1337
+ });
1338
+ const ctx = parentSpanCtx ? import_api.trace.setSpan(import_api.context.active(), parentSpanCtx.span) : import_api.context.active();
1339
+ const span = tracer.startSpan("claude_code.hook", { attributes }, ctx);
1340
+ const spanId = getSpanId(span);
1341
+ const spanContextObj = {
1342
+ span,
1343
+ startTime: Date.now(),
1344
+ attributes
1345
+ };
1346
+ activeSpans.set(spanId, new WeakRef(spanContextObj));
1347
+ strongSpans.set(spanId, spanContextObj);
1348
+ return span;
1349
+ }
1350
+ function endHookSpan(span, metadata) {
1351
+ if (!isBetaTracingEnabled()) {
1352
+ return;
1353
+ }
1354
+ const spanId = getSpanId(span);
1355
+ const spanContext = activeSpans.get(spanId)?.deref();
1356
+ if (!spanContext) {
1357
+ return;
1358
+ }
1359
+ const duration = Date.now() - spanContext.startTime;
1360
+ const endAttributes = {
1361
+ duration_ms: duration
1362
+ };
1363
+ if (metadata) {
1364
+ if (metadata.numSuccess !== undefined)
1365
+ endAttributes["num_success"] = metadata.numSuccess;
1366
+ if (metadata.numBlocking !== undefined)
1367
+ endAttributes["num_blocking"] = metadata.numBlocking;
1368
+ if (metadata.numNonBlockingError !== undefined)
1369
+ endAttributes["num_non_blocking_error"] = metadata.numNonBlockingError;
1370
+ if (metadata.numCancelled !== undefined)
1371
+ endAttributes["num_cancelled"] = metadata.numCancelled;
1372
+ }
1373
+ spanContext.span.setAttributes(endAttributes);
1374
+ spanContext.span.end();
1375
+ activeSpans.delete(spanId);
1376
+ strongSpans.delete(spanId);
1377
+ }
1378
+ var import_api, interactionContext, toolContext, activeSpans, strongSpans, interactionSequence = 0, _cleanupIntervalStarted = false, SPAN_TTL_MS;
1379
+ var init_sessionTracing = __esm(() => {
1380
+ init_growthbook();
1381
+ init_envUtils();
1382
+ init_telemetryAttributes();
1383
+ init_betaSessionTracing();
1384
+ init_perfettoTracing();
1385
+ import_api = __toESM(require_src(), 1);
1386
+ interactionContext = new AsyncLocalStorage;
1387
+ toolContext = new AsyncLocalStorage;
1388
+ activeSpans = new Map;
1389
+ strongSpans = new Map;
1390
+ SPAN_TTL_MS = 30 * 60 * 1000;
1391
+ });
1392
+
1393
+ export { getTelemetryAttributes, init_telemetryAttributes, redactIfDisabled, logOTelEvent, init_events, initializePerfettoTracing, isPerfettoTracingEnabled, registerAgent, unregisterAgent, init_perfettoTracing, clearBetaTracingState, isBetaTracingEnabled, init_betaSessionTracing, isEnhancedTelemetryEnabled, startInteractionSpan, endInteractionSpan, startLLMRequestSpan, endLLMRequestSpan, startToolSpan, startToolBlockedOnUserSpan, endToolBlockedOnUserSpan, startToolExecutionSpan, endToolExecutionSpan, endToolSpan, addToolContentEvent, startHookSpan, endHookSpan, init_sessionTracing };