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,63 @@
|
|
|
1
|
+
import {
|
|
2
|
+
checkApiKey
|
|
3
|
+
} from "./chunk-DHJKJVY7.mjs";
|
|
4
|
+
import "./chunk-URTD2WOC.mjs";
|
|
5
|
+
|
|
6
|
+
// src/cli/commands/prompt/restore.ts
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
import ora from "ora";
|
|
9
|
+
var promptRestoreCommand = async (handle, versionId, options) => {
|
|
10
|
+
var _a, _b, _c;
|
|
11
|
+
checkApiKey();
|
|
12
|
+
const apiKey = (_a = process.env.LANGWATCH_API_KEY) != null ? _a : "";
|
|
13
|
+
const endpoint = (_b = process.env.LANGWATCH_ENDPOINT) != null ? _b : "https://app.langwatch.ai";
|
|
14
|
+
const spinner = ora(
|
|
15
|
+
`Restoring "${handle}" to version ${versionId}...`
|
|
16
|
+
).start();
|
|
17
|
+
try {
|
|
18
|
+
const response = await fetch(
|
|
19
|
+
`${endpoint}/api/prompts/${encodeURIComponent(handle)}/versions/${encodeURIComponent(versionId)}/restore`,
|
|
20
|
+
{
|
|
21
|
+
method: "POST",
|
|
22
|
+
headers: {
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
"X-Auth-Token": apiKey
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
const errorBody = await response.text();
|
|
30
|
+
spinner.fail(`Failed to restore version (${response.status})`);
|
|
31
|
+
console.error(chalk.red(`Error: ${errorBody}`));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const restored = await response.json();
|
|
35
|
+
spinner.succeed(
|
|
36
|
+
`Restored "${handle}" \u2014 new version v${restored.version} created`
|
|
37
|
+
);
|
|
38
|
+
if ((options == null ? void 0 : options.format) === "json") {
|
|
39
|
+
console.log(JSON.stringify(restored, null, 2));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
console.log();
|
|
43
|
+
console.log(
|
|
44
|
+
` ${chalk.gray("New version:")} ${chalk.cyan(`v${restored.version}`)}`
|
|
45
|
+
);
|
|
46
|
+
console.log(
|
|
47
|
+
` ${chalk.gray("Message:")} ${(_c = restored.commitMessage) != null ? _c : chalk.gray("\u2014")}`
|
|
48
|
+
);
|
|
49
|
+
console.log();
|
|
50
|
+
} catch (error) {
|
|
51
|
+
spinner.fail();
|
|
52
|
+
console.error(
|
|
53
|
+
chalk.red(
|
|
54
|
+
`Error: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
55
|
+
)
|
|
56
|
+
);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
export {
|
|
61
|
+
promptRestoreCommand
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=restore-5L5MLISA.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/prompt/restore.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { checkApiKey } from \"../../utils/apiKey\";\n\nexport const promptRestoreCommand = async (\n handle: string,\n versionId: string,\n options?: { format?: string }\n): Promise<void> => {\n checkApiKey();\n\n const apiKey = process.env.LANGWATCH_API_KEY ?? \"\";\n const endpoint =\n process.env.LANGWATCH_ENDPOINT ?? \"https://app.langwatch.ai\";\n\n const spinner = ora(\n `Restoring \"${handle}\" to version ${versionId}...`\n ).start();\n\n try {\n const response = await fetch(\n `${endpoint}/api/prompts/${encodeURIComponent(handle)}/versions/${encodeURIComponent(versionId)}/restore`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Auth-Token\": apiKey,\n },\n }\n );\n\n if (!response.ok) {\n const errorBody = await response.text();\n spinner.fail(`Failed to restore version (${response.status})`);\n console.error(chalk.red(`Error: ${errorBody}`));\n process.exit(1);\n }\n\n const restored = (await response.json()) as {\n id: string;\n version: number;\n commitMessage: string | null;\n };\n\n spinner.succeed(\n `Restored \"${handle}\" — new version v${restored.version} created`\n );\n\n if (options?.format === \"json\") {\n console.log(JSON.stringify(restored, null, 2));\n return;\n }\n\n console.log();\n console.log(\n ` ${chalk.gray(\"New version:\")} ${chalk.cyan(`v${restored.version}`)}`\n );\n console.log(\n ` ${chalk.gray(\"Message:\")} ${restored.commitMessage ?? chalk.gray(\"—\")}`\n );\n console.log();\n } catch (error) {\n spinner.fail();\n console.error(\n chalk.red(\n `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n )\n );\n process.exit(1);\n }\n};\n"],"mappings":";;;;;;AAAA,OAAO,WAAW;AAClB,OAAO,SAAS;AAGT,IAAM,uBAAuB,OAClC,QACA,WACA,YACkB;AARpB;AASE,cAAY;AAEZ,QAAM,UAAS,aAAQ,IAAI,sBAAZ,YAAiC;AAChD,QAAM,YACJ,aAAQ,IAAI,uBAAZ,YAAkC;AAEpC,QAAM,UAAU;AAAA,IACd,cAAc,MAAM,gBAAgB,SAAS;AAAA,EAC/C,EAAE,MAAM;AAER,MAAI;AACF,UAAM,WAAW,MAAM;AAAA,MACrB,GAAG,QAAQ,gBAAgB,mBAAmB,MAAM,CAAC,aAAa,mBAAmB,SAAS,CAAC;AAAA,MAC/F;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,YAAY,MAAM,SAAS,KAAK;AACtC,cAAQ,KAAK,8BAA8B,SAAS,MAAM,GAAG;AAC7D,cAAQ,MAAM,MAAM,IAAI,UAAU,SAAS,EAAE,CAAC;AAC9C,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,WAAY,MAAM,SAAS,KAAK;AAMtC,YAAQ;AAAA,MACN,aAAa,MAAM,yBAAoB,SAAS,OAAO;AAAA,IACzD;AAEA,SAAI,mCAAS,YAAW,QAAQ;AAC9B,cAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAC7C;AAAA,IACF;AAEA,YAAQ,IAAI;AACZ,YAAQ;AAAA,MACN,KAAK,MAAM,KAAK,cAAc,CAAC,IAAI,MAAM,KAAK,IAAI,SAAS,OAAO,EAAE,CAAC;AAAA,IACvE;AACA,YAAQ;AAAA,MACN,KAAK,MAAM,KAAK,UAAU,CAAC,SAAQ,cAAS,kBAAT,YAA0B,MAAM,KAAK,QAAG,CAAC;AAAA,IAC9E;AACA,YAAQ,IAAI;AAAA,EACd,SAAS,OAAO;AACd,YAAQ,KAAK;AACb,YAAQ;AAAA,MACN,MAAM;AAAA,QACJ,UAAU,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,MACpE;AAAA,IACF;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;","names":[]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
|
+
|
|
3
|
+
var _chunkF6E4XQQUjs = require('./chunk-F6E4XQQU.js');
|
|
4
|
+
require('./chunk-OHM7JUMR.js');
|
|
5
|
+
|
|
6
|
+
// src/cli/commands/prompt/restore.ts
|
|
7
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
8
|
+
var _ora = require('ora'); var _ora2 = _interopRequireDefault(_ora);
|
|
9
|
+
var promptRestoreCommand = async (handle, versionId, options) => {
|
|
10
|
+
var _a, _b, _c;
|
|
11
|
+
_chunkF6E4XQQUjs.checkApiKey.call(void 0, );
|
|
12
|
+
const apiKey = (_a = process.env.LANGWATCH_API_KEY) != null ? _a : "";
|
|
13
|
+
const endpoint = (_b = process.env.LANGWATCH_ENDPOINT) != null ? _b : "https://app.langwatch.ai";
|
|
14
|
+
const spinner = _ora2.default.call(void 0,
|
|
15
|
+
`Restoring "${handle}" to version ${versionId}...`
|
|
16
|
+
).start();
|
|
17
|
+
try {
|
|
18
|
+
const response = await fetch(
|
|
19
|
+
`${endpoint}/api/prompts/${encodeURIComponent(handle)}/versions/${encodeURIComponent(versionId)}/restore`,
|
|
20
|
+
{
|
|
21
|
+
method: "POST",
|
|
22
|
+
headers: {
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
"X-Auth-Token": apiKey
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
const errorBody = await response.text();
|
|
30
|
+
spinner.fail(`Failed to restore version (${response.status})`);
|
|
31
|
+
console.error(_chalk2.default.red(`Error: ${errorBody}`));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const restored = await response.json();
|
|
35
|
+
spinner.succeed(
|
|
36
|
+
`Restored "${handle}" \u2014 new version v${restored.version} created`
|
|
37
|
+
);
|
|
38
|
+
if ((options == null ? void 0 : options.format) === "json") {
|
|
39
|
+
console.log(JSON.stringify(restored, null, 2));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
console.log();
|
|
43
|
+
console.log(
|
|
44
|
+
` ${_chalk2.default.gray("New version:")} ${_chalk2.default.cyan(`v${restored.version}`)}`
|
|
45
|
+
);
|
|
46
|
+
console.log(
|
|
47
|
+
` ${_chalk2.default.gray("Message:")} ${(_c = restored.commitMessage) != null ? _c : _chalk2.default.gray("\u2014")}`
|
|
48
|
+
);
|
|
49
|
+
console.log();
|
|
50
|
+
} catch (error) {
|
|
51
|
+
spinner.fail();
|
|
52
|
+
console.error(
|
|
53
|
+
_chalk2.default.red(
|
|
54
|
+
`Error: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
55
|
+
)
|
|
56
|
+
);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
exports.promptRestoreCommand = promptRestoreCommand;
|
|
63
|
+
//# sourceMappingURL=restore-OXNQMRMJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/restore-OXNQMRMJ.js","../src/cli/commands/prompt/restore.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACLA,4EAAkB;AAClB,oEAAgB;AAGT,IAAM,qBAAA,EAAuB,MAAA,CAClC,MAAA,EACA,SAAA,EACA,OAAA,EAAA,GACkB;AARpB,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AASE,EAAA,0CAAA,CAAY;AAEZ,EAAA,MAAM,OAAA,EAAA,CAAS,GAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,iBAAA,EAAA,GAAZ,KAAA,EAAA,GAAA,EAAiC,EAAA;AAChD,EAAA,MAAM,SAAA,EAAA,CACJ,GAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,kBAAA,EAAA,GAAZ,KAAA,EAAA,GAAA,EAAkC,0BAAA;AAEpC,EAAA,MAAM,QAAA,EAAU,2BAAA;AAAA,IACd,CAAA,WAAA,EAAc,MAAM,CAAA,aAAA,EAAgB,SAAS,CAAA,GAAA;AAAA,EAC/C,CAAA,CAAE,KAAA,CAAM,CAAA;AAER,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,EAAW,MAAM,KAAA;AAAA,MACrB,CAAA,EAAA;AACA,MAAA;AAAA,QAAA;AACU,QAAA;AACC,UAAA;AACS,UAAA;AACA,QAAA;AAEpB,MAAA;AACF,IAAA;AAEA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AAEA,IAAA;AAMA,IAAA;AACE,MAAA;AACF,IAAA;AAEA,IAAA;AACE,MAAA;AACA,MAAA;AACF,IAAA;AAEA,IAAA;AACA,IAAA;AACE,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACF,IAAA;AACA,IAAA;AACF,EAAA;AACE,IAAA;AACA,IAAA;AACE,MAAA;AAAM,QAAA;AAEN,MAAA;AACF,IAAA;AACA,IAAA;AACF,EAAA;AACF;ADXO;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/restore-OXNQMRMJ.js","sourcesContent":[null,"import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { checkApiKey } from \"../../utils/apiKey\";\n\nexport const promptRestoreCommand = async (\n handle: string,\n versionId: string,\n options?: { format?: string }\n): Promise<void> => {\n checkApiKey();\n\n const apiKey = process.env.LANGWATCH_API_KEY ?? \"\";\n const endpoint =\n process.env.LANGWATCH_ENDPOINT ?? \"https://app.langwatch.ai\";\n\n const spinner = ora(\n `Restoring \"${handle}\" to version ${versionId}...`\n ).start();\n\n try {\n const response = await fetch(\n `${endpoint}/api/prompts/${encodeURIComponent(handle)}/versions/${encodeURIComponent(versionId)}/restore`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Auth-Token\": apiKey,\n },\n }\n );\n\n if (!response.ok) {\n const errorBody = await response.text();\n spinner.fail(`Failed to restore version (${response.status})`);\n console.error(chalk.red(`Error: ${errorBody}`));\n process.exit(1);\n }\n\n const restored = (await response.json()) as {\n id: string;\n version: number;\n commitMessage: string | null;\n };\n\n spinner.succeed(\n `Restored \"${handle}\" — new version v${restored.version} created`\n );\n\n if (options?.format === \"json\") {\n console.log(JSON.stringify(restored, null, 2));\n return;\n }\n\n console.log();\n console.log(\n ` ${chalk.gray(\"New version:\")} ${chalk.cyan(`v${restored.version}`)}`\n );\n console.log(\n ` ${chalk.gray(\"Message:\")} ${restored.commitMessage ?? chalk.gray(\"—\")}`\n );\n console.log();\n } catch (error) {\n spinner.fail();\n console.error(\n chalk.red(\n `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n )\n );\n process.exit(1);\n }\n};\n"]}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SuitesApiError,
|
|
3
|
+
SuitesApiService
|
|
4
|
+
} from "./chunk-NIW2SFZZ.mjs";
|
|
5
|
+
import {
|
|
6
|
+
checkApiKey
|
|
7
|
+
} from "./chunk-DHJKJVY7.mjs";
|
|
8
|
+
import "./chunk-QH3WUSKF.mjs";
|
|
9
|
+
import "./chunk-LN33ZL4Z.mjs";
|
|
10
|
+
import "./chunk-URTD2WOC.mjs";
|
|
11
|
+
|
|
12
|
+
// src/cli/commands/scenarios/run.ts
|
|
13
|
+
import chalk from "chalk";
|
|
14
|
+
import ora from "ora";
|
|
15
|
+
function parseTarget(targetStr) {
|
|
16
|
+
const colonIndex = targetStr.indexOf(":");
|
|
17
|
+
if (colonIndex === -1) {
|
|
18
|
+
console.error(chalk.red(`Error: Invalid target format "${targetStr}". Use <type>:<referenceId> (e.g., http:agent_abc123)`));
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const type = targetStr.slice(0, colonIndex);
|
|
22
|
+
const referenceId = targetStr.slice(colonIndex + 1);
|
|
23
|
+
if (!["prompt", "http", "code", "workflow"].includes(type)) {
|
|
24
|
+
console.error(chalk.red(`Error: Invalid target type "${type}". Must be one of: prompt, http, code, workflow`));
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
return { type, referenceId };
|
|
28
|
+
}
|
|
29
|
+
var runScenarioCommand = async (id, options) => {
|
|
30
|
+
var _a, _b, _c, _d, _e, _f;
|
|
31
|
+
checkApiKey();
|
|
32
|
+
if (!options.target) {
|
|
33
|
+
console.error(chalk.red("Error: --target is required. Specify what to run the scenario against."));
|
|
34
|
+
console.error(chalk.gray(" Example: langwatch scenario run <id> --target http:agent_abc123"));
|
|
35
|
+
console.error(chalk.gray(" Target types: http, code, workflow, prompt"));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
const target = parseTarget(options.target);
|
|
39
|
+
const suitesService = new SuitesApiService();
|
|
40
|
+
const spinner = ora(`Preparing scenario run for "${id}"...`).start();
|
|
41
|
+
try {
|
|
42
|
+
const suite = await suitesService.create({
|
|
43
|
+
name: `CLI run: scenario ${id}`,
|
|
44
|
+
description: `Ephemeral suite created by CLI for running scenario ${id}`,
|
|
45
|
+
scenarioIds: [id],
|
|
46
|
+
targets: [target],
|
|
47
|
+
repeatCount: 1,
|
|
48
|
+
labels: ["cli-ephemeral"]
|
|
49
|
+
});
|
|
50
|
+
spinner.text = `Running scenario against ${target.type}:${target.referenceId}...`;
|
|
51
|
+
const result = await suitesService.run(suite.id);
|
|
52
|
+
spinner.succeed(
|
|
53
|
+
`Scenario run scheduled: ${result.jobCount} job${result.jobCount !== 1 ? "s" : ""} (batch: ${result.batchRunId})`
|
|
54
|
+
);
|
|
55
|
+
if (options.format === "json") {
|
|
56
|
+
console.log(JSON.stringify(result, null, 2));
|
|
57
|
+
await suitesService.delete(suite.id).catch(() => void 0);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (!options.wait) {
|
|
61
|
+
console.log();
|
|
62
|
+
console.log(` ${chalk.gray("Batch Run ID:")} ${chalk.green(result.batchRunId)}`);
|
|
63
|
+
console.log(` ${chalk.gray("Suite ID:")} ${chalk.gray(suite.id)} ${chalk.gray("(ephemeral)")}`);
|
|
64
|
+
console.log();
|
|
65
|
+
console.log(
|
|
66
|
+
chalk.gray(`View results in the LangWatch dashboard under Simulations.`)
|
|
67
|
+
);
|
|
68
|
+
console.log(
|
|
69
|
+
chalk.gray(`Or re-run with ${chalk.cyan("--wait")} to poll for completion.`)
|
|
70
|
+
);
|
|
71
|
+
await suitesService.delete(suite.id).catch(() => void 0);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
console.log();
|
|
75
|
+
const pollSpinner = ora("Waiting for scenario run to complete...").start();
|
|
76
|
+
const apiKey = (_a = process.env.LANGWATCH_API_KEY) != null ? _a : "";
|
|
77
|
+
const endpoint = (_b = process.env.LANGWATCH_ENDPOINT) != null ? _b : "https://app.langwatch.ai";
|
|
78
|
+
let completed = false;
|
|
79
|
+
const startTime = Date.now();
|
|
80
|
+
const TIMEOUT_MS = 10 * 60 * 1e3;
|
|
81
|
+
while (!completed) {
|
|
82
|
+
if (Date.now() - startTime > TIMEOUT_MS) {
|
|
83
|
+
pollSpinner.fail("Scenario run timed out after 10 minutes");
|
|
84
|
+
console.log(
|
|
85
|
+
chalk.yellow(`Check results in the dashboard. Batch ID: ${result.batchRunId}`)
|
|
86
|
+
);
|
|
87
|
+
await suitesService.delete(suite.id).catch(() => void 0);
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
await new Promise((resolve) => setTimeout(resolve, 3e3));
|
|
91
|
+
try {
|
|
92
|
+
const statusResponse = await fetch(
|
|
93
|
+
`${endpoint}/api/scenario-events?batchRunId=${encodeURIComponent(result.batchRunId)}`,
|
|
94
|
+
{
|
|
95
|
+
method: "GET",
|
|
96
|
+
headers: { "X-Auth-Token": apiKey }
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
if (statusResponse.ok) {
|
|
100
|
+
const statusData = await statusResponse.json();
|
|
101
|
+
const total = (_c = statusData.totalCount) != null ? _c : result.jobCount;
|
|
102
|
+
const completedCount = (_d = statusData.completedCount) != null ? _d : 0;
|
|
103
|
+
const passed = (_e = statusData.passedCount) != null ? _e : 0;
|
|
104
|
+
const failed = (_f = statusData.failedCount) != null ? _f : 0;
|
|
105
|
+
pollSpinner.text = `Running... ${completedCount}/${total} completed (${passed} passed, ${failed} failed)`;
|
|
106
|
+
if (completedCount >= total && total > 0) {
|
|
107
|
+
completed = true;
|
|
108
|
+
if (failed > 0) {
|
|
109
|
+
pollSpinner.warn(
|
|
110
|
+
`Scenario run completed: ${passed}/${total} passed, ${chalk.red(`${failed} failed`)}`
|
|
111
|
+
);
|
|
112
|
+
} else {
|
|
113
|
+
pollSpinner.succeed(
|
|
114
|
+
`Scenario run completed: ${chalk.green(`${passed}/${total} passed`)}`
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
} catch (e) {
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
console.log();
|
|
123
|
+
console.log(` ${chalk.gray("Batch Run ID:")} ${chalk.green(result.batchRunId)}`);
|
|
124
|
+
console.log();
|
|
125
|
+
await suitesService.delete(suite.id).catch(() => void 0);
|
|
126
|
+
} catch (error) {
|
|
127
|
+
spinner.fail();
|
|
128
|
+
if (error instanceof SuitesApiError) {
|
|
129
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
130
|
+
} else {
|
|
131
|
+
console.error(
|
|
132
|
+
chalk.red(
|
|
133
|
+
`Error: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
134
|
+
)
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
export {
|
|
141
|
+
runScenarioCommand
|
|
142
|
+
};
|
|
143
|
+
//# sourceMappingURL=run-AIGCDUDF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/scenarios/run.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport {\n SuitesApiService,\n SuitesApiError,\n type SuiteTarget,\n} from \"@/client-sdk/services/suites\";\nimport { checkApiKey } from \"../../utils/apiKey\";\n\nfunction parseTarget(targetStr: string): SuiteTarget {\n const colonIndex = targetStr.indexOf(\":\");\n if (colonIndex === -1) {\n console.error(chalk.red(`Error: Invalid target format \"${targetStr}\". Use <type>:<referenceId> (e.g., http:agent_abc123)`));\n process.exit(1);\n }\n const type = targetStr.slice(0, colonIndex);\n const referenceId = targetStr.slice(colonIndex + 1);\n if (![\"prompt\", \"http\", \"code\", \"workflow\"].includes(type)) {\n console.error(chalk.red(`Error: Invalid target type \"${type}\". Must be one of: prompt, http, code, workflow`));\n process.exit(1);\n }\n return { type: type as SuiteTarget[\"type\"], referenceId };\n}\n\nexport const runScenarioCommand = async (\n id: string,\n options: { target: string; wait?: boolean; format?: string },\n): Promise<void> => {\n checkApiKey();\n\n if (!options.target) {\n console.error(chalk.red(\"Error: --target is required. Specify what to run the scenario against.\"));\n console.error(chalk.gray(\" Example: langwatch scenario run <id> --target http:agent_abc123\"));\n console.error(chalk.gray(\" Target types: http, code, workflow, prompt\"));\n process.exit(1);\n }\n\n const target = parseTarget(options.target);\n const suitesService = new SuitesApiService();\n\n // Create a temporary suite to execute this scenario\n const spinner = ora(`Preparing scenario run for \"${id}\"...`).start();\n\n try {\n // Create an ephemeral suite for this single scenario run\n const suite = await suitesService.create({\n name: `CLI run: scenario ${id}`,\n description: `Ephemeral suite created by CLI for running scenario ${id}`,\n scenarioIds: [id],\n targets: [target],\n repeatCount: 1,\n labels: [\"cli-ephemeral\"],\n });\n\n spinner.text = `Running scenario against ${target.type}:${target.referenceId}...`;\n\n const result = await suitesService.run(suite.id);\n\n spinner.succeed(\n `Scenario run scheduled: ${result.jobCount} job${result.jobCount !== 1 ? \"s\" : \"\"} (batch: ${result.batchRunId})`,\n );\n\n if (options.format === \"json\") {\n console.log(JSON.stringify(result, null, 2));\n await suitesService.delete(suite.id).catch(() => undefined);\n return;\n }\n\n if (!options.wait) {\n console.log();\n console.log(` ${chalk.gray(\"Batch Run ID:\")} ${chalk.green(result.batchRunId)}`);\n console.log(` ${chalk.gray(\"Suite ID:\")} ${chalk.gray(suite.id)} ${chalk.gray(\"(ephemeral)\")}`);\n console.log();\n console.log(\n chalk.gray(`View results in the LangWatch dashboard under Simulations.`),\n );\n console.log(\n chalk.gray(`Or re-run with ${chalk.cyan(\"--wait\")} to poll for completion.`),\n );\n\n await suitesService.delete(suite.id).catch(() => undefined);\n return;\n }\n\n // Poll for completion\n console.log();\n const pollSpinner = ora(\"Waiting for scenario run to complete...\").start();\n\n const apiKey = process.env.LANGWATCH_API_KEY ?? \"\";\n const endpoint = process.env.LANGWATCH_ENDPOINT ?? \"https://app.langwatch.ai\";\n\n let completed = false;\n const startTime = Date.now();\n const TIMEOUT_MS = 10 * 60 * 1000;\n\n while (!completed) {\n if (Date.now() - startTime > TIMEOUT_MS) {\n pollSpinner.fail(\"Scenario run timed out after 10 minutes\");\n console.log(\n chalk.yellow(`Check results in the dashboard. Batch ID: ${result.batchRunId}`),\n );\n await suitesService.delete(suite.id).catch(() => undefined);\n process.exit(1);\n }\n\n await new Promise((resolve) => setTimeout(resolve, 3000));\n\n try {\n const statusResponse = await fetch(\n `${endpoint}/api/scenario-events?batchRunId=${encodeURIComponent(result.batchRunId)}`,\n {\n method: \"GET\",\n headers: { \"X-Auth-Token\": apiKey },\n },\n );\n\n if (statusResponse.ok) {\n const statusData = await statusResponse.json() as {\n totalCount?: number;\n completedCount?: number;\n passedCount?: number;\n failedCount?: number;\n };\n\n const total = statusData.totalCount ?? result.jobCount;\n const completedCount = statusData.completedCount ?? 0;\n const passed = statusData.passedCount ?? 0;\n const failed = statusData.failedCount ?? 0;\n\n pollSpinner.text = `Running... ${completedCount}/${total} completed (${passed} passed, ${failed} failed)`;\n\n if (completedCount >= total && total > 0) {\n completed = true;\n if (failed > 0) {\n pollSpinner.warn(\n `Scenario run completed: ${passed}/${total} passed, ${chalk.red(`${failed} failed`)}`,\n );\n } else {\n pollSpinner.succeed(\n `Scenario run completed: ${chalk.green(`${passed}/${total} passed`)}`,\n );\n }\n }\n }\n } catch {\n // Polling error — continue waiting\n }\n }\n\n console.log();\n console.log(` ${chalk.gray(\"Batch Run ID:\")} ${chalk.green(result.batchRunId)}`);\n console.log();\n\n // Clean up ephemeral suite\n await suitesService.delete(suite.id).catch(() => undefined);\n } catch (error) {\n spinner.fail();\n if (error instanceof SuitesApiError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n ),\n );\n }\n process.exit(1);\n }\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkVMDYRBQ7js = require('./chunk-VMDYRBQ7.js');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkF6E4XQQUjs = require('./chunk-F6E4XQQU.js');
|
|
8
|
+
require('./chunk-2BJPLPLU.js');
|
|
9
|
+
require('./chunk-D2FHOR76.js');
|
|
10
|
+
require('./chunk-OHM7JUMR.js');
|
|
11
|
+
|
|
12
|
+
// src/cli/commands/scenarios/run.ts
|
|
13
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
14
|
+
var _ora = require('ora'); var _ora2 = _interopRequireDefault(_ora);
|
|
15
|
+
function parseTarget(targetStr) {
|
|
16
|
+
const colonIndex = targetStr.indexOf(":");
|
|
17
|
+
if (colonIndex === -1) {
|
|
18
|
+
console.error(_chalk2.default.red(`Error: Invalid target format "${targetStr}". Use <type>:<referenceId> (e.g., http:agent_abc123)`));
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const type = targetStr.slice(0, colonIndex);
|
|
22
|
+
const referenceId = targetStr.slice(colonIndex + 1);
|
|
23
|
+
if (!["prompt", "http", "code", "workflow"].includes(type)) {
|
|
24
|
+
console.error(_chalk2.default.red(`Error: Invalid target type "${type}". Must be one of: prompt, http, code, workflow`));
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
return { type, referenceId };
|
|
28
|
+
}
|
|
29
|
+
var runScenarioCommand = async (id, options) => {
|
|
30
|
+
var _a, _b, _c, _d, _e, _f;
|
|
31
|
+
_chunkF6E4XQQUjs.checkApiKey.call(void 0, );
|
|
32
|
+
if (!options.target) {
|
|
33
|
+
console.error(_chalk2.default.red("Error: --target is required. Specify what to run the scenario against."));
|
|
34
|
+
console.error(_chalk2.default.gray(" Example: langwatch scenario run <id> --target http:agent_abc123"));
|
|
35
|
+
console.error(_chalk2.default.gray(" Target types: http, code, workflow, prompt"));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
const target = parseTarget(options.target);
|
|
39
|
+
const suitesService = new (0, _chunkVMDYRBQ7js.SuitesApiService)();
|
|
40
|
+
const spinner = _ora2.default.call(void 0, `Preparing scenario run for "${id}"...`).start();
|
|
41
|
+
try {
|
|
42
|
+
const suite = await suitesService.create({
|
|
43
|
+
name: `CLI run: scenario ${id}`,
|
|
44
|
+
description: `Ephemeral suite created by CLI for running scenario ${id}`,
|
|
45
|
+
scenarioIds: [id],
|
|
46
|
+
targets: [target],
|
|
47
|
+
repeatCount: 1,
|
|
48
|
+
labels: ["cli-ephemeral"]
|
|
49
|
+
});
|
|
50
|
+
spinner.text = `Running scenario against ${target.type}:${target.referenceId}...`;
|
|
51
|
+
const result = await suitesService.run(suite.id);
|
|
52
|
+
spinner.succeed(
|
|
53
|
+
`Scenario run scheduled: ${result.jobCount} job${result.jobCount !== 1 ? "s" : ""} (batch: ${result.batchRunId})`
|
|
54
|
+
);
|
|
55
|
+
if (options.format === "json") {
|
|
56
|
+
console.log(JSON.stringify(result, null, 2));
|
|
57
|
+
await suitesService.delete(suite.id).catch(() => void 0);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (!options.wait) {
|
|
61
|
+
console.log();
|
|
62
|
+
console.log(` ${_chalk2.default.gray("Batch Run ID:")} ${_chalk2.default.green(result.batchRunId)}`);
|
|
63
|
+
console.log(` ${_chalk2.default.gray("Suite ID:")} ${_chalk2.default.gray(suite.id)} ${_chalk2.default.gray("(ephemeral)")}`);
|
|
64
|
+
console.log();
|
|
65
|
+
console.log(
|
|
66
|
+
_chalk2.default.gray(`View results in the LangWatch dashboard under Simulations.`)
|
|
67
|
+
);
|
|
68
|
+
console.log(
|
|
69
|
+
_chalk2.default.gray(`Or re-run with ${_chalk2.default.cyan("--wait")} to poll for completion.`)
|
|
70
|
+
);
|
|
71
|
+
await suitesService.delete(suite.id).catch(() => void 0);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
console.log();
|
|
75
|
+
const pollSpinner = _ora2.default.call(void 0, "Waiting for scenario run to complete...").start();
|
|
76
|
+
const apiKey = (_a = process.env.LANGWATCH_API_KEY) != null ? _a : "";
|
|
77
|
+
const endpoint = (_b = process.env.LANGWATCH_ENDPOINT) != null ? _b : "https://app.langwatch.ai";
|
|
78
|
+
let completed = false;
|
|
79
|
+
const startTime = Date.now();
|
|
80
|
+
const TIMEOUT_MS = 10 * 60 * 1e3;
|
|
81
|
+
while (!completed) {
|
|
82
|
+
if (Date.now() - startTime > TIMEOUT_MS) {
|
|
83
|
+
pollSpinner.fail("Scenario run timed out after 10 minutes");
|
|
84
|
+
console.log(
|
|
85
|
+
_chalk2.default.yellow(`Check results in the dashboard. Batch ID: ${result.batchRunId}`)
|
|
86
|
+
);
|
|
87
|
+
await suitesService.delete(suite.id).catch(() => void 0);
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
await new Promise((resolve) => setTimeout(resolve, 3e3));
|
|
91
|
+
try {
|
|
92
|
+
const statusResponse = await fetch(
|
|
93
|
+
`${endpoint}/api/scenario-events?batchRunId=${encodeURIComponent(result.batchRunId)}`,
|
|
94
|
+
{
|
|
95
|
+
method: "GET",
|
|
96
|
+
headers: { "X-Auth-Token": apiKey }
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
if (statusResponse.ok) {
|
|
100
|
+
const statusData = await statusResponse.json();
|
|
101
|
+
const total = (_c = statusData.totalCount) != null ? _c : result.jobCount;
|
|
102
|
+
const completedCount = (_d = statusData.completedCount) != null ? _d : 0;
|
|
103
|
+
const passed = (_e = statusData.passedCount) != null ? _e : 0;
|
|
104
|
+
const failed = (_f = statusData.failedCount) != null ? _f : 0;
|
|
105
|
+
pollSpinner.text = `Running... ${completedCount}/${total} completed (${passed} passed, ${failed} failed)`;
|
|
106
|
+
if (completedCount >= total && total > 0) {
|
|
107
|
+
completed = true;
|
|
108
|
+
if (failed > 0) {
|
|
109
|
+
pollSpinner.warn(
|
|
110
|
+
`Scenario run completed: ${passed}/${total} passed, ${_chalk2.default.red(`${failed} failed`)}`
|
|
111
|
+
);
|
|
112
|
+
} else {
|
|
113
|
+
pollSpinner.succeed(
|
|
114
|
+
`Scenario run completed: ${_chalk2.default.green(`${passed}/${total} passed`)}`
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
} catch (e) {
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
console.log();
|
|
123
|
+
console.log(` ${_chalk2.default.gray("Batch Run ID:")} ${_chalk2.default.green(result.batchRunId)}`);
|
|
124
|
+
console.log();
|
|
125
|
+
await suitesService.delete(suite.id).catch(() => void 0);
|
|
126
|
+
} catch (error) {
|
|
127
|
+
spinner.fail();
|
|
128
|
+
if (error instanceof _chunkVMDYRBQ7js.SuitesApiError) {
|
|
129
|
+
console.error(_chalk2.default.red(`Error: ${error.message}`));
|
|
130
|
+
} else {
|
|
131
|
+
console.error(
|
|
132
|
+
_chalk2.default.red(
|
|
133
|
+
`Error: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
134
|
+
)
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
exports.runScenarioCommand = runScenarioCommand;
|
|
143
|
+
//# sourceMappingURL=run-CKZ6VNKK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/run-CKZ6VNKK.js","../src/cli/commands/scenarios/run.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/run-CKZ6VNKK.js","sourcesContent":[null,"import chalk from \"chalk\";\nimport ora from \"ora\";\nimport {\n SuitesApiService,\n SuitesApiError,\n type SuiteTarget,\n} from \"@/client-sdk/services/suites\";\nimport { checkApiKey } from \"../../utils/apiKey\";\n\nfunction parseTarget(targetStr: string): SuiteTarget {\n const colonIndex = targetStr.indexOf(\":\");\n if (colonIndex === -1) {\n console.error(chalk.red(`Error: Invalid target format \"${targetStr}\". Use <type>:<referenceId> (e.g., http:agent_abc123)`));\n process.exit(1);\n }\n const type = targetStr.slice(0, colonIndex);\n const referenceId = targetStr.slice(colonIndex + 1);\n if (![\"prompt\", \"http\", \"code\", \"workflow\"].includes(type)) {\n console.error(chalk.red(`Error: Invalid target type \"${type}\". Must be one of: prompt, http, code, workflow`));\n process.exit(1);\n }\n return { type: type as SuiteTarget[\"type\"], referenceId };\n}\n\nexport const runScenarioCommand = async (\n id: string,\n options: { target: string; wait?: boolean; format?: string },\n): Promise<void> => {\n checkApiKey();\n\n if (!options.target) {\n console.error(chalk.red(\"Error: --target is required. Specify what to run the scenario against.\"));\n console.error(chalk.gray(\" Example: langwatch scenario run <id> --target http:agent_abc123\"));\n console.error(chalk.gray(\" Target types: http, code, workflow, prompt\"));\n process.exit(1);\n }\n\n const target = parseTarget(options.target);\n const suitesService = new SuitesApiService();\n\n // Create a temporary suite to execute this scenario\n const spinner = ora(`Preparing scenario run for \"${id}\"...`).start();\n\n try {\n // Create an ephemeral suite for this single scenario run\n const suite = await suitesService.create({\n name: `CLI run: scenario ${id}`,\n description: `Ephemeral suite created by CLI for running scenario ${id}`,\n scenarioIds: [id],\n targets: [target],\n repeatCount: 1,\n labels: [\"cli-ephemeral\"],\n });\n\n spinner.text = `Running scenario against ${target.type}:${target.referenceId}...`;\n\n const result = await suitesService.run(suite.id);\n\n spinner.succeed(\n `Scenario run scheduled: ${result.jobCount} job${result.jobCount !== 1 ? \"s\" : \"\"} (batch: ${result.batchRunId})`,\n );\n\n if (options.format === \"json\") {\n console.log(JSON.stringify(result, null, 2));\n await suitesService.delete(suite.id).catch(() => undefined);\n return;\n }\n\n if (!options.wait) {\n console.log();\n console.log(` ${chalk.gray(\"Batch Run ID:\")} ${chalk.green(result.batchRunId)}`);\n console.log(` ${chalk.gray(\"Suite ID:\")} ${chalk.gray(suite.id)} ${chalk.gray(\"(ephemeral)\")}`);\n console.log();\n console.log(\n chalk.gray(`View results in the LangWatch dashboard under Simulations.`),\n );\n console.log(\n chalk.gray(`Or re-run with ${chalk.cyan(\"--wait\")} to poll for completion.`),\n );\n\n await suitesService.delete(suite.id).catch(() => undefined);\n return;\n }\n\n // Poll for completion\n console.log();\n const pollSpinner = ora(\"Waiting for scenario run to complete...\").start();\n\n const apiKey = process.env.LANGWATCH_API_KEY ?? \"\";\n const endpoint = process.env.LANGWATCH_ENDPOINT ?? \"https://app.langwatch.ai\";\n\n let completed = false;\n const startTime = Date.now();\n const TIMEOUT_MS = 10 * 60 * 1000;\n\n while (!completed) {\n if (Date.now() - startTime > TIMEOUT_MS) {\n pollSpinner.fail(\"Scenario run timed out after 10 minutes\");\n console.log(\n chalk.yellow(`Check results in the dashboard. Batch ID: ${result.batchRunId}`),\n );\n await suitesService.delete(suite.id).catch(() => undefined);\n process.exit(1);\n }\n\n await new Promise((resolve) => setTimeout(resolve, 3000));\n\n try {\n const statusResponse = await fetch(\n `${endpoint}/api/scenario-events?batchRunId=${encodeURIComponent(result.batchRunId)}`,\n {\n method: \"GET\",\n headers: { \"X-Auth-Token\": apiKey },\n },\n );\n\n if (statusResponse.ok) {\n const statusData = await statusResponse.json() as {\n totalCount?: number;\n completedCount?: number;\n passedCount?: number;\n failedCount?: number;\n };\n\n const total = statusData.totalCount ?? result.jobCount;\n const completedCount = statusData.completedCount ?? 0;\n const passed = statusData.passedCount ?? 0;\n const failed = statusData.failedCount ?? 0;\n\n pollSpinner.text = `Running... ${completedCount}/${total} completed (${passed} passed, ${failed} failed)`;\n\n if (completedCount >= total && total > 0) {\n completed = true;\n if (failed > 0) {\n pollSpinner.warn(\n `Scenario run completed: ${passed}/${total} passed, ${chalk.red(`${failed} failed`)}`,\n );\n } else {\n pollSpinner.succeed(\n `Scenario run completed: ${chalk.green(`${passed}/${total} passed`)}`,\n );\n }\n }\n }\n } catch {\n // Polling error — continue waiting\n }\n }\n\n console.log();\n console.log(` ${chalk.gray(\"Batch Run ID:\")} ${chalk.green(result.batchRunId)}`);\n console.log();\n\n // Clean up ephemeral suite\n await suitesService.delete(suite.id).catch(() => undefined);\n } catch (error) {\n spinner.fail();\n if (error instanceof SuitesApiError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n ),\n );\n }\n process.exit(1);\n }\n};\n"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import {
|
|
2
|
+
checkApiKey
|
|
3
|
+
} from "./chunk-DHJKJVY7.mjs";
|
|
4
|
+
import "./chunk-URTD2WOC.mjs";
|
|
5
|
+
|
|
6
|
+
// src/cli/commands/workflows/run.ts
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
import ora from "ora";
|
|
9
|
+
var runWorkflowCommand = async (id, options) => {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
checkApiKey();
|
|
12
|
+
const spinner = ora(`Running workflow "${id}"...`).start();
|
|
13
|
+
try {
|
|
14
|
+
let input = {};
|
|
15
|
+
if (options.input) {
|
|
16
|
+
input = JSON.parse(options.input);
|
|
17
|
+
}
|
|
18
|
+
const apiKey = (_a = process.env.LANGWATCH_API_KEY) != null ? _a : "";
|
|
19
|
+
const endpoint = (_b = process.env.LANGWATCH_ENDPOINT) != null ? _b : "https://app.langwatch.ai";
|
|
20
|
+
const response = await fetch(`${endpoint}/api/workflows/${encodeURIComponent(id)}/run`, {
|
|
21
|
+
method: "POST",
|
|
22
|
+
headers: {
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
"X-Auth-Token": apiKey
|
|
25
|
+
},
|
|
26
|
+
body: JSON.stringify(input)
|
|
27
|
+
});
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
const errorBody = await response.text();
|
|
30
|
+
spinner.fail(`Workflow execution failed (${response.status})`);
|
|
31
|
+
console.error(chalk.red(`Error: ${errorBody}`));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const result = await response.json();
|
|
35
|
+
spinner.succeed(`Workflow "${id}" executed successfully`);
|
|
36
|
+
if (options.format === "json") {
|
|
37
|
+
console.log(JSON.stringify(result, null, 2));
|
|
38
|
+
} else {
|
|
39
|
+
console.log();
|
|
40
|
+
if (result.output !== void 0) {
|
|
41
|
+
console.log(chalk.bold(" Output:"));
|
|
42
|
+
const output = typeof result.output === "string" ? result.output : JSON.stringify(result.output, null, 2);
|
|
43
|
+
console.log(` ${output.split("\n").join("\n ")}`);
|
|
44
|
+
} else {
|
|
45
|
+
console.log(chalk.bold(" Result:"));
|
|
46
|
+
console.log(` ${JSON.stringify(result, null, 2).split("\n").join("\n ")}`);
|
|
47
|
+
}
|
|
48
|
+
console.log();
|
|
49
|
+
}
|
|
50
|
+
} catch (error) {
|
|
51
|
+
spinner.fail();
|
|
52
|
+
if (error instanceof SyntaxError) {
|
|
53
|
+
console.error(chalk.red("Error: --input must be valid JSON"));
|
|
54
|
+
} else {
|
|
55
|
+
console.error(
|
|
56
|
+
chalk.red(
|
|
57
|
+
`Error running workflow: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
58
|
+
)
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
export {
|
|
65
|
+
runWorkflowCommand
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=run-FE4QMJO5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/workflows/run.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { checkApiKey } from \"../../utils/apiKey\";\n\nexport const runWorkflowCommand = async (\n id: string,\n options: { input?: string; format?: string },\n): Promise<void> => {\n checkApiKey();\n\n const spinner = ora(`Running workflow \"${id}\"...`).start();\n\n try {\n let input: Record<string, unknown> = {};\n if (options.input) {\n input = JSON.parse(options.input) as Record<string, unknown>;\n }\n\n // Workflow run API is on the pages API, not the Hono app API\n const apiKey = process.env.LANGWATCH_API_KEY ?? \"\";\n const endpoint = process.env.LANGWATCH_ENDPOINT ?? \"https://app.langwatch.ai\";\n\n const response = await fetch(`${endpoint}/api/workflows/${encodeURIComponent(id)}/run`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Auth-Token\": apiKey,\n },\n body: JSON.stringify(input),\n });\n\n if (!response.ok) {\n const errorBody = await response.text();\n spinner.fail(`Workflow execution failed (${response.status})`);\n console.error(chalk.red(`Error: ${errorBody}`));\n process.exit(1);\n }\n\n const result = await response.json() as Record<string, unknown>;\n\n spinner.succeed(`Workflow \"${id}\" executed successfully`);\n\n if (options.format === \"json\") {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log();\n if (result.output !== undefined) {\n console.log(chalk.bold(\" Output:\"));\n const output = typeof result.output === \"string\"\n ? result.output\n : JSON.stringify(result.output, null, 2);\n console.log(` ${output.split(\"\\n\").join(\"\\n \")}`);\n } else {\n console.log(chalk.bold(\" Result:\"));\n console.log(` ${JSON.stringify(result, null, 2).split(\"\\n\").join(\"\\n \")}`);\n }\n console.log();\n }\n } catch (error) {\n spinner.fail();\n if (error instanceof SyntaxError) {\n console.error(chalk.red(\"Error: --input must be valid JSON\"));\n } else {\n console.error(\n chalk.red(\n `Error running workflow: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n ),\n );\n }\n process.exit(1);\n }\n};\n"],"mappings":";;;;;;AAAA,OAAO,WAAW;AAClB,OAAO,SAAS;AAGT,IAAM,qBAAqB,OAChC,IACA,YACkB;AAPpB;AAQE,cAAY;AAEZ,QAAM,UAAU,IAAI,qBAAqB,EAAE,MAAM,EAAE,MAAM;AAEzD,MAAI;AACF,QAAI,QAAiC,CAAC;AACtC,QAAI,QAAQ,OAAO;AACjB,cAAQ,KAAK,MAAM,QAAQ,KAAK;AAAA,IAClC;AAGA,UAAM,UAAS,aAAQ,IAAI,sBAAZ,YAAiC;AAChD,UAAM,YAAW,aAAQ,IAAI,uBAAZ,YAAkC;AAEnD,UAAM,WAAW,MAAM,MAAM,GAAG,QAAQ,kBAAkB,mBAAmB,EAAE,CAAC,QAAQ;AAAA,MACtF,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,KAAK,UAAU,KAAK;AAAA,IAC5B,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,YAAY,MAAM,SAAS,KAAK;AACtC,cAAQ,KAAK,8BAA8B,SAAS,MAAM,GAAG;AAC7D,cAAQ,MAAM,MAAM,IAAI,UAAU,SAAS,EAAE,CAAC;AAC9C,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,SAAS,MAAM,SAAS,KAAK;AAEnC,YAAQ,QAAQ,aAAa,EAAE,yBAAyB;AAExD,QAAI,QAAQ,WAAW,QAAQ;AAC7B,cAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,IAC7C,OAAO;AACL,cAAQ,IAAI;AACZ,UAAI,OAAO,WAAW,QAAW;AAC/B,gBAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AACnC,cAAM,SAAS,OAAO,OAAO,WAAW,WACpC,OAAO,SACP,KAAK,UAAU,OAAO,QAAQ,MAAM,CAAC;AACzC,gBAAQ,IAAI,OAAO,OAAO,MAAM,IAAI,EAAE,KAAK,QAAQ,CAAC,EAAE;AAAA,MACxD,OAAO;AACL,gBAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AACnC,gBAAQ,IAAI,OAAO,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,KAAK,QAAQ,CAAC,EAAE;AAAA,MACjF;AACA,cAAQ,IAAI;AAAA,IACd;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,KAAK;AACb,QAAI,iBAAiB,aAAa;AAChC,cAAQ,MAAM,MAAM,IAAI,mCAAmC,CAAC;AAAA,IAC9D,OAAO;AACL,cAAQ;AAAA,QACN,MAAM;AAAA,UACJ,2BAA2B,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,QACrF;AAAA,MACF;AAAA,IACF;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;","names":[]}
|