langwatch 0.20.0 → 0.22.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 (534) hide show
  1. package/dist/{add-2I554R6L.mjs → add-7QFHK67E.mjs} +10 -7
  2. package/dist/{add-2I554R6L.mjs.map → add-7QFHK67E.mjs.map} +1 -1
  3. package/dist/{add-FJ2SMVQE.js → add-EJSXUSD6.js} +13 -10
  4. package/dist/add-EJSXUSD6.js.map +1 -0
  5. package/dist/assign-5UEB6AJU.js +50 -0
  6. package/dist/assign-5UEB6AJU.js.map +1 -0
  7. package/dist/assign-JCCQ5D7I.mjs +50 -0
  8. package/dist/assign-JCCQ5D7I.mjs.map +1 -0
  9. package/dist/chunk-2BJPLPLU.js +33 -0
  10. package/dist/chunk-2BJPLPLU.js.map +1 -0
  11. package/dist/chunk-2OHGLTXZ.mjs +51 -0
  12. package/dist/chunk-2OHGLTXZ.mjs.map +1 -0
  13. package/dist/chunk-2VVANTLB.js +68 -0
  14. package/dist/chunk-2VVANTLB.js.map +1 -0
  15. package/dist/{chunk-L5Z7F7MG.mjs → chunk-43STSE3B.mjs} +2 -2
  16. package/dist/chunk-47F7UDHN.js +76 -0
  17. package/dist/chunk-47F7UDHN.js.map +1 -0
  18. package/dist/chunk-5PMWRY5J.js +80 -0
  19. package/dist/chunk-5PMWRY5J.js.map +1 -0
  20. package/dist/chunk-7FD7BEJP.mjs +63 -0
  21. package/dist/chunk-7FD7BEJP.mjs.map +1 -0
  22. package/dist/{chunk-PIF2RJWZ.js → chunk-AK4YCKWK.js} +107 -108
  23. package/dist/chunk-AK4YCKWK.js.map +1 -0
  24. package/dist/chunk-AMPLL3EP.js +70 -0
  25. package/dist/chunk-AMPLL3EP.js.map +1 -0
  26. package/dist/chunk-CGFG5FCC.js +674 -0
  27. package/dist/chunk-CGFG5FCC.js.map +1 -0
  28. package/dist/chunk-CLYXJJ6C.js +66 -0
  29. package/dist/chunk-CLYXJJ6C.js.map +1 -0
  30. package/dist/{chunk-WSESRS6L.mjs → chunk-COKOLKOR.mjs} +8 -6
  31. package/dist/{chunk-WSESRS6L.mjs.map → chunk-COKOLKOR.mjs.map} +1 -1
  32. package/dist/chunk-COMOCQA6.mjs +13 -0
  33. package/dist/chunk-COMOCQA6.mjs.map +1 -0
  34. package/dist/chunk-CYRJSLKD.js +68 -0
  35. package/dist/chunk-CYRJSLKD.js.map +1 -0
  36. package/dist/{chunk-BJUXJHMQ.js → chunk-D2FHOR76.js} +2 -2
  37. package/dist/{chunk-BJUXJHMQ.js.map → chunk-D2FHOR76.js.map} +1 -1
  38. package/dist/{chunk-5LYWRKDF.js → chunk-DB6OJGP4.js} +2 -60
  39. package/dist/chunk-DB6OJGP4.js.map +1 -0
  40. package/dist/chunk-DTEKJ3UD.mjs +66 -0
  41. package/dist/chunk-DTEKJ3UD.mjs.map +1 -0
  42. package/dist/{chunk-NW32UPEI.js → chunk-DUG35J5N.js} +17 -17
  43. package/dist/{chunk-NW32UPEI.js.map → chunk-DUG35J5N.js.map} +1 -1
  44. package/dist/chunk-DWHR6QJK.mjs +46 -0
  45. package/dist/chunk-DWHR6QJK.mjs.map +1 -0
  46. package/dist/{chunk-A7CF6ZGH.mjs → chunk-ESGWN42J.mjs} +2 -2
  47. package/dist/{chunk-FMYG6IOZ.mjs → chunk-FARZEN6T.mjs} +2 -2
  48. package/dist/chunk-FG3JQBJB.mjs +68 -0
  49. package/dist/chunk-FG3JQBJB.mjs.map +1 -0
  50. package/dist/chunk-FKIH4XCX.js +63 -0
  51. package/dist/chunk-FKIH4XCX.js.map +1 -0
  52. package/dist/chunk-GLCAOVJA.js +100 -0
  53. package/dist/chunk-GLCAOVJA.js.map +1 -0
  54. package/dist/{chunk-VCC7F6B7.js → chunk-H6F5OGSL.js} +11 -11
  55. package/dist/{chunk-VCC7F6B7.js.map → chunk-H6F5OGSL.js.map} +1 -1
  56. package/dist/chunk-HHRXMHVH.js +54 -0
  57. package/dist/chunk-HHRXMHVH.js.map +1 -0
  58. package/dist/{chunk-ZLCERT3X.js → chunk-HPQFHP6K.js} +12 -10
  59. package/dist/chunk-HPQFHP6K.js.map +1 -0
  60. package/dist/chunk-I2LDJPTG.mjs +100 -0
  61. package/dist/chunk-I2LDJPTG.mjs.map +1 -0
  62. package/dist/chunk-ILLEMTW3.mjs +674 -0
  63. package/dist/chunk-ILLEMTW3.mjs.map +1 -0
  64. package/dist/{chunk-OLI6GF46.js → chunk-JWF5KHWM.js} +16 -14
  65. package/dist/chunk-JWF5KHWM.js.map +1 -0
  66. package/dist/{chunk-CWXQ53NE.mjs → chunk-JYR4TXSB.mjs} +10 -8
  67. package/dist/chunk-JYR4TXSB.mjs.map +1 -0
  68. package/dist/chunk-KH64V3CL.mjs +54 -0
  69. package/dist/chunk-KH64V3CL.mjs.map +1 -0
  70. package/dist/chunk-KJSFJ5Z3.js +51 -0
  71. package/dist/chunk-KJSFJ5Z3.js.map +1 -0
  72. package/dist/{chunk-WASZSPD7.mjs → chunk-L3IOXWDG.mjs} +100 -101
  73. package/dist/chunk-L3IOXWDG.mjs.map +1 -0
  74. package/dist/{chunk-SSONRNFB.mjs → chunk-LN33ZL4Z.mjs} +2 -2
  75. package/dist/{chunk-SSONRNFB.mjs.map → chunk-LN33ZL4Z.mjs.map} +1 -1
  76. package/dist/{chunk-5M66X6SZ.mjs → chunk-LULJYN3P.mjs} +3 -3
  77. package/dist/chunk-M3WJZUOE.js +13 -0
  78. package/dist/chunk-M3WJZUOE.js.map +1 -0
  79. package/dist/{chunk-JVIQJFUE.mjs → chunk-M4IBRWUC.mjs} +2 -60
  80. package/dist/chunk-M4IBRWUC.mjs.map +1 -0
  81. package/dist/chunk-NIW2SFZZ.mjs +85 -0
  82. package/dist/chunk-NIW2SFZZ.mjs.map +1 -0
  83. package/dist/chunk-NMACMKQN.mjs +68 -0
  84. package/dist/chunk-NMACMKQN.mjs.map +1 -0
  85. package/dist/chunk-OAAMDWSK.js +65 -0
  86. package/dist/chunk-OAAMDWSK.js.map +1 -0
  87. package/dist/chunk-PO6XRHYW.mjs +80 -0
  88. package/dist/chunk-PO6XRHYW.mjs.map +1 -0
  89. package/dist/chunk-QH3WUSKF.mjs +33 -0
  90. package/dist/chunk-QH3WUSKF.mjs.map +1 -0
  91. package/dist/chunk-RKJDDUGQ.mjs +65 -0
  92. package/dist/chunk-RKJDDUGQ.mjs.map +1 -0
  93. package/dist/chunk-TCO73AV5.mjs +53 -0
  94. package/dist/chunk-TCO73AV5.mjs.map +1 -0
  95. package/dist/chunk-TQYUM3WH.mjs +70 -0
  96. package/dist/chunk-TQYUM3WH.mjs.map +1 -0
  97. package/dist/chunk-TV6ZXLE5.mjs +76 -0
  98. package/dist/chunk-TV6ZXLE5.mjs.map +1 -0
  99. package/dist/chunk-VMDYRBQ7.js +85 -0
  100. package/dist/chunk-VMDYRBQ7.js.map +1 -0
  101. package/dist/chunk-WE2PHCFS.js +53 -0
  102. package/dist/chunk-WE2PHCFS.js.map +1 -0
  103. package/dist/chunk-WLMXMXHE.js +54 -0
  104. package/dist/chunk-WLMXMXHE.js.map +1 -0
  105. package/dist/chunk-X7QBE6AA.js +46 -0
  106. package/dist/chunk-X7QBE6AA.js.map +1 -0
  107. package/dist/chunk-YTR56IZO.mjs +54 -0
  108. package/dist/chunk-YTR56IZO.mjs.map +1 -0
  109. package/dist/{chunk-QLBNSGWC.js → chunk-Z6MQQXMS.js} +4 -4
  110. package/dist/{chunk-QLBNSGWC.js.map → chunk-Z6MQQXMS.js.map} +1 -1
  111. package/dist/{chunk-QNT5P6VV.js → chunk-ZZL6VZZU.js} +2 -2
  112. package/dist/{chunk-QNT5P6VV.js.map → chunk-ZZL6VZZU.js.map} +1 -1
  113. package/dist/cli/index.js +467 -20
  114. package/dist/cli/index.js.map +1 -1
  115. package/dist/cli/index.mjs +467 -20
  116. package/dist/cli/index.mjs.map +1 -1
  117. package/dist/create-45FMHT6B.mjs +78 -0
  118. package/dist/create-45FMHT6B.mjs.map +1 -0
  119. package/dist/create-4OA73B7I.mjs +44 -0
  120. package/dist/create-4OA73B7I.mjs.map +1 -0
  121. package/dist/create-4U5BPFCT.mjs +51 -0
  122. package/dist/create-4U5BPFCT.mjs.map +1 -0
  123. package/dist/create-ARJEJDYU.mjs +18 -0
  124. package/dist/create-CQ7W2OAA.js +78 -0
  125. package/dist/create-CQ7W2OAA.js.map +1 -0
  126. package/dist/create-FI6HBFTB.mjs +63 -0
  127. package/dist/create-FI6HBFTB.mjs.map +1 -0
  128. package/dist/create-FYLUSZTP.js +38 -0
  129. package/dist/create-FYLUSZTP.js.map +1 -0
  130. package/dist/create-GGYYU5KM.mjs +51 -0
  131. package/dist/create-GGYYU5KM.mjs.map +1 -0
  132. package/dist/create-K5LFAS4E.mjs +61 -0
  133. package/dist/create-K5LFAS4E.mjs.map +1 -0
  134. package/dist/create-KAPF2AOL.js +44 -0
  135. package/dist/create-KAPF2AOL.js.map +1 -0
  136. package/dist/create-LWG7ZHEW.mjs +71 -0
  137. package/dist/create-LWG7ZHEW.mjs.map +1 -0
  138. package/dist/create-MXYMAFMF.js +71 -0
  139. package/dist/create-MXYMAFMF.js.map +1 -0
  140. package/dist/create-NFYHBFF5.mjs +50 -0
  141. package/dist/create-NFYHBFF5.mjs.map +1 -0
  142. package/dist/create-OSAXTSUC.js +51 -0
  143. package/dist/create-OSAXTSUC.js.map +1 -0
  144. package/dist/create-RPHO5TZX.js +51 -0
  145. package/dist/create-RPHO5TZX.js.map +1 -0
  146. package/dist/create-RRI5ZTMI.mjs +51 -0
  147. package/dist/create-RRI5ZTMI.mjs.map +1 -0
  148. package/dist/create-UKLLNRXV.js +61 -0
  149. package/dist/create-UKLLNRXV.js.map +1 -0
  150. package/dist/create-UZ5NDYPV.js +88 -0
  151. package/dist/create-UZ5NDYPV.js.map +1 -0
  152. package/dist/create-WV2NQDV5.js +63 -0
  153. package/dist/create-WV2NQDV5.js.map +1 -0
  154. package/dist/create-XGD3GULQ.js +50 -0
  155. package/dist/create-XGD3GULQ.js.map +1 -0
  156. package/dist/create-XZXVGMKU.js +51 -0
  157. package/dist/create-XZXVGMKU.js.map +1 -0
  158. package/dist/create-Z2XFL2HX.js +18 -0
  159. package/dist/create-Z2XFL2HX.js.map +1 -0
  160. package/dist/create-Z7DUMMQ4.mjs +38 -0
  161. package/dist/create-Z7DUMMQ4.mjs.map +1 -0
  162. package/dist/create-ZU4L3XOF.mjs +88 -0
  163. package/dist/create-ZU4L3XOF.mjs.map +1 -0
  164. package/dist/delete-22LDMLNG.mjs +61 -0
  165. package/dist/delete-22LDMLNG.mjs.map +1 -0
  166. package/dist/delete-2S67GS6A.mjs +40 -0
  167. package/dist/delete-2S67GS6A.mjs.map +1 -0
  168. package/dist/delete-3WCCA5O2.mjs +44 -0
  169. package/dist/delete-3WCCA5O2.mjs.map +1 -0
  170. package/dist/delete-4QNGDUH6.js +44 -0
  171. package/dist/delete-4QNGDUH6.js.map +1 -0
  172. package/dist/delete-555RUBQA.js +55 -0
  173. package/dist/delete-555RUBQA.js.map +1 -0
  174. package/dist/delete-5NINT2KV.mjs +42 -0
  175. package/dist/delete-5NINT2KV.mjs.map +1 -0
  176. package/dist/delete-5VDH4Q3Z.js +44 -0
  177. package/dist/delete-5VDH4Q3Z.js.map +1 -0
  178. package/dist/delete-6JPJPG4B.js +38 -0
  179. package/dist/delete-6JPJPG4B.js.map +1 -0
  180. package/dist/delete-6ZD3ARMB.js +61 -0
  181. package/dist/delete-6ZD3ARMB.js.map +1 -0
  182. package/dist/delete-AOSVEVNL.mjs +44 -0
  183. package/dist/delete-AOSVEVNL.mjs.map +1 -0
  184. package/dist/delete-BLTSYYZQ.js +40 -0
  185. package/dist/delete-BLTSYYZQ.js.map +1 -0
  186. package/dist/delete-CTE3RNKB.mjs +42 -0
  187. package/dist/delete-CTE3RNKB.mjs.map +1 -0
  188. package/dist/delete-HEF4DLSV.mjs +38 -0
  189. package/dist/delete-HEF4DLSV.mjs.map +1 -0
  190. package/dist/delete-I36NLS2V.mjs +65 -0
  191. package/dist/delete-I36NLS2V.mjs.map +1 -0
  192. package/dist/delete-J2P2Y2BW.mjs +63 -0
  193. package/dist/delete-J2P2Y2BW.mjs.map +1 -0
  194. package/dist/delete-KIXZ73DF.mjs +38 -0
  195. package/dist/delete-KIXZ73DF.mjs.map +1 -0
  196. package/dist/delete-L3SU34X6.mjs +44 -0
  197. package/dist/delete-L3SU34X6.mjs.map +1 -0
  198. package/dist/delete-N6OZW65U.js +44 -0
  199. package/dist/delete-N6OZW65U.js.map +1 -0
  200. package/dist/delete-PPEXA2V4.js +42 -0
  201. package/dist/delete-PPEXA2V4.js.map +1 -0
  202. package/dist/delete-PXGB35PF.js +65 -0
  203. package/dist/delete-PXGB35PF.js.map +1 -0
  204. package/dist/delete-QVE52G3Q.mjs +42 -0
  205. package/dist/delete-QVE52G3Q.mjs.map +1 -0
  206. package/dist/delete-R5TSAZOU.js +42 -0
  207. package/dist/delete-R5TSAZOU.js.map +1 -0
  208. package/dist/delete-RIHVCQ6G.mjs +55 -0
  209. package/dist/delete-RIHVCQ6G.mjs.map +1 -0
  210. package/dist/delete-UWPOVLSO.js +38 -0
  211. package/dist/delete-UWPOVLSO.js.map +1 -0
  212. package/dist/delete-XKF7KO4Y.js +63 -0
  213. package/dist/delete-XKF7KO4Y.js.map +1 -0
  214. package/dist/delete-ZY2UCN3W.js +42 -0
  215. package/dist/delete-ZY2UCN3W.js.map +1 -0
  216. package/dist/download-2Q5T4WW2.js +96 -0
  217. package/dist/download-2Q5T4WW2.js.map +1 -0
  218. package/dist/download-7RBJ3GZM.mjs +96 -0
  219. package/dist/download-7RBJ3GZM.mjs.map +1 -0
  220. package/dist/duplicate-7N6B5PJD.mjs +48 -0
  221. package/dist/duplicate-7N6B5PJD.mjs.map +1 -0
  222. package/dist/duplicate-HZGUFROD.js +48 -0
  223. package/dist/duplicate-HZGUFROD.js.map +1 -0
  224. package/dist/export-PP5LG6Q7.js +91 -0
  225. package/dist/export-PP5LG6Q7.js.map +1 -0
  226. package/dist/export-TGKA6WA4.mjs +91 -0
  227. package/dist/export-TGKA6WA4.mjs.map +1 -0
  228. package/dist/get-2AXSP6AP.js +62 -0
  229. package/dist/get-2AXSP6AP.js.map +1 -0
  230. package/dist/get-6UQYEENU.mjs +55 -0
  231. package/dist/get-6UQYEENU.mjs.map +1 -0
  232. package/dist/get-73K7EOMU.mjs +53 -0
  233. package/dist/get-73K7EOMU.mjs.map +1 -0
  234. package/dist/get-7JYKMJXV.mjs +85 -0
  235. package/dist/get-7JYKMJXV.mjs.map +1 -0
  236. package/dist/get-7V7OBWY5.js +86 -0
  237. package/dist/get-7V7OBWY5.js.map +1 -0
  238. package/dist/get-CBNUMPUN.mjs +64 -0
  239. package/dist/get-CBNUMPUN.mjs.map +1 -0
  240. package/dist/get-E2RIDN65.mjs +70 -0
  241. package/dist/get-E2RIDN65.mjs.map +1 -0
  242. package/dist/get-EN3CQXA7.js +51 -0
  243. package/dist/get-EN3CQXA7.js.map +1 -0
  244. package/dist/get-GHUHFWC3.js +58 -0
  245. package/dist/get-GHUHFWC3.js.map +1 -0
  246. package/dist/get-GQTPK2MW.mjs +51 -0
  247. package/dist/get-GQTPK2MW.mjs.map +1 -0
  248. package/dist/get-I2CQCKFW.mjs +62 -0
  249. package/dist/get-I2CQCKFW.mjs.map +1 -0
  250. package/dist/get-IDYGZX5O.mjs +51 -0
  251. package/dist/get-IDYGZX5O.mjs.map +1 -0
  252. package/dist/get-JAWJ5RIB.mjs +66 -0
  253. package/dist/get-JAWJ5RIB.mjs.map +1 -0
  254. package/dist/get-JYN765FP.js +53 -0
  255. package/dist/get-JYN765FP.js.map +1 -0
  256. package/dist/get-MHGIJVZ5.js +51 -0
  257. package/dist/get-MHGIJVZ5.js.map +1 -0
  258. package/dist/get-NIA7XUS2.mjs +56 -0
  259. package/dist/get-NIA7XUS2.mjs.map +1 -0
  260. package/dist/get-PM5HD5BJ.js +64 -0
  261. package/dist/get-PM5HD5BJ.js.map +1 -0
  262. package/dist/get-PR65PTQ5.mjs +86 -0
  263. package/dist/get-PR65PTQ5.mjs.map +1 -0
  264. package/dist/get-PYWLY7QQ.mjs +71 -0
  265. package/dist/get-PYWLY7QQ.mjs.map +1 -0
  266. package/dist/get-QMCMYTDV.mjs +58 -0
  267. package/dist/get-QMCMYTDV.mjs.map +1 -0
  268. package/dist/get-QNYINIDO.mjs +95 -0
  269. package/dist/get-QNYINIDO.mjs.map +1 -0
  270. package/dist/get-S7MFACWM.js +70 -0
  271. package/dist/get-S7MFACWM.js.map +1 -0
  272. package/dist/get-SBMD2X2P.js +66 -0
  273. package/dist/get-SBMD2X2P.js.map +1 -0
  274. package/dist/get-T754IOEI.js +85 -0
  275. package/dist/get-T754IOEI.js.map +1 -0
  276. package/dist/get-TOXTYIN5.js +71 -0
  277. package/dist/get-TOXTYIN5.js.map +1 -0
  278. package/dist/get-UCHL4WHT.js +95 -0
  279. package/dist/get-UCHL4WHT.js.map +1 -0
  280. package/dist/get-Y22XVMEO.js +55 -0
  281. package/dist/get-Y22XVMEO.js.map +1 -0
  282. package/dist/get-ZEUJA3KA.js +56 -0
  283. package/dist/get-ZEUJA3KA.js.map +1 -0
  284. package/dist/{implementation-8fGNr_Mq.d.ts → implementation-7POf4yX4.d.ts} +1 -1
  285. package/dist/{implementation-DPQ9ez-J.d.mts → implementation-BbuGM8_W.d.mts} +1 -1
  286. package/dist/index.d.mts +395 -28
  287. package/dist/index.d.ts +395 -28
  288. package/dist/index.js +49 -196
  289. package/dist/index.js.map +1 -1
  290. package/dist/index.mjs +35 -182
  291. package/dist/index.mjs.map +1 -1
  292. package/dist/list-3JR4HKGF.mjs +70 -0
  293. package/dist/list-3JR4HKGF.mjs.map +1 -0
  294. package/dist/list-6BRQWVVV.js +74 -0
  295. package/dist/list-6BRQWVVV.js.map +1 -0
  296. package/dist/list-6JTFDJAI.mjs +93 -0
  297. package/dist/list-6JTFDJAI.mjs.map +1 -0
  298. package/dist/list-7LV6GOZO.js +85 -0
  299. package/dist/list-7LV6GOZO.js.map +1 -0
  300. package/dist/list-AEX4S72W.mjs +74 -0
  301. package/dist/list-AEX4S72W.mjs.map +1 -0
  302. package/dist/list-AGELVAP7.js +70 -0
  303. package/dist/list-AGELVAP7.js.map +1 -0
  304. package/dist/list-ARBOOOYN.mjs +81 -0
  305. package/dist/list-ARBOOOYN.mjs.map +1 -0
  306. package/dist/list-AYOW6OF7.js +73 -0
  307. package/dist/list-AYOW6OF7.js.map +1 -0
  308. package/dist/list-BAKCZVTL.mjs +78 -0
  309. package/dist/list-BAKCZVTL.mjs.map +1 -0
  310. package/dist/list-BDNGLOLK.mjs +77 -0
  311. package/dist/list-BDNGLOLK.mjs.map +1 -0
  312. package/dist/list-C6DPYHQ2.js +109 -0
  313. package/dist/list-C6DPYHQ2.js.map +1 -0
  314. package/dist/list-E7YPBCAF.mjs +85 -0
  315. package/dist/list-E7YPBCAF.mjs.map +1 -0
  316. package/dist/list-EPB36Y7W.mjs +49 -0
  317. package/dist/list-EPB36Y7W.mjs.map +1 -0
  318. package/dist/list-FLTPMAHR.js +93 -0
  319. package/dist/list-FLTPMAHR.js.map +1 -0
  320. package/dist/list-FPIWJ65T.mjs +83 -0
  321. package/dist/list-FPIWJ65T.mjs.map +1 -0
  322. package/dist/list-GN3SAZG2.js +83 -0
  323. package/dist/list-GN3SAZG2.js.map +1 -0
  324. package/dist/list-JK36QVS2.js +73 -0
  325. package/dist/list-JK36QVS2.js.map +1 -0
  326. package/dist/list-JRWFJU5H.js +81 -0
  327. package/dist/list-JRWFJU5H.js.map +1 -0
  328. package/dist/list-KIJ4ILEN.mjs +78 -0
  329. package/dist/list-KIJ4ILEN.mjs.map +1 -0
  330. package/dist/list-KQKELE44.mjs +73 -0
  331. package/dist/list-KQKELE44.mjs.map +1 -0
  332. package/dist/list-LMMRRFZC.js +77 -0
  333. package/dist/list-LMMRRFZC.js.map +1 -0
  334. package/dist/{list-53QTWXGF.mjs → list-N7WIOJ5A.mjs} +29 -68
  335. package/dist/list-N7WIOJ5A.mjs.map +1 -0
  336. package/dist/list-RS4QL7NE.mjs +83 -0
  337. package/dist/list-RS4QL7NE.mjs.map +1 -0
  338. package/dist/list-SDMJ2GJE.js +81 -0
  339. package/dist/list-SDMJ2GJE.js.map +1 -0
  340. package/dist/list-UKGJOVJE.js +49 -0
  341. package/dist/list-UKGJOVJE.js.map +1 -0
  342. package/dist/list-UOTJUE2P.js +79 -0
  343. package/dist/list-UOTJUE2P.js.map +1 -0
  344. package/dist/list-W2MYF4RU.js +78 -0
  345. package/dist/list-W2MYF4RU.js.map +1 -0
  346. package/dist/list-WYYGGV5V.mjs +81 -0
  347. package/dist/list-WYYGGV5V.mjs.map +1 -0
  348. package/dist/list-WZ4KHBMF.mjs +73 -0
  349. package/dist/list-WZ4KHBMF.mjs.map +1 -0
  350. package/dist/list-XTOWXYB2.js +83 -0
  351. package/dist/list-XTOWXYB2.js.map +1 -0
  352. package/dist/list-Z5EEMYRQ.js +78 -0
  353. package/dist/list-Z5EEMYRQ.js.map +1 -0
  354. package/dist/list-ZB53NL6Z.mjs +79 -0
  355. package/dist/list-ZB53NL6Z.mjs.map +1 -0
  356. package/dist/{login-QWXRNDAM.mjs → login-4AX6AOKI.mjs} +20 -3
  357. package/dist/login-4AX6AOKI.mjs.map +1 -0
  358. package/dist/{login-XBFOVP6G.js → login-H3SQDBT7.js} +21 -4
  359. package/dist/login-H3SQDBT7.js.map +1 -0
  360. package/dist/observability-sdk/index.d.mts +3 -3
  361. package/dist/observability-sdk/index.d.ts +3 -3
  362. package/dist/observability-sdk/index.js +8 -6
  363. package/dist/observability-sdk/index.js.map +1 -1
  364. package/dist/observability-sdk/index.mjs +8 -6
  365. package/dist/observability-sdk/instrumentation/langchain/index.d.mts +1 -1
  366. package/dist/observability-sdk/instrumentation/langchain/index.d.ts +1 -1
  367. package/dist/observability-sdk/instrumentation/langchain/index.js +17 -16
  368. package/dist/observability-sdk/instrumentation/langchain/index.js.map +1 -1
  369. package/dist/observability-sdk/instrumentation/langchain/index.mjs +3 -2
  370. package/dist/observability-sdk/instrumentation/langchain/index.mjs.map +1 -1
  371. package/dist/observability-sdk/setup/node/index.js +6 -5
  372. package/dist/observability-sdk/setup/node/index.js.map +1 -1
  373. package/dist/observability-sdk/setup/node/index.mjs +5 -4
  374. package/dist/pull-64HVVOBC.mjs +23 -0
  375. package/dist/pull-QIANBELG.js +23 -0
  376. package/dist/pull-QIANBELG.js.map +1 -0
  377. package/dist/push-GXLGORLM.mjs +23 -0
  378. package/dist/push-GXLGORLM.mjs.map +1 -0
  379. package/dist/push-I3BJSL6N.js +23 -0
  380. package/dist/push-I3BJSL6N.js.map +1 -0
  381. package/dist/query-UF2LDBR4.js +158 -0
  382. package/dist/query-UF2LDBR4.js.map +1 -0
  383. package/dist/query-ZI7HJSIY.mjs +158 -0
  384. package/dist/query-ZI7HJSIY.mjs.map +1 -0
  385. package/dist/records-add-4LX4JHLO.mjs +94 -0
  386. package/dist/records-add-4LX4JHLO.mjs.map +1 -0
  387. package/dist/records-add-WTIGBJV4.js +94 -0
  388. package/dist/records-add-WTIGBJV4.js.map +1 -0
  389. package/dist/records-delete-IY37NWPN.mjs +42 -0
  390. package/dist/records-delete-IY37NWPN.mjs.map +1 -0
  391. package/dist/records-delete-MLOG4DM4.js +42 -0
  392. package/dist/records-delete-MLOG4DM4.js.map +1 -0
  393. package/dist/records-list-EP6OCFH5.js +85 -0
  394. package/dist/records-list-EP6OCFH5.js.map +1 -0
  395. package/dist/records-list-RIDOAE2V.mjs +85 -0
  396. package/dist/records-list-RIDOAE2V.mjs.map +1 -0
  397. package/dist/records-update-5QZBDYUJ.js +49 -0
  398. package/dist/records-update-5QZBDYUJ.js.map +1 -0
  399. package/dist/records-update-JINO26IA.mjs +49 -0
  400. package/dist/records-update-JINO26IA.mjs.map +1 -0
  401. package/dist/{remove-Q573N52S.mjs → remove-HLVK7VUB.mjs} +10 -7
  402. package/dist/{remove-Q573N52S.mjs.map → remove-HLVK7VUB.mjs.map} +1 -1
  403. package/dist/{remove-KIZPGE7J.js → remove-LDX2BSUH.js} +12 -9
  404. package/dist/remove-LDX2BSUH.js.map +1 -0
  405. package/dist/rename-FP7X3GJJ.mjs +38 -0
  406. package/dist/rename-FP7X3GJJ.mjs.map +1 -0
  407. package/dist/rename-PUSZYLZ7.js +38 -0
  408. package/dist/rename-PUSZYLZ7.js.map +1 -0
  409. package/dist/restore-5L5MLISA.mjs +63 -0
  410. package/dist/restore-5L5MLISA.mjs.map +1 -0
  411. package/dist/restore-OXNQMRMJ.js +63 -0
  412. package/dist/restore-OXNQMRMJ.js.map +1 -0
  413. package/dist/run-AIGCDUDF.mjs +143 -0
  414. package/dist/run-AIGCDUDF.mjs.map +1 -0
  415. package/dist/run-CKZ6VNKK.js +143 -0
  416. package/dist/run-CKZ6VNKK.js.map +1 -0
  417. package/dist/run-FE4QMJO5.mjs +67 -0
  418. package/dist/run-FE4QMJO5.mjs.map +1 -0
  419. package/dist/run-FJDOSV5E.js +128 -0
  420. package/dist/run-FJDOSV5E.js.map +1 -0
  421. package/dist/run-GUSPWLCC.mjs +128 -0
  422. package/dist/run-GUSPWLCC.mjs.map +1 -0
  423. package/dist/run-KNCB7OEA.js +86 -0
  424. package/dist/run-KNCB7OEA.js.map +1 -0
  425. package/dist/run-KZKAHFBR.js +67 -0
  426. package/dist/run-KZKAHFBR.js.map +1 -0
  427. package/dist/run-QW2HL4EK.mjs +86 -0
  428. package/dist/run-QW2HL4EK.mjs.map +1 -0
  429. package/dist/run-UZVJBWGG.js +130 -0
  430. package/dist/run-UZVJBWGG.js.map +1 -0
  431. package/dist/run-WZ4CSMTP.mjs +130 -0
  432. package/dist/run-WZ4CSMTP.mjs.map +1 -0
  433. package/dist/search-5B32YGSP.mjs +112 -0
  434. package/dist/search-5B32YGSP.mjs.map +1 -0
  435. package/dist/search-J5GDX5JK.js +112 -0
  436. package/dist/search-J5GDX5JK.js.map +1 -0
  437. package/dist/set-2DYJNVS5.mjs +62 -0
  438. package/dist/set-2DYJNVS5.mjs.map +1 -0
  439. package/dist/set-S5L5QSYZ.js +62 -0
  440. package/dist/set-S5L5QSYZ.js.map +1 -0
  441. package/dist/status-OIXOYFH4.mjs +101 -0
  442. package/dist/status-OIXOYFH4.mjs.map +1 -0
  443. package/dist/status-Q2PEMYJT.mjs +70 -0
  444. package/dist/status-Q2PEMYJT.mjs.map +1 -0
  445. package/dist/status-QRK56VLF.js +70 -0
  446. package/dist/status-QRK56VLF.js.map +1 -0
  447. package/dist/status-T7NOWM4X.js +101 -0
  448. package/dist/status-T7NOWM4X.js.map +1 -0
  449. package/dist/{sync-YPJIIHKC.js → sync-IDSAYUGO.js} +16 -13
  450. package/dist/sync-IDSAYUGO.js.map +1 -0
  451. package/dist/{sync-TM7JZNNW.mjs → sync-LA27E4UB.mjs} +12 -9
  452. package/dist/{sync-TM7JZNNW.mjs.map → sync-LA27E4UB.mjs.map} +1 -1
  453. package/dist/{types-DQiByKdr.d.ts → types-B4TSe7JR.d.ts} +6546 -2251
  454. package/dist/{types-CoHIwxng.d.mts → types-CWY5yQki.d.mts} +6546 -2251
  455. package/dist/update-3B43ZW4X.mjs +53 -0
  456. package/dist/update-3B43ZW4X.mjs.map +1 -0
  457. package/dist/update-3C6Y2Y2P.js +53 -0
  458. package/dist/update-3C6Y2Y2P.js.map +1 -0
  459. package/dist/update-4D7R3VYO.js +75 -0
  460. package/dist/update-4D7R3VYO.js.map +1 -0
  461. package/dist/update-4FC4YPW7.mjs +71 -0
  462. package/dist/update-4FC4YPW7.mjs.map +1 -0
  463. package/dist/update-4YMVL4UT.mjs +74 -0
  464. package/dist/update-4YMVL4UT.mjs.map +1 -0
  465. package/dist/update-7ZEJO5SB.js +74 -0
  466. package/dist/update-7ZEJO5SB.js.map +1 -0
  467. package/dist/update-BADZ6GRL.js +66 -0
  468. package/dist/update-BADZ6GRL.js.map +1 -0
  469. package/dist/update-DLFJBCI2.js +68 -0
  470. package/dist/update-DLFJBCI2.js.map +1 -0
  471. package/dist/update-EB7WMPOP.js +53 -0
  472. package/dist/update-EB7WMPOP.js.map +1 -0
  473. package/dist/update-EG6BZOLC.mjs +51 -0
  474. package/dist/update-EG6BZOLC.mjs.map +1 -0
  475. package/dist/update-FKL5Y73R.js +69 -0
  476. package/dist/update-FKL5Y73R.js.map +1 -0
  477. package/dist/update-GWTLCIAT.mjs +69 -0
  478. package/dist/update-GWTLCIAT.mjs.map +1 -0
  479. package/dist/update-MFZOMTRJ.mjs +51 -0
  480. package/dist/update-MFZOMTRJ.mjs.map +1 -0
  481. package/dist/update-PSY46JJD.mjs +68 -0
  482. package/dist/update-PSY46JJD.mjs.map +1 -0
  483. package/dist/update-PXCMJWY3.mjs +53 -0
  484. package/dist/update-PXCMJWY3.mjs.map +1 -0
  485. package/dist/update-R72C65QF.mjs +66 -0
  486. package/dist/update-R72C65QF.mjs.map +1 -0
  487. package/dist/update-RCZ47II5.js +52 -0
  488. package/dist/update-RCZ47II5.js.map +1 -0
  489. package/dist/update-RPD2OXXQ.js +51 -0
  490. package/dist/update-RPD2OXXQ.js.map +1 -0
  491. package/dist/update-VLY6LJVM.js +51 -0
  492. package/dist/update-VLY6LJVM.js.map +1 -0
  493. package/dist/update-WKM6XI4V.mjs +75 -0
  494. package/dist/update-WKM6XI4V.mjs.map +1 -0
  495. package/dist/update-WQK5Q34V.mjs +52 -0
  496. package/dist/update-WQK5Q34V.mjs.map +1 -0
  497. package/dist/update-YMWBN55I.js +71 -0
  498. package/dist/update-YMWBN55I.js.map +1 -0
  499. package/dist/upload-6LF5GVLP.js +73 -0
  500. package/dist/upload-6LF5GVLP.js.map +1 -0
  501. package/dist/upload-QWAITH5R.mjs +73 -0
  502. package/dist/upload-QWAITH5R.mjs.map +1 -0
  503. package/dist/versions-HIYVXIKM.js +82 -0
  504. package/dist/versions-HIYVXIKM.js.map +1 -0
  505. package/dist/versions-JPUSBSTF.mjs +82 -0
  506. package/dist/versions-JPUSBSTF.mjs.map +1 -0
  507. package/package.json +1 -1
  508. package/dist/add-FJ2SMVQE.js.map +0 -1
  509. package/dist/chunk-5LYWRKDF.js.map +0 -1
  510. package/dist/chunk-CWXQ53NE.mjs.map +0 -1
  511. package/dist/chunk-JVIQJFUE.mjs.map +0 -1
  512. package/dist/chunk-OLI6GF46.js.map +0 -1
  513. package/dist/chunk-PIF2RJWZ.js.map +0 -1
  514. package/dist/chunk-WASZSPD7.mjs.map +0 -1
  515. package/dist/chunk-ZLCERT3X.js.map +0 -1
  516. package/dist/list-53QTWXGF.mjs.map +0 -1
  517. package/dist/list-LBDUK454.js +0 -148
  518. package/dist/list-LBDUK454.js.map +0 -1
  519. package/dist/login-QWXRNDAM.mjs.map +0 -1
  520. package/dist/login-XBFOVP6G.js.map +0 -1
  521. package/dist/pull-3B3CBSSM.js +0 -20
  522. package/dist/pull-3B3CBSSM.js.map +0 -1
  523. package/dist/pull-WK6P7KS2.mjs +0 -20
  524. package/dist/push-G457CXVG.mjs +0 -20
  525. package/dist/push-GKFQL6GO.js +0 -20
  526. package/dist/push-GKFQL6GO.js.map +0 -1
  527. package/dist/remove-KIZPGE7J.js.map +0 -1
  528. package/dist/sync-YPJIIHKC.js.map +0 -1
  529. /package/dist/{chunk-L5Z7F7MG.mjs.map → chunk-43STSE3B.mjs.map} +0 -0
  530. /package/dist/{chunk-A7CF6ZGH.mjs.map → chunk-ESGWN42J.mjs.map} +0 -0
  531. /package/dist/{chunk-FMYG6IOZ.mjs.map → chunk-FARZEN6T.mjs.map} +0 -0
  532. /package/dist/{chunk-5M66X6SZ.mjs.map → chunk-LULJYN3P.mjs.map} +0 -0
  533. /package/dist/{pull-WK6P7KS2.mjs.map → create-ARJEJDYU.mjs.map} +0 -0
  534. /package/dist/{push-G457CXVG.mjs.map → pull-64HVVOBC.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-CGFG5FCC.js","../src/client-sdk/services/datasets/errors.ts","../src/client-sdk/services/datasets/tracing/tracer.ts","../src/client-sdk/services/datasets/dataset.service.ts","../src/client-sdk/services/datasets/datasets.facade.ts"],"names":["errorMessage"],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-CGFG5FCC.js","sourcesContent":[null,"/**\n * Errors for the Dataset API\n */\n\n/**\n * Base error for all dataset operations.\n */\nexport class DatasetError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"DatasetError\";\n }\n}\n\n/**\n * Thrown when a dataset is not found (404).\n */\nexport class DatasetNotFoundError extends DatasetError {\n constructor(slugOrId: string) {\n super(`Dataset not found: ${slugOrId}`);\n this.name = \"DatasetNotFoundError\";\n }\n}\n\n/**\n * Error from the Dataset API with operation context.\n * Aligns with PromptsApiError pattern: includes operation and originalError fields.\n */\nexport class DatasetApiError extends DatasetError {\n readonly status: number;\n readonly operation: string;\n readonly originalError?: unknown;\n\n constructor(message: string, status: number, operation: string, originalError?: unknown) {\n super(message);\n this.name = \"DatasetApiError\";\n this.status = status;\n this.operation = operation;\n this.originalError = originalError;\n }\n}\n\n/**\n * Thrown for client-side validation failures (e.g. empty name, no update fields, empty entries).\n * Distinguished from DatasetApiError which represents server-side errors.\n */\nexport class DatasetValidationError extends DatasetError {\n constructor(message: string) {\n super(message);\n this.name = \"DatasetValidationError\";\n }\n}\n\n/**\n * Thrown when a dataset operation exceeds the plan limit (403).\n * The message includes the upgrade/subscription URL from the server.\n */\nexport class DatasetPlanLimitError extends DatasetError {\n readonly limitType: string;\n readonly current?: number;\n readonly max?: number;\n\n constructor(message: string, originalError?: unknown) {\n super(message);\n this.name = \"DatasetPlanLimitError\";\n\n if (originalError != null && typeof originalError === \"object\") {\n const err = originalError as Record<string, unknown>;\n this.limitType = typeof err.limitType === \"string\" ? err.limitType : \"datasets\";\n this.current = typeof err.current === \"number\" ? err.current : undefined;\n this.max = typeof err.max === \"number\" ? err.max : undefined;\n } else {\n this.limitType = \"datasets\";\n }\n }\n}\n","import { LANGWATCH_SDK_NAME_CLIENT, LANGWATCH_SDK_VERSION } from \"@/internal/constants\";\nimport { getLangWatchTracer } from \"@/observability-sdk/tracer\";\n\nexport const tracer = getLangWatchTracer(`${LANGWATCH_SDK_NAME_CLIENT}.datasets`, LANGWATCH_SDK_VERSION);\n","import { type LangwatchApiClient } from \"@/internal/api/client\";\nimport { type Logger } from \"@/logger\";\nimport {\n type Dataset,\n type DatasetEntry,\n type DatasetMetadata,\n type GetDatasetApiResponse,\n type GetDatasetOptions,\n type ListDatasetsOptions,\n type ListDatasetsApiResponse,\n type ListRecordsOptions,\n type ListRecordsApiResponse,\n type CreateDatasetOptions,\n type UpdateDatasetOptions,\n type CreateFromUploadOptions,\n type CreateFromUploadResponse,\n type BatchCreateRecordsResponse,\n type DeleteRecordsResponse,\n type UploadResponse,\n type DatasetRecordResponse,\n} from \"./types\";\nimport { DatasetApiError, DatasetNotFoundError, DatasetPlanLimitError } from \"./errors\";\nimport { createTracingProxy } from \"@/client-sdk/tracing/create-tracing-proxy\";\nimport { tracer } from \"./tracing\";\n\ntype DatasetServiceConfig = {\n langwatchApiClient: LangwatchApiClient;\n logger: Logger;\n endpoint: string;\n apiKey: string;\n};\n\n/**\n * Service for managing dataset resources via the LangWatch API.\n *\n * Responsibilities:\n * - CRUD operations for datasets\n * - Record management (create, update, delete)\n * - File upload\n * - Error handling with contextual information\n */\nexport class DatasetService {\n private readonly config: DatasetServiceConfig;\n\n constructor(config: DatasetServiceConfig) {\n this.config = config;\n\n /**\n * Wraps the service in a tracing proxy that automatically creates\n * OpenTelemetry spans for all public methods.\n */\n return createTracingProxy(this as DatasetService, tracer);\n }\n\n /**\n * Handles API errors by mapping status codes to appropriate error types.\n * @param operation - Description of the operation being performed\n * @param error - The error object from the API response\n * @param status - The HTTP status code\n * @param slugOrId - The dataset identifier (only passed for operations targeting an existing resource)\n */\n private handleApiError(operation: string, error: unknown, status: number, slugOrId?: string): never {\n if (status === 404 && slugOrId) {\n throw new DatasetNotFoundError(slugOrId);\n }\n\n if (status === 403) {\n const errorMessage = this.extractErrorMessage(error, status);\n throw new DatasetPlanLimitError(errorMessage, error);\n }\n\n const errorMessage = this.extractErrorMessage(error, status);\n\n throw new DatasetApiError(\n `Failed to ${operation}: ${errorMessage}`,\n status,\n operation,\n error,\n );\n }\n\n /**\n * Extracts a human-readable error message from an API error response.\n */\n private extractErrorMessage(error: unknown, status: number): string {\n if (typeof error === \"string\") return error;\n\n if (error != null && typeof error === \"object\") {\n if (\"message\" in error && typeof (error as { message: unknown }).message === \"string\") {\n return (error as { message: string }).message;\n }\n if (\"error\" in error) {\n const inner = (error as { error: unknown }).error;\n if (typeof inner === \"string\") return inner;\n if (inner != null && typeof inner === \"object\" && \"message\" in inner) {\n return (inner as { message: string }).message ?? JSON.stringify(inner);\n }\n }\n }\n\n return `HTTP ${status}`;\n }\n\n /**\n * Wrapper for API calls to endpoints not yet in the generated OpenAPI types.\n * Quarantines `as any` casts to a single location.\n */\n private untypedRequest<M extends 'GET' | 'POST' | 'PATCH' | 'DELETE'>(\n method: M,\n path: string,\n options?: Record<string, unknown>,\n ) {\n return (this.config.langwatchApiClient[method] as any)(path, options);\n }\n\n /**\n * Unwraps an API response, throwing a mapped error if the response contains an error.\n * Centralizes the repeated `if (error) handleApiError; return data` pattern.\n */\n private unwrapResponse<T>(\n response: { data?: unknown; error?: unknown; response: { status: number } },\n operation: string,\n slugOrId?: string,\n ): T {\n if (response.error) {\n this.handleApiError(operation, response.error, response.response.status, slugOrId);\n }\n return response.data as T;\n }\n\n /**\n * Fetches a dataset by its slug or ID, returning metadata and entries.\n *\n * @param slugOrId - The slug or ID of the dataset\n * @param _options - Optional configuration\n * @returns The dataset with metadata and entries\n */\n async getDataset<T extends Record<string, unknown> = Record<string, unknown>>(\n slugOrId: string,\n _options?: GetDatasetOptions\n ): Promise<Dataset<T>> {\n this.config.logger.debug(`Fetching dataset: ${slugOrId}`);\n\n const response = await this.config.langwatchApiClient.GET(\n \"/api/dataset/{slugOrId}\",\n {\n params: {\n path: {\n slugOrId,\n },\n },\n }\n );\n\n const data = this.unwrapResponse<GetDatasetApiResponse>(\n response,\n `fetch dataset \"${slugOrId}\"`,\n slugOrId,\n );\n\n const entries: DatasetEntry<T>[] = data.data.map((item) => ({\n id: item.id,\n datasetId: item.datasetId,\n projectId: item.projectId,\n entry: item.entry as T,\n createdAt: item.createdAt,\n updatedAt: item.updatedAt,\n }));\n\n this.config.logger.debug(\n `Fetched dataset ${slugOrId} with ${entries.length} entries`\n );\n\n return {\n id: data.id,\n name: data.name,\n slug: data.slug,\n columnTypes: data.columnTypes,\n createdAt: data.createdAt,\n updatedAt: data.updatedAt,\n entries,\n };\n }\n\n /**\n * Lists all datasets for the project, with optional pagination.\n */\n async listDatasets(options?: ListDatasetsOptions): Promise<ListDatasetsApiResponse> {\n this.config.logger.debug(\"Listing datasets\");\n\n const response = await this.untypedRequest('GET', '/api/dataset', {\n params: {\n query: {\n page: options?.page,\n limit: options?.limit,\n },\n },\n });\n\n return this.unwrapResponse<ListDatasetsApiResponse>(\n response,\n \"list datasets\",\n );\n }\n\n /**\n * Creates a new dataset.\n */\n async createDataset(options: CreateDatasetOptions): Promise<DatasetMetadata> {\n this.config.logger.debug(`Creating dataset: ${options.name}`);\n\n const response = await this.untypedRequest('POST', '/api/dataset', {\n body: {\n name: options.name,\n columnTypes: options.columnTypes ?? [],\n },\n });\n\n return this.unwrapResponse<DatasetMetadata>(\n response,\n `create dataset \"${options.name}\"`,\n );\n }\n\n /**\n * Updates a dataset by its slug or ID.\n */\n async updateDataset(slugOrId: string, options: UpdateDatasetOptions): Promise<DatasetMetadata> {\n this.config.logger.debug(`Updating dataset: ${slugOrId}`);\n\n const response = await this.untypedRequest('PATCH', '/api/dataset/{slugOrId}', {\n params: {\n path: { slugOrId },\n },\n body: options,\n });\n\n return this.unwrapResponse<DatasetMetadata>(\n response,\n `update dataset \"${slugOrId}\"`,\n slugOrId,\n );\n }\n\n /**\n * Deletes (archives) a dataset by its slug or ID.\n */\n async deleteDataset(slugOrId: string): Promise<DatasetMetadata> {\n this.config.logger.debug(`Deleting dataset: ${slugOrId}`);\n\n const response = await this.untypedRequest('DELETE', '/api/dataset/{slugOrId}', {\n params: {\n path: { slugOrId },\n },\n });\n\n return this.unwrapResponse<DatasetMetadata>(\n response,\n `delete dataset \"${slugOrId}\"`,\n slugOrId,\n );\n }\n\n /**\n * Creates records in a dataset in batch.\n */\n async createRecords(\n slugOrId: string,\n entries: Record<string, unknown>[],\n ): Promise<BatchCreateRecordsResponse> {\n this.config.logger.debug(`Creating ${entries.length} records in dataset: ${slugOrId}`);\n\n const response = await this.untypedRequest('POST', '/api/dataset/{slugOrId}/records', {\n params: {\n path: { slugOrId },\n },\n body: { entries },\n });\n\n return this.unwrapResponse<BatchCreateRecordsResponse>(\n response,\n `create records in dataset \"${slugOrId}\"`,\n slugOrId,\n );\n }\n\n /**\n * Updates a single record in a dataset.\n */\n async updateRecord(\n slugOrId: string,\n recordId: string,\n entry: Record<string, unknown>,\n ): Promise<DatasetRecordResponse> {\n this.config.logger.debug(`Updating record ${recordId} in dataset: ${slugOrId}`);\n\n const response = await this.untypedRequest('PATCH', '/api/dataset/{slugOrId}/records/{recordId}', {\n params: {\n path: { slugOrId, recordId },\n },\n body: { entry },\n });\n\n return this.unwrapResponse<DatasetRecordResponse>(\n response,\n `update record \"${recordId}\" in dataset \"${slugOrId}\"`,\n slugOrId,\n );\n }\n\n /**\n * Deletes records from a dataset by IDs.\n */\n async deleteRecords(\n slugOrId: string,\n recordIds: string[],\n ): Promise<DeleteRecordsResponse> {\n this.config.logger.debug(`Deleting ${recordIds.length} records from dataset: ${slugOrId}`);\n\n const response = await this.untypedRequest('DELETE', '/api/dataset/{slugOrId}/records', {\n params: {\n path: { slugOrId },\n },\n body: { recordIds },\n });\n\n return this.unwrapResponse<DeleteRecordsResponse>(\n response,\n `delete records from dataset \"${slugOrId}\"`,\n slugOrId,\n );\n }\n\n /**\n * Lists records in a dataset with optional pagination.\n *\n * @param slugOrId - The slug or ID of the dataset\n * @param options - Pagination options (page, limit)\n * @returns Paginated list of records\n */\n async listRecords(\n slugOrId: string,\n options?: ListRecordsOptions,\n ): Promise<ListRecordsApiResponse> {\n this.config.logger.debug(`Listing records for dataset: ${slugOrId}`);\n\n const response = await this.untypedRequest('GET', '/api/dataset/{slugOrId}/records', {\n params: {\n path: { slugOrId },\n query: {\n page: options?.page,\n limit: options?.limit,\n },\n },\n });\n\n return this.unwrapResponse<ListRecordsApiResponse>(\n response,\n `list records in dataset \"${slugOrId}\"`,\n slugOrId,\n );\n }\n\n /**\n * Sends a multipart/form-data request using raw fetch.\n * openapi-fetch hardcodes content-type: application/json, so file uploads\n * must bypass it. This helper centralizes URL building, auth headers,\n * error parsing, and response unwrapping.\n *\n * @param path - The API path (appended to the endpoint)\n * @param formData - The FormData payload\n * @param operation - Human-readable operation name for error messages\n * @param slugOrId - Optional dataset identifier (passed to handleApiError for 404 mapping)\n */\n private async fetchMultipart<T>(\n path: string,\n formData: FormData,\n operation: string,\n slugOrId?: string,\n ): Promise<T> {\n const { endpoint, apiKey } = this.config;\n const url = `${endpoint.replace(/\\/$/, \"\")}${path}`;\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"X-Auth-Token\": apiKey,\n authorization: `Bearer ${apiKey}`,\n },\n body: formData,\n });\n\n if (!response.ok) {\n const rawBody = await response.text();\n let errorBody: unknown = rawBody;\n if (rawBody) {\n try {\n errorBody = JSON.parse(rawBody);\n } catch {\n // Keep the plain-text body.\n }\n }\n\n this.handleApiError(operation, errorBody, response.status, slugOrId);\n }\n\n return (await response.json()) as T;\n }\n\n /**\n * Creates a new dataset from a file upload.\n *\n * @param options - The dataset name and file to upload\n * @returns The created dataset metadata with record count\n */\n async createDatasetFromUpload(\n options: CreateFromUploadOptions,\n ): Promise<CreateFromUploadResponse> {\n this.config.logger.debug(`Creating dataset from upload: ${options.name}`);\n\n const formData = new FormData();\n formData.append(\"name\", options.name);\n formData.append(\"file\", options.file);\n\n return this.fetchMultipart<CreateFromUploadResponse>(\n \"/api/dataset/upload\",\n formData,\n `create dataset from upload \"${options.name}\"`,\n );\n }\n\n /**\n * Uploads a file with a strategy for handling existing datasets.\n *\n * @param slugOrId - The slug or ID of the dataset\n * @param file - The file to upload (File or Blob)\n * @param ifExists - Strategy when dataset exists: \"append\" (default), \"replace\", or \"error\"\n * @returns The upload result\n */\n async uploadWithStrategy(\n slugOrId: string,\n file: File | Blob,\n ifExists: \"append\" | \"replace\" | \"error\" = \"append\",\n ): Promise<UploadResponse> {\n switch (ifExists) {\n case \"append\":\n return this._uploadAppend(slugOrId, file);\n case \"replace\":\n return this._uploadReplace(slugOrId, file);\n case \"error\":\n return this._uploadError(slugOrId, file);\n }\n }\n\n /**\n * Converts a CreateFromUploadResponse to the unified UploadResponse shape.\n */\n private toUploadResponse(result: CreateFromUploadResponse): UploadResponse {\n return {\n dataset: {\n id: result.id,\n name: result.name,\n slug: result.slug,\n columnTypes: result.columnTypes,\n createdAt: result.createdAt,\n updatedAt: result.updatedAt,\n },\n recordsCreated: result.recordsCreated,\n datasetId: result.id,\n };\n }\n\n /**\n * Append strategy: try uploading to existing dataset; if not found, create from file.\n */\n private async _uploadAppend(slugOrId: string, file: File | Blob): Promise<UploadResponse> {\n try {\n return await this.uploadFile(slugOrId, file);\n } catch (error) {\n if (error instanceof DatasetNotFoundError) {\n return this.toUploadResponse(await this.createDatasetFromUpload({ name: slugOrId, file }));\n }\n throw error;\n }\n }\n\n /**\n * Replace strategy: if dataset exists, delete all records then upload; if not found, create from file.\n */\n private async _uploadReplace(slugOrId: string, file: File | Blob): Promise<UploadResponse> {\n try {\n await this.getDataset(slugOrId);\n await this._deleteAllRecords(slugOrId);\n return await this.uploadFile(slugOrId, file);\n } catch (error) {\n if (error instanceof DatasetNotFoundError) {\n return this.toUploadResponse(await this.createDatasetFromUpload({ name: slugOrId, file }));\n }\n throw error;\n }\n }\n\n /**\n * Error strategy: if dataset exists, throw 409; if not found, create from file.\n */\n private async _uploadError(slugOrId: string, file: File | Blob): Promise<UploadResponse> {\n let datasetExists = false;\n try {\n await this.getDataset(slugOrId);\n datasetExists = true;\n } catch (error) {\n if (!(error instanceof DatasetNotFoundError)) {\n throw error;\n }\n }\n\n if (datasetExists) {\n throw new DatasetApiError(\n `Dataset already exists: ${slugOrId}`,\n 409,\n \"upload\",\n );\n }\n\n return this.toUploadResponse(await this.createDatasetFromUpload({ name: slugOrId, file }));\n }\n\n /**\n * Deletes all records from a dataset by iterating through pages.\n * Always fetches page 1 since records shift after deletion.\n * Includes a safety valve to prevent infinite loops.\n */\n private async _deleteAllRecords(slugOrId: string): Promise<void> {\n const BATCH_SIZE = 1000;\n const MAX_DELETE_ITERATIONS = 100;\n\n let iteration = 0;\n while (iteration < MAX_DELETE_ITERATIONS) {\n const page = await this.listRecords(slugOrId, { page: 1, limit: BATCH_SIZE });\n if (page.data.length === 0) {\n return;\n }\n\n const ids = page.data.map((record) => record.id);\n await this.deleteRecords(slugOrId, ids);\n iteration++;\n }\n\n throw new DatasetApiError(\n `Failed to delete all records from dataset \"${slugOrId}\": exceeded ${MAX_DELETE_ITERATIONS} iterations`,\n 0,\n `delete all records from dataset \"${slugOrId}\"`,\n );\n }\n\n /**\n * Uploads a file to an existing dataset.\n */\n async uploadFile(\n slugOrId: string,\n file: File | Blob,\n ): Promise<UploadResponse> {\n this.config.logger.debug(`Uploading file to dataset: ${slugOrId}`);\n\n const formData = new FormData();\n formData.append(\"file\", file);\n\n return this.fetchMultipart<UploadResponse>(\n `/api/dataset/${encodeURIComponent(slugOrId)}/upload`,\n formData,\n `upload file to dataset \"${slugOrId}\"`,\n slugOrId,\n );\n }\n}\n","import { type LangwatchApiClient } from \"@/internal/api/client\";\nimport { type Logger } from \"@/logger\";\nimport { DatasetService } from \"./dataset.service\";\nimport { DatasetValidationError } from \"./errors\";\nimport {\n type Dataset,\n type DatasetMetadata,\n type GetDatasetOptions,\n type ListDatasetsOptions,\n type ListDatasetsApiResponse,\n type ListRecordsOptions,\n type ListRecordsApiResponse,\n type CreateDatasetOptions,\n type UpdateDatasetOptions,\n type BatchCreateRecordsResponse,\n type DeleteRecordsResponse,\n type UploadResponse,\n type DatasetRecordResponse,\n} from \"./types\";\n\ntype DatasetsFacadeConfig = {\n langwatchApiClient: LangwatchApiClient;\n logger: Logger;\n endpoint: string;\n apiKey: string;\n};\n\n/**\n * Facade for dataset operations in the LangWatch SDK.\n * Provides a simplified interface for managing datasets, records, and file uploads.\n *\n * @example\n * ```typescript\n * const langwatch = new LangWatch({ apiKey: \"your-api-key\" });\n *\n * // List all datasets\n * const datasets = await langwatch.datasets.list();\n *\n * // Get a dataset by slug or ID\n * const dataset = await langwatch.datasets.get(\"my-dataset\");\n *\n * // Create a new dataset\n * const newDataset = await langwatch.datasets.create({\n * name: \"my-dataset\",\n * columnTypes: [{ name: \"input\", type: \"string\" }],\n * });\n *\n * // Update a dataset\n * const updated = await langwatch.datasets.update(\"my-dataset\", { name: \"new-name\" });\n *\n * // Delete a dataset\n * const archived = await langwatch.datasets.delete(\"my-dataset\");\n *\n * // Create records\n * const records = await langwatch.datasets.createRecords(\"my-dataset\", [\n * { input: \"hello\", output: \"world\" },\n * ]);\n *\n * // Update a record\n * const record = await langwatch.datasets.updateRecord(\"my-dataset\", \"rec-1\", { input: \"updated\" });\n *\n * // Delete records\n * const result = await langwatch.datasets.deleteRecords(\"my-dataset\", [\"rec-1\", \"rec-2\"]);\n *\n * // Upload a file (append to existing or create new)\n * const uploadResult = await langwatch.datasets.upload(\"my-dataset\", file);\n *\n * // Upload with replace strategy (delete all records first)\n * await langwatch.datasets.upload(\"my-dataset\", file, { ifExists: \"replace\" });\n * ```\n */\nexport class DatasetsFacade {\n readonly #datasetService: DatasetService;\n\n constructor(config: DatasetsFacadeConfig) {\n this.#datasetService = new DatasetService(config);\n }\n\n /**\n * Lists all datasets for the project, with optional pagination.\n *\n * @param options - Pagination options (page, limit)\n * @returns Paginated list of datasets with metadata\n */\n list = (options?: ListDatasetsOptions): Promise<ListDatasetsApiResponse> => {\n return this.#datasetService.listDatasets(options);\n };\n\n /**\n * Creates a new dataset.\n *\n * @param options - Dataset creation options (name, columnTypes)\n * @returns The created dataset metadata\n */\n create = (options: CreateDatasetOptions): Promise<DatasetMetadata> => {\n if (!options.name || options.name.trim().length === 0) {\n throw new DatasetValidationError(\"Dataset name must not be empty\");\n }\n return this.#datasetService.createDataset(options);\n };\n\n /**\n * Fetches a dataset by its slug or ID, returning metadata and entries.\n *\n * @param slugOrId - The slug or ID of the dataset to fetch\n * @param options - Optional configuration\n * @returns The dataset with metadata and entries\n *\n * @example\n * ```typescript\n * // Get dataset by slug\n * const dataset = await langwatch.datasets.get(\"product-qa\");\n *\n * // Typed dataset\n * type MyDatasetEntry = { input: string; expected_output: string; };\n * const dataset = await langwatch.datasets.get<MyDatasetEntry>(\"my-dataset\");\n *\n * // Iterate over entries\n * for (const entry of dataset.entries) {\n * console.log(entry.entry.input);\n * }\n * ```\n */\n get = <T extends Record<string, unknown> = Record<string, unknown>>(\n slugOrId: string,\n options?: GetDatasetOptions\n ): Promise<Dataset<T>> => {\n return this.#datasetService.getDataset<T>(slugOrId, options);\n };\n\n /**\n * Updates a dataset by its slug or ID.\n *\n * @param slugOrId - The slug or ID of the dataset to update\n * @param options - Fields to update (name, columnTypes)\n * @returns The updated dataset metadata\n */\n update = (slugOrId: string, options: UpdateDatasetOptions): Promise<DatasetMetadata> => {\n if (options.name == null && options.columnTypes == null) {\n throw new DatasetValidationError(\n \"At least one field (name or columnTypes) must be provided for update\",\n );\n }\n return this.#datasetService.updateDataset(slugOrId, options);\n };\n\n /**\n * Deletes (archives) a dataset by its slug or ID.\n *\n * @param slugOrId - The slug or ID of the dataset to delete\n * @returns The archived dataset metadata\n */\n delete = (slugOrId: string): Promise<DatasetMetadata> => {\n return this.#datasetService.deleteDataset(slugOrId);\n };\n\n /**\n * Creates records in a dataset in batch.\n *\n * @param slugOrId - The slug or ID of the dataset\n * @param entries - Array of record entries to create\n * @returns The created records with IDs\n */\n createRecords = (\n slugOrId: string,\n entries: Record<string, unknown>[],\n ): Promise<BatchCreateRecordsResponse> => {\n if (!entries || entries.length === 0) {\n throw new DatasetValidationError(\"Entries must not be empty\");\n }\n return this.#datasetService.createRecords(slugOrId, entries);\n };\n\n /**\n * Updates a single record in a dataset.\n *\n * @param slugOrId - The slug or ID of the dataset\n * @param recordId - The ID of the record to update\n * @param entry - The updated entry data\n * @returns The updated record\n */\n updateRecord = (\n slugOrId: string,\n recordId: string,\n entry: Record<string, unknown>,\n ): Promise<DatasetRecordResponse> => {\n return this.#datasetService.updateRecord(slugOrId, recordId, entry);\n };\n\n /**\n * Deletes records from a dataset by IDs.\n *\n * @param slugOrId - The slug or ID of the dataset\n * @param recordIds - Array of record IDs to delete\n * @returns Object with the count of deleted records\n */\n deleteRecords = (\n slugOrId: string,\n recordIds: string[],\n ): Promise<DeleteRecordsResponse> => {\n return this.#datasetService.deleteRecords(slugOrId, recordIds);\n };\n\n /**\n * Lists records in a dataset with optional pagination.\n *\n * @param slugOrId - The slug or ID of the dataset\n * @param options - Pagination options (page, limit)\n * @returns Paginated list of records\n *\n * @example\n * ```typescript\n * // List first page of records\n * const result = await langwatch.datasets.listRecords(\"my-dataset\");\n *\n * // With pagination\n * const page2 = await langwatch.datasets.listRecords(\"my-dataset\", { page: 2, limit: 25 });\n * ```\n */\n listRecords = (\n slugOrId: string,\n options?: ListRecordsOptions,\n ): Promise<ListRecordsApiResponse> => {\n return this.#datasetService.listRecords(slugOrId, options);\n };\n\n /**\n * Uploads a file to a dataset with a configurable strategy for handling existing datasets.\n *\n * Strategies:\n * - `\"append\"` (default): Upload to existing dataset; if not found, create a new one.\n * - `\"replace\"`: Delete all existing records, then upload; if not found, create a new one.\n * - `\"error\"`: Throw a 409 error if the dataset already exists; if not found, create a new one.\n *\n * @param slugOrId - The slug or ID of the dataset\n * @param file - The file to upload (File or Blob)\n * @param options - Upload options including the ifExists strategy\n * @returns The upload result\n *\n * @example\n * ```typescript\n * const file = new File([\"input,output\\nhello,world\"], \"data.csv\", { type: \"text/csv\" });\n *\n * // Append to existing or create new\n * await langwatch.datasets.upload(\"my-dataset\", file);\n *\n * // Replace all records\n * await langwatch.datasets.upload(\"my-dataset\", file, { ifExists: \"replace\" });\n *\n * // Fail if dataset already exists\n * await langwatch.datasets.upload(\"my-dataset\", file, { ifExists: \"error\" });\n * ```\n */\n upload = (\n slugOrId: string,\n file: File | Blob,\n options?: {\n ifExists?: \"append\" | \"replace\" | \"error\";\n },\n ): Promise<UploadResponse> => {\n if (!file) {\n throw new DatasetValidationError(\"File must be provided for upload\");\n }\n return this.#datasetService.uploadWithStrategy(\n slugOrId,\n file,\n options?.ifExists ?? \"append\",\n );\n };\n}\n"]}
