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,85 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createLangWatchApiClient
|
|
3
|
+
} from "./chunk-QH3WUSKF.mjs";
|
|
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 : 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 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
|
+
export {
|
|
82
|
+
SuitesApiError,
|
|
83
|
+
SuitesApiService
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=chunk-NIW2SFZZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client-sdk/services/suites/suites-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 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"],"mappings":";;;;;AA2BO,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACxC,YACE,SACgB,WACA,eAChB;AACA,UAAM,OAAO;AAHG;AACA;AAGhB,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,mBAAN,MAAuB;AAAA,EAG5B,YAAY,QAAqD;AAzCnE;AA0CI,SAAK,aAAY,sCAAQ,uBAAR,YAA8B,yBAAyB;AAAA,EAC1E;AAAA,EAEQ,eAAe,WAAmB,OAAuB;AA7CnE;AA8CI,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,SAAmC;AACvC,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,aAAa;AAC9D,QAAI,MAAO,MAAK,eAAe,eAAe,KAAK;AACnD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,IAAoC;AAC5C,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,oBAAoB;AAAA,MACnE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,IACzB,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,cAAc,EAAE,KAAK,KAAK;AACzD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,QAAiD;AAC5D,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,KAAK,eAAe;AAAA,MAC/D,MAAM;AAAA,IACR,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,gBAAgB,KAAK;AACpD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,IAAY,QAAiD;AACxE,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,MAAM,oBAAoB;AAAA,MACrE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,MACvB,MAAM;AAAA,IACR,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,iBAAiB,EAAE,KAAK,KAAK;AAC5D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAU,IAAoC;AAClD,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,KAAK,8BAA8B;AAAA,MAC9E,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,IACzB,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,oBAAoB,EAAE,KAAK,KAAK;AAC/D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,IAAY,gBAAkD;AACtE,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,KAAK,wBAAwB;AAAA,MACxE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,MACvB,MAAM;AAAA,QACJ,gBAAgB,0CAAkB,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AAAA,MAC5F;AAAA,IACF,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,cAAc,EAAE,KAAK,KAAK;AACzD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,IAAwD;AACnE,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,OAAO,oBAAoB;AAAA,MACtE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,IACzB,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,iBAAiB,EAAE,KAAK,KAAK;AAC5D,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createLangWatchApiClient
|
|
3
|
+
} from "./chunk-QH3WUSKF.mjs";
|
|
4
|
+
|
|
5
|
+
// src/client-sdk/services/dashboards/dashboards-api.service.ts
|
|
6
|
+
var DashboardsApiError = class extends Error {
|
|
7
|
+
constructor(message, operation, originalError) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.operation = operation;
|
|
10
|
+
this.originalError = originalError;
|
|
11
|
+
this.name = "DashboardsApiError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var DashboardsApiService = class {
|
|
15
|
+
constructor(config) {
|
|
16
|
+
var _a;
|
|
17
|
+
this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : 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 DashboardsApiError(
|
|
23
|
+
`Failed to ${operation}: ${errorMessage}`,
|
|
24
|
+
operation,
|
|
25
|
+
error
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
async list() {
|
|
29
|
+
const { data, error } = await this.apiClient.GET("/api/dashboards");
|
|
30
|
+
if (error) this.handleApiError("list dashboards", error);
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
async get(id) {
|
|
34
|
+
const { data, error } = await this.apiClient.GET("/api/dashboards/{id}", {
|
|
35
|
+
params: { path: { id } }
|
|
36
|
+
});
|
|
37
|
+
if (error) this.handleApiError(`get dashboard "${id}"`, error);
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
40
|
+
async create(params) {
|
|
41
|
+
const { data, error } = await this.apiClient.POST("/api/dashboards", {
|
|
42
|
+
body: params
|
|
43
|
+
});
|
|
44
|
+
if (error) this.handleApiError("create dashboard", error);
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
async rename(id, params) {
|
|
48
|
+
const { data, error } = await this.apiClient.PATCH("/api/dashboards/{id}", {
|
|
49
|
+
params: { path: { id } },
|
|
50
|
+
body: params
|
|
51
|
+
});
|
|
52
|
+
if (error) this.handleApiError(`rename dashboard "${id}"`, error);
|
|
53
|
+
return data;
|
|
54
|
+
}
|
|
55
|
+
async delete(id) {
|
|
56
|
+
const { data, error } = await this.apiClient.DELETE("/api/dashboards/{id}", {
|
|
57
|
+
params: { path: { id } }
|
|
58
|
+
});
|
|
59
|
+
if (error) this.handleApiError(`delete dashboard "${id}"`, error);
|
|
60
|
+
return data;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export {
|
|
65
|
+
DashboardsApiError,
|
|
66
|
+
DashboardsApiService
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=chunk-NMACMKQN.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client-sdk/services/dashboards/dashboards-api.service.ts"],"sourcesContent":["import {\n createLangWatchApiClient,\n type LangwatchApiClient,\n} from \"@/internal/api/client\";\nimport { type InternalConfig } from \"@/client-sdk/types\";\n\nexport interface DashboardSummary {\n id: string;\n name: string;\n order: number;\n graphCount: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface DashboardDetail {\n id: string;\n name: string;\n order: number;\n graphs: unknown[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport class DashboardsApiError extends Error {\n constructor(\n message: string,\n public readonly operation: string,\n public readonly originalError?: unknown,\n ) {\n super(message);\n this.name = \"DashboardsApiError\";\n }\n}\n\nexport class DashboardsApiService {\n private readonly apiClient: LangwatchApiClient;\n\n constructor(config?: Pick<InternalConfig, \"langwatchApiClient\">) {\n this.apiClient = config?.langwatchApiClient ?? createLangWatchApiClient();\n }\n\n private handleApiError(operation: string, error: unknown): never {\n const errorMessage =\n typeof error === \"string\"\n ? error\n : error != null &&\n typeof error === \"object\" &&\n \"error\" in error &&\n error.error != null\n ? typeof error.error === \"string\"\n ? error.error\n : (error.error as { message?: string }).message ??\n JSON.stringify(error.error)\n : error instanceof Error\n ? error.message\n : \"Unknown error occurred\";\n\n throw new DashboardsApiError(\n `Failed to ${operation}: ${errorMessage}`,\n operation,\n error,\n );\n }\n\n async list(): Promise<{ data: DashboardSummary[] }> {\n const { data, error } = await this.apiClient.GET(\"/api/dashboards\");\n if (error) this.handleApiError(\"list dashboards\", error);\n return data as unknown as { data: DashboardSummary[] };\n }\n\n async get(id: string): Promise<DashboardDetail> {\n const { data, error } = await this.apiClient.GET(\"/api/dashboards/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`get dashboard \"${id}\"`, error);\n return data as unknown as DashboardDetail;\n }\n\n async create(params: { name: string }): Promise<DashboardDetail> {\n const { data, error } = await this.apiClient.POST(\"/api/dashboards\", {\n body: params,\n });\n if (error) this.handleApiError(\"create dashboard\", error);\n return data as unknown as DashboardDetail;\n }\n\n async rename(id: string, params: { name: string }): Promise<DashboardDetail> {\n const { data, error } = await this.apiClient.PATCH(\"/api/dashboards/{id}\", {\n params: { path: { id } },\n body: params,\n });\n if (error) this.handleApiError(`rename dashboard \"${id}\"`, error);\n return data as unknown as DashboardDetail;\n }\n\n async delete(id: string): Promise<{ id: string; name: string }> {\n const { data, error } = await this.apiClient.DELETE(\"/api/dashboards/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`delete dashboard \"${id}\"`, error);\n return data as unknown as { id: string; name: string };\n }\n}\n"],"mappings":";;;;;AAwBO,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC5C,YACE,SACgB,WACA,eAChB;AACA,UAAM,OAAO;AAHG;AACA;AAGhB,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,uBAAN,MAA2B;AAAA,EAGhC,YAAY,QAAqD;AAtCnE;AAuCI,SAAK,aAAY,sCAAQ,uBAAR,YAA8B,yBAAyB;AAAA,EAC1E;AAAA,EAEQ,eAAe,WAAmB,OAAuB;AA1CnE;AA2CI,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,OAA8C;AAClD,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,iBAAiB;AAClE,QAAI,MAAO,MAAK,eAAe,mBAAmB,KAAK;AACvD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,IAAsC;AAC9C,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,wBAAwB;AAAA,MACvE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,IACzB,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,kBAAkB,EAAE,KAAK,KAAK;AAC7D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,QAAoD;AAC/D,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,KAAK,mBAAmB;AAAA,MACnE,MAAM;AAAA,IACR,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,oBAAoB,KAAK;AACxD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,IAAY,QAAoD;AAC3E,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,MAAM,wBAAwB;AAAA,MACzE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,MACvB,MAAM;AAAA,IACR,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,qBAAqB,EAAE,KAAK,KAAK;AAChE,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,IAAmD;AAC9D,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,OAAO,wBAAwB;AAAA,MAC1E,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,IACzB,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,qBAAqB,EAAE,KAAK,KAAK;AAChE,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkDB6OJGP4js = require('./chunk-DB6OJGP4.js');
|
|
4
|
+
|
|
5
|
+
// src/observability-sdk/features/data-capture/utils.ts
|
|
6
|
+
function validateDataCaptureMode(mode) {
|
|
7
|
+
return ["none", "input", "output", "all"].includes(mode);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// src/observability-sdk/config.ts
|
|
11
|
+
var observabilitySdkConfig = null;
|
|
12
|
+
function initializeObservabilitySdkConfig(config) {
|
|
13
|
+
observabilitySdkConfig = config;
|
|
14
|
+
}
|
|
15
|
+
function getObservabilitySdkConfig(options) {
|
|
16
|
+
if (!observabilitySdkConfig) {
|
|
17
|
+
const message = "[LangWatch Observability SDK] Please call setupObservability() before using the Observability SDK";
|
|
18
|
+
if ((options == null ? void 0 : options.throwOnUninitialized) || process.env.NODE_ENV === "development") {
|
|
19
|
+
throw new Error(message);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
logger: new (0, _chunkDB6OJGP4js.NoOpLogger)()
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return observabilitySdkConfig;
|
|
26
|
+
}
|
|
27
|
+
function getObservabilitySdkLogger() {
|
|
28
|
+
return getObservabilitySdkConfig().logger;
|
|
29
|
+
}
|
|
30
|
+
function getDataCaptureMode() {
|
|
31
|
+
const config = getObservabilitySdkConfig();
|
|
32
|
+
if (!config.dataCapture) {
|
|
33
|
+
return "all";
|
|
34
|
+
}
|
|
35
|
+
if (typeof config.dataCapture === "string") {
|
|
36
|
+
const validModes = ["none", "input", "output", "all"];
|
|
37
|
+
if (validModes.includes(config.dataCapture)) {
|
|
38
|
+
return config.dataCapture;
|
|
39
|
+
}
|
|
40
|
+
getObservabilitySdkLogger().warn(
|
|
41
|
+
`Invalid data capture mode: ${config.dataCapture}. Using default: "all"`
|
|
42
|
+
);
|
|
43
|
+
return "all";
|
|
44
|
+
}
|
|
45
|
+
if (typeof config.dataCapture === "object" && config.dataCapture.mode && validateDataCaptureMode(config.dataCapture.mode)) {
|
|
46
|
+
return config.dataCapture.mode;
|
|
47
|
+
}
|
|
48
|
+
return "all";
|
|
49
|
+
}
|
|
50
|
+
function shouldCaptureInput() {
|
|
51
|
+
const mode = getDataCaptureMode();
|
|
52
|
+
return mode === "input" || mode === "all";
|
|
53
|
+
}
|
|
54
|
+
function shouldCaptureOutput() {
|
|
55
|
+
const mode = getDataCaptureMode();
|
|
56
|
+
return mode === "output" || mode === "all";
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
exports.initializeObservabilitySdkConfig = initializeObservabilitySdkConfig; exports.getDataCaptureMode = getDataCaptureMode; exports.shouldCaptureInput = shouldCaptureInput; exports.shouldCaptureOutput = shouldCaptureOutput;
|
|
65
|
+
//# sourceMappingURL=chunk-OAAMDWSK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-OAAMDWSK.js","../src/observability-sdk/features/data-capture/utils.ts","../src/observability-sdk/config.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACCO,SAAS,uBAAA,CAAwB,IAAA,EAAgC;AACtE,EAAA,OAAO,CAAC,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAU,KAAK,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA;AACzD;ADCA;AACA;AEmDA,IAAI,uBAAA,EAAqD,IAAA;AAkBlD,SAAS,gCAAA,CAAiC,MAAA,EAA6B;AAC5E,EAAA,uBAAA,EAAyB,MAAA;AAC3B;AA+BO,SAAS,yBAAA,CAA0B,OAAA,EAElB;AACtB,EAAA,GAAA,CAAI,CAAC,sBAAA,EAAwB;AAC3B,IAAA,MAAM,QAAA,EACJ,mGAAA;AAEF,IAAA,GAAA,CAAA,CACE,QAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,OAAA,CAAS,oBAAA,EAAA,GACT,OAAA,CAAQ,GAAA,CAAI,SAAA,IAAa,aAAA,EACzB;AACA,MAAA,MAAM,IAAI,KAAA,CAAM,OAAO,CAAA;AAAA,IACzB;AAGA,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,IAAI,gCAAA,CAAW;AAAA,IACzB,CAAA;AAAA,EACF;AACA,EAAA,OAAO,sBAAA;AACT;AAaO,SAAS,yBAAA,CAAA,EAAoC;AAClD,EAAA,OAAO,yBAAA,CAA0B,CAAA,CAAE,MAAA;AACrC;AAeO,SAAS,kBAAA,CAAA,EAAsC;AACpD,EAAA,MAAM,OAAA,EAAS,yBAAA,CAA0B,CAAA;AAEzC,EAAA,GAAA,CAAI,CAAC,MAAA,CAAO,WAAA,EAAa;AACvB,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,GAAA,CAAI,OAAO,MAAA,CAAO,YAAA,IAAgB,QAAA,EAAU;AAC1C,IAAA,MAAM,WAAA,EAAgC,CAAC,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAU,KAAK,CAAA;AACvE,IAAA,GAAA,CAAI,UAAA,CAAW,QAAA,CAAS,MAAA,CAAO,WAAW,CAAA,EAAG;AAC3C,MAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IAChB;AAGA,IAAA,yBAAA,CAA0B,CAAA,CAAE,IAAA;AAAA,MAC1B,CAAA,2BAAA,EAA8B,MAAA,CAAO,WAAW,CAAA,sBAAA;AAAA,IAClD,CAAA;AAEA,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,GAAA,CAAI,OAAO,MAAA,CAAO,YAAA,IAAgB,SAAA,GAAY,MAAA,CAAO,WAAA,CAAY,KAAA,GAAO,uBAAA,CAAwB,MAAA,CAAO,WAAA,CAAY,IAAI,CAAA,EAAG;AACxH,IAAA,OAAO,MAAA,CAAO,WAAA,CAAY,IAAA;AAAA,EAC5B;AAEA,EAAA,OAAO,KAAA;AACT;AAcO,SAAS,kBAAA,CAAA,EAA8B;AAC5C,EAAA,MAAM,KAAA,EAAO,kBAAA,CAAmB,CAAA;AAChC,EAAA,OAAO,KAAA,IAAS,QAAA,GAAW,KAAA,IAAS,KAAA;AACtC;AAcO,SAAS,mBAAA,CAAA,EAA+B;AAC7C,EAAA,MAAM,KAAA,EAAO,kBAAA,CAAmB,CAAA;AAChC,EAAA,OAAO,KAAA,IAAS,SAAA,GAAY,KAAA,IAAS,KAAA;AACvC;AFrKA;AACA;AACE;AACA;AACA;AACA;AACF,iOAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-OAAMDWSK.js","sourcesContent":[null,"import { type DataCaptureMode } from \"./types\";\n\n/**\n * Validates a data capture mode.\n */\nexport function validateDataCaptureMode(mode: DataCaptureMode): boolean {\n return [\"none\", \"input\", \"output\", \"all\"].includes(mode);\n}\n","import { type Logger, NoOpLogger } from \"../logger/index.js\";\nimport {\n type DataCaptureMode,\n type DataCaptureOptions,\n} from \"./features/data-capture/types.js\";\nimport { validateDataCaptureMode } from \"./features/data-capture/utils.js\";\n\n/**\n * @module observability/config\n * @description\n * Provides configuration management for the LangWatch Observability SDK, including logger and data capture settings.\n *\n * @remarks\n * This module allows you to initialize, retrieve, and reset the global observability configuration. It also provides utilities for determining data capture behavior based on context and configuration.\n *\n * @see {@link ObservabilityConfig}\n * @see {@link initializeObservabilitySdkConfig}\n * @see {@link getObservabilitySdkConfig}\n * @see {@link resetObservabilitySdkConfig}\n * @see {@link getDataCaptureMode}\n * @see {@link shouldCaptureInput}\n * @see {@link shouldCaptureOutput}\n */\n/**\n * Configuration options for the LangWatch Observability SDK.\n *\n * @property logger - The logger instance to use for SDK logging.\n * @property dataCapture - Configuration for automatic data capture. Can be a string, function, or object.\n *\n * @example\n * ```ts\n * import { ObservabilityConfig, initializeObservabilitySdkConfig } from \"@langwatch/observability\";\n *\n * const config: ObservabilityConfig = {\n * logger: new ConsoleLogger(),\n * dataCapture: \"all\",\n * };\n *\n * initializeObservabilitySdkConfig(config);\n * ```\n */\nexport interface ObservabilityConfig {\n /**\n * The logger to use for the observability SDK.\n *\n * @default NoOpLogger\n */\n logger: Logger;\n\n /**\n * Configuration for automatic data capture.\n *\n * @default \"all\"\n */\n dataCapture?: DataCaptureOptions;\n}\n\n/**\n * The observability SDK config.\n */\nlet observabilitySdkConfig: ObservabilityConfig | null = null;\n\n/**\n * Initializes the global observability SDK configuration.\n *\n * @param config - The configuration object to use.\n *\n * @remarks\n * This function should be called once at application startup, before using any observability features.\n *\n * @warning\n * Calling this function will intentionally overwrite any existing configuration. This is by design to allow re-initialization in dynamic or testing environments. If you call this function multiple times, the most recent configuration will take effect.\n *\n * @example\n * ```ts\n * initializeObservabilitySdkConfig({ logger: new ConsoleLogger() });\n * ```\n */\nexport function initializeObservabilitySdkConfig(config: ObservabilityConfig) {\n observabilitySdkConfig = config;\n}\n\n/**\n * Resets the global observability SDK configuration to its initial state (`null`).\n *\n * @remarks\n * Useful for testing or re-initializing the SDK in dynamic environments.\n *\n * @example\n * ```ts\n * resetObservabilitySdkConfig();\n * ```\n */\nexport function resetObservabilitySdkConfig() {\n observabilitySdkConfig = null;\n}\n\n/**\n * Retrieves the current observability SDK configuration.\n *\n * @param options - Optional settings.\n * @param options.throwOnUninitialized - If true, throws an error if the config is not initialized. Defaults to `false` unless `NODE_ENV` is `development`.\n * @returns The current {@link ObservabilityConfig}.\n *\n * @throws {Error} If the config is uninitialized and `throwOnUninitialized` is true or in development mode.\n *\n * @example\n * ```ts\n * const config = getObservabilitySdkConfig();\n * ```\n */\nexport function getObservabilitySdkConfig(options?: {\n throwOnUninitialized?: boolean;\n}): ObservabilityConfig {\n if (!observabilitySdkConfig) {\n const message =\n \"[LangWatch Observability SDK] Please call setupObservability() before using the Observability SDK\";\n\n if (\n options?.throwOnUninitialized ||\n process.env.NODE_ENV === \"development\"\n ) {\n throw new Error(message);\n }\n\n // Use a default logger that can be configured\n return {\n logger: new NoOpLogger(),\n };\n }\n return observabilitySdkConfig;\n}\n\n/**\n * Gets the logger instance from the current observability SDK configuration.\n *\n * @returns The configured {@link Logger} instance.\n *\n * @example\n * ```ts\n * const logger = getObservabilitySdkLogger();\n * logger.info(\"Observability initialized\");\n * ```\n */\nexport function getObservabilitySdkLogger(): Logger {\n return getObservabilitySdkConfig().logger;\n}\n\n/**\n * Determines the effective data capture mode.\n *\n * @returns The resolved {@link DataCaptureMode} (\"all\", \"input\", or \"output\").\n *\n * @remarks\n * The mode is determined by the configuration, which can be a string, function, or object. Defaults to \"all\" if not specified.\n *\n * @example\n * ```ts\n * const mode = getDataCaptureMode();\n * ```\n */\nexport function getDataCaptureMode(): DataCaptureMode {\n const config = getObservabilitySdkConfig();\n\n if (!config.dataCapture) {\n return \"all\"; // Default: capture both input and output\n }\n\n // Handle different config formats\n if (typeof config.dataCapture === \"string\") {\n const validModes: DataCaptureMode[] = [\"none\", \"input\", \"output\", \"all\"];\n if (validModes.includes(config.dataCapture)) {\n return config.dataCapture;\n }\n\n\n getObservabilitySdkLogger().warn(\n `Invalid data capture mode: ${config.dataCapture}. Using default: \"all\"`,\n );\n\n return \"all\";\n }\n\n if (typeof config.dataCapture === \"object\" && config.dataCapture.mode &&validateDataCaptureMode(config.dataCapture.mode)) {\n return config.dataCapture.mode;\n }\n\n return \"all\"; // Default fallback\n}\n\n/**\n * Determines if input data should be captured.\n *\n * @returns `true` if input should be captured, otherwise `false`.\n *\n * @example\n * ```ts\n * if (shouldCaptureInput()) {\n * // Capture input\n * }\n * ```\n */\nexport function shouldCaptureInput(): boolean {\n const mode = getDataCaptureMode();\n return mode === \"input\" || mode === \"all\";\n}\n\n/**\n * Determines if output data should be captured.\n *\n * @returns `true` if output should be captured, otherwise `false`.\n *\n * @example\n * ```ts\n * if (shouldCaptureOutput()) {\n * // Capture output\n * }\n * ```\n */\nexport function shouldCaptureOutput(): boolean {\n const mode = getDataCaptureMode();\n return mode === \"output\" || mode === \"all\";\n}\n"]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createLangWatchApiClient
|
|
3
|
+
} from "./chunk-QH3WUSKF.mjs";
|
|
4
|
+
|
|
5
|
+
// src/client-sdk/services/annotations/annotations-api.service.ts
|
|
6
|
+
var AnnotationsApiError = class extends Error {
|
|
7
|
+
constructor(message, operation, originalError) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.operation = operation;
|
|
10
|
+
this.originalError = originalError;
|
|
11
|
+
this.name = "AnnotationsApiError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var AnnotationsApiService = 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 AnnotationsApiError(
|
|
23
|
+
`Failed to ${operation}: ${errorMessage}`,
|
|
24
|
+
operation,
|
|
25
|
+
error
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
async getAll() {
|
|
29
|
+
const { data, error } = await this.apiClient.GET("/api/annotations");
|
|
30
|
+
if (error) this.handleApiError("fetch all annotations", error);
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
async get(id) {
|
|
34
|
+
const { data, error } = await this.apiClient.GET("/api/annotations/{id}", {
|
|
35
|
+
params: { path: { id } }
|
|
36
|
+
});
|
|
37
|
+
if (error)
|
|
38
|
+
this.handleApiError(`fetch annotation with ID "${id}"`, error);
|
|
39
|
+
return data;
|
|
40
|
+
}
|
|
41
|
+
async getByTrace(traceId) {
|
|
42
|
+
const { data, error } = await this.apiClient.GET(
|
|
43
|
+
"/api/annotations/trace/{id}",
|
|
44
|
+
{
|
|
45
|
+
params: { path: { id: traceId } }
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
if (error)
|
|
49
|
+
this.handleApiError(`fetch annotations for trace "${traceId}"`, error);
|
|
50
|
+
return data;
|
|
51
|
+
}
|
|
52
|
+
async create(traceId, params) {
|
|
53
|
+
const { data, error } = await this.apiClient.POST(
|
|
54
|
+
"/api/annotations/trace/{id}",
|
|
55
|
+
{
|
|
56
|
+
params: { path: { id: traceId } },
|
|
57
|
+
body: params
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
if (error) this.handleApiError("create annotation", error);
|
|
61
|
+
return data;
|
|
62
|
+
}
|
|
63
|
+
async delete(id) {
|
|
64
|
+
const { data, error } = await this.apiClient.DELETE(
|
|
65
|
+
"/api/annotations/{id}",
|
|
66
|
+
{
|
|
67
|
+
params: { path: { id } }
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
if (error)
|
|
71
|
+
this.handleApiError(`delete annotation with ID "${id}"`, error);
|
|
72
|
+
return data;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export {
|
|
77
|
+
AnnotationsApiError,
|
|
78
|
+
AnnotationsApiService
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=chunk-PO6XRHYW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client-sdk/services/annotations/annotations-api.service.ts"],"sourcesContent":["import type { paths, components } 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 AnnotationResponse = components[\"schemas\"][\"Annotation\"];\n\nexport type CreateAnnotationBody = NonNullable<\n paths[\"/api/annotations/trace/{id}\"][\"post\"][\"requestBody\"]\n>[\"content\"][\"application/json\"];\n\nexport class AnnotationsApiError extends Error {\n constructor(\n message: string,\n public readonly operation: string,\n public readonly originalError?: unknown,\n ) {\n super(message);\n this.name = \"AnnotationsApiError\";\n }\n}\n\nexport class AnnotationsApiService {\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 AnnotationsApiError(\n `Failed to ${operation}: ${errorMessage}`,\n operation,\n error,\n );\n }\n\n async getAll(): Promise<AnnotationResponse[]> {\n const { data, error } = await this.apiClient.GET(\"/api/annotations\");\n if (error) this.handleApiError(\"fetch all annotations\", error);\n return data;\n }\n\n async get(id: string): Promise<AnnotationResponse> {\n const { data, error } = await this.apiClient.GET(\"/api/annotations/{id}\", {\n params: { path: { id } },\n });\n if (error)\n this.handleApiError(`fetch annotation with ID \"${id}\"`, error);\n return data;\n }\n\n async getByTrace(traceId: string): Promise<AnnotationResponse[]> {\n const { data, error } = await this.apiClient.GET(\n \"/api/annotations/trace/{id}\",\n {\n params: { path: { id: traceId } },\n },\n );\n if (error)\n this.handleApiError(`fetch annotations for trace \"${traceId}\"`, error);\n return data;\n }\n\n async create(traceId: string, params: CreateAnnotationBody): Promise<AnnotationResponse> {\n const { data, error } = await this.apiClient.POST(\n \"/api/annotations/trace/{id}\",\n {\n params: { path: { id: traceId } },\n body: params,\n },\n );\n if (error) this.handleApiError(\"create annotation\", error);\n return data;\n }\n\n async delete(id: string): Promise<{ status?: string; message?: string }> {\n const { data, error } = await this.apiClient.DELETE(\n \"/api/annotations/{id}\",\n {\n params: { path: { id } },\n },\n );\n if (error)\n this.handleApiError(`delete annotation with ID \"${id}\"`, error);\n return data;\n }\n}\n"],"mappings":";;;;;AAaO,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;AA3BnE;AA4BI,SAAK,aAAY,sCAAQ,uBAAR,YAA8B,yBAAyB;AAAA,EAC1E;AAAA,EAEQ,eAAe,WAAmB,OAAuB;AA/BnE;AAgCI,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,SAAwC;AAC5C,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,kBAAkB;AACnE,QAAI,MAAO,MAAK,eAAe,yBAAyB,KAAK;AAC7D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,IAAyC;AACjD,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,yBAAyB;AAAA,MACxE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,IACzB,CAAC;AACD,QAAI;AACF,WAAK,eAAe,6BAA6B,EAAE,KAAK,KAAK;AAC/D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,WAAW,SAAgD;AAC/D,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU;AAAA,MAC3C;AAAA,MACA;AAAA,QACE,QAAQ,EAAE,MAAM,EAAE,IAAI,QAAQ,EAAE;AAAA,MAClC;AAAA,IACF;AACA,QAAI;AACF,WAAK,eAAe,gCAAgC,OAAO,KAAK,KAAK;AACvE,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,SAAiB,QAA2D;AACvF,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU;AAAA,MAC3C;AAAA,MACA;AAAA,QACE,QAAQ,EAAE,MAAM,EAAE,IAAI,QAAQ,EAAE;AAAA,QAChC,MAAM;AAAA,MACR;AAAA,IACF;AACA,QAAI,MAAO,MAAK,eAAe,qBAAqB,KAAK;AACzD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,IAA4D;AACvE,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,8BAA8B,EAAE,KAAK,KAAK;AAChE,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEFAULT_ENDPOINT,
|
|
3
|
+
LANGWATCH_SDK_LANGUAGE,
|
|
4
|
+
LANGWATCH_SDK_NAME_OBSERVABILITY,
|
|
5
|
+
LANGWATCH_SDK_RUNTIME,
|
|
6
|
+
LANGWATCH_SDK_VERSION,
|
|
7
|
+
version
|
|
8
|
+
} from "./chunk-LN33ZL4Z.mjs";
|
|
9
|
+
import {
|
|
10
|
+
__spreadProps,
|
|
11
|
+
__spreadValues
|
|
12
|
+
} from "./chunk-URTD2WOC.mjs";
|
|
13
|
+
|
|
14
|
+
// src/internal/api/client.ts
|
|
15
|
+
import openApiCreateClient from "openapi-fetch";
|
|
16
|
+
var createLangWatchApiClient = (apiKey = ((_a) => (_a = process.env.LANGWATCH_API_KEY) != null ? _a : "")(), endpoint = ((_b) => (_b = process.env.LANGWATCH_ENDPOINT) != null ? _b : DEFAULT_ENDPOINT)()) => {
|
|
17
|
+
return openApiCreateClient({
|
|
18
|
+
baseUrl: endpoint,
|
|
19
|
+
headers: __spreadProps(__spreadValues({}, apiKey ? { authorization: `Bearer ${apiKey}`, "x-auth-token": apiKey } : {}), {
|
|
20
|
+
"content-type": "application/json",
|
|
21
|
+
"user-agent": `langwatch-sdk-node/${version}`,
|
|
22
|
+
"x-langwatch-sdk-name": LANGWATCH_SDK_NAME_OBSERVABILITY,
|
|
23
|
+
"x-langwatch-sdk-language": LANGWATCH_SDK_LANGUAGE,
|
|
24
|
+
"x-langwatch-sdk-version": LANGWATCH_SDK_VERSION,
|
|
25
|
+
"x-langwatch-sdk-platform": LANGWATCH_SDK_RUNTIME()
|
|
26
|
+
})
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export {
|
|
31
|
+
createLangWatchApiClient
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=chunk-QH3WUSKF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/api/client.ts"],"sourcesContent":["import openApiCreateClient from \"openapi-fetch\";\nimport type { paths } from \"../generated/openapi/api-client\";\nimport { version } from \"../../../package.json\";\nimport {\n LANGWATCH_SDK_LANGUAGE,\n LANGWATCH_SDK_NAME_OBSERVABILITY,\n LANGWATCH_SDK_RUNTIME,\n LANGWATCH_SDK_VERSION,\n} from \"../constants\";\nimport { DEFAULT_ENDPOINT } from \"@/internal/constants\";\n\n\n/**\n * Creates a new LangWatch API client.\n * @param apiKey - The API key to use for authentication. Defaults to LANGWATCH_API_KEY environment variable.\n * @param endpoint - The endpoint to use for the API client. Defaults to LANGWATCH_ENDPOINT environment variable or internal DEFAULT_ENDPOINT.\n * @returns A new LangWatch API client.\n */\nexport const createLangWatchApiClient = (\n apiKey: string = process.env.LANGWATCH_API_KEY ?? \"\",\n endpoint: string = process.env.LANGWATCH_ENDPOINT ?? DEFAULT_ENDPOINT,\n) => {\n return openApiCreateClient<paths>({\n baseUrl: endpoint,\n headers: {\n ...(apiKey ? { authorization: `Bearer ${apiKey}`, 'x-auth-token': apiKey } : {}),\n \"content-type\": \"application/json\",\n \"user-agent\": `langwatch-sdk-node/${version}`,\n \"x-langwatch-sdk-name\": LANGWATCH_SDK_NAME_OBSERVABILITY,\n \"x-langwatch-sdk-language\": LANGWATCH_SDK_LANGUAGE,\n \"x-langwatch-sdk-version\": LANGWATCH_SDK_VERSION,\n \"x-langwatch-sdk-platform\": LANGWATCH_SDK_RUNTIME(),\n },\n });\n};\n\n\nexport type LangwatchApiClient = ReturnType<typeof createLangWatchApiClient>;\n"],"mappings":";;;;;;;;;;;;;;AAAA,OAAO,yBAAyB;AAkBzB,IAAM,2BAA2B,CACtC,UAAiB,sBAAQ,IAAI,sBAAZ,YAAiC,OAClD,YAAmB,sBAAQ,IAAI,uBAAZ,YAAkC,wBAClD;AACH,SAAO,oBAA2B;AAAA,IAChC,SAAS;AAAA,IACT,SAAS,iCACH,SAAS,EAAE,eAAe,UAAU,MAAM,IAAI,gBAAgB,OAAO,IAAI,CAAC,IADvE;AAAA,MAEP,gBAAgB;AAAA,MAChB,cAAc,sBAAsB,OAAO;AAAA,MAC3C,wBAAwB;AAAA,MACxB,4BAA4B;AAAA,MAC5B,2BAA2B;AAAA,MAC3B,4BAA4B,sBAAsB;AAAA,IACpD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NoOpLogger
|
|
3
|
+
} from "./chunk-M4IBRWUC.mjs";
|
|
4
|
+
|
|
5
|
+
// src/observability-sdk/features/data-capture/utils.ts
|
|
6
|
+
function validateDataCaptureMode(mode) {
|
|
7
|
+
return ["none", "input", "output", "all"].includes(mode);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// src/observability-sdk/config.ts
|
|
11
|
+
var observabilitySdkConfig = null;
|
|
12
|
+
function initializeObservabilitySdkConfig(config) {
|
|
13
|
+
observabilitySdkConfig = config;
|
|
14
|
+
}
|
|
15
|
+
function getObservabilitySdkConfig(options) {
|
|
16
|
+
if (!observabilitySdkConfig) {
|
|
17
|
+
const message = "[LangWatch Observability SDK] Please call setupObservability() before using the Observability SDK";
|
|
18
|
+
if ((options == null ? void 0 : options.throwOnUninitialized) || process.env.NODE_ENV === "development") {
|
|
19
|
+
throw new Error(message);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
logger: new NoOpLogger()
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return observabilitySdkConfig;
|
|
26
|
+
}
|
|
27
|
+
function getObservabilitySdkLogger() {
|
|
28
|
+
return getObservabilitySdkConfig().logger;
|
|
29
|
+
}
|
|
30
|
+
function getDataCaptureMode() {
|
|
31
|
+
const config = getObservabilitySdkConfig();
|
|
32
|
+
if (!config.dataCapture) {
|
|
33
|
+
return "all";
|
|
34
|
+
}
|
|
35
|
+
if (typeof config.dataCapture === "string") {
|
|
36
|
+
const validModes = ["none", "input", "output", "all"];
|
|
37
|
+
if (validModes.includes(config.dataCapture)) {
|
|
38
|
+
return config.dataCapture;
|
|
39
|
+
}
|
|
40
|
+
getObservabilitySdkLogger().warn(
|
|
41
|
+
`Invalid data capture mode: ${config.dataCapture}. Using default: "all"`
|
|
42
|
+
);
|
|
43
|
+
return "all";
|
|
44
|
+
}
|
|
45
|
+
if (typeof config.dataCapture === "object" && config.dataCapture.mode && validateDataCaptureMode(config.dataCapture.mode)) {
|
|
46
|
+
return config.dataCapture.mode;
|
|
47
|
+
}
|
|
48
|
+
return "all";
|
|
49
|
+
}
|
|
50
|
+
function shouldCaptureInput() {
|
|
51
|
+
const mode = getDataCaptureMode();
|
|
52
|
+
return mode === "input" || mode === "all";
|
|
53
|
+
}
|
|
54
|
+
function shouldCaptureOutput() {
|
|
55
|
+
const mode = getDataCaptureMode();
|
|
56
|
+
return mode === "output" || mode === "all";
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export {
|
|
60
|
+
initializeObservabilitySdkConfig,
|
|
61
|
+
getDataCaptureMode,
|
|
62
|
+
shouldCaptureInput,
|
|
63
|
+
shouldCaptureOutput
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=chunk-RKJDDUGQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/observability-sdk/features/data-capture/utils.ts","../src/observability-sdk/config.ts"],"sourcesContent":["import { type DataCaptureMode } from \"./types\";\n\n/**\n * Validates a data capture mode.\n */\nexport function validateDataCaptureMode(mode: DataCaptureMode): boolean {\n return [\"none\", \"input\", \"output\", \"all\"].includes(mode);\n}\n","import { type Logger, NoOpLogger } from \"../logger/index.js\";\nimport {\n type DataCaptureMode,\n type DataCaptureOptions,\n} from \"./features/data-capture/types.js\";\nimport { validateDataCaptureMode } from \"./features/data-capture/utils.js\";\n\n/**\n * @module observability/config\n * @description\n * Provides configuration management for the LangWatch Observability SDK, including logger and data capture settings.\n *\n * @remarks\n * This module allows you to initialize, retrieve, and reset the global observability configuration. It also provides utilities for determining data capture behavior based on context and configuration.\n *\n * @see {@link ObservabilityConfig}\n * @see {@link initializeObservabilitySdkConfig}\n * @see {@link getObservabilitySdkConfig}\n * @see {@link resetObservabilitySdkConfig}\n * @see {@link getDataCaptureMode}\n * @see {@link shouldCaptureInput}\n * @see {@link shouldCaptureOutput}\n */\n/**\n * Configuration options for the LangWatch Observability SDK.\n *\n * @property logger - The logger instance to use for SDK logging.\n * @property dataCapture - Configuration for automatic data capture. Can be a string, function, or object.\n *\n * @example\n * ```ts\n * import { ObservabilityConfig, initializeObservabilitySdkConfig } from \"@langwatch/observability\";\n *\n * const config: ObservabilityConfig = {\n * logger: new ConsoleLogger(),\n * dataCapture: \"all\",\n * };\n *\n * initializeObservabilitySdkConfig(config);\n * ```\n */\nexport interface ObservabilityConfig {\n /**\n * The logger to use for the observability SDK.\n *\n * @default NoOpLogger\n */\n logger: Logger;\n\n /**\n * Configuration for automatic data capture.\n *\n * @default \"all\"\n */\n dataCapture?: DataCaptureOptions;\n}\n\n/**\n * The observability SDK config.\n */\nlet observabilitySdkConfig: ObservabilityConfig | null = null;\n\n/**\n * Initializes the global observability SDK configuration.\n *\n * @param config - The configuration object to use.\n *\n * @remarks\n * This function should be called once at application startup, before using any observability features.\n *\n * @warning\n * Calling this function will intentionally overwrite any existing configuration. This is by design to allow re-initialization in dynamic or testing environments. If you call this function multiple times, the most recent configuration will take effect.\n *\n * @example\n * ```ts\n * initializeObservabilitySdkConfig({ logger: new ConsoleLogger() });\n * ```\n */\nexport function initializeObservabilitySdkConfig(config: ObservabilityConfig) {\n observabilitySdkConfig = config;\n}\n\n/**\n * Resets the global observability SDK configuration to its initial state (`null`).\n *\n * @remarks\n * Useful for testing or re-initializing the SDK in dynamic environments.\n *\n * @example\n * ```ts\n * resetObservabilitySdkConfig();\n * ```\n */\nexport function resetObservabilitySdkConfig() {\n observabilitySdkConfig = null;\n}\n\n/**\n * Retrieves the current observability SDK configuration.\n *\n * @param options - Optional settings.\n * @param options.throwOnUninitialized - If true, throws an error if the config is not initialized. Defaults to `false` unless `NODE_ENV` is `development`.\n * @returns The current {@link ObservabilityConfig}.\n *\n * @throws {Error} If the config is uninitialized and `throwOnUninitialized` is true or in development mode.\n *\n * @example\n * ```ts\n * const config = getObservabilitySdkConfig();\n * ```\n */\nexport function getObservabilitySdkConfig(options?: {\n throwOnUninitialized?: boolean;\n}): ObservabilityConfig {\n if (!observabilitySdkConfig) {\n const message =\n \"[LangWatch Observability SDK] Please call setupObservability() before using the Observability SDK\";\n\n if (\n options?.throwOnUninitialized ||\n process.env.NODE_ENV === \"development\"\n ) {\n throw new Error(message);\n }\n\n // Use a default logger that can be configured\n return {\n logger: new NoOpLogger(),\n };\n }\n return observabilitySdkConfig;\n}\n\n/**\n * Gets the logger instance from the current observability SDK configuration.\n *\n * @returns The configured {@link Logger} instance.\n *\n * @example\n * ```ts\n * const logger = getObservabilitySdkLogger();\n * logger.info(\"Observability initialized\");\n * ```\n */\nexport function getObservabilitySdkLogger(): Logger {\n return getObservabilitySdkConfig().logger;\n}\n\n/**\n * Determines the effective data capture mode.\n *\n * @returns The resolved {@link DataCaptureMode} (\"all\", \"input\", or \"output\").\n *\n * @remarks\n * The mode is determined by the configuration, which can be a string, function, or object. Defaults to \"all\" if not specified.\n *\n * @example\n * ```ts\n * const mode = getDataCaptureMode();\n * ```\n */\nexport function getDataCaptureMode(): DataCaptureMode {\n const config = getObservabilitySdkConfig();\n\n if (!config.dataCapture) {\n return \"all\"; // Default: capture both input and output\n }\n\n // Handle different config formats\n if (typeof config.dataCapture === \"string\") {\n const validModes: DataCaptureMode[] = [\"none\", \"input\", \"output\", \"all\"];\n if (validModes.includes(config.dataCapture)) {\n return config.dataCapture;\n }\n\n\n getObservabilitySdkLogger().warn(\n `Invalid data capture mode: ${config.dataCapture}. Using default: \"all\"`,\n );\n\n return \"all\";\n }\n\n if (typeof config.dataCapture === \"object\" && config.dataCapture.mode &&validateDataCaptureMode(config.dataCapture.mode)) {\n return config.dataCapture.mode;\n }\n\n return \"all\"; // Default fallback\n}\n\n/**\n * Determines if input data should be captured.\n *\n * @returns `true` if input should be captured, otherwise `false`.\n *\n * @example\n * ```ts\n * if (shouldCaptureInput()) {\n * // Capture input\n * }\n * ```\n */\nexport function shouldCaptureInput(): boolean {\n const mode = getDataCaptureMode();\n return mode === \"input\" || mode === \"all\";\n}\n\n/**\n * Determines if output data should be captured.\n *\n * @returns `true` if output should be captured, otherwise `false`.\n *\n * @example\n * ```ts\n * if (shouldCaptureOutput()) {\n * // Capture output\n * }\n * ```\n */\nexport function shouldCaptureOutput(): boolean {\n const mode = getDataCaptureMode();\n return mode === \"output\" || mode === \"all\";\n}\n"],"mappings":";;;;;AAKO,SAAS,wBAAwB,MAAgC;AACtE,SAAO,CAAC,QAAQ,SAAS,UAAU,KAAK,EAAE,SAAS,IAAI;AACzD;;;ACqDA,IAAI,yBAAqD;AAkBlD,SAAS,iCAAiC,QAA6B;AAC5E,2BAAyB;AAC3B;AA+BO,SAAS,0BAA0B,SAElB;AACtB,MAAI,CAAC,wBAAwB;AAC3B,UAAM,UACJ;AAEF,SACE,mCAAS,yBACT,QAAQ,IAAI,aAAa,eACzB;AACA,YAAM,IAAI,MAAM,OAAO;AAAA,IACzB;AAGA,WAAO;AAAA,MACL,QAAQ,IAAI,WAAW;AAAA,IACzB;AAAA,EACF;AACA,SAAO;AACT;AAaO,SAAS,4BAAoC;AAClD,SAAO,0BAA0B,EAAE;AACrC;AAeO,SAAS,qBAAsC;AACpD,QAAM,SAAS,0BAA0B;AAEzC,MAAI,CAAC,OAAO,aAAa;AACvB,WAAO;AAAA,EACT;AAGA,MAAI,OAAO,OAAO,gBAAgB,UAAU;AAC1C,UAAM,aAAgC,CAAC,QAAQ,SAAS,UAAU,KAAK;AACvE,QAAI,WAAW,SAAS,OAAO,WAAW,GAAG;AAC3C,aAAO,OAAO;AAAA,IAChB;AAGA,8BAA0B,EAAE;AAAA,MAC1B,8BAA8B,OAAO,WAAW;AAAA,IAClD;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,OAAO,gBAAgB,YAAY,OAAO,YAAY,QAAO,wBAAwB,OAAO,YAAY,IAAI,GAAG;AACxH,WAAO,OAAO,YAAY;AAAA,EAC5B;AAEA,SAAO;AACT;AAcO,SAAS,qBAA8B;AAC5C,QAAM,OAAO,mBAAmB;AAChC,SAAO,SAAS,WAAW,SAAS;AACtC;AAcO,SAAS,sBAA+B;AAC7C,QAAM,OAAO,mBAAmB;AAChC,SAAO,SAAS,YAAY,SAAS;AACvC;","names":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createLangWatchApiClient
|
|
3
|
+
} from "./chunk-QH3WUSKF.mjs";
|
|
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 : 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 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
|
+
export {
|
|
50
|
+
WorkflowsApiError,
|
|
51
|
+
WorkflowsApiService
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=chunk-TCO73AV5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client-sdk/services/workflows/workflows-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 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"],"mappings":";;;;;AAcO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAC3C,YACE,SACgB,WACA,eAChB;AACA,UAAM,OAAO;AAHG;AACA;AAGhB,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,sBAAN,MAA0B;AAAA,EAG/B,YAAY,QAAqD;AA5BnE;AA6BI,SAAK,aAAY,sCAAQ,uBAAR,YAA8B,yBAAyB;AAAA,EAC1E;AAAA,EAEQ,eAAe,WAAmB,OAAuB;AAhCnE;AAiCI,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,kBAAkB,KAAK;AACtD,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,MAAO,MAAK,eAAe,iBAAiB,EAAE,KAAK,KAAK;AAC5D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,IAA6C;AACxD,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,OAAO,uBAAuB;AAAA,MACzE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,IACzB,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,oBAAoB,EAAE,KAAK,KAAK;AAC/D,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createLangWatchApiClient
|
|
3
|
+
} from "./chunk-QH3WUSKF.mjs";
|
|
4
|
+
|
|
5
|
+
// src/client-sdk/services/agents/agents-api.service.ts
|
|
6
|
+
var AgentsApiError = class extends Error {
|
|
7
|
+
constructor(message, operation, originalError) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.operation = operation;
|
|
10
|
+
this.originalError = originalError;
|
|
11
|
+
this.name = "AgentsApiError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var AgentsApiService = 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 AgentsApiError(
|
|
23
|
+
`Failed to ${operation}: ${errorMessage}`,
|
|
24
|
+
operation,
|
|
25
|
+
error
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
async list(params) {
|
|
29
|
+
const { data, error } = await this.apiClient.GET("/api/agents", {
|
|
30
|
+
params: { query: params }
|
|
31
|
+
});
|
|
32
|
+
if (error) this.handleApiError("list agents", error);
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
async get(id) {
|
|
36
|
+
const { data, error } = await this.apiClient.GET("/api/agents/{id}", {
|
|
37
|
+
params: { path: { id } }
|
|
38
|
+
});
|
|
39
|
+
if (error) this.handleApiError(`get agent "${id}"`, error);
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
42
|
+
async create(params) {
|
|
43
|
+
const { data, error } = await this.apiClient.POST("/api/agents", {
|
|
44
|
+
body: params
|
|
45
|
+
});
|
|
46
|
+
if (error) this.handleApiError("create agent", error);
|
|
47
|
+
return data;
|
|
48
|
+
}
|
|
49
|
+
async update(id, params) {
|
|
50
|
+
const { data, error } = await this.apiClient.PATCH("/api/agents/{id}", {
|
|
51
|
+
params: { path: { id } },
|
|
52
|
+
body: params
|
|
53
|
+
});
|
|
54
|
+
if (error) this.handleApiError(`update agent "${id}"`, error);
|
|
55
|
+
return data;
|
|
56
|
+
}
|
|
57
|
+
async delete(id) {
|
|
58
|
+
const { data, error } = await this.apiClient.DELETE("/api/agents/{id}", {
|
|
59
|
+
params: { path: { id } }
|
|
60
|
+
});
|
|
61
|
+
if (error) this.handleApiError(`delete agent "${id}"`, error);
|
|
62
|
+
return data;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export {
|
|
67
|
+
AgentsApiError,
|
|
68
|
+
AgentsApiService
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=chunk-TQYUM3WH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client-sdk/services/agents/agents-api.service.ts"],"sourcesContent":["import {\n createLangWatchApiClient,\n type LangwatchApiClient,\n} from \"@/internal/api/client\";\nimport { type InternalConfig } from \"@/client-sdk/types\";\n\nexport interface AgentResponse {\n id: string;\n name: string;\n type: string;\n config: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface AgentListResponse {\n data: AgentResponse[];\n pagination: {\n page: number;\n limit: number;\n total: number;\n totalPages: number;\n };\n}\n\nexport class AgentsApiError extends Error {\n constructor(\n message: string,\n public readonly operation: string,\n public readonly originalError?: unknown,\n ) {\n super(message);\n this.name = \"AgentsApiError\";\n }\n}\n\nexport class AgentsApiService {\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 AgentsApiError(\n `Failed to ${operation}: ${errorMessage}`,\n operation,\n error,\n );\n }\n\n async list(params?: { page?: number; limit?: number }): Promise<AgentListResponse> {\n const { data, error } = await this.apiClient.GET(\"/api/agents\", {\n params: { query: params },\n });\n if (error) this.handleApiError(\"list agents\", error);\n return data as unknown as AgentListResponse;\n }\n\n async get(id: string): Promise<AgentResponse> {\n const { data, error } = await this.apiClient.GET(\"/api/agents/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`get agent \"${id}\"`, error);\n return data as unknown as AgentResponse;\n }\n\n async create(params: {\n name: string;\n type: string;\n config: Record<string, unknown>;\n workflowId?: string;\n }): Promise<AgentResponse> {\n const { data, error } = await this.apiClient.POST(\"/api/agents\", {\n body: params as never,\n });\n if (error) this.handleApiError(\"create agent\", error);\n return data as unknown as AgentResponse;\n }\n\n async update(id: string, params: {\n name?: string;\n type?: string;\n config?: Record<string, unknown>;\n }): Promise<AgentResponse> {\n const { data, error } = await this.apiClient.PATCH(\"/api/agents/{id}\", {\n params: { path: { id } },\n body: params as never,\n });\n if (error) this.handleApiError(`update agent \"${id}\"`, error);\n return data as unknown as AgentResponse;\n }\n\n async delete(id: string): Promise<{ id: string; name: string }> {\n const { data, error } = await this.apiClient.DELETE(\"/api/agents/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`delete agent \"${id}\"`, error);\n return data as unknown as { id: string; name: string };\n }\n}\n"],"mappings":";;;;;AAyBO,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACxC,YACE,SACgB,WACA,eAChB;AACA,UAAM,OAAO;AAHG;AACA;AAGhB,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,mBAAN,MAAuB;AAAA,EAG5B,YAAY,QAAqD;AAvCnE;AAwCI,SAAK,aAAY,sCAAQ,uBAAR,YAA8B,yBAAyB;AAAA,EAC1E;AAAA,EAEQ,eAAe,WAAmB,OAAuB;AA3CnE;AA4CI,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,KAAK,QAAwE;AACjF,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,eAAe;AAAA,MAC9D,QAAQ,EAAE,OAAO,OAAO;AAAA,IAC1B,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,eAAe,KAAK;AACnD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,IAAoC;AAC5C,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,oBAAoB;AAAA,MACnE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,IACzB,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,cAAc,EAAE,KAAK,KAAK;AACzD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,QAKc;AACzB,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,KAAK,eAAe;AAAA,MAC/D,MAAM;AAAA,IACR,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,gBAAgB,KAAK;AACpD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,IAAY,QAIE;AACzB,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,MAAM,oBAAoB;AAAA,MACrE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,MACvB,MAAM;AAAA,IACR,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,iBAAiB,EAAE,KAAK,KAAK;AAC5D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,IAAmD;AAC9D,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,UAAU,OAAO,oBAAoB;AAAA,MACtE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;AAAA,IACzB,CAAC;AACD,QAAI,MAAO,MAAK,eAAe,iBAAiB,EAAE,KAAK,KAAK;AAC5D,WAAO;AAAA,EACT;AACF;","names":[]}
|