langwatch 0.34.0 → 0.36.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 (774) hide show
  1. package/dist/{chunk-RIPASL56.mjs → chunk-2O4ILSP5.mjs} +2 -2
  2. package/dist/{chunk-2V5FBEY3.mjs → chunk-3QHURXIZ.mjs} +42 -5
  3. package/dist/chunk-3QHURXIZ.mjs.map +1 -0
  4. package/dist/{chunk-4ZA6WF6S.mjs → chunk-AEFZHF6V.mjs} +104 -22
  5. package/dist/chunk-AEFZHF6V.mjs.map +1 -0
  6. package/dist/{chunk-YKWXS2BM.js → chunk-BT76Q2SR.js} +130 -48
  7. package/dist/chunk-BT76Q2SR.js.map +1 -0
  8. package/dist/{chunk-42EDFIG2.mjs → chunk-G5VAIDUJ.mjs} +10 -16
  9. package/dist/{chunk-42EDFIG2.mjs.map → chunk-G5VAIDUJ.mjs.map} +1 -1
  10. package/dist/{chunk-QZRBNYW2.js → chunk-HBVGKWJK.js} +53 -16
  11. package/dist/chunk-HBVGKWJK.js.map +1 -0
  12. package/dist/{chunk-NTRV2ICJ.js → chunk-IUSLT65Z.js} +2 -2
  13. package/dist/{chunk-NTRV2ICJ.js.map → chunk-IUSLT65Z.js.map} +1 -1
  14. package/dist/{chunk-PONU4KJX.mjs → chunk-L5KBRKHS.mjs} +110 -5
  15. package/dist/chunk-L5KBRKHS.mjs.map +1 -0
  16. package/dist/{chunk-FSACIXYG.js → chunk-N7WBYSM6.js} +16 -22
  17. package/dist/chunk-N7WBYSM6.js.map +1 -0
  18. package/dist/chunk-TKSTXX3D.js +239 -0
  19. package/dist/chunk-TKSTXX3D.js.map +1 -0
  20. package/dist/cli/bundle.js +3768 -0
  21. package/dist/cli/index.js +10 -1335
  22. package/dist/{implementation-BIfcyP32.d.ts → implementation-CMWs8g5L.d.ts} +3 -3
  23. package/dist/{implementation-BBG46scL.d.mts → implementation-Cv1hPZBQ.d.mts} +3 -3
  24. package/dist/index.d.mts +125 -12
  25. package/dist/index.d.ts +125 -12
  26. package/dist/index.js +4840 -1410
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.mjs +4788 -1358
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/observability-sdk/index.d.mts +6 -6
  31. package/dist/observability-sdk/index.d.ts +6 -6
  32. package/dist/observability-sdk/index.js +5 -10
  33. package/dist/observability-sdk/index.js.map +1 -1
  34. package/dist/observability-sdk/index.mjs +5 -10
  35. package/dist/observability-sdk/instrumentation/langchain/index.d.mts +2 -2
  36. package/dist/observability-sdk/instrumentation/langchain/index.d.ts +2 -2
  37. package/dist/observability-sdk/instrumentation/langchain/index.js +18 -21
  38. package/dist/observability-sdk/instrumentation/langchain/index.js.map +1 -1
  39. package/dist/observability-sdk/instrumentation/langchain/index.mjs +3 -6
  40. package/dist/observability-sdk/instrumentation/langchain/index.mjs.map +1 -1
  41. package/dist/observability-sdk/setup/node/index.d.mts +2 -2
  42. package/dist/observability-sdk/setup/node/index.d.ts +2 -2
  43. package/dist/observability-sdk/setup/node/index.js +4 -8
  44. package/dist/observability-sdk/setup/node/index.js.map +1 -1
  45. package/dist/observability-sdk/setup/node/index.mjs +3 -7
  46. package/dist/{types-CYfKDbKj.d.ts → types-D-yAkWoC.d.ts} +71 -3
  47. package/dist/{types-Dmazk5Bk.d.mts → types-DLfhJb38.d.mts} +1 -1
  48. package/dist/{types-Dmazk5Bk.d.ts → types-DLfhJb38.d.ts} +1 -1
  49. package/dist/{types-BvCQH8F1.d.ts → types-VOZv9LYO.d.mts} +1 -1
  50. package/dist/{types-BvCQH8F1.d.mts → types-VOZv9LYO.d.ts} +1 -1
  51. package/dist/{types-fzTtg5sg.d.mts → types-bfBzGB7S.d.mts} +71 -3
  52. package/package.json +13 -6
  53. package/dist/add-TFE2BH4K.mjs +0 -148
  54. package/dist/add-TFE2BH4K.mjs.map +0 -1
  55. package/dist/add-URBA6FGV.js +0 -148
  56. package/dist/add-URBA6FGV.js.map +0 -1
  57. package/dist/archive-CL6XUEYU.mjs +0 -41
  58. package/dist/archive-CL6XUEYU.mjs.map +0 -1
  59. package/dist/archive-K4SSNBML.js +0 -41
  60. package/dist/archive-K4SSNBML.js.map +0 -1
  61. package/dist/assign-4PVKU4WO.mjs +0 -54
  62. package/dist/assign-4PVKU4WO.mjs.map +0 -1
  63. package/dist/assign-RFENMUXO.js +0 -54
  64. package/dist/assign-RFENMUXO.js.map +0 -1
  65. package/dist/chunk-2MITUTNI.js +0 -205
  66. package/dist/chunk-2MITUTNI.js.map +0 -1
  67. package/dist/chunk-2V5FBEY3.mjs.map +0 -1
  68. package/dist/chunk-2VVANTLB.js +0 -68
  69. package/dist/chunk-2VVANTLB.js.map +0 -1
  70. package/dist/chunk-377U47MY.js +0 -42
  71. package/dist/chunk-377U47MY.js.map +0 -1
  72. package/dist/chunk-3K6C35HN.mjs +0 -80
  73. package/dist/chunk-3K6C35HN.mjs.map +0 -1
  74. package/dist/chunk-3PZ5VO5T.mjs +0 -205
  75. package/dist/chunk-3PZ5VO5T.mjs.map +0 -1
  76. package/dist/chunk-4Q4HSAKZ.js +0 -894
  77. package/dist/chunk-4Q4HSAKZ.js.map +0 -1
  78. package/dist/chunk-4ZA6WF6S.mjs.map +0 -1
  79. package/dist/chunk-535JT5M3.mjs +0 -42
  80. package/dist/chunk-535JT5M3.mjs.map +0 -1
  81. package/dist/chunk-5M6GLAIG.js +0 -410
  82. package/dist/chunk-5M6GLAIG.js.map +0 -1
  83. package/dist/chunk-5PF32BLZ.mjs +0 -76
  84. package/dist/chunk-5PF32BLZ.mjs.map +0 -1
  85. package/dist/chunk-5W4B44MH.mjs +0 -103
  86. package/dist/chunk-5W4B44MH.mjs.map +0 -1
  87. package/dist/chunk-5Z3A3Z5M.mjs +0 -96
  88. package/dist/chunk-5Z3A3Z5M.mjs.map +0 -1
  89. package/dist/chunk-64H4FLDB.mjs +0 -51
  90. package/dist/chunk-64H4FLDB.mjs.map +0 -1
  91. package/dist/chunk-67PP4GB4.mjs +0 -40
  92. package/dist/chunk-67PP4GB4.mjs.map +0 -1
  93. package/dist/chunk-6KMX34ZH.js +0 -257
  94. package/dist/chunk-6KMX34ZH.js.map +0 -1
  95. package/dist/chunk-6RSHYGUB.js +0 -85
  96. package/dist/chunk-6RSHYGUB.js.map +0 -1
  97. package/dist/chunk-7HFW67OR.mjs +0 -63
  98. package/dist/chunk-7HFW67OR.mjs.map +0 -1
  99. package/dist/chunk-7KSBRJUY.js +0 -54
  100. package/dist/chunk-7KSBRJUY.js.map +0 -1
  101. package/dist/chunk-7ULZZHBP.mjs +0 -42
  102. package/dist/chunk-7ULZZHBP.mjs.map +0 -1
  103. package/dist/chunk-A6YWANGL.js +0 -103
  104. package/dist/chunk-A6YWANGL.js.map +0 -1
  105. package/dist/chunk-B5TBCV6N.js +0 -96
  106. package/dist/chunk-B5TBCV6N.js.map +0 -1
  107. package/dist/chunk-BAX4W3AY.mjs +0 -62
  108. package/dist/chunk-BAX4W3AY.mjs.map +0 -1
  109. package/dist/chunk-BGYXA2QV.mjs +0 -96
  110. package/dist/chunk-BGYXA2QV.mjs.map +0 -1
  111. package/dist/chunk-BRPEG3YQ.js +0 -62
  112. package/dist/chunk-BRPEG3YQ.js.map +0 -1
  113. package/dist/chunk-C5Y772G7.js +0 -152
  114. package/dist/chunk-C5Y772G7.js.map +0 -1
  115. package/dist/chunk-CEJY6QI3.mjs +0 -508
  116. package/dist/chunk-CEJY6QI3.mjs.map +0 -1
  117. package/dist/chunk-CGECDLSE.js +0 -90
  118. package/dist/chunk-CGECDLSE.js.map +0 -1
  119. package/dist/chunk-CKTJADY6.mjs +0 -348
  120. package/dist/chunk-CKTJADY6.mjs.map +0 -1
  121. package/dist/chunk-CLYXJJ6C.js +0 -66
  122. package/dist/chunk-CLYXJJ6C.js.map +0 -1
  123. package/dist/chunk-COMOCQA6.mjs +0 -13
  124. package/dist/chunk-COMOCQA6.mjs.map +0 -1
  125. package/dist/chunk-D2VRKNFF.js +0 -1672
  126. package/dist/chunk-D2VRKNFF.js.map +0 -1
  127. package/dist/chunk-D5NUUB4G.mjs +0 -225
  128. package/dist/chunk-D5NUUB4G.mjs.map +0 -1
  129. package/dist/chunk-DCTJDRBW.js +0 -40
  130. package/dist/chunk-DCTJDRBW.js.map +0 -1
  131. package/dist/chunk-DIILEB4J.js +0 -196
  132. package/dist/chunk-DIILEB4J.js.map +0 -1
  133. package/dist/chunk-DOJBPYAE.js +0 -663
  134. package/dist/chunk-DOJBPYAE.js.map +0 -1
  135. package/dist/chunk-DTEKJ3UD.mjs +0 -66
  136. package/dist/chunk-DTEKJ3UD.mjs.map +0 -1
  137. package/dist/chunk-FG3JQBJB.mjs +0 -68
  138. package/dist/chunk-FG3JQBJB.mjs.map +0 -1
  139. package/dist/chunk-FNFLZXXA.js +0 -80
  140. package/dist/chunk-FNFLZXXA.js.map +0 -1
  141. package/dist/chunk-FSACIXYG.js.map +0 -1
  142. package/dist/chunk-GFLV5NP6.mjs +0 -70
  143. package/dist/chunk-GFLV5NP6.mjs.map +0 -1
  144. package/dist/chunk-GNWMKXDU.mjs +0 -66
  145. package/dist/chunk-GNWMKXDU.mjs.map +0 -1
  146. package/dist/chunk-GPGJNBPP.js +0 -63
  147. package/dist/chunk-GPGJNBPP.js.map +0 -1
  148. package/dist/chunk-GUPNZDU7.js +0 -101
  149. package/dist/chunk-GUPNZDU7.js.map +0 -1
  150. package/dist/chunk-HDA25KWZ.js +0 -134
  151. package/dist/chunk-HDA25KWZ.js.map +0 -1
  152. package/dist/chunk-IZD5CIVE.js +0 -70
  153. package/dist/chunk-IZD5CIVE.js.map +0 -1
  154. package/dist/chunk-J3KM7ZO7.mjs +0 -152
  155. package/dist/chunk-J3KM7ZO7.mjs.map +0 -1
  156. package/dist/chunk-JQVI5CD7.mjs +0 -894
  157. package/dist/chunk-JQVI5CD7.mjs.map +0 -1
  158. package/dist/chunk-JSV75WAY.js +0 -76
  159. package/dist/chunk-JSV75WAY.js.map +0 -1
  160. package/dist/chunk-JZYHVNJR.js +0 -22
  161. package/dist/chunk-JZYHVNJR.js.map +0 -1
  162. package/dist/chunk-KT6HZNPV.js +0 -36
  163. package/dist/chunk-KT6HZNPV.js.map +0 -1
  164. package/dist/chunk-KW2W5KVS.mjs +0 -22
  165. package/dist/chunk-KW2W5KVS.mjs.map +0 -1
  166. package/dist/chunk-LA5LU5UP.js +0 -225
  167. package/dist/chunk-LA5LU5UP.js.map +0 -1
  168. package/dist/chunk-LSRJHTPL.js +0 -36
  169. package/dist/chunk-LSRJHTPL.js.map +0 -1
  170. package/dist/chunk-M3WJZUOE.js +0 -13
  171. package/dist/chunk-M3WJZUOE.js.map +0 -1
  172. package/dist/chunk-M5UNTGGK.mjs +0 -68
  173. package/dist/chunk-M5UNTGGK.mjs.map +0 -1
  174. package/dist/chunk-NQN42A2N.js +0 -348
  175. package/dist/chunk-NQN42A2N.js.map +0 -1
  176. package/dist/chunk-NYCKS3GG.js +0 -20
  177. package/dist/chunk-NYCKS3GG.js.map +0 -1
  178. package/dist/chunk-O2GHYEAE.mjs +0 -92
  179. package/dist/chunk-O2GHYEAE.mjs.map +0 -1
  180. package/dist/chunk-OGAE7BVQ.js +0 -67
  181. package/dist/chunk-OGAE7BVQ.js.map +0 -1
  182. package/dist/chunk-OMOZEGVZ.mjs +0 -22
  183. package/dist/chunk-OMOZEGVZ.mjs.map +0 -1
  184. package/dist/chunk-OMZ3FRPU.mjs +0 -65
  185. package/dist/chunk-OMZ3FRPU.mjs.map +0 -1
  186. package/dist/chunk-OOXU4LFW.js +0 -65
  187. package/dist/chunk-OOXU4LFW.js.map +0 -1
  188. package/dist/chunk-OSAFGMGH.mjs +0 -85
  189. package/dist/chunk-OSAFGMGH.mjs.map +0 -1
  190. package/dist/chunk-OXULVOBF.mjs +0 -144
  191. package/dist/chunk-OXULVOBF.mjs.map +0 -1
  192. package/dist/chunk-PONU4KJX.mjs.map +0 -1
  193. package/dist/chunk-PQA46YVG.mjs +0 -410
  194. package/dist/chunk-PQA46YVG.mjs.map +0 -1
  195. package/dist/chunk-Q6OMYVNW.js +0 -66
  196. package/dist/chunk-Q6OMYVNW.js.map +0 -1
  197. package/dist/chunk-Q7AHHFC3.mjs +0 -20
  198. package/dist/chunk-Q7AHHFC3.mjs.map +0 -1
  199. package/dist/chunk-QSMGACTW.js +0 -51
  200. package/dist/chunk-QSMGACTW.js.map +0 -1
  201. package/dist/chunk-QVQ7WDJS.mjs +0 -196
  202. package/dist/chunk-QVQ7WDJS.mjs.map +0 -1
  203. package/dist/chunk-QZRBNYW2.js.map +0 -1
  204. package/dist/chunk-R6QPBFZD.mjs +0 -63
  205. package/dist/chunk-R6QPBFZD.mjs.map +0 -1
  206. package/dist/chunk-RALJR5ZU.js +0 -80
  207. package/dist/chunk-RALJR5ZU.js.map +0 -1
  208. package/dist/chunk-S2UWK4HL.mjs +0 -36
  209. package/dist/chunk-S2UWK4HL.mjs.map +0 -1
  210. package/dist/chunk-SIXSSID3.mjs +0 -43
  211. package/dist/chunk-SIXSSID3.mjs.map +0 -1
  212. package/dist/chunk-SNKGSX5I.js +0 -42
  213. package/dist/chunk-SNKGSX5I.js.map +0 -1
  214. package/dist/chunk-SQXVLXIS.mjs +0 -90
  215. package/dist/chunk-SQXVLXIS.mjs.map +0 -1
  216. package/dist/chunk-TIAQGDR2.js +0 -34
  217. package/dist/chunk-TIAQGDR2.js.map +0 -1
  218. package/dist/chunk-U47MQ6CS.mjs +0 -67
  219. package/dist/chunk-U47MQ6CS.mjs.map +0 -1
  220. package/dist/chunk-UQ633TEF.mjs +0 -54
  221. package/dist/chunk-UQ633TEF.mjs.map +0 -1
  222. package/dist/chunk-UTXV7U7Z.js +0 -92
  223. package/dist/chunk-UTXV7U7Z.js.map +0 -1
  224. package/dist/chunk-W2BNKVWJ.mjs +0 -36
  225. package/dist/chunk-W2BNKVWJ.mjs.map +0 -1
  226. package/dist/chunk-WG7MPZXJ.mjs +0 -663
  227. package/dist/chunk-WG7MPZXJ.mjs.map +0 -1
  228. package/dist/chunk-WIXX2IDN.mjs +0 -101
  229. package/dist/chunk-WIXX2IDN.mjs.map +0 -1
  230. package/dist/chunk-WQRATXQU.mjs +0 -80
  231. package/dist/chunk-WQRATXQU.mjs.map +0 -1
  232. package/dist/chunk-WV4U2PPY.js +0 -68
  233. package/dist/chunk-WV4U2PPY.js.map +0 -1
  234. package/dist/chunk-WZTRPR6A.js +0 -43
  235. package/dist/chunk-WZTRPR6A.js.map +0 -1
  236. package/dist/chunk-XGULH63G.mjs +0 -1672
  237. package/dist/chunk-XGULH63G.mjs.map +0 -1
  238. package/dist/chunk-YBLYQYXL.js +0 -22
  239. package/dist/chunk-YBLYQYXL.js.map +0 -1
  240. package/dist/chunk-YK55ZGRQ.mjs +0 -257
  241. package/dist/chunk-YK55ZGRQ.mjs.map +0 -1
  242. package/dist/chunk-YKDTIJF2.js +0 -144
  243. package/dist/chunk-YKDTIJF2.js.map +0 -1
  244. package/dist/chunk-YKWXS2BM.js.map +0 -1
  245. package/dist/chunk-YOSDU6PV.mjs +0 -34
  246. package/dist/chunk-YOSDU6PV.mjs.map +0 -1
  247. package/dist/chunk-YP4LDCP6.mjs +0 -277
  248. package/dist/chunk-YP4LDCP6.mjs.map +0 -1
  249. package/dist/chunk-ZA5BH7IZ.js +0 -277
  250. package/dist/chunk-ZA5BH7IZ.js.map +0 -1
  251. package/dist/chunk-ZFAAOZZM.js +0 -96
  252. package/dist/chunk-ZFAAOZZM.js.map +0 -1
  253. package/dist/chunk-ZFFJYYDN.js +0 -508
  254. package/dist/chunk-ZFFJYYDN.js.map +0 -1
  255. package/dist/chunk-ZX6VUKK5.js +0 -63
  256. package/dist/chunk-ZX6VUKK5.js.map +0 -1
  257. package/dist/cli/index.d.mts +0 -1
  258. package/dist/cli/index.d.ts +0 -1
  259. package/dist/cli/index.js.map +0 -1
  260. package/dist/cli/index.mjs +0 -1336
  261. package/dist/cli/index.mjs.map +0 -1
  262. package/dist/config-DPFYZQUU.js +0 -96
  263. package/dist/config-DPFYZQUU.js.map +0 -1
  264. package/dist/config-DXWUTPTA.mjs +0 -96
  265. package/dist/config-DXWUTPTA.mjs.map +0 -1
  266. package/dist/create-2MUVHIRR.js +0 -49
  267. package/dist/create-2MUVHIRR.js.map +0 -1
  268. package/dist/create-2VO6N4CY.js +0 -50
  269. package/dist/create-2VO6N4CY.js.map +0 -1
  270. package/dist/create-5HLREIKR.mjs +0 -52
  271. package/dist/create-5HLREIKR.mjs.map +0 -1
  272. package/dist/create-7WWQNO2D.mjs +0 -88
  273. package/dist/create-7WWQNO2D.mjs.map +0 -1
  274. package/dist/create-APC6WMHS.js +0 -72
  275. package/dist/create-APC6WMHS.js.map +0 -1
  276. package/dist/create-B6AZP3AH.js +0 -42
  277. package/dist/create-B6AZP3AH.js.map +0 -1
  278. package/dist/create-BWIIJPYN.js +0 -88
  279. package/dist/create-BWIIJPYN.js.map +0 -1
  280. package/dist/create-C7HS7DAN.js +0 -91
  281. package/dist/create-C7HS7DAN.js.map +0 -1
  282. package/dist/create-CENOO2Z5.mjs +0 -94
  283. package/dist/create-CENOO2Z5.mjs.map +0 -1
  284. package/dist/create-CSENTPZ7.mjs +0 -88
  285. package/dist/create-CSENTPZ7.mjs.map +0 -1
  286. package/dist/create-F564PPYR.mjs +0 -72
  287. package/dist/create-F564PPYR.mjs.map +0 -1
  288. package/dist/create-FEVRMAGI.js +0 -75
  289. package/dist/create-FEVRMAGI.js.map +0 -1
  290. package/dist/create-FK6ZCXCA.js +0 -92
  291. package/dist/create-FK6ZCXCA.js.map +0 -1
  292. package/dist/create-G5KF3LVC.mjs +0 -50
  293. package/dist/create-G5KF3LVC.mjs.map +0 -1
  294. package/dist/create-HL6BPJBM.mjs +0 -71
  295. package/dist/create-HL6BPJBM.mjs.map +0 -1
  296. package/dist/create-KFDWNSGC.mjs +0 -87
  297. package/dist/create-KFDWNSGC.mjs.map +0 -1
  298. package/dist/create-KTPZZ7NV.mjs +0 -75
  299. package/dist/create-KTPZZ7NV.mjs.map +0 -1
  300. package/dist/create-LAKPCRNY.mjs +0 -92
  301. package/dist/create-LAKPCRNY.mjs.map +0 -1
  302. package/dist/create-LFU7Z6DS.mjs +0 -42
  303. package/dist/create-LFU7Z6DS.mjs.map +0 -1
  304. package/dist/create-MI7MQLN6.mjs +0 -48
  305. package/dist/create-MI7MQLN6.mjs.map +0 -1
  306. package/dist/create-OMO3TETI.mjs +0 -23
  307. package/dist/create-OMO3TETI.mjs.map +0 -1
  308. package/dist/create-OWODQWNJ.js +0 -48
  309. package/dist/create-OWODQWNJ.js.map +0 -1
  310. package/dist/create-POGAVC3B.mjs +0 -49
  311. package/dist/create-POGAVC3B.mjs.map +0 -1
  312. package/dist/create-QJLKTHQ6.mjs +0 -58
  313. package/dist/create-QJLKTHQ6.mjs.map +0 -1
  314. package/dist/create-R57TZY3Y.js +0 -94
  315. package/dist/create-R57TZY3Y.js.map +0 -1
  316. package/dist/create-RIHQJENZ.js +0 -71
  317. package/dist/create-RIHQJENZ.js.map +0 -1
  318. package/dist/create-UOIUDY25.js +0 -88
  319. package/dist/create-UOIUDY25.js.map +0 -1
  320. package/dist/create-URUJVBUC.js +0 -87
  321. package/dist/create-URUJVBUC.js.map +0 -1
  322. package/dist/create-VEK55UDK.mjs +0 -43
  323. package/dist/create-VEK55UDK.mjs.map +0 -1
  324. package/dist/create-VKXRDN5O.js +0 -52
  325. package/dist/create-VKXRDN5O.js.map +0 -1
  326. package/dist/create-XHAKNOTS.mjs +0 -91
  327. package/dist/create-XHAKNOTS.mjs.map +0 -1
  328. package/dist/create-YJHDG2ZO.js +0 -23
  329. package/dist/create-YJHDG2ZO.js.map +0 -1
  330. package/dist/create-Z5CM76ZW.js +0 -43
  331. package/dist/create-Z5CM76ZW.js.map +0 -1
  332. package/dist/create-Z6JTQNL6.js +0 -58
  333. package/dist/create-Z6JTQNL6.js.map +0 -1
  334. package/dist/delete-6BINMYZI.mjs +0 -52
  335. package/dist/delete-6BINMYZI.mjs.map +0 -1
  336. package/dist/delete-6T5CCDFJ.js +0 -42
  337. package/dist/delete-6T5CCDFJ.js.map +0 -1
  338. package/dist/delete-6UHWYVNZ.js +0 -52
  339. package/dist/delete-6UHWYVNZ.js.map +0 -1
  340. package/dist/delete-A5RWDQKJ.js +0 -52
  341. package/dist/delete-A5RWDQKJ.js.map +0 -1
  342. package/dist/delete-A7ZWGQPR.mjs +0 -59
  343. package/dist/delete-A7ZWGQPR.mjs.map +0 -1
  344. package/dist/delete-B5G7GAHY.mjs +0 -44
  345. package/dist/delete-B5G7GAHY.mjs.map +0 -1
  346. package/dist/delete-BGCVEG3C.js +0 -61
  347. package/dist/delete-BGCVEG3C.js.map +0 -1
  348. package/dist/delete-BYCIZOZG.js +0 -39
  349. package/dist/delete-BYCIZOZG.js.map +0 -1
  350. package/dist/delete-E5VYCRYX.mjs +0 -39
  351. package/dist/delete-E5VYCRYX.mjs.map +0 -1
  352. package/dist/delete-EK6PUMYW.js +0 -52
  353. package/dist/delete-EK6PUMYW.js.map +0 -1
  354. package/dist/delete-ERB4LGWZ.mjs +0 -41
  355. package/dist/delete-ERB4LGWZ.mjs.map +0 -1
  356. package/dist/delete-FD3IISGJ.js +0 -38
  357. package/dist/delete-FD3IISGJ.js.map +0 -1
  358. package/dist/delete-FE3MRFPM.mjs +0 -52
  359. package/dist/delete-FE3MRFPM.mjs.map +0 -1
  360. package/dist/delete-FP5MMDDA.mjs +0 -61
  361. package/dist/delete-FP5MMDDA.mjs.map +0 -1
  362. package/dist/delete-FWKI62NT.mjs +0 -39
  363. package/dist/delete-FWKI62NT.mjs.map +0 -1
  364. package/dist/delete-HLKQDPTI.js +0 -52
  365. package/dist/delete-HLKQDPTI.js.map +0 -1
  366. package/dist/delete-KAVDMRQX.mjs +0 -59
  367. package/dist/delete-KAVDMRQX.mjs.map +0 -1
  368. package/dist/delete-M4ZCKWOU.mjs +0 -52
  369. package/dist/delete-M4ZCKWOU.mjs.map +0 -1
  370. package/dist/delete-NGPOOTEX.mjs +0 -42
  371. package/dist/delete-NGPOOTEX.mjs.map +0 -1
  372. package/dist/delete-NN4CSTK5.js +0 -44
  373. package/dist/delete-NN4CSTK5.js.map +0 -1
  374. package/dist/delete-NRW5THMB.js +0 -39
  375. package/dist/delete-NRW5THMB.js.map +0 -1
  376. package/dist/delete-SZG6DJUR.mjs +0 -52
  377. package/dist/delete-SZG6DJUR.mjs.map +0 -1
  378. package/dist/delete-UMDNW3RR.mjs +0 -59
  379. package/dist/delete-UMDNW3RR.mjs.map +0 -1
  380. package/dist/delete-UVGITJ2L.mjs +0 -38
  381. package/dist/delete-UVGITJ2L.mjs.map +0 -1
  382. package/dist/delete-VBP7TKUH.js +0 -41
  383. package/dist/delete-VBP7TKUH.js.map +0 -1
  384. package/dist/delete-Y3DTH336.js +0 -59
  385. package/dist/delete-Y3DTH336.js.map +0 -1
  386. package/dist/delete-ZM3GFW2Z.js +0 -59
  387. package/dist/delete-ZM3GFW2Z.js.map +0 -1
  388. package/dist/delete-ZSN6PWGA.js +0 -59
  389. package/dist/delete-ZSN6PWGA.js.map +0 -1
  390. package/dist/docs-23TMQCLZ.js +0 -77
  391. package/dist/docs-23TMQCLZ.js.map +0 -1
  392. package/dist/docs-YG2DQVHD.mjs +0 -77
  393. package/dist/docs-YG2DQVHD.mjs.map +0 -1
  394. package/dist/download-B4Z4TAXZ.js +0 -100
  395. package/dist/download-B4Z4TAXZ.js.map +0 -1
  396. package/dist/download-JPL3BO4H.mjs +0 -100
  397. package/dist/download-JPL3BO4H.mjs.map +0 -1
  398. package/dist/duplicate-IYUSDPY2.js +0 -45
  399. package/dist/duplicate-IYUSDPY2.js.map +0 -1
  400. package/dist/duplicate-OWG7P745.mjs +0 -45
  401. package/dist/duplicate-OWG7P745.mjs.map +0 -1
  402. package/dist/export-4A6ILAPM.mjs +0 -103
  403. package/dist/export-4A6ILAPM.mjs.map +0 -1
  404. package/dist/export-BUFJDFWC.js +0 -103
  405. package/dist/export-BUFJDFWC.js.map +0 -1
  406. package/dist/get-37E7GAV3.js +0 -76
  407. package/dist/get-37E7GAV3.js.map +0 -1
  408. package/dist/get-4D2MVW4T.js +0 -49
  409. package/dist/get-4D2MVW4T.js.map +0 -1
  410. package/dist/get-576OERBE.mjs +0 -66
  411. package/dist/get-576OERBE.mjs.map +0 -1
  412. package/dist/get-5GQP5EDN.mjs +0 -71
  413. package/dist/get-5GQP5EDN.mjs.map +0 -1
  414. package/dist/get-6DKM4MZL.mjs +0 -70
  415. package/dist/get-6DKM4MZL.mjs.map +0 -1
  416. package/dist/get-BO7KWXNS.js +0 -70
  417. package/dist/get-BO7KWXNS.js.map +0 -1
  418. package/dist/get-BQH2FJBV.mjs +0 -49
  419. package/dist/get-BQH2FJBV.mjs.map +0 -1
  420. package/dist/get-DCEQN75Y.mjs +0 -71
  421. package/dist/get-DCEQN75Y.mjs.map +0 -1
  422. package/dist/get-DEFHJ7CN.js +0 -94
  423. package/dist/get-DEFHJ7CN.js.map +0 -1
  424. package/dist/get-DX5U344V.mjs +0 -149
  425. package/dist/get-DX5U344V.mjs.map +0 -1
  426. package/dist/get-EWYM6FYK.js +0 -54
  427. package/dist/get-EWYM6FYK.js.map +0 -1
  428. package/dist/get-HY3N72VT.js +0 -71
  429. package/dist/get-HY3N72VT.js.map +0 -1
  430. package/dist/get-I2CSBUKB.js +0 -56
  431. package/dist/get-I2CSBUKB.js.map +0 -1
  432. package/dist/get-I6EY4PC6.mjs +0 -54
  433. package/dist/get-I6EY4PC6.mjs.map +0 -1
  434. package/dist/get-JDHZ2YUC.mjs +0 -85
  435. package/dist/get-JDHZ2YUC.mjs.map +0 -1
  436. package/dist/get-KSATLDNX.mjs +0 -56
  437. package/dist/get-KSATLDNX.mjs.map +0 -1
  438. package/dist/get-L5HUN5CE.mjs +0 -94
  439. package/dist/get-L5HUN5CE.mjs.map +0 -1
  440. package/dist/get-LIQYXM3J.mjs +0 -76
  441. package/dist/get-LIQYXM3J.mjs.map +0 -1
  442. package/dist/get-NICBHRKG.js +0 -51
  443. package/dist/get-NICBHRKG.js.map +0 -1
  444. package/dist/get-NXV4JPXT.mjs +0 -51
  445. package/dist/get-NXV4JPXT.mjs.map +0 -1
  446. package/dist/get-OH6XFEO7.js +0 -149
  447. package/dist/get-OH6XFEO7.js.map +0 -1
  448. package/dist/get-OW77HE3C.mjs +0 -67
  449. package/dist/get-OW77HE3C.mjs.map +0 -1
  450. package/dist/get-P5MUOCUP.js +0 -68
  451. package/dist/get-P5MUOCUP.js.map +0 -1
  452. package/dist/get-PHEE7JVL.mjs +0 -71
  453. package/dist/get-PHEE7JVL.mjs.map +0 -1
  454. package/dist/get-QYIM3DCN.mjs +0 -68
  455. package/dist/get-QYIM3DCN.mjs.map +0 -1
  456. package/dist/get-R6F56IVZ.js +0 -67
  457. package/dist/get-R6F56IVZ.js.map +0 -1
  458. package/dist/get-RWF3UWIF.js +0 -71
  459. package/dist/get-RWF3UWIF.js.map +0 -1
  460. package/dist/get-T6TAL2GB.js +0 -52
  461. package/dist/get-T6TAL2GB.js.map +0 -1
  462. package/dist/get-TNDPILF3.js +0 -85
  463. package/dist/get-TNDPILF3.js.map +0 -1
  464. package/dist/get-UV3YT4VH.js +0 -66
  465. package/dist/get-UV3YT4VH.js.map +0 -1
  466. package/dist/get-X4Q4RZQC.mjs +0 -52
  467. package/dist/get-X4Q4RZQC.mjs.map +0 -1
  468. package/dist/get-XIK4FEGG.js +0 -71
  469. package/dist/get-XIK4FEGG.js.map +0 -1
  470. package/dist/health-LCGP7UDT.js +0 -73
  471. package/dist/health-LCGP7UDT.js.map +0 -1
  472. package/dist/health-MCMRR6RQ.mjs +0 -73
  473. package/dist/health-MCMRR6RQ.mjs.map +0 -1
  474. package/dist/ingestion-templates-7TLETXIF.mjs +0 -169
  475. package/dist/ingestion-templates-7TLETXIF.mjs.map +0 -1
  476. package/dist/ingestion-templates-AT5AKWJB.js +0 -169
  477. package/dist/ingestion-templates-AT5AKWJB.js.map +0 -1
  478. package/dist/init-SQ5UUFDM.js +0 -16
  479. package/dist/init-SQ5UUFDM.js.map +0 -1
  480. package/dist/init-UGSR2T2P.mjs +0 -16
  481. package/dist/init-UGSR2T2P.mjs.map +0 -1
  482. package/dist/init-shell-2JQCBGMG.mjs +0 -71
  483. package/dist/init-shell-2JQCBGMG.mjs.map +0 -1
  484. package/dist/init-shell-UDTYTWJ4.js +0 -71
  485. package/dist/init-shell-UDTYTWJ4.js.map +0 -1
  486. package/dist/install-JNBCGN7Q.mjs +0 -191
  487. package/dist/install-JNBCGN7Q.mjs.map +0 -1
  488. package/dist/install-VBJKW5WP.js +0 -191
  489. package/dist/install-VBJKW5WP.js.map +0 -1
  490. package/dist/list-2ALO3KFG.js +0 -87
  491. package/dist/list-2ALO3KFG.js.map +0 -1
  492. package/dist/list-2YGHM2AD.mjs +0 -76
  493. package/dist/list-2YGHM2AD.mjs.map +0 -1
  494. package/dist/list-3XJ7VZN4.mjs +0 -75
  495. package/dist/list-3XJ7VZN4.mjs.map +0 -1
  496. package/dist/list-47FO2DBS.js +0 -80
  497. package/dist/list-47FO2DBS.js.map +0 -1
  498. package/dist/list-4JFVZU6U.mjs +0 -78
  499. package/dist/list-4JFVZU6U.mjs.map +0 -1
  500. package/dist/list-5DNRGKML.mjs +0 -80
  501. package/dist/list-5DNRGKML.mjs.map +0 -1
  502. package/dist/list-6CPPEJQV.js +0 -75
  503. package/dist/list-6CPPEJQV.js.map +0 -1
  504. package/dist/list-6UYNGBNA.mjs +0 -75
  505. package/dist/list-6UYNGBNA.mjs.map +0 -1
  506. package/dist/list-7F3TLLLA.js +0 -85
  507. package/dist/list-7F3TLLLA.js.map +0 -1
  508. package/dist/list-AVYXRPYR.mjs +0 -53
  509. package/dist/list-AVYXRPYR.mjs.map +0 -1
  510. package/dist/list-B5QJP7XO.mjs +0 -122
  511. package/dist/list-B5QJP7XO.mjs.map +0 -1
  512. package/dist/list-BI6VDR3L.mjs +0 -80
  513. package/dist/list-BI6VDR3L.mjs.map +0 -1
  514. package/dist/list-BIXZNQNL.mjs +0 -90
  515. package/dist/list-BIXZNQNL.mjs.map +0 -1
  516. package/dist/list-E2NKP4RN.mjs +0 -71
  517. package/dist/list-E2NKP4RN.mjs.map +0 -1
  518. package/dist/list-EX74E4W3.js +0 -82
  519. package/dist/list-EX74E4W3.js.map +0 -1
  520. package/dist/list-F7RK6OGO.js +0 -71
  521. package/dist/list-F7RK6OGO.js.map +0 -1
  522. package/dist/list-FQVXBMOV.js +0 -82
  523. package/dist/list-FQVXBMOV.js.map +0 -1
  524. package/dist/list-FTAHO7RS.js +0 -53
  525. package/dist/list-FTAHO7RS.js.map +0 -1
  526. package/dist/list-HJFLTMZZ.js +0 -80
  527. package/dist/list-HJFLTMZZ.js.map +0 -1
  528. package/dist/list-HZCZZBHB.js +0 -83
  529. package/dist/list-HZCZZBHB.js.map +0 -1
  530. package/dist/list-IIUX33VL.mjs +0 -86
  531. package/dist/list-IIUX33VL.mjs.map +0 -1
  532. package/dist/list-JFASUTLY.js +0 -78
  533. package/dist/list-JFASUTLY.js.map +0 -1
  534. package/dist/list-KJIOIAVI.mjs +0 -80
  535. package/dist/list-KJIOIAVI.mjs.map +0 -1
  536. package/dist/list-LKNXTUMI.js +0 -104
  537. package/dist/list-LKNXTUMI.js.map +0 -1
  538. package/dist/list-M34E5BJ5.js +0 -80
  539. package/dist/list-M34E5BJ5.js.map +0 -1
  540. package/dist/list-MX4GYY6P.mjs +0 -87
  541. package/dist/list-MX4GYY6P.mjs.map +0 -1
  542. package/dist/list-O5SCIB3L.js +0 -75
  543. package/dist/list-O5SCIB3L.js.map +0 -1
  544. package/dist/list-O6OJ5XHC.mjs +0 -72
  545. package/dist/list-O6OJ5XHC.mjs.map +0 -1
  546. package/dist/list-ODC5L7LD.mjs +0 -83
  547. package/dist/list-ODC5L7LD.mjs.map +0 -1
  548. package/dist/list-Q5WBWW4Q.mjs +0 -82
  549. package/dist/list-Q5WBWW4Q.mjs.map +0 -1
  550. package/dist/list-QA563QDB.js +0 -90
  551. package/dist/list-QA563QDB.js.map +0 -1
  552. package/dist/list-RJFCSUUQ.mjs +0 -111
  553. package/dist/list-RJFCSUUQ.mjs.map +0 -1
  554. package/dist/list-RMHLZBQG.js +0 -76
  555. package/dist/list-RMHLZBQG.js.map +0 -1
  556. package/dist/list-SRYZRJCV.js +0 -111
  557. package/dist/list-SRYZRJCV.js.map +0 -1
  558. package/dist/list-TOSZ7BU7.js +0 -86
  559. package/dist/list-TOSZ7BU7.js.map +0 -1
  560. package/dist/list-UQQ2PAU3.mjs +0 -104
  561. package/dist/list-UQQ2PAU3.mjs.map +0 -1
  562. package/dist/list-V2WO7LLU.js +0 -72
  563. package/dist/list-V2WO7LLU.js.map +0 -1
  564. package/dist/list-VA5A3CCK.mjs +0 -75
  565. package/dist/list-VA5A3CCK.mjs.map +0 -1
  566. package/dist/list-X6EIZ5MP.js +0 -75
  567. package/dist/list-X6EIZ5MP.js.map +0 -1
  568. package/dist/list-YUYYYQ7E.js +0 -122
  569. package/dist/list-YUYYYQ7E.js.map +0 -1
  570. package/dist/list-Z4GK3RXW.js +0 -78
  571. package/dist/list-Z4GK3RXW.js.map +0 -1
  572. package/dist/list-ZBKYVBPN.mjs +0 -85
  573. package/dist/list-ZBKYVBPN.mjs.map +0 -1
  574. package/dist/list-ZDLAHVOP.mjs +0 -78
  575. package/dist/list-ZDLAHVOP.mjs.map +0 -1
  576. package/dist/list-ZONPFTHT.mjs +0 -82
  577. package/dist/list-ZONPFTHT.mjs.map +0 -1
  578. package/dist/login-UWJ4SQ3T.mjs +0 -279
  579. package/dist/login-UWJ4SQ3T.mjs.map +0 -1
  580. package/dist/login-Y3TEPZOC.js +0 -279
  581. package/dist/login-Y3TEPZOC.js.map +0 -1
  582. package/dist/logout-RTWQU22E.mjs +0 -181
  583. package/dist/logout-RTWQU22E.mjs.map +0 -1
  584. package/dist/logout-TXOAFCK7.js +0 -181
  585. package/dist/logout-TXOAFCK7.js.map +0 -1
  586. package/dist/open-2IGFGDDB.mjs +0 -47
  587. package/dist/open-2IGFGDDB.mjs.map +0 -1
  588. package/dist/open-TCBDPKWM.js +0 -47
  589. package/dist/open-TCBDPKWM.js.map +0 -1
  590. package/dist/pull-3MXPXKVF.mjs +0 -27
  591. package/dist/pull-3MXPXKVF.mjs.map +0 -1
  592. package/dist/pull-5RX2YX5P.js +0 -27
  593. package/dist/pull-5RX2YX5P.js.map +0 -1
  594. package/dist/push-7L3NXCCJ.mjs +0 -27
  595. package/dist/push-7L3NXCCJ.mjs.map +0 -1
  596. package/dist/push-QPS47QAN.js +0 -27
  597. package/dist/push-QPS47QAN.js.map +0 -1
  598. package/dist/query-2PAEPPLR.js +0 -122
  599. package/dist/query-2PAEPPLR.js.map +0 -1
  600. package/dist/query-FJ4JJLRH.mjs +0 -122
  601. package/dist/query-FJ4JJLRH.mjs.map +0 -1
  602. package/dist/records-add-K6ZRY3MM.mjs +0 -98
  603. package/dist/records-add-K6ZRY3MM.mjs.map +0 -1
  604. package/dist/records-add-OQK2SWSP.js +0 -98
  605. package/dist/records-add-OQK2SWSP.js.map +0 -1
  606. package/dist/records-delete-DPNRLQRU.mjs +0 -46
  607. package/dist/records-delete-DPNRLQRU.mjs.map +0 -1
  608. package/dist/records-delete-UC3XJNIF.js +0 -46
  609. package/dist/records-delete-UC3XJNIF.js.map +0 -1
  610. package/dist/records-list-AC7ADD4R.js +0 -89
  611. package/dist/records-list-AC7ADD4R.js.map +0 -1
  612. package/dist/records-list-EEDFGR5M.mjs +0 -89
  613. package/dist/records-list-EEDFGR5M.mjs.map +0 -1
  614. package/dist/records-update-R5G7AOMD.js +0 -53
  615. package/dist/records-update-R5G7AOMD.js.map +0 -1
  616. package/dist/records-update-V23XILMF.mjs +0 -53
  617. package/dist/records-update-V23XILMF.mjs.map +0 -1
  618. package/dist/remove-JS3XWII2.mjs +0 -114
  619. package/dist/remove-JS3XWII2.mjs.map +0 -1
  620. package/dist/remove-QU7WDHPI.js +0 -114
  621. package/dist/remove-QU7WDHPI.js.map +0 -1
  622. package/dist/rename-AQZWJOSA.js +0 -42
  623. package/dist/rename-AQZWJOSA.js.map +0 -1
  624. package/dist/rename-NX4OMJDP.mjs +0 -42
  625. package/dist/rename-NX4OMJDP.mjs.map +0 -1
  626. package/dist/request-increase-FLFEPGIC.js +0 -37
  627. package/dist/request-increase-FLFEPGIC.js.map +0 -1
  628. package/dist/request-increase-NHM27JXH.mjs +0 -37
  629. package/dist/request-increase-NHM27JXH.mjs.map +0 -1
  630. package/dist/restore-HTAPXIPP.js +0 -73
  631. package/dist/restore-HTAPXIPP.js.map +0 -1
  632. package/dist/restore-R5LY5MWO.mjs +0 -73
  633. package/dist/restore-R5LY5MWO.mjs.map +0 -1
  634. package/dist/revoke-2JIUV7JE.mjs +0 -41
  635. package/dist/revoke-2JIUV7JE.mjs.map +0 -1
  636. package/dist/revoke-GH3YEBRW.js +0 -44
  637. package/dist/revoke-GH3YEBRW.js.map +0 -1
  638. package/dist/revoke-MS5OZQHS.js +0 -41
  639. package/dist/revoke-MS5OZQHS.js.map +0 -1
  640. package/dist/revoke-TQJVF3BL.mjs +0 -44
  641. package/dist/revoke-TQJVF3BL.mjs.map +0 -1
  642. package/dist/rotate-QUP62JOC.mjs +0 -52
  643. package/dist/rotate-QUP62JOC.mjs.map +0 -1
  644. package/dist/rotate-U3RJTWOO.js +0 -52
  645. package/dist/rotate-U3RJTWOO.js.map +0 -1
  646. package/dist/run-2KC3XYCD.js +0 -77
  647. package/dist/run-2KC3XYCD.js.map +0 -1
  648. package/dist/run-35JPAOLO.mjs +0 -83
  649. package/dist/run-35JPAOLO.mjs.map +0 -1
  650. package/dist/run-5YPCH5US.mjs +0 -77
  651. package/dist/run-5YPCH5US.mjs.map +0 -1
  652. package/dist/run-6BUAGYXY.mjs +0 -142
  653. package/dist/run-6BUAGYXY.mjs.map +0 -1
  654. package/dist/run-BB27OOPE.js +0 -131
  655. package/dist/run-BB27OOPE.js.map +0 -1
  656. package/dist/run-BPTFP3HA.mjs +0 -144
  657. package/dist/run-BPTFP3HA.mjs.map +0 -1
  658. package/dist/run-DVPUVKTV.mjs +0 -131
  659. package/dist/run-DVPUVKTV.mjs.map +0 -1
  660. package/dist/run-GJEOP5LP.js +0 -144
  661. package/dist/run-GJEOP5LP.js.map +0 -1
  662. package/dist/run-JLC2AGGB.js +0 -83
  663. package/dist/run-JLC2AGGB.js.map +0 -1
  664. package/dist/run-P5B7FK6K.js +0 -142
  665. package/dist/run-P5B7FK6K.js.map +0 -1
  666. package/dist/search-FMFV6U6P.mjs +0 -108
  667. package/dist/search-FMFV6U6P.mjs.map +0 -1
  668. package/dist/search-LEF4NLQJ.js +0 -108
  669. package/dist/search-LEF4NLQJ.js.map +0 -1
  670. package/dist/set-7Q2IUUPV.mjs +0 -105
  671. package/dist/set-7Q2IUUPV.mjs.map +0 -1
  672. package/dist/set-DYXQGJNE.js +0 -59
  673. package/dist/set-DYXQGJNE.js.map +0 -1
  674. package/dist/set-FVXIBW4X.js +0 -105
  675. package/dist/set-FVXIBW4X.js.map +0 -1
  676. package/dist/set-PMA5UWDK.mjs +0 -59
  677. package/dist/set-PMA5UWDK.mjs.map +0 -1
  678. package/dist/status-DS55UJ7O.mjs +0 -153
  679. package/dist/status-DS55UJ7O.mjs.map +0 -1
  680. package/dist/status-GSPWZ255.mjs +0 -56
  681. package/dist/status-GSPWZ255.mjs.map +0 -1
  682. package/dist/status-KH64EWPP.js +0 -153
  683. package/dist/status-KH64EWPP.js.map +0 -1
  684. package/dist/status-M4GI2HR3.js +0 -56
  685. package/dist/status-M4GI2HR3.js.map +0 -1
  686. package/dist/status-OAD2U66Z.js +0 -122
  687. package/dist/status-OAD2U66Z.js.map +0 -1
  688. package/dist/status-U3EPMBTN.mjs +0 -122
  689. package/dist/status-U3EPMBTN.mjs.map +0 -1
  690. package/dist/sync-PKDE2D7V.js +0 -132
  691. package/dist/sync-PKDE2D7V.js.map +0 -1
  692. package/dist/sync-XV5HX5TO.mjs +0 -132
  693. package/dist/sync-XV5HX5TO.mjs.map +0 -1
  694. package/dist/tail-CKK6GFNI.js +0 -108
  695. package/dist/tail-CKK6GFNI.js.map +0 -1
  696. package/dist/tail-D26CEKSH.mjs +0 -108
  697. package/dist/tail-D26CEKSH.mjs.map +0 -1
  698. package/dist/unset-FGAQM4WA.js +0 -107
  699. package/dist/unset-FGAQM4WA.js.map +0 -1
  700. package/dist/unset-TVSHRR64.mjs +0 -107
  701. package/dist/unset-TVSHRR64.mjs.map +0 -1
  702. package/dist/update-337XCLM7.mjs +0 -65
  703. package/dist/update-337XCLM7.mjs.map +0 -1
  704. package/dist/update-43JHGSN7.js +0 -106
  705. package/dist/update-43JHGSN7.js.map +0 -1
  706. package/dist/update-4KGPCVCD.js +0 -71
  707. package/dist/update-4KGPCVCD.js.map +0 -1
  708. package/dist/update-5DIMZPJB.mjs +0 -71
  709. package/dist/update-5DIMZPJB.mjs.map +0 -1
  710. package/dist/update-5WVIKR5E.js +0 -48
  711. package/dist/update-5WVIKR5E.js.map +0 -1
  712. package/dist/update-AAZVLFRJ.js +0 -75
  713. package/dist/update-AAZVLFRJ.js.map +0 -1
  714. package/dist/update-APD7MSPV.js +0 -61
  715. package/dist/update-APD7MSPV.js.map +0 -1
  716. package/dist/update-AR7L7TOZ.js +0 -48
  717. package/dist/update-AR7L7TOZ.js.map +0 -1
  718. package/dist/update-C3I3BHWG.js +0 -63
  719. package/dist/update-C3I3BHWG.js.map +0 -1
  720. package/dist/update-CDBNRXSO.mjs +0 -106
  721. package/dist/update-CDBNRXSO.mjs.map +0 -1
  722. package/dist/update-CXYYWVNO.mjs +0 -75
  723. package/dist/update-CXYYWVNO.mjs.map +0 -1
  724. package/dist/update-DUJU3A4R.mjs +0 -48
  725. package/dist/update-DUJU3A4R.mjs.map +0 -1
  726. package/dist/update-E3GH3WEX.mjs +0 -83
  727. package/dist/update-E3GH3WEX.mjs.map +0 -1
  728. package/dist/update-HHGQ2DVM.js +0 -83
  729. package/dist/update-HHGQ2DVM.js.map +0 -1
  730. package/dist/update-IFDJZ6LW.js +0 -66
  731. package/dist/update-IFDJZ6LW.js.map +0 -1
  732. package/dist/update-JEGVDVSK.js +0 -51
  733. package/dist/update-JEGVDVSK.js.map +0 -1
  734. package/dist/update-JL3MKZXC.mjs +0 -66
  735. package/dist/update-JL3MKZXC.mjs.map +0 -1
  736. package/dist/update-JUTNNHSA.mjs +0 -51
  737. package/dist/update-JUTNNHSA.mjs.map +0 -1
  738. package/dist/update-MBBSJQJL.mjs +0 -79
  739. package/dist/update-MBBSJQJL.mjs.map +0 -1
  740. package/dist/update-NOYJVXCB.mjs +0 -63
  741. package/dist/update-NOYJVXCB.mjs.map +0 -1
  742. package/dist/update-OFUQFYBD.js +0 -76
  743. package/dist/update-OFUQFYBD.js.map +0 -1
  744. package/dist/update-OZC2S3BC.js +0 -79
  745. package/dist/update-OZC2S3BC.js.map +0 -1
  746. package/dist/update-P4PNDOMU.mjs +0 -63
  747. package/dist/update-P4PNDOMU.mjs.map +0 -1
  748. package/dist/update-RJFENG32.mjs +0 -48
  749. package/dist/update-RJFENG32.mjs.map +0 -1
  750. package/dist/update-W2RQW53I.js +0 -65
  751. package/dist/update-W2RQW53I.js.map +0 -1
  752. package/dist/update-WFGCL4JS.mjs +0 -61
  753. package/dist/update-WFGCL4JS.mjs.map +0 -1
  754. package/dist/update-WTIR2BYE.js +0 -63
  755. package/dist/update-WTIR2BYE.js.map +0 -1
  756. package/dist/update-X7J6WRG3.mjs +0 -76
  757. package/dist/update-X7J6WRG3.mjs.map +0 -1
  758. package/dist/upload-7O3K4YAL.mjs +0 -80
  759. package/dist/upload-7O3K4YAL.mjs.map +0 -1
  760. package/dist/upload-DJA44RJ3.js +0 -80
  761. package/dist/upload-DJA44RJ3.js.map +0 -1
  762. package/dist/versions-2JD6EKCA.js +0 -85
  763. package/dist/versions-2JD6EKCA.js.map +0 -1
  764. package/dist/versions-HXI6GAD2.mjs +0 -85
  765. package/dist/versions-HXI6GAD2.mjs.map +0 -1
  766. package/dist/whoami-EI52YRCH.js +0 -30
  767. package/dist/whoami-EI52YRCH.js.map +0 -1
  768. package/dist/whoami-KGRA4QEY.mjs +0 -30
  769. package/dist/whoami-KGRA4QEY.mjs.map +0 -1
  770. package/dist/wrap-LBMHL6N6.mjs +0 -33
  771. package/dist/wrap-LBMHL6N6.mjs.map +0 -1
  772. package/dist/wrap-O7DQWEVA.js +0 -33
  773. package/dist/wrap-O7DQWEVA.js.map +0 -1
  774. /package/dist/{chunk-RIPASL56.mjs.map → chunk-2O4ILSP5.mjs.map} +0 -0
