langwatch 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{add-2I554R6L.mjs → add-7QFHK67E.mjs} +10 -7
- package/dist/{add-2I554R6L.mjs.map → add-7QFHK67E.mjs.map} +1 -1
- package/dist/{add-FJ2SMVQE.js → add-EJSXUSD6.js} +13 -10
- package/dist/add-EJSXUSD6.js.map +1 -0
- package/dist/assign-5UEB6AJU.js +50 -0
- package/dist/assign-5UEB6AJU.js.map +1 -0
- package/dist/assign-JCCQ5D7I.mjs +50 -0
- package/dist/assign-JCCQ5D7I.mjs.map +1 -0
- package/dist/chunk-2BJPLPLU.js +33 -0
- package/dist/chunk-2BJPLPLU.js.map +1 -0
- package/dist/chunk-2OHGLTXZ.mjs +51 -0
- package/dist/chunk-2OHGLTXZ.mjs.map +1 -0
- package/dist/chunk-2VVANTLB.js +68 -0
- package/dist/chunk-2VVANTLB.js.map +1 -0
- package/dist/{chunk-L5Z7F7MG.mjs → chunk-43STSE3B.mjs} +2 -2
- package/dist/chunk-47F7UDHN.js +76 -0
- package/dist/chunk-47F7UDHN.js.map +1 -0
- package/dist/chunk-5PMWRY5J.js +80 -0
- package/dist/chunk-5PMWRY5J.js.map +1 -0
- package/dist/chunk-7FD7BEJP.mjs +63 -0
- package/dist/chunk-7FD7BEJP.mjs.map +1 -0
- package/dist/{chunk-PIF2RJWZ.js → chunk-AK4YCKWK.js} +107 -108
- package/dist/chunk-AK4YCKWK.js.map +1 -0
- package/dist/chunk-AMPLL3EP.js +70 -0
- package/dist/chunk-AMPLL3EP.js.map +1 -0
- package/dist/chunk-CGFG5FCC.js +674 -0
- package/dist/chunk-CGFG5FCC.js.map +1 -0
- package/dist/chunk-CLYXJJ6C.js +66 -0
- package/dist/chunk-CLYXJJ6C.js.map +1 -0
- package/dist/{chunk-WSESRS6L.mjs → chunk-COKOLKOR.mjs} +8 -6
- package/dist/{chunk-WSESRS6L.mjs.map → chunk-COKOLKOR.mjs.map} +1 -1
- package/dist/chunk-COMOCQA6.mjs +13 -0
- package/dist/chunk-COMOCQA6.mjs.map +1 -0
- package/dist/chunk-CYRJSLKD.js +68 -0
- package/dist/chunk-CYRJSLKD.js.map +1 -0
- package/dist/{chunk-BJUXJHMQ.js → chunk-D2FHOR76.js} +2 -2
- package/dist/{chunk-BJUXJHMQ.js.map → chunk-D2FHOR76.js.map} +1 -1
- package/dist/{chunk-5LYWRKDF.js → chunk-DB6OJGP4.js} +2 -60
- package/dist/chunk-DB6OJGP4.js.map +1 -0
- package/dist/chunk-DTEKJ3UD.mjs +66 -0
- package/dist/chunk-DTEKJ3UD.mjs.map +1 -0
- package/dist/{chunk-NW32UPEI.js → chunk-DUG35J5N.js} +17 -17
- package/dist/{chunk-NW32UPEI.js.map → chunk-DUG35J5N.js.map} +1 -1
- package/dist/chunk-DWHR6QJK.mjs +46 -0
- package/dist/chunk-DWHR6QJK.mjs.map +1 -0
- package/dist/{chunk-A7CF6ZGH.mjs → chunk-ESGWN42J.mjs} +2 -2
- package/dist/{chunk-FMYG6IOZ.mjs → chunk-FARZEN6T.mjs} +2 -2
- package/dist/chunk-FG3JQBJB.mjs +68 -0
- package/dist/chunk-FG3JQBJB.mjs.map +1 -0
- package/dist/chunk-FKIH4XCX.js +63 -0
- package/dist/chunk-FKIH4XCX.js.map +1 -0
- package/dist/chunk-GLCAOVJA.js +100 -0
- package/dist/chunk-GLCAOVJA.js.map +1 -0
- package/dist/{chunk-VCC7F6B7.js → chunk-H6F5OGSL.js} +11 -11
- package/dist/{chunk-VCC7F6B7.js.map → chunk-H6F5OGSL.js.map} +1 -1
- package/dist/chunk-HHRXMHVH.js +54 -0
- package/dist/chunk-HHRXMHVH.js.map +1 -0
- package/dist/{chunk-ZLCERT3X.js → chunk-HPQFHP6K.js} +12 -10
- package/dist/chunk-HPQFHP6K.js.map +1 -0
- package/dist/chunk-I2LDJPTG.mjs +100 -0
- package/dist/chunk-I2LDJPTG.mjs.map +1 -0
- package/dist/chunk-ILLEMTW3.mjs +674 -0
- package/dist/chunk-ILLEMTW3.mjs.map +1 -0
- package/dist/{chunk-OLI6GF46.js → chunk-JWF5KHWM.js} +16 -14
- package/dist/chunk-JWF5KHWM.js.map +1 -0
- package/dist/{chunk-CWXQ53NE.mjs → chunk-JYR4TXSB.mjs} +10 -8
- package/dist/chunk-JYR4TXSB.mjs.map +1 -0
- package/dist/chunk-KH64V3CL.mjs +54 -0
- package/dist/chunk-KH64V3CL.mjs.map +1 -0
- package/dist/chunk-KJSFJ5Z3.js +51 -0
- package/dist/chunk-KJSFJ5Z3.js.map +1 -0
- package/dist/{chunk-WASZSPD7.mjs → chunk-L3IOXWDG.mjs} +100 -101
- package/dist/chunk-L3IOXWDG.mjs.map +1 -0
- package/dist/{chunk-SSONRNFB.mjs → chunk-LN33ZL4Z.mjs} +2 -2
- package/dist/{chunk-SSONRNFB.mjs.map → chunk-LN33ZL4Z.mjs.map} +1 -1
- package/dist/{chunk-5M66X6SZ.mjs → chunk-LULJYN3P.mjs} +3 -3
- package/dist/chunk-M3WJZUOE.js +13 -0
- package/dist/chunk-M3WJZUOE.js.map +1 -0
- package/dist/{chunk-JVIQJFUE.mjs → chunk-M4IBRWUC.mjs} +2 -60
- package/dist/chunk-M4IBRWUC.mjs.map +1 -0
- package/dist/chunk-NIW2SFZZ.mjs +85 -0
- package/dist/chunk-NIW2SFZZ.mjs.map +1 -0
- package/dist/chunk-NMACMKQN.mjs +68 -0
- package/dist/chunk-NMACMKQN.mjs.map +1 -0
- package/dist/chunk-OAAMDWSK.js +65 -0
- package/dist/chunk-OAAMDWSK.js.map +1 -0
- package/dist/chunk-PO6XRHYW.mjs +80 -0
- package/dist/chunk-PO6XRHYW.mjs.map +1 -0
- package/dist/chunk-QH3WUSKF.mjs +33 -0
- package/dist/chunk-QH3WUSKF.mjs.map +1 -0
- package/dist/chunk-RKJDDUGQ.mjs +65 -0
- package/dist/chunk-RKJDDUGQ.mjs.map +1 -0
- package/dist/chunk-TCO73AV5.mjs +53 -0
- package/dist/chunk-TCO73AV5.mjs.map +1 -0
- package/dist/chunk-TQYUM3WH.mjs +70 -0
- package/dist/chunk-TQYUM3WH.mjs.map +1 -0
- package/dist/chunk-TV6ZXLE5.mjs +76 -0
- package/dist/chunk-TV6ZXLE5.mjs.map +1 -0
- package/dist/chunk-VMDYRBQ7.js +85 -0
- package/dist/chunk-VMDYRBQ7.js.map +1 -0
- package/dist/chunk-WE2PHCFS.js +53 -0
- package/dist/chunk-WE2PHCFS.js.map +1 -0
- package/dist/chunk-WLMXMXHE.js +54 -0
- package/dist/chunk-WLMXMXHE.js.map +1 -0
- package/dist/chunk-X7QBE6AA.js +46 -0
- package/dist/chunk-X7QBE6AA.js.map +1 -0
- package/dist/chunk-YTR56IZO.mjs +54 -0
- package/dist/chunk-YTR56IZO.mjs.map +1 -0
- package/dist/{chunk-QLBNSGWC.js → chunk-Z6MQQXMS.js} +4 -4
- package/dist/{chunk-QLBNSGWC.js.map → chunk-Z6MQQXMS.js.map} +1 -1
- package/dist/{chunk-QNT5P6VV.js → chunk-ZZL6VZZU.js} +2 -2
- package/dist/{chunk-QNT5P6VV.js.map → chunk-ZZL6VZZU.js.map} +1 -1
- package/dist/cli/index.js +467 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +467 -20
- package/dist/cli/index.mjs.map +1 -1
- package/dist/create-45FMHT6B.mjs +78 -0
- package/dist/create-45FMHT6B.mjs.map +1 -0
- package/dist/create-4OA73B7I.mjs +44 -0
- package/dist/create-4OA73B7I.mjs.map +1 -0
- package/dist/create-4U5BPFCT.mjs +51 -0
- package/dist/create-4U5BPFCT.mjs.map +1 -0
- package/dist/create-ARJEJDYU.mjs +18 -0
- package/dist/create-CQ7W2OAA.js +78 -0
- package/dist/create-CQ7W2OAA.js.map +1 -0
- package/dist/create-FI6HBFTB.mjs +63 -0
- package/dist/create-FI6HBFTB.mjs.map +1 -0
- package/dist/create-FYLUSZTP.js +38 -0
- package/dist/create-FYLUSZTP.js.map +1 -0
- package/dist/create-GGYYU5KM.mjs +51 -0
- package/dist/create-GGYYU5KM.mjs.map +1 -0
- package/dist/create-K5LFAS4E.mjs +61 -0
- package/dist/create-K5LFAS4E.mjs.map +1 -0
- package/dist/create-KAPF2AOL.js +44 -0
- package/dist/create-KAPF2AOL.js.map +1 -0
- package/dist/create-LWG7ZHEW.mjs +71 -0
- package/dist/create-LWG7ZHEW.mjs.map +1 -0
- package/dist/create-MXYMAFMF.js +71 -0
- package/dist/create-MXYMAFMF.js.map +1 -0
- package/dist/create-NFYHBFF5.mjs +50 -0
- package/dist/create-NFYHBFF5.mjs.map +1 -0
- package/dist/create-OSAXTSUC.js +51 -0
- package/dist/create-OSAXTSUC.js.map +1 -0
- package/dist/create-RPHO5TZX.js +51 -0
- package/dist/create-RPHO5TZX.js.map +1 -0
- package/dist/create-RRI5ZTMI.mjs +51 -0
- package/dist/create-RRI5ZTMI.mjs.map +1 -0
- package/dist/create-UKLLNRXV.js +61 -0
- package/dist/create-UKLLNRXV.js.map +1 -0
- package/dist/create-UZ5NDYPV.js +88 -0
- package/dist/create-UZ5NDYPV.js.map +1 -0
- package/dist/create-WV2NQDV5.js +63 -0
- package/dist/create-WV2NQDV5.js.map +1 -0
- package/dist/create-XGD3GULQ.js +50 -0
- package/dist/create-XGD3GULQ.js.map +1 -0
- package/dist/create-XZXVGMKU.js +51 -0
- package/dist/create-XZXVGMKU.js.map +1 -0
- package/dist/create-Z2XFL2HX.js +18 -0
- package/dist/create-Z2XFL2HX.js.map +1 -0
- package/dist/create-Z7DUMMQ4.mjs +38 -0
- package/dist/create-Z7DUMMQ4.mjs.map +1 -0
- package/dist/create-ZU4L3XOF.mjs +88 -0
- package/dist/create-ZU4L3XOF.mjs.map +1 -0
- package/dist/delete-22LDMLNG.mjs +61 -0
- package/dist/delete-22LDMLNG.mjs.map +1 -0
- package/dist/delete-2S67GS6A.mjs +40 -0
- package/dist/delete-2S67GS6A.mjs.map +1 -0
- package/dist/delete-3WCCA5O2.mjs +44 -0
- package/dist/delete-3WCCA5O2.mjs.map +1 -0
- package/dist/delete-4QNGDUH6.js +44 -0
- package/dist/delete-4QNGDUH6.js.map +1 -0
- package/dist/delete-555RUBQA.js +55 -0
- package/dist/delete-555RUBQA.js.map +1 -0
- package/dist/delete-5NINT2KV.mjs +42 -0
- package/dist/delete-5NINT2KV.mjs.map +1 -0
- package/dist/delete-5VDH4Q3Z.js +44 -0
- package/dist/delete-5VDH4Q3Z.js.map +1 -0
- package/dist/delete-6JPJPG4B.js +38 -0
- package/dist/delete-6JPJPG4B.js.map +1 -0
- package/dist/delete-6ZD3ARMB.js +61 -0
- package/dist/delete-6ZD3ARMB.js.map +1 -0
- package/dist/delete-AOSVEVNL.mjs +44 -0
- package/dist/delete-AOSVEVNL.mjs.map +1 -0
- package/dist/delete-BLTSYYZQ.js +40 -0
- package/dist/delete-BLTSYYZQ.js.map +1 -0
- package/dist/delete-CTE3RNKB.mjs +42 -0
- package/dist/delete-CTE3RNKB.mjs.map +1 -0
- package/dist/delete-HEF4DLSV.mjs +38 -0
- package/dist/delete-HEF4DLSV.mjs.map +1 -0
- package/dist/delete-I36NLS2V.mjs +65 -0
- package/dist/delete-I36NLS2V.mjs.map +1 -0
- package/dist/delete-J2P2Y2BW.mjs +63 -0
- package/dist/delete-J2P2Y2BW.mjs.map +1 -0
- package/dist/delete-KIXZ73DF.mjs +38 -0
- package/dist/delete-KIXZ73DF.mjs.map +1 -0
- package/dist/delete-L3SU34X6.mjs +44 -0
- package/dist/delete-L3SU34X6.mjs.map +1 -0
- package/dist/delete-N6OZW65U.js +44 -0
- package/dist/delete-N6OZW65U.js.map +1 -0
- package/dist/delete-PPEXA2V4.js +42 -0
- package/dist/delete-PPEXA2V4.js.map +1 -0
- package/dist/delete-PXGB35PF.js +65 -0
- package/dist/delete-PXGB35PF.js.map +1 -0
- package/dist/delete-QVE52G3Q.mjs +42 -0
- package/dist/delete-QVE52G3Q.mjs.map +1 -0
- package/dist/delete-R5TSAZOU.js +42 -0
- package/dist/delete-R5TSAZOU.js.map +1 -0
- package/dist/delete-RIHVCQ6G.mjs +55 -0
- package/dist/delete-RIHVCQ6G.mjs.map +1 -0
- package/dist/delete-UWPOVLSO.js +38 -0
- package/dist/delete-UWPOVLSO.js.map +1 -0
- package/dist/delete-XKF7KO4Y.js +63 -0
- package/dist/delete-XKF7KO4Y.js.map +1 -0
- package/dist/delete-ZY2UCN3W.js +42 -0
- package/dist/delete-ZY2UCN3W.js.map +1 -0
- package/dist/download-2Q5T4WW2.js +96 -0
- package/dist/download-2Q5T4WW2.js.map +1 -0
- package/dist/download-7RBJ3GZM.mjs +96 -0
- package/dist/download-7RBJ3GZM.mjs.map +1 -0
- package/dist/duplicate-7N6B5PJD.mjs +48 -0
- package/dist/duplicate-7N6B5PJD.mjs.map +1 -0
- package/dist/duplicate-HZGUFROD.js +48 -0
- package/dist/duplicate-HZGUFROD.js.map +1 -0
- package/dist/export-PP5LG6Q7.js +91 -0
- package/dist/export-PP5LG6Q7.js.map +1 -0
- package/dist/export-TGKA6WA4.mjs +91 -0
- package/dist/export-TGKA6WA4.mjs.map +1 -0
- package/dist/get-2AXSP6AP.js +62 -0
- package/dist/get-2AXSP6AP.js.map +1 -0
- package/dist/get-6UQYEENU.mjs +55 -0
- package/dist/get-6UQYEENU.mjs.map +1 -0
- package/dist/get-73K7EOMU.mjs +53 -0
- package/dist/get-73K7EOMU.mjs.map +1 -0
- package/dist/get-7JYKMJXV.mjs +85 -0
- package/dist/get-7JYKMJXV.mjs.map +1 -0
- package/dist/get-7V7OBWY5.js +86 -0
- package/dist/get-7V7OBWY5.js.map +1 -0
- package/dist/get-CBNUMPUN.mjs +64 -0
- package/dist/get-CBNUMPUN.mjs.map +1 -0
- package/dist/get-E2RIDN65.mjs +70 -0
- package/dist/get-E2RIDN65.mjs.map +1 -0
- package/dist/get-EN3CQXA7.js +51 -0
- package/dist/get-EN3CQXA7.js.map +1 -0
- package/dist/get-GHUHFWC3.js +58 -0
- package/dist/get-GHUHFWC3.js.map +1 -0
- package/dist/get-GQTPK2MW.mjs +51 -0
- package/dist/get-GQTPK2MW.mjs.map +1 -0
- package/dist/get-I2CQCKFW.mjs +62 -0
- package/dist/get-I2CQCKFW.mjs.map +1 -0
- package/dist/get-IDYGZX5O.mjs +51 -0
- package/dist/get-IDYGZX5O.mjs.map +1 -0
- package/dist/get-JAWJ5RIB.mjs +66 -0
- package/dist/get-JAWJ5RIB.mjs.map +1 -0
- package/dist/get-JYN765FP.js +53 -0
- package/dist/get-JYN765FP.js.map +1 -0
- package/dist/get-MHGIJVZ5.js +51 -0
- package/dist/get-MHGIJVZ5.js.map +1 -0
- package/dist/get-NIA7XUS2.mjs +56 -0
- package/dist/get-NIA7XUS2.mjs.map +1 -0
- package/dist/get-PM5HD5BJ.js +64 -0
- package/dist/get-PM5HD5BJ.js.map +1 -0
- package/dist/get-PR65PTQ5.mjs +86 -0
- package/dist/get-PR65PTQ5.mjs.map +1 -0
- package/dist/get-PYWLY7QQ.mjs +71 -0
- package/dist/get-PYWLY7QQ.mjs.map +1 -0
- package/dist/get-QMCMYTDV.mjs +58 -0
- package/dist/get-QMCMYTDV.mjs.map +1 -0
- package/dist/get-QNYINIDO.mjs +95 -0
- package/dist/get-QNYINIDO.mjs.map +1 -0
- package/dist/get-S7MFACWM.js +70 -0
- package/dist/get-S7MFACWM.js.map +1 -0
- package/dist/get-SBMD2X2P.js +66 -0
- package/dist/get-SBMD2X2P.js.map +1 -0
- package/dist/get-T754IOEI.js +85 -0
- package/dist/get-T754IOEI.js.map +1 -0
- package/dist/get-TOXTYIN5.js +71 -0
- package/dist/get-TOXTYIN5.js.map +1 -0
- package/dist/get-UCHL4WHT.js +95 -0
- package/dist/get-UCHL4WHT.js.map +1 -0
- package/dist/get-Y22XVMEO.js +55 -0
- package/dist/get-Y22XVMEO.js.map +1 -0
- package/dist/get-ZEUJA3KA.js +56 -0
- package/dist/get-ZEUJA3KA.js.map +1 -0
- package/dist/{implementation-8fGNr_Mq.d.ts → implementation-7POf4yX4.d.ts} +1 -1
- package/dist/{implementation-DPQ9ez-J.d.mts → implementation-BbuGM8_W.d.mts} +1 -1
- package/dist/index.d.mts +395 -28
- package/dist/index.d.ts +395 -28
- package/dist/index.js +49 -196
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +35 -182
- package/dist/index.mjs.map +1 -1
- package/dist/list-3JR4HKGF.mjs +70 -0
- package/dist/list-3JR4HKGF.mjs.map +1 -0
- package/dist/list-6BRQWVVV.js +74 -0
- package/dist/list-6BRQWVVV.js.map +1 -0
- package/dist/list-6JTFDJAI.mjs +93 -0
- package/dist/list-6JTFDJAI.mjs.map +1 -0
- package/dist/list-7LV6GOZO.js +85 -0
- package/dist/list-7LV6GOZO.js.map +1 -0
- package/dist/list-AEX4S72W.mjs +74 -0
- package/dist/list-AEX4S72W.mjs.map +1 -0
- package/dist/list-AGELVAP7.js +70 -0
- package/dist/list-AGELVAP7.js.map +1 -0
- package/dist/list-ARBOOOYN.mjs +81 -0
- package/dist/list-ARBOOOYN.mjs.map +1 -0
- package/dist/list-AYOW6OF7.js +73 -0
- package/dist/list-AYOW6OF7.js.map +1 -0
- package/dist/list-BAKCZVTL.mjs +78 -0
- package/dist/list-BAKCZVTL.mjs.map +1 -0
- package/dist/list-BDNGLOLK.mjs +77 -0
- package/dist/list-BDNGLOLK.mjs.map +1 -0
- package/dist/list-C6DPYHQ2.js +109 -0
- package/dist/list-C6DPYHQ2.js.map +1 -0
- package/dist/list-E7YPBCAF.mjs +85 -0
- package/dist/list-E7YPBCAF.mjs.map +1 -0
- package/dist/list-EPB36Y7W.mjs +49 -0
- package/dist/list-EPB36Y7W.mjs.map +1 -0
- package/dist/list-FLTPMAHR.js +93 -0
- package/dist/list-FLTPMAHR.js.map +1 -0
- package/dist/list-FPIWJ65T.mjs +83 -0
- package/dist/list-FPIWJ65T.mjs.map +1 -0
- package/dist/list-GN3SAZG2.js +83 -0
- package/dist/list-GN3SAZG2.js.map +1 -0
- package/dist/list-JK36QVS2.js +73 -0
- package/dist/list-JK36QVS2.js.map +1 -0
- package/dist/list-JRWFJU5H.js +81 -0
- package/dist/list-JRWFJU5H.js.map +1 -0
- package/dist/list-KIJ4ILEN.mjs +78 -0
- package/dist/list-KIJ4ILEN.mjs.map +1 -0
- package/dist/list-KQKELE44.mjs +73 -0
- package/dist/list-KQKELE44.mjs.map +1 -0
- package/dist/list-LMMRRFZC.js +77 -0
- package/dist/list-LMMRRFZC.js.map +1 -0
- package/dist/{list-53QTWXGF.mjs → list-N7WIOJ5A.mjs} +29 -68
- package/dist/list-N7WIOJ5A.mjs.map +1 -0
- package/dist/list-RS4QL7NE.mjs +83 -0
- package/dist/list-RS4QL7NE.mjs.map +1 -0
- package/dist/list-SDMJ2GJE.js +81 -0
- package/dist/list-SDMJ2GJE.js.map +1 -0
- package/dist/list-UKGJOVJE.js +49 -0
- package/dist/list-UKGJOVJE.js.map +1 -0
- package/dist/list-UOTJUE2P.js +79 -0
- package/dist/list-UOTJUE2P.js.map +1 -0
- package/dist/list-W2MYF4RU.js +78 -0
- package/dist/list-W2MYF4RU.js.map +1 -0
- package/dist/list-WYYGGV5V.mjs +81 -0
- package/dist/list-WYYGGV5V.mjs.map +1 -0
- package/dist/list-WZ4KHBMF.mjs +73 -0
- package/dist/list-WZ4KHBMF.mjs.map +1 -0
- package/dist/list-XTOWXYB2.js +83 -0
- package/dist/list-XTOWXYB2.js.map +1 -0
- package/dist/list-Z5EEMYRQ.js +78 -0
- package/dist/list-Z5EEMYRQ.js.map +1 -0
- package/dist/list-ZB53NL6Z.mjs +79 -0
- package/dist/list-ZB53NL6Z.mjs.map +1 -0
- package/dist/{login-QWXRNDAM.mjs → login-4AX6AOKI.mjs} +20 -3
- package/dist/login-4AX6AOKI.mjs.map +1 -0
- package/dist/{login-XBFOVP6G.js → login-H3SQDBT7.js} +21 -4
- package/dist/login-H3SQDBT7.js.map +1 -0
- package/dist/observability-sdk/index.d.mts +3 -3
- package/dist/observability-sdk/index.d.ts +3 -3
- package/dist/observability-sdk/index.js +8 -6
- package/dist/observability-sdk/index.js.map +1 -1
- package/dist/observability-sdk/index.mjs +8 -6
- package/dist/observability-sdk/instrumentation/langchain/index.d.mts +1 -1
- package/dist/observability-sdk/instrumentation/langchain/index.d.ts +1 -1
- package/dist/observability-sdk/instrumentation/langchain/index.js +17 -16
- package/dist/observability-sdk/instrumentation/langchain/index.js.map +1 -1
- package/dist/observability-sdk/instrumentation/langchain/index.mjs +3 -2
- package/dist/observability-sdk/instrumentation/langchain/index.mjs.map +1 -1
- package/dist/observability-sdk/setup/node/index.js +6 -5
- package/dist/observability-sdk/setup/node/index.js.map +1 -1
- package/dist/observability-sdk/setup/node/index.mjs +5 -4
- package/dist/pull-64HVVOBC.mjs +23 -0
- package/dist/pull-QIANBELG.js +23 -0
- package/dist/pull-QIANBELG.js.map +1 -0
- package/dist/push-GXLGORLM.mjs +23 -0
- package/dist/push-GXLGORLM.mjs.map +1 -0
- package/dist/push-I3BJSL6N.js +23 -0
- package/dist/push-I3BJSL6N.js.map +1 -0
- package/dist/query-UF2LDBR4.js +158 -0
- package/dist/query-UF2LDBR4.js.map +1 -0
- package/dist/query-ZI7HJSIY.mjs +158 -0
- package/dist/query-ZI7HJSIY.mjs.map +1 -0
- package/dist/records-add-4LX4JHLO.mjs +94 -0
- package/dist/records-add-4LX4JHLO.mjs.map +1 -0
- package/dist/records-add-WTIGBJV4.js +94 -0
- package/dist/records-add-WTIGBJV4.js.map +1 -0
- package/dist/records-delete-IY37NWPN.mjs +42 -0
- package/dist/records-delete-IY37NWPN.mjs.map +1 -0
- package/dist/records-delete-MLOG4DM4.js +42 -0
- package/dist/records-delete-MLOG4DM4.js.map +1 -0
- package/dist/records-list-EP6OCFH5.js +85 -0
- package/dist/records-list-EP6OCFH5.js.map +1 -0
- package/dist/records-list-RIDOAE2V.mjs +85 -0
- package/dist/records-list-RIDOAE2V.mjs.map +1 -0
- package/dist/records-update-5QZBDYUJ.js +49 -0
- package/dist/records-update-5QZBDYUJ.js.map +1 -0
- package/dist/records-update-JINO26IA.mjs +49 -0
- package/dist/records-update-JINO26IA.mjs.map +1 -0
- package/dist/{remove-Q573N52S.mjs → remove-HLVK7VUB.mjs} +10 -7
- package/dist/{remove-Q573N52S.mjs.map → remove-HLVK7VUB.mjs.map} +1 -1
- package/dist/{remove-KIZPGE7J.js → remove-LDX2BSUH.js} +12 -9
- package/dist/remove-LDX2BSUH.js.map +1 -0
- package/dist/rename-FP7X3GJJ.mjs +38 -0
- package/dist/rename-FP7X3GJJ.mjs.map +1 -0
- package/dist/rename-PUSZYLZ7.js +38 -0
- package/dist/rename-PUSZYLZ7.js.map +1 -0
- package/dist/restore-5L5MLISA.mjs +63 -0
- package/dist/restore-5L5MLISA.mjs.map +1 -0
- package/dist/restore-OXNQMRMJ.js +63 -0
- package/dist/restore-OXNQMRMJ.js.map +1 -0
- package/dist/run-AIGCDUDF.mjs +143 -0
- package/dist/run-AIGCDUDF.mjs.map +1 -0
- package/dist/run-CKZ6VNKK.js +143 -0
- package/dist/run-CKZ6VNKK.js.map +1 -0
- package/dist/run-FE4QMJO5.mjs +67 -0
- package/dist/run-FE4QMJO5.mjs.map +1 -0
- package/dist/run-FJDOSV5E.js +128 -0
- package/dist/run-FJDOSV5E.js.map +1 -0
- package/dist/run-GUSPWLCC.mjs +128 -0
- package/dist/run-GUSPWLCC.mjs.map +1 -0
- package/dist/run-KNCB7OEA.js +86 -0
- package/dist/run-KNCB7OEA.js.map +1 -0
- package/dist/run-KZKAHFBR.js +67 -0
- package/dist/run-KZKAHFBR.js.map +1 -0
- package/dist/run-QW2HL4EK.mjs +86 -0
- package/dist/run-QW2HL4EK.mjs.map +1 -0
- package/dist/run-UZVJBWGG.js +130 -0
- package/dist/run-UZVJBWGG.js.map +1 -0
- package/dist/run-WZ4CSMTP.mjs +130 -0
- package/dist/run-WZ4CSMTP.mjs.map +1 -0
- package/dist/search-5B32YGSP.mjs +112 -0
- package/dist/search-5B32YGSP.mjs.map +1 -0
- package/dist/search-J5GDX5JK.js +112 -0
- package/dist/search-J5GDX5JK.js.map +1 -0
- package/dist/set-2DYJNVS5.mjs +62 -0
- package/dist/set-2DYJNVS5.mjs.map +1 -0
- package/dist/set-S5L5QSYZ.js +62 -0
- package/dist/set-S5L5QSYZ.js.map +1 -0
- package/dist/status-OIXOYFH4.mjs +101 -0
- package/dist/status-OIXOYFH4.mjs.map +1 -0
- package/dist/status-Q2PEMYJT.mjs +70 -0
- package/dist/status-Q2PEMYJT.mjs.map +1 -0
- package/dist/status-QRK56VLF.js +70 -0
- package/dist/status-QRK56VLF.js.map +1 -0
- package/dist/status-T7NOWM4X.js +101 -0
- package/dist/status-T7NOWM4X.js.map +1 -0
- package/dist/{sync-YPJIIHKC.js → sync-IDSAYUGO.js} +16 -13
- package/dist/sync-IDSAYUGO.js.map +1 -0
- package/dist/{sync-TM7JZNNW.mjs → sync-LA27E4UB.mjs} +12 -9
- package/dist/{sync-TM7JZNNW.mjs.map → sync-LA27E4UB.mjs.map} +1 -1
- package/dist/{types-DQiByKdr.d.ts → types-B4TSe7JR.d.ts} +6546 -2251
- package/dist/{types-CoHIwxng.d.mts → types-CWY5yQki.d.mts} +6546 -2251
- package/dist/update-3B43ZW4X.mjs +53 -0
- package/dist/update-3B43ZW4X.mjs.map +1 -0
- package/dist/update-3C6Y2Y2P.js +53 -0
- package/dist/update-3C6Y2Y2P.js.map +1 -0
- package/dist/update-4D7R3VYO.js +75 -0
- package/dist/update-4D7R3VYO.js.map +1 -0
- package/dist/update-4FC4YPW7.mjs +71 -0
- package/dist/update-4FC4YPW7.mjs.map +1 -0
- package/dist/update-4YMVL4UT.mjs +74 -0
- package/dist/update-4YMVL4UT.mjs.map +1 -0
- package/dist/update-7ZEJO5SB.js +74 -0
- package/dist/update-7ZEJO5SB.js.map +1 -0
- package/dist/update-BADZ6GRL.js +66 -0
- package/dist/update-BADZ6GRL.js.map +1 -0
- package/dist/update-DLFJBCI2.js +68 -0
- package/dist/update-DLFJBCI2.js.map +1 -0
- package/dist/update-EB7WMPOP.js +53 -0
- package/dist/update-EB7WMPOP.js.map +1 -0
- package/dist/update-EG6BZOLC.mjs +51 -0
- package/dist/update-EG6BZOLC.mjs.map +1 -0
- package/dist/update-FKL5Y73R.js +69 -0
- package/dist/update-FKL5Y73R.js.map +1 -0
- package/dist/update-GWTLCIAT.mjs +69 -0
- package/dist/update-GWTLCIAT.mjs.map +1 -0
- package/dist/update-MFZOMTRJ.mjs +51 -0
- package/dist/update-MFZOMTRJ.mjs.map +1 -0
- package/dist/update-PSY46JJD.mjs +68 -0
- package/dist/update-PSY46JJD.mjs.map +1 -0
- package/dist/update-PXCMJWY3.mjs +53 -0
- package/dist/update-PXCMJWY3.mjs.map +1 -0
- package/dist/update-R72C65QF.mjs +66 -0
- package/dist/update-R72C65QF.mjs.map +1 -0
- package/dist/update-RCZ47II5.js +52 -0
- package/dist/update-RCZ47II5.js.map +1 -0
- package/dist/update-RPD2OXXQ.js +51 -0
- package/dist/update-RPD2OXXQ.js.map +1 -0
- package/dist/update-VLY6LJVM.js +51 -0
- package/dist/update-VLY6LJVM.js.map +1 -0
- package/dist/update-WKM6XI4V.mjs +75 -0
- package/dist/update-WKM6XI4V.mjs.map +1 -0
- package/dist/update-WQK5Q34V.mjs +52 -0
- package/dist/update-WQK5Q34V.mjs.map +1 -0
- package/dist/update-YMWBN55I.js +71 -0
- package/dist/update-YMWBN55I.js.map +1 -0
- package/dist/upload-6LF5GVLP.js +73 -0
- package/dist/upload-6LF5GVLP.js.map +1 -0
- package/dist/upload-QWAITH5R.mjs +73 -0
- package/dist/upload-QWAITH5R.mjs.map +1 -0
- package/dist/versions-HIYVXIKM.js +82 -0
- package/dist/versions-HIYVXIKM.js.map +1 -0
- package/dist/versions-JPUSBSTF.mjs +82 -0
- package/dist/versions-JPUSBSTF.mjs.map +1 -0
- package/package.json +1 -1
- package/dist/add-FJ2SMVQE.js.map +0 -1
- package/dist/chunk-5LYWRKDF.js.map +0 -1
- package/dist/chunk-CWXQ53NE.mjs.map +0 -1
- package/dist/chunk-JVIQJFUE.mjs.map +0 -1
- package/dist/chunk-OLI6GF46.js.map +0 -1
- package/dist/chunk-PIF2RJWZ.js.map +0 -1
- package/dist/chunk-WASZSPD7.mjs.map +0 -1
- package/dist/chunk-ZLCERT3X.js.map +0 -1
- package/dist/list-53QTWXGF.mjs.map +0 -1
- package/dist/list-LBDUK454.js +0 -148
- package/dist/list-LBDUK454.js.map +0 -1
- package/dist/login-QWXRNDAM.mjs.map +0 -1
- package/dist/login-XBFOVP6G.js.map +0 -1
- package/dist/pull-3B3CBSSM.js +0 -20
- package/dist/pull-3B3CBSSM.js.map +0 -1
- package/dist/pull-WK6P7KS2.mjs +0 -20
- package/dist/push-G457CXVG.mjs +0 -20
- package/dist/push-GKFQL6GO.js +0 -20
- package/dist/push-GKFQL6GO.js.map +0 -1
- package/dist/remove-KIZPGE7J.js.map +0 -1
- package/dist/sync-YPJIIHKC.js.map +0 -1
- /package/dist/{chunk-L5Z7F7MG.mjs.map → chunk-43STSE3B.mjs.map} +0 -0
- /package/dist/{chunk-A7CF6ZGH.mjs.map → chunk-ESGWN42J.mjs.map} +0 -0
- /package/dist/{chunk-FMYG6IOZ.mjs.map → chunk-FARZEN6T.mjs.map} +0 -0
- /package/dist/{chunk-5M66X6SZ.mjs.map → chunk-LULJYN3P.mjs.map} +0 -0
- /package/dist/{pull-WK6P7KS2.mjs.map → create-ARJEJDYU.mjs.map} +0 -0
- /package/dist/{push-G457CXVG.mjs.map → pull-64HVVOBC.mjs.map} +0 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createLangWatchApiClient
|
|
3
|
+
} from "./chunk-QH3WUSKF.mjs";
|
|
4
|
+
|
|
5
|
+
// src/client-sdk/services/scenarios/errors.ts
|
|
6
|
+
var ScenariosApiError = class extends Error {
|
|
7
|
+
constructor(message, operation, originalError) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.operation = operation;
|
|
10
|
+
this.originalError = originalError;
|
|
11
|
+
this.name = "ScenariosApiError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// src/client-sdk/services/scenarios/scenarios-api.service.ts
|
|
16
|
+
var ScenariosApiService = class {
|
|
17
|
+
constructor(config) {
|
|
18
|
+
var _a;
|
|
19
|
+
this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : createLangWatchApiClient();
|
|
20
|
+
}
|
|
21
|
+
handleApiError(operation, error) {
|
|
22
|
+
var _a;
|
|
23
|
+
const errorMessage = typeof error === "string" ? error : error != null && typeof error === "object" && "error" in error && error.error != null ? typeof error.error === "string" ? error.error : (_a = error.error.message) != null ? _a : JSON.stringify(error.error) : error instanceof Error ? error.message : "Unknown error occurred";
|
|
24
|
+
throw new ScenariosApiError(
|
|
25
|
+
`Failed to ${operation}: ${errorMessage}`,
|
|
26
|
+
operation,
|
|
27
|
+
error
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
async getAll() {
|
|
31
|
+
const { data, error } = await this.apiClient.GET("/api/scenarios");
|
|
32
|
+
if (error) this.handleApiError("fetch all scenarios", error);
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
async get(id) {
|
|
36
|
+
const { data, error } = await this.apiClient.GET("/api/scenarios/{id}", {
|
|
37
|
+
params: { path: { id } }
|
|
38
|
+
});
|
|
39
|
+
if (error)
|
|
40
|
+
this.handleApiError(`fetch scenario with ID "${id}"`, error);
|
|
41
|
+
return data;
|
|
42
|
+
}
|
|
43
|
+
async create(params) {
|
|
44
|
+
const { data, error } = await this.apiClient.POST("/api/scenarios", {
|
|
45
|
+
body: params
|
|
46
|
+
});
|
|
47
|
+
if (error) this.handleApiError("create scenario", error);
|
|
48
|
+
return data;
|
|
49
|
+
}
|
|
50
|
+
async update(id, params) {
|
|
51
|
+
const { data, error } = await this.apiClient.PUT("/api/scenarios/{id}", {
|
|
52
|
+
params: { path: { id } },
|
|
53
|
+
body: params
|
|
54
|
+
});
|
|
55
|
+
if (error)
|
|
56
|
+
this.handleApiError(`update scenario with ID "${id}"`, error);
|
|
57
|
+
return data;
|
|
58
|
+
}
|
|
59
|
+
async delete(id) {
|
|
60
|
+
const { data, error } = await this.apiClient.DELETE(
|
|
61
|
+
"/api/scenarios/{id}",
|
|
62
|
+
{
|
|
63
|
+
params: { path: { id } }
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
if (error)
|
|
67
|
+
this.handleApiError(`delete scenario with ID "${id}"`, error);
|
|
68
|
+
return data;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export {
|
|
73
|
+
ScenariosApiError,
|
|
74
|
+
ScenariosApiService
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=chunk-TV6ZXLE5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client-sdk/services/scenarios/errors.ts","../src/client-sdk/services/scenarios/scenarios-api.service.ts"],"sourcesContent":["export class ScenariosApiError extends Error {\n constructor(\n message: string,\n public readonly operation: string,\n public readonly originalError?: unknown,\n ) {\n super(message);\n this.name = \"ScenariosApiError\";\n }\n}\n","import type {\n CreateScenarioBody,\n DeleteScenarioResponse,\n ScenarioResponse,\n UpdateScenarioBody,\n} from \"./types\";\nimport {\n createLangWatchApiClient,\n type LangwatchApiClient,\n} from \"@/internal/api/client\";\nimport { type InternalConfig } from \"@/client-sdk/types\";\nimport { ScenariosApiError } from \"./errors\";\n\nexport class ScenariosApiService {\n private readonly apiClient: LangwatchApiClient;\n\n constructor(config?: Pick<InternalConfig, \"langwatchApiClient\">) {\n this.apiClient = config?.langwatchApiClient ?? createLangWatchApiClient();\n }\n\n private handleApiError(operation: string, error: unknown): never {\n const errorMessage =\n typeof error === \"string\"\n ? error\n : error != null &&\n typeof error === \"object\" &&\n \"error\" in error &&\n error.error != null\n ? typeof error.error === \"string\"\n ? error.error\n : (error.error as { message?: string }).message ??\n JSON.stringify(error.error)\n : error instanceof Error\n ? error.message\n : \"Unknown error occurred\";\n\n throw new ScenariosApiError(\n `Failed to ${operation}: ${errorMessage}`,\n operation,\n error,\n );\n }\n\n async getAll(): Promise<ScenarioResponse[]> {\n const { data, error } = await this.apiClient.GET(\"/api/scenarios\");\n if (error) this.handleApiError(\"fetch all scenarios\", error);\n return data;\n }\n\n async get(id: string): Promise<ScenarioResponse> {\n const { data, error } = await this.apiClient.GET(\"/api/scenarios/{id}\", {\n params: { path: { id } },\n });\n if (error)\n this.handleApiError(`fetch scenario with ID \"${id}\"`, error);\n return data;\n }\n\n async create(params: CreateScenarioBody): Promise<ScenarioResponse> {\n const { data, error } = await this.apiClient.POST(\"/api/scenarios\", {\n body: params,\n });\n if (error) this.handleApiError(\"create scenario\", error);\n return data;\n }\n\n async update(id: string, params: UpdateScenarioBody): Promise<ScenarioResponse> {\n const { data, error } = await this.apiClient.PUT(\"/api/scenarios/{id}\", {\n params: { path: { id } },\n body: params,\n });\n if (error)\n this.handleApiError(`update scenario with ID \"${id}\"`, error);\n return data;\n }\n\n async delete(id: string): Promise<DeleteScenarioResponse> {\n const { data, error } = await this.apiClient.DELETE(\n \"/api/scenarios/{id}\",\n {\n params: { path: { id } },\n },\n );\n if (error)\n this.handleApiError(`delete scenario with ID \"${id}\"`, error);\n return data;\n }\n}\n"],"mappings":";;;;;AAAO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAC3C,YACE,SACgB,WACA,eAChB;AACA,UAAM,OAAO;AAHG;AACA;AAGhB,SAAK,OAAO;AAAA,EACd;AACF;;;ACIO,IAAM,sBAAN,MAA0B;AAAA,EAG/B,YAAY,QAAqD;AAhBnE;AAiBI,SAAK,aAAY,sCAAQ,uBAAR,YAA8B,yBAAyB;AAAA,EAC1E;AAAA,EAEQ,eAAe,WAAmB,OAAuB;AApBnE;AAqBI,UAAM,eACJ,OAAO,UAAU,WACb,QACA,SAAS,QACP,OAAO,UAAU,YACjB,WAAW,SACX,MAAM,SAAS,OACf,OAAO,MAAM,UAAU,WACrB,MAAM,SACL,WAAM,MAA+B,YAArC,YACD,KAAK,UAAU,MAAM,KAAK,IAC5B,iBAAiB,QACf,MAAM,UACN;AAEV,UAAM,IAAI;AAAA,MACR,aAAa,SAAS,KAAK,YAAY;AAAA,MACvC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAsC;AAC1C,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,gBAAgB;AACjE,QAAI,MAAO,MAAK,eAAe,uBAAuB,KAAK;AAC3D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,IAAuC;AAC/C,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,uBAAuB;AAAA,MACtE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,IACzB,CAAC;AACD,QAAI;AACF,WAAK,eAAe,2BAA2B,EAAE,KAAK,KAAK;AAC7D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,QAAuD;AAClE,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,KAAK,kBAAkB;AAAA,MAClE,MAAM;AAAA,IACR,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,mBAAmB,KAAK;AACvD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,IAAY,QAAuD;AAC9E,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,uBAAuB;AAAA,MACtE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,MACvB,MAAM;AAAA,IACR,CAAC;AACD,QAAI;AACF,WAAK,eAAe,4BAA4B,EAAE,KAAK,KAAK;AAC9D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,IAA6C;AACxD,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU;AAAA,MAC3C;AAAA,MACA;AAAA,QACE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,MACzB;AAAA,IACF;AACA,QAAI;AACF,WAAK,eAAe,4BAA4B,EAAE,KAAK,KAAK;AAC9D,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunk2BJPLPLUjs = require('./chunk-2BJPLPLU.js');
|
|
4
|
+
|
|
5
|
+
// src/client-sdk/services/suites/suites-api.service.ts
|
|
6
|
+
var SuitesApiError = class extends Error {
|
|
7
|
+
constructor(message, operation, originalError) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.operation = operation;
|
|
10
|
+
this.originalError = originalError;
|
|
11
|
+
this.name = "SuitesApiError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var SuitesApiService = class {
|
|
15
|
+
constructor(config) {
|
|
16
|
+
var _a;
|
|
17
|
+
this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : _chunk2BJPLPLUjs.createLangWatchApiClient.call(void 0, );
|
|
18
|
+
}
|
|
19
|
+
handleApiError(operation, error) {
|
|
20
|
+
var _a;
|
|
21
|
+
const errorMessage = typeof error === "string" ? error : error != null && typeof error === "object" && "error" in error && error.error != null ? typeof error.error === "string" ? error.error : (_a = error.error.message) != null ? _a : JSON.stringify(error.error) : error instanceof Error ? error.message : "Unknown error occurred";
|
|
22
|
+
throw new SuitesApiError(
|
|
23
|
+
`Failed to ${operation}: ${errorMessage}`,
|
|
24
|
+
operation,
|
|
25
|
+
error
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
async getAll() {
|
|
29
|
+
const { data, error } = await this.apiClient.GET("/api/suites");
|
|
30
|
+
if (error) this.handleApiError("list suites", error);
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
async get(id) {
|
|
34
|
+
const { data, error } = await this.apiClient.GET("/api/suites/{id}", {
|
|
35
|
+
params: { path: { id } }
|
|
36
|
+
});
|
|
37
|
+
if (error) this.handleApiError(`get suite "${id}"`, error);
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
40
|
+
async create(params) {
|
|
41
|
+
const { data, error } = await this.apiClient.POST("/api/suites", {
|
|
42
|
+
body: params
|
|
43
|
+
});
|
|
44
|
+
if (error) this.handleApiError("create suite", error);
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
async update(id, params) {
|
|
48
|
+
const { data, error } = await this.apiClient.PATCH("/api/suites/{id}", {
|
|
49
|
+
params: { path: { id } },
|
|
50
|
+
body: params
|
|
51
|
+
});
|
|
52
|
+
if (error) this.handleApiError(`update suite "${id}"`, error);
|
|
53
|
+
return data;
|
|
54
|
+
}
|
|
55
|
+
async duplicate(id) {
|
|
56
|
+
const { data, error } = await this.apiClient.POST("/api/suites/{id}/duplicate", {
|
|
57
|
+
params: { path: { id } }
|
|
58
|
+
});
|
|
59
|
+
if (error) this.handleApiError(`duplicate suite "${id}"`, error);
|
|
60
|
+
return data;
|
|
61
|
+
}
|
|
62
|
+
async run(id, idempotencyKey) {
|
|
63
|
+
const { data, error } = await this.apiClient.POST("/api/suites/{id}/run", {
|
|
64
|
+
params: { path: { id } },
|
|
65
|
+
body: {
|
|
66
|
+
idempotencyKey: idempotencyKey != null ? idempotencyKey : `cli-${Date.now()}-${Math.random().toString(36).slice(2)}`
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
if (error) this.handleApiError(`run suite "${id}"`, error);
|
|
70
|
+
return data;
|
|
71
|
+
}
|
|
72
|
+
async delete(id) {
|
|
73
|
+
const { data, error } = await this.apiClient.DELETE("/api/suites/{id}", {
|
|
74
|
+
params: { path: { id } }
|
|
75
|
+
});
|
|
76
|
+
if (error) this.handleApiError(`delete suite "${id}"`, error);
|
|
77
|
+
return data;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
exports.SuitesApiError = SuitesApiError; exports.SuitesApiService = SuitesApiService;
|
|
85
|
+
//# sourceMappingURL=chunk-VMDYRBQ7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-VMDYRBQ7.js","../src/client-sdk/services/suites/suites-api.service.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACuBO,IAAM,eAAA,EAAN,MAAA,QAA6B,MAAM;AAAA,EACxC,WAAA,CACE,OAAA,EACgB,SAAA,EACA,aAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHG,IAAA,IAAA,CAAA,UAAA,EAAA,SAAA;AACA,IAAA,IAAA,CAAA,cAAA,EAAA,aAAA;AAGhB,IAAA,IAAA,CAAK,KAAA,EAAO,gBAAA;AAAA,EACd;AACF,CAAA;AAEO,IAAM,iBAAA,EAAN,MAAuB;AAAA,EAG5B,WAAA,CAAY,MAAA,EAAqD;AAzCnE,IAAA,IAAA,EAAA;AA0CI,IAAA,IAAA,CAAK,UAAA,EAAA,CAAY,GAAA,EAAA,OAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,MAAA,CAAQ,kBAAA,EAAA,GAAR,KAAA,EAAA,GAAA,EAA8B,uDAAA,CAAyB;AAAA,EAC1E;AAAA,EAEQ,cAAA,CAAe,SAAA,EAAmB,KAAA,EAAuB;AA7CnE,IAAA,IAAA,EAAA;AA8CI,IAAA,MAAM,aAAA,EACJ,OAAO,MAAA,IAAU,SAAA,EACb,MAAA,EACA,MAAA,GAAS,KAAA,GACP,OAAO,MAAA,IAAU,SAAA,GACjB,QAAA,GAAW,MAAA,GACX,KAAA,CAAM,MAAA,GAAS,KAAA,EACf,OAAO,KAAA,CAAM,MAAA,IAAU,SAAA,EACrB,KAAA,CAAM,MAAA,EAAA,CACL,GAAA,EAAA,KAAA,CAAM,KAAA,CAA+B,OAAA,EAAA,GAArC,KAAA,EAAA,GAAA,EACD,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,KAAK,EAAA,EAC5B,MAAA,WAAiB,MAAA,EACf,KAAA,CAAM,QAAA,EACN,wBAAA;AAEV,IAAA,MAAM,IAAI,cAAA;AAAA,MACR,CAAA,UAAA,EAAa,SAAS,CAAA,EAAA,EAAK,YAAY,CAAA,CAAA;AACvC,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AAEyC,EAAA;AACJ,IAAA;AACJ,IAAA;AACxB,IAAA;AACT,EAAA;AAE8C,EAAA;AACT,IAAA;AACV,MAAA;AACxB,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AAE8D,EAAA;AACzB,IAAA;AAC3B,MAAA;AACP,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AAE0E,EAAA;AACrC,IAAA;AACV,MAAA;AACjB,MAAA;AACP,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AAEoD,EAAA;AACf,IAAA;AACV,MAAA;AACxB,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AAEwE,EAAA;AACnC,IAAA;AACV,MAAA;AACjB,MAAA;AACY,QAAA;AAClB,MAAA;AACD,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AAEqE,EAAA;AAChC,IAAA;AACV,MAAA;AACxB,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AACF;AD9C8C;AACA;AACA;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-VMDYRBQ7.js","sourcesContent":[null,"import type { paths } from \"@/internal/generated/openapi/api-client\";\nimport {\n createLangWatchApiClient,\n type LangwatchApiClient,\n} from \"@/internal/api/client\";\nimport type { InternalConfig } from \"@/client-sdk/types\";\n\nexport type SuiteResponse = NonNullable<\n paths[\"/api/suites\"][\"get\"][\"responses\"][\"200\"][\"content\"][\"application/json\"]\n>[number];\n\nexport type CreateSuiteBody = NonNullable<\n paths[\"/api/suites\"][\"post\"][\"requestBody\"]\n>[\"content\"][\"application/json\"];\n\nexport type UpdateSuiteBody = NonNullable<\n paths[\"/api/suites/{id}\"][\"patch\"][\"requestBody\"]\n>[\"content\"][\"application/json\"];\n\nexport type SuiteRunResult =\n paths[\"/api/suites/{id}/run\"][\"post\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\nexport interface SuiteTarget {\n type: \"prompt\" | \"http\" | \"code\" | \"workflow\";\n referenceId: string;\n}\n\nexport class SuitesApiError extends Error {\n constructor(\n message: string,\n public readonly operation: string,\n public readonly originalError?: unknown,\n ) {\n super(message);\n this.name = \"SuitesApiError\";\n }\n}\n\nexport class SuitesApiService {\n private readonly apiClient: LangwatchApiClient;\n\n constructor(config?: Pick<InternalConfig, \"langwatchApiClient\">) {\n this.apiClient = config?.langwatchApiClient ?? createLangWatchApiClient();\n }\n\n private handleApiError(operation: string, error: unknown): never {\n const errorMessage =\n typeof error === \"string\"\n ? error\n : error != null &&\n typeof error === \"object\" &&\n \"error\" in error &&\n error.error != null\n ? typeof error.error === \"string\"\n ? error.error\n : (error.error as { message?: string }).message ??\n JSON.stringify(error.error)\n : error instanceof Error\n ? error.message\n : \"Unknown error occurred\";\n\n throw new SuitesApiError(\n `Failed to ${operation}: ${errorMessage}`,\n operation,\n error,\n );\n }\n\n async getAll(): Promise<SuiteResponse[]> {\n const { data, error } = await this.apiClient.GET(\"/api/suites\");\n if (error) this.handleApiError(\"list suites\", error);\n return data;\n }\n\n async get(id: string): Promise<SuiteResponse> {\n const { data, error } = await this.apiClient.GET(\"/api/suites/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`get suite \"${id}\"`, error);\n return data;\n }\n\n async create(params: CreateSuiteBody): Promise<SuiteResponse> {\n const { data, error } = await this.apiClient.POST(\"/api/suites\", {\n body: params,\n });\n if (error) this.handleApiError(\"create suite\", error);\n return data;\n }\n\n async update(id: string, params: UpdateSuiteBody): Promise<SuiteResponse> {\n const { data, error } = await this.apiClient.PATCH(\"/api/suites/{id}\", {\n params: { path: { id } },\n body: params,\n });\n if (error) this.handleApiError(`update suite \"${id}\"`, error);\n return data;\n }\n\n async duplicate(id: string): Promise<SuiteResponse> {\n const { data, error } = await this.apiClient.POST(\"/api/suites/{id}/duplicate\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`duplicate suite \"${id}\"`, error);\n return data;\n }\n\n async run(id: string, idempotencyKey?: string): Promise<SuiteRunResult> {\n const { data, error } = await this.apiClient.POST(\"/api/suites/{id}/run\", {\n params: { path: { id } },\n body: {\n idempotencyKey: idempotencyKey ?? `cli-${Date.now()}-${Math.random().toString(36).slice(2)}`,\n },\n });\n if (error) this.handleApiError(`run suite \"${id}\"`, error);\n return data;\n }\n\n async delete(id: string): Promise<{ id: string; archived: boolean }> {\n const { data, error } = await this.apiClient.DELETE(\"/api/suites/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`delete suite \"${id}\"`, error);\n return data as unknown as { id: string; archived: boolean };\n }\n}\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunk2BJPLPLUjs = require('./chunk-2BJPLPLU.js');
|
|
4
|
+
|
|
5
|
+
// src/client-sdk/services/workflows/workflows-api.service.ts
|
|
6
|
+
var WorkflowsApiError = class extends Error {
|
|
7
|
+
constructor(message, operation, originalError) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.operation = operation;
|
|
10
|
+
this.originalError = originalError;
|
|
11
|
+
this.name = "WorkflowsApiError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var WorkflowsApiService = class {
|
|
15
|
+
constructor(config) {
|
|
16
|
+
var _a;
|
|
17
|
+
this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : _chunk2BJPLPLUjs.createLangWatchApiClient.call(void 0, );
|
|
18
|
+
}
|
|
19
|
+
handleApiError(operation, error) {
|
|
20
|
+
var _a;
|
|
21
|
+
const errorMessage = typeof error === "string" ? error : error != null && typeof error === "object" && "error" in error && error.error != null ? typeof error.error === "string" ? error.error : (_a = error.error.message) != null ? _a : JSON.stringify(error.error) : error instanceof Error ? error.message : "Unknown error occurred";
|
|
22
|
+
throw new WorkflowsApiError(
|
|
23
|
+
`Failed to ${operation}: ${errorMessage}`,
|
|
24
|
+
operation,
|
|
25
|
+
error
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
async getAll() {
|
|
29
|
+
const { data, error } = await this.apiClient.GET("/api/workflows");
|
|
30
|
+
if (error) this.handleApiError("list workflows", error);
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
async get(id) {
|
|
34
|
+
const { data, error } = await this.apiClient.GET("/api/workflows/{id}", {
|
|
35
|
+
params: { path: { id } }
|
|
36
|
+
});
|
|
37
|
+
if (error) this.handleApiError(`get workflow "${id}"`, error);
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
40
|
+
async delete(id) {
|
|
41
|
+
const { data, error } = await this.apiClient.DELETE("/api/workflows/{id}", {
|
|
42
|
+
params: { path: { id } }
|
|
43
|
+
});
|
|
44
|
+
if (error) this.handleApiError(`delete workflow "${id}"`, error);
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
exports.WorkflowsApiError = WorkflowsApiError; exports.WorkflowsApiService = WorkflowsApiService;
|
|
53
|
+
//# sourceMappingURL=chunk-WE2PHCFS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-WE2PHCFS.js","../src/client-sdk/services/workflows/workflows-api.service.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACUO,IAAM,kBAAA,EAAN,MAAA,QAAgC,MAAM;AAAA,EAC3C,WAAA,CACE,OAAA,EACgB,SAAA,EACA,aAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHG,IAAA,IAAA,CAAA,UAAA,EAAA,SAAA;AACA,IAAA,IAAA,CAAA,cAAA,EAAA,aAAA;AAGhB,IAAA,IAAA,CAAK,KAAA,EAAO,mBAAA;AAAA,EACd;AACF,CAAA;AAEO,IAAM,oBAAA,EAAN,MAA0B;AAAA,EAG/B,WAAA,CAAY,MAAA,EAAqD;AA5BnE,IAAA,IAAA,EAAA;AA6BI,IAAA,IAAA,CAAK,UAAA,EAAA,CAAY,GAAA,EAAA,OAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,MAAA,CAAQ,kBAAA,EAAA,GAAR,KAAA,EAAA,GAAA,EAA8B,uDAAA,CAAyB;AAAA,EAC1E;AAAA,EAEQ,cAAA,CAAe,SAAA,EAAmB,KAAA,EAAuB;AAhCnE,IAAA,IAAA,EAAA;AAiCI,IAAA,MAAM,aAAA,EACJ,OAAO,MAAA,IAAU,SAAA,EACb,MAAA,EACA,MAAA,GAAS,KAAA,GACP,OAAO,MAAA,IAAU,SAAA,GACjB,QAAA,GAAW,MAAA,GACX,KAAA,CAAM,MAAA,GAAS,KAAA,EACf,OAAO,KAAA,CAAM,MAAA,IAAU,SAAA,EACrB,KAAA,CAAM,MAAA,EAAA,CACL,GAAA,EAAA,KAAA,CAAM,KAAA,CAA+B,OAAA,EAAA,GAArC,KAAA,EAAA,GAAA,EACD,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,KAAK,EAAA,EAC5B,MAAA,WAAiB,MAAA,EACf,KAAA,CAAM,QAAA,EACN,wBAAA;AAEV,IAAA,MAAM,IAAI,iBAAA;AAAA,MACR,CAAA,UAAA,EAAa,SAAS,CAAA,EAAA,EAAK,YAAY,CAAA,CAAA;AACvC,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AAE4C,EAAA;AACP,IAAA;AACJ,IAAA;AACxB,IAAA;AACT,EAAA;AAEiD,EAAA;AACZ,IAAA;AACV,MAAA;AACxB,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AAE0D,EAAA;AACrB,IAAA;AACV,MAAA;AACxB,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AACF;AD7B8C;AACA;AACA;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-WE2PHCFS.js","sourcesContent":[null,"import type { paths } from \"@/internal/generated/openapi/api-client\";\nimport {\n createLangWatchApiClient,\n type LangwatchApiClient,\n} from \"@/internal/api/client\";\nimport { type InternalConfig } from \"@/client-sdk/types\";\n\nexport type WorkflowResponse = NonNullable<\n paths[\"/api/workflows\"][\"get\"][\"responses\"][\"200\"][\"content\"][\"application/json\"]\n>[number];\n\nexport type WorkflowDeleteResponse =\n paths[\"/api/workflows/{id}\"][\"delete\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\nexport class WorkflowsApiError extends Error {\n constructor(\n message: string,\n public readonly operation: string,\n public readonly originalError?: unknown,\n ) {\n super(message);\n this.name = \"WorkflowsApiError\";\n }\n}\n\nexport class WorkflowsApiService {\n private readonly apiClient: LangwatchApiClient;\n\n constructor(config?: Pick<InternalConfig, \"langwatchApiClient\">) {\n this.apiClient = config?.langwatchApiClient ?? createLangWatchApiClient();\n }\n\n private handleApiError(operation: string, error: unknown): never {\n const errorMessage =\n typeof error === \"string\"\n ? error\n : error != null &&\n typeof error === \"object\" &&\n \"error\" in error &&\n error.error != null\n ? typeof error.error === \"string\"\n ? error.error\n : (error.error as { message?: string }).message ??\n JSON.stringify(error.error)\n : error instanceof Error\n ? error.message\n : \"Unknown error occurred\";\n\n throw new WorkflowsApiError(\n `Failed to ${operation}: ${errorMessage}`,\n operation,\n error,\n );\n }\n\n async getAll(): Promise<WorkflowResponse[]> {\n const { data, error } = await this.apiClient.GET(\"/api/workflows\");\n if (error) this.handleApiError(\"list workflows\", error);\n return data;\n }\n\n async get(id: string): Promise<WorkflowResponse> {\n const { data, error } = await this.apiClient.GET(\"/api/workflows/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`get workflow \"${id}\"`, error);\n return data;\n }\n\n async delete(id: string): Promise<WorkflowDeleteResponse> {\n const { data, error } = await this.apiClient.DELETE(\"/api/workflows/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`delete workflow \"${id}\"`, error);\n return data;\n }\n}\n"]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunk2BJPLPLUjs = require('./chunk-2BJPLPLU.js');
|
|
4
|
+
|
|
5
|
+
// src/client-sdk/services/traces/traces-api.service.ts
|
|
6
|
+
var TracesApiError = class extends Error {
|
|
7
|
+
constructor(message, operation, originalError) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.operation = operation;
|
|
10
|
+
this.originalError = originalError;
|
|
11
|
+
this.name = "TracesApiError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var TracesApiService = class {
|
|
15
|
+
constructor(config) {
|
|
16
|
+
var _a;
|
|
17
|
+
this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : _chunk2BJPLPLUjs.createLangWatchApiClient.call(void 0, );
|
|
18
|
+
}
|
|
19
|
+
handleApiError(operation, error) {
|
|
20
|
+
var _a;
|
|
21
|
+
const errorMessage = typeof error === "string" ? error : error != null && typeof error === "object" && "error" in error && error.error != null ? typeof error.error === "string" ? error.error : (_a = error.error.message) != null ? _a : JSON.stringify(error.error) : error instanceof Error ? error.message : "Unknown error occurred";
|
|
22
|
+
throw new TracesApiError(
|
|
23
|
+
`Failed to ${operation}: ${errorMessage}`,
|
|
24
|
+
operation,
|
|
25
|
+
error
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
async search(params) {
|
|
29
|
+
const { data, error } = await this.apiClient.POST("/api/traces/search", {
|
|
30
|
+
body: params
|
|
31
|
+
});
|
|
32
|
+
if (error) this.handleApiError("search traces", error);
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
async get(traceId, options) {
|
|
36
|
+
const { data, error } = await this.apiClient.GET(
|
|
37
|
+
"/api/traces/{traceId}",
|
|
38
|
+
{
|
|
39
|
+
params: {
|
|
40
|
+
path: { traceId },
|
|
41
|
+
query: options
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
if (error) this.handleApiError(`get trace "${traceId}"`, error);
|
|
46
|
+
return data;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
exports.TracesApiError = TracesApiError; exports.TracesApiService = TracesApiService;
|
|
54
|
+
//# sourceMappingURL=chunk-WLMXMXHE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-WLMXMXHE.js","../src/client-sdk/services/traces/traces-api.service.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACaO,IAAM,eAAA,EAAN,MAAA,QAA6B,MAAM;AAAA,EACxC,WAAA,CACE,OAAA,EACgB,SAAA,EACA,aAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHG,IAAA,IAAA,CAAA,UAAA,EAAA,SAAA;AACA,IAAA,IAAA,CAAA,cAAA,EAAA,aAAA;AAGhB,IAAA,IAAA,CAAK,KAAA,EAAO,gBAAA;AAAA,EACd;AACF,CAAA;AAEO,IAAM,iBAAA,EAAN,MAAuB;AAAA,EAG5B,WAAA,CAAY,MAAA,EAAqD;AA/BnE,IAAA,IAAA,EAAA;AAgCI,IAAA,IAAA,CAAK,UAAA,EAAA,CAAY,GAAA,EAAA,OAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,MAAA,CAAQ,kBAAA,EAAA,GAAR,KAAA,EAAA,GAAA,EAA8B,uDAAA,CAAyB;AAAA,EAC1E;AAAA,EAEQ,cAAA,CAAe,SAAA,EAAmB,KAAA,EAAuB;AAnCnE,IAAA,IAAA,EAAA;AAoCI,IAAA,MAAM,aAAA,EACJ,OAAO,MAAA,IAAU,SAAA,EACb,MAAA,EACA,MAAA,GAAS,KAAA,GACP,OAAO,MAAA,IAAU,SAAA,GACjB,QAAA,GAAW,MAAA,GACX,KAAA,CAAM,MAAA,GAAS,KAAA,EACf,OAAO,KAAA,CAAM,MAAA,IAAU,SAAA,EACrB,KAAA,CAAM,MAAA,EAAA,CACL,GAAA,EAAA,KAAA,CAAM,KAAA,CAA+B,OAAA,EAAA,GAArC,KAAA,EAAA,GAAA,EACD,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,KAAK,EAAA,EAC5B,MAAA,WAAiB,MAAA,EACf,KAAA,CAAM,QAAA,EACN,wBAAA;AAEV,IAAA,MAAM,IAAI,cAAA;AAAA,MACR,CAAA,UAAA,EAAa,SAAS,CAAA,EAAA,EAAK,YAAY,CAAA,CAAA;AACvC,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AAEoE,EAAA;AAC/B,IAAA;AAC3B,MAAA;AACP,IAAA;AAC8B,IAAA;AACxB,IAAA;AACT,EAAA;AAEgG,EAAA;AAC3D,IAAA;AACjC,MAAA;AACA,MAAA;AACU,QAAA;AACU,UAAA;AACT,UAAA;AACT,QAAA;AACF,MAAA;AACF,IAAA;AAC+B,IAAA;AACxB,IAAA;AACT,EAAA;AACF;AD/B8C;AACA;AACA;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-WLMXMXHE.js","sourcesContent":[null,"import type { paths } from \"@/internal/generated/openapi/api-client\";\nimport {\n createLangWatchApiClient,\n type LangwatchApiClient,\n} from \"@/internal/api/client\";\nimport { type InternalConfig } from \"@/client-sdk/types\";\n\nexport type TraceSearchBody = NonNullable<\n paths[\"/api/traces/search\"][\"post\"][\"requestBody\"]\n>[\"content\"][\"application/json\"];\n\nexport type TraceSearchResponse =\n paths[\"/api/traces/search\"][\"post\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\nexport type TraceGetResponse =\n paths[\"/api/traces/{traceId}\"][\"get\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\nexport class TracesApiError extends Error {\n constructor(\n message: string,\n public readonly operation: string,\n public readonly originalError?: unknown,\n ) {\n super(message);\n this.name = \"TracesApiError\";\n }\n}\n\nexport class TracesApiService {\n private readonly apiClient: LangwatchApiClient;\n\n constructor(config?: Pick<InternalConfig, \"langwatchApiClient\">) {\n this.apiClient = config?.langwatchApiClient ?? createLangWatchApiClient();\n }\n\n private handleApiError(operation: string, error: unknown): never {\n const errorMessage =\n typeof error === \"string\"\n ? error\n : error != null &&\n typeof error === \"object\" &&\n \"error\" in error &&\n error.error != null\n ? typeof error.error === \"string\"\n ? error.error\n : (error.error as { message?: string }).message ??\n JSON.stringify(error.error)\n : error instanceof Error\n ? error.message\n : \"Unknown error occurred\";\n\n throw new TracesApiError(\n `Failed to ${operation}: ${errorMessage}`,\n operation,\n error,\n );\n }\n\n async search(params: TraceSearchBody): Promise<TraceSearchResponse> {\n const { data, error } = await this.apiClient.POST(\"/api/traces/search\", {\n body: params,\n });\n if (error) this.handleApiError(\"search traces\", error);\n return data;\n }\n\n async get(traceId: string, options?: { format?: \"digest\" | \"json\" }): Promise<TraceGetResponse> {\n const { data, error } = await this.apiClient.GET(\n \"/api/traces/{traceId}\",\n {\n params: {\n path: { traceId },\n query: options,\n },\n },\n );\n if (error) this.handleApiError(`get trace \"${traceId}\"`, error);\n return data;\n }\n}\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunkCGFG5FCCjs = require('./chunk-CGFG5FCC.js');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
var _chunk2BJPLPLUjs = require('./chunk-2BJPLPLU.js');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
var _chunkD2FHOR76js = require('./chunk-D2FHOR76.js');
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
var _chunkDB6OJGP4js = require('./chunk-DB6OJGP4.js');
|
|
15
|
+
|
|
16
|
+
// src/cli/commands/dataset/service-factory.ts
|
|
17
|
+
function createDatasetService() {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
const apiKey = (_a = process.env.LANGWATCH_API_KEY) != null ? _a : "";
|
|
20
|
+
const endpoint = ((_b = process.env.LANGWATCH_ENDPOINT) != null ? _b : _chunkD2FHOR76js.DEFAULT_ENDPOINT).replace(/\/$/, "");
|
|
21
|
+
return new (0, _chunkCGFG5FCCjs.DatasetService)({
|
|
22
|
+
langwatchApiClient: _chunk2BJPLPLUjs.createLangWatchApiClient.call(void 0, apiKey, endpoint),
|
|
23
|
+
logger: new (0, _chunkDB6OJGP4js.NoOpLogger)(),
|
|
24
|
+
endpoint,
|
|
25
|
+
apiKey
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// src/cli/commands/dataset/error-handler.ts
|
|
30
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
31
|
+
function handleDatasetCommandError(error, context) {
|
|
32
|
+
if (error instanceof _chunkCGFG5FCCjs.DatasetNotFoundError) {
|
|
33
|
+
console.error(_chalk2.default.red(`Not found: ${error.message}`));
|
|
34
|
+
} else if (error instanceof _chunkCGFG5FCCjs.DatasetApiError) {
|
|
35
|
+
console.error(_chalk2.default.red(`Error: ${error.message}`));
|
|
36
|
+
} else {
|
|
37
|
+
console.error(_chalk2.default.red(`Error ${context}: ${error instanceof Error ? error.message : "Unknown error"}`));
|
|
38
|
+
}
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
exports.createDatasetService = createDatasetService; exports.handleDatasetCommandError = handleDatasetCommandError;
|
|
46
|
+
//# sourceMappingURL=chunk-X7QBE6AA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-X7QBE6AA.js","../src/cli/commands/dataset/service-factory.ts","../src/cli/commands/dataset/error-handler.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACNO,SAAS,oBAAA,CAAA,EAAuC;AATvD,EAAA,IAAA,EAAA,EAAA,EAAA;AAUE,EAAA,MAAM,OAAA,EAAA,CAAS,GAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,iBAAA,EAAA,GAAZ,KAAA,EAAA,GAAA,EAAiC,EAAA;AAChD,EAAA,MAAM,SAAA,EAAA,CAAA,CACJ,GAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,kBAAA,EAAA,GAAZ,KAAA,EAAA,GAAA,EAAkC,iCAAA,CAAA,CAClC,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAEnB,EAAA,OAAO,IAAI,oCAAA,CAAe;AAAA,IACxB,kBAAA,EAAoB,uDAAA,MAAyB,EAAQ,QAAQ,CAAA;AAAA,IAC7D,MAAA,EAAQ,IAAI,gCAAA,CAAW,CAAA;AAAA,IACvB,QAAA;AAAA,IACA;AAAA,EACF,CAAC,CAAA;AACH;ADMA;AACA;AE5BA,4EAAkB;AAUX,SAAS,yBAAA,CAA0B,KAAA,EAAgB,OAAA,EAAwB;AAChF,EAAA,GAAA,CAAI,MAAA,WAAiB,qCAAA,EAAsB;AACzC,IAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,CAAM,GAAA,CAAI,CAAA,WAAA,EAAc,KAAA,CAAM,OAAO,CAAA,CAAA;AACR,EAAA;AACO,IAAA;AAC7C,EAAA;AACwC,IAAA;AAC/C,EAAA;AACc,EAAA;AAChB;AFqBwD;AACA;AACA;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-X7QBE6AA.js","sourcesContent":[null,"import { DatasetService } from \"@/client-sdk/services/datasets\";\nimport { createLangWatchApiClient } from \"@/internal/api/client\";\nimport { NoOpLogger } from \"@/logger\";\nimport { DEFAULT_ENDPOINT } from \"@/internal/constants\";\n\n/**\n * Creates a DatasetService configured from environment variables.\n * Reused by all dataset CLI commands.\n */\nexport function createDatasetService(): DatasetService {\n const apiKey = process.env.LANGWATCH_API_KEY ?? \"\";\n const endpoint = (\n process.env.LANGWATCH_ENDPOINT ?? DEFAULT_ENDPOINT\n ).replace(/\\/$/, \"\");\n\n return new DatasetService({\n langwatchApiClient: createLangWatchApiClient(apiKey, endpoint),\n logger: new NoOpLogger(),\n endpoint,\n apiKey,\n });\n}\n","import chalk from \"chalk\";\nimport { DatasetNotFoundError, DatasetApiError } from \"@/client-sdk/services/datasets/errors\";\n\n/**\n * Centralized error handler for all dataset CLI commands.\n * Maps known error types to user-friendly messages and exits with code 1.\n *\n * @param error - The caught error\n * @param context - Human-readable context (e.g. \"creating dataset\", \"uploading file\")\n */\nexport function handleDatasetCommandError(error: unknown, context: string): never {\n if (error instanceof DatasetNotFoundError) {\n console.error(chalk.red(`Not found: ${error.message}`));\n } else if (error instanceof DatasetApiError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(chalk.red(`Error ${context}: ${error instanceof Error ? error.message : \"Unknown error\"}`));\n }\n process.exit(1);\n}\n"]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createLangWatchApiClient
|
|
3
|
+
} from "./chunk-QH3WUSKF.mjs";
|
|
4
|
+
|
|
5
|
+
// src/client-sdk/services/evaluations/evaluations-api.service.ts
|
|
6
|
+
var EvaluationsApiError = class extends Error {
|
|
7
|
+
constructor(message, operation, originalError) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.operation = operation;
|
|
10
|
+
this.originalError = originalError;
|
|
11
|
+
this.name = "EvaluationsApiError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var EvaluationsApiService = class {
|
|
15
|
+
constructor(config) {
|
|
16
|
+
var _a;
|
|
17
|
+
this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : createLangWatchApiClient();
|
|
18
|
+
}
|
|
19
|
+
handleApiError(operation, error) {
|
|
20
|
+
var _a;
|
|
21
|
+
const errorMessage = typeof error === "string" ? error : error != null && typeof error === "object" && "error" in error && error.error != null ? typeof error.error === "string" ? error.error : (_a = error.error.message) != null ? _a : JSON.stringify(error.error) : error instanceof Error ? error.message : "Unknown error occurred";
|
|
22
|
+
throw new EvaluationsApiError(
|
|
23
|
+
`Failed to ${operation}: ${errorMessage}`,
|
|
24
|
+
operation,
|
|
25
|
+
error
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
async startRun(slug) {
|
|
29
|
+
const { data, error } = await this.apiClient.POST(
|
|
30
|
+
"/api/evaluations/v3/{slug}/run",
|
|
31
|
+
{
|
|
32
|
+
params: { path: { slug } }
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
if (error) this.handleApiError(`start evaluation run for "${slug}"`, error);
|
|
36
|
+
return data;
|
|
37
|
+
}
|
|
38
|
+
async getRunStatus(runId) {
|
|
39
|
+
const { data, error } = await this.apiClient.GET(
|
|
40
|
+
"/api/evaluations/v3/runs/{runId}",
|
|
41
|
+
{
|
|
42
|
+
params: { path: { runId } }
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
if (error) this.handleApiError(`get run status for "${runId}"`, error);
|
|
46
|
+
return data;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export {
|
|
51
|
+
EvaluationsApiError,
|
|
52
|
+
EvaluationsApiService
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=chunk-YTR56IZO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client-sdk/services/evaluations/evaluations-api.service.ts"],"sourcesContent":["import type { paths } from \"@/internal/generated/openapi/api-client\";\nimport {\n createLangWatchApiClient,\n type LangwatchApiClient,\n} from \"@/internal/api/client\";\nimport { type InternalConfig } from \"@/client-sdk/types\";\n\nexport interface EvaluationRunStartResponse {\n runId: string;\n status: \"running\";\n total: number;\n runUrl?: string;\n}\n\nexport type EvaluationRunStatusResponse =\n paths[\"/api/evaluations/v3/runs/{runId}\"][\"get\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\nexport class EvaluationsApiError extends Error {\n constructor(\n message: string,\n public readonly operation: string,\n public readonly originalError?: unknown,\n ) {\n super(message);\n this.name = \"EvaluationsApiError\";\n }\n}\n\nexport class EvaluationsApiService {\n private readonly apiClient: LangwatchApiClient;\n\n constructor(config?: Pick<InternalConfig, \"langwatchApiClient\">) {\n this.apiClient = config?.langwatchApiClient ?? createLangWatchApiClient();\n }\n\n private handleApiError(operation: string, error: unknown): never {\n const errorMessage =\n typeof error === \"string\"\n ? error\n : error != null &&\n typeof error === \"object\" &&\n \"error\" in error &&\n error.error != null\n ? typeof error.error === \"string\"\n ? error.error\n : (error.error as { message?: string }).message ??\n JSON.stringify(error.error)\n : error instanceof Error\n ? error.message\n : \"Unknown error occurred\";\n\n throw new EvaluationsApiError(\n `Failed to ${operation}: ${errorMessage}`,\n operation,\n error,\n );\n }\n\n async startRun(slug: string): Promise<EvaluationRunStartResponse> {\n const { data, error } = await this.apiClient.POST(\n \"/api/evaluations/v3/{slug}/run\",\n {\n params: { path: { slug } },\n },\n );\n if (error) this.handleApiError(`start evaluation run for \"${slug}\"`, error);\n return data as unknown as EvaluationRunStartResponse;\n }\n\n async getRunStatus(runId: string): Promise<EvaluationRunStatusResponse> {\n const { data, error } = await this.apiClient.GET(\n \"/api/evaluations/v3/runs/{runId}\",\n {\n params: { path: { runId } },\n },\n );\n if (error) this.handleApiError(`get run status for \"${runId}\"`, error);\n return data;\n }\n}\n"],"mappings":";;;;;AAiBO,IAAM,sBAAN,cAAkC,MAAM;AAAA,EAC7C,YACE,SACgB,WACA,eAChB;AACA,UAAM,OAAO;AAHG;AACA;AAGhB,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,wBAAN,MAA4B;AAAA,EAGjC,YAAY,QAAqD;AA/BnE;AAgCI,SAAK,aAAY,sCAAQ,uBAAR,YAA8B,yBAAyB;AAAA,EAC1E;AAAA,EAEQ,eAAe,WAAmB,OAAuB;AAnCnE;AAoCI,UAAM,eACJ,OAAO,UAAU,WACb,QACA,SAAS,QACP,OAAO,UAAU,YACjB,WAAW,SACX,MAAM,SAAS,OACf,OAAO,MAAM,UAAU,WACrB,MAAM,SACL,WAAM,MAA+B,YAArC,YACD,KAAK,UAAU,MAAM,KAAK,IAC5B,iBAAiB,QACf,MAAM,UACN;AAEV,UAAM,IAAI;AAAA,MACR,aAAa,SAAS,KAAK,YAAY;AAAA,MACvC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,MAAmD;AAChE,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU;AAAA,MAC3C;AAAA,MACA;AAAA,QACE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;AAAA,MAC3B;AAAA,IACF;AACA,QAAI,MAAO,MAAK,eAAe,6BAA6B,IAAI,KAAK,KAAK;AAC1E,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,aAAa,OAAqD;AACtE,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU;AAAA,MAC3C;AAAA,MACA;AAAA,QACE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;AAAA,MAC5B;AAAA,IACF;AACA,QAAI,MAAO,MAAK,eAAe,uBAAuB,KAAK,KAAK,KAAK;AACrE,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -4,7 +4,7 @@ var _chunkF6E4XQQUjs = require('./chunk-F6E4XQQU.js');
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkAK4YCKWKjs = require('./chunk-AK4YCKWK.js');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
var _chunkBYG3QS2Xjs = require('./chunk-BYG3QS2X.js');
|
|
@@ -311,7 +311,7 @@ var pushCommand = async (options) => {
|
|
|
311
311
|
const startTime = Date.now();
|
|
312
312
|
try {
|
|
313
313
|
_chunkF6E4XQQUjs.checkApiKey.call(void 0, );
|
|
314
|
-
const promptsApiService = new (0,
|
|
314
|
+
const promptsApiService = new (0, _chunkAK4YCKWKjs.PromptsApiService)();
|
|
315
315
|
await _chunkBYG3QS2Xjs.ensureProjectInitialized.call(void 0, false);
|
|
316
316
|
const config = _chunkWAAQLJ67js.FileManager.loadPromptsConfig();
|
|
317
317
|
const lock = _chunkWAAQLJ67js.FileManager.loadPromptsLock();
|
|
@@ -330,7 +330,7 @@ var pushCommand = async (options) => {
|
|
|
330
330
|
process.exit(1);
|
|
331
331
|
}
|
|
332
332
|
} catch (error) {
|
|
333
|
-
if (error instanceof
|
|
333
|
+
if (error instanceof _chunkAK4YCKWKjs.PromptsError) {
|
|
334
334
|
console.error(_chalk2.default.red(`Error: ${error.message}`));
|
|
335
335
|
} else {
|
|
336
336
|
console.error(
|
|
@@ -347,4 +347,4 @@ var pushCommand = async (options) => {
|
|
|
347
347
|
|
|
348
348
|
|
|
349
349
|
exports.pushPrompts = pushPrompts; exports.pushCommand = pushCommand;
|
|
350
|
-
//# sourceMappingURL=chunk-
|
|
350
|
+
//# sourceMappingURL=chunk-Z6MQQXMS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-QLBNSGWC.js","../src/cli/commands/push.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-QLBNSGWC.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport * as yaml from \"js-yaml\";\nimport { PromptConverter } from \"@/cli/utils/promptConverter\";\nimport {\n type ConfigData,\n PromptsApiService,\n PromptsError,\n type SyncAction,\n} from \"@/client-sdk/services/prompts\";\nimport type { PromptsConfig, PromptsLock, SyncResult } from \"../types\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport readline from \"node:readline\";\n\n// Handle conflict resolution - show diff and ask user to choose\nconst handleConflict = async (\n promptName: string,\n conflictInfo: {\n localVersion: number;\n remoteVersion: number;\n differences: string[];\n remoteConfigData: any;\n },\n\n forceResolution?: \"local\" | \"remote\"\n): Promise<\"local\" | \"remote\" | \"abort\"> => {\n console.log(\n chalk.yellow(`\\n⚠ Conflict detected for prompt: ${chalk.cyan(promptName)}`)\n );\n console.log(\n chalk.gray(\n `Local version: ${conflictInfo.localVersion}, Remote version: ${conflictInfo.remoteVersion}`\n )\n );\n\n if (conflictInfo.differences.length > 0) {\n console.log(chalk.yellow(\"\\nDifferences:\"));\n conflictInfo.differences.forEach((diff) => {\n console.log(chalk.gray(` • ${diff}`));\n });\n }\n\n // Auto-resolve if --force-local or --force-remote was passed\n if (forceResolution) {\n console.log(chalk.yellow(`\\nAuto-resolving conflict: using ${forceResolution} version (--force-${forceResolution})`));\n return forceResolution;\n }\n\n console.log(chalk.yellow(\"\\nOptions:\"));\n console.log(\" [l] Use local version (overwrite remote)\");\n console.log(\" [r] Use remote version (overwrite local)\");\n console.log(\" [a] Abort push for this prompt\");\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(\"Choose resolution (l/r/a): \", (answer: string) => {\n rl.close();\n const choice = answer.toLowerCase();\n if (choice === \"l\" || choice === \"local\") {\n resolve(\"local\");\n } else if (choice === \"r\" || choice === \"remote\") {\n resolve(\"remote\");\n } else {\n resolve(\"abort\");\n }\n });\n });\n};\n\n/**\n * Core push logic: pushes local prompts to the server.\n * Returns the result and mutates the lock object in place.\n */\nexport const pushPrompts = async ({\n config,\n lock,\n promptsApiService,\n result,\n forceResolution,\n}: {\n config: PromptsConfig;\n lock: PromptsLock;\n promptsApiService: PromptsApiService;\n result: SyncResult;\n forceResolution?: \"local\" | \"remote\";\n}): Promise<void> => {\n const localFileRefs = Object.entries(config.prompts).filter(\n ([, dependency]) => {\n return typeof dependency === \"string\" && dependency.startsWith(\"file:\");\n }\n );\n\n if (localFileRefs.length > 0) {\n const pushSpinner = ora(\n `Pushing ${localFileRefs.length} local prompts...`\n ).start();\n\n for (const [promptName, dependency] of localFileRefs) {\n try {\n const filePath = (dependency as string).slice(5); // Remove \"file:\" prefix\n\n const localConfig = FileManager.loadLocalPrompt(filePath);\n\n const currentVersion = lock.prompts[promptName]?.version;\n\n // Build outputs based on response_format if present\n const responseFormat = (localConfig as any).response_format;\n let outputs: ConfigData[\"outputs\"] = [{ identifier: \"output\", type: \"str\" }];\n if (responseFormat?.schema) {\n outputs = [\n {\n identifier: responseFormat.name ?? \"output\",\n type: \"json_schema\",\n json_schema: responseFormat.schema,\n },\n ];\n }\n\n const configData: ConfigData = {\n model: localConfig.model,\n prompt: PromptConverter.extractSystemPrompt(localConfig.messages),\n messages: PromptConverter.filterNonSystemMessages(\n localConfig.messages\n ) as Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n }>,\n temperature: localConfig.modelParameters?.temperature,\n max_tokens: localConfig.modelParameters?.max_tokens,\n inputs: [{ identifier: \"input\", type: \"str\" }],\n outputs,\n // response_format is derived from outputs on the server side\n };\n\n const syncResult = await promptsApiService.sync({\n name: promptName,\n configData,\n localVersion: currentVersion,\n commitMessage: `Synced from local file: ${path.basename(filePath)}`,\n });\n\n const relativePath = path.relative(process.cwd(), filePath);\n\n let conflictResolution: \"local\" | \"remote\" | \"abort\" | null = null;\n if (syncResult.action === \"conflict\") {\n pushSpinner.stop();\n conflictResolution = await handleConflict(\n promptName,\n syncResult.conflictInfo!,\n forceResolution\n );\n if (conflictResolution === \"abort\") {\n result.errors.push({\n name: promptName,\n error: \"Push aborted due to conflict\",\n });\n continue;\n }\n\n if (conflictResolution === \"remote\" && syncResult.conflictInfo) {\n const remoteConfig = {\n model: syncResult.conflictInfo.remoteConfigData.model,\n modelParameters: {\n temperature:\n syncResult.conflictInfo.remoteConfigData.temperature,\n max_tokens:\n syncResult.conflictInfo.remoteConfigData.max_tokens,\n },\n messages: [\n {\n role: \"system\" as const,\n content: syncResult.conflictInfo.remoteConfigData.prompt,\n },\n ...(syncResult.conflictInfo.remoteConfigData.messages ?? []),\n ],\n };\n\n const yamlContent = yaml.dump(remoteConfig, {\n lineWidth: -1,\n noRefs: true,\n sortKeys: false,\n });\n\n fs.writeFileSync(filePath, yamlContent);\n }\n\n pushSpinner.start();\n }\n\n if (syncResult.prompt) {\n lock.prompts[promptName] = {\n version: syncResult.prompt.version,\n versionId: syncResult.prompt.versionId,\n materialized: filePath,\n };\n } else if (syncResult.action === \"conflict\") {\n const remoteVersion = syncResult.conflictInfo?.remoteVersion ?? 0;\n if (conflictResolution === \"remote\") {\n lock.prompts[promptName] = {\n version: remoteVersion,\n versionId: \"remote_version\",\n materialized: filePath,\n };\n } else {\n const formattedConfig = PromptConverter.fromLocalToApiFormat(localConfig);\n const updatedPrompt = await promptsApiService.update(promptName, {\n ...formattedConfig,\n commitMessage: `Updated via CLI: synced from local file`\n });\n lock.prompts[promptName] = {\n version: updatedPrompt.version,\n versionId: updatedPrompt.versionId,\n materialized: filePath,\n };\n }\n }\n\n let actionText: string;\n if (syncResult.action === \"conflict\") {\n if (conflictResolution === \"remote\") {\n actionText = \"Pulled\";\n result.fetched.push({\n name: promptName,\n version: syncResult.conflictInfo?.remoteVersion ?? 0,\n versionSpec: \"latest\",\n });\n } else {\n actionText = \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: (syncResult.conflictInfo?.remoteVersion ?? 0) + 1,\n });\n }\n } else if (syncResult.action === \"up_to_date\") {\n actionText = \"Up-to-date\";\n result.unchanged.push(promptName);\n } else {\n const actionMap: Record<SyncAction, string> = {\n created: \"Created\",\n updated: \"Updated\",\n conflict: \"Conflict resolved\",\n up_to_date: \"Up to date\",\n };\n actionText = actionMap[syncResult.action as SyncAction] || \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: syncResult.prompt?.version ?? 0,\n });\n }\n\n pushSpinner.text = `${actionText} ${chalk.cyan(\n promptName\n )} ${chalk.gray(\n `(version ${\n syncResult.prompt?.version ??\n syncResult.conflictInfo?.remoteVersion ??\n \"unknown\"\n })`\n )} ${conflictResolution === \"remote\" ? \"to\" : \"from\"} ${chalk.gray(\n relativePath\n )}`;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n result.errors.push({ name: promptName, error: errorMessage });\n }\n }\n\n pushSpinner.stop();\n }\n\n // Check for orphan local prompt files and show helpful warnings\n const discoveredLocalFiles = FileManager.getLocalPromptFiles();\n const orphanFiles = discoveredLocalFiles.filter((filePath) => {\n const promptName = FileManager.promptNameFromPath(filePath);\n return !config.prompts[promptName];\n });\n\n if (orphanFiles.length > 0) {\n console.log(\n chalk.yellow(\n `\\n⚠ Found ${orphanFiles.length} orphan prompt file${\n orphanFiles.length > 1 ? \"s\" : \"\"\n }:`\n )\n );\n\n for (const filePath of orphanFiles) {\n const promptName = FileManager.promptNameFromPath(filePath);\n const relativePath = path.relative(process.cwd(), filePath);\n\n console.log(chalk.yellow(` ${relativePath}`));\n console.log(\n chalk.gray(\n ` Add to prompts.json: \"${promptName}\": \"file:${relativePath}\"`\n )\n );\n }\n\n console.log(\n chalk.gray(\n `\\nTip: Add these to prompts.json to include them in push operations.`\n )\n );\n }\n};\n\nconst printPushResults = ({\n result,\n duration,\n}: {\n result: SyncResult;\n duration: string;\n}): void => {\n if (result.pushed.length > 0) {\n for (const { name, version } of result.pushed) {\n const localPath = `./prompts/${name}.prompt.yaml`;\n console.log(\n chalk.green(\n `✓ Pushed ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} from ${chalk.gray(localPath)}`\n )\n );\n }\n }\n\n if (result.fetched.length > 0) {\n for (const { name, version } of result.fetched) {\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} (resolved conflict with remote)`\n )\n );\n }\n }\n\n if (result.errors.length > 0) {\n for (const { name, error } of result.errors) {\n console.log(chalk.red(`✗ Failed ${chalk.cyan(name)}: ${error}`));\n }\n }\n\n const totalActions = result.fetched.length + result.pushed.length;\n\n if (totalActions === 0 && result.errors.length === 0) {\n console.log(chalk.gray(`Pushed in ${duration}s, no changes`));\n } else {\n const summary = [];\n if (result.pushed.length > 0)\n summary.push(`${result.pushed.length} pushed`);\n if (result.fetched.length > 0)\n summary.push(`${result.fetched.length} pulled (conflict resolution)`);\n if (result.errors.length > 0)\n summary.push(`${result.errors.length} errors`);\n\n console.log(chalk.gray(`Pushed ${summary.join(\", \")} in ${duration}s`));\n }\n};\n\nexport const pushCommand = async (options?: { forceLocal?: boolean; forceRemote?: boolean }): Promise<void> => {\n console.log(\"⬆️ Pushing local prompts...\");\n\n const startTime = Date.now();\n\n try {\n checkApiKey();\n\n const promptsApiService = new PromptsApiService();\n\n await ensureProjectInitialized(false);\n\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n const result: SyncResult = {\n fetched: [],\n pushed: [],\n unchanged: [],\n cleaned: [],\n errors: [],\n };\n\n await pushPrompts({ config, lock, promptsApiService, result, forceResolution: options?.forceLocal ? \"local\" : options?.forceRemote ? \"remote\" : undefined });\n\n FileManager.savePromptsLock(lock);\n\n const duration = ((Date.now() - startTime) / 1000).toFixed(1);\n printPushResults({ result, duration });\n\n if (result.errors.length > 0) {\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`\n )\n );\n }\n process.exit(1);\n }\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-Z6MQQXMS.js","../src/cli/commands/push.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACA;ACnBA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAClB,oEAAgB;AAChB,8EAAsB;AAYtB,wFAAqB;AAGrB,IAAM,eAAA,EAAiB,MAAA,CACrB,UAAA,EACA,YAAA,EAOA,eAAA,EAAA,GAC0C;AAC1C,EAAA,OAAA,CAAQ,GAAA;AAAA,IACN,eAAA,CAAM,MAAA,CAAO,CAAA;AAAA,qCAAA,EAAqC,eAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA,CAAA;AAC1E,EAAA;AACQ,EAAA;AACA,IAAA;AACuC,MAAA;AAC7C,IAAA;AACF,EAAA;AAEyC,EAAA;AACG,IAAA;AACC,IAAA;AACJ,MAAA;AACtC,IAAA;AACH,EAAA;AAGqB,EAAA;AACM,IAAA;AAAmD,+BAAA;AACrE,IAAA;AACT,EAAA;AAEsC,EAAA;AACkB,EAAA;AACA,EAAA;AACV,EAAA;AAEV,EAAA;AACnB,IAAA;AACC,IAAA;AACjB,EAAA;AAE+B,EAAA;AACiC,IAAA;AACpD,MAAA;AACyB,MAAA;AACQ,MAAA;AACzB,QAAA;AACiC,MAAA;AAChC,QAAA;AACX,MAAA;AACU,QAAA;AACjB,MAAA;AACD,IAAA;AACF,EAAA;AACH;AAMkC;AAChC,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AAOmB;AA7FrB,EAAA;AA8FuD,EAAA;AAC/B,IAAA;AACkC,MAAA;AACtD,IAAA;AACF,EAAA;AAE8B,EAAA;AACR,IAAA;AACa,MAAA;AACzB,IAAA;AAE8C,IAAA;AAChD,MAAA;AAC6C,QAAA;AAEC,QAAA;AAEF,QAAA;AAGF,QAAA;AAC+B,QAAA;AACvD,QAAA;AACR,UAAA;AACR,YAAA;AACc,cAAA;AACN,cAAA;AACsB,cAAA;AAC9B,YAAA;AACF,UAAA;AACF,QAAA;AAE+B,QAAA;AACV,UAAA;AACyB,UAAA;AAClB,UAAA;AACZ,YAAA;AACd,UAAA;AAIa,UAAA;AACD,UAAA;AACiC,UAAA;AAC7C,UAAA;AAAA;AAEF,QAAA;AAEgD,QAAA;AACxC,UAAA;AACN,UAAA;AACc,UAAA;AACiC,UAAA;AAChD,QAAA;AAEiD,QAAA;AAEY,QAAA;AACxB,QAAA;AACnB,UAAA;AACU,UAAA;AACzB,YAAA;AACW,YAAA;AACX,YAAA;AACF,UAAA;AACoC,UAAA;AACf,YAAA;AACX,cAAA;AACC,cAAA;AACR,YAAA;AACD,YAAA;AACF,UAAA;AAEkD,UAAA;AAC3B,YAAA;AAC6B,cAAA;AAC/B,cAAA;AAEW,gBAAA;AAEA,gBAAA;AAC5B,cAAA;AACU,cAAA;AACR,gBAAA;AACQ,kBAAA;AAC2B,kBAAA;AACnC,gBAAA;AAC4B,gBAAA;AAC9B,cAAA;AACF,YAAA;AAE4C,YAAA;AAC/B,cAAA;AACH,cAAA;AACE,cAAA;AACX,YAAA;AAEqC,YAAA;AACxC,UAAA;AAEkB,UAAA;AACpB,QAAA;AAEuB,QAAA;AACM,UAAA;AACE,YAAA;AACE,YAAA;AACf,YAAA;AAChB,UAAA;AAC2C,QAAA;AACV,UAAA;AACI,UAAA;AACR,YAAA;AAChB,cAAA;AACE,cAAA;AACG,cAAA;AAChB,YAAA;AACK,UAAA;AACmC,YAAA;AACM,YAAA;AAE7B,cAAA;AAChB,YAAA;AAC0B,YAAA;AACF,cAAA;AACE,cAAA;AACX,cAAA;AAChB,YAAA;AACF,UAAA;AACF,QAAA;AAEI,QAAA;AACkC,QAAA;AACC,UAAA;AACtB,YAAA;AACO,YAAA;AACZ,cAAA;AACc,cAAA;AACP,cAAA;AACd,YAAA;AACI,UAAA;AACQ,YAAA;AACM,YAAA;AACX,cAAA;AACe,cAAA;AACtB,YAAA;AACH,UAAA;AAC6C,QAAA;AAChC,UAAA;AACmB,UAAA;AAC3B,QAAA;AACyC,UAAA;AACnC,YAAA;AACA,YAAA;AACC,YAAA;AACE,YAAA;AACd,UAAA;AAC2D,UAAA;AACxC,UAAA;AACX,YAAA;AACG,YAAA;AACV,UAAA;AACH,QAAA;AAE0C,QAAA;AACxC,UAAA;AACS,QAAA;AAEP,UAAA;AAIgD,QAAA;AAClD,UAAA;AACD,QAAA;AACa,MAAA;AAEmB,QAAA;AACa,QAAA;AAChD,MAAA;AACF,IAAA;AAEiB,IAAA;AACnB,EAAA;AAGyC,EAAA;AACQ,EAAA;AACW,IAAA;AACzB,IAAA;AAClC,EAAA;AAE2B,EAAA;AAClB,IAAA;AACA,MAAA;AACJ,QAAA;AACE,aAAA;AAEJ,MAAA;AACF,IAAA;AAEoC,IAAA;AACgB,MAAA;AACA,MAAA;AAEL,MAAA;AACrC,MAAA;AACA,QAAA;AAC+C,UAAA;AACrD,QAAA;AACF,MAAA;AACF,IAAA;AAEQ,IAAA;AACA,MAAA;AACJ,QAAA;AAAA,kEAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACF;AAE0B;AACxB,EAAA;AACA,EAAA;AAIU;AACoB,EAAA;AACmB,IAAA;AACV,MAAA;AAC3B,MAAA;AACA,QAAA;AACkC,UAAA;AACjB,YAAA;AACU,UAAA;AACjC,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AAE+B,EAAA;AACmB,IAAA;AACtC,MAAA;AACA,QAAA;AACkC,UAAA;AACjB,YAAA;AACpB,UAAA;AACH,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AAE8B,EAAA;AACiB,IAAA;AACO,MAAA;AACpD,IAAA;AACF,EAAA;AAE2D,EAAA;AAEL,EAAA;AACR,IAAA;AACvC,EAAA;AACY,IAAA;AACU,IAAA;AACoB,MAAA;AACnB,IAAA;AACW,MAAA;AACZ,IAAA;AACoB,MAAA;AAEW,IAAA;AAC5D,EAAA;AACF;AAE+G;AACnE,EAAA;AAEf,EAAA;AAEvB,EAAA;AACU,IAAA;AAEoC,IAAA;AAEZ,IAAA;AAES,IAAA;AACJ,IAAA;AAEd,IAAA;AACf,MAAA;AACD,MAAA;AACG,MAAA;AACF,MAAA;AACD,MAAA;AACX,IAAA;AAEqD,IAAA;AAErB,IAAA;AAE2B,IAAA;AACtB,IAAA;AAEP,IAAA;AACd,MAAA;AAChB,IAAA;AACc,EAAA;AACqB,IAAA;AACiB,MAAA;AAC7C,IAAA;AACG,MAAA;AACA,QAAA;AAE6B,UAAA;AAEnC,QAAA;AACF,MAAA;AACF,IAAA;AACc,IAAA;AAChB,EAAA;AACF;ADzE8D;AACA;AACA;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-Z6MQQXMS.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport * as yaml from \"js-yaml\";\nimport { PromptConverter } from \"@/cli/utils/promptConverter\";\nimport {\n type ConfigData,\n PromptsApiService,\n PromptsError,\n type SyncAction,\n} from \"@/client-sdk/services/prompts\";\nimport type { PromptsConfig, PromptsLock, SyncResult } from \"../types\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport readline from \"node:readline\";\n\n// Handle conflict resolution - show diff and ask user to choose\nconst handleConflict = async (\n promptName: string,\n conflictInfo: {\n localVersion: number;\n remoteVersion: number;\n differences: string[];\n remoteConfigData: any;\n },\n\n forceResolution?: \"local\" | \"remote\"\n): Promise<\"local\" | \"remote\" | \"abort\"> => {\n console.log(\n chalk.yellow(`\\n⚠ Conflict detected for prompt: ${chalk.cyan(promptName)}`)\n );\n console.log(\n chalk.gray(\n `Local version: ${conflictInfo.localVersion}, Remote version: ${conflictInfo.remoteVersion}`\n )\n );\n\n if (conflictInfo.differences.length > 0) {\n console.log(chalk.yellow(\"\\nDifferences:\"));\n conflictInfo.differences.forEach((diff) => {\n console.log(chalk.gray(` • ${diff}`));\n });\n }\n\n // Auto-resolve if --force-local or --force-remote was passed\n if (forceResolution) {\n console.log(chalk.yellow(`\\nAuto-resolving conflict: using ${forceResolution} version (--force-${forceResolution})`));\n return forceResolution;\n }\n\n console.log(chalk.yellow(\"\\nOptions:\"));\n console.log(\" [l] Use local version (overwrite remote)\");\n console.log(\" [r] Use remote version (overwrite local)\");\n console.log(\" [a] Abort push for this prompt\");\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(\"Choose resolution (l/r/a): \", (answer: string) => {\n rl.close();\n const choice = answer.toLowerCase();\n if (choice === \"l\" || choice === \"local\") {\n resolve(\"local\");\n } else if (choice === \"r\" || choice === \"remote\") {\n resolve(\"remote\");\n } else {\n resolve(\"abort\");\n }\n });\n });\n};\n\n/**\n * Core push logic: pushes local prompts to the server.\n * Returns the result and mutates the lock object in place.\n */\nexport const pushPrompts = async ({\n config,\n lock,\n promptsApiService,\n result,\n forceResolution,\n}: {\n config: PromptsConfig;\n lock: PromptsLock;\n promptsApiService: PromptsApiService;\n result: SyncResult;\n forceResolution?: \"local\" | \"remote\";\n}): Promise<void> => {\n const localFileRefs = Object.entries(config.prompts).filter(\n ([, dependency]) => {\n return typeof dependency === \"string\" && dependency.startsWith(\"file:\");\n }\n );\n\n if (localFileRefs.length > 0) {\n const pushSpinner = ora(\n `Pushing ${localFileRefs.length} local prompts...`\n ).start();\n\n for (const [promptName, dependency] of localFileRefs) {\n try {\n const filePath = (dependency as string).slice(5); // Remove \"file:\" prefix\n\n const localConfig = FileManager.loadLocalPrompt(filePath);\n\n const currentVersion = lock.prompts[promptName]?.version;\n\n // Build outputs based on response_format if present\n const responseFormat = (localConfig as any).response_format;\n let outputs: ConfigData[\"outputs\"] = [{ identifier: \"output\", type: \"str\" }];\n if (responseFormat?.schema) {\n outputs = [\n {\n identifier: responseFormat.name ?? \"output\",\n type: \"json_schema\",\n json_schema: responseFormat.schema,\n },\n ];\n }\n\n const configData: ConfigData = {\n model: localConfig.model,\n prompt: PromptConverter.extractSystemPrompt(localConfig.messages),\n messages: PromptConverter.filterNonSystemMessages(\n localConfig.messages\n ) as Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n }>,\n temperature: localConfig.modelParameters?.temperature,\n max_tokens: localConfig.modelParameters?.max_tokens,\n inputs: [{ identifier: \"input\", type: \"str\" }],\n outputs,\n // response_format is derived from outputs on the server side\n };\n\n const syncResult = await promptsApiService.sync({\n name: promptName,\n configData,\n localVersion: currentVersion,\n commitMessage: `Synced from local file: ${path.basename(filePath)}`,\n });\n\n const relativePath = path.relative(process.cwd(), filePath);\n\n let conflictResolution: \"local\" | \"remote\" | \"abort\" | null = null;\n if (syncResult.action === \"conflict\") {\n pushSpinner.stop();\n conflictResolution = await handleConflict(\n promptName,\n syncResult.conflictInfo!,\n forceResolution\n );\n if (conflictResolution === \"abort\") {\n result.errors.push({\n name: promptName,\n error: \"Push aborted due to conflict\",\n });\n continue;\n }\n\n if (conflictResolution === \"remote\" && syncResult.conflictInfo) {\n const remoteConfig = {\n model: syncResult.conflictInfo.remoteConfigData.model,\n modelParameters: {\n temperature:\n syncResult.conflictInfo.remoteConfigData.temperature,\n max_tokens:\n syncResult.conflictInfo.remoteConfigData.max_tokens,\n },\n messages: [\n {\n role: \"system\" as const,\n content: syncResult.conflictInfo.remoteConfigData.prompt,\n },\n ...(syncResult.conflictInfo.remoteConfigData.messages ?? []),\n ],\n };\n\n const yamlContent = yaml.dump(remoteConfig, {\n lineWidth: -1,\n noRefs: true,\n sortKeys: false,\n });\n\n fs.writeFileSync(filePath, yamlContent);\n }\n\n pushSpinner.start();\n }\n\n if (syncResult.prompt) {\n lock.prompts[promptName] = {\n version: syncResult.prompt.version,\n versionId: syncResult.prompt.versionId,\n materialized: filePath,\n };\n } else if (syncResult.action === \"conflict\") {\n const remoteVersion = syncResult.conflictInfo?.remoteVersion ?? 0;\n if (conflictResolution === \"remote\") {\n lock.prompts[promptName] = {\n version: remoteVersion,\n versionId: \"remote_version\",\n materialized: filePath,\n };\n } else {\n const formattedConfig = PromptConverter.fromLocalToApiFormat(localConfig);\n const updatedPrompt = await promptsApiService.update(promptName, {\n ...formattedConfig,\n commitMessage: `Updated via CLI: synced from local file`\n });\n lock.prompts[promptName] = {\n version: updatedPrompt.version,\n versionId: updatedPrompt.versionId,\n materialized: filePath,\n };\n }\n }\n\n let actionText: string;\n if (syncResult.action === \"conflict\") {\n if (conflictResolution === \"remote\") {\n actionText = \"Pulled\";\n result.fetched.push({\n name: promptName,\n version: syncResult.conflictInfo?.remoteVersion ?? 0,\n versionSpec: \"latest\",\n });\n } else {\n actionText = \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: (syncResult.conflictInfo?.remoteVersion ?? 0) + 1,\n });\n }\n } else if (syncResult.action === \"up_to_date\") {\n actionText = \"Up-to-date\";\n result.unchanged.push(promptName);\n } else {\n const actionMap: Record<SyncAction, string> = {\n created: \"Created\",\n updated: \"Updated\",\n conflict: \"Conflict resolved\",\n up_to_date: \"Up to date\",\n };\n actionText = actionMap[syncResult.action as SyncAction] || \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: syncResult.prompt?.version ?? 0,\n });\n }\n\n pushSpinner.text = `${actionText} ${chalk.cyan(\n promptName\n )} ${chalk.gray(\n `(version ${\n syncResult.prompt?.version ??\n syncResult.conflictInfo?.remoteVersion ??\n \"unknown\"\n })`\n )} ${conflictResolution === \"remote\" ? \"to\" : \"from\"} ${chalk.gray(\n relativePath\n )}`;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n result.errors.push({ name: promptName, error: errorMessage });\n }\n }\n\n pushSpinner.stop();\n }\n\n // Check for orphan local prompt files and show helpful warnings\n const discoveredLocalFiles = FileManager.getLocalPromptFiles();\n const orphanFiles = discoveredLocalFiles.filter((filePath) => {\n const promptName = FileManager.promptNameFromPath(filePath);\n return !config.prompts[promptName];\n });\n\n if (orphanFiles.length > 0) {\n console.log(\n chalk.yellow(\n `\\n⚠ Found ${orphanFiles.length} orphan prompt file${\n orphanFiles.length > 1 ? \"s\" : \"\"\n }:`\n )\n );\n\n for (const filePath of orphanFiles) {\n const promptName = FileManager.promptNameFromPath(filePath);\n const relativePath = path.relative(process.cwd(), filePath);\n\n console.log(chalk.yellow(` ${relativePath}`));\n console.log(\n chalk.gray(\n ` Add to prompts.json: \"${promptName}\": \"file:${relativePath}\"`\n )\n );\n }\n\n console.log(\n chalk.gray(\n `\\nTip: Add these to prompts.json to include them in push operations.`\n )\n );\n }\n};\n\nconst printPushResults = ({\n result,\n duration,\n}: {\n result: SyncResult;\n duration: string;\n}): void => {\n if (result.pushed.length > 0) {\n for (const { name, version } of result.pushed) {\n const localPath = `./prompts/${name}.prompt.yaml`;\n console.log(\n chalk.green(\n `✓ Pushed ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} from ${chalk.gray(localPath)}`\n )\n );\n }\n }\n\n if (result.fetched.length > 0) {\n for (const { name, version } of result.fetched) {\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} (resolved conflict with remote)`\n )\n );\n }\n }\n\n if (result.errors.length > 0) {\n for (const { name, error } of result.errors) {\n console.log(chalk.red(`✗ Failed ${chalk.cyan(name)}: ${error}`));\n }\n }\n\n const totalActions = result.fetched.length + result.pushed.length;\n\n if (totalActions === 0 && result.errors.length === 0) {\n console.log(chalk.gray(`Pushed in ${duration}s, no changes`));\n } else {\n const summary = [];\n if (result.pushed.length > 0)\n summary.push(`${result.pushed.length} pushed`);\n if (result.fetched.length > 0)\n summary.push(`${result.fetched.length} pulled (conflict resolution)`);\n if (result.errors.length > 0)\n summary.push(`${result.errors.length} errors`);\n\n console.log(chalk.gray(`Pushed ${summary.join(\", \")} in ${duration}s`));\n }\n};\n\nexport const pushCommand = async (options?: { forceLocal?: boolean; forceRemote?: boolean }): Promise<void> => {\n console.log(\"⬆️ Pushing local prompts...\");\n\n const startTime = Date.now();\n\n try {\n checkApiKey();\n\n const promptsApiService = new PromptsApiService();\n\n await ensureProjectInitialized(false);\n\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n const result: SyncResult = {\n fetched: [],\n pushed: [],\n unchanged: [],\n cleaned: [],\n errors: [],\n };\n\n await pushPrompts({ config, lock, promptsApiService, result, forceResolution: options?.forceLocal ? \"local\" : options?.forceRemote ? \"remote\" : undefined });\n\n FileManager.savePromptsLock(lock);\n\n const duration = ((Date.now() - startTime) / 1000).toFixed(1);\n printPushResults({ result, duration });\n\n if (result.errors.length > 0) {\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`\n )\n );\n }\n process.exit(1);\n }\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkDB6OJGP4js = require('./chunk-DB6OJGP4.js');
|
|
4
4
|
|
|
5
5
|
// src/observability-sdk/processors/filterable-batch-span-processor.ts
|
|
6
6
|
|
|
@@ -72,4 +72,4 @@ var DataCapturePresets = {
|
|
|
72
72
|
|
|
73
73
|
|
|
74
74
|
exports.FilterableBatchSpanProcessor = FilterableBatchSpanProcessor; exports.DataCapturePresets = DataCapturePresets;
|
|
75
|
-
//# sourceMappingURL=chunk-
|
|
75
|
+
//# sourceMappingURL=chunk-ZZL6VZZU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-ZZL6VZZU.js","../src/observability-sdk/processors/filterable-batch-span-processor.ts","../src/observability-sdk/features/data-capture/presets.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACKA;AACE;AAAA,6DAGK;AAsCA,IAAM,6BAAA,EAAN,MAAA,QAA2C,iCAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASnE,WAAA,CAAY,QAAA,EAAwB,OAAA,EAAsC;AACxE,IAAA,KAAA,CAAM,QAAQ,CAAA;AACd,IAAA,IAAA,CAAK,SAAA,EAAW,OAAA;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOS,KAAA,CAAM,IAAA,EAA0B;AACvC,IAAA,IAAA,CAAA,MAAW,OAAA,GAAU,IAAA,CAAK,QAAA,EAAU;AAClC,MAAA,IAAI,WAAA;AAEJ,MAAA,GAAA,CAAI,MAAA,CAAO,UAAA,IAAc,WAAA,EAAa;AACpC,QAAA,YAAA,EAAc,IAAA,CAAK,IAAA;AAAA,MACrB,EAAA,KAAA,GAAA,CAAW,MAAA,CAAO,UAAA,IAAc,4BAAA,EAA8B;AAC5D,QAAA,YAAA,EAAc,IAAA,CAAK,oBAAA,CAAqB,IAAA;AAAA,MAC1C,EAAA,KAAO;AACL,QAAA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,WAAA,EAAa,MAAA,CAAO,UAAA;AAC1B,MAAA,MAAM,eAAA,EAAiB,MAAA,CAAO,cAAA;AAE9B,MAAA,OAAA,CAAQ,IAAA,EAAM;AAAA,QACZ,KAAA,CAAK,eAAA,IAAmB,cAAA,GAAiB,YAAA,IAAgB,UAAA,CAAA;AAAA,QACzD,KAAA,CAAK,eAAA,IAAmB,WAAA,GAAc,WAAA,CAAY,QAAA,CAAS,UAAU,CAAA,CAAA;AAAA,QACrE,KAAA,CAAK,eAAA,IAAmB,cAAA,GAAiB,WAAA,CAAY,UAAA,CAAW,UAAU,CAAA,CAAA;AAAA,QAC1E,KAAA,CAAK,eAAA,IAAmB,YAAA,GAAe,WAAA,CAAY,QAAA,CAAS,UAAU,CAAA,CAAA;AACpE,UAAA,MAAA;AAAA,QAEF,OAAA;AAAS,UAAA,KAAA;AAAA,MACX;AAAA,IACF;AAEA,IAAA,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA;AAAA,EAClB;AACF,CAAA;ADjDA;AACA;AE7CO,IAAM,mBAAA,EAAqB;AAAA;AAAA;AAAA;AAAA,EAIhC,WAAA,EAAa,KAAA;AAAA;AAAA;AAAA;AAAA,EAKb,YAAA,EAAc,MAAA;AAAA;AAAA;AAAA;AAAA,EAKd,UAAA,EAAY,OAAA;AAAA;AAAA;AAAA;AAAA,EAKZ,WAAA,EAAa;AACf,CAAA;AF4CA;AACA;AACE;AACA;AACF,qHAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-ZZL6VZZU.js","sourcesContent":[null,"/**\n * Filterable Batch Span Exporter for OpenTelemetry\n *\n * This module provides a BatchSpanProcessor subclass that allows filtering of spans before export\n * based on configurable rules. Spans matching any exclude rule are dropped and not exported.\n *\n * @module filterable-batch-span-exporter\n */\n\nimport {\n BatchSpanProcessor,\n type ReadableSpan,\n type SpanExporter,\n} from '@opentelemetry/sdk-trace-base';\n\n/**\n * A rule for excluding spans from export based on their name or instrumentation scope name.\n *\n * @property fieldName - The span field to match against ('span_name' or 'instrumentation_scope_name').\n * @property matchValue - The value to match against the field.\n * @property matchOperation - The operation to use for matching ('includes', 'exact_match', 'starts_with', 'ends_with').\n *\n * @example\n * const rule: SpanProcessingExcludeRule = {\n * fieldName: 'span_name',\n * matchValue: 'heartbeat',\n * matchOperation: 'exact_match',\n * };\n */\nexport interface SpanProcessingExcludeRule {\n fieldName: \"span_name\" | \"instrumentation_scope_name\";\n matchValue: string;\n matchOperation: \"includes\" | \"exact_match\" | \"starts_with\" | \"ends_with\";\n}\n\n/**\n * A BatchSpanProcessor that filters out spans matching any of the provided exclude rules before export.\n *\n * This is useful for dropping noisy or irrelevant spans (e.g., health checks, heartbeats) from being exported to your tracing backend.\n *\n * @example\n * import { FilterableBatchSpanProcessor } from './filterable-batch-span-exporter';\n * import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\n *\n * const exporter = new OTLPTraceExporter({ url: '...' });\n * const filters = [\n * { fieldName: 'span_name', matchValue: 'heartbeat', matchOperation: 'exact_match' },\n * { fieldName: 'instrumentation_scope_name', matchValue: 'internal', matchOperation: 'starts_with' },\n * ];\n * provider.addSpanProcessor(new FilterableBatchSpanProcessor(exporter, filters));\n */\nexport class FilterableBatchSpanProcessor extends BatchSpanProcessor {\n private readonly _filters: SpanProcessingExcludeRule[];\n\n /**\n * Create a new FilterableBatchSpanProcessor.\n *\n * @param exporter - The underlying SpanExporter to use for exporting spans.\n * @param filters - An array of rules for excluding spans from export.\n */\n constructor(exporter: SpanExporter, filters: SpanProcessingExcludeRule[]) {\n super(exporter);\n this._filters = filters;\n }\n\n /**\n * Called when a span ends. If the span matches any exclude rule, it is dropped and not exported.\n *\n * @param span - The ReadableSpan that has ended.\n */\n override onEnd(span: ReadableSpan): void {\n for (const filter of this._filters) {\n let sourceValue: string;\n\n if (filter.fieldName === \"span_name\") {\n sourceValue = span.name;\n } else if (filter.fieldName === \"instrumentation_scope_name\") {\n sourceValue = span.instrumentationScope.name;\n } else {\n continue;\n }\n\n const matchValue = filter.matchValue;\n const matchOperation = filter.matchOperation;\n\n switch (true) {\n case matchOperation === \"exact_match\" && sourceValue === matchValue:\n case matchOperation === \"includes\" && sourceValue.includes(matchValue):\n case matchOperation === \"starts_with\" && sourceValue.startsWith(matchValue):\n case matchOperation === \"ends_with\" && sourceValue.endsWith(matchValue):\n return;\n\n default: break;\n }\n }\n\n super.onEnd(span);\n }\n}\n","import { type DataCaptureMode } from \"./types\";\n\n/**\n * Predefined data capture configurations for common use cases.\n */\nexport const DataCapturePresets = {\n /**\n * Capture both input and output - useful for development and debugging.\n */\n CAPTURE_ALL: \"all\" as DataCaptureMode,\n\n /**\n * Capture nothing - useful for high-security environments.\n */\n CAPTURE_NONE: \"none\" as DataCaptureMode,\n\n /**\n * Capture only inputs - useful when you want to see what's being sent.\n */\n INPUT_ONLY: \"input\" as DataCaptureMode,\n\n /**\n * Capture only outputs - useful when you want to see responses.\n */\n OUTPUT_ONLY: \"output\" as DataCaptureMode,\n} as const;\n"]}
|