@@ -0,0 +1,66 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/cli/utils/formatting.ts
2
+ var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
3
+ var stripAnsi = (str) => {
4
+ return str.replace(/\u001b\[[0-9;]*m/g, "");
5
+ };
6
+ var formatTable = ({
7
+ data,
8
+ headers,
9
+ colorMap = {},
10
+ emptyMessage = "No data found"
11
+ }) => {
12
+ if (data.length === 0) {
13
+ console.log(_chalk2.default.gray(emptyMessage));
14
+ return;
15
+ }
16
+ const colWidths = {};
17
+ headers.forEach((header) => {
18
+ colWidths[header] = Math.max(
19
+ header.length,
20
+ ...data.map((row) => {
21
+ var _a;
22
+ return stripAnsi((_a = row[header]) != null ? _a : "").length;
23
+ })
24
+ );
25
+ });
26
+ const headerRow = headers.map((header) => _chalk2.default.bold(header.padEnd(colWidths[header]))).join(" ");
27
+ console.log(headerRow);
28
+ const separator = headers.map((header) => "\u2500".repeat(colWidths[header])).join(" ");
29
+ console.log(_chalk2.default.gray(separator));
30
+ data.forEach((row) => {
31
+ const dataRow = headers.map((header) => {
32
+ var _a, _b;
33
+ const value = (_a = row[header]) != null ? _a : "";
34
+ const strippedLength = stripAnsi(value).length;
35
+ const paddingNeeded = colWidths[header] - strippedLength;
36
+ const paddedValue = value + " ".repeat(Math.max(0, paddingNeeded));
37
+ const colorFn = (_b = colorMap[header]) != null ? _b : _chalk2.default.gray;
38
+ return colorFn(paddedValue);
39
+ }).join(" ");
40
+ console.log(dataRow);
41
+ });
42
+ };
43
+ var formatRelativeTime = (dateString) => {
44
+ const date = new Date(dateString);
45
+ if (Number.isNaN(date.getTime())) return "\u2014";
46
+ const now = /* @__PURE__ */ new Date();
47
+ const diffMs = Math.max(0, now.getTime() - date.getTime());
48
+ const seconds = Math.floor(diffMs / 1e3);
49
+ const minutes = Math.floor(seconds / 60);
50
+ const hours = Math.floor(minutes / 60);
51
+ const days = Math.floor(hours / 24);
52
+ const months = Math.floor(days / 30);
53
+ const years = Math.floor(days / 365);
54
+ if (years > 0) return `${years}y ago`;
55
+ if (months > 0) return `${months}mo ago`;
56
+ if (days > 0) return `${days}d ago`;
57
+ if (hours > 0) return `${hours}h ago`;
58
+ if (minutes > 0) return `${minutes}m ago`;
59
+ return seconds === 0 ? "just now" : `${seconds}s ago`;
60
+ };
61
+
62
+
63
+
64
+
65
+ exports.formatTable = formatTable; exports.formatRelativeTime = formatRelativeTime;
66
+ //# sourceMappingURL=chunk-CLYXJJ6C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-CLYXJJ6C.js","../src/cli/utils/formatting.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-CLYXJJ6C.js","sourcesContent":[null,"import chalk from \"chalk\";\n\n/**\n * Strips ANSI escape codes from a string for accurate length calculation.\n */\nexport const stripAnsi = (str: string): string => {\n // eslint-disable-next-line no-control-regex\n return str.replace(/\\u001b\\[[0-9;]*m/g, \"\");\n};\n\nexport type ColumnColorMap = Record<string, (value: string) => string>;\n\n/**\n * Prints a formatted table to stdout with column-aligned headers, separator,\n * and optional per-column color functions.\n *\n * Columns not in the colorMap default to chalk.gray.\n */\nexport const formatTable = ({\n data,\n headers,\n colorMap = {},\n emptyMessage = \"No data found\",\n}: {\n data: Array<Record<string, string>>;\n headers: string[];\n colorMap?: ColumnColorMap;\n emptyMessage?: string;\n}): void => {\n if (data.length === 0) {\n console.log(chalk.gray(emptyMessage));\n return;\n }\n\n const colWidths: Record<string, number> = {};\n headers.forEach((header) => {\n colWidths[header] = Math.max(\n header.length,\n ...data.map((row) => stripAnsi(row[header] ?? \"\").length),\n );\n });\n\n const headerRow = headers\n .map((header) => chalk.bold(header.padEnd(colWidths[header]!)))\n .join(\" \");\n console.log(headerRow);\n\n const separator = headers\n .map((header) => \"─\".repeat(colWidths[header]!))\n .join(\" \");\n console.log(chalk.gray(separator));\n\n data.forEach((row) => {\n const dataRow = headers\n .map((header) => {\n const value = row[header] ?? \"\";\n const strippedLength = stripAnsi(value).length;\n const paddingNeeded = colWidths[header]! - strippedLength;\n const paddedValue = value + \" \".repeat(Math.max(0, paddingNeeded));\n\n const colorFn = colorMap[header] ?? chalk.gray;\n return colorFn(paddedValue);\n })\n .join(\" \");\n console.log(dataRow);\n });\n};\n\n/**\n * Formats a date string as a human-readable relative time (e.g. \"3d ago\").\n *\n * Returns \"—\" for invalid dates. Clamps future dates to \"just now\".\n */\nexport const formatRelativeTime = (dateString: string): string => {\n const date = new Date(dateString);\n if (Number.isNaN(date.getTime())) return \"—\";\n\n const now = new Date();\n const diffMs = Math.max(0, now.getTime() - date.getTime());\n\n const seconds = Math.floor(diffMs / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n const months = Math.floor(days / 30);\n const years = Math.floor(days / 365);\n\n if (years > 0) return `${years}y ago`;\n if (months > 0) return `${months}mo ago`;\n if (days > 0) return `${days}d ago`;\n if (hours > 0) return `${hours}h ago`;\n if (minutes > 0) return `${minutes}m ago`;\n return seconds === 0 ? \"just now\" : `${seconds}s ago`;\n};\n"]}
@@ -2,21 +2,23 @@ import {
2
2
  LangWatchLogsExporter,
3
3
  LangWatchTraceExporter,
4
4
  setLangWatchLoggerProvider
5
- } from "./chunk-5M66X6SZ.mjs";
5
+ } from "./chunk-LULJYN3P.mjs";
6
6
  import {
7
7
  DEFAULT_ENDPOINT,
8
8
  DEFAULT_SERVICE_NAME,
9
9
  LANGWATCH_SDK_LANGUAGE,
10
10
  LANGWATCH_SDK_NAME_OBSERVABILITY,
11
11
  LANGWATCH_SDK_VERSION
12
- } from "./chunk-SSONRNFB.mjs";
12
+ } from "./chunk-LN33ZL4Z.mjs";
13
+ import {
14
+ initializeObservabilitySdkConfig
15
+ } from "./chunk-RKJDDUGQ.mjs";
13
16
  import {
14
17
  ATTR_LANGWATCH_SDK_LANGUAGE,
15
18
  ATTR_LANGWATCH_SDK_NAME,
16
19
  ATTR_LANGWATCH_SDK_VERSION,
17
- ConsoleLogger,
18
- initializeObservabilitySdkConfig
19
- } from "./chunk-JVIQJFUE.mjs";
20
+ ConsoleLogger
21
+ } from "./chunk-M4IBRWUC.mjs";
20
22
  import {
21
23
  __spreadValues
22
24
  } from "./chunk-URTD2WOC.mjs";