@@ -1,257 +0,0 @@
1
- // src/cli/utils/codex-config-toml.ts
2
- import * as fs from "fs";
3
- import * as os from "os";
4
- import * as path from "path";
5
- var BEGIN = "# >>> langwatch otel begin >>>";
6
- var END = "# <<< langwatch otel end <<<";
7
- function defaultCodexConfigPath() {
8
- const codexHome = process.env.CODEX_HOME;
9
- if (codexHome) return path.join(codexHome, "config.toml");
10
- return path.join(os.homedir(), ".codex", "config.toml");
11
- }
12
- function displayCodexConfigPath() {
13
- const codexHome = process.env.CODEX_HOME;
14
- if (codexHome) return path.join(codexHome, "config.toml");
15
- return "~/.codex/config.toml";
16
- }
17
- function codexTraceEndpoint(baseEndpoint) {
18
- return `${baseEndpoint.replace(/\/+$/, "")}/v1/traces`;
19
- }
20
- function tomlStr(s) {
21
- return s.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
22
- }
23
- function buildCodexOtelBlock(inputs, options = {}) {
24
- var _a, _b;
25
- const env = (_a = inputs.environment) != null ? _a : "langwatch";
26
- const includeAuthHeader = (_b = options.includeAuthHeader) != null ? _b : false;
27
- const authNote = includeAuthHeader ? [
28
- `# The Authorization header below carries a write-only ingest key so`,
29
- `# a plain 'codex' (without the langwatch wrapper) captures too. The`,
30
- `# file is written 0600; remove the marker pair to opt back out.`
31
- ] : [
32
- `# Authorization header lives in OTEL_EXPORTER_OTLP_HEADERS;`,
33
- `# this file persists only the endpoint + environment label.`
34
- ];
35
- const exporter = [
36
- "[otel.trace_exporter.otlp-http]",
37
- `endpoint = "${tomlStr(inputs.endpoint)}"`,
38
- `protocol = "json"`
39
- ];
40
- if (includeAuthHeader) {
41
- exporter.push(
42
- `headers = { "Authorization" = "Bearer ${tomlStr(inputs.ingestionToken)}" }`
43
- );
44
- }
45
- return [
46
- BEGIN,
47
- `# Managed by 'langwatch codex'. Re-running the command updates this`,
48
- `# block in place; remove the marker pair above and below to opt out.`,
49
- ...authNote,
50
- "[otel]",
51
- `environment = "${tomlStr(env)}"`,
52
- "",
53
- ...exporter,
54
- END,
55
- ""
56
- ].join("\n");
57
- }
58
- function codexOtelBlockHasAuthHeader(filePath) {
59
- let content;
60
- try {
61
- content = fs.readFileSync(filePath, "utf8");
62
- } catch (e) {
63
- return false;
64
- }
65
- const begin = content.indexOf(BEGIN);
66
- const end = content.indexOf(END);
67
- if (begin === -1 || end === -1 || end < begin) return false;
68
- const block = content.slice(begin, end);
69
- return /^\s*headers\s*=/m.test(block);
70
- }
71
- function writeCodexOtelBlock(inputs, options = {}) {
72
- var _a, _b;
73
- const filePath = (_a = options.filePath) != null ? _a : defaultCodexConfigPath();
74
- const includeAuthHeader = (_b = options.persistAuthHeader) != null ? _b : codexOtelBlockHasAuthHeader(filePath);
75
- const block = buildCodexOtelBlock(inputs, { includeAuthHeader });
76
- if (!fs.existsSync(filePath)) {
77
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
78
- writeFile0600(filePath, block);
79
- return { action: "created", path: filePath };
80
- }
81
- const prior = fs.readFileSync(filePath, "utf8");
82
- const re = new RegExp(
83
- `${escapeRe(BEGIN)}[\\s\\S]*?${escapeRe(END)}\\n?`,
84
- "m"
85
- );
86
- if (re.test(prior)) {
87
- const next = prior.replace(re, block);
88
- if (next === prior) return { action: "unchanged", path: filePath };
89
- writeFile0600(filePath, next);
90
- return { action: "updated", path: filePath };
91
- }
92
- const sep = prior.endsWith("\n") ? "\n" : "\n\n";
93
- writeFile0600(filePath, prior + sep + block);
94
- return { action: "updated", path: filePath };
95
- }
96
- function escapeRe(s) {
97
- return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
98
- }
99
- function writeFile0600(filePath, content) {
100
- if (fs.existsSync(filePath)) {
101
- fs.chmodSync(filePath, 384);
102
- }
103
- fs.writeFileSync(filePath, content, { mode: 384 });
104
- fs.chmodSync(filePath, 384);
105
- }
106
- var GW_BEGIN = "# >>> langwatch gateway begin >>>";
107
- var GW_END = "# <<< langwatch gateway end <<<";
108
- var PROFILE_NAME = "langwatch-gateway";
109
- function buildCodexGatewayBlock(inputs) {
110
- var _a;
111
- const envKey = (_a = inputs.envKey) != null ? _a : "OPENAI_API_KEY";
112
- const cleanedBase = inputs.gatewayUrl.replace(/\/+$/, "");
113
- const baseUrl = cleanedBase.endsWith("/v1") ? cleanedBase : `${cleanedBase}/v1`;
114
- return [
115
- GW_BEGIN,
116
- `# Managed by 'langwatch codex' (Path A wrapper). Re-running the`,
117
- `# wrapper updates this block in place; remove the marker pair`,
118
- `# above and below to opt back out.`,
119
- `# The wrapper spawns codex with --profile ${PROFILE_NAME} so this`,
120
- `# provider doesn't change codex's default model_provider.`,
121
- `# The matching profile body lives at ~/.codex/${PROFILE_NAME}.config.toml`,
122
- `# (codex 0.134+ requires the profile in a separate file).`,
123
- `[model_providers.langwatch]`,
124
- `name = "OpenAI"`,
125
- `base_url = "${baseUrl}"`,
126
- `env_key = "${envKey}"`,
127
- `wire_api = "responses"`,
128
- GW_END,
129
- ""
130
- ].join("\n");
131
- }
132
- function buildCodexGatewayProfileFile() {
133
- return [
134
- `# Managed by 'langwatch codex' (Path A wrapper).`,
135
- `# This file is the body of the '${PROFILE_NAME}' codex profile,`,
136
- `# selected at spawn time via 'codex --profile ${PROFILE_NAME}'.`,
137
- `# The matching [model_providers.langwatch] entry lives in`,
138
- `# ~/.codex/config.toml, bracketed by langwatch marker comments.`,
139
- `# Re-running 'langwatch codex' regenerates this file in place;`,
140
- `# remove it and the [model_providers.langwatch] block in`,
141
- `# config.toml to opt back out.`,
142
- `model_provider = "langwatch"`,
143
- ""
144
- ].join("\n");
145
- }
146
- function defaultCodexProfilePath(profile = PROFILE_NAME) {
147
- const codexHome = process.env.CODEX_HOME;
148
- const baseDir = codexHome != null ? codexHome : path.join(os.homedir(), ".codex");
149
- return path.join(baseDir, `${profile}.config.toml`);
150
- }
151
- function writeCodexGatewayBlock(inputs, options = {}) {
152
- var _a, _b;
153
- const filePath = (_a = options.filePath) != null ? _a : defaultCodexConfigPath();
154
- const profilePath = (_b = options.profilePath) != null ? _b : defaultCodexProfilePath();
155
- const block = buildCodexGatewayBlock(inputs);
156
- const profileBody = buildCodexGatewayProfileFile();
157
- let action;
158
- if (!fs.existsSync(filePath)) {
159
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
160
- writeFile0600(filePath, block);
161
- action = "created";
162
- } else {
163
- const prior = fs.readFileSync(filePath, "utf8");
164
- const re = new RegExp(
165
- `${escapeRe(GW_BEGIN)}[\\s\\S]*?${escapeRe(GW_END)}\\n?`,
166
- "m"
167
- );
168
- if (re.test(prior)) {
169
- const next = prior.replace(re, block);
170
- if (next === prior) {
171
- action = "unchanged";
172
- } else {
173
- writeFile0600(filePath, next);
174
- action = "updated";
175
- }
176
- } else {
177
- const sep = prior.endsWith("\n") ? "\n" : "\n\n";
178
- writeFile0600(filePath, prior + sep + block);
179
- action = "updated";
180
- }
181
- }
182
- let profileAction;
183
- if (!fs.existsSync(profilePath)) {
184
- fs.mkdirSync(path.dirname(profilePath), { recursive: true });
185
- writeFile0600(profilePath, profileBody);
186
- profileAction = "created";
187
- } else {
188
- const priorProfile = fs.readFileSync(profilePath, "utf8");
189
- if (priorProfile === profileBody) {
190
- profileAction = "unchanged";
191
- } else {
192
- writeFile0600(profilePath, profileBody);
193
- profileAction = "updated";
194
- }
195
- }
196
- return { action, path: filePath, profilePath, profileAction, profile: PROFILE_NAME };
197
- }
198
- function stripMarkerBlock(content, begin, end) {
199
- const re = new RegExp(
200
- `\\n?${escapeRe(begin)}[\\s\\S]*?${escapeRe(end)}\\n?`,
201
- "m"
202
- );
203
- if (!re.test(content)) return null;
204
- return content.replace(re, "");
205
- }
206
- function removeMarkerBlockFromFile(filePath, begin, end) {
207
- let content;
208
- try {
209
- content = fs.readFileSync(filePath, "utf8");
210
- } catch (e) {
211
- return false;
212
- }
213
- const next = stripMarkerBlock(content, begin, end);
214
- if (next === null) return false;
215
- fs.writeFileSync(filePath, next);
216
- return true;
217
- }
218
- function fileHasMarker(filePath, begin) {
219
- try {
220
- return fs.readFileSync(filePath, "utf8").includes(begin);
221
- } catch (e) {
222
- return false;
223
- }
224
- }
225
- function codexHasOtelBlock(filePath = defaultCodexConfigPath()) {
226
- return fileHasMarker(filePath, BEGIN);
227
- }
228
- function codexHasGatewayBlock(filePath = defaultCodexConfigPath()) {
229
- return fileHasMarker(filePath, GW_BEGIN);
230
- }
231
- function removeCodexOtelBlock(filePath = defaultCodexConfigPath()) {
232
- return removeMarkerBlockFromFile(filePath, BEGIN, END);
233
- }
234
- function removeCodexGatewayBlock(filePath = defaultCodexConfigPath()) {
235
- return removeMarkerBlockFromFile(filePath, GW_BEGIN, GW_END);
236
- }
237
- function removeCodexGatewayProfileFile(profilePath = defaultCodexProfilePath()) {
238
- if (!fs.existsSync(profilePath)) return false;
239
- fs.rmSync(profilePath, { force: true });
240
- return true;
241
- }
242
-
243
- export {
244
- defaultCodexConfigPath,
245
- displayCodexConfigPath,
246
- codexTraceEndpoint,
247
- codexOtelBlockHasAuthHeader,
248
- writeCodexOtelBlock,
249
- defaultCodexProfilePath,
250
- writeCodexGatewayBlock,
251
- codexHasOtelBlock,
252
- codexHasGatewayBlock,
253
- removeCodexOtelBlock,
254
- removeCodexGatewayBlock,
255
- removeCodexGatewayProfileFile
256
- };
257
- //# sourceMappingURL=chunk-YK55ZGRQ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/utils/codex-config-toml.ts"],"sourcesContent":["/**\n * Idempotent merge of the LangWatch [otel] activation block into\n * ~/.codex/config.toml.\n *\n * Codex 0.130+ links the opentelemetry-otlp Rust SDK but its\n * exporter is gated on a `[otel]` block in `~/.codex/config.toml` —\n * env vars alone are a silent no-op. The Path B install flow needs\n * to write this block for the user so the drawer / CLI surface\n * can collapse to a single command.\n *\n * Why a handwritten merger and not a TOML library: the file may\n * contain valid TOML the user authored by hand, and we want to\n * preserve ordering + comments verbatim. The merger only ever\n * appends a marker-bracketed block at the end of the file and\n * regex-replaces the same block on re-runs. No structural rewrite\n * of the existing TOML.\n *\n * Marker comments:\n * # >>> langwatch otel begin >>>\n * …\n * # <<< langwatch otel end <<<\n */\n\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\n\nconst BEGIN = \"# >>> langwatch otel begin >>>\";\nconst END = \"# <<< langwatch otel end <<<\";\n\nexport interface CodexOtelBlockInputs {\n /** Full OTLP endpoint, e.g. https://app.langwatch.ai/api/otel */\n endpoint: string;\n /** Plaintext personal ingest key (sk-lw-<...>). */\n ingestionToken: string;\n /** Logical environment label (e.g. user@org). Lands on resource.deployment.environment.name. */\n environment?: string;\n}\n\n/** Default config.toml path under the user's home directory. */\nexport function defaultCodexConfigPath(): string {\n const codexHome = process.env.CODEX_HOME;\n if (codexHome) return path.join(codexHome, \"config.toml\");\n return path.join(os.homedir(), \".codex\", \"config.toml\");\n}\n\n/** Path shown in the persist prompt (`~/.codex/config.toml`). */\nexport function displayCodexConfigPath(): string {\n const codexHome = process.env.CODEX_HOME;\n if (codexHome) return path.join(codexHome, \"config.toml\");\n return \"~/.codex/config.toml\";\n}\n\n/**\n * The trace-signal endpoint codex's otlp-http exporter posts to. codex\n * (unlike the Node/Python/Go OTel SDKs) does NOT append `/v1/traces` to\n * the configured endpoint, so the suffix is spelled out here. Callers\n * pass the bare ingestion base (e.g. https://app.langwatch.ai/api/otel).\n */\nexport function codexTraceEndpoint(baseEndpoint: string): string {\n return `${baseEndpoint.replace(/\\/+$/, \"\")}/v1/traces`;\n}\n\n/** Escape a value for a TOML basic (double-quoted) string. */\nfunction tomlStr(s: string): string {\n return s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n}\n\n/**\n * Build the bracketed [otel] + [otel.trace_exporter.otlp-http] block.\n * Returned WITH leading + trailing markers and a trailing newline.\n *\n * codex 0.137+ separates `trace_exporter` (spans) from `exporter`\n * (logs) in its config schema. We emit the trace_exporter form so\n * Path B span ingestion fires; the older `[otel.exporter.otlp-http]`\n * form is silently ignored on traces in the current schema.\n *\n * `includeAuthHeader` controls whether the write-only ingest key is\n * inlined as a `headers` entry on the trace exporter. codex reads that\n * header on every run, so persisting it makes a plain `codex` (no\n * langwatch wrapper) capture without leaking OTEL vars into the shell\n * rc. When false, the header comes from OTEL_EXPORTER_OTLP_HEADERS at\n * runtime instead (the wrapper-only default that keeps the secret off\n * disk until the user opts in).\n */\nexport function buildCodexOtelBlock(\n inputs: CodexOtelBlockInputs,\n options: { includeAuthHeader?: boolean } = {},\n): string {\n const env = inputs.environment ?? \"langwatch\";\n const includeAuthHeader = options.includeAuthHeader ?? false;\n\n const authNote = includeAuthHeader\n ? [\n `# The Authorization header below carries a write-only ingest key so`,\n `# a plain 'codex' (without the langwatch wrapper) captures too. The`,\n `# file is written 0600; remove the marker pair to opt back out.`,\n ]\n : [\n `# Authorization header lives in OTEL_EXPORTER_OTLP_HEADERS;`,\n `# this file persists only the endpoint + environment label.`,\n ];\n\n const exporter = [\n \"[otel.trace_exporter.otlp-http]\",\n `endpoint = \"${tomlStr(inputs.endpoint)}\"`,\n `protocol = \"json\"`,\n ];\n if (includeAuthHeader) {\n exporter.push(\n `headers = { \"Authorization\" = \"Bearer ${tomlStr(inputs.ingestionToken)}\" }`,\n );\n }\n\n return [\n BEGIN,\n `# Managed by 'langwatch codex'. Re-running the command updates this`,\n `# block in place; remove the marker pair above and below to opt out.`,\n ...authNote,\n \"[otel]\",\n `environment = \"${tomlStr(env)}\"`,\n \"\",\n ...exporter,\n END,\n \"\",\n ].join(\"\\n\");\n}\n\n/**\n * Whether the current langwatch [otel] block in the file already\n * carries a persisted `headers` line (the inlined Authorization\n * header). Used to (a) stay quiet in the persist offer once the header\n * is installed and (b) let the unconditional setup write preserve it.\n */\nexport function codexOtelBlockHasAuthHeader(filePath: string): boolean {\n let content: string;\n try {\n content = fs.readFileSync(filePath, \"utf8\");\n } catch {\n return false;\n }\n const begin = content.indexOf(BEGIN);\n const end = content.indexOf(END);\n if (begin === -1 || end === -1 || end < begin) return false;\n const block = content.slice(begin, end);\n return /^\\s*headers\\s*=/m.test(block);\n}\n\n/**\n * Merge result returned by writeCodexOtelBlock so callers can\n * report which action was taken without re-reading the file.\n */\nexport type CodexOtelWriteAction = \"created\" | \"updated\" | \"unchanged\";\n\nexport interface CodexOtelWriteResult {\n action: CodexOtelWriteAction;\n path: string;\n}\n\n/**\n * Idempotent merge into the codex config.toml. Behaviour:\n *\n * - If the file does not exist: create the parent dir if needed,\n * write the block as the entire file contents.\n * - If the file exists with NO marker pair: append the block + a\n * leading blank line so it doesn't fuse with the prior section.\n * - If the file exists WITH a marker pair: regex-replace the\n * bracketed region. The replacement is byte-for-byte the same\n * when the inputs haven't changed → returns 'unchanged'.\n */\nexport function writeCodexOtelBlock(\n inputs: CodexOtelBlockInputs,\n options: { filePath?: string; persistAuthHeader?: boolean } = {},\n): CodexOtelWriteResult {\n const filePath = options.filePath ?? defaultCodexConfigPath();\n // Emit the Authorization header when explicitly asked (the persist\n // opt-in); otherwise preserve whatever the current block has, so the\n // unconditional setup write never strips a header a prior persist\n // installed.\n const includeAuthHeader =\n options.persistAuthHeader ?? codexOtelBlockHasAuthHeader(filePath);\n const block = buildCodexOtelBlock(inputs, { includeAuthHeader });\n\n if (!fs.existsSync(filePath)) {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n writeFile0600(filePath, block);\n return { action: \"created\", path: filePath };\n }\n\n const prior = fs.readFileSync(filePath, \"utf8\");\n const re = new RegExp(\n `${escapeRe(BEGIN)}[\\\\s\\\\S]*?${escapeRe(END)}\\\\n?`,\n \"m\",\n );\n if (re.test(prior)) {\n const next = prior.replace(re, block);\n if (next === prior) return { action: \"unchanged\", path: filePath };\n writeFile0600(filePath, next);\n return { action: \"updated\", path: filePath };\n }\n\n const sep = prior.endsWith(\"\\n\") ? \"\\n\" : \"\\n\\n\";\n writeFile0600(filePath, prior + sep + block);\n return { action: \"updated\", path: filePath };\n}\n\nfunction escapeRe(s: string): string {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Write `content` and enforce `0600`. `writeFileSync`'s `mode` option is\n * only honored when CREATING the file — on an existing file it is silently\n * ignored, leaving whatever permissions the file already had. Codex may\n * have created `config.toml` at `0644`, and these blocks can carry a bearer\n * token, so narrow the file to `0600` BEFORE writing when it already exists:\n * otherwise the token would land in a world-readable file for the window\n * between the write and a trailing chmod. On create, the `mode` option sets\n * `0600` up front. The final chmod is a belt-and-suspenders safety check.\n */\nfunction writeFile0600(filePath: string, content: string): void {\n if (fs.existsSync(filePath)) {\n fs.chmodSync(filePath, 0o600);\n }\n fs.writeFileSync(filePath, content, { mode: 0o600 });\n fs.chmodSync(filePath, 0o600);\n}\n\nconst GW_BEGIN = \"# >>> langwatch gateway begin >>>\";\nconst GW_END = \"# <<< langwatch gateway end <<<\";\n\nexport interface CodexGatewayBlockInputs {\n /** Gateway base URL, e.g. https://gateway.langwatch.ai */\n gatewayUrl: string;\n /**\n * Env var name codex should read the API key from. Defaults to\n * OPENAI_API_KEY because that's the standard codex env. The\n * wrapper still sets OPENAI_API_KEY to the user's VK before\n * spawning codex, so this matches the wrapper's env injection\n * out of the box.\n */\n envKey?: string;\n}\n\nexport interface CodexGatewayWriteResult {\n action: CodexOtelWriteAction;\n /**\n * The ~/.codex/config.toml path that received the\n * [model_providers.langwatch] block.\n */\n path: string;\n /**\n * The separate ~/.codex/<profile>.config.toml path that received\n * the profile body. codex 0.134+ rejects [profiles.X] entries\n * inside config.toml when the user passes --profile X, requiring\n * a sibling file named <profile>.config.toml.\n */\n profilePath: string;\n /**\n * Result of the profile-file write. Independent of `action` so\n * callers can report both writes accurately.\n */\n profileAction: CodexOtelWriteAction;\n /**\n * The profile name codex must be invoked with to actually route\n * through the langwatch provider — e.g. `codex --profile\n * langwatch-gateway`. Returned so the wrapper doesn't have to\n * hardcode the name in two places.\n */\n profile: string;\n}\n\nconst PROFILE_NAME = \"langwatch-gateway\";\n\n/**\n * Build the additive [model_providers.langwatch] block that lives\n * in ~/.codex/config.toml. Codex 0.130+ defaults to ChatGPT OAuth\n * and ignores OPENAI_API_KEY unless an explicit model_provider\n * config is selected with `name = \"OpenAI\"`, `env_key`, and\n * `wire_api = \"responses\"` (the \"chat\" wire_api is no longer\n * supported per the codex binary strings dump).\n *\n * Codex 0.134+ rejects a [profiles.<name>] entry inside\n * config.toml when the user passes --profile <name>; the profile\n * body is now written to a sibling file (see buildCodexGatewayProfileFile).\n */\nexport function buildCodexGatewayBlock(\n inputs: CodexGatewayBlockInputs,\n): string {\n const envKey = inputs.envKey ?? \"OPENAI_API_KEY\";\n const cleanedBase = inputs.gatewayUrl.replace(/\\/+$/, \"\");\n const baseUrl = cleanedBase.endsWith(\"/v1\") ? cleanedBase : `${cleanedBase}/v1`;\n return [\n GW_BEGIN,\n `# Managed by 'langwatch codex' (Path A wrapper). Re-running the`,\n `# wrapper updates this block in place; remove the marker pair`,\n `# above and below to opt back out.`,\n `# The wrapper spawns codex with --profile ${PROFILE_NAME} so this`,\n `# provider doesn't change codex's default model_provider.`,\n `# The matching profile body lives at ~/.codex/${PROFILE_NAME}.config.toml`,\n `# (codex 0.134+ requires the profile in a separate file).`,\n `[model_providers.langwatch]`,\n `name = \"OpenAI\"`,\n `base_url = \"${baseUrl}\"`,\n `env_key = \"${envKey}\"`,\n `wire_api = \"responses\"`,\n GW_END,\n \"\",\n ].join(\"\\n\");\n}\n\n/**\n * Build the contents of the sibling profile file\n * (~/.codex/langwatch-gateway.config.toml). The filename IS the\n * profile name; the body holds the settings that previously went\n * under [profiles.langwatch-gateway] inside config.toml.\n *\n * We DO NOT bracket this file with langwatch markers because the\n * file is entirely owned by langwatch — the wrapper creates it\n * fresh on every invocation. Hand-edits to it will be overwritten\n * (a header comment explains this to anyone reading the file).\n */\nexport function buildCodexGatewayProfileFile(): string {\n return [\n `# Managed by 'langwatch codex' (Path A wrapper).`,\n `# This file is the body of the '${PROFILE_NAME}' codex profile,`,\n `# selected at spawn time via 'codex --profile ${PROFILE_NAME}'.`,\n `# The matching [model_providers.langwatch] entry lives in`,\n `# ~/.codex/config.toml, bracketed by langwatch marker comments.`,\n `# Re-running 'langwatch codex' regenerates this file in place;`,\n `# remove it and the [model_providers.langwatch] block in`,\n `# config.toml to opt back out.`,\n `model_provider = \"langwatch\"`,\n \"\",\n ].join(\"\\n\");\n}\n\n/** Default path for the sibling profile file. */\nexport function defaultCodexProfilePath(profile: string = PROFILE_NAME): string {\n const codexHome = process.env.CODEX_HOME;\n const baseDir = codexHome ?? path.join(os.homedir(), \".codex\");\n return path.join(baseDir, `${profile}.config.toml`);\n}\n\n/**\n * Idempotent merge of the gateway provider block into config.toml\n * + write of the sibling profile file. Both writes happen in one\n * call so the wrapper can't end up with a half-installed state.\n *\n * config.toml: regex-replace inside the marker pair or append. The\n * [otel] marker pair (Path B) coexists independently — a user who\n * runs both Path A and Path B keeps both blocks; only one fires per\n * invocation per the no-double-trace rule.\n *\n * <profile>.config.toml: full-file replace. The file is entirely\n * owned by langwatch.\n */\nexport function writeCodexGatewayBlock(\n inputs: CodexGatewayBlockInputs,\n options: { filePath?: string; profilePath?: string } = {},\n): CodexGatewayWriteResult {\n const filePath = options.filePath ?? defaultCodexConfigPath();\n const profilePath = options.profilePath ?? defaultCodexProfilePath();\n const block = buildCodexGatewayBlock(inputs);\n const profileBody = buildCodexGatewayProfileFile();\n\n let action: CodexOtelWriteAction;\n if (!fs.existsSync(filePath)) {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n writeFile0600(filePath, block);\n action = \"created\";\n } else {\n const prior = fs.readFileSync(filePath, \"utf8\");\n const re = new RegExp(\n `${escapeRe(GW_BEGIN)}[\\\\s\\\\S]*?${escapeRe(GW_END)}\\\\n?`,\n \"m\",\n );\n if (re.test(prior)) {\n const next = prior.replace(re, block);\n if (next === prior) {\n action = \"unchanged\";\n } else {\n writeFile0600(filePath, next);\n action = \"updated\";\n }\n } else {\n const sep = prior.endsWith(\"\\n\") ? \"\\n\" : \"\\n\\n\";\n writeFile0600(filePath, prior + sep + block);\n action = \"updated\";\n }\n }\n\n let profileAction: CodexOtelWriteAction;\n if (!fs.existsSync(profilePath)) {\n fs.mkdirSync(path.dirname(profilePath), { recursive: true });\n writeFile0600(profilePath, profileBody);\n profileAction = \"created\";\n } else {\n const priorProfile = fs.readFileSync(profilePath, \"utf8\");\n if (priorProfile === profileBody) {\n profileAction = \"unchanged\";\n } else {\n writeFile0600(profilePath, profileBody);\n profileAction = \"updated\";\n }\n }\n\n return { action, path: filePath, profilePath, profileAction, profile: PROFILE_NAME };\n}\n\n/** Exported so callers + tests can reference the profile name from one place. */\nexport const CODEX_GATEWAY_PROFILE_NAME = PROFILE_NAME;\n\n/**\n * Cut a marker-bracketed langwatch block out of `content`. Removes at most\n * one leading newline and one trailing newline around the block so the\n * blank line the install path inserts before the block goes with it, but\n * unrelated user whitespace is left alone. Returns the stripped content, or\n * null when no such block is present.\n */\nfunction stripMarkerBlock(\n content: string,\n begin: string,\n end: string,\n): string | null {\n const re = new RegExp(\n `\\\\n?${escapeRe(begin)}[\\\\s\\\\S]*?${escapeRe(end)}\\\\n?`,\n \"m\",\n );\n if (!re.test(content)) return null;\n return content.replace(re, \"\");\n}\n\nfunction removeMarkerBlockFromFile(\n filePath: string,\n begin: string,\n end: string,\n): boolean {\n let content: string;\n try {\n content = fs.readFileSync(filePath, \"utf8\");\n } catch {\n return false; // ENOENT\n }\n const next = stripMarkerBlock(content, begin, end);\n if (next === null) return false;\n // Plain write preserves the file's existing mode (writeFileSync's `mode`\n // is ignored on an existing file) — removal strips our block, adding no\n // secret, so a pre-existing 0600 stays 0600.\n fs.writeFileSync(filePath, next);\n return true;\n}\n\nfunction fileHasMarker(filePath: string, begin: string): boolean {\n try {\n return fs.readFileSync(filePath, \"utf8\").includes(begin);\n } catch {\n return false;\n }\n}\n\n/** Whether config.toml currently carries the langwatch `[otel]` block. */\nexport function codexHasOtelBlock(\n filePath: string = defaultCodexConfigPath(),\n): boolean {\n return fileHasMarker(filePath, BEGIN);\n}\n\n/** Whether config.toml currently carries the langwatch gateway block. */\nexport function codexHasGatewayBlock(\n filePath: string = defaultCodexConfigPath(),\n): boolean {\n return fileHasMarker(filePath, GW_BEGIN);\n}\n\n/**\n * Remove the langwatch `[otel]` (Path B) marker block from config.toml, if\n * present. User config outside the marker pair is preserved. Returns true\n * when a block was removed (idempotent — false when absent).\n */\nexport function removeCodexOtelBlock(\n filePath: string = defaultCodexConfigPath(),\n): boolean {\n return removeMarkerBlockFromFile(filePath, BEGIN, END);\n}\n\n/**\n * Remove the langwatch gateway (Path A) provider marker block from\n * config.toml, if present. Returns true when a block was removed.\n */\nexport function removeCodexGatewayBlock(\n filePath: string = defaultCodexConfigPath(),\n): boolean {\n return removeMarkerBlockFromFile(filePath, GW_BEGIN, GW_END);\n}\n\n/**\n * Delete the sibling `<profile>.config.toml` file, which is entirely\n * owned by langwatch. Returns true when a file was deleted (idempotent —\n * false when it was already absent).\n */\nexport function removeCodexGatewayProfileFile(\n profilePath: string = defaultCodexProfilePath(),\n): boolean {\n if (!fs.existsSync(profilePath)) return false;\n fs.rmSync(profilePath, { force: true });\n return true;\n}\n"],"mappings":"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","names":[]}
@@ -1,144 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/client-sdk/services/experiments/platformErrors.ts
2
- var ExperimentsError = class extends Error {
3
- constructor(message) {
4
- super(message);
5
- this.name = "ExperimentsError";
6
- }
7
- };
8
- var ExperimentNotFoundError = class extends ExperimentsError {
9
- constructor(slug) {
10
- super(`Experiment not found: ${slug}`);
11
- this.name = "ExperimentNotFoundError";
12
- }
13
- };
14
- var ExperimentTimeoutError = class extends ExperimentsError {
15
- constructor(runId, progress, total) {
16
- super(`Experiment run timed out: ${runId} (${progress}/${total} completed)`);
17
- this.name = "ExperimentTimeoutError";
18
- this.runId = runId;
19
- this.progress = progress;
20
- this.total = total;
21
- }
22
- };
23
- var ExperimentRunFailedError = class extends ExperimentsError {
24
- constructor(runId, errorMessage) {
25
- super(`Experiment run failed: ${errorMessage}`);
26
- this.name = "ExperimentRunFailedError";
27
- this.runId = runId;
28
- this.errorMessage = errorMessage;
29
- }
30
- };
31
- var ExperimentsApiError = class extends ExperimentsError {
32
- constructor(message, statusCode) {
33
- super(message);
34
- this.name = "ExperimentsApiError";
35
- this.statusCode = statusCode;
36
- }
37
- };
38
-
39
- // src/client-sdk/services/experiments/run-status.ts
40
- var INTERRUPTED_THRESHOLD_MS = 5 * 60 * 1e3;
41
- var deriveRunStatus = (timestamps, now = Date.now()) => {
42
- if (timestamps.stoppedAt != null) return "stopped";
43
- if (timestamps.finishedAt != null) return "completed";
44
- if (timestamps.updatedAt != null && now - timestamps.updatedAt > INTERRUPTED_THRESHOLD_MS) {
45
- return "interrupted";
46
- }
47
- return "running";
48
- };
49
- var isTerminalStatus = (status) => status === "completed" || status === "stopped";
50
- var DEFAULT_POLL_INTERVAL = 2e3;
51
- var DEFAULT_POLL_TIMEOUT = 6e5;
52
- var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
53
- var pollExperimentRun = async ({
54
- runId,
55
- getStatus,
56
- pollInterval = DEFAULT_POLL_INTERVAL,
57
- timeout = DEFAULT_POLL_TIMEOUT,
58
- onProgress,
59
- now = Date.now
60
- }) => {
61
- var _a, _b, _c;
62
- const startTime = now();
63
- while (true) {
64
- if (now() - startTime > timeout) {
65
- const finalStatus = await getStatus(runId);
66
- throw new ExperimentTimeoutError(
67
- runId,
68
- finalStatus.progress,
69
- finalStatus.total
70
- );
71
- }
72
- await sleep(pollInterval);
73
- const status = await getStatus(runId);
74
- onProgress == null ? void 0 : onProgress(status.progress, status.total);
75
- if (status.status === "completed") {
76
- return { status: "completed", summary: (_a = status.summary) != null ? _a : {} };
77
- }
78
- if (status.status === "failed") {
79
- throw new ExperimentRunFailedError(runId, (_b = status.error) != null ? _b : "Unknown error");
80
- }
81
- if (status.status === "stopped") {
82
- return {
83
- status: "stopped",
84
- summary: (_c = status.summary) != null ? _c : {
85
- runId,
86
- totalCells: status.total,
87
- completedCells: status.progress,
88
- failedCells: 0,
89
- duration: now() - startTime
90
- }
91
- };
92
- }
93
- }
94
- };
95
- var rebaseUrlToEndpoint = (url, newBase) => {
96
- if (!url) return url;
97
- try {
98
- const parsedUrl = new URL(url);
99
- const parsedNewBase = new URL(newBase);
100
- return `${parsedNewBase.origin}${parsedUrl.pathname}${parsedUrl.search}${parsedUrl.hash}`;
101
- } catch (e) {
102
- return url;
103
- }
104
- };
105
- var fetchResultsWithRetry = async ({
106
- getResults,
107
- isEmpty,
108
- expectsRows,
109
- delay = DEFAULT_POLL_INTERVAL,
110
- maxAttempts = 6
111
- }) => {
112
- let lastError;
113
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
114
- try {
115
- const results = await getResults();
116
- if (expectsRows && isEmpty(results) && attempt < maxAttempts) {
117
- await sleep(delay);
118
- continue;
119
- }
120
- return results;
121
- } catch (error) {
122
- lastError = error;
123
- if (expectsRows && attempt < maxAttempts) {
124
- await sleep(delay);
125
- continue;
126
- }
127
- throw error;
128
- }
129
- }
130
- throw lastError;
131
- };
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
-
140
-
141
-
142
-
143
- exports.ExperimentNotFoundError = ExperimentNotFoundError; exports.ExperimentTimeoutError = ExperimentTimeoutError; exports.ExperimentRunFailedError = ExperimentRunFailedError; exports.ExperimentsApiError = ExperimentsApiError; exports.deriveRunStatus = deriveRunStatus; exports.isTerminalStatus = isTerminalStatus; exports.pollExperimentRun = pollExperimentRun; exports.rebaseUrlToEndpoint = rebaseUrlToEndpoint; exports.fetchResultsWithRetry = fetchResultsWithRetry;
144
- //# sourceMappingURL=chunk-YKDTIJF2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-YKDTIJF2.js","../src/client-sdk/services/experiments/platformErrors.ts","../src/client-sdk/services/experiments/run-status.ts"],"names":[],"mappings":"AAAA;ACOO,IAAM,iBAAA,EAAN,MAAA,QAA+B,MAAM;AAAA,EAC1C,WAAA,CAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,KAAA,EAAO,kBAAA;AAAA,EACd;AACF,CAAA;AAKO,IAAM,wBAAA,EAAN,MAAA,QAAsC,iBAAiB;AAAA,EAC5D,WAAA,CAAY,IAAA,EAAc;AACxB,IAAA,KAAA,CAAM,CAAA,sBAAA,EAAyB,IAAI,CAAA,CAAA;AACvB,IAAA;AACd,EAAA;AACF;AAKO;AAKuD,EAAA;AACvB,IAAA;AACvB,IAAA;AACC,IAAA;AACG,IAAA;AACH,IAAA;AACf,EAAA;AACF;AAKO;AAI4C,EAAA;AACf,IAAA;AACpB,IAAA;AACC,IAAA;AACO,IAAA;AACtB,EAAA;AACF;AAKyC;AAGU,EAAA;AAClC,IAAA;AACD,IAAA;AACM,IAAA;AACpB,EAAA;AACF;AD9BwC;AACA;AE1BS;AAa/C;AAEkC,EAAA;AACC,EAAA;AAGjC,EAAA;AAEO,IAAA;AACT,EAAA;AACO,EAAA;AACT;AAGE;AAEmC;AACD;AAoBrB;AAayB;AACtC,EAAA;AACA,EAAA;AACe,EAAA;AACL,EAAA;AACV,EAAA;AACW,EAAA;AAQ2B;AAzFxC,EAAA;AA0FwB,EAAA;AAET,EAAA;AACsB,IAAA;AACL,MAAA;AAChB,MAAA;AACR,QAAA;AACY,QAAA;AACA,QAAA;AACd,MAAA;AACF,IAAA;AAEwB,IAAA;AAEY,IAAA;AACpC,IAAA;AAEmC,IAAA;AACH,MAAA;AAChC,IAAA;AAEgC,IAAA;AACpB,MAAA;AACZ,IAAA;AAEiC,IAAA;AACxB,MAAA;AACG,QAAA;AACQ,QAAA;AACd,UAAA;AACmB,UAAA;AACI,UAAA;AACV,UAAA;AACK,UAAA;AACpB,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACF;AAUiD;AAC9B,EAAA;AACb,EAAA;AAC2B,IAAA;AACC,IAAA;AACG,IAAA;AAC3B,EAAA;AACC,IAAA;AACT,EAAA;AACF;AAa+C;AAC7C,EAAA;AACA,EAAA;AACA,EAAA;AACQ,EAAA;AACM,EAAA;AAOE;AACZ,EAAA;AAC6B,EAAA;AAC3B,IAAA;AAC+B,MAAA;AACC,MAAA;AACf,QAAA;AACjB,QAAA;AACF,MAAA;AACO,MAAA;AACO,IAAA;AACF,MAAA;AAKiB,MAAA;AACV,QAAA;AACjB,QAAA;AACF,MAAA;AACM,MAAA;AACR,IAAA;AACF,EAAA;AACM,EAAA;AACR;AFjEwC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-YKDTIJF2.js","sourcesContent":[null,"/**\n * Error classes for platform experiments API (Experiments Workbench)\n */\n\n/**\n * Base error for experiment operations\n */\nexport class ExperimentsError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ExperimentsError\";\n }\n}\n\n/**\n * Error when experiment is not found\n */\nexport class ExperimentNotFoundError extends ExperimentsError {\n constructor(slug: string) {\n super(`Experiment not found: ${slug}`);\n this.name = \"ExperimentNotFoundError\";\n }\n}\n\n/**\n * Error when experiment run times out\n */\nexport class ExperimentTimeoutError extends ExperimentsError {\n readonly runId: string;\n readonly progress: number;\n readonly total: number;\n\n constructor(runId: string, progress: number, total: number) {\n super(`Experiment run timed out: ${runId} (${progress}/${total} completed)`);\n this.name = \"ExperimentTimeoutError\";\n this.runId = runId;\n this.progress = progress;\n this.total = total;\n }\n}\n\n/**\n * Error when experiment run fails\n */\nexport class ExperimentRunFailedError extends ExperimentsError {\n readonly runId: string;\n readonly errorMessage: string;\n\n constructor(runId: string, errorMessage: string) {\n super(`Experiment run failed: ${errorMessage}`);\n this.name = \"ExperimentRunFailedError\";\n this.runId = runId;\n this.errorMessage = errorMessage;\n }\n}\n\n/**\n * Error from the experiments API\n */\nexport class ExperimentsApiError extends ExperimentsError {\n readonly statusCode: number;\n\n constructor(message: string, statusCode: number) {\n super(message);\n this.name = \"ExperimentsApiError\";\n this.statusCode = statusCode;\n }\n}\n","// Experiment runs are stored as a timestamp-driven state in ClickHouse: a run\n// is \"completed\" once finishedAt is set, \"stopped\" once stoppedAt is set, and\n// otherwise still \"running\". A run that stopped emitting updates a while ago\n// without ever finishing is reported as \"interrupted\": the SDK process likely\n// died before sending finished_at/stopped_at.\n\nimport type { ExperimentRunSummary } from \"./platformTypes\";\nimport {\n ExperimentTimeoutError,\n ExperimentRunFailedError,\n} from \"./platformErrors\";\n\nexport const INTERRUPTED_THRESHOLD_MS = 5 * 60 * 1000;\n\nexport type RunStatus = \"completed\" | \"stopped\" | \"running\" | \"interrupted\";\n\nexport interface RunTimestamps {\n createdAt?: number | null;\n updatedAt?: number | null;\n finishedAt?: number | null;\n stoppedAt?: number | null;\n}\n\nexport const deriveRunStatus = (\n timestamps: RunTimestamps,\n now: number = Date.now(),\n): RunStatus => {\n if (timestamps.stoppedAt != null) return \"stopped\";\n if (timestamps.finishedAt != null) return \"completed\";\n if (\n timestamps.updatedAt != null &&\n now - timestamps.updatedAt > INTERRUPTED_THRESHOLD_MS\n ) {\n return \"interrupted\";\n }\n return \"running\";\n};\n\nexport const isTerminalStatus = (status: RunStatus): boolean =>\n status === \"completed\" || status === \"stopped\";\n\nexport const DEFAULT_POLL_INTERVAL = 2000;\nexport const DEFAULT_POLL_TIMEOUT = 600000; // 10 minutes\n\n/**\n * Status payload returned by the polling endpoint\n * (`GET /api/evaluations/v3/runs/{runId}`).\n */\nexport interface PollRunStatus {\n status: string;\n progress: number;\n total: number;\n summary?: ExperimentRunSummary;\n error?: string;\n}\n\nexport interface PollExperimentRunResult {\n status: \"completed\" | \"stopped\";\n summary: ExperimentRunSummary;\n}\n\nconst sleep = (ms: number): Promise<void> =>\n new Promise((resolve) => setTimeout(resolve, ms));\n\n/**\n * Poll a run to completion.\n *\n * Calls `getStatus(runId)` every `pollInterval` ms until the run reports a\n * terminal status, mirroring the python SDK poll loop. Resolves on `completed`\n * or `stopped`, throws `ExperimentRunFailedError` on `failed`, and throws\n * `ExperimentTimeoutError` if `timeout` ms elapse first.\n *\n * The status fetcher is injected so both the experiment and workflow paths can\n * reuse the same loop.\n */\nexport const pollExperimentRun = async ({\n runId,\n getStatus,\n pollInterval = DEFAULT_POLL_INTERVAL,\n timeout = DEFAULT_POLL_TIMEOUT,\n onProgress,\n now = Date.now,\n}: {\n runId: string;\n getStatus: (runId: string) => Promise<PollRunStatus>;\n pollInterval?: number;\n timeout?: number;\n onProgress?: (progress: number, total: number) => void;\n now?: () => number;\n}): Promise<PollExperimentRunResult> => {\n const startTime = now();\n\n while (true) {\n if (now() - startTime > timeout) {\n const finalStatus = await getStatus(runId);\n throw new ExperimentTimeoutError(\n runId,\n finalStatus.progress,\n finalStatus.total,\n );\n }\n\n await sleep(pollInterval);\n\n const status = await getStatus(runId);\n onProgress?.(status.progress, status.total);\n\n if (status.status === \"completed\") {\n return { status: \"completed\", summary: status.summary ?? {} };\n }\n\n if (status.status === \"failed\") {\n throw new ExperimentRunFailedError(runId, status.error ?? \"Unknown error\");\n }\n\n if (status.status === \"stopped\") {\n return {\n status: \"stopped\",\n summary: status.summary ?? {\n runId,\n totalCells: status.total,\n completedCells: status.progress,\n failedCells: 0,\n duration: now() - startTime,\n },\n };\n }\n }\n};\n\n/**\n * Replace the domain of a URL with a new base, preserving path/query/fragment.\n *\n * The platform returns its own (cloud) URL for a run; rebasing it onto the\n * configured endpoint keeps a self-hosted run pointing at the local instance\n * instead of app.langwatch.ai. Returns the original string if either URL is\n * unparseable.\n */\nexport const rebaseUrlToEndpoint = (url: string, newBase: string): string => {\n if (!url) return url;\n try {\n const parsedUrl = new URL(url);\n const parsedNewBase = new URL(newBase);\n return `${parsedNewBase.origin}${parsedUrl.pathname}${parsedUrl.search}${parsedUrl.hash}`;\n } catch {\n return url;\n }\n};\n\n/**\n * Fetch a run's per-row results, retrying through the brief post-completion\n * window where the results endpoint 404s (\"not yet available\") or returns an\n * empty dataset because the ClickHouse projection has not caught up yet.\n *\n * Generic over the result shape: `getResults` performs one fetch and `isEmpty`\n * reports whether it came back without rows. When the run reported rows\n * (`expectsRows`), an empty or failed read is retried up to `maxAttempts` with a\n * fixed `delay`; otherwise the first read is returned. The same loop backs both\n * the experiment and workflow SDK paths and mirrors the python SDK.\n */\nexport const fetchResultsWithRetry = async <T>({\n getResults,\n isEmpty,\n expectsRows,\n delay = DEFAULT_POLL_INTERVAL,\n maxAttempts = 6,\n}: {\n getResults: () => Promise<T>;\n isEmpty: (results: T) => boolean;\n expectsRows: boolean;\n delay?: number;\n maxAttempts?: number;\n}): Promise<T> => {\n let lastError: unknown;\n for (let attempt = 1; attempt <= maxAttempts; attempt++) {\n try {\n const results = await getResults();\n if (expectsRows && isEmpty(results) && attempt < maxAttempts) {\n await sleep(delay);\n continue;\n }\n return results;\n } catch (error) {\n lastError = error;\n // Only the rows-expected path waits out the post-completion projection\n // lag (a 404 / \"not yet available\" right after the run finishes). With no\n // rows expected a thrown error is terminal, so surface it immediately\n // instead of delaying through every attempt.\n if (expectsRows && attempt < maxAttempts) {\n await sleep(delay);\n continue;\n }\n throw error;\n }\n }\n throw lastError;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-YKWXS2BM.js","../src/observability-sdk/exporters/langwatch-trace-exporter.ts","../src/observability-sdk/exporters/trace-filters.ts","../src/observability-sdk/exporters/langwatch-logs-exporter.ts","../src/observability-sdk/semconv/events.ts","../src/observability-sdk/logger/index.ts","../src/observability-sdk/logger/implementation.ts"],"names":["_a"],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-YKWXS2BM.js","sourcesContent":[null,"import { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\nimport { type ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport { type ExportResult } from '@opentelemetry/core';\nimport {\n DEFAULT_ENDPOINT,\n LANGWATCH_SDK_LANGUAGE,\n LANGWATCH_SDK_NAME_OBSERVABILITY,\n LANGWATCH_SDK_RUNTIME,\n LANGWATCH_SDK_VERSION,\n TRACES_PATH,\n} from \"../../internal/constants\";\nimport { buildAuthHeaders } from \"../../internal/api/auth\";\nimport {\n type TraceFilter,\n type Criteria,\n type Match,\n applyFilters,\n} from \"./trace-filters\";\n\n/**\n * Configuration options for the LangWatchTraceExporter.\n *\n * @property endpoint - Custom LangWatch endpoint URL. Falls back to LANGWATCH_ENDPOINT env var or default.\n * @property apiKey - API key for authentication. Falls back to LANGWATCH_API_KEY env var.\n * @property filters - Array of filters applied sequentially to spans before export.\n * Default: `[{ preset: \"excludeHttpRequests\" }]` to reduce framework noise.\n * Pass `null` or `[]` to disable all filtering.\n */\nexport interface LangWatchTraceExporterOptions {\n endpoint?: string;\n apiKey?: string;\n /**\n * Project identifier. Required when `apiKey` is a Personal Access Token\n * (`pat-lw-*`); ignored for legacy `sk-lw-*` keys. Falls back to\n * `LANGWATCH_PROJECT_ID`.\n */\n projectId?: string;\n filters?: TraceFilter[] | null;\n}\n\nexport type { TraceFilter, Criteria, Match };\n\n/**\n * LangWatchTraceExporter extends the OpenTelemetry OTLP HTTP trace exporter\n * to send trace data to LangWatch with proper authentication and metadata headers.\n *\n * ## Features\n * - Automatic authorization header configuration via API key\n * - SDK version and runtime identification headers\n * - Proper endpoint URL construction for LangWatch ingestion\n * - Intent-based span filtering with presets and custom criteria\n *\n * ## Filtering Behavior\n * - **Default**: HTTP request spans are excluded to reduce framework noise\n * - **Pipeline**: Filters are applied sequentially with AND semantics\n * - **Matching**: All string comparisons are case-sensitive by default\n * - **Array Syntax**: All criteria require arrays of Match objects for explicit filtering\n *\n * ## Filter Types\n * - **Presets**: Pre-configured common filters (`vercelAIOnly`, `excludeHttpRequests`)\n * - **Include**: Keep only spans matching criteria (OR within field, AND across fields)\n * - **Exclude**: Remove spans matching criteria (OR within field, AND across fields)\n *\n * @example Basic usage with default filtering\n * ```typescript\n * import { LangWatchTraceExporter } from '@langwatch/observability';\n *\n * // Default: excludes HTTP request spans\n * const exporter = new LangWatchTraceExporter();\n * ```\n *\n * @example Using presets\n * ```typescript\n * // Keep only Vercel AI SDK spans\n * const exporterAI = new LangWatchTraceExporter({\n * filters: [{ preset: 'vercelAIOnly' }],\n * });\n *\n * // Explicitly exclude HTTP requests (same as default)\n * const exporterNoHttp = new LangWatchTraceExporter({\n * filters: [{ preset: 'excludeHttpRequests' }],\n * });\n *\n * // No filtering at all (send all spans)\n * const exporterAll = new LangWatchTraceExporter({\n * filters: null, // or filters: []\n * });\n * ```\n *\n * @example Custom filtering with criteria\n * ```typescript\n * // Include only spans with specific scope\n * const exporter1 = new LangWatchTraceExporter({\n * filters: [\n * { include: { instrumentationScopeName: [{ equals: 'ai' }] } }\n * ],\n * });\n *\n * // Exclude spans by name pattern\n * const exporter2 = new LangWatchTraceExporter({\n * filters: [\n * { exclude: { name: [{ startsWith: 'internal.' }] } }\n * ],\n * });\n *\n * // Case-insensitive matching\n * const exporter3 = new LangWatchTraceExporter({\n * filters: [\n * { include: { name: [{ equals: 'chat.completion', ignoreCase: true }] } }\n * ],\n * });\n * ```\n *\n * @example Filter pipelines (AND semantics)\n * ```typescript\n * // Keep AI spans, then remove HTTP requests\n * const exporter = new LangWatchTraceExporter({\n * filters: [\n * { include: { instrumentationScopeName: [{ equals: 'ai' }] } },\n * { preset: 'excludeHttpRequests' },\n * ],\n * });\n * ```\n *\n * @example OR semantics within a field\n * ```typescript\n * // Include spans with name starting with 'chat.' OR 'llm.'\n * const exporter = new LangWatchTraceExporter({\n * filters: [\n * {\n * include: {\n * name: [\n * { startsWith: 'chat.' },\n * { startsWith: 'llm.' }\n * ]\n * }\n * }\n * ],\n * });\n * ```\n *\n * @example Using regex patterns\n * ```typescript\n * const exporter = new LangWatchTraceExporter({\n * filters: [\n * {\n * include: {\n * name: [{ matches: /^(chat|llm)\\./i }]\n * }\n * }\n * ],\n * });\n * ```\n */\nexport class LangWatchTraceExporter extends OTLPTraceExporter {\n private readonly filters: TraceFilter[];\n /**\n * Creates a new LangWatchTraceExporter instance.\n *\n * @param opts - Configuration options for the exporter\n * @param opts.apiKey - API key for LangWatch authentication.\n * Falls back to `LANGWATCH_API_KEY` environment variable, then empty string.\n * @param opts.endpoint - Custom endpoint URL for LangWatch ingestion.\n * Falls back to `LANGWATCH_ENDPOINT` environment variable, then default endpoint.\n * @param opts.filters - Array of filters applied sequentially to spans before export (AND semantics).\n * When omitted, defaults to `[{ preset: \"excludeHttpRequests\" }]`.\n * Pass `null` or `[]` to disable all filtering and send all spans.\n *\n * @example\n * ```typescript\n * // With API key and default filtering\n * const exporter = new LangWatchTraceExporter({\n * apiKey: 'your-api-key'\n * });\n *\n * // With custom endpoint and no filtering\n * const exporter = new LangWatchTraceExporter({\n * endpoint: 'https://custom.langwatch.ai',\n * filters: null\n * });\n * ```\n */\n constructor(opts?: LangWatchTraceExporterOptions) {\n const apiKey = opts?.apiKey ?? process.env.LANGWATCH_API_KEY ?? \"\";\n const projectId = opts?.projectId ?? process.env.LANGWATCH_PROJECT_ID;\n const endpoint =\n opts?.endpoint ??\n process.env.LANGWATCH_ENDPOINT ??\n DEFAULT_ENDPOINT;\n\n const url = new URL(TRACES_PATH, endpoint);\n const otelEndpoint = url.toString();\n\n super({\n headers: {\n \"x-langwatch-sdk-name\": LANGWATCH_SDK_NAME_OBSERVABILITY,\n \"x-langwatch-sdk-language\": LANGWATCH_SDK_LANGUAGE,\n \"x-langwatch-sdk-version\": LANGWATCH_SDK_VERSION,\n \"x-langwatch-sdk-runtime\": LANGWATCH_SDK_RUNTIME(),\n ...buildAuthHeaders({ apiKey, projectId }),\n },\n url: otelEndpoint.toString(),\n });\n\n // Handle filters: null or [] = no filtering, undefined = default, array = use provided\n if (opts?.filters === null || (Array.isArray(opts?.filters) && opts.filters.length === 0)) {\n this.filters = [];\n } else if (Array.isArray(opts?.filters)) {\n this.filters = opts.filters;\n } else {\n this.filters = [{ preset: \"excludeHttpRequests\" }];\n }\n }\n\n export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {\n const filtered = applyFilters(this.filters, spans);\n super.export(filtered, resultCallback);\n }\n}\n","import { type ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\n\nexport interface Criteria {\n instrumentationScopeName?: Match[];\n name?: Match[];\n}\n\nexport interface Match {\n equals?: string;\n startsWith?: string;\n matches?: RegExp;\n ignoreCase?: boolean;\n}\n\nexport type TraceFilter =\n | { preset: \"vercelAIOnly\" | \"excludeHttpRequests\" }\n | { include: Criteria }\n | { exclude: Criteria };\n\n/**\n * Applies a sequence of filters to an array of spans using AND semantics.\n * Each filter in the sequence is applied to the result of the previous filter,\n * progressively narrowing down the set of spans.\n *\n * @param filters - Array of filter rules to apply sequentially\n * @param spans - Array of spans to filter\n * @returns Filtered array of spans that match all filter criteria\n *\n * @example\n * ```typescript\n * const filters: TraceFilter[] = [\n * { include: { instrumentationScopeName: [{ equals: 'ai' }] } },\n * { preset: 'excludeHttpRequests' }\n * ];\n * const filtered = applyFilters(filters, spans);\n * // Returns only AI spans that are not HTTP requests\n * ```\n */\nexport function applyFilters(\n filters: TraceFilter[] | undefined,\n spans: ReadableSpan[]\n): ReadableSpan[] {\n if (!filters || filters.length === 0) return spans;\n return filters.reduce((current, rule) => applyFilterRule(rule, current), spans);\n}\n\n/**\n * Applies a single filter rule to an array of spans.\n * Handles three types of filters: presets, include rules, and exclude rules.\n *\n * @param rule - Single filter rule (preset, include, or exclude)\n * @param spans - Array of spans to filter\n * @returns Filtered array of spans based on the rule\n *\n * @example\n * ```typescript\n * // Using preset\n * const filtered1 = applyFilterRule({ preset: 'vercelAIOnly' }, spans);\n *\n * // Using include\n * const filtered2 = applyFilterRule(\n * { include: { name: [{ startsWith: 'llm.' }] } },\n * spans\n * );\n *\n * // Using exclude\n * const filtered3 = applyFilterRule(\n * { exclude: { instrumentationScopeName: [{ equals: 'http' }] } },\n * spans\n * );\n * ```\n */\nexport function applyFilterRule(rule: TraceFilter, spans: ReadableSpan[]): ReadableSpan[] {\n if (\"preset\" in rule && rule.preset) {\n return applyPreset(\n (rule as { preset: TraceFilter extends { preset: infer P } ? P : never }).preset as any,\n spans\n );\n }\n\n if (\"include\" in rule && rule.include) {\n const criteria = (rule as { include: Criteria }).include;\n return spans.filter((s) => matchesCriteria(s, criteria));\n }\n\n if (\"exclude\" in rule && rule.exclude) {\n const criteria = (rule as { exclude: Criteria }).exclude;\n return spans.filter((s) => !matchesCriteria(s, criteria));\n }\n\n return spans;\n}\n\n/**\n * Applies a preset filter to an array of spans.\n * Presets are predefined common filtering patterns.\n *\n * Available presets:\n * - `vercelAIOnly`: Keeps only spans from the Vercel AI SDK (instrumentationScope.name === 'ai')\n * - `excludeHttpRequests`: Removes spans that appear to be HTTP requests (span name starts with HTTP verb)\n *\n * @param preset - Name of the preset filter to apply\n * @param spans - Array of spans to filter\n * @returns Filtered array of spans based on the preset\n *\n * @example\n * ```typescript\n * // Keep only Vercel AI spans\n * const aiSpans = applyPreset('vercelAIOnly', spans);\n *\n * // Remove HTTP request spans\n * const noHttpSpans = applyPreset('excludeHttpRequests', spans);\n * ```\n */\nexport function applyPreset(\n preset: \"vercelAIOnly\" | \"excludeHttpRequests\",\n spans: ReadableSpan[]\n): ReadableSpan[] {\n if (preset === \"vercelAIOnly\") return spans.filter((s) => isVercelAiSpan(s));\n if (preset === \"excludeHttpRequests\") return spans.filter((s) => !isHttpRequestSpan(s));\n\n return spans;\n}\n\n/**\n * Checks if a span matches the given criteria.\n * All specified criteria fields must match (AND semantics within a criteria object).\n * Within each field, matchers are evaluated with OR semantics (any matcher can match).\n *\n * @param span - Span to evaluate\n * @param criteria - Criteria to match against (instrumentationScopeName and/or name)\n * @returns True if the span matches all specified criteria, false otherwise\n *\n * @example\n * ```typescript\n * const criteria: Criteria = {\n * instrumentationScopeName: [{ equals: 'ai' }],\n * name: [{ startsWith: 'llm.' }, { startsWith: 'chat.' }]\n * };\n * const matches = matchesCriteria(span, criteria);\n * // Returns true if scope is 'ai' AND name starts with 'llm.' OR 'chat.'\n * ```\n */\nexport function matchesCriteria(span: ReadableSpan, criteria: Criteria): boolean {\n if (criteria.instrumentationScopeName !== void 0) {\n const scopeName = span.instrumentationScope?.name ?? \"\";\n const ok = criteria.instrumentationScopeName.some((m) => valueMatches(scopeName, m));\n if (!ok) return false;\n }\n\n if (criteria.name !== void 0) {\n const ok = criteria.name.some((m) => valueMatches(span.name ?? \"\", m));\n if (!ok) return false;\n }\n\n return true;\n}\n\n/**\n * Evaluates if a string value matches a given match rule.\n * Supports three types of matching: exact equality, prefix matching, and regex matching.\n * All matching is case-sensitive by default unless `ignoreCase` is explicitly set to true.\n *\n * @param value - String value to evaluate\n * @param rule - Match rule specifying the matching criteria\n * @returns True if the value matches the rule, false otherwise\n *\n * @example\n * ```typescript\n * // Exact match (case-sensitive by default)\n * valueMatches('GET /api/users', { equals: 'GET /api/users' }); // true\n * valueMatches('get /api/users', { equals: 'GET /api/users' }); // false\n *\n * // Case-insensitive exact match\n * valueMatches('get /api/users', { equals: 'GET /api/users', ignoreCase: true }); // true\n *\n * // Prefix match\n * valueMatches('GET /api/users', { startsWith: 'GET' }); // true\n * valueMatches('POST /api/users', { startsWith: 'GET' }); // false\n *\n * // Regex match\n * valueMatches('GET /api/users', { matches: /^(GET|POST)\\b/ }); // true\n *\n * // Case-insensitive regex\n * valueMatches('get /api/users', { matches: /^GET\\b/, ignoreCase: true }); // true\n * ```\n */\nexport function valueMatches(value: string, rule: Match): boolean {\n const raw = value ?? \"\";\n const ignoreCase = rule.ignoreCase ?? false;\n\n if (rule.equals !== void 0) {\n return ignoreCase\n ? raw.localeCompare(rule.equals, void 0, { sensitivity: \"base\" }) === 0\n : raw === rule.equals;\n }\n\n if (rule.startsWith !== void 0) {\n return ignoreCase\n ? raw.toLowerCase().startsWith(rule.startsWith.toLowerCase())\n : raw.startsWith(rule.startsWith);\n }\n\n if (rule.matches instanceof RegExp) {\n const re =\n ignoreCase && !rule.matches.flags.includes(\"i\")\n ? new RegExp(rule.matches.source, (rule.matches.flags || \"\") + \"i\")\n : rule.matches;\n return re.test(raw);\n }\n\n return false;\n}\n\n/**\n * Checks if a span is from the Vercel AI SDK.\n * A span is considered a Vercel AI span if its instrumentation scope name is 'ai' (case-insensitive).\n *\n * @param span - Span to check\n * @returns True if the span is from the Vercel AI SDK, false otherwise\n *\n * @example\n * ```typescript\n * if (isVercelAiSpan(span)) {\n * console.log('This is a Vercel AI operation');\n * }\n * ```\n */\nexport function isVercelAiSpan(span: ReadableSpan): boolean {\n const scope = span.instrumentationScope?.name?.toLowerCase?.() ?? \"\";\n return scope === \"ai\";\n}\n\n/**\n * Checks if a span appears to be an HTTP request based on its name.\n * A span is considered an HTTP request if its name starts with a common HTTP verb\n * (GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD) followed by a word boundary.\n *\n * @param span - Span to check\n * @returns True if the span appears to be an HTTP request, false otherwise\n *\n * @example\n * ```typescript\n * // These would return true:\n * // span.name = \"GET /api/users\"\n * // span.name = \"POST /api/data\"\n * // span.name = \"DELETE /resource/123\"\n *\n * if (isHttpRequestSpan(span)) {\n * console.log('This is an HTTP request span');\n * }\n * ```\n */\nexport function isHttpRequestSpan(span: ReadableSpan): boolean {\n const name = span.name ?? \"\";\n const verbMatch = /^(GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD)\\b/i.test(name);\n return verbMatch;\n}\n","import { OTLPLogExporter } from \"@opentelemetry/exporter-logs-otlp-http\";\nimport {\n DEFAULT_ENDPOINT,\n LANGWATCH_SDK_LANGUAGE,\n LANGWATCH_SDK_NAME_OBSERVABILITY,\n LANGWATCH_SDK_RUNTIME,\n LANGWATCH_SDK_VERSION,\n LOGS_PATH,\n} from \"../../internal/constants\";\n\nexport interface LangWatchLogsExporterOptions {\n endpoint?: string;\n apiKey?: string;\n}\n\n/**\n * LangWatchLogsExporter extends the OpenTelemetry OTLP HTTP logs exporter\n * to send logs to LangWatch with proper authentication and metadata headers.\n *\n * This exporter automatically configures:\n * - Authorization headers using the provided API key or environment variables/fallback\n * - SDK version and language identification headers\n * - Proper endpoint configuration for LangWatch ingestion using provided URL or environment variables/fallback\n *\n * @example\n * ```typescript\n * import { LangWatchLogsExporter } from '@langwatch/observability';\n *\n * // Using environment variables/fallback configuration\n * const exporter = new LangWatchLogsExporter();\n *\n * // Using custom options\n * const exporter = new LangWatchLogsExporter({\n * apiKey: 'your-api-key',\n * endpoint: 'https://custom.langwatch.com'\n * });\n * ```\n */\nexport class LangWatchLogsExporter extends OTLPLogExporter {\n /**\n * Creates a new LangWatchLogsExporter instance.\n *\n * @param opts - Optional configuration options for the exporter.\n * @param opts.apiKey - Optional API key for LangWatch authentication. If not provided,\n * will use environment variables or fallback configuration.\n * @param opts.endpoint - Optional custom endpoint URL for LangWatch ingestion.\n * If not provided, will use environment variables or fallback configuration.\n */\n constructor(opts?: LangWatchLogsExporterOptions) {\n const apiKey = opts?.apiKey ?? process.env.LANGWATCH_API_KEY ?? \"\";\n const endpoint =\n opts?.endpoint ??\n process.env.LANGWATCH_ENDPOINT ??\n DEFAULT_ENDPOINT;\n\n const url = new URL(LOGS_PATH, endpoint);\n const otelEndpoint = url.toString();\n\n super({\n headers: {\n \"x-langwatch-sdk-name\": LANGWATCH_SDK_NAME_OBSERVABILITY,\n \"x-langwatch-sdk-language\": LANGWATCH_SDK_LANGUAGE,\n \"x-langwatch-sdk-version\": LANGWATCH_SDK_VERSION,\n \"x-langwatch-sdk-runtime\": LANGWATCH_SDK_RUNTIME(),\n ...(apiKey ? { authorization: `Bearer ${apiKey}` } : {}),\n },\n url: otelEndpoint.toString(),\n });\n }\n}\n","/*\n This file contains the values for the OpenTelemetry semantic conventions for GenAI log\n record event names.\n\n 👉 https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-events/\n*/\n\n/**\n * GenAI system message event name\n * Used for log records representing system messages in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_SYSTEM_MESSAGE = \"gen.ai.system_message\";\n\n/**\n * GenAI user message event name\n * Used for log records representing user messages in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_USER_MESSAGE = \"gen.ai.user_message\";\n\n/**\n * GenAI assistant message event name\n * Used for log records representing assistant responses in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_ASSISTANT_MESSAGE = \"gen.ai.assistant_message\";\n\n/**\n * GenAI tool message event name\n * Used for log records representing tool calls or responses in AI conversations\n */\nexport const LOG_EVNT_GEN_AI_TOOL_MESSAGE = \"gen.ai.tool_message\";\n\n/**\n * GenAI choice event name\n * Used for log records representing choices made by AI models\n */\nexport const LOG_EVNT_GEN_AI_CHOICE = \"gen.ai.choice\";\n\n/**\n * LangWatch LangChain callback event name\n * Used for log records representing LangChain callback events\n */\nexport const EVNT_LANGWATCH_LANGCHAIN_CALLBACK = \"langwatch.langchain.callback\";\n","import {\n type Logger,\n type LoggerProvider,\n NoopLoggerProvider,\n} from \"@opentelemetry/api-logs\";\nimport {\n type LangWatchLogger,\n} from \"./types\";\nimport { LangWatchLoggerInternal } from \"./implementation\";\n\n/**\n * The LangWatch-specific global logger provider. It may not be the same as the current\n * OpenTelemetry global logger provider, but it's the last one the `setupObservability`\n * knows about.\n * @internal\n */\nlet currentLoggerProvider: LoggerProvider = new NoopLoggerProvider();\n\n/**\n * @module observability/logger\n * @description\n * Provides LangWatch logger integration with OpenTelemetry, including logger provider\n * management and logger creation utilities.\n *\n * @remarks\n * This module allows you to set a global logger provider, retrieve LangWatch loggers,\n * and wrap OpenTelemetry loggers with LangWatch-specific functionality.\n *\n * @see {@link setLangWatchLoggerProvider}\n * @see {@link getLangWatchLogger}\n * @see {@link getLangWatchLoggerFromProvider}\n * @see {@link createLangWatchLogger}\n */\nexport function setLangWatchLoggerProvider(\n loggerProvider: LoggerProvider,\n): void {\n currentLoggerProvider = loggerProvider;\n}\n\n/**\n * Retrieves a LangWatch logger with the specified name and optional version.\n *\n * @param name - The name of the logger (typically your service or module name).\n * @param version - (Optional) The version of the logger.\n * @returns A {@link LangWatchLogger} instance.\n *\n * @remarks\n * Uses the logger provider set during observability setup. If no provider is set, returns\n * a NoOp logger.\n *\n * @example\n * ```ts\n * const logger = getLangWatchLogger(\"my-service\");\n * logger.info(\"Service started\");\n * ```\n *\n * @see {@link setLangWatchLoggerProvider}\n */\nexport function getLangWatchLogger(\n name: string,\n version?: string,\n): LangWatchLogger {\n return getLangWatchLoggerFromProvider(currentLoggerProvider, name, version);\n}\n\n/**\n * Retrieves a LangWatch logger from a specific OpenTelemetry logger provider.\n *\n * @param loggerProvider - The OpenTelemetry logger provider to use.\n * @param name - The name of the logger.\n * @param version - (Optional) The version of the logger.\n * @returns A {@link LangWatchLogger} instance.\n *\n * @remarks\n * Use this function if you want to use a custom logger provider instead of the global one.\n *\n * @example\n * ```ts\n * const customProvider = new LoggerProvider();\n * const logger = getLangWatchLoggerFromProvider(customProvider, \"custom-service\");\n * ```\n */\nexport function getLangWatchLoggerFromProvider(\n loggerProvider: LoggerProvider,\n name: string,\n version?: string,\n): LangWatchLogger {\n return createLangWatchLogger(loggerProvider.getLogger(name, version));\n}\n\n/**\n * Wraps an OpenTelemetry logger as a LangWatch logger.\n *\n * @param logger - The OpenTelemetry logger to wrap.\n * @returns A {@link LangWatchLogger} instance.\n *\n * @example\n * ```ts\n * import { Logger } from \"@opentelemetry/api-logs\";\n * const otelLogger = new Logger();\n * const lwLogger = createLangWatchLogger(otelLogger);\n * lwLogger.info(\"Wrapped logger\");\n * ```\n */\nexport function createLangWatchLogger(logger: Logger): LangWatchLogger {\n return new LangWatchLoggerInternal(logger);\n}\n\n// Export types and implementation\nexport * from \"./types\";\nexport * from \"./implementation\";\n","import {\n type AnyValue,\n type Logger,\n} from \"@opentelemetry/api-logs\";\nimport {\n type EmitOptions,\n type LangWatchLogger,\n type LangWatchLogRecord,\n type LangWatchSpanGenAIAssistantMessageEventBody,\n type LangWatchSpanGenAIChoiceEventBody,\n type LangWatchSpanGenAISystemMessageEventBody,\n type LangWatchSpanGenAIToolMessageEventBody,\n type LangWatchSpanGenAIUserMessageEventBody,\n} from \"./types\";\nimport { shouldCaptureOutput } from \"../config\";\nimport * as intSemconv from \"../semconv\";\nimport { type SemConvLogRecordAttributes } from \"../semconv\";\nimport { context } from \"@opentelemetry/api\";\n\n/**\n * Internal implementation of {@link LangWatchLogger}.\n *\n * @remarks\n * This class wraps an OpenTelemetry logger and adds LangWatch-specific functionality for\n * structured logging and event emission.\n * Not intended for direct use; use {@link getLangWatchLogger} or\n * {@link createLangWatchLogger} instead.\n */\nexport class LangWatchLoggerInternal implements LangWatchLogger {\n constructor(private logger: Logger) {}\n\n emit(logRecord: LangWatchLogRecord, options?: EmitOptions): void {\n // Handle output capture configuration\n if (!shouldCaptureOutput()) {\n logRecord.body = void 0;\n }\n\n // Set context if not provided and not explicitly excluded\n if (!logRecord.context && !options?.excludeContext) {\n logRecord.context = context.active();\n }\n\n // Emit the log record through the underlying OpenTelemetry logger\n this.logger.emit(logRecord);\n }\n\n emitGenAISystemMessageEvent(\n body: LangWatchSpanGenAISystemMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ): void {\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_SYSTEM_MESSAGE,\n { ...body, role: body.role ?? \"system\" } satisfies LangWatchSpanGenAISystemMessageEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIUserMessageEvent(\n body: LangWatchSpanGenAIUserMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_USER_MESSAGE,\n { ...body, role: body.role ?? \"user\" } satisfies LangWatchSpanGenAIUserMessageEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIAssistantMessageEvent(\n body: LangWatchSpanGenAIAssistantMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_ASSISTANT_MESSAGE,\n { ...body, role: body.role ?? \"assistant\" } satisfies LangWatchSpanGenAIAssistantMessageEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIToolMessageEvent(\n body: LangWatchSpanGenAIToolMessageEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n if (body.role === void 0) {\n body.role = \"tool\";\n }\n\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_TOOL_MESSAGE,\n { ...body },\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n emitGenAIChoiceEvent(\n body: LangWatchSpanGenAIChoiceEventBody,\n system?: intSemconv.VAL_GEN_AI_SYSTEMS | (string & {}),\n attributes?: SemConvLogRecordAttributes,\n ) {\n if (body.message && body.message.role === void 0) {\n body.message.role = \"assistant\";\n }\n\n this.emitGenAIEvent(\n intSemconv.LOG_EVNT_GEN_AI_CHOICE,\n {\n ...body,\n message: { ...body.message, role: body.message?.role ?? \"assistant\" },\n } satisfies LangWatchSpanGenAIChoiceEventBody,\n {\n ...attributes,\n \"gen_ai.system\": system,\n },\n );\n }\n\n private emitGenAIEvent(\n eventName: string,\n body: AnyValue,\n attributes?: SemConvLogRecordAttributes,\n ): void {\n this.emit({\n eventName,\n context: context.active(),\n attributes: { ...attributes },\n body: shouldCaptureOutput() ? body : void 0,\n observedTimestamp: new Date().getTime(),\n });\n }\n}\n"]}
@@ -1,34 +0,0 @@
1
- import {
2
- resolveControlPlaneUrl
3
- } from "./chunk-535JT5M3.mjs";
4
-
5
- // src/cli/utils/apiKey.ts
6
- import chalk from "chalk";
7
- import { config } from "dotenv";
8
-
9
- // src/cli/utils/endpoint.ts
10
- function getEndpoint() {
11
- return resolveControlPlaneUrl();
12
- }
13
-
14
- // src/cli/utils/apiKey.ts
15
- var checkApiKey = () => {
16
- config({ quiet: true });
17
- const apiKey = process.env.LANGWATCH_API_KEY;
18
- if (!apiKey || apiKey.trim() === "") {
19
- const authUrl = `${getEndpoint()}/authorize`;
20
- console.error(chalk.red("Error: LANGWATCH_API_KEY not found."));
21
- console.error(chalk.gray("Get your API key from:"));
22
- console.error(chalk.cyan(` ${authUrl}`));
23
- console.error(chalk.gray("Then either run:"));
24
- console.error(chalk.cyan(" langwatch login --api-key <your-key>"));
25
- console.error(chalk.gray("Or add it to your .env file:"));
26
- console.error(chalk.cyan(" echo 'LANGWATCH_API_KEY=<your-key>' >> .env"));
27
- process.exit(1);
28
- }
29
- };
30
-
31
- export {
32
- checkApiKey
33
- };
34
- //# sourceMappingURL=chunk-YOSDU6PV.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/utils/apiKey.ts","../src/cli/utils/endpoint.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport { config } from \"dotenv\";\nimport { getEndpoint } from \"./endpoint\";\n\nexport const checkApiKey = (): void => {\n // Load environment variables from .env file\n config({ quiet: true });\n\n const apiKey = process.env.LANGWATCH_API_KEY;\n\n if (!apiKey || apiKey.trim() === \"\") {\n const authUrl = `${getEndpoint()}/authorize`;\n console.error(chalk.red(\"Error: LANGWATCH_API_KEY not found.\"));\n console.error(chalk.gray(\"Get your API key from:\"));\n console.error(chalk.cyan(` ${authUrl}`));\n console.error(chalk.gray(\"Then either run:\"));\n console.error(chalk.cyan(\" langwatch login --api-key <your-key>\"));\n console.error(chalk.gray(\"Or add it to your .env file:\"));\n console.error(chalk.cyan(\" echo 'LANGWATCH_API_KEY=<your-key>' >> .env\"));\n process.exit(1);\n }\n};","import { resolveControlPlaneUrl } from \"@/cli/utils/governance/resolveEndpoint\";\n\n/**\n * Returns the LangWatch endpoint with any trailing slashes stripped, so callers\n * can safely concatenate paths like `${endpoint}/authorize` without producing\n * `https://app.langwatch.ai//authorize`.\n *\n * Delegates to the single 4-source resolver (flag > env > persisted config >\n * default). This is a thin wrapper preserved for callers that don't need the\n * `--flag` axis. New callers should use `resolveControlPlaneEndpoint()`\n * directly so the source attribution is available.\n *\n * Spec: specs/ai-governance/cli-onboarding/login-unified.feature\n */\nexport function getEndpoint(): string {\n return resolveControlPlaneUrl();\n}\n"],"mappings":";;;;;AAAA,OAAO,WAAW;AAClB,SAAS,cAAc;;;ACahB,SAAS,cAAsB;AACpC,SAAO,uBAAuB;AAChC;;;ADZO,IAAM,cAAc,MAAY;AAErC,SAAO,EAAE,OAAO,KAAK,CAAC;AAEtB,QAAM,SAAS,QAAQ,IAAI;AAE3B,MAAI,CAAC,UAAU,OAAO,KAAK,MAAM,IAAI;AACnC,UAAM,UAAU,GAAG,YAAY,CAAC;AAChC,YAAQ,MAAM,MAAM,IAAI,qCAAqC,CAAC;AAC9D,YAAQ,MAAM,MAAM,KAAK,wBAAwB,CAAC;AAClD,YAAQ,MAAM,MAAM,KAAK,KAAK,OAAO,EAAE,CAAC;AACxC,YAAQ,MAAM,MAAM,KAAK,kBAAkB,CAAC;AAC5C,YAAQ,MAAM,MAAM,KAAK,wCAAwC,CAAC;AAClE,YAAQ,MAAM,MAAM,KAAK,8BAA8B,CAAC;AACxD,YAAQ,MAAM,MAAM,KAAK,+CAA+C,CAAC;AACzE,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;","names":[]}