@@ -329,4 +331,4 @@ export {
329
331
  setupObservability,
330
332
  ensureSetup
331
333
  };
332
- //# sourceMappingURL=chunk-WSESRS6L.mjs.map
334
+ //# sourceMappingURL=chunk-COKOLKOR.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/observability-sdk/setup/node/setup.ts","../src/observability-sdk/setup/utils.ts"],"sourcesContent":["import { NodeSDK } from \"@opentelemetry/sdk-node\";\nimport { SimpleLogRecordProcessor, BatchLogRecordProcessor, type LogRecordProcessor, ConsoleLogRecordExporter, LoggerProvider } from \"@opentelemetry/sdk-logs\";\nimport { createMergedResource, isConcreteProvider } from \"../utils\";\nimport { type SetupObservabilityOptions, type ObservabilityHandle } from \"./types\";\nimport { trace } from \"@opentelemetry/api\";\nimport {\n ConsoleSpanExporter,\n SimpleSpanProcessor,\n BatchSpanProcessor,\n type SpanProcessor,\n} from \"@opentelemetry/sdk-trace-base\";\nimport { type Resource } from \"@opentelemetry/resources\";\nimport { LangWatchLogsExporter, LangWatchTraceExporter } from \"../../exporters\";\nimport { ConsoleLogger, type Logger } from \"../../../logger\";\nimport { initializeObservabilitySdkConfig } from \"../../config\";\nimport { setLangWatchLoggerProvider } from \"../../logger\";\nimport { DEFAULT_ENDPOINT } from \"@/internal/constants\";\n\n// Helper functions\nconst createNoOpHandle = (logger: Logger): ObservabilityHandle => ({\n shutdown: async () => {\n logger.debug(\"Shutdown called for LangWatch no-op. Nothing will be shutdown\");\n },\n});\n\nconst getLangWatchConfig = (options: SetupObservabilityOptions) => {\n const isDisabled = options.langwatch === 'disabled';\n const config = typeof options.langwatch === 'object' ? options.langwatch : {};\n\n return {\n disabled: isDisabled,\n apiKey: isDisabled ? void 0 : (config.apiKey ?? process.env.LANGWATCH_API_KEY),\n endpoint: isDisabled ? void 0 : (config.endpoint ?? process.env.LANGWATCH_ENDPOINT ?? DEFAULT_ENDPOINT),\n processorType: config.processorType ?? 'batch'\n };\n};\n\nconst checkForEarlyExit = (options: SetupObservabilityOptions, logger: Logger): ObservabilityHandle | null => {\n if (options.advanced?.disabled) {\n logger.debug(\"Observability disabled via advanced.disabled\");\n return createNoOpHandle(logger);\n }\n\n if (options.advanced?.skipOpenTelemetrySetup) {\n logger.debug(\"Skipping OpenTelemetry setup\");\n return createNoOpHandle(logger);\n }\n\n const globalProvider = trace.getTracerProvider();\n const alreadySetup = isConcreteProvider(globalProvider);\n\n if (alreadySetup && !options.advanced?.UNSAFE_forceOpenTelemetryReinitialization) {\n logger.error(\n `OpenTelemetry is already set up in this process.\\n` +\n `Spans will NOT be sent to LangWatch unless you add the LangWatch span processor or exporter to your existing OpenTelemetry setup.\\n` +\n `You must either:\\n` +\n ` 1. Remove your existing OpenTelemetry setup and only use LangWatch,\\n` +\n ` 2. Add the LangWatch span processor to your existing setup, or replace the existing exporter with the LangWatch exporter.\\n` +\n `\\nFor step-by-step instructions, see the LangWatch docs and check out the integration guide for your framework:\\n` +\n ` https://docs.langwatch.ai/integration/typescript/guide\\n` +\n `\\nSee also: https://github.com/open-telemetry/opentelemetry-js/issues/5299`,\n );\n return createNoOpHandle(logger);\n }\n\n if (alreadySetup) {\n logger.warn(\n \"OpenTelemetry is already set up, but UNSAFE_forceOpenTelemetryReinitialization=true. \" +\n \"Proceeding with reinitialization. This may cause conflicts.\"\n );\n }\n\n return null;\n};\n\nconst warnIfMisconfigured = (options: SetupObservabilityOptions, langwatch: ReturnType<typeof getLangWatchConfig>, logger: Logger) => {\n // Check if LangWatch is disabled but no alternative export mechanisms are provided\n // Note: If we reach this function, we know advanced.disabled and advanced.skipOpenTelemetrySetup are false\n // because those are handled as early exits in setupObservability()\n if (langwatch.disabled) {\n const hasAlternativeExport =\n options.spanProcessors?.length ??\n options.logRecordProcessors?.length ??\n options.debug?.consoleTracing ??\n options.debug?.consoleLogging ??\n options.traceExporter;\n\n if (!hasAlternativeExport) {\n const errorMessage =\n \"LangWatch integration is disabled but no custom span processors, trace exporters, or console tracing is configured. \" +\n \"OpenTelemetry will be set up but traces will not be exported anywhere. \" +\n \"Either:\\n\" +\n \" 1. Enable LangWatch integration (remove langwatch: 'disabled')\\n\" +\n \" 2. Provide custom spanProcessors, logRecordProcessors, or traceExporter\\n\" +\n \" 3. Enable debug.consoleTracing or debug.consoleLogging for development\\n\" +\n \" 4. Use advanced.disabled to completely disable observability\\n\" +\n \" 5. Use advanced.skipOpenTelemetrySetup to handle OpenTelemetry setup yourself\";\n\n if (options.advanced?.throwOnSetupError) {\n throw new Error(errorMessage);\n } else {\n logger.error(errorMessage);\n }\n }\n }\n};\n\nexport function setupObservability(options: SetupObservabilityOptions = {}): ObservabilityHandle {\n const logger = options.debug?.logger ?? new ConsoleLogger({\n level: options.debug?.logLevel ?? 'warn',\n prefix: \"LangWatch Observability SDK\",\n });\n\n initializeObservabilitySdkConfig({\n logger,\n dataCapture: options.dataCapture,\n });\n\n const earlyExit = checkForEarlyExit(options, logger);\n if (earlyExit) return earlyExit;\n\n try {\n const sdk = createAndStartNodeSdk(options, logger, createMergedResource(\n options.attributes,\n options.serviceName,\n options.resource,\n ));\n\n logger.info(\"LangWatch Observability SDK setup completed successfully\");\n\n return {\n shutdown: async () => {\n logger.debug(\"Shutting down NodeSDK\");\n await sdk?.shutdown();\n logger.info(\"NodeSDK shutdown complete\");\n },\n };\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n logger.error(`Failed to initialize NodeSDK: ${errorMessage}`);\n\n if (err instanceof Error && err.stack) {\n logger.debug(`Stack trace: ${err.stack}`);\n }\n\n if (options.advanced?.throwOnSetupError) throw err;\n return createNoOpHandle(logger);\n }\n}\n\nexport function createAndStartNodeSdk(\n options: SetupObservabilityOptions,\n logger: Logger,\n resource: Resource,\n): NodeSDK {\n const langwatch = getLangWatchConfig(options);\n\n if (langwatch.disabled) {\n logger.warn(\"LangWatch integration disabled, using user-provided SpanProcessors and LogRecordProcessors\");\n } else {\n logger.info(`Using LangWatch ${langwatch.processorType} processors for tracing and logging`);\n }\n\n const spanProcessors: SpanProcessor[] = [];\n const logProcessors: LogRecordProcessor[] = [];\n\n // Console processors\n if (options.debug?.consoleTracing) {\n spanProcessors.push(new SimpleSpanProcessor(new ConsoleSpanExporter()));\n logger.debug(\"Console tracing enabled; adding console span exporter\");\n }\n if (options.debug?.consoleLogging) {\n logProcessors.push(new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()));\n logger.debug(\"Console recording of logs enabled; adding console log record processor\");\n }\n\n if (!langwatch.disabled) {\n const traceExporter = new LangWatchTraceExporter({\n apiKey: langwatch.apiKey,\n endpoint: langwatch.endpoint,\n });\n const logExporter = new LangWatchLogsExporter({\n apiKey: langwatch.apiKey,\n endpoint: langwatch.endpoint,\n });\n\n if (langwatch.processorType === 'batch') {\n spanProcessors.push(new BatchSpanProcessor(traceExporter));\n logProcessors.push(new BatchLogRecordProcessor(logExporter));\n logger.debug(`Added LangWatch ${langwatch.processorType} SpanProcessor and LogRecordProcessor to SDK`);\n } else {\n spanProcessors.push(new SimpleSpanProcessor(traceExporter));\n logProcessors.push(new SimpleLogRecordProcessor(logExporter));\n logger.debug(`Added LangWatch ${langwatch.processorType} SpanProcessor and LogRecordProcessor to SDK`);\n }\n }\n\n if (options.traceExporter) {\n spanProcessors.push(new SimpleSpanProcessor(options.traceExporter));\n logger.debug(`Added user-provided SpanProcessor to SDK`);\n }\n\n if (options.spanProcessors?.length) {\n spanProcessors.push(...options.spanProcessors);\n logger.debug(`Added user-provided ${options.spanProcessors.length} SpanProcessors to SDK`);\n }\n if (options.logRecordProcessors?.length) {\n logProcessors.push(...options.logRecordProcessors);\n logger.debug(`Added user-provided ${options.logRecordProcessors.length} LogRecordProcessors to SDK`);\n }\n\n warnIfMisconfigured(options, langwatch, logger);\n\n // Create logger provider\n const loggerProvider = logProcessors.length ? new LoggerProvider({\n resource,\n processors: logProcessors,\n }) : void 0;\n\n if (loggerProvider) {\n logger.debug(\"Created LangWatch logger provider\");\n }\n\n const sdk = new NodeSDK({\n resource,\n serviceName: options.serviceName,\n autoDetectResources: options.autoDetectResources,\n contextManager: options.contextManager,\n textMapPropagator: options.textMapPropagator,\n metricReader: options.metricReader,\n views: options.views,\n resourceDetectors: options.resourceDetectors,\n sampler: options.sampler,\n spanProcessors,\n logRecordProcessors: logProcessors,\n spanLimits: options.spanLimits,\n idGenerator: options.idGenerator,\n instrumentations: options.instrumentations,\n });\n\n sdk.start();\n logger.info(\"NodeSDK started successfully\");\n\n // Fix for Next.js 15: Explicitly verify and register provider if still proxy\n // See: https://github.com/langwatch/langwatch/issues/753\n if (process.env.NEXT_RUNTIME === 'nodejs') {\n // Wait a tick to ensure SDK initialization completes\n setImmediate(() => {\n const globalProvider = trace.getTracerProvider();\n\n // Check if provider is still a proxy (Next.js 15 issue)\n if (globalProvider.constructor.name === 'ProxyTracerProvider') {\n logger.warn('Global provider is still ProxyTracerProvider after SDK start - applying Next.js 15 workaround');\n\n // Access the real provider from the delegate\n const realProvider = (globalProvider as any)._delegate;\n\n if (realProvider?.constructor.name === 'NodeTracerProvider') {\n // Explicitly register the real provider globally\n trace.setGlobalTracerProvider(realProvider);\n logger.info('Successfully registered NodeTracerProvider globally for Next.js 15');\n } else {\n logger.error('Could not find NodeTracerProvider in proxy delegate - spans may not be exported');\n }\n } else {\n logger.debug(`Provider registered correctly: ${globalProvider.constructor.name}`);\n }\n });\n }\n\n if (loggerProvider) {\n setLangWatchLoggerProvider(loggerProvider);\n logger.debug(\"Set LangWatch logger provider\");\n }\n\n if (!options.advanced?.disableAutoShutdown) {\n let isShuttingDown = false;\n\n const gracefulShutdown = async ({ signal, exitAfter }: { signal: string; exitAfter: boolean }) => {\n if (isShuttingDown) return;\n isShuttingDown = true;\n\n logger.debug(`${signal}: shutting down OpenTelemetry...`);\n try {\n await sdk.shutdown();\n logger.debug('OpenTelemetry shutdown complete');\n } catch (err) {\n logger.error('Error shutting down OpenTelemetry', err);\n } finally {\n if (exitAfter) {\n process.exit(0);\n }\n }\n };\n\n // Normal process exit when event loop drains (e.g. CLI scripts, one-shot programs)\n process.on('beforeExit', () => {\n void gracefulShutdown({ signal: 'beforeExit', exitAfter: false });\n });\n\n // Ctrl+C\n process.on('SIGINT', () => {\n void gracefulShutdown({ signal: 'SIGINT', exitAfter: true });\n });\n\n // External kill / Docker stop / k8s pod termination\n process.on('SIGTERM', () => {\n void gracefulShutdown({ signal: 'SIGTERM', exitAfter: true });\n });\n }\n\n return sdk;\n}\n\n/**\n * Ensure observability is set up, but only if not already configured.\n * \n * This is an idempotent function that:\n * - Does nothing if OpenTelemetry is already configured (by you or another library)\n * - Sets up LangWatch observability if no tracer provider exists\n * - Does nothing if LANGWATCH_API_KEY is not set\n * \n * This is useful for libraries/SDKs that want to ensure tracing is available\n * without conflicting with user's existing observability setup.\n * \n * @example\n * ```typescript\n * import { ensureSetup } from \"langwatch/observability/node\";\n * \n * // Safe to call - won't conflict with existing setup\n * ensureSetup();\n * \n * // Now you can use tracing\n * const tracer = trace.getTracer(\"my-app\");\n * ```\n */\nexport const ensureSetup = (): ObservabilityHandle => {\n const globalProvider = trace.getTracerProvider();\n const alreadySetup = isConcreteProvider(globalProvider);\n \n // If already set up, return no-op handle (don't log error, just silently skip)\n if (alreadySetup) {\n return {\n shutdown: async () => {\n // No-op - we didn't set up anything\n },\n };\n }\n \n // If no API key, return no-op handle (can't set up without it)\n if (!process.env.LANGWATCH_API_KEY) {\n return {\n shutdown: async () => {\n // No-op - no API key available\n },\n };\n }\n \n // Set up observability with defaults\n return setupObservability();\n};\n","import {\n defaultResource,\n type Resource,\n resourceFromAttributes,\n} from \"@opentelemetry/resources\";\nimport { type Attributes } from \"@opentelemetry/api\";\nimport * as semconv from \"@opentelemetry/semantic-conventions/incubating\";\nimport {\n LANGWATCH_SDK_LANGUAGE,\n LANGWATCH_SDK_VERSION,\n DEFAULT_SERVICE_NAME,\n LANGWATCH_SDK_NAME_OBSERVABILITY,\n} from \"../../internal/constants\";\nimport {\n ATTR_LANGWATCH_SDK_NAME,\n ATTR_LANGWATCH_SDK_VERSION,\n ATTR_LANGWATCH_SDK_LANGUAGE,\n} from \"../semconv/attributes\";\n\n/**\n * Creates a merged resource from the given attributes, service name, and given resource.\n */\nexport function createMergedResource(\n attributes: Attributes | undefined,\n serviceName: string | undefined,\n givenResource: Resource | undefined,\n): Resource {\n const langwatchResource = resourceFromAttributes({\n [ATTR_LANGWATCH_SDK_NAME]: LANGWATCH_SDK_NAME_OBSERVABILITY,\n [ATTR_LANGWATCH_SDK_LANGUAGE]: LANGWATCH_SDK_LANGUAGE,\n [ATTR_LANGWATCH_SDK_VERSION]: LANGWATCH_SDK_VERSION,\n });\n\n const userResource = resourceFromAttributes({\n [semconv.ATTR_SERVICE_NAME]: serviceName ?? DEFAULT_SERVICE_NAME,\n ...(attributes ?? {}),\n });\n\n return (givenResource ?? defaultResource())\n .merge(langwatchResource)\n .merge(userResource);\n}\n\n/**\n * Returns the concrete OpenTelemetry provider (NodeTracerProvider or BasicTracerProvider),\n * either from the given provider or its delegate, or undefined if not found.\n */\nexport function getConcreteProvider(provider: unknown): unknown {\n if (!provider || typeof provider !== \"object\") return undefined;\n\n // Check provider itself\n const constructorName = (provider as any).constructor?.name;\n if ([\"NodeTracerProvider\", \"BasicTracerProvider\"].includes(constructorName)) {\n return provider;\n }\n if (typeof (provider as any).addSpanProcessor === \"function\") {\n return provider;\n }\n\n // Check one level of delegate (ProxyTracerProvider pattern)\n let delegate;\n if (typeof (provider as any).getDelegate === \"function\") {\n delegate = (provider as any).getDelegate();\n } else if ((provider as any).delegate) {\n delegate = (provider as any).delegate;\n } else if ((provider as any)._delegate) {\n // Also check for _delegate (OpenTelemetry's actual property name)\n // See: https://github.com/langwatch/langwatch/issues/753\n delegate = (provider as any)._delegate;\n }\n\n if (delegate && typeof delegate === \"object\") {\n const delegateConstructorName = delegate.constructor?.name;\n if ([\"NodeTracerProvider\", \"BasicTracerProvider\"].includes(delegateConstructorName)) {\n return delegate;\n }\n if (typeof delegate.addSpanProcessor === \"function\") {\n return delegate;\n }\n }\n\n return void 0;\n}\n\n/**\n * Returns true if the given provider (or its delegate) is a concrete OpenTelemetry provider.\n */\nexport function isConcreteProvider(provider: unknown): boolean {\n return !!getConcreteProvider(provider);\n}\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,0BAA0B,yBAAkD,0BAA0B,sBAAsB;;;ACDrI;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AAEP,YAAY,aAAa;AAgBlB,SAAS,qBACd,YACA,aACA,eACU;AACV,QAAM,oBAAoB,uBAAuB;AAAA,IAC/C,CAAC,uBAAuB,GAAG;AAAA,IAC3B,CAAC,2BAA2B,GAAG;AAAA,IAC/B,CAAC,0BAA0B,GAAG;AAAA,EAChC,CAAC;AAED,QAAM,eAAe,uBAAuB;AAAA,IAC1C,CAAS,yBAAiB,GAAG,oCAAe;AAAA,KACxC,kCAAc,CAAC,EACpB;AAED,UAAQ,wCAAiB,gBAAgB,GACtC,MAAM,iBAAiB,EACvB,MAAM,YAAY;AACvB;AAMO,SAAS,oBAAoB,UAA4B;AA/ChE;AAgDE,MAAI,CAAC,YAAY,OAAO,aAAa,SAAU,QAAO;AAGtD,QAAM,mBAAmB,cAAiB,gBAAjB,mBAA8B;AACvD,MAAI,CAAC,sBAAsB,qBAAqB,EAAE,SAAS,eAAe,GAAG;AAC3E,WAAO;AAAA,EACT;AACA,MAAI,OAAQ,SAAiB,qBAAqB,YAAY;AAC5D,WAAO;AAAA,EACT;AAGA,MAAI;AACJ,MAAI,OAAQ,SAAiB,gBAAgB,YAAY;AACvD,eAAY,SAAiB,YAAY;AAAA,EAC3C,WAAY,SAAiB,UAAU;AACrC,eAAY,SAAiB;AAAA,EAC/B,WAAY,SAAiB,WAAW;AAGtC,eAAY,SAAiB;AAAA,EAC/B;AAEA,MAAI,YAAY,OAAO,aAAa,UAAU;AAC5C,UAAM,2BAA0B,cAAS,gBAAT,mBAAsB;AACtD,QAAI,CAAC,sBAAsB,qBAAqB,EAAE,SAAS,uBAAuB,GAAG;AACnF,aAAO;AAAA,IACT;AACA,QAAI,OAAO,SAAS,qBAAqB,YAAY;AACnD,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAKO,SAAS,mBAAmB,UAA4B;AAC7D,SAAO,CAAC,CAAC,oBAAoB,QAAQ;AACvC;;;ADrFA,SAAS,aAAa;AACtB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AASP,IAAM,mBAAmB,CAAC,YAAyC;AAAA,EACjE,UAAU,YAAY;AACpB,WAAO,MAAM,+DAA+D;AAAA,EAC9E;AACF;AAEA,IAAM,qBAAqB,CAAC,YAAuC;AAzBnE;AA0BE,QAAM,aAAa,QAAQ,cAAc;AACzC,QAAM,SAAS,OAAO,QAAQ,cAAc,WAAW,QAAQ,YAAY,CAAC;AAE5E,SAAO;AAAA,IACL,UAAU;AAAA,IACV,QAAQ,aAAa,UAAU,YAAO,WAAP,YAAiB,QAAQ,IAAI;AAAA,IAC5D,UAAU,aAAa,UAAU,kBAAO,aAAP,YAAmB,QAAQ,IAAI,uBAA/B,YAAqD;AAAA,IACtF,gBAAe,YAAO,kBAAP,YAAwB;AAAA,EACzC;AACF;AAEA,IAAM,oBAAoB,CAAC,SAAoC,WAA+C;AArC9G;AAsCE,OAAI,aAAQ,aAAR,mBAAkB,UAAU;AAC9B,WAAO,MAAM,8CAA8C;AAC3D,WAAO,iBAAiB,MAAM;AAAA,EAChC;AAEA,OAAI,aAAQ,aAAR,mBAAkB,wBAAwB;AAC5C,WAAO,MAAM,8BAA8B;AAC3C,WAAO,iBAAiB,MAAM;AAAA,EAChC;AAEA,QAAM,iBAAiB,MAAM,kBAAkB;AAC/C,QAAM,eAAe,mBAAmB,cAAc;AAEtD,MAAI,gBAAgB,GAAC,aAAQ,aAAR,mBAAkB,4CAA2C;AAChF,WAAO;AAAA,MACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQF;AACA,WAAO,iBAAiB,MAAM;AAAA,EAChC;AAEA,MAAI,cAAc;AAChB,WAAO;AAAA,MACL;AAAA,IAEF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,sBAAsB,CAAC,SAAoC,WAAkD,WAAmB;AA3EtI;AA+EE,MAAI,UAAU,UAAU;AACtB,UAAM,wBACJ,qCAAQ,mBAAR,mBAAwB,WAAxB,aACA,aAAQ,wBAAR,mBAA6B,WAD7B,aAEA,aAAQ,UAAR,mBAAe,mBAFf,aAGA,aAAQ,UAAR,mBAAe,mBAHf,YAIA,QAAQ;AAEV,QAAI,CAAC,sBAAsB;AACzB,YAAM,eACJ;AASF,WAAI,aAAQ,aAAR,mBAAkB,mBAAmB;AACvC,cAAM,IAAI,MAAM,YAAY;AAAA,MAC9B,OAAO;AACL,eAAO,MAAM,YAAY;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,UAAqC,CAAC,GAAwB;AA3GjG;AA4GE,QAAM,UAAS,mBAAQ,UAAR,mBAAe,WAAf,YAAyB,IAAI,cAAc;AAAA,IACxD,QAAO,mBAAQ,UAAR,mBAAe,aAAf,YAA2B;AAAA,IAClC,QAAQ;AAAA,EACV,CAAC;AAED,mCAAiC;AAAA,IAC/B;AAAA,IACA,aAAa,QAAQ;AAAA,EACvB,CAAC;AAED,QAAM,YAAY,kBAAkB,SAAS,MAAM;AACnD,MAAI,UAAW,QAAO;AAEtB,MAAI;AACF,UAAM,MAAM,sBAAsB,SAAS,QAAQ;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,KAAK,0DAA0D;AAEtE,WAAO;AAAA,MACL,UAAU,YAAY;AACpB,eAAO,MAAM,uBAAuB;AACpC,eAAM,2BAAK;AACX,eAAO,KAAK,2BAA2B;AAAA,MACzC;AAAA,IACF;AAAA,EACF,SAAS,KAAK;AACZ,UAAM,eAAe,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AACpE,WAAO,MAAM,iCAAiC,YAAY,EAAE;AAE5D,QAAI,eAAe,SAAS,IAAI,OAAO;AACrC,aAAO,MAAM,gBAAgB,IAAI,KAAK,EAAE;AAAA,IAC1C;AAEA,SAAI,aAAQ,aAAR,mBAAkB,kBAAmB,OAAM;AAC/C,WAAO,iBAAiB,MAAM;AAAA,EAChC;AACF;AAEO,SAAS,sBACd,SACA,QACA,UACS;AA1JX;AA2JE,QAAM,YAAY,mBAAmB,OAAO;AAE5C,MAAI,UAAU,UAAU;AACtB,WAAO,KAAK,4FAA4F;AAAA,EAC1G,OAAO;AACL,WAAO,KAAK,mBAAmB,UAAU,aAAa,qCAAqC;AAAA,EAC7F;AAEA,QAAM,iBAAkC,CAAC;AACzC,QAAM,gBAAsC,CAAC;AAG7C,OAAI,aAAQ,UAAR,mBAAe,gBAAgB;AACjC,mBAAe,KAAK,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,CAAC;AACtE,WAAO,MAAM,uDAAuD;AAAA,EACtE;AACA,OAAI,aAAQ,UAAR,mBAAe,gBAAgB;AACjC,kBAAc,KAAK,IAAI,yBAAyB,IAAI,yBAAyB,CAAC,CAAC;AAC/E,WAAO,MAAM,wEAAwE;AAAA,EACvF;AAEA,MAAI,CAAC,UAAU,UAAU;AACvB,UAAM,gBAAgB,IAAI,uBAAuB;AAAA,MAC/C,QAAQ,UAAU;AAAA,MAClB,UAAU,UAAU;AAAA,IACtB,CAAC;AACD,UAAM,cAAc,IAAI,sBAAsB;AAAA,MAC5C,QAAQ,UAAU;AAAA,MAClB,UAAU,UAAU;AAAA,IACtB,CAAC;AAED,QAAI,UAAU,kBAAkB,SAAS;AACvC,qBAAe,KAAK,IAAI,mBAAmB,aAAa,CAAC;AACzD,oBAAc,KAAK,IAAI,wBAAwB,WAAW,CAAC;AAC3D,aAAO,MAAM,mBAAmB,UAAU,aAAa,8CAA8C;AAAA,IACvG,OAAO;AACL,qBAAe,KAAK,IAAI,oBAAoB,aAAa,CAAC;AAC1D,oBAAc,KAAK,IAAI,yBAAyB,WAAW,CAAC;AAC5D,aAAO,MAAM,mBAAmB,UAAU,aAAa,8CAA8C;AAAA,IACvG;AAAA,EACF;AAEA,MAAI,QAAQ,eAAe;AACzB,mBAAe,KAAK,IAAI,oBAAoB,QAAQ,aAAa,CAAC;AAClE,WAAO,MAAM,0CAA0C;AAAA,EACzD;AAEA,OAAI,aAAQ,mBAAR,mBAAwB,QAAQ;AAClC,mBAAe,KAAK,GAAG,QAAQ,cAAc;AAC7C,WAAO,MAAM,uBAAuB,QAAQ,eAAe,MAAM,wBAAwB;AAAA,EAC3F;AACA,OAAI,aAAQ,wBAAR,mBAA6B,QAAQ;AACvC,kBAAc,KAAK,GAAG,QAAQ,mBAAmB;AACjD,WAAO,MAAM,uBAAuB,QAAQ,oBAAoB,MAAM,6BAA6B;AAAA,EACrG;AAEA,sBAAoB,SAAS,WAAW,MAAM;AAG9C,QAAM,iBAAiB,cAAc,SAAS,IAAI,eAAe;AAAA,IAC/D;AAAA,IACA,YAAY;AAAA,EACd,CAAC,IAAI;AAEL,MAAI,gBAAgB;AAClB,WAAO,MAAM,mCAAmC;AAAA,EAClD;AAEA,QAAM,MAAM,IAAI,QAAQ;AAAA,IACtB;AAAA,IACA,aAAa,QAAQ;AAAA,IACrB,qBAAqB,QAAQ;AAAA,IAC7B,gBAAgB,QAAQ;AAAA,IACxB,mBAAmB,QAAQ;AAAA,IAC3B,cAAc,QAAQ;AAAA,IACtB,OAAO,QAAQ;AAAA,IACf,mBAAmB,QAAQ;AAAA,IAC3B,SAAS,QAAQ;AAAA,IACjB;AAAA,IACA,qBAAqB;AAAA,IACrB,YAAY,QAAQ;AAAA,IACpB,aAAa,QAAQ;AAAA,IACrB,kBAAkB,QAAQ;AAAA,EAC5B,CAAC;AAED,MAAI,MAAM;AACV,SAAO,KAAK,8BAA8B;AAI1C,MAAI,QAAQ,IAAI,iBAAiB,UAAU;AAEzC,iBAAa,MAAM;AACjB,YAAM,iBAAiB,MAAM,kBAAkB;AAG/C,UAAI,eAAe,YAAY,SAAS,uBAAuB;AAC7D,eAAO,KAAK,+FAA+F;AAG3G,cAAM,eAAgB,eAAuB;AAE7C,aAAI,6CAAc,YAAY,UAAS,sBAAsB;AAE3D,gBAAM,wBAAwB,YAAY;AAC1C,iBAAO,KAAK,oEAAoE;AAAA,QAClF,OAAO;AACL,iBAAO,MAAM,iFAAiF;AAAA,QAChG;AAAA,MACF,OAAO;AACL,eAAO,MAAM,kCAAkC,eAAe,YAAY,IAAI,EAAE;AAAA,MAClF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,gBAAgB;AAClB,+BAA2B,cAAc;AACzC,WAAO,MAAM,+BAA+B;AAAA,EAC9C;AAEA,MAAI,GAAC,aAAQ,aAAR,mBAAkB,sBAAqB;AAC1C,QAAI,iBAAiB;AAErB,UAAM,mBAAmB,OAAO,EAAE,QAAQ,UAAU,MAA8C;AAChG,UAAI,eAAgB;AACpB,uBAAiB;AAEjB,aAAO,MAAM,GAAG,MAAM,kCAAkC;AACxD,UAAI;AACF,cAAM,IAAI,SAAS;AACnB,eAAO,MAAM,iCAAiC;AAAA,MAChD,SAAS,KAAK;AACZ,eAAO,MAAM,qCAAqC,GAAG;AAAA,MACvD,UAAE;AACA,YAAI,WAAW;AACb,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAGA,YAAQ,GAAG,cAAc,MAAM;AAC7B,WAAK,iBAAiB,EAAE,QAAQ,cAAc,WAAW,MAAM,CAAC;AAAA,IAClE,CAAC;AAGD,YAAQ,GAAG,UAAU,MAAM;AACzB,WAAK,iBAAiB,EAAE,QAAQ,UAAU,WAAW,KAAK,CAAC;AAAA,IAC7D,CAAC;AAGD,YAAQ,GAAG,WAAW,MAAM;AAC1B,WAAK,iBAAiB,EAAE,QAAQ,WAAW,WAAW,KAAK,CAAC;AAAA,IAC9D,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAwBO,IAAM,cAAc,MAA2B;AACpD,QAAM,iBAAiB,MAAM,kBAAkB;AAC/C,QAAM,eAAe,mBAAmB,cAAc;AAGtD,MAAI,cAAc;AAChB,WAAO;AAAA,MACL,UAAU,YAAY;AAAA,MAEtB;AAAA,IACF;AAAA,EACF;AAGA,MAAI,CAAC,QAAQ,IAAI,mBAAmB;AAClC,WAAO;AAAA,MACL,UAAU,YAAY;AAAA,MAEtB;AAAA,IACF;AAAA,EACF;AAGA,SAAO,mBAAmB;AAC5B;","names":[]}
1
+ {"version":3,"sources":["../src/observability-sdk/setup/node/setup.ts","../src/observability-sdk/setup/utils.ts"],"sourcesContent":["import { NodeSDK } from \"@opentelemetry/sdk-node\";\nimport { SimpleLogRecordProcessor, BatchLogRecordProcessor, type LogRecordProcessor, ConsoleLogRecordExporter, LoggerProvider } from \"@opentelemetry/sdk-logs\";\nimport { createMergedResource, isConcreteProvider } from \"../utils\";\nimport { type SetupObservabilityOptions, type ObservabilityHandle } from \"./types\";\nimport { trace } from \"@opentelemetry/api\";\nimport {\n ConsoleSpanExporter,\n SimpleSpanProcessor,\n BatchSpanProcessor,\n type SpanProcessor,\n} from \"@opentelemetry/sdk-trace-base\";\nimport { type Resource } from \"@opentelemetry/resources\";\nimport { LangWatchLogsExporter, LangWatchTraceExporter } from \"../../exporters\";\nimport { ConsoleLogger, type Logger } from \"../../../logger\";\nimport { initializeObservabilitySdkConfig } from \"../../config\";\nimport { setLangWatchLoggerProvider } from \"../../logger\";\nimport { DEFAULT_ENDPOINT } from \"@/internal/constants\";\n\n// Helper functions\nconst createNoOpHandle = (logger: Logger): ObservabilityHandle => ({\n shutdown: async () => {\n logger.debug(\"Shutdown called for LangWatch no-op. Nothing will be shutdown\");\n },\n});\n\nconst getLangWatchConfig = (options: SetupObservabilityOptions) => {\n const isDisabled = options.langwatch === 'disabled';\n const config = typeof options.langwatch === 'object' ? options.langwatch : {};\n\n return {\n disabled: isDisabled,\n apiKey: isDisabled ? void 0 : (config.apiKey ?? process.env.LANGWATCH_API_KEY),\n endpoint: isDisabled ? void 0 : (config.endpoint ?? process.env.LANGWATCH_ENDPOINT ?? DEFAULT_ENDPOINT),\n processorType: config.processorType ?? 'batch'\n };\n};\n\nconst checkForEarlyExit = (options: SetupObservabilityOptions, logger: Logger): ObservabilityHandle | null => {\n if (options.advanced?.disabled) {\n logger.debug(\"Observability disabled via advanced.disabled\");\n return createNoOpHandle(logger);\n }\n\n if (options.advanced?.skipOpenTelemetrySetup) {\n logger.debug(\"Skipping OpenTelemetry setup\");\n return createNoOpHandle(logger);\n }\n\n const globalProvider = trace.getTracerProvider();\n const alreadySetup = isConcreteProvider(globalProvider);\n\n if (alreadySetup && !options.advanced?.UNSAFE_forceOpenTelemetryReinitialization) {\n logger.error(\n `OpenTelemetry is already set up in this process.\\n` +\n `Spans will NOT be sent to LangWatch unless you add the LangWatch span processor or exporter to your existing OpenTelemetry setup.\\n` +\n `You must either:\\n` +\n ` 1. Remove your existing OpenTelemetry setup and only use LangWatch,\\n` +\n ` 2. Add the LangWatch span processor to your existing setup, or replace the existing exporter with the LangWatch exporter.\\n` +\n `\\nFor step-by-step instructions, see the LangWatch docs and check out the integration guide for your framework:\\n` +\n ` https://docs.langwatch.ai/integration/typescript/guide\\n` +\n `\\nSee also: https://github.com/open-telemetry/opentelemetry-js/issues/5299`,\n );\n return createNoOpHandle(logger);\n }\n\n if (alreadySetup) {\n logger.warn(\n \"OpenTelemetry is already set up, but UNSAFE_forceOpenTelemetryReinitialization=true. \" +\n \"Proceeding with reinitialization. This may cause conflicts.\"\n );\n }\n\n return null;\n};\n\nconst warnIfMisconfigured = (options: SetupObservabilityOptions, langwatch: ReturnType<typeof getLangWatchConfig>, logger: Logger) => {\n // Check if LangWatch is disabled but no alternative export mechanisms are provided\n // Note: If we reach this function, we know advanced.disabled and advanced.skipOpenTelemetrySetup are false\n // because those are handled as early exits in setupObservability()\n if (langwatch.disabled) {\n const hasAlternativeExport =\n options.spanProcessors?.length ??\n options.logRecordProcessors?.length ??\n options.debug?.consoleTracing ??\n options.debug?.consoleLogging ??\n options.traceExporter;\n\n if (!hasAlternativeExport) {\n const errorMessage =\n \"LangWatch integration is disabled but no custom span processors, trace exporters, or console tracing is configured. \" +\n \"OpenTelemetry will be set up but traces will not be exported anywhere. \" +\n \"Either:\\n\" +\n \" 1. Enable LangWatch integration (remove langwatch: 'disabled')\\n\" +\n \" 2. Provide custom spanProcessors, logRecordProcessors, or traceExporter\\n\" +\n \" 3. Enable debug.consoleTracing or debug.consoleLogging for development\\n\" +\n \" 4. Use advanced.disabled to completely disable observability\\n\" +\n \" 5. Use advanced.skipOpenTelemetrySetup to handle OpenTelemetry setup yourself\";\n\n if (options.advanced?.throwOnSetupError) {\n throw new Error(errorMessage);\n } else {\n logger.error(errorMessage);\n }\n }\n }\n};\n\nexport function setupObservability(options: SetupObservabilityOptions = {}): ObservabilityHandle {\n const logger = options.debug?.logger ?? new ConsoleLogger({\n level: options.debug?.logLevel ?? 'warn',\n prefix: \"LangWatch Observability SDK\",\n });\n\n initializeObservabilitySdkConfig({\n logger,\n dataCapture: options.dataCapture,\n });\n\n const earlyExit = checkForEarlyExit(options, logger);\n if (earlyExit) return earlyExit;\n\n try {\n const sdk = createAndStartNodeSdk(options, logger, createMergedResource(\n options.attributes,\n options.serviceName,\n options.resource,\n ));\n\n logger.info(\"LangWatch Observability SDK setup completed successfully\");\n\n return {\n shutdown: async () => {\n logger.debug(\"Shutting down NodeSDK\");\n await sdk?.shutdown();\n logger.info(\"NodeSDK shutdown complete\");\n },\n };\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n logger.error(`Failed to initialize NodeSDK: ${errorMessage}`);\n\n if (err instanceof Error && err.stack) {\n logger.debug(`Stack trace: ${err.stack}`);\n }\n\n if (options.advanced?.throwOnSetupError) throw err;\n return createNoOpHandle(logger);\n }\n}\n\nexport function createAndStartNodeSdk(\n options: SetupObservabilityOptions,\n logger: Logger,\n resource: Resource,\n): NodeSDK {\n const langwatch = getLangWatchConfig(options);\n\n if (langwatch.disabled) {\n logger.warn(\"LangWatch integration disabled, using user-provided SpanProcessors and LogRecordProcessors\");\n } else {\n logger.info(`Using LangWatch ${langwatch.processorType} processors for tracing and logging`);\n }\n\n const spanProcessors: SpanProcessor[] = [];\n const logProcessors: LogRecordProcessor[] = [];\n\n // Console processors\n if (options.debug?.consoleTracing) {\n spanProcessors.push(new SimpleSpanProcessor(new ConsoleSpanExporter()));\n logger.debug(\"Console tracing enabled; adding console span exporter\");\n }\n if (options.debug?.consoleLogging) {\n logProcessors.push(new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()));\n logger.debug(\"Console recording of logs enabled; adding console log record processor\");\n }\n\n if (!langwatch.disabled) {\n const traceExporter = new LangWatchTraceExporter({\n apiKey: langwatch.apiKey,\n endpoint: langwatch.endpoint,\n });\n const logExporter = new LangWatchLogsExporter({\n apiKey: langwatch.apiKey,\n endpoint: langwatch.endpoint,\n });\n\n if (langwatch.processorType === 'batch') {\n spanProcessors.push(new BatchSpanProcessor(traceExporter));\n logProcessors.push(new BatchLogRecordProcessor(logExporter));\n logger.debug(`Added LangWatch ${langwatch.processorType} SpanProcessor and LogRecordProcessor to SDK`);\n } else {\n spanProcessors.push(new SimpleSpanProcessor(traceExporter));\n logProcessors.push(new SimpleLogRecordProcessor(logExporter));\n logger.debug(`Added LangWatch ${langwatch.processorType} SpanProcessor and LogRecordProcessor to SDK`);\n }\n }\n\n if (options.traceExporter) {\n spanProcessors.push(new SimpleSpanProcessor(options.traceExporter));\n logger.debug(`Added user-provided SpanProcessor to SDK`);\n }\n\n if (options.spanProcessors?.length) {\n spanProcessors.push(...options.spanProcessors);\n logger.debug(`Added user-provided ${options.spanProcessors.length} SpanProcessors to SDK`);\n }\n if (options.logRecordProcessors?.length) {\n logProcessors.push(...options.logRecordProcessors);\n logger.debug(`Added user-provided ${options.logRecordProcessors.length} LogRecordProcessors to SDK`);\n }\n\n warnIfMisconfigured(options, langwatch, logger);\n\n // Create logger provider\n const loggerProvider = logProcessors.length ? new LoggerProvider({\n resource,\n processors: logProcessors,\n }) : void 0;\n\n if (loggerProvider) {\n logger.debug(\"Created LangWatch logger provider\");\n }\n\n const sdk = new NodeSDK({\n resource,\n serviceName: options.serviceName,\n autoDetectResources: options.autoDetectResources,\n contextManager: options.contextManager,\n textMapPropagator: options.textMapPropagator,\n metricReader: options.metricReader,\n views: options.views,\n resourceDetectors: options.resourceDetectors,\n sampler: options.sampler,\n spanProcessors,\n logRecordProcessors: logProcessors,\n spanLimits: options.spanLimits,\n idGenerator: options.idGenerator,\n instrumentations: options.instrumentations,\n });\n\n sdk.start();\n logger.info(\"NodeSDK started successfully\");\n\n // Fix for Next.js 15: Explicitly verify and register provider if still proxy\n // See: https://github.com/langwatch/langwatch/issues/753\n if (process.env.NEXT_RUNTIME === 'nodejs') {\n // Wait a tick to ensure SDK initialization completes\n setImmediate(() => {\n const globalProvider = trace.getTracerProvider();\n\n // Check if provider is still a proxy (Next.js 15 issue)\n if (globalProvider.constructor.name === 'ProxyTracerProvider') {\n logger.warn('Global provider is still ProxyTracerProvider after SDK start - applying Next.js 15 workaround');\n\n // Access the real provider from the delegate\n const realProvider = (globalProvider as any)._delegate;\n\n if (realProvider?.constructor.name === 'NodeTracerProvider') {\n // Explicitly register the real provider globally\n trace.setGlobalTracerProvider(realProvider);\n logger.info('Successfully registered NodeTracerProvider globally for Next.js 15');\n } else {\n logger.error('Could not find NodeTracerProvider in proxy delegate - spans may not be exported');\n }\n } else {\n logger.debug(`Provider registered correctly: ${globalProvider.constructor.name}`);\n }\n });\n }\n\n if (loggerProvider) {\n setLangWatchLoggerProvider(loggerProvider);\n logger.debug(\"Set LangWatch logger provider\");\n }\n\n if (!options.advanced?.disableAutoShutdown) {\n let isShuttingDown = false;\n\n const gracefulShutdown = async ({ signal, exitAfter }: { signal: string; exitAfter: boolean }) => {\n if (isShuttingDown) return;\n isShuttingDown = true;\n\n logger.debug(`${signal}: shutting down OpenTelemetry...`);\n try {\n await sdk.shutdown();\n logger.debug('OpenTelemetry shutdown complete');\n } catch (err) {\n logger.error('Error shutting down OpenTelemetry', err);\n } finally {\n if (exitAfter) {\n process.exit(0);\n }\n }\n };\n\n // Normal process exit when event loop drains (e.g. CLI scripts, one-shot programs)\n process.on('beforeExit', () => {\n void gracefulShutdown({ signal: 'beforeExit', exitAfter: false });\n });\n\n // Ctrl+C\n process.on('SIGINT', () => {\n void gracefulShutdown({ signal: 'SIGINT', exitAfter: true });\n });\n\n // External kill / Docker stop / k8s pod termination\n process.on('SIGTERM', () => {\n void gracefulShutdown({ signal: 'SIGTERM', exitAfter: true });\n });\n }\n\n return sdk;\n}\n\n/**\n * Ensure observability is set up, but only if not already configured.\n * \n * This is an idempotent function that:\n * - Does nothing if OpenTelemetry is already configured (by you or another library)\n * - Sets up LangWatch observability if no tracer provider exists\n * - Does nothing if LANGWATCH_API_KEY is not set\n * \n * This is useful for libraries/SDKs that want to ensure tracing is available\n * without conflicting with user's existing observability setup.\n * \n * @example\n * ```typescript\n * import { ensureSetup } from \"langwatch/observability/node\";\n * \n * // Safe to call - won't conflict with existing setup\n * ensureSetup();\n * \n * // Now you can use tracing\n * const tracer = trace.getTracer(\"my-app\");\n * ```\n */\nexport const ensureSetup = (): ObservabilityHandle => {\n const globalProvider = trace.getTracerProvider();\n const alreadySetup = isConcreteProvider(globalProvider);\n \n // If already set up, return no-op handle (don't log error, just silently skip)\n if (alreadySetup) {\n return {\n shutdown: async () => {\n // No-op - we didn't set up anything\n },\n };\n }\n \n // If no API key, return no-op handle (can't set up without it)\n if (!process.env.LANGWATCH_API_KEY) {\n return {\n shutdown: async () => {\n // No-op - no API key available\n },\n };\n }\n \n // Set up observability with defaults\n return setupObservability();\n};\n","import {\n defaultResource,\n type Resource,\n resourceFromAttributes,\n} from \"@opentelemetry/resources\";\nimport { type Attributes } from \"@opentelemetry/api\";\nimport * as semconv from \"@opentelemetry/semantic-conventions/incubating\";\nimport {\n LANGWATCH_SDK_LANGUAGE,\n LANGWATCH_SDK_VERSION,\n DEFAULT_SERVICE_NAME,\n LANGWATCH_SDK_NAME_OBSERVABILITY,\n} from \"../../internal/constants\";\nimport {\n ATTR_LANGWATCH_SDK_NAME,\n ATTR_LANGWATCH_SDK_VERSION,\n ATTR_LANGWATCH_SDK_LANGUAGE,\n} from \"../semconv/attributes\";\n\n/**\n * Creates a merged resource from the given attributes, service name, and given resource.\n */\nexport function createMergedResource(\n attributes: Attributes | undefined,\n serviceName: string | undefined,\n givenResource: Resource | undefined,\n): Resource {\n const langwatchResource = resourceFromAttributes({\n [ATTR_LANGWATCH_SDK_NAME]: LANGWATCH_SDK_NAME_OBSERVABILITY,\n [ATTR_LANGWATCH_SDK_LANGUAGE]: LANGWATCH_SDK_LANGUAGE,\n [ATTR_LANGWATCH_SDK_VERSION]: LANGWATCH_SDK_VERSION,\n });\n\n const userResource = resourceFromAttributes({\n [semconv.ATTR_SERVICE_NAME]: serviceName ?? DEFAULT_SERVICE_NAME,\n ...(attributes ?? {}),\n });\n\n return (givenResource ?? defaultResource())\n .merge(langwatchResource)\n .merge(userResource);\n}\n\n/**\n * Returns the concrete OpenTelemetry provider (NodeTracerProvider or BasicTracerProvider),\n * either from the given provider or its delegate, or undefined if not found.\n */\nexport function getConcreteProvider(provider: unknown): unknown {\n if (!provider || typeof provider !== \"object\") return undefined;\n\n // Check provider itself\n const constructorName = (provider as any).constructor?.name;\n if ([\"NodeTracerProvider\", \"BasicTracerProvider\"].includes(constructorName)) {\n return provider;\n }\n if (typeof (provider as any).addSpanProcessor === \"function\") {\n return provider;\n }\n\n // Check one level of delegate (ProxyTracerProvider pattern)\n let delegate;\n if (typeof (provider as any).getDelegate === \"function\") {\n delegate = (provider as any).getDelegate();\n } else if ((provider as any).delegate) {\n delegate = (provider as any).delegate;\n } else if ((provider as any)._delegate) {\n // Also check for _delegate (OpenTelemetry's actual property name)\n // See: https://github.com/langwatch/langwatch/issues/753\n delegate = (provider as any)._delegate;\n }\n\n if (delegate && typeof delegate === \"object\") {\n const delegateConstructorName = delegate.constructor?.name;\n if ([\"NodeTracerProvider\", \"BasicTracerProvider\"].includes(delegateConstructorName)) {\n return delegate;\n }\n if (typeof delegate.addSpanProcessor === \"function\") {\n return delegate;\n }\n }\n\n return void 0;\n}\n\n/**\n * Returns true if the given provider (or its delegate) is a concrete OpenTelemetry provider.\n */\nexport function isConcreteProvider(provider: unknown): boolean {\n return !!getConcreteProvider(provider);\n}\n\n"],"mappings":"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","names":[]}
@@ -0,0 +1,13 @@
1
+ // src/cli/commands/tag/validation.ts
2
+ var TAG_NAME_REGEX = /^[a-z][a-z0-9_-]*$/;
3
+ function validateTagName(name) {
4
+ if (!TAG_NAME_REGEX.test(name)) {
5
+ return `Invalid tag name "${name}". Tag names must start with a lowercase letter and contain only lowercase letters, digits, hyphens, or underscores.`;
6
+ }
7
+ return null;
8
+ }
9
+
10
+ export {
11
+ validateTagName
12
+ };
13
+ //# sourceMappingURL=chunk-COMOCQA6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/tag/validation.ts"],"sourcesContent":["const TAG_NAME_REGEX = /^[a-z][a-z0-9_-]*$/;\n\n/**\n * Validates a tag name against the allowed format.\n * @param name The tag name to validate.\n * @returns An error message string if invalid, or null if valid.\n */\nexport function validateTagName(name: string): string | null {\n if (!TAG_NAME_REGEX.test(name)) {\n return `Invalid tag name \"${name}\". Tag names must start with a lowercase letter and contain only lowercase letters, digits, hyphens, or underscores.`;\n }\n return null;\n}\n"],"mappings":";AAAA,IAAM,iBAAiB;AAOhB,SAAS,gBAAgB,MAA6B;AAC3D,MAAI,CAAC,eAAe,KAAK,IAAI,GAAG;AAC9B,WAAO,qBAAqB,IAAI;AAAA,EAClC;AACA,SAAO;AACT;","names":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk2BJPLPLUjs = require('./chunk-2BJPLPLU.js');
4
+
5
+ // src/client-sdk/services/dashboards/dashboards-api.service.ts
6
+ var DashboardsApiError = class extends Error {
7
+ constructor(message, operation, originalError) {
8
+ super(message);
9
+ this.operation = operation;
10
+ this.originalError = originalError;
11
+ this.name = "DashboardsApiError";
12
+ }
13
+ };
14
+ var DashboardsApiService = class {
15
+ constructor(config) {
16
+ var _a;
17
+ this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : _chunk2BJPLPLUjs.createLangWatchApiClient.call(void 0, );
18
+ }
19
+ handleApiError(operation, error) {
20
+ var _a;
21
+ const errorMessage = typeof error === "string" ? error : error != null && typeof error === "object" && "error" in error && error.error != null ? typeof error.error === "string" ? error.error : (_a = error.error.message) != null ? _a : JSON.stringify(error.error) : error instanceof Error ? error.message : "Unknown error occurred";
22
+ throw new DashboardsApiError(
23
+ `Failed to ${operation}: ${errorMessage}`,
24
+ operation,
25
+ error
26
+ );
27
+ }
28
+ async list() {
29
+ const { data, error } = await this.apiClient.GET("/api/dashboards");
30
+ if (error) this.handleApiError("list dashboards", error);
31
+ return data;
32
+ }
33
+ async get(id) {
34
+ const { data, error } = await this.apiClient.GET("/api/dashboards/{id}", {
35
+ params: { path: { id } }
36
+ });
37
+ if (error) this.handleApiError(`get dashboard "${id}"`, error);
38
+ return data;
39
+ }
40
+ async create(params) {
41
+ const { data, error } = await this.apiClient.POST("/api/dashboards", {
42
+ body: params
43
+ });
44
+ if (error) this.handleApiError("create dashboard", error);
45
+ return data;
46
+ }
47
+ async rename(id, params) {
48
+ const { data, error } = await this.apiClient.PATCH("/api/dashboards/{id}", {
49
+ params: { path: { id } },
50
+ body: params
51
+ });
52
+ if (error) this.handleApiError(`rename dashboard "${id}"`, error);
53
+ return data;
54
+ }
55
+ async delete(id) {
56
+ const { data, error } = await this.apiClient.DELETE("/api/dashboards/{id}", {
57
+ params: { path: { id } }
58
+ });
59
+ if (error) this.handleApiError(`delete dashboard "${id}"`, error);
60
+ return data;
61
+ }
62
+ };
63
+
64
+
65
+
66
+
67
+ exports.DashboardsApiError = DashboardsApiError; exports.DashboardsApiService = DashboardsApiService;
68
+ //# sourceMappingURL=chunk-CYRJSLKD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-CYRJSLKD.js","../src/client-sdk/services/dashboards/dashboards-api.service.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACoBO,IAAM,mBAAA,EAAN,MAAA,QAAiC,MAAM;AAAA,EAC5C,WAAA,CACE,OAAA,EACgB,SAAA,EACA,aAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHG,IAAA,IAAA,CAAA,UAAA,EAAA,SAAA;AACA,IAAA,IAAA,CAAA,cAAA,EAAA,aAAA;AAGhB,IAAA,IAAA,CAAK,KAAA,EAAO,oBAAA;AAAA,EACd;AACF,CAAA;AAEO,IAAM,qBAAA,EAAN,MAA2B;AAAA,EAGhC,WAAA,CAAY,MAAA,EAAqD;AAtCnE,IAAA,IAAA,EAAA;AAuCI,IAAA,IAAA,CAAK,UAAA,EAAA,CAAY,GAAA,EAAA,OAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,MAAA,CAAQ,kBAAA,EAAA,GAAR,KAAA,EAAA,GAAA,EAA8B,uDAAA,CAAyB;AAAA,EAC1E;AAAA,EAEQ,cAAA,CAAe,SAAA,EAAmB,KAAA,EAAuB;AA1CnE,IAAA,IAAA,EAAA;AA2CI,IAAA,MAAM,aAAA,EACJ,OAAO,MAAA,IAAU,SAAA,EACb,MAAA,EACA,MAAA,GAAS,KAAA,GACP,OAAO,MAAA,IAAU,SAAA,GACjB,QAAA,GAAW,MAAA,GACX,KAAA,CAAM,MAAA,GAAS,KAAA,EACf,OAAO,KAAA,CAAM,MAAA,IAAU,SAAA,EACrB,KAAA,CAAM,MAAA,EAAA,CACL,GAAA,EAAA,KAAA,CAAM,KAAA,CAA+B,OAAA,EAAA,GAArC,KAAA,EAAA,GAAA,EACD,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,KAAK,EAAA,EAC5B,MAAA,WAAiB,MAAA,EACf,KAAA,CAAM,QAAA,EACN,wBAAA;AAEV,IAAA,MAAM,IAAI,kBAAA;AAAA,MACR,CAAA,UAAA,EAAa,SAAS,CAAA,EAAA,EAAK,YAAY,CAAA,CAAA;AACvC,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AAEoD,EAAA;AACf,IAAA;AACJ,IAAA;AACxB,IAAA;AACT,EAAA;AAEgD,EAAA;AACX,IAAA;AACV,MAAA;AACxB,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AAEiE,EAAA;AAC5B,IAAA;AAC3B,MAAA;AACP,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AAE6E,EAAA;AACxC,IAAA;AACV,MAAA;AACjB,MAAA;AACP,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AAEgE,EAAA;AAC3B,IAAA;AACV,MAAA;AACxB,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AACF;ADzC8C;AACA;AACA;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-CYRJSLKD.js","sourcesContent":[null,"import {\n createLangWatchApiClient,\n type LangwatchApiClient,\n} from \"@/internal/api/client\";\nimport { type InternalConfig } from \"@/client-sdk/types\";\n\nexport interface DashboardSummary {\n id: string;\n name: string;\n order: number;\n graphCount: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface DashboardDetail {\n id: string;\n name: string;\n order: number;\n graphs: unknown[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport class DashboardsApiError extends Error {\n constructor(\n message: string,\n public readonly operation: string,\n public readonly originalError?: unknown,\n ) {\n super(message);\n this.name = \"DashboardsApiError\";\n }\n}\n\nexport class DashboardsApiService {\n private readonly apiClient: LangwatchApiClient;\n\n constructor(config?: Pick<InternalConfig, \"langwatchApiClient\">) {\n this.apiClient = config?.langwatchApiClient ?? createLangWatchApiClient();\n }\n\n private handleApiError(operation: string, error: unknown): never {\n const errorMessage =\n typeof error === \"string\"\n ? error\n : error != null &&\n typeof error === \"object\" &&\n \"error\" in error &&\n error.error != null\n ? typeof error.error === \"string\"\n ? error.error\n : (error.error as { message?: string }).message ??\n JSON.stringify(error.error)\n : error instanceof Error\n ? error.message\n : \"Unknown error occurred\";\n\n throw new DashboardsApiError(\n `Failed to ${operation}: ${errorMessage}`,\n operation,\n error,\n );\n }\n\n async list(): Promise<{ data: DashboardSummary[] }> {\n const { data, error } = await this.apiClient.GET(\"/api/dashboards\");\n if (error) this.handleApiError(\"list dashboards\", error);\n return data as unknown as { data: DashboardSummary[] };\n }\n\n async get(id: string): Promise<DashboardDetail> {\n const { data, error } = await this.apiClient.GET(\"/api/dashboards/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`get dashboard \"${id}\"`, error);\n return data as unknown as DashboardDetail;\n }\n\n async create(params: { name: string }): Promise<DashboardDetail> {\n const { data, error } = await this.apiClient.POST(\"/api/dashboards\", {\n body: params,\n });\n if (error) this.handleApiError(\"create dashboard\", error);\n return data as unknown as DashboardDetail;\n }\n\n async rename(id: string, params: { name: string }): Promise<DashboardDetail> {\n const { data, error } = await this.apiClient.PATCH(\"/api/dashboards/{id}\", {\n params: { path: { id } },\n body: params,\n });\n if (error) this.handleApiError(`rename dashboard \"${id}\"`, error);\n return data as unknown as DashboardDetail;\n }\n\n async delete(id: string): Promise<{ id: string; name: string }> {\n const { data, error } = await this.apiClient.DELETE(\"/api/dashboards/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`delete dashboard \"${id}\"`, error);\n return data as unknown as { id: string; name: string };\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});// package.json
2
- var version = "0.20.0";
2
+ var version = "0.22.0";
3
3
 
4
4
  // src/internal/runtime.ts
5
5
  var _runtime;
@@ -60,4 +60,4 @@ var LOGS_PATH = "/api/otel/v1/logs";
60
60
 
61
61
 
62
62
  exports.version = version; exports.LANGWATCH_SDK_RUNTIME = LANGWATCH_SDK_RUNTIME; exports.LANGWATCH_SDK_NAME_OBSERVABILITY = LANGWATCH_SDK_NAME_OBSERVABILITY; exports.LANGWATCH_SDK_NAME_CLIENT = LANGWATCH_SDK_NAME_CLIENT; exports.LANGWATCH_SDK_LANGUAGE = LANGWATCH_SDK_LANGUAGE; exports.LANGWATCH_SDK_VERSION = LANGWATCH_SDK_VERSION; exports.DEFAULT_ENDPOINT = DEFAULT_ENDPOINT; exports.DEFAULT_SERVICE_NAME = DEFAULT_SERVICE_NAME; exports.TRACES_PATH = TRACES_PATH; exports.LOGS_PATH = LOGS_PATH;
63
- //# sourceMappingURL=chunk-BJUXJHMQ.js.map
63
+ //# sourceMappingURL=chunk-D2FHOR76.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-BJUXJHMQ.js","../package.json","../src/internal/runtime.ts","../src/internal/constants.ts"],"names":[],"mappings":"AAAA;ACEI,IAAA,QAAA,EAAW,QAAA;ADAf;AACA;AEDA,IAAI,QAAA;AAMG,IAAM,WAAA,EAAa,CAAA,EAAA,GAAiB;AACzC,EAAA,SAAA,GAAA,KAAA,EAAA,SAAA,EAAA,SAAA,EAAa,aAAA,CAAc,CAAA;AAC3B,EAAA,OAAO,QAAA;AACT,CAAA;AAcO,SAAS,aAAA,CAAc,OAAA,EAA0B;AAzBxD,EAAA,IAAA,EAAA;AA0BE,EAAA,IAAI,EAAA,EAAI,UAAA;AACR,EAAA,GAAA,CAAI,OAAA,EAAS;AACX,IAAA,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,SAAA,IAAa,MAAA,EAAQ;AACnC,MAAA,EAAA,EAAI,OAAA;AAAA,IACN,EAAA,KAAO;AACL,MAAA,OAAA,CAAQ,IAAA,CAAK,oGAAoG,CAAA;AAAA,IACnH;AAAA,EACF;AAEA,EAAA,IAAI;AACF,IAAA,GAAA,CACE,OAAA,GAAU,EAAA,GACV,OAAO,CAAA,CAAE,KAAA,IAAS,SAAA,GAClB,CAAA,CAAE,KAAA,GACF,UAAA,GAAa,CAAA,CAAE,KAAA,GACf,OAAO,CAAA,CAAE,IAAA,CAAK,QAAA,IAAY,QAAA,EAC1B;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,GAAA,CACE,MAAA,GAAS,EAAA,GACT,OAAO,CAAA,CAAE,IAAA,IAAQ,SAAA,GACjB,CAAA,CAAE,IAAA,GACF,UAAA,GAAa,CAAA,CAAE,IAAA,GACf,OAAO,CAAA,CAAE,GAAA,CAAI,QAAA,IAAY,QAAA,EACzB;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,GAAA,CACE,UAAA,GAAa,EAAA,GACb,OAAO,CAAA,CAAE,QAAA,IAAY,SAAA,GACrB,CAAA,CAAE,QAAA,GACF,OAAO,CAAA,CAAE,OAAA,CAAQ,SAAA,IAAa,SAAA,GAC9B,OAAO,CAAA,CAAE,OAAA,CAAQ,QAAA,CAAS,KAAA,IAAS,QAAA,EACnC;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,GAAA,CACE,OAAA,CAAA,CAAO,GAAA,EAAA,CAAA,CAAE,MAAA,EAAA,GAAF,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAU,QAAA,EAAA,IAAa,YAAA,GAC9B,EAAA,IAAM,CAAA,CAAE,MAAA,EACR;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,OAAO,SAAA;AAAA,EACT,EAAA,MAAA,CAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,IAAA,CAAK,oDAAA,EAAsD,KAAK,CAAA;AACxE,IAAA,OAAO,SAAA;AAAA,EACT;AACF;AFpCA;AACA;AGpCO,IAAM,sBAAA,EAAwB,UAAA;AAE9B,IAAM,iCAAA,EAAmC,6BAAA;AACzC,IAAM,0BAAA,EAA4B,sBAAA;AAClC,IAAM,uBAAA,EAAyB,YAAA;AAC/B,IAAM,sBAAA,EAAwB,OAAA;AAE9B,IAAM,iBAAA,EAAmB,2BAAA;AACzB,IAAM,qBAAA,EAAuB,2BAAA;AAE7B,IAAM,YAAA,EAAc,qBAAA;AACpB,IAAM,UAAA,EAAY,mBAAA;AHmCzB;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,ifAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-BJUXJHMQ.js","sourcesContent":[null,"{\n \"name\": \"langwatch\",\n \"version\": \"0.20.0\",\n \"description\": \"LangWatch TypeScript/JavaScript SDK. Interact with the full LangWatch API and use the LangWatch OpenTelemetry SDK to instrument your application. For more information, see https://docs.langwatch.ai/integration/typescript/guide\",\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.mjs\",\n \"types\": \"dist/index.d.ts\",\n \"author\": \"LangWatch\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=20\",\n \"pnpm\": \">=8\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"bin\": {\n \"langwatch\": \"./dist/cli/index.js\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.js\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability-sdk/index.d.ts\",\n \"require\": \"./dist/observability-sdk/index.js\",\n \"import\": \"./dist/observability-sdk/index.mjs\"\n },\n \"./observability/node\": {\n \"types\": \"./dist/observability-sdk/setup/node/index.d.ts\",\n \"require\": \"./dist/observability-sdk/setup/node/index.js\",\n \"import\": \"./dist/observability-sdk/setup/node/index.mjs\"\n },\n \"./observability/instrumentation/langchain\": {\n \"types\": \"./dist/observability-sdk/instrumentation/langchain/index.d.ts\",\n \"require\": \"./dist/observability-sdk/instrumentation/langchain/index.js\",\n \"import\": \"./dist/observability-sdk/instrumentation/langchain/index.mjs\"\n }\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/langwatch/langwatch.git\",\n \"directory\": \"typescript-sdk\"\n },\n \"scripts\": {\n \"prepare\": \"pnpm run generate:server-types && pnpm run generate:openapi-types\",\n \"cli\": \"node dist/cli/index.js\",\n \"lint\": \"eslint .\",\n \"test\": \"vitest\",\n \"test:unit\": \"vitest run --exclude '**/*.integration.test.ts'\",\n \"test:e2e\": \"dotenv -- vitest run -c ./vitest.e2e.config.mts\",\n \"test:seed\": \"dotenv -e .env.test -- bash -c 'cd ../langwatch && pnpm prisma:seed'\",\n \"prebuild\": \"pnpm run prepare\",\n \"build\": \"tsc --noEmit && tsup\",\n \"tarball\": \"pnpm build && pnpm pack\",\n \"typecheck\": \"tsc --noEmit\",\n \"prepublish\": \"pnpm run build\",\n \"generate:openapi-types\": \"pnpx openapi-typescript ../langwatch/src/app/api/openapiLangWatch.json -o ./src/internal/generated/openapi/api-client.ts\",\n \"generate:server-types\": \"./copy-types.sh\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.32.0\",\n \"@langchain/core\": \">=0.3.68 <0.4.0\",\n \"@langchain/langgraph\": \">=0.4.0 <1.0.0\",\n \"@langchain/openai\": \">=0.6.0 <1.0.0\",\n \"@opentelemetry/sdk-node\": \"0.205.0\",\n \"@opentelemetry/sdk-trace-node\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-web\": \">=2.0.1\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/node\": \"^24.1.0\",\n \"@typescript/native-preview\": \"7.0.0-dev.20250804.1\",\n \"@vercel/otel\": \"^1.13.0\",\n \"@vitest/coverage-v8\": \"3.2.4\",\n \"dotenv-cli\": \"^11.0.0\",\n \"esbuild\": \"^0.27.3\",\n \"eslint\": \"^9.32.0\",\n \"fets\": \"^0.8.5\",\n \"fishery\": \"^2.3.1\",\n \"langchain\": \">=0.3.0 <2.0.0\",\n \"msw\": \"^2.10.4\",\n \"nock\": \"^14.0.8\",\n \"openapi-msw\": \"^1.2.0\",\n \"ts-to-zod\": \"4.0.1\",\n \"tsup\": \"^8.5.0\",\n \"typescript\": \"^5.9.2\",\n \"typescript-eslint\": \"^8.38.0\",\n \"vitest\": \"^3.2.4\",\n \"vitest-mock-extended\": \"^3.1.0\",\n \"yaml\": \"^2.8.1\",\n \"@opentelemetry/api\": \"^1.9.0\"\n },\n \"dependencies\": {\n \"@opentelemetry/api-logs\": \"0.205.0\",\n \"@opentelemetry/core\": \"^2.0.1\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"0.205.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"0.205.0\",\n \"@opentelemetry/instrumentation\": \"0.212.0\",\n \"@opentelemetry/resources\": \"^2.0.1\",\n \"@opentelemetry/sdk-logs\": \"0.205.0\",\n \"@opentelemetry/sdk-metrics\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-base\": \"^2.0.1\",\n \"@opentelemetry/semantic-conventions\": \"^1.36.0\",\n \"@types/prompts\": \"^2.4.9\",\n \"chalk\": \"^4.1.2\",\n \"commander\": \"^12.0.0\",\n \"dotenv\": \"^17.3.1\",\n \"js-yaml\": \"^4.1.0\",\n \"liquidjs\": \"^10.21.1\",\n \"open\": \"^11.0.0\",\n \"openapi-fetch\": \"^0.16.0\",\n \"ora\": \"^9.3.0\",\n \"prompts\": \"^2.4.2\",\n \"xksuid\": \"^0.0.4\",\n \"zod\": \"^4.0.14\"\n },\n \"peerDependencies\": {\n \"@opentelemetry/api\": \"^1.9.0\",\n \"@ai-sdk/openai\": \">=2.0.0 <4.0.0\",\n \"@langchain/core\": \">=0.3.0 <2.0.0\",\n \"@langchain/langgraph\": \">=0.4.0 <2.0.0\",\n \"@langchain/openai\": \">=0.6.0 <2.0.0\",\n \"@opentelemetry/context-async-hooks\": \"^2.1.0\",\n \"@opentelemetry/context-zone\": \">=1.19.0 <3.0.0\",\n \"@opentelemetry/sdk-node\": \">=0.200.0 <1.0.0\",\n \"@opentelemetry/sdk-trace-web\": \">=1.19.0 <3.0.0\",\n \"langchain\": \">=0.3.0 <2.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@ai-sdk/openai\": {\n \"optional\": true\n },\n \"@langchain/core\": {\n \"optional\": true\n },\n \"@langchain/langgraph\": {\n \"optional\": true\n },\n \"@langchain/openai\": {\n \"optional\": true\n },\n \"@opentelemetry/context-async-hooks\": {\n \"optional\": true\n },\n \"@opentelemetry/context-zone\": {\n \"optional\": true\n },\n \"@opentelemetry/sdk-node\": {\n \"optional\": true\n },\n \"@opentelemetry/sdk-trace-web\": {\n \"optional\": true\n },\n \"langchain\": {\n \"optional\": true\n }\n },\n \"pnpm\": {\n \"overrides\": {\n \"@opentelemetry/api\": \"^1.9.0\",\n \"@opentelemetry/core\": \"^2.0.1\",\n \"@opentelemetry/resources\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-base\": \"^2.0.1\",\n \"@opentelemetry/instrumentation\": \"0.212.0\",\n \"@opentelemetry/sdk-node\": \"0.205.0\",\n \"@opentelemetry/context-async-hooks\": \"^2.1.0\",\n \"@opentelemetry/api-logs\": \"0.205.0\",\n \"@opentelemetry/sdk-logs\": \"0.205.0\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"0.205.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"0.205.0\",\n \"zod\": \"^4.0.14\",\n \"langchain@<0.3.37\": \"0.3.37\",\n \"@langchain/core@<0.3.80\": \"0.3.80\"\n }\n }\n}\n","export type JsRuntime = \"node\" | \"deno\" | \"bun\" | \"web\" | \"unknown\";\n\nlet _runtime: JsRuntime | undefined;\n\n/**\n * Gets the cached JavaScript runtime environment.\n * @returns The detected runtime environment\n */\nexport const getRuntime = (): JsRuntime => {\n _runtime ??= detectRuntime();\n return _runtime;\n};\n\n/**\n * Resets the cached runtime. Only used for testing.\n * @internal\n */\nexport const resetRuntimeCache = (): void => {\n _runtime = undefined;\n};\n\n/**\n * Detects the JavaScript runtime environment.\n * @param globals - (Test only) Optionally override the global object for environment simulation. Only used if NODE_ENV === 'test'.\n */\nexport function detectRuntime(globals?: any): JsRuntime {\n let g = globalThis;\n if (globals) {\n if (process.env.NODE_ENV === \"test\") {\n g = globals;\n } else {\n console.warn(\"[LangWatch Observability] overriding detectRuntime is only supported when running in NODE_ENV=test\");\n }\n }\n\n try {\n if (\n \"Deno\" in g &&\n typeof g.Deno === \"object\" &&\n g.Deno &&\n 'version' in g.Deno &&\n typeof g.Deno.version === \"object\"\n ) {\n return \"deno\";\n }\n if (\n \"Bun\" in g &&\n typeof g.Bun === \"object\" &&\n g.Bun &&\n 'version' in g.Bun &&\n typeof g.Bun.version === \"string\"\n ) {\n return \"bun\";\n }\n if (\n \"process\" in g &&\n typeof g.process === \"object\" &&\n g.process &&\n typeof g.process.versions === \"object\" &&\n typeof g.process.versions.node === \"string\"\n ) {\n return \"node\";\n }\n if (\n typeof g.window?.document !== \"undefined\" &&\n g === g.window\n ) {\n return \"web\";\n }\n return \"unknown\";\n } catch (error) {\n console.warn(\"[LangWatch Observability] Failed to detect runtime\", error);\n return \"unknown\";\n }\n}\n","import { version } from \"../../package.json\";\nimport { getRuntime } from \"./runtime\";\n\nexport const LANGWATCH_SDK_RUNTIME = getRuntime;\n\nexport const LANGWATCH_SDK_NAME_OBSERVABILITY = \"langwatch-observability-sdk\";\nexport const LANGWATCH_SDK_NAME_CLIENT = \"langwatch-client-sdk\";\nexport const LANGWATCH_SDK_LANGUAGE = \"typescript\";\nexport const LANGWATCH_SDK_VERSION = version;\n\nexport const DEFAULT_ENDPOINT = \"https://app.langwatch.ai/\";\nexport const DEFAULT_SERVICE_NAME = \"unknown-service.langwatch\";\n\nexport const TRACES_PATH = \"/api/otel/v1/traces\";\nexport const LOGS_PATH = \"/api/otel/v1/logs\";\nexport const METRICS_PATH = \"/api/otel/v1/metrics\";\n"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-D2FHOR76.js","../package.json","../src/internal/runtime.ts","../src/internal/constants.ts"],"names":[],"mappings":"AAAA;ACEI,IAAA,QAAA,EAAW,QAAA;ADAf;AACA;AEDA,IAAI,QAAA;AAMG,IAAM,WAAA,EAAa,CAAA,EAAA,GAAiB;AACzC,EAAA,SAAA,GAAA,KAAA,EAAA,SAAA,EAAA,SAAA,EAAa,aAAA,CAAc,CAAA;AAC3B,EAAA,OAAO,QAAA;AACT,CAAA;AAcO,SAAS,aAAA,CAAc,OAAA,EAA0B;AAzBxD,EAAA,IAAA,EAAA;AA0BE,EAAA,IAAI,EAAA,EAAI,UAAA;AACR,EAAA,GAAA,CAAI,OAAA,EAAS;AACX,IAAA,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,SAAA,IAAa,MAAA,EAAQ;AACnC,MAAA,EAAA,EAAI,OAAA;AAAA,IACN,EAAA,KAAO;AACL,MAAA,OAAA,CAAQ,IAAA,CAAK,oGAAoG,CAAA;AAAA,IACnH;AAAA,EACF;AAEA,EAAA,IAAI;AACF,IAAA,GAAA,CACE,OAAA,GAAU,EAAA,GACV,OAAO,CAAA,CAAE,KAAA,IAAS,SAAA,GAClB,CAAA,CAAE,KAAA,GACF,UAAA,GAAa,CAAA,CAAE,KAAA,GACf,OAAO,CAAA,CAAE,IAAA,CAAK,QAAA,IAAY,QAAA,EAC1B;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,GAAA,CACE,MAAA,GAAS,EAAA,GACT,OAAO,CAAA,CAAE,IAAA,IAAQ,SAAA,GACjB,CAAA,CAAE,IAAA,GACF,UAAA,GAAa,CAAA,CAAE,IAAA,GACf,OAAO,CAAA,CAAE,GAAA,CAAI,QAAA,IAAY,QAAA,EACzB;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,GAAA,CACE,UAAA,GAAa,EAAA,GACb,OAAO,CAAA,CAAE,QAAA,IAAY,SAAA,GACrB,CAAA,CAAE,QAAA,GACF,OAAO,CAAA,CAAE,OAAA,CAAQ,SAAA,IAAa,SAAA,GAC9B,OAAO,CAAA,CAAE,OAAA,CAAQ,QAAA,CAAS,KAAA,IAAS,QAAA,EACnC;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,GAAA,CACE,OAAA,CAAA,CAAO,GAAA,EAAA,CAAA,CAAE,MAAA,EAAA,GAAF,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAU,QAAA,EAAA,IAAa,YAAA,GAC9B,EAAA,IAAM,CAAA,CAAE,MAAA,EACR;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,OAAO,SAAA;AAAA,EACT,EAAA,MAAA,CAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,IAAA,CAAK,oDAAA,EAAsD,KAAK,CAAA;AACxE,IAAA,OAAO,SAAA;AAAA,EACT;AACF;AFpCA;AACA;AGpCO,IAAM,sBAAA,EAAwB,UAAA;AAE9B,IAAM,iCAAA,EAAmC,6BAAA;AACzC,IAAM,0BAAA,EAA4B,sBAAA;AAClC,IAAM,uBAAA,EAAyB,YAAA;AAC/B,IAAM,sBAAA,EAAwB,OAAA;AAE9B,IAAM,iBAAA,EAAmB,2BAAA;AACzB,IAAM,qBAAA,EAAuB,2BAAA;AAE7B,IAAM,YAAA,EAAc,qBAAA;AACpB,IAAM,UAAA,EAAY,mBAAA;AHmCzB;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,ifAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-D2FHOR76.js","sourcesContent":[null,"{\n \"name\": \"langwatch\",\n \"version\": \"0.22.0\",\n \"description\": \"LangWatch TypeScript/JavaScript SDK. Interact with the full LangWatch API and use the LangWatch OpenTelemetry SDK to instrument your application. For more information, see https://docs.langwatch.ai/integration/typescript/guide\",\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.mjs\",\n \"types\": \"dist/index.d.ts\",\n \"author\": \"LangWatch\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=20\",\n \"pnpm\": \">=8\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"bin\": {\n \"langwatch\": \"./dist/cli/index.js\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.js\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability-sdk/index.d.ts\",\n \"require\": \"./dist/observability-sdk/index.js\",\n \"import\": \"./dist/observability-sdk/index.mjs\"\n },\n \"./observability/node\": {\n \"types\": \"./dist/observability-sdk/setup/node/index.d.ts\",\n \"require\": \"./dist/observability-sdk/setup/node/index.js\",\n \"import\": \"./dist/observability-sdk/setup/node/index.mjs\"\n },\n \"./observability/instrumentation/langchain\": {\n \"types\": \"./dist/observability-sdk/instrumentation/langchain/index.d.ts\",\n \"require\": \"./dist/observability-sdk/instrumentation/langchain/index.js\",\n \"import\": \"./dist/observability-sdk/instrumentation/langchain/index.mjs\"\n }\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/langwatch/langwatch.git\",\n \"directory\": \"typescript-sdk\"\n },\n \"scripts\": {\n \"prepare\": \"pnpm run generate:server-types && pnpm run generate:openapi-types\",\n \"cli\": \"node dist/cli/index.js\",\n \"lint\": \"eslint .\",\n \"test\": \"vitest\",\n \"test:unit\": \"vitest run --exclude '**/*.integration.test.ts'\",\n \"test:e2e\": \"dotenv -- vitest run -c ./vitest.e2e.config.mts\",\n \"test:seed\": \"dotenv -e .env.test -- bash -c 'cd ../langwatch && pnpm prisma:seed'\",\n \"prebuild\": \"pnpm run prepare\",\n \"build\": \"tsc --noEmit && tsup\",\n \"tarball\": \"pnpm build && pnpm pack\",\n \"typecheck\": \"tsc --noEmit\",\n \"prepublish\": \"pnpm run build\",\n \"generate:openapi-types\": \"pnpx openapi-typescript ../langwatch/src/app/api/openapiLangWatch.json -o ./src/internal/generated/openapi/api-client.ts\",\n \"generate:server-types\": \"./copy-types.sh\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.32.0\",\n \"@langchain/core\": \">=0.3.68 <0.4.0\",\n \"@langchain/langgraph\": \">=0.4.0 <1.0.0\",\n \"@langchain/openai\": \">=0.6.0 <1.0.0\",\n \"@opentelemetry/sdk-node\": \"0.205.0\",\n \"@opentelemetry/sdk-trace-node\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-web\": \">=2.0.1\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/node\": \"^24.1.0\",\n \"@typescript/native-preview\": \"7.0.0-dev.20250804.1\",\n \"@vercel/otel\": \"^1.13.0\",\n \"@vitest/coverage-v8\": \"3.2.4\",\n \"dotenv-cli\": \"^11.0.0\",\n \"esbuild\": \"^0.27.3\",\n \"eslint\": \"^9.32.0\",\n \"fets\": \"^0.8.5\",\n \"fishery\": \"^2.3.1\",\n \"langchain\": \">=0.3.0 <2.0.0\",\n \"msw\": \"^2.10.4\",\n \"nock\": \"^14.0.8\",\n \"openapi-msw\": \"^1.2.0\",\n \"ts-to-zod\": \"4.0.1\",\n \"tsup\": \"^8.5.0\",\n \"typescript\": \"^5.9.2\",\n \"typescript-eslint\": \"^8.38.0\",\n \"vitest\": \"^3.2.4\",\n \"vitest-mock-extended\": \"^3.1.0\",\n \"yaml\": \"^2.8.1\",\n \"@opentelemetry/api\": \"^1.9.0\"\n },\n \"dependencies\": {\n \"@opentelemetry/api-logs\": \"0.205.0\",\n \"@opentelemetry/core\": \"^2.0.1\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"0.205.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"0.205.0\",\n \"@opentelemetry/instrumentation\": \"0.212.0\",\n \"@opentelemetry/resources\": \"^2.0.1\",\n \"@opentelemetry/sdk-logs\": \"0.205.0\",\n \"@opentelemetry/sdk-metrics\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-base\": \"^2.0.1\",\n \"@opentelemetry/semantic-conventions\": \"^1.36.0\",\n \"@types/prompts\": \"^2.4.9\",\n \"chalk\": \"^4.1.2\",\n \"commander\": \"^12.0.0\",\n \"dotenv\": \"^17.3.1\",\n \"js-yaml\": \"^4.1.0\",\n \"liquidjs\": \"^10.21.1\",\n \"open\": \"^11.0.0\",\n \"openapi-fetch\": \"^0.16.0\",\n \"ora\": \"^9.3.0\",\n \"prompts\": \"^2.4.2\",\n \"xksuid\": \"^0.0.4\",\n \"zod\": \"^4.0.14\"\n },\n \"peerDependencies\": {\n \"@opentelemetry/api\": \"^1.9.0\",\n \"@ai-sdk/openai\": \">=2.0.0 <4.0.0\",\n \"@langchain/core\": \">=0.3.0 <2.0.0\",\n \"@langchain/langgraph\": \">=0.4.0 <2.0.0\",\n \"@langchain/openai\": \">=0.6.0 <2.0.0\",\n \"@opentelemetry/context-async-hooks\": \"^2.1.0\",\n \"@opentelemetry/context-zone\": \">=1.19.0 <3.0.0\",\n \"@opentelemetry/sdk-node\": \">=0.200.0 <1.0.0\",\n \"@opentelemetry/sdk-trace-web\": \">=1.19.0 <3.0.0\",\n \"langchain\": \">=0.3.0 <2.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@ai-sdk/openai\": {\n \"optional\": true\n },\n \"@langchain/core\": {\n \"optional\": true\n },\n \"@langchain/langgraph\": {\n \"optional\": true\n },\n \"@langchain/openai\": {\n \"optional\": true\n },\n \"@opentelemetry/context-async-hooks\": {\n \"optional\": true\n },\n \"@opentelemetry/context-zone\": {\n \"optional\": true\n },\n \"@opentelemetry/sdk-node\": {\n \"optional\": true\n },\n \"@opentelemetry/sdk-trace-web\": {\n \"optional\": true\n },\n \"langchain\": {\n \"optional\": true\n }\n },\n \"pnpm\": {\n \"overrides\": {\n \"@opentelemetry/api\": \"^1.9.0\",\n \"@opentelemetry/core\": \"^2.0.1\",\n \"@opentelemetry/resources\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-base\": \"^2.0.1\",\n \"@opentelemetry/instrumentation\": \"0.212.0\",\n \"@opentelemetry/sdk-node\": \"0.205.0\",\n \"@opentelemetry/context-async-hooks\": \"^2.1.0\",\n \"@opentelemetry/api-logs\": \"0.205.0\",\n \"@opentelemetry/sdk-logs\": \"0.205.0\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"0.205.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"0.205.0\",\n \"zod\": \"^4.0.14\",\n \"langchain@<0.3.37\": \"0.3.37\",\n \"@langchain/core@<0.3.80\": \"0.3.80\"\n }\n }\n}\n","export type JsRuntime = \"node\" | \"deno\" | \"bun\" | \"web\" | \"unknown\";\n\nlet _runtime: JsRuntime | undefined;\n\n/**\n * Gets the cached JavaScript runtime environment.\n * @returns The detected runtime environment\n */\nexport const getRuntime = (): JsRuntime => {\n _runtime ??= detectRuntime();\n return _runtime;\n};\n\n/**\n * Resets the cached runtime. Only used for testing.\n * @internal\n */\nexport const resetRuntimeCache = (): void => {\n _runtime = undefined;\n};\n\n/**\n * Detects the JavaScript runtime environment.\n * @param globals - (Test only) Optionally override the global object for environment simulation. Only used if NODE_ENV === 'test'.\n */\nexport function detectRuntime(globals?: any): JsRuntime {\n let g = globalThis;\n if (globals) {\n if (process.env.NODE_ENV === \"test\") {\n g = globals;\n } else {\n console.warn(\"[LangWatch Observability] overriding detectRuntime is only supported when running in NODE_ENV=test\");\n }\n }\n\n try {\n if (\n \"Deno\" in g &&\n typeof g.Deno === \"object\" &&\n g.Deno &&\n 'version' in g.Deno &&\n typeof g.Deno.version === \"object\"\n ) {\n return \"deno\";\n }\n if (\n \"Bun\" in g &&\n typeof g.Bun === \"object\" &&\n g.Bun &&\n 'version' in g.Bun &&\n typeof g.Bun.version === \"string\"\n ) {\n return \"bun\";\n }\n if (\n \"process\" in g &&\n typeof g.process === \"object\" &&\n g.process &&\n typeof g.process.versions === \"object\" &&\n typeof g.process.versions.node === \"string\"\n ) {\n return \"node\";\n }\n if (\n typeof g.window?.document !== \"undefined\" &&\n g === g.window\n ) {\n return \"web\";\n }\n return \"unknown\";\n } catch (error) {\n console.warn(\"[LangWatch Observability] Failed to detect runtime\", error);\n return \"unknown\";\n }\n}\n","import { version } from \"../../package.json\";\nimport { getRuntime } from \"./runtime\";\n\nexport const LANGWATCH_SDK_RUNTIME = getRuntime;\n\nexport const LANGWATCH_SDK_NAME_OBSERVABILITY = \"langwatch-observability-sdk\";\nexport const LANGWATCH_SDK_NAME_CLIENT = \"langwatch-client-sdk\";\nexport const LANGWATCH_SDK_LANGUAGE = \"typescript\";\nexport const LANGWATCH_SDK_VERSION = version;\n\nexport const DEFAULT_ENDPOINT = \"https://app.langwatch.ai/\";\nexport const DEFAULT_SERVICE_NAME = \"unknown-service.langwatch\";\n\nexport const TRACES_PATH = \"/api/otel/v1/traces\";\nexport const LOGS_PATH = \"/api/otel/v1/logs\";\nexport const METRICS_PATH = \"/api/otel/v1/metrics\";\n"]}
@@ -113,64 +113,6 @@ var ATTR_LANGWATCH_LANGCHAIN_RUN_METADATA = "langwatch.langchain.run.metadata";
113
113
  var ATTR_LANGWATCH_LANGCHAIN_RUN_EXTRA_PARAMS = "langwatch.langchain.run.extra_params";
114
114
  var ATTR_LANGWATCH_LANGCHAIN_RUN_PARENT_ID = "langwatch.langchain.run.parent.id";
115
115
 
116
- // src/observability-sdk/features/data-capture/utils.ts
117
- function validateDataCaptureMode(mode) {
118
- return ["none", "input", "output", "all"].includes(mode);
119
- }
120
-
121
- // src/observability-sdk/config.ts
122
- var observabilitySdkConfig = null;
123
- function initializeObservabilitySdkConfig(config) {
124
- observabilitySdkConfig = config;
125
- }
126
- function getObservabilitySdkConfig(options) {
127
- if (!observabilitySdkConfig) {
128
- const message = "[LangWatch Observability SDK] Please call setupObservability() before using the Observability SDK";
129
- if ((options == null ? void 0 : options.throwOnUninitialized) || process.env.NODE_ENV === "development") {
130
- throw new Error(message);
131
- }
132
- return {
133
- logger: new NoOpLogger()
134
- };
135
- }
136
- return observabilitySdkConfig;
137
- }
138
- function getObservabilitySdkLogger() {
139
- return getObservabilitySdkConfig().logger;
140
- }
141
- function getDataCaptureMode() {
142
- const config = getObservabilitySdkConfig();
143
- if (!config.dataCapture) {
144
- return "all";
145
- }
146
- if (typeof config.dataCapture === "string") {
147
- const validModes = ["none", "input", "output", "all"];
148
- if (validModes.includes(config.dataCapture)) {
149
- return config.dataCapture;
150
- }
151
- getObservabilitySdkLogger().warn(
152
- `Invalid data capture mode: ${config.dataCapture}. Using default: "all"`
153
- );
154
- return "all";
155
- }
156
- if (typeof config.dataCapture === "object" && config.dataCapture.mode && validateDataCaptureMode(config.dataCapture.mode)) {
157
- return config.dataCapture.mode;
158
- }
159
- return "all";
160
- }
161
- function shouldCaptureInput() {
162
- const mode = getDataCaptureMode();
163
- return mode === "input" || mode === "all";
164
- }
165
- function shouldCaptureOutput() {
166
- const mode = getDataCaptureMode();
167
- return mode === "output" || mode === "all";
168
- }
169
-
170
-
171
-
172
-
173
-
174
116
 
175
117
 
176
118
 
@@ -187,5 +129,5 @@ function shouldCaptureOutput() {
187
129
 
188
130
 
189
131
 
190
- exports.NoOpLogger = NoOpLogger; exports.ConsoleLogger = ConsoleLogger; exports.ATTR_LANGWATCH_INPUT = ATTR_LANGWATCH_INPUT; exports.ATTR_LANGWATCH_OUTPUT = ATTR_LANGWATCH_OUTPUT; exports.ATTR_LANGWATCH_SPAN_TYPE = ATTR_LANGWATCH_SPAN_TYPE; exports.ATTR_LANGWATCH_RAG_CONTEXTS = ATTR_LANGWATCH_RAG_CONTEXTS; exports.ATTR_LANGWATCH_METRICS = ATTR_LANGWATCH_METRICS; exports.ATTR_LANGWATCH_SDK_VERSION = ATTR_LANGWATCH_SDK_VERSION; exports.ATTR_LANGWATCH_SDK_NAME = ATTR_LANGWATCH_SDK_NAME; exports.ATTR_LANGWATCH_SDK_LANGUAGE = ATTR_LANGWATCH_SDK_LANGUAGE; exports.ATTR_LANGWATCH_PROMPT_ID = ATTR_LANGWATCH_PROMPT_ID; exports.ATTR_LANGWATCH_PROMPT_VERSION_ID = ATTR_LANGWATCH_PROMPT_VERSION_ID; exports.ATTR_LANGWATCH_PROMPT_SELECTED_ID = ATTR_LANGWATCH_PROMPT_SELECTED_ID; exports.ATTR_LANGWATCH_PROMPT_VERSION_NUMBER = ATTR_LANGWATCH_PROMPT_VERSION_NUMBER; exports.attributes_exports = attributes_exports; exports.initializeObservabilitySdkConfig = initializeObservabilitySdkConfig; exports.getDataCaptureMode = getDataCaptureMode; exports.shouldCaptureInput = shouldCaptureInput; exports.shouldCaptureOutput = shouldCaptureOutput;
191
- //# sourceMappingURL=chunk-5LYWRKDF.js.map
132
+ exports.NoOpLogger = NoOpLogger; exports.ConsoleLogger = ConsoleLogger; exports.ATTR_LANGWATCH_INPUT = ATTR_LANGWATCH_INPUT; exports.ATTR_LANGWATCH_OUTPUT = ATTR_LANGWATCH_OUTPUT; exports.ATTR_LANGWATCH_SPAN_TYPE = ATTR_LANGWATCH_SPAN_TYPE; exports.ATTR_LANGWATCH_RAG_CONTEXTS = ATTR_LANGWATCH_RAG_CONTEXTS; exports.ATTR_LANGWATCH_METRICS = ATTR_LANGWATCH_METRICS; exports.ATTR_LANGWATCH_SDK_VERSION = ATTR_LANGWATCH_SDK_VERSION; exports.ATTR_LANGWATCH_SDK_NAME = ATTR_LANGWATCH_SDK_NAME; exports.ATTR_LANGWATCH_SDK_LANGUAGE = ATTR_LANGWATCH_SDK_LANGUAGE; exports.ATTR_LANGWATCH_PROMPT_ID = ATTR_LANGWATCH_PROMPT_ID; exports.ATTR_LANGWATCH_PROMPT_VERSION_ID = ATTR_LANGWATCH_PROMPT_VERSION_ID; exports.ATTR_LANGWATCH_PROMPT_SELECTED_ID = ATTR_LANGWATCH_PROMPT_SELECTED_ID; exports.ATTR_LANGWATCH_PROMPT_VERSION_NUMBER = ATTR_LANGWATCH_PROMPT_VERSION_NUMBER; exports.attributes_exports = attributes_exports;
133
+ //# sourceMappingURL=chunk-DB6OJGP4.js.map