langwatch 0.33.2 → 0.34.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/README.md +10 -8
- package/dist/add-TFE2BH4K.mjs +148 -0
- package/dist/add-URBA6FGV.js +148 -0
- package/dist/add-URBA6FGV.js.map +1 -0
- package/dist/archive-CL6XUEYU.mjs +41 -0
- package/dist/archive-K4SSNBML.js +41 -0
- package/dist/archive-K4SSNBML.js.map +1 -0
- package/dist/assign-4PVKU4WO.mjs +54 -0
- package/dist/assign-RFENMUXO.js +54 -0
- package/dist/assign-RFENMUXO.js.map +1 -0
- package/dist/chunk-2MITUTNI.js +205 -0
- package/dist/chunk-2MITUTNI.js.map +1 -0
- package/dist/chunk-2V5FBEY3.mjs +960 -0
- package/dist/chunk-2V5FBEY3.mjs.map +1 -0
- package/dist/chunk-377U47MY.js +42 -0
- package/dist/chunk-377U47MY.js.map +1 -0
- package/dist/chunk-3K6C35HN.mjs +80 -0
- package/dist/chunk-3PZ5VO5T.mjs +205 -0
- package/dist/chunk-3PZ5VO5T.mjs.map +1 -0
- package/dist/chunk-42EDFIG2.mjs +512 -0
- package/dist/chunk-4Q4HSAKZ.js +894 -0
- package/dist/chunk-4Q4HSAKZ.js.map +1 -0
- package/dist/chunk-4ZA6WF6S.mjs +300 -0
- package/dist/chunk-535JT5M3.mjs +42 -0
- package/dist/chunk-5M6GLAIG.js +410 -0
- package/dist/chunk-5M6GLAIG.js.map +1 -0
- package/dist/chunk-5PF32BLZ.mjs +76 -0
- package/dist/chunk-5W4B44MH.mjs +103 -0
- package/dist/chunk-5Z3A3Z5M.mjs +96 -0
- package/dist/chunk-64H4FLDB.mjs +51 -0
- package/dist/chunk-67PP4GB4.mjs +40 -0
- package/dist/chunk-6KMX34ZH.js +257 -0
- package/dist/chunk-6KMX34ZH.js.map +1 -0
- package/dist/chunk-6RSHYGUB.js +85 -0
- package/dist/chunk-6RSHYGUB.js.map +1 -0
- package/dist/chunk-7HFW67OR.mjs +63 -0
- package/dist/chunk-7KSBRJUY.js +54 -0
- package/dist/chunk-7KSBRJUY.js.map +1 -0
- package/dist/chunk-7ULZZHBP.mjs +42 -0
- package/dist/chunk-A6YWANGL.js +103 -0
- package/dist/chunk-A6YWANGL.js.map +1 -0
- package/dist/chunk-CGECDLSE.js +90 -0
- package/dist/chunk-CGECDLSE.js.map +1 -0
- package/dist/chunk-CKTJADY6.mjs +348 -0
- package/dist/chunk-D2VRKNFF.js +1672 -0
- package/dist/chunk-D2VRKNFF.js.map +1 -0
- package/dist/chunk-D5NUUB4G.mjs +225 -0
- package/dist/chunk-D5NUUB4G.mjs.map +1 -0
- package/dist/chunk-DCTJDRBW.js +40 -0
- package/dist/chunk-DCTJDRBW.js.map +1 -0
- package/dist/chunk-DIILEB4J.js +196 -0
- package/dist/chunk-DIILEB4J.js.map +1 -0
- package/dist/chunk-DOJBPYAE.js +663 -0
- package/dist/chunk-DOJBPYAE.js.map +1 -0
- package/dist/chunk-FNFLZXXA.js +80 -0
- package/dist/chunk-FNFLZXXA.js.map +1 -0
- package/dist/chunk-FSACIXYG.js +512 -0
- package/dist/chunk-FSACIXYG.js.map +1 -0
- package/dist/chunk-GFLV5NP6.mjs +70 -0
- package/dist/chunk-GNWMKXDU.mjs +66 -0
- package/dist/chunk-GPGJNBPP.js +63 -0
- package/dist/chunk-GPGJNBPP.js.map +1 -0
- package/dist/chunk-GUPNZDU7.js +101 -0
- package/dist/chunk-GUPNZDU7.js.map +1 -0
- package/dist/chunk-HDA25KWZ.js +134 -0
- package/dist/chunk-HDA25KWZ.js.map +1 -0
- package/dist/chunk-IZD5CIVE.js +70 -0
- package/dist/chunk-IZD5CIVE.js.map +1 -0
- package/dist/chunk-JQVI5CD7.mjs +894 -0
- package/dist/chunk-JSV75WAY.js +76 -0
- package/dist/chunk-JSV75WAY.js.map +1 -0
- package/dist/chunk-JZYHVNJR.js +22 -0
- package/dist/chunk-JZYHVNJR.js.map +1 -0
- package/dist/chunk-LA5LU5UP.js +225 -0
- package/dist/chunk-LA5LU5UP.js.map +1 -0
- package/dist/chunk-LSRJHTPL.js +36 -0
- package/dist/chunk-LSRJHTPL.js.map +1 -0
- package/dist/chunk-M5UNTGGK.mjs +68 -0
- package/dist/chunk-NQN42A2N.js +348 -0
- package/dist/chunk-NQN42A2N.js.map +1 -0
- package/dist/chunk-NTRV2ICJ.js +75 -0
- package/dist/chunk-NTRV2ICJ.js.map +1 -0
- package/dist/chunk-O2GHYEAE.mjs +92 -0
- package/dist/chunk-OMOZEGVZ.mjs +22 -0
- package/dist/chunk-OMOZEGVZ.mjs.map +1 -0
- package/dist/chunk-OMZ3FRPU.mjs +65 -0
- package/dist/chunk-OOXU4LFW.js +65 -0
- package/dist/chunk-OOXU4LFW.js.map +1 -0
- package/dist/chunk-OSAFGMGH.mjs +85 -0
- package/dist/chunk-OXULVOBF.mjs +144 -0
- package/dist/chunk-OXULVOBF.mjs.map +1 -0
- package/dist/chunk-PONU4KJX.mjs +134 -0
- package/dist/chunk-PQA46YVG.mjs +410 -0
- package/dist/chunk-PQA46YVG.mjs.map +1 -0
- package/dist/chunk-Q6OMYVNW.js +66 -0
- package/dist/chunk-Q6OMYVNW.js.map +1 -0
- package/dist/chunk-QSMGACTW.js +51 -0
- package/dist/chunk-QSMGACTW.js.map +1 -0
- package/dist/chunk-QVQ7WDJS.mjs +196 -0
- package/dist/chunk-QZRBNYW2.js +960 -0
- package/dist/chunk-QZRBNYW2.js.map +1 -0
- package/dist/chunk-R6QPBFZD.mjs +63 -0
- package/dist/chunk-R6QPBFZD.mjs.map +1 -0
- package/dist/chunk-RALJR5ZU.js +80 -0
- package/dist/chunk-RALJR5ZU.js.map +1 -0
- package/dist/chunk-RIPASL56.mjs +75 -0
- package/dist/chunk-S2UWK4HL.mjs +36 -0
- package/dist/chunk-SNKGSX5I.js +42 -0
- package/dist/chunk-SNKGSX5I.js.map +1 -0
- package/dist/chunk-SQXVLXIS.mjs +90 -0
- package/dist/chunk-TIAQGDR2.js +34 -0
- package/dist/chunk-TIAQGDR2.js.map +1 -0
- package/dist/chunk-UQ633TEF.mjs +54 -0
- package/dist/chunk-UTXV7U7Z.js +92 -0
- package/dist/chunk-UTXV7U7Z.js.map +1 -0
- package/dist/chunk-WG7MPZXJ.mjs +663 -0
- package/dist/chunk-WIXX2IDN.mjs +101 -0
- package/dist/chunk-WQRATXQU.mjs +80 -0
- package/dist/chunk-WV4U2PPY.js +68 -0
- package/dist/chunk-WV4U2PPY.js.map +1 -0
- package/dist/chunk-XGULH63G.mjs +1672 -0
- package/dist/chunk-XGULH63G.mjs.map +1 -0
- package/dist/chunk-YK55ZGRQ.mjs +257 -0
- package/dist/chunk-YK55ZGRQ.mjs.map +1 -0
- package/dist/chunk-YKDTIJF2.js +144 -0
- package/dist/chunk-YKDTIJF2.js.map +1 -0
- package/dist/chunk-YKWXS2BM.js +300 -0
- package/dist/chunk-YKWXS2BM.js.map +1 -0
- package/dist/chunk-YOSDU6PV.mjs +34 -0
- package/dist/chunk-ZFAAOZZM.js +96 -0
- package/dist/chunk-ZFAAOZZM.js.map +1 -0
- package/dist/chunk-ZX6VUKK5.js +63 -0
- package/dist/chunk-ZX6VUKK5.js.map +1 -0
- package/dist/cli/index.js +153 -151
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +145 -143
- package/dist/cli/index.mjs.map +1 -1
- package/dist/config-DPFYZQUU.js +96 -0
- package/dist/config-DPFYZQUU.js.map +1 -0
- package/dist/config-DXWUTPTA.mjs +96 -0
- package/dist/create-2MUVHIRR.js +49 -0
- package/dist/create-2MUVHIRR.js.map +1 -0
- package/dist/create-2VO6N4CY.js +50 -0
- package/dist/create-2VO6N4CY.js.map +1 -0
- package/dist/create-5HLREIKR.mjs +52 -0
- package/dist/create-7WWQNO2D.mjs +88 -0
- package/dist/create-APC6WMHS.js +72 -0
- package/dist/create-APC6WMHS.js.map +1 -0
- package/dist/create-B6AZP3AH.js +42 -0
- package/dist/create-B6AZP3AH.js.map +1 -0
- package/dist/create-BWIIJPYN.js +88 -0
- package/dist/create-BWIIJPYN.js.map +1 -0
- package/dist/create-C7HS7DAN.js +91 -0
- package/dist/create-C7HS7DAN.js.map +1 -0
- package/dist/create-CENOO2Z5.mjs +94 -0
- package/dist/create-CSENTPZ7.mjs +88 -0
- package/dist/create-F564PPYR.mjs +72 -0
- package/dist/create-FEVRMAGI.js +75 -0
- package/dist/create-FEVRMAGI.js.map +1 -0
- package/dist/create-FK6ZCXCA.js +92 -0
- package/dist/create-FK6ZCXCA.js.map +1 -0
- package/dist/create-G5KF3LVC.mjs +50 -0
- package/dist/create-HL6BPJBM.mjs +71 -0
- package/dist/create-KFDWNSGC.mjs +87 -0
- package/dist/create-KTPZZ7NV.mjs +75 -0
- package/dist/create-LAKPCRNY.mjs +92 -0
- package/dist/create-LFU7Z6DS.mjs +42 -0
- package/dist/create-MI7MQLN6.mjs +48 -0
- package/dist/create-OMO3TETI.mjs +23 -0
- package/dist/create-OWODQWNJ.js +48 -0
- package/dist/create-OWODQWNJ.js.map +1 -0
- package/dist/create-POGAVC3B.mjs +49 -0
- package/dist/create-QJLKTHQ6.mjs +58 -0
- package/dist/create-R57TZY3Y.js +94 -0
- package/dist/create-R57TZY3Y.js.map +1 -0
- package/dist/create-RIHQJENZ.js +71 -0
- package/dist/create-RIHQJENZ.js.map +1 -0
- package/dist/create-UOIUDY25.js +88 -0
- package/dist/create-UOIUDY25.js.map +1 -0
- package/dist/create-URUJVBUC.js +87 -0
- package/dist/create-URUJVBUC.js.map +1 -0
- package/dist/create-VEK55UDK.mjs +43 -0
- package/dist/create-VKXRDN5O.js +52 -0
- package/dist/create-VKXRDN5O.js.map +1 -0
- package/dist/create-XHAKNOTS.mjs +91 -0
- package/dist/create-YJHDG2ZO.js +23 -0
- package/dist/create-YJHDG2ZO.js.map +1 -0
- package/dist/create-Z5CM76ZW.js +43 -0
- package/dist/create-Z5CM76ZW.js.map +1 -0
- package/dist/create-Z6JTQNL6.js +58 -0
- package/dist/create-Z6JTQNL6.js.map +1 -0
- package/dist/delete-6BINMYZI.mjs +52 -0
- package/dist/delete-6T5CCDFJ.js +42 -0
- package/dist/delete-6T5CCDFJ.js.map +1 -0
- package/dist/delete-6UHWYVNZ.js +52 -0
- package/dist/delete-6UHWYVNZ.js.map +1 -0
- package/dist/delete-A5RWDQKJ.js +52 -0
- package/dist/delete-A5RWDQKJ.js.map +1 -0
- package/dist/delete-A7ZWGQPR.mjs +59 -0
- package/dist/delete-B5G7GAHY.mjs +44 -0
- package/dist/delete-BGCVEG3C.js +61 -0
- package/dist/delete-BGCVEG3C.js.map +1 -0
- package/dist/delete-BYCIZOZG.js +39 -0
- package/dist/delete-BYCIZOZG.js.map +1 -0
- package/dist/delete-E5VYCRYX.mjs +39 -0
- package/dist/delete-EK6PUMYW.js +52 -0
- package/dist/delete-EK6PUMYW.js.map +1 -0
- package/dist/delete-ERB4LGWZ.mjs +41 -0
- package/dist/delete-FD3IISGJ.js +38 -0
- package/dist/delete-FD3IISGJ.js.map +1 -0
- package/dist/delete-FE3MRFPM.mjs +52 -0
- package/dist/delete-FP5MMDDA.mjs +61 -0
- package/dist/delete-FWKI62NT.mjs +39 -0
- package/dist/delete-HLKQDPTI.js +52 -0
- package/dist/delete-HLKQDPTI.js.map +1 -0
- package/dist/delete-KAVDMRQX.mjs +59 -0
- package/dist/delete-M4ZCKWOU.mjs +52 -0
- package/dist/delete-NGPOOTEX.mjs +42 -0
- package/dist/delete-NN4CSTK5.js +44 -0
- package/dist/delete-NN4CSTK5.js.map +1 -0
- package/dist/delete-NRW5THMB.js +39 -0
- package/dist/delete-NRW5THMB.js.map +1 -0
- package/dist/delete-SZG6DJUR.mjs +52 -0
- package/dist/delete-UMDNW3RR.mjs +59 -0
- package/dist/delete-UMDNW3RR.mjs.map +1 -0
- package/dist/delete-UVGITJ2L.mjs +38 -0
- package/dist/delete-VBP7TKUH.js +41 -0
- package/dist/delete-VBP7TKUH.js.map +1 -0
- package/dist/delete-Y3DTH336.js +59 -0
- package/dist/delete-Y3DTH336.js.map +1 -0
- package/dist/delete-ZM3GFW2Z.js +59 -0
- package/dist/delete-ZM3GFW2Z.js.map +1 -0
- package/dist/delete-ZSN6PWGA.js +59 -0
- package/dist/delete-ZSN6PWGA.js.map +1 -0
- package/dist/download-B4Z4TAXZ.js +100 -0
- package/dist/download-B4Z4TAXZ.js.map +1 -0
- package/dist/download-JPL3BO4H.mjs +100 -0
- package/dist/duplicate-IYUSDPY2.js +45 -0
- package/dist/duplicate-IYUSDPY2.js.map +1 -0
- package/dist/duplicate-OWG7P745.mjs +45 -0
- package/dist/export-4A6ILAPM.mjs +103 -0
- package/dist/export-BUFJDFWC.js +103 -0
- package/dist/export-BUFJDFWC.js.map +1 -0
- package/dist/get-37E7GAV3.js +76 -0
- package/dist/get-37E7GAV3.js.map +1 -0
- package/dist/get-4D2MVW4T.js +49 -0
- package/dist/get-4D2MVW4T.js.map +1 -0
- package/dist/get-576OERBE.mjs +66 -0
- package/dist/get-5GQP5EDN.mjs +71 -0
- package/dist/get-6DKM4MZL.mjs +70 -0
- package/dist/get-BO7KWXNS.js +70 -0
- package/dist/get-BO7KWXNS.js.map +1 -0
- package/dist/get-BQH2FJBV.mjs +49 -0
- package/dist/get-DCEQN75Y.mjs +71 -0
- package/dist/get-DEFHJ7CN.js +94 -0
- package/dist/get-DEFHJ7CN.js.map +1 -0
- package/dist/get-DX5U344V.mjs +149 -0
- package/dist/get-EWYM6FYK.js +54 -0
- package/dist/get-EWYM6FYK.js.map +1 -0
- package/dist/get-HY3N72VT.js +71 -0
- package/dist/get-HY3N72VT.js.map +1 -0
- package/dist/get-I2CSBUKB.js +56 -0
- package/dist/get-I2CSBUKB.js.map +1 -0
- package/dist/get-I6EY4PC6.mjs +54 -0
- package/dist/get-I6EY4PC6.mjs.map +1 -0
- package/dist/get-JDHZ2YUC.mjs +85 -0
- package/dist/get-KSATLDNX.mjs +56 -0
- package/dist/get-L5HUN5CE.mjs +94 -0
- package/dist/get-LIQYXM3J.mjs +76 -0
- package/dist/get-NICBHRKG.js +51 -0
- package/dist/get-NICBHRKG.js.map +1 -0
- package/dist/get-NXV4JPXT.mjs +51 -0
- package/dist/get-OH6XFEO7.js +149 -0
- package/dist/get-OH6XFEO7.js.map +1 -0
- package/dist/get-OW77HE3C.mjs +67 -0
- package/dist/get-P5MUOCUP.js +68 -0
- package/dist/get-P5MUOCUP.js.map +1 -0
- package/dist/get-PHEE7JVL.mjs +71 -0
- package/dist/get-QYIM3DCN.mjs +68 -0
- package/dist/get-R6F56IVZ.js +67 -0
- package/dist/get-R6F56IVZ.js.map +1 -0
- package/dist/get-RWF3UWIF.js +71 -0
- package/dist/get-RWF3UWIF.js.map +1 -0
- package/dist/get-T6TAL2GB.js +52 -0
- package/dist/get-T6TAL2GB.js.map +1 -0
- package/dist/get-TNDPILF3.js +85 -0
- package/dist/get-TNDPILF3.js.map +1 -0
- package/dist/get-UV3YT4VH.js +66 -0
- package/dist/get-UV3YT4VH.js.map +1 -0
- package/dist/get-X4Q4RZQC.mjs +52 -0
- package/dist/get-XIK4FEGG.js +71 -0
- package/dist/get-XIK4FEGG.js.map +1 -0
- package/dist/implementation-BBG46scL.d.mts +716 -0
- package/dist/implementation-BIfcyP32.d.ts +716 -0
- package/dist/index.d.mts +141 -8
- package/dist/index.d.ts +141 -8
- package/dist/index.js +137 -111
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +101 -75
- package/dist/index.mjs.map +1 -1
- package/dist/init-shell-2JQCBGMG.mjs +71 -0
- package/dist/init-shell-2JQCBGMG.mjs.map +1 -0
- package/dist/init-shell-UDTYTWJ4.js +71 -0
- package/dist/init-shell-UDTYTWJ4.js.map +1 -0
- package/dist/install-JNBCGN7Q.mjs +191 -0
- package/dist/install-VBJKW5WP.js +191 -0
- package/dist/install-VBJKW5WP.js.map +1 -0
- package/dist/list-2ALO3KFG.js +87 -0
- package/dist/list-2ALO3KFG.js.map +1 -0
- package/dist/list-2YGHM2AD.mjs +76 -0
- package/dist/list-3XJ7VZN4.mjs +75 -0
- package/dist/list-47FO2DBS.js +80 -0
- package/dist/list-47FO2DBS.js.map +1 -0
- package/dist/list-4JFVZU6U.mjs +78 -0
- package/dist/list-5DNRGKML.mjs +80 -0
- package/dist/list-5DNRGKML.mjs.map +1 -0
- package/dist/list-6CPPEJQV.js +75 -0
- package/dist/list-6CPPEJQV.js.map +1 -0
- package/dist/list-6UYNGBNA.mjs +75 -0
- package/dist/list-7F3TLLLA.js +85 -0
- package/dist/list-7F3TLLLA.js.map +1 -0
- package/dist/list-AVYXRPYR.mjs +53 -0
- package/dist/list-BI6VDR3L.mjs +80 -0
- package/dist/list-BIXZNQNL.mjs +90 -0
- package/dist/list-E2NKP4RN.mjs +71 -0
- package/dist/list-EX74E4W3.js +82 -0
- package/dist/list-EX74E4W3.js.map +1 -0
- package/dist/list-F7RK6OGO.js +71 -0
- package/dist/list-F7RK6OGO.js.map +1 -0
- package/dist/list-FQVXBMOV.js +82 -0
- package/dist/list-FQVXBMOV.js.map +1 -0
- package/dist/list-FTAHO7RS.js +53 -0
- package/dist/list-FTAHO7RS.js.map +1 -0
- package/dist/list-HJFLTMZZ.js +80 -0
- package/dist/list-HJFLTMZZ.js.map +1 -0
- package/dist/list-HZCZZBHB.js +83 -0
- package/dist/list-HZCZZBHB.js.map +1 -0
- package/dist/list-IIUX33VL.mjs +86 -0
- package/dist/list-JFASUTLY.js +78 -0
- package/dist/list-JFASUTLY.js.map +1 -0
- package/dist/list-KJIOIAVI.mjs +80 -0
- package/dist/list-LKNXTUMI.js +104 -0
- package/dist/list-LKNXTUMI.js.map +1 -0
- package/dist/list-M34E5BJ5.js +80 -0
- package/dist/list-M34E5BJ5.js.map +1 -0
- package/dist/list-MX4GYY6P.mjs +87 -0
- package/dist/list-O5SCIB3L.js +75 -0
- package/dist/list-O5SCIB3L.js.map +1 -0
- package/dist/list-O6OJ5XHC.mjs +72 -0
- package/dist/list-ODC5L7LD.mjs +83 -0
- package/dist/list-Q5WBWW4Q.mjs +82 -0
- package/dist/list-QA563QDB.js +90 -0
- package/dist/list-QA563QDB.js.map +1 -0
- package/dist/list-RJFCSUUQ.mjs +111 -0
- package/dist/list-RMHLZBQG.js +76 -0
- package/dist/list-RMHLZBQG.js.map +1 -0
- package/dist/list-SRYZRJCV.js +111 -0
- package/dist/list-SRYZRJCV.js.map +1 -0
- package/dist/list-TOSZ7BU7.js +86 -0
- package/dist/list-TOSZ7BU7.js.map +1 -0
- package/dist/list-UQQ2PAU3.mjs +104 -0
- package/dist/list-V2WO7LLU.js +72 -0
- package/dist/list-V2WO7LLU.js.map +1 -0
- package/dist/list-VA5A3CCK.mjs +75 -0
- package/dist/list-X6EIZ5MP.js +75 -0
- package/dist/list-X6EIZ5MP.js.map +1 -0
- package/dist/list-Z4GK3RXW.js +78 -0
- package/dist/list-Z4GK3RXW.js.map +1 -0
- package/dist/list-ZBKYVBPN.mjs +85 -0
- package/dist/list-ZDLAHVOP.mjs +78 -0
- package/dist/list-ZONPFTHT.mjs +82 -0
- package/dist/login-UWJ4SQ3T.mjs +279 -0
- package/dist/login-UWJ4SQ3T.mjs.map +1 -0
- package/dist/login-Y3TEPZOC.js +279 -0
- package/dist/login-Y3TEPZOC.js.map +1 -0
- package/dist/logout-RTWQU22E.mjs +181 -0
- package/dist/logout-RTWQU22E.mjs.map +1 -0
- package/dist/logout-TXOAFCK7.js +181 -0
- package/dist/logout-TXOAFCK7.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 +9 -7
- 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 -17
- package/dist/observability-sdk/instrumentation/langchain/index.mjs +3 -3
- package/dist/observability-sdk/setup/node/index.js +6 -6
- package/dist/observability-sdk/setup/node/index.mjs +5 -5
- package/dist/pull-3MXPXKVF.mjs +27 -0
- package/dist/pull-5RX2YX5P.js +27 -0
- package/dist/pull-5RX2YX5P.js.map +1 -0
- package/dist/push-7L3NXCCJ.mjs +27 -0
- package/dist/push-QPS47QAN.js +27 -0
- package/dist/push-QPS47QAN.js.map +1 -0
- package/dist/query-2PAEPPLR.js +122 -0
- package/dist/query-2PAEPPLR.js.map +1 -0
- package/dist/query-FJ4JJLRH.mjs +122 -0
- package/dist/records-add-K6ZRY3MM.mjs +98 -0
- package/dist/records-add-OQK2SWSP.js +98 -0
- package/dist/records-add-OQK2SWSP.js.map +1 -0
- package/dist/records-delete-DPNRLQRU.mjs +46 -0
- package/dist/records-delete-UC3XJNIF.js +46 -0
- package/dist/records-delete-UC3XJNIF.js.map +1 -0
- package/dist/records-list-AC7ADD4R.js +89 -0
- package/dist/records-list-AC7ADD4R.js.map +1 -0
- package/dist/records-list-EEDFGR5M.mjs +89 -0
- package/dist/records-update-R5G7AOMD.js +53 -0
- package/dist/records-update-R5G7AOMD.js.map +1 -0
- package/dist/records-update-V23XILMF.mjs +53 -0
- package/dist/remove-JS3XWII2.mjs +114 -0
- package/dist/remove-QU7WDHPI.js +114 -0
- package/dist/remove-QU7WDHPI.js.map +1 -0
- package/dist/rename-AQZWJOSA.js +42 -0
- package/dist/rename-AQZWJOSA.js.map +1 -0
- package/dist/rename-NX4OMJDP.mjs +42 -0
- package/dist/restore-HTAPXIPP.js +73 -0
- package/dist/restore-HTAPXIPP.js.map +1 -0
- package/dist/restore-R5LY5MWO.mjs +73 -0
- package/dist/revoke-2JIUV7JE.mjs +41 -0
- package/dist/revoke-GH3YEBRW.js +44 -0
- package/dist/revoke-GH3YEBRW.js.map +1 -0
- package/dist/revoke-MS5OZQHS.js +41 -0
- package/dist/revoke-MS5OZQHS.js.map +1 -0
- package/dist/revoke-TQJVF3BL.mjs +44 -0
- package/dist/rotate-QUP62JOC.mjs +52 -0
- package/dist/rotate-U3RJTWOO.js +52 -0
- package/dist/rotate-U3RJTWOO.js.map +1 -0
- package/dist/run-2KC3XYCD.js +77 -0
- package/dist/run-2KC3XYCD.js.map +1 -0
- package/dist/run-35JPAOLO.mjs +83 -0
- package/dist/run-5YPCH5US.mjs +77 -0
- package/dist/run-6BUAGYXY.mjs +142 -0
- package/dist/run-BB27OOPE.js +131 -0
- package/dist/run-BB27OOPE.js.map +1 -0
- package/dist/run-BPTFP3HA.mjs +144 -0
- package/dist/run-DVPUVKTV.mjs +131 -0
- package/dist/run-GJEOP5LP.js +144 -0
- package/dist/run-GJEOP5LP.js.map +1 -0
- package/dist/run-JLC2AGGB.js +83 -0
- package/dist/run-JLC2AGGB.js.map +1 -0
- package/dist/run-P5B7FK6K.js +142 -0
- package/dist/run-P5B7FK6K.js.map +1 -0
- package/dist/search-FMFV6U6P.mjs +108 -0
- package/dist/search-LEF4NLQJ.js +108 -0
- package/dist/search-LEF4NLQJ.js.map +1 -0
- package/dist/set-7Q2IUUPV.mjs +105 -0
- package/dist/set-DYXQGJNE.js +59 -0
- package/dist/set-DYXQGJNE.js.map +1 -0
- package/dist/set-FVXIBW4X.js +105 -0
- package/dist/set-FVXIBW4X.js.map +1 -0
- package/dist/set-PMA5UWDK.mjs +59 -0
- package/dist/status-DS55UJ7O.mjs +153 -0
- package/dist/status-KH64EWPP.js +153 -0
- package/dist/status-KH64EWPP.js.map +1 -0
- package/dist/status-OAD2U66Z.js +122 -0
- package/dist/status-OAD2U66Z.js.map +1 -0
- package/dist/status-U3EPMBTN.mjs +122 -0
- package/dist/status-U3EPMBTN.mjs.map +1 -0
- package/dist/sync-PKDE2D7V.js +132 -0
- package/dist/sync-PKDE2D7V.js.map +1 -0
- package/dist/sync-XV5HX5TO.mjs +132 -0
- package/dist/types-CYfKDbKj.d.ts +15207 -0
- package/dist/types-fzTtg5sg.d.mts +15207 -0
- package/dist/unset-FGAQM4WA.js +107 -0
- package/dist/unset-FGAQM4WA.js.map +1 -0
- package/dist/unset-TVSHRR64.mjs +107 -0
- package/dist/update-337XCLM7.mjs +65 -0
- package/dist/update-43JHGSN7.js +106 -0
- package/dist/update-43JHGSN7.js.map +1 -0
- package/dist/update-4KGPCVCD.js +71 -0
- package/dist/update-4KGPCVCD.js.map +1 -0
- package/dist/update-5DIMZPJB.mjs +71 -0
- package/dist/update-5WVIKR5E.js +48 -0
- package/dist/update-5WVIKR5E.js.map +1 -0
- package/dist/update-AAZVLFRJ.js +75 -0
- package/dist/update-AAZVLFRJ.js.map +1 -0
- package/dist/update-APD7MSPV.js +61 -0
- package/dist/update-APD7MSPV.js.map +1 -0
- package/dist/update-AR7L7TOZ.js +48 -0
- package/dist/update-AR7L7TOZ.js.map +1 -0
- package/dist/update-C3I3BHWG.js +63 -0
- package/dist/update-C3I3BHWG.js.map +1 -0
- package/dist/update-CDBNRXSO.mjs +106 -0
- package/dist/update-CXYYWVNO.mjs +75 -0
- package/dist/update-DUJU3A4R.mjs +48 -0
- package/dist/update-E3GH3WEX.mjs +83 -0
- package/dist/update-HHGQ2DVM.js +83 -0
- package/dist/update-HHGQ2DVM.js.map +1 -0
- package/dist/update-IFDJZ6LW.js +66 -0
- package/dist/update-IFDJZ6LW.js.map +1 -0
- package/dist/update-JEGVDVSK.js +51 -0
- package/dist/update-JEGVDVSK.js.map +1 -0
- package/dist/update-JL3MKZXC.mjs +66 -0
- package/dist/update-JUTNNHSA.mjs +51 -0
- package/dist/update-MBBSJQJL.mjs +79 -0
- package/dist/update-NOYJVXCB.mjs +63 -0
- package/dist/update-OFUQFYBD.js +76 -0
- package/dist/update-OFUQFYBD.js.map +1 -0
- package/dist/update-OZC2S3BC.js +79 -0
- package/dist/update-OZC2S3BC.js.map +1 -0
- package/dist/update-P4PNDOMU.mjs +63 -0
- package/dist/update-RJFENG32.mjs +48 -0
- package/dist/update-W2RQW53I.js +65 -0
- package/dist/update-W2RQW53I.js.map +1 -0
- package/dist/update-WFGCL4JS.mjs +61 -0
- package/dist/update-WTIR2BYE.js +63 -0
- package/dist/update-WTIR2BYE.js.map +1 -0
- package/dist/update-X7J6WRG3.mjs +76 -0
- package/dist/upload-7O3K4YAL.mjs +80 -0
- package/dist/upload-DJA44RJ3.js +80 -0
- package/dist/upload-DJA44RJ3.js.map +1 -0
- package/dist/versions-2JD6EKCA.js +85 -0
- package/dist/versions-2JD6EKCA.js.map +1 -0
- package/dist/versions-HXI6GAD2.mjs +85 -0
- package/dist/wrap-LBMHL6N6.mjs +33 -0
- package/dist/wrap-LBMHL6N6.mjs.map +1 -0
- package/dist/wrap-O7DQWEVA.js +33 -0
- package/dist/wrap-O7DQWEVA.js.map +1 -0
- package/package.json +13 -13
- package/dist/add-52KP5RUX.mjs +0 -148
- package/dist/add-7Y6MH725.js +0 -148
- package/dist/add-7Y6MH725.js.map +0 -1
- package/dist/archive-MHACABLP.js +0 -41
- package/dist/archive-MHACABLP.js.map +0 -1
- package/dist/archive-ZKTGGFDU.mjs +0 -41
- package/dist/assign-NCK27ZW5.js +0 -54
- package/dist/assign-NCK27ZW5.js.map +0 -1
- package/dist/assign-W7HMZLLA.mjs +0 -54
- package/dist/chunk-26WXZOLY.js +0 -70
- package/dist/chunk-26WXZOLY.js.map +0 -1
- package/dist/chunk-2PNM3JZ7.js +0 -75
- package/dist/chunk-2PNM3JZ7.js.map +0 -1
- package/dist/chunk-2XTZ7GBC.mjs +0 -90
- package/dist/chunk-3BDHATON.js +0 -36
- package/dist/chunk-3BDHATON.js.map +0 -1
- package/dist/chunk-3CPA262Z.mjs +0 -124
- package/dist/chunk-3CPA262Z.mjs.map +0 -1
- package/dist/chunk-43OERQAS.js +0 -96
- package/dist/chunk-43OERQAS.js.map +0 -1
- package/dist/chunk-4F3LCT7U.js +0 -42
- package/dist/chunk-4F3LCT7U.js.map +0 -1
- package/dist/chunk-4VOXYSVX.mjs +0 -196
- package/dist/chunk-5C7DPGRK.mjs +0 -34
- package/dist/chunk-5U4XEWEX.mjs +0 -136
- package/dist/chunk-5U4XEWEX.mjs.map +0 -1
- package/dist/chunk-7YJMKWOH.mjs +0 -80
- package/dist/chunk-A6HNRJNS.js +0 -92
- package/dist/chunk-A6HNRJNS.js.map +0 -1
- package/dist/chunk-AJUCX3LD.mjs +0 -40
- package/dist/chunk-BMBIZJCM.js +0 -103
- package/dist/chunk-BMBIZJCM.js.map +0 -1
- package/dist/chunk-BU2DXABO.mjs +0 -85
- package/dist/chunk-BWALMZEU.mjs +0 -101
- package/dist/chunk-C6ZREBUA.js +0 -300
- package/dist/chunk-C6ZREBUA.js.map +0 -1
- package/dist/chunk-DBKEEEEC.js +0 -66
- package/dist/chunk-DBKEEEEC.js.map +0 -1
- package/dist/chunk-DC7HLQID.mjs +0 -51
- package/dist/chunk-DZTI6GOB.mjs +0 -36
- package/dist/chunk-DZTI6GOB.mjs.map +0 -1
- package/dist/chunk-E5ZEMGE7.mjs +0 -63
- package/dist/chunk-E5ZEMGE7.mjs.map +0 -1
- package/dist/chunk-EGOB3GIL.mjs +0 -156
- package/dist/chunk-EGOB3GIL.mjs.map +0 -1
- package/dist/chunk-F4FGQZND.mjs +0 -348
- package/dist/chunk-FAXQN7S5.js +0 -68
- package/dist/chunk-FAXQN7S5.js.map +0 -1
- package/dist/chunk-FLYABTMA.js +0 -855
- package/dist/chunk-FLYABTMA.js.map +0 -1
- package/dist/chunk-FMPW7DZ3.mjs +0 -80
- package/dist/chunk-GIT5RVG4.mjs +0 -76
- package/dist/chunk-GVFRS2UN.mjs +0 -133
- package/dist/chunk-GW2YXZYN.js +0 -300
- package/dist/chunk-GW2YXZYN.js.map +0 -1
- package/dist/chunk-H2DTN2TK.mjs +0 -70
- package/dist/chunk-HKFNWLCD.js +0 -663
- package/dist/chunk-HKFNWLCD.js.map +0 -1
- package/dist/chunk-I2663VLP.js +0 -85
- package/dist/chunk-I2663VLP.js.map +0 -1
- package/dist/chunk-I6QOTFMP.mjs +0 -53
- package/dist/chunk-I6QOTFMP.mjs.map +0 -1
- package/dist/chunk-IRBHL4BD.js +0 -80
- package/dist/chunk-IRBHL4BD.js.map +0 -1
- package/dist/chunk-IRVNIJXP.js +0 -51
- package/dist/chunk-IRVNIJXP.js.map +0 -1
- package/dist/chunk-IXYZL7U2.js +0 -65
- package/dist/chunk-IXYZL7U2.js.map +0 -1
- package/dist/chunk-JBEVRIYW.mjs +0 -894
- package/dist/chunk-JOLGDU7Q.mjs +0 -65
- package/dist/chunk-KUEKEUKX.mjs +0 -36
- package/dist/chunk-LEJQMDGN.js +0 -894
- package/dist/chunk-LEJQMDGN.js.map +0 -1
- package/dist/chunk-M52LTOUT.js +0 -1433
- package/dist/chunk-M52LTOUT.js.map +0 -1
- package/dist/chunk-MHMMZ653.js +0 -40
- package/dist/chunk-MHMMZ653.js.map +0 -1
- package/dist/chunk-MLGGUNZK.js +0 -90
- package/dist/chunk-MLGGUNZK.js.map +0 -1
- package/dist/chunk-N37FLXEP.js +0 -76
- package/dist/chunk-N37FLXEP.js.map +0 -1
- package/dist/chunk-NC42BNF4.js +0 -63
- package/dist/chunk-NC42BNF4.js.map +0 -1
- package/dist/chunk-NNPQSPYD.js +0 -348
- package/dist/chunk-NNPQSPYD.js.map +0 -1
- package/dist/chunk-NW4HASQV.js +0 -80
- package/dist/chunk-NW4HASQV.js.map +0 -1
- package/dist/chunk-O444ZEPO.mjs +0 -300
- package/dist/chunk-O444ZEPO.mjs.map +0 -1
- package/dist/chunk-O75KIBCK.js +0 -512
- package/dist/chunk-O75KIBCK.js.map +0 -1
- package/dist/chunk-OJ4URNYC.mjs +0 -54
- package/dist/chunk-ONN7U6WN.js +0 -54
- package/dist/chunk-ONN7U6WN.js.map +0 -1
- package/dist/chunk-OUJ7Z4TK.mjs +0 -103
- package/dist/chunk-PVOHCPWP.mjs +0 -855
- package/dist/chunk-PVOHCPWP.mjs.map +0 -1
- package/dist/chunk-PXW5C7HA.js +0 -36
- package/dist/chunk-PXW5C7HA.js.map +0 -1
- package/dist/chunk-QAZHQ7SZ.mjs +0 -300
- package/dist/chunk-QGGX6LSK.mjs +0 -512
- package/dist/chunk-R3PLRKDO.mjs +0 -68
- package/dist/chunk-S4JKLESF.js +0 -124
- package/dist/chunk-S4JKLESF.js.map +0 -1
- package/dist/chunk-SBBELZKD.js +0 -101
- package/dist/chunk-SBBELZKD.js.map +0 -1
- package/dist/chunk-SIIRLUO4.js +0 -136
- package/dist/chunk-SIIRLUO4.js.map +0 -1
- package/dist/chunk-SRGYS3N7.js +0 -196
- package/dist/chunk-SRGYS3N7.js.map +0 -1
- package/dist/chunk-SUANHT23.mjs +0 -92
- package/dist/chunk-SWPMKS2X.mjs +0 -1433
- package/dist/chunk-SWPMKS2X.mjs.map +0 -1
- package/dist/chunk-T7AFY3JF.js +0 -63
- package/dist/chunk-T7AFY3JF.js.map +0 -1
- package/dist/chunk-U4PE5N4K.js +0 -34
- package/dist/chunk-U4PE5N4K.js.map +0 -1
- package/dist/chunk-VS22JXRY.js +0 -133
- package/dist/chunk-VS22JXRY.js.map +0 -1
- package/dist/chunk-W35QTHIH.mjs +0 -63
- package/dist/chunk-W7DAEYAO.js +0 -53
- package/dist/chunk-W7DAEYAO.js.map +0 -1
- package/dist/chunk-X4BHZH7P.js +0 -156
- package/dist/chunk-X4BHZH7P.js.map +0 -1
- package/dist/chunk-X6NSR74I.mjs +0 -663
- package/dist/chunk-XHQP55GA.mjs +0 -42
- package/dist/chunk-XLJ5GJTK.mjs +0 -42
- package/dist/chunk-XMAAQWBG.mjs +0 -96
- package/dist/chunk-YF4IFY2X.js +0 -42
- package/dist/chunk-YF4IFY2X.js.map +0 -1
- package/dist/chunk-YIACSQXG.mjs +0 -66
- package/dist/chunk-YQNOLNAK.mjs +0 -75
- package/dist/config-QAMXJYXX.js +0 -96
- package/dist/config-QAMXJYXX.js.map +0 -1
- package/dist/config-VPRQKJMJ.mjs +0 -96
- package/dist/create-2FRM4WVA.mjs +0 -52
- package/dist/create-34FEJBYM.js +0 -49
- package/dist/create-34FEJBYM.js.map +0 -1
- package/dist/create-36DDGEPS.js +0 -50
- package/dist/create-36DDGEPS.js.map +0 -1
- package/dist/create-3IUBLMI7.mjs +0 -43
- package/dist/create-3NCRMEMB.mjs +0 -72
- package/dist/create-4GFIXF5E.mjs +0 -58
- package/dist/create-4ODQ66VV.mjs +0 -91
- package/dist/create-5TFOS2OJ.mjs +0 -42
- package/dist/create-7OBPYNWK.js +0 -42
- package/dist/create-7OBPYNWK.js.map +0 -1
- package/dist/create-ACC73K6P.mjs +0 -87
- package/dist/create-DRTKTUVY.js +0 -48
- package/dist/create-DRTKTUVY.js.map +0 -1
- package/dist/create-DYCE3DG5.mjs +0 -75
- package/dist/create-EASGLRR7.js +0 -58
- package/dist/create-EASGLRR7.js.map +0 -1
- package/dist/create-EBEOJS2H.mjs +0 -50
- package/dist/create-FJMGFFCM.mjs +0 -92
- package/dist/create-I5INSZYR.mjs +0 -88
- package/dist/create-IPLFOXBK.js +0 -91
- package/dist/create-IPLFOXBK.js.map +0 -1
- package/dist/create-IZAVSAXI.js +0 -72
- package/dist/create-IZAVSAXI.js.map +0 -1
- package/dist/create-P3647AMU.mjs +0 -94
- package/dist/create-PL3BMGB5.js +0 -43
- package/dist/create-PL3BMGB5.js.map +0 -1
- package/dist/create-Q6WY7YSF.js +0 -52
- package/dist/create-Q6WY7YSF.js.map +0 -1
- package/dist/create-RGZUQUZO.js +0 -94
- package/dist/create-RGZUQUZO.js.map +0 -1
- package/dist/create-SPAXSFIN.mjs +0 -88
- package/dist/create-SYHW6YGS.js +0 -88
- package/dist/create-SYHW6YGS.js.map +0 -1
- package/dist/create-T3V4JRJQ.mjs +0 -71
- package/dist/create-TCP2VODP.js +0 -88
- package/dist/create-TCP2VODP.js.map +0 -1
- package/dist/create-TZ76BDWV.mjs +0 -49
- package/dist/create-UKY4IZ7G.js +0 -87
- package/dist/create-UKY4IZ7G.js.map +0 -1
- package/dist/create-WGU3PIT2.js +0 -71
- package/dist/create-WGU3PIT2.js.map +0 -1
- package/dist/create-WTO4NPVP.js +0 -75
- package/dist/create-WTO4NPVP.js.map +0 -1
- package/dist/create-XPJS3IZT.mjs +0 -48
- package/dist/create-ZBLKIRIH.js +0 -23
- package/dist/create-ZBLKIRIH.js.map +0 -1
- package/dist/create-ZU4LXLBN.mjs +0 -23
- package/dist/create-ZW3J4VVP.js +0 -92
- package/dist/create-ZW3J4VVP.js.map +0 -1
- package/dist/delete-3PMEY5RH.mjs +0 -42
- package/dist/delete-6FRZ6LJJ.mjs +0 -61
- package/dist/delete-7KSO3V3O.js +0 -39
- package/dist/delete-7KSO3V3O.js.map +0 -1
- package/dist/delete-BPKFSXIY.js +0 -52
- package/dist/delete-BPKFSXIY.js.map +0 -1
- package/dist/delete-BSYUEGEX.js +0 -52
- package/dist/delete-BSYUEGEX.js.map +0 -1
- package/dist/delete-DOIVCA44.js +0 -52
- package/dist/delete-DOIVCA44.js.map +0 -1
- package/dist/delete-DSDE42CQ.js +0 -41
- package/dist/delete-DSDE42CQ.js.map +0 -1
- package/dist/delete-E2O6CPEK.mjs +0 -38
- package/dist/delete-FLA25Y4H.js +0 -39
- package/dist/delete-FLA25Y4H.js.map +0 -1
- package/dist/delete-G5IYZ6R5.mjs +0 -59
- package/dist/delete-HZIBPYQY.js +0 -61
- package/dist/delete-HZIBPYQY.js.map +0 -1
- package/dist/delete-IRJG3K2J.mjs +0 -41
- package/dist/delete-JMX33YI4.mjs +0 -52
- package/dist/delete-KNAPRRCM.js +0 -44
- package/dist/delete-KNAPRRCM.js.map +0 -1
- package/dist/delete-M7EG5VPB.mjs +0 -39
- package/dist/delete-MSAI4E5L.js +0 -52
- package/dist/delete-MSAI4E5L.js.map +0 -1
- package/dist/delete-NH4NQLFP.mjs +0 -57
- package/dist/delete-NH4NQLFP.mjs.map +0 -1
- package/dist/delete-NPKRSFGU.js +0 -57
- package/dist/delete-NPKRSFGU.js.map +0 -1
- package/dist/delete-POZCY7IQ.mjs +0 -52
- package/dist/delete-R2HXHQBB.js +0 -42
- package/dist/delete-R2HXHQBB.js.map +0 -1
- package/dist/delete-TSXQER52.js +0 -59
- package/dist/delete-TSXQER52.js.map +0 -1
- package/dist/delete-U655HP5R.mjs +0 -39
- package/dist/delete-UERL72WN.js +0 -38
- package/dist/delete-UERL72WN.js.map +0 -1
- package/dist/delete-UTKUA6Z4.mjs +0 -52
- package/dist/delete-WP3JYGLE.mjs +0 -59
- package/dist/delete-X6JLYJCH.js +0 -59
- package/dist/delete-X6JLYJCH.js.map +0 -1
- package/dist/delete-XAUAF53M.mjs +0 -52
- package/dist/delete-YT3ID37D.mjs +0 -44
- package/dist/download-F2DXRLJP.mjs +0 -100
- package/dist/download-PK2DSPEO.js +0 -100
- package/dist/download-PK2DSPEO.js.map +0 -1
- package/dist/duplicate-B7OUVDVB.mjs +0 -45
- package/dist/duplicate-IGMNYMPS.js +0 -45
- package/dist/duplicate-IGMNYMPS.js.map +0 -1
- package/dist/export-SNBK2AV4.mjs +0 -103
- package/dist/export-VIEFMUVQ.js +0 -103
- package/dist/export-VIEFMUVQ.js.map +0 -1
- package/dist/get-45ULRVIG.js +0 -49
- package/dist/get-45ULRVIG.js.map +0 -1
- package/dist/get-4NKLZBDS.mjs +0 -85
- package/dist/get-5HAYNLXN.js +0 -85
- package/dist/get-5HAYNLXN.js.map +0 -1
- package/dist/get-6CNGBUW6.js +0 -71
- package/dist/get-6CNGBUW6.js.map +0 -1
- package/dist/get-6ECLGAOQ.js +0 -67
- package/dist/get-6ECLGAOQ.js.map +0 -1
- package/dist/get-ATD54O5U.js +0 -94
- package/dist/get-ATD54O5U.js.map +0 -1
- package/dist/get-BOXL42XW.mjs +0 -66
- package/dist/get-C6OSKZH3.js +0 -51
- package/dist/get-C6OSKZH3.js.map +0 -1
- package/dist/get-C7SCGYAT.js +0 -70
- package/dist/get-C7SCGYAT.js.map +0 -1
- package/dist/get-CLTPKM7D.mjs +0 -68
- package/dist/get-CRGWXOZP.mjs +0 -70
- package/dist/get-D6SHECLX.mjs +0 -51
- package/dist/get-EH37CXA2.js +0 -149
- package/dist/get-EH37CXA2.js.map +0 -1
- package/dist/get-FBWUXIQN.js +0 -76
- package/dist/get-FBWUXIQN.js.map +0 -1
- package/dist/get-FCJFZY5M.js +0 -56
- package/dist/get-FCJFZY5M.js.map +0 -1
- package/dist/get-H3DWTNDA.js +0 -71
- package/dist/get-H3DWTNDA.js.map +0 -1
- package/dist/get-JKRW7OHW.mjs +0 -52
- package/dist/get-KS3QMH5A.mjs +0 -76
- package/dist/get-NP6FEVLY.mjs +0 -49
- package/dist/get-P7W3V3CB.mjs +0 -52
- package/dist/get-P7W3V3CB.mjs.map +0 -1
- package/dist/get-QO7VEIRN.mjs +0 -149
- package/dist/get-QUXBSMZE.js +0 -52
- package/dist/get-QUXBSMZE.js.map +0 -1
- package/dist/get-ROAE6T5N.mjs +0 -56
- package/dist/get-RYIZPF25.mjs +0 -71
- package/dist/get-T5BHOLX2.js +0 -68
- package/dist/get-T5BHOLX2.js.map +0 -1
- package/dist/get-TITUKTHE.mjs +0 -71
- package/dist/get-UOZBGGCG.mjs +0 -71
- package/dist/get-WW7HVSUY.mjs +0 -67
- package/dist/get-XDNDTHQU.js +0 -71
- package/dist/get-XDNDTHQU.js.map +0 -1
- package/dist/get-YPCHKUHM.js +0 -52
- package/dist/get-YPCHKUHM.js.map +0 -1
- package/dist/get-ZLSHYP57.js +0 -66
- package/dist/get-ZLSHYP57.js.map +0 -1
- package/dist/get-ZXTDMVWX.mjs +0 -94
- package/dist/implementation-Cbelb5TK.d.ts +0 -716
- package/dist/implementation-Oz1fNv8p.d.mts +0 -716
- package/dist/init-shell-AEPYN2KV.mjs +0 -72
- package/dist/init-shell-AEPYN2KV.mjs.map +0 -1
- package/dist/init-shell-ULEEQ522.js +0 -72
- package/dist/init-shell-ULEEQ522.js.map +0 -1
- package/dist/install-PQACVMPW.mjs +0 -191
- package/dist/install-UAGU7V2O.js +0 -191
- package/dist/install-UAGU7V2O.js.map +0 -1
- package/dist/list-44QMJJBX.js +0 -82
- package/dist/list-44QMJJBX.js.map +0 -1
- package/dist/list-45DYTLFR.js +0 -86
- package/dist/list-45DYTLFR.js.map +0 -1
- package/dist/list-53O3I5OT.js +0 -53
- package/dist/list-53O3I5OT.js.map +0 -1
- package/dist/list-5RDJDIDE.js +0 -78
- package/dist/list-5RDJDIDE.js.map +0 -1
- package/dist/list-6ZUZ54WZ.mjs +0 -83
- package/dist/list-7TJVXJW3.mjs +0 -75
- package/dist/list-BJXU6QSV.js +0 -87
- package/dist/list-BJXU6QSV.js.map +0 -1
- package/dist/list-C4TIICKC.mjs +0 -82
- package/dist/list-CH36A6CW.js +0 -80
- package/dist/list-CH36A6CW.js.map +0 -1
- package/dist/list-CSPHALVP.mjs +0 -111
- package/dist/list-CSZZQTHD.mjs +0 -82
- package/dist/list-DEQI2KOQ.js +0 -72
- package/dist/list-DEQI2KOQ.js.map +0 -1
- package/dist/list-FJ2T2GJT.js +0 -104
- package/dist/list-FJ2T2GJT.js.map +0 -1
- package/dist/list-FRLZQVS6.js +0 -71
- package/dist/list-FRLZQVS6.js.map +0 -1
- package/dist/list-FYKAGJ6V.mjs +0 -87
- package/dist/list-G3ASKJUN.mjs +0 -104
- package/dist/list-GGTQOQA4.js +0 -111
- package/dist/list-GGTQOQA4.js.map +0 -1
- package/dist/list-GL4SXZ2E.js +0 -82
- package/dist/list-GL4SXZ2E.js.map +0 -1
- package/dist/list-GYJNBKUF.mjs +0 -53
- package/dist/list-J33YMH3T.js +0 -78
- package/dist/list-J33YMH3T.js.map +0 -1
- package/dist/list-J55FWBDR.js +0 -75
- package/dist/list-J55FWBDR.js.map +0 -1
- package/dist/list-JMX456IB.js +0 -75
- package/dist/list-JMX456IB.js.map +0 -1
- package/dist/list-KX4MIAJE.mjs +0 -85
- package/dist/list-L33MTOSA.mjs +0 -80
- package/dist/list-LKF24T6D.js +0 -83
- package/dist/list-LKF24T6D.js.map +0 -1
- package/dist/list-M3IEVLUD.mjs +0 -86
- package/dist/list-M77G2Y5F.js +0 -76
- package/dist/list-M77G2Y5F.js.map +0 -1
- package/dist/list-MSIHIWG5.js +0 -80
- package/dist/list-MSIHIWG5.js.map +0 -1
- package/dist/list-N4LN7RVG.mjs +0 -90
- package/dist/list-OZDM5FA6.mjs +0 -75
- package/dist/list-PKDYDBNU.js +0 -75
- package/dist/list-PKDYDBNU.js.map +0 -1
- package/dist/list-PYQZKUBA.js +0 -85
- package/dist/list-PYQZKUBA.js.map +0 -1
- package/dist/list-QZZLS5TP.js +0 -78
- package/dist/list-QZZLS5TP.js.map +0 -1
- package/dist/list-R4SZ3SMF.mjs +0 -78
- package/dist/list-R4SZ3SMF.mjs.map +0 -1
- package/dist/list-TAFBD6EY.mjs +0 -71
- package/dist/list-VJL5TZ4T.mjs +0 -72
- package/dist/list-VKNEMSY4.mjs +0 -80
- package/dist/list-WJNJNMQC.mjs +0 -75
- package/dist/list-XRW6CP7E.js +0 -90
- package/dist/list-XRW6CP7E.js.map +0 -1
- package/dist/list-YAR5NB2Q.mjs +0 -76
- package/dist/list-Z3YOLIK2.mjs +0 -78
- package/dist/list-Z6OG6DLD.mjs +0 -78
- package/dist/login-7N3FOJOH.mjs +0 -280
- package/dist/login-7N3FOJOH.mjs.map +0 -1
- package/dist/login-JC4YGO3M.js +0 -280
- package/dist/login-JC4YGO3M.js.map +0 -1
- package/dist/logout-device-J325Y37F.js +0 -39
- package/dist/logout-device-J325Y37F.js.map +0 -1
- package/dist/logout-device-JOPQKPFL.mjs +0 -39
- package/dist/logout-device-JOPQKPFL.mjs.map +0 -1
- package/dist/pull-GBTWGZX6.js +0 -27
- package/dist/pull-GBTWGZX6.js.map +0 -1
- package/dist/pull-VHGPIULB.mjs +0 -27
- package/dist/push-5CNRDWJU.js +0 -27
- package/dist/push-5CNRDWJU.js.map +0 -1
- package/dist/push-ZPL2UNNV.mjs +0 -27
- package/dist/query-5R2V74N2.js +0 -122
- package/dist/query-5R2V74N2.js.map +0 -1
- package/dist/query-PRJT7GQY.mjs +0 -122
- package/dist/records-add-E3S34UNT.js +0 -98
- package/dist/records-add-E3S34UNT.js.map +0 -1
- package/dist/records-add-P2FTGDNL.mjs +0 -98
- package/dist/records-delete-GCB6S4F3.js +0 -46
- package/dist/records-delete-GCB6S4F3.js.map +0 -1
- package/dist/records-delete-TZATYNEX.mjs +0 -46
- package/dist/records-list-AI5CT26J.mjs +0 -89
- package/dist/records-list-XXOWLCZT.js +0 -89
- package/dist/records-list-XXOWLCZT.js.map +0 -1
- package/dist/records-update-TK3HWM2C.mjs +0 -53
- package/dist/records-update-ZVKQVZHW.js +0 -53
- package/dist/records-update-ZVKQVZHW.js.map +0 -1
- package/dist/remove-DPTA2GMZ.js +0 -114
- package/dist/remove-DPTA2GMZ.js.map +0 -1
- package/dist/remove-XAF4RTKP.mjs +0 -114
- package/dist/rename-AAQZTQCF.mjs +0 -42
- package/dist/rename-YG4P5PRQ.js +0 -42
- package/dist/rename-YG4P5PRQ.js.map +0 -1
- package/dist/restore-6TIHZUPS.js +0 -73
- package/dist/restore-6TIHZUPS.js.map +0 -1
- package/dist/restore-VJDHJ7Y3.mjs +0 -73
- package/dist/revoke-7HUYDQZ6.mjs +0 -44
- package/dist/revoke-OHOLPKBQ.js +0 -44
- package/dist/revoke-OHOLPKBQ.js.map +0 -1
- package/dist/revoke-OQQ56B2Z.js +0 -41
- package/dist/revoke-OQQ56B2Z.js.map +0 -1
- package/dist/revoke-UUVPYOPV.mjs +0 -41
- package/dist/rotate-D2QBTQC7.js +0 -52
- package/dist/rotate-D2QBTQC7.js.map +0 -1
- package/dist/rotate-MU4L6YPU.mjs +0 -52
- package/dist/run-2KISYEZP.js +0 -83
- package/dist/run-2KISYEZP.js.map +0 -1
- package/dist/run-ARQ7O43R.js +0 -142
- package/dist/run-ARQ7O43R.js.map +0 -1
- package/dist/run-D4YIYYTE.mjs +0 -144
- package/dist/run-GC3RJI74.mjs +0 -131
- package/dist/run-HPDENKM2.js +0 -77
- package/dist/run-HPDENKM2.js.map +0 -1
- package/dist/run-NRODARJS.js +0 -144
- package/dist/run-NRODARJS.js.map +0 -1
- package/dist/run-PC5KFO4B.mjs +0 -142
- package/dist/run-URPG3S24.mjs +0 -83
- package/dist/run-V3O4TEQ2.js +0 -131
- package/dist/run-V3O4TEQ2.js.map +0 -1
- package/dist/run-WWBEHGYG.mjs +0 -77
- package/dist/search-L7IAXT4D.mjs +0 -108
- package/dist/search-M34FSP25.js +0 -108
- package/dist/search-M34FSP25.js.map +0 -1
- package/dist/set-5YJE4NOS.mjs +0 -105
- package/dist/set-6QKEZXES.js +0 -59
- package/dist/set-6QKEZXES.js.map +0 -1
- package/dist/set-ECD6VHQI.js +0 -105
- package/dist/set-ECD6VHQI.js.map +0 -1
- package/dist/set-X7XDEFU5.mjs +0 -59
- package/dist/status-6UGUEKSC.mjs +0 -120
- package/dist/status-6UGUEKSC.mjs.map +0 -1
- package/dist/status-DOPST7HX.js +0 -120
- package/dist/status-DOPST7HX.js.map +0 -1
- package/dist/status-PXWG34DC.mjs +0 -153
- package/dist/status-TA4AIE6X.js +0 -153
- package/dist/status-TA4AIE6X.js.map +0 -1
- package/dist/sync-IVZ5VCKT.js +0 -132
- package/dist/sync-IVZ5VCKT.js.map +0 -1
- package/dist/sync-JRLKLXA6.mjs +0 -132
- package/dist/types-BNbQoBnh.d.mts +0 -15022
- package/dist/types-CmMOt86P.d.ts +0 -15022
- package/dist/unset-GLPKW2JV.js +0 -107
- package/dist/unset-GLPKW2JV.js.map +0 -1
- package/dist/unset-WSH675SN.mjs +0 -107
- package/dist/update-3EI6SA7W.mjs +0 -65
- package/dist/update-3YLN3YXF.mjs +0 -83
- package/dist/update-4DSTSBSA.js +0 -51
- package/dist/update-4DSTSBSA.js.map +0 -1
- package/dist/update-4IRKH5VI.js +0 -48
- package/dist/update-4IRKH5VI.js.map +0 -1
- package/dist/update-62D6MLES.mjs +0 -79
- package/dist/update-7YUF7UJG.js +0 -61
- package/dist/update-7YUF7UJG.js.map +0 -1
- package/dist/update-AS7FCV5B.mjs +0 -61
- package/dist/update-BNJEOWPP.mjs +0 -71
- package/dist/update-CU4Z6XQR.mjs +0 -106
- package/dist/update-DSRRR6J7.js +0 -76
- package/dist/update-DSRRR6J7.js.map +0 -1
- package/dist/update-E6BQSBVN.mjs +0 -63
- package/dist/update-ELVULBIN.mjs +0 -63
- package/dist/update-EWBAZK64.mjs +0 -48
- package/dist/update-EWS5LIXP.mjs +0 -51
- package/dist/update-G2LS465K.js +0 -65
- package/dist/update-G2LS465K.js.map +0 -1
- package/dist/update-GEKVSLEY.js +0 -79
- package/dist/update-GEKVSLEY.js.map +0 -1
- package/dist/update-GFAZJBC2.mjs +0 -75
- package/dist/update-JJDVXFLD.mjs +0 -48
- package/dist/update-JXSPKDKA.mjs +0 -66
- package/dist/update-KDJ64TZ2.js +0 -48
- package/dist/update-KDJ64TZ2.js.map +0 -1
- package/dist/update-MF56UHWY.js +0 -106
- package/dist/update-MF56UHWY.js.map +0 -1
- package/dist/update-MTHJCYKT.js +0 -63
- package/dist/update-MTHJCYKT.js.map +0 -1
- package/dist/update-NGJUN2VK.mjs +0 -76
- package/dist/update-SFGJMGKD.js +0 -75
- package/dist/update-SFGJMGKD.js.map +0 -1
- package/dist/update-SZNXZ7Y3.js +0 -83
- package/dist/update-SZNXZ7Y3.js.map +0 -1
- package/dist/update-UJYDVNOF.js +0 -63
- package/dist/update-UJYDVNOF.js.map +0 -1
- package/dist/update-XNHGNAQL.js +0 -66
- package/dist/update-XNHGNAQL.js.map +0 -1
- package/dist/update-YA6C47QH.js +0 -71
- package/dist/update-YA6C47QH.js.map +0 -1
- package/dist/upload-FXQRYNQC.js +0 -80
- package/dist/upload-FXQRYNQC.js.map +0 -1
- package/dist/upload-LERNY5WA.mjs +0 -80
- package/dist/versions-FI44YDAP.js +0 -85
- package/dist/versions-FI44YDAP.js.map +0 -1
- package/dist/versions-HP6HA2TT.mjs +0 -85
- package/dist/wrap-G3UCHRFN.mjs +0 -34
- package/dist/wrap-G3UCHRFN.mjs.map +0 -1
- package/dist/wrap-SJHGCERM.js +0 -34
- package/dist/wrap-SJHGCERM.js.map +0 -1
- /package/dist/{add-52KP5RUX.mjs.map → add-TFE2BH4K.mjs.map} +0 -0
- /package/dist/{archive-ZKTGGFDU.mjs.map → archive-CL6XUEYU.mjs.map} +0 -0
- /package/dist/{assign-W7HMZLLA.mjs.map → assign-4PVKU4WO.mjs.map} +0 -0
- /package/dist/{chunk-FMPW7DZ3.mjs.map → chunk-3K6C35HN.mjs.map} +0 -0
- /package/dist/{chunk-QGGX6LSK.mjs.map → chunk-42EDFIG2.mjs.map} +0 -0
- /package/dist/{chunk-QAZHQ7SZ.mjs.map → chunk-4ZA6WF6S.mjs.map} +0 -0
- /package/dist/{chunk-XLJ5GJTK.mjs.map → chunk-535JT5M3.mjs.map} +0 -0
- /package/dist/{chunk-GIT5RVG4.mjs.map → chunk-5PF32BLZ.mjs.map} +0 -0
- /package/dist/{chunk-OUJ7Z4TK.mjs.map → chunk-5W4B44MH.mjs.map} +0 -0
- /package/dist/{chunk-XMAAQWBG.mjs.map → chunk-5Z3A3Z5M.mjs.map} +0 -0
- /package/dist/{chunk-DC7HLQID.mjs.map → chunk-64H4FLDB.mjs.map} +0 -0
- /package/dist/{chunk-AJUCX3LD.mjs.map → chunk-67PP4GB4.mjs.map} +0 -0
- /package/dist/{chunk-W35QTHIH.mjs.map → chunk-7HFW67OR.mjs.map} +0 -0
- /package/dist/{chunk-XHQP55GA.mjs.map → chunk-7ULZZHBP.mjs.map} +0 -0
- /package/dist/{chunk-F4FGQZND.mjs.map → chunk-CKTJADY6.mjs.map} +0 -0
- /package/dist/{chunk-H2DTN2TK.mjs.map → chunk-GFLV5NP6.mjs.map} +0 -0
- /package/dist/{chunk-YIACSQXG.mjs.map → chunk-GNWMKXDU.mjs.map} +0 -0
- /package/dist/{chunk-JBEVRIYW.mjs.map → chunk-JQVI5CD7.mjs.map} +0 -0
- /package/dist/{chunk-R3PLRKDO.mjs.map → chunk-M5UNTGGK.mjs.map} +0 -0
- /package/dist/{chunk-SUANHT23.mjs.map → chunk-O2GHYEAE.mjs.map} +0 -0
- /package/dist/{chunk-JOLGDU7Q.mjs.map → chunk-OMZ3FRPU.mjs.map} +0 -0
- /package/dist/{chunk-BU2DXABO.mjs.map → chunk-OSAFGMGH.mjs.map} +0 -0
- /package/dist/{chunk-GVFRS2UN.mjs.map → chunk-PONU4KJX.mjs.map} +0 -0
- /package/dist/{chunk-4VOXYSVX.mjs.map → chunk-QVQ7WDJS.mjs.map} +0 -0
- /package/dist/{chunk-YQNOLNAK.mjs.map → chunk-RIPASL56.mjs.map} +0 -0
- /package/dist/{chunk-KUEKEUKX.mjs.map → chunk-S2UWK4HL.mjs.map} +0 -0
- /package/dist/{chunk-2XTZ7GBC.mjs.map → chunk-SQXVLXIS.mjs.map} +0 -0
- /package/dist/{chunk-OJ4URNYC.mjs.map → chunk-UQ633TEF.mjs.map} +0 -0
- /package/dist/{chunk-X6NSR74I.mjs.map → chunk-WG7MPZXJ.mjs.map} +0 -0
- /package/dist/{chunk-BWALMZEU.mjs.map → chunk-WIXX2IDN.mjs.map} +0 -0
- /package/dist/{chunk-7YJMKWOH.mjs.map → chunk-WQRATXQU.mjs.map} +0 -0
- /package/dist/{chunk-5C7DPGRK.mjs.map → chunk-YOSDU6PV.mjs.map} +0 -0
- /package/dist/{config-VPRQKJMJ.mjs.map → config-DXWUTPTA.mjs.map} +0 -0
- /package/dist/{create-2FRM4WVA.mjs.map → create-5HLREIKR.mjs.map} +0 -0
- /package/dist/{create-SPAXSFIN.mjs.map → create-7WWQNO2D.mjs.map} +0 -0
- /package/dist/{create-P3647AMU.mjs.map → create-CENOO2Z5.mjs.map} +0 -0
- /package/dist/{create-I5INSZYR.mjs.map → create-CSENTPZ7.mjs.map} +0 -0
- /package/dist/{create-3NCRMEMB.mjs.map → create-F564PPYR.mjs.map} +0 -0
- /package/dist/{create-EBEOJS2H.mjs.map → create-G5KF3LVC.mjs.map} +0 -0
- /package/dist/{create-T3V4JRJQ.mjs.map → create-HL6BPJBM.mjs.map} +0 -0
- /package/dist/{create-ACC73K6P.mjs.map → create-KFDWNSGC.mjs.map} +0 -0
- /package/dist/{create-DYCE3DG5.mjs.map → create-KTPZZ7NV.mjs.map} +0 -0
- /package/dist/{create-FJMGFFCM.mjs.map → create-LAKPCRNY.mjs.map} +0 -0
- /package/dist/{create-5TFOS2OJ.mjs.map → create-LFU7Z6DS.mjs.map} +0 -0
- /package/dist/{create-XPJS3IZT.mjs.map → create-MI7MQLN6.mjs.map} +0 -0
- /package/dist/{create-ZU4LXLBN.mjs.map → create-OMO3TETI.mjs.map} +0 -0
- /package/dist/{create-TZ76BDWV.mjs.map → create-POGAVC3B.mjs.map} +0 -0
- /package/dist/{create-4GFIXF5E.mjs.map → create-QJLKTHQ6.mjs.map} +0 -0
- /package/dist/{create-3IUBLMI7.mjs.map → create-VEK55UDK.mjs.map} +0 -0
- /package/dist/{create-4ODQ66VV.mjs.map → create-XHAKNOTS.mjs.map} +0 -0
- /package/dist/{delete-JMX33YI4.mjs.map → delete-6BINMYZI.mjs.map} +0 -0
- /package/dist/{delete-G5IYZ6R5.mjs.map → delete-A7ZWGQPR.mjs.map} +0 -0
- /package/dist/{delete-YT3ID37D.mjs.map → delete-B5G7GAHY.mjs.map} +0 -0
- /package/dist/{delete-M7EG5VPB.mjs.map → delete-E5VYCRYX.mjs.map} +0 -0
- /package/dist/{delete-IRJG3K2J.mjs.map → delete-ERB4LGWZ.mjs.map} +0 -0
- /package/dist/{delete-UTKUA6Z4.mjs.map → delete-FE3MRFPM.mjs.map} +0 -0
- /package/dist/{delete-6FRZ6LJJ.mjs.map → delete-FP5MMDDA.mjs.map} +0 -0
- /package/dist/{delete-U655HP5R.mjs.map → delete-FWKI62NT.mjs.map} +0 -0
- /package/dist/{delete-WP3JYGLE.mjs.map → delete-KAVDMRQX.mjs.map} +0 -0
- /package/dist/{delete-XAUAF53M.mjs.map → delete-M4ZCKWOU.mjs.map} +0 -0
- /package/dist/{delete-3PMEY5RH.mjs.map → delete-NGPOOTEX.mjs.map} +0 -0
- /package/dist/{delete-POZCY7IQ.mjs.map → delete-SZG6DJUR.mjs.map} +0 -0
- /package/dist/{delete-E2O6CPEK.mjs.map → delete-UVGITJ2L.mjs.map} +0 -0
- /package/dist/{download-F2DXRLJP.mjs.map → download-JPL3BO4H.mjs.map} +0 -0
- /package/dist/{duplicate-B7OUVDVB.mjs.map → duplicate-OWG7P745.mjs.map} +0 -0
- /package/dist/{export-SNBK2AV4.mjs.map → export-4A6ILAPM.mjs.map} +0 -0
- /package/dist/{get-BOXL42XW.mjs.map → get-576OERBE.mjs.map} +0 -0
- /package/dist/{get-RYIZPF25.mjs.map → get-5GQP5EDN.mjs.map} +0 -0
- /package/dist/{get-CRGWXOZP.mjs.map → get-6DKM4MZL.mjs.map} +0 -0
- /package/dist/{get-NP6FEVLY.mjs.map → get-BQH2FJBV.mjs.map} +0 -0
- /package/dist/{get-TITUKTHE.mjs.map → get-DCEQN75Y.mjs.map} +0 -0
- /package/dist/{get-QO7VEIRN.mjs.map → get-DX5U344V.mjs.map} +0 -0
- /package/dist/{get-4NKLZBDS.mjs.map → get-JDHZ2YUC.mjs.map} +0 -0
- /package/dist/{get-ROAE6T5N.mjs.map → get-KSATLDNX.mjs.map} +0 -0
- /package/dist/{get-ZXTDMVWX.mjs.map → get-L5HUN5CE.mjs.map} +0 -0
- /package/dist/{get-KS3QMH5A.mjs.map → get-LIQYXM3J.mjs.map} +0 -0
- /package/dist/{get-D6SHECLX.mjs.map → get-NXV4JPXT.mjs.map} +0 -0
- /package/dist/{get-WW7HVSUY.mjs.map → get-OW77HE3C.mjs.map} +0 -0
- /package/dist/{get-UOZBGGCG.mjs.map → get-PHEE7JVL.mjs.map} +0 -0
- /package/dist/{get-CLTPKM7D.mjs.map → get-QYIM3DCN.mjs.map} +0 -0
- /package/dist/{get-JKRW7OHW.mjs.map → get-X4Q4RZQC.mjs.map} +0 -0
- /package/dist/{install-PQACVMPW.mjs.map → install-JNBCGN7Q.mjs.map} +0 -0
- /package/dist/{list-YAR5NB2Q.mjs.map → list-2YGHM2AD.mjs.map} +0 -0
- /package/dist/{list-OZDM5FA6.mjs.map → list-3XJ7VZN4.mjs.map} +0 -0
- /package/dist/{list-Z6OG6DLD.mjs.map → list-4JFVZU6U.mjs.map} +0 -0
- /package/dist/{list-7TJVXJW3.mjs.map → list-6UYNGBNA.mjs.map} +0 -0
- /package/dist/{list-GYJNBKUF.mjs.map → list-AVYXRPYR.mjs.map} +0 -0
- /package/dist/{list-VKNEMSY4.mjs.map → list-BI6VDR3L.mjs.map} +0 -0
- /package/dist/{list-N4LN7RVG.mjs.map → list-BIXZNQNL.mjs.map} +0 -0
- /package/dist/{list-TAFBD6EY.mjs.map → list-E2NKP4RN.mjs.map} +0 -0
- /package/dist/{list-M3IEVLUD.mjs.map → list-IIUX33VL.mjs.map} +0 -0
- /package/dist/{list-L33MTOSA.mjs.map → list-KJIOIAVI.mjs.map} +0 -0
- /package/dist/{list-FYKAGJ6V.mjs.map → list-MX4GYY6P.mjs.map} +0 -0
- /package/dist/{list-VJL5TZ4T.mjs.map → list-O6OJ5XHC.mjs.map} +0 -0
- /package/dist/{list-6ZUZ54WZ.mjs.map → list-ODC5L7LD.mjs.map} +0 -0
- /package/dist/{list-CSZZQTHD.mjs.map → list-Q5WBWW4Q.mjs.map} +0 -0
- /package/dist/{list-CSPHALVP.mjs.map → list-RJFCSUUQ.mjs.map} +0 -0
- /package/dist/{list-G3ASKJUN.mjs.map → list-UQQ2PAU3.mjs.map} +0 -0
- /package/dist/{list-WJNJNMQC.mjs.map → list-VA5A3CCK.mjs.map} +0 -0
- /package/dist/{list-KX4MIAJE.mjs.map → list-ZBKYVBPN.mjs.map} +0 -0
- /package/dist/{list-Z3YOLIK2.mjs.map → list-ZDLAHVOP.mjs.map} +0 -0
- /package/dist/{list-C4TIICKC.mjs.map → list-ZONPFTHT.mjs.map} +0 -0
- /package/dist/{pull-VHGPIULB.mjs.map → pull-3MXPXKVF.mjs.map} +0 -0
- /package/dist/{push-ZPL2UNNV.mjs.map → push-7L3NXCCJ.mjs.map} +0 -0
- /package/dist/{query-PRJT7GQY.mjs.map → query-FJ4JJLRH.mjs.map} +0 -0
- /package/dist/{records-add-P2FTGDNL.mjs.map → records-add-K6ZRY3MM.mjs.map} +0 -0
- /package/dist/{records-delete-TZATYNEX.mjs.map → records-delete-DPNRLQRU.mjs.map} +0 -0
- /package/dist/{records-list-AI5CT26J.mjs.map → records-list-EEDFGR5M.mjs.map} +0 -0
- /package/dist/{records-update-TK3HWM2C.mjs.map → records-update-V23XILMF.mjs.map} +0 -0
- /package/dist/{remove-XAF4RTKP.mjs.map → remove-JS3XWII2.mjs.map} +0 -0
- /package/dist/{rename-AAQZTQCF.mjs.map → rename-NX4OMJDP.mjs.map} +0 -0
- /package/dist/{restore-VJDHJ7Y3.mjs.map → restore-R5LY5MWO.mjs.map} +0 -0
- /package/dist/{revoke-UUVPYOPV.mjs.map → revoke-2JIUV7JE.mjs.map} +0 -0
- /package/dist/{revoke-7HUYDQZ6.mjs.map → revoke-TQJVF3BL.mjs.map} +0 -0
- /package/dist/{rotate-MU4L6YPU.mjs.map → rotate-QUP62JOC.mjs.map} +0 -0
- /package/dist/{run-URPG3S24.mjs.map → run-35JPAOLO.mjs.map} +0 -0
- /package/dist/{run-WWBEHGYG.mjs.map → run-5YPCH5US.mjs.map} +0 -0
- /package/dist/{run-PC5KFO4B.mjs.map → run-6BUAGYXY.mjs.map} +0 -0
- /package/dist/{run-D4YIYYTE.mjs.map → run-BPTFP3HA.mjs.map} +0 -0
- /package/dist/{run-GC3RJI74.mjs.map → run-DVPUVKTV.mjs.map} +0 -0
- /package/dist/{search-L7IAXT4D.mjs.map → search-FMFV6U6P.mjs.map} +0 -0
- /package/dist/{set-5YJE4NOS.mjs.map → set-7Q2IUUPV.mjs.map} +0 -0
- /package/dist/{set-X7XDEFU5.mjs.map → set-PMA5UWDK.mjs.map} +0 -0
- /package/dist/{status-PXWG34DC.mjs.map → status-DS55UJ7O.mjs.map} +0 -0
- /package/dist/{sync-JRLKLXA6.mjs.map → sync-XV5HX5TO.mjs.map} +0 -0
- /package/dist/{unset-WSH675SN.mjs.map → unset-TVSHRR64.mjs.map} +0 -0
- /package/dist/{update-3EI6SA7W.mjs.map → update-337XCLM7.mjs.map} +0 -0
- /package/dist/{update-BNJEOWPP.mjs.map → update-5DIMZPJB.mjs.map} +0 -0
- /package/dist/{update-CU4Z6XQR.mjs.map → update-CDBNRXSO.mjs.map} +0 -0
- /package/dist/{update-GFAZJBC2.mjs.map → update-CXYYWVNO.mjs.map} +0 -0
- /package/dist/{update-JJDVXFLD.mjs.map → update-DUJU3A4R.mjs.map} +0 -0
- /package/dist/{update-3YLN3YXF.mjs.map → update-E3GH3WEX.mjs.map} +0 -0
- /package/dist/{update-JXSPKDKA.mjs.map → update-JL3MKZXC.mjs.map} +0 -0
- /package/dist/{update-EWS5LIXP.mjs.map → update-JUTNNHSA.mjs.map} +0 -0
- /package/dist/{update-62D6MLES.mjs.map → update-MBBSJQJL.mjs.map} +0 -0
- /package/dist/{update-E6BQSBVN.mjs.map → update-NOYJVXCB.mjs.map} +0 -0
- /package/dist/{update-ELVULBIN.mjs.map → update-P4PNDOMU.mjs.map} +0 -0
- /package/dist/{update-EWBAZK64.mjs.map → update-RJFENG32.mjs.map} +0 -0
- /package/dist/{update-AS7FCV5B.mjs.map → update-WFGCL4JS.mjs.map} +0 -0
- /package/dist/{update-NGJUN2VK.mjs.map → update-X7J6WRG3.mjs.map} +0 -0
- /package/dist/{upload-LERNY5WA.mjs.map → upload-7O3K4YAL.mjs.map} +0 -0
- /package/dist/{versions-HP6HA2TT.mjs.map → versions-HXI6GAD2.mjs.map} +0 -0
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
import {
|
|
2
|
+
extractLookupIdFromToken,
|
|
3
|
+
getCliBootstrap,
|
|
4
|
+
listIngestionKeys
|
|
5
|
+
} from "./chunk-YP4LDCP6.mjs";
|
|
6
|
+
import {
|
|
7
|
+
loadConfig,
|
|
8
|
+
saveConfig
|
|
9
|
+
} from "./chunk-U47MQ6CS.mjs";
|
|
10
|
+
import {
|
|
11
|
+
__spreadProps,
|
|
12
|
+
__spreadValues
|
|
13
|
+
} from "./chunk-BAX4W3AY.mjs";
|
|
14
|
+
|
|
15
|
+
// src/cli/utils/governance/device-flow.ts
|
|
16
|
+
import * as os from "os";
|
|
17
|
+
import { setTimeout as wait } from "timers/promises";
|
|
18
|
+
var DeviceFlowError = class extends Error {
|
|
19
|
+
constructor(kind, message) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.kind = kind;
|
|
22
|
+
this.name = "DeviceFlowError";
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
async function startDeviceCode(opts, init = {}) {
|
|
26
|
+
const body = {};
|
|
27
|
+
if (init.credentialType) body.credential_type = init.credentialType;
|
|
28
|
+
const dc = await postJSON(opts, "/api/auth/cli/device-code", body);
|
|
29
|
+
if (!dc.interval || dc.interval <= 0) dc.interval = 5;
|
|
30
|
+
return dc;
|
|
31
|
+
}
|
|
32
|
+
function collectClientInfo() {
|
|
33
|
+
let hostname2 = "";
|
|
34
|
+
let uname = "";
|
|
35
|
+
try {
|
|
36
|
+
hostname2 = os.hostname();
|
|
37
|
+
} catch (e) {
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
uname = os.userInfo().username;
|
|
41
|
+
} catch (e) {
|
|
42
|
+
}
|
|
43
|
+
return { hostname: hostname2, uname, platform: process.platform };
|
|
44
|
+
}
|
|
45
|
+
async function exchange(opts, deviceCode) {
|
|
46
|
+
const res = await rawPost(opts, "/api/auth/cli/exchange", {
|
|
47
|
+
device_code: deviceCode,
|
|
48
|
+
client_info: collectClientInfo()
|
|
49
|
+
});
|
|
50
|
+
switch (res.status) {
|
|
51
|
+
case 200: {
|
|
52
|
+
const body = await res.json();
|
|
53
|
+
if (!("kind" in body) || !body.kind) {
|
|
54
|
+
return __spreadValues({ kind: "device_session" }, body);
|
|
55
|
+
}
|
|
56
|
+
return body;
|
|
57
|
+
}
|
|
58
|
+
case 428:
|
|
59
|
+
throw new DeviceFlowError("pending", "authorization pending");
|
|
60
|
+
case 410:
|
|
61
|
+
throw new DeviceFlowError("denied", "authorization denied");
|
|
62
|
+
case 408:
|
|
63
|
+
throw new DeviceFlowError("expired", "authorization request expired");
|
|
64
|
+
case 429:
|
|
65
|
+
throw new DeviceFlowError("slow_down", "polling too fast");
|
|
66
|
+
default: {
|
|
67
|
+
const body = await res.text().catch(() => "");
|
|
68
|
+
throw new DeviceFlowError("other", `unexpected status ${res.status}: ${body.slice(0, 256)}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async function pollUntilDone(opts, dc) {
|
|
73
|
+
let interval = dc.interval * 1e3;
|
|
74
|
+
const ceiling = 6e4;
|
|
75
|
+
const deadline = Date.now() + dc.expires_in * 1e3;
|
|
76
|
+
for (; ; ) {
|
|
77
|
+
if (Date.now() > deadline) {
|
|
78
|
+
throw new DeviceFlowError("expired", "authorization request expired");
|
|
79
|
+
}
|
|
80
|
+
await wait(interval);
|
|
81
|
+
try {
|
|
82
|
+
return await exchange(opts, dc.device_code);
|
|
83
|
+
} catch (err) {
|
|
84
|
+
if (!(err instanceof DeviceFlowError)) throw err;
|
|
85
|
+
if (err.kind === "pending") continue;
|
|
86
|
+
if (err.kind === "slow_down") {
|
|
87
|
+
interval = Math.min(interval * 2, ceiling);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
throw err;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async function logout(opts, refreshToken, accessToken) {
|
|
95
|
+
const body = { refresh_token: refreshToken };
|
|
96
|
+
if (accessToken) body.access_token = accessToken;
|
|
97
|
+
const res = await rawPost(opts, "/api/auth/cli/logout", body);
|
|
98
|
+
if (res.status === 200 || res.status === 401 || res.status === 404) return;
|
|
99
|
+
const text = await res.text().catch(() => "");
|
|
100
|
+
throw new DeviceFlowError("other", `logout failed (${res.status}): ${text.slice(0, 256)}`);
|
|
101
|
+
}
|
|
102
|
+
async function postJSON(opts, path2, body) {
|
|
103
|
+
const res = await rawPost(opts, path2, body);
|
|
104
|
+
if (!res.ok) {
|
|
105
|
+
const text = await res.text().catch(() => "");
|
|
106
|
+
throw new DeviceFlowError("other", `${path2} \u2192 ${res.status}: ${text.slice(0, 256)}`);
|
|
107
|
+
}
|
|
108
|
+
return await res.json();
|
|
109
|
+
}
|
|
110
|
+
function rawPost(opts, path2, body) {
|
|
111
|
+
var _a;
|
|
112
|
+
const url = opts.baseUrl.replace(/\/+$/, "") + path2;
|
|
113
|
+
const f = (_a = opts.fetchImpl) != null ? _a : fetch;
|
|
114
|
+
return f(url, {
|
|
115
|
+
method: "POST",
|
|
116
|
+
headers: {
|
|
117
|
+
"Content-Type": "application/json",
|
|
118
|
+
Accept: "application/json",
|
|
119
|
+
// Origin enforcement on the server requires this for non-browser
|
|
120
|
+
// clients. The base URL is the same as the control plane, so
|
|
121
|
+
// mirroring it as Origin satisfies the same-origin gate.
|
|
122
|
+
Origin: opts.baseUrl.replace(/\/+$/, "")
|
|
123
|
+
},
|
|
124
|
+
body: JSON.stringify(body != null ? body : {})
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// src/cli/utils/governance/login-flow.ts
|
|
129
|
+
import * as fs from "fs";
|
|
130
|
+
import * as path from "path";
|
|
131
|
+
import chalk from "chalk";
|
|
132
|
+
import ora from "ora";
|
|
133
|
+
|
|
134
|
+
// src/cli/utils/governance/login-ceremony.ts
|
|
135
|
+
var DEFAULT_TOOLS = [
|
|
136
|
+
{ slug: "claude", displayName: "Claude Code" },
|
|
137
|
+
{ slug: "codex", displayName: "Codex" },
|
|
138
|
+
{ slug: "cursor", displayName: "Cursor" }
|
|
139
|
+
];
|
|
140
|
+
function padRight(s, width) {
|
|
141
|
+
if (s.length >= width) return s;
|
|
142
|
+
return s + " ".repeat(width - s.length);
|
|
143
|
+
}
|
|
144
|
+
function formatUsd(n) {
|
|
145
|
+
if (Number.isInteger(n)) return `$${n}`;
|
|
146
|
+
return `$${n.toFixed(2)}`;
|
|
147
|
+
}
|
|
148
|
+
function formatUsedUsd(n) {
|
|
149
|
+
return `$${n.toFixed(2)}`;
|
|
150
|
+
}
|
|
151
|
+
function formatLoginCeremony(input) {
|
|
152
|
+
const lines = [];
|
|
153
|
+
const orgSuffix = input.organizationName ? ` @ ${input.organizationName}` : "";
|
|
154
|
+
lines.push(`\u2713 Logged in as ${input.email}${orgSuffix}`);
|
|
155
|
+
const tools = input.tools && input.tools.length > 0 ? input.tools : DEFAULT_TOOLS;
|
|
156
|
+
lines.push("");
|
|
157
|
+
lines.push("Your AI tools (run any of these):");
|
|
158
|
+
const cmdWidth = Math.max(
|
|
159
|
+
...tools.map((t) => `langwatch ${t.slug}`.length)
|
|
160
|
+
);
|
|
161
|
+
for (const tool of tools) {
|
|
162
|
+
const cmd = `langwatch ${tool.slug}`;
|
|
163
|
+
const labelSuffix = tool.displayName ? ` # ${tool.displayName}` : "";
|
|
164
|
+
lines.push(` $ ${padRight(cmd, cmdWidth)}${labelSuffix}`);
|
|
165
|
+
}
|
|
166
|
+
if (input.providers && input.providers.length > 0) {
|
|
167
|
+
lines.push("");
|
|
168
|
+
lines.push("Model providers you can issue a virtual key for:");
|
|
169
|
+
const nameWidth = Math.max(...input.providers.map((p) => p.name.length));
|
|
170
|
+
for (const p of input.providers) {
|
|
171
|
+
const padded = padRight(p.name, nameWidth);
|
|
172
|
+
const annotations = [];
|
|
173
|
+
if (p.displayName && p.displayName !== p.name) {
|
|
174
|
+
annotations.push(p.displayName);
|
|
175
|
+
}
|
|
176
|
+
if (p.configured === false) annotations.push("(not configured yet)");
|
|
177
|
+
const suffix = annotations.length > 0 ? ` ${annotations.join(" ")}` : "";
|
|
178
|
+
lines.push(` \u2022 ${padded}${suffix}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
if (input.budget) {
|
|
182
|
+
lines.push("");
|
|
183
|
+
const period = input.budget.period.charAt(0).toUpperCase() + input.budget.period.slice(1).toLowerCase();
|
|
184
|
+
lines.push(
|
|
185
|
+
`${period} budget: ${formatUsd(input.budget.limitUsd)} | Used: ${formatUsedUsd(input.budget.usedUsd)}`
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
if (input.openCommand !== false) {
|
|
189
|
+
lines.push("");
|
|
190
|
+
lines.push("Or open the app in your browser:");
|
|
191
|
+
lines.push(" $ langwatch open");
|
|
192
|
+
}
|
|
193
|
+
return lines;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// src/cli/utils/governance/login-flow.ts
|
|
197
|
+
async function runUnifiedLoginFlow(opts = {}) {
|
|
198
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
199
|
+
const kind = (_a = opts.kind) != null ? _a : "device_session";
|
|
200
|
+
const cfg = (_b = opts.cfg) != null ? _b : loadConfig();
|
|
201
|
+
const baseUrl = cfg.control_plane_url;
|
|
202
|
+
console.log(chalk.blue("\u{1F510} LangWatch login"));
|
|
203
|
+
console.log(chalk.gray(`Control plane: ${baseUrl}`));
|
|
204
|
+
console.log(
|
|
205
|
+
chalk.gray(
|
|
206
|
+
kind === "project_api_key" ? "Mode: project SDK API key (will write .env)" : "Mode: device session (will write ~/.langwatch/config.json)"
|
|
207
|
+
)
|
|
208
|
+
);
|
|
209
|
+
const dc = await startDeviceCode({ baseUrl }, { credentialType: kind });
|
|
210
|
+
const verifyURL = (_c = dc.verification_uri_complete) != null ? _c : `${dc.verification_uri.replace(/\/+$/, "")}?user_code=${encodeURIComponent(dc.user_code)}`;
|
|
211
|
+
console.log();
|
|
212
|
+
console.log(chalk.cyan(`Opening: ${verifyURL}`));
|
|
213
|
+
console.log(
|
|
214
|
+
chalk.gray(
|
|
215
|
+
`If your browser doesn't open, paste the URL above and enter code: ${chalk.bold(dc.user_code)}`
|
|
216
|
+
)
|
|
217
|
+
);
|
|
218
|
+
console.log();
|
|
219
|
+
await openInBrowser(verifyURL, opts.browser);
|
|
220
|
+
const spinner = ora({
|
|
221
|
+
text: "Waiting for you to approve in the browser",
|
|
222
|
+
discardStdin: false
|
|
223
|
+
}).start();
|
|
224
|
+
const onSigint = () => {
|
|
225
|
+
spinner.stop();
|
|
226
|
+
console.log(chalk.gray("\nLogin cancelled."));
|
|
227
|
+
process.exit(130);
|
|
228
|
+
};
|
|
229
|
+
process.once("SIGINT", onSigint);
|
|
230
|
+
try {
|
|
231
|
+
const result = await pollUntilDone({ baseUrl }, dc);
|
|
232
|
+
if (result.kind === "device_session") {
|
|
233
|
+
spinner.succeed(`Logged in as ${result.user.email}`);
|
|
234
|
+
persistDeviceSession(cfg, result);
|
|
235
|
+
saveConfig(cfg);
|
|
236
|
+
const bootstrap = await fetchBootstrapSafely(cfg);
|
|
237
|
+
if (bootstrap == null ? void 0 : bootstrap.gatewayUrl) {
|
|
238
|
+
cfg.gateway_url = bootstrap.gatewayUrl;
|
|
239
|
+
saveConfig(cfg);
|
|
240
|
+
}
|
|
241
|
+
if (bootstrap == null ? void 0 : bootstrap.toolPolicies) {
|
|
242
|
+
cfg.tool_policies = bootstrap.toolPolicies;
|
|
243
|
+
saveConfig(cfg);
|
|
244
|
+
}
|
|
245
|
+
if (cfg.default_personal_ingest_keys && Object.keys(cfg.default_personal_ingest_keys).length > 0) {
|
|
246
|
+
try {
|
|
247
|
+
const liveKeys = await listIngestionKeys(cfg);
|
|
248
|
+
const liveSet = new Set(liveKeys.map((k) => `${k.sourceType}:${k.lookupId}`));
|
|
249
|
+
const reconciled = {};
|
|
250
|
+
let changed = false;
|
|
251
|
+
for (const [sourceType, entry] of Object.entries(cfg.default_personal_ingest_keys)) {
|
|
252
|
+
const lookupId = extractLookupIdFromToken((_d = entry.secret) != null ? _d : "");
|
|
253
|
+
if (lookupId && liveSet.has(`${sourceType}:${lookupId}`)) {
|
|
254
|
+
reconciled[sourceType] = entry;
|
|
255
|
+
} else {
|
|
256
|
+
changed = true;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
if (changed) {
|
|
260
|
+
cfg.default_personal_ingest_keys = reconciled;
|
|
261
|
+
saveConfig(cfg);
|
|
262
|
+
}
|
|
263
|
+
} catch (e) {
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
console.log();
|
|
267
|
+
const ceremonyLines = formatLoginCeremony({
|
|
268
|
+
email: (_f = (_e = cfg.user) == null ? void 0 : _e.email) != null ? _f : result.user.email,
|
|
269
|
+
organizationName: (_g = cfg.organization) == null ? void 0 : _g.name,
|
|
270
|
+
tools: bootstrap == null ? void 0 : bootstrap.tools,
|
|
271
|
+
providers: bootstrap == null ? void 0 : bootstrap.providers,
|
|
272
|
+
budget: ((_h = bootstrap == null ? void 0 : bootstrap.budget) == null ? void 0 : _h.monthlyLimitUsd) != null ? {
|
|
273
|
+
period: bootstrap.budget.period,
|
|
274
|
+
limitUsd: bootstrap.budget.monthlyLimitUsd,
|
|
275
|
+
usedUsd: bootstrap.budget.monthlyUsedUsd
|
|
276
|
+
} : void 0
|
|
277
|
+
});
|
|
278
|
+
for (const line of ceremonyLines) {
|
|
279
|
+
console.log(line);
|
|
280
|
+
}
|
|
281
|
+
console.log();
|
|
282
|
+
console.log(chalk.gray(` Dashboard: ${cfg.control_plane_url}`));
|
|
283
|
+
return cfg;
|
|
284
|
+
}
|
|
285
|
+
spinner.succeed(
|
|
286
|
+
`API key generated for project ${chalk.bold(result.project.name)}`
|
|
287
|
+
);
|
|
288
|
+
const envResult = writeApiKeyToEnv(result.api_key);
|
|
289
|
+
console.log();
|
|
290
|
+
console.log(chalk.green("\u2713 API key saved to .env"));
|
|
291
|
+
if (envResult.created) {
|
|
292
|
+
console.log(chalk.gray(` \u2022 Created .env file at ${envResult.path}`));
|
|
293
|
+
} else if (envResult.updated) {
|
|
294
|
+
console.log(chalk.gray(` \u2022 Updated existing API key in ${envResult.path}`));
|
|
295
|
+
} else {
|
|
296
|
+
console.log(chalk.gray(` \u2022 Added API key to ${envResult.path}`));
|
|
297
|
+
}
|
|
298
|
+
console.log();
|
|
299
|
+
console.log(
|
|
300
|
+
chalk.gray(
|
|
301
|
+
` Project: ${result.project.name} (${result.project.slug})`
|
|
302
|
+
)
|
|
303
|
+
);
|
|
304
|
+
console.log(chalk.gray(` Dashboard: ${cfg.control_plane_url}`));
|
|
305
|
+
return cfg;
|
|
306
|
+
} catch (err) {
|
|
307
|
+
spinner.fail();
|
|
308
|
+
if (err instanceof DeviceFlowError) {
|
|
309
|
+
switch (err.kind) {
|
|
310
|
+
case "denied":
|
|
311
|
+
throw new Error(
|
|
312
|
+
"authorization denied \u2014 you can retry `langwatch login`"
|
|
313
|
+
);
|
|
314
|
+
case "expired":
|
|
315
|
+
throw new Error(
|
|
316
|
+
"authorization request expired \u2014 run `langwatch login` again"
|
|
317
|
+
);
|
|
318
|
+
default:
|
|
319
|
+
throw err;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
throw err;
|
|
323
|
+
} finally {
|
|
324
|
+
process.removeListener("SIGINT", onSigint);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
async function runDeviceFlowLogin(opts = {}) {
|
|
328
|
+
return runUnifiedLoginFlow(__spreadProps(__spreadValues({}, opts), { kind: "device_session" }));
|
|
329
|
+
}
|
|
330
|
+
function persistDeviceSession(cfg, result) {
|
|
331
|
+
cfg.access_token = result.access_token;
|
|
332
|
+
cfg.refresh_token = result.refresh_token;
|
|
333
|
+
cfg.expires_at = Math.floor(Date.now() / 1e3) + result.expires_in;
|
|
334
|
+
cfg.user = {
|
|
335
|
+
id: result.user.id,
|
|
336
|
+
email: result.user.email,
|
|
337
|
+
name: result.user.name
|
|
338
|
+
};
|
|
339
|
+
cfg.organization = {
|
|
340
|
+
id: result.organization.id,
|
|
341
|
+
slug: result.organization.slug,
|
|
342
|
+
name: result.organization.name
|
|
343
|
+
};
|
|
344
|
+
if (result.default_personal_vk) {
|
|
345
|
+
cfg.default_personal_vk = {
|
|
346
|
+
id: result.default_personal_vk.id,
|
|
347
|
+
secret: result.default_personal_vk.secret,
|
|
348
|
+
prefix: result.default_personal_vk.prefix
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
if (result.endpoint) {
|
|
352
|
+
cfg.control_plane_url = result.endpoint.replace(/\/+$/, "");
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
function writeApiKeyToEnv(apiKey) {
|
|
356
|
+
const envPath = path.join(process.cwd(), ".env");
|
|
357
|
+
if (!fs.existsSync(envPath)) {
|
|
358
|
+
fs.writeFileSync(envPath, `LANGWATCH_API_KEY=${apiKey}
|
|
359
|
+
`);
|
|
360
|
+
return { created: true, updated: false, path: envPath };
|
|
361
|
+
}
|
|
362
|
+
const content = fs.readFileSync(envPath, "utf-8");
|
|
363
|
+
const lines = content.split("\n");
|
|
364
|
+
let found = false;
|
|
365
|
+
const updatedLines = lines.map((line) => {
|
|
366
|
+
if (line.startsWith("LANGWATCH_API_KEY=")) {
|
|
367
|
+
found = true;
|
|
368
|
+
return `LANGWATCH_API_KEY=${apiKey}`;
|
|
369
|
+
}
|
|
370
|
+
return line;
|
|
371
|
+
});
|
|
372
|
+
if (!found) {
|
|
373
|
+
if (content.endsWith("\n") || content === "") {
|
|
374
|
+
updatedLines.push(`LANGWATCH_API_KEY=${apiKey}`);
|
|
375
|
+
} else {
|
|
376
|
+
updatedLines.push("", `LANGWATCH_API_KEY=${apiKey}`);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
fs.writeFileSync(envPath, updatedLines.join("\n"));
|
|
380
|
+
return { created: false, updated: found, path: envPath };
|
|
381
|
+
}
|
|
382
|
+
async function fetchBootstrapSafely(cfg) {
|
|
383
|
+
try {
|
|
384
|
+
return await getCliBootstrap(cfg);
|
|
385
|
+
} catch (e) {
|
|
386
|
+
return null;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
async function openInBrowser(url, override) {
|
|
390
|
+
var _a, _b;
|
|
391
|
+
const choice = (_b = (_a = override != null ? override : process.env.LANGWATCH_BROWSER) != null ? _a : process.env.BROWSER) != null ? _b : "";
|
|
392
|
+
if (choice === "none") return;
|
|
393
|
+
const open = (await import("open")).default;
|
|
394
|
+
try {
|
|
395
|
+
if (!choice || choice === "default") {
|
|
396
|
+
await open(url);
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
await open(url, { app: { name: choice } });
|
|
400
|
+
} catch (e) {
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
export {
|
|
405
|
+
DeviceFlowError,
|
|
406
|
+
logout,
|
|
407
|
+
runUnifiedLoginFlow,
|
|
408
|
+
runDeviceFlowLogin
|
|
409
|
+
};
|
|
410
|
+
//# sourceMappingURL=chunk-PQA46YVG.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/utils/governance/device-flow.ts","../src/cli/utils/governance/login-flow.ts","../src/cli/utils/governance/login-ceremony.ts"],"sourcesContent":["/**\n * RFC 8628 device-code OAuth client for the `langwatch login --device`\n * flow. Targets the control plane's `/api/auth/cli/*` endpoints —\n * the same wire surface a custom CLI client would hit (documented in\n * `docs/ai-gateway/governance/admin-setup.mdx#cli-device-flow-rest-api`).\n *\n * Pure stdlib `fetch`, no axios — matches the rest of the typescript\n * CLI's HTTP style.\n */\n\nimport * as os from \"node:os\";\nimport { setTimeout as wait } from \"node:timers/promises\";\n\nexport interface DeviceCode {\n device_code: string;\n user_code: string;\n verification_uri: string;\n verification_uri_complete?: string;\n expires_in: number;\n interval: number;\n}\n\nexport interface ExchangeUser {\n id: string;\n email: string;\n name: string;\n}\n\nexport interface ExchangeOrganization {\n id: string;\n slug?: string;\n name: string;\n}\n\nexport interface ExchangePersonalVK {\n id: string;\n secret: string;\n prefix?: string;\n}\n\nexport interface ExchangeProject {\n id: string;\n slug: string;\n name: string;\n}\n\n/**\n * The CLI device-code flow can mint two distinct credential types:\n * - \"device_session\" — the user-scoped OAuth-style access+refresh\n * token pair used by `langwatch claude/codex/...` wrappers.\n * - \"project_api_key\" — the project-scoped SDK key\n * (`Project.apiKey`) returned verbatim, used by SDK consumers\n * and `langwatch sync/eval/prompt/...` commands.\n *\n * Caller selects via `startDeviceCode({ credentialType })`. Server\n * stamps the choice on the device-code record + flips the response\n * shape on /exchange. Same browser approval ceremony for both — only\n * the persist target differs (`~/.langwatch/config.json` vs `.env`).\n */\nexport type CredentialType = \"device_session\" | \"project_api_key\";\n\nexport interface ExchangeDeviceSessionResult {\n kind: \"device_session\";\n access_token: string;\n refresh_token: string;\n expires_in: number;\n user: ExchangeUser;\n organization: ExchangeOrganization;\n default_personal_vk?: ExchangePersonalVK;\n endpoint?: string;\n}\n\nexport interface ExchangeApiKeyResult {\n kind: \"api_key\";\n api_key: string;\n project: ExchangeProject;\n user: ExchangeUser;\n organization: ExchangeOrganization;\n endpoint?: string;\n}\n\nexport type ExchangeResult =\n | ExchangeDeviceSessionResult\n | ExchangeApiKeyResult;\n\n/**\n * Back-compat alias for the device-session shape. Pre-`f9fcc3927` server\n * builds returned the unkinded shape verbatim; the runtime normaliser\n * below maps that to `{ kind: 'device_session', ... }` so callers can\n * always assume the discriminated form.\n */\nexport type LegacyExchangeResult = Omit<\n ExchangeDeviceSessionResult,\n \"kind\"\n> & { kind?: \"device_session\" };\n\nexport interface RefreshResult {\n access_token: string;\n refresh_token: string;\n expires_in: number;\n}\n\nexport class DeviceFlowError extends Error {\n constructor(public readonly kind: \"pending\" | \"denied\" | \"expired\" | \"slow_down\" | \"unauthorized\" | \"other\", message: string) {\n super(message);\n this.name = \"DeviceFlowError\";\n }\n}\n\nexport interface DeviceFlowOptions {\n /** Control-plane base URL (e.g. https://app.langwatch.ai). */\n baseUrl: string;\n /** Optional fetch override for tests. */\n fetchImpl?: typeof fetch;\n}\n\n/**\n * `POST /api/auth/cli/device-code` — mint a device-code + user-code pair.\n *\n * Optional `credentialType` selects what `/exchange` will return on\n * approval: a user-scoped device session (default) or a project-scoped\n * API key. Older servers ignore the field and stay on the device-session\n * shape — back-compat is the server's responsibility.\n */\nexport async function startDeviceCode(\n opts: DeviceFlowOptions,\n init: { credentialType?: CredentialType } = {},\n): Promise<DeviceCode> {\n const body: Record<string, unknown> = {};\n if (init.credentialType) body.credential_type = init.credentialType;\n const dc = await postJSON<DeviceCode>(opts, \"/api/auth/cli/device-code\", body);\n if (!dc.interval || dc.interval <= 0) dc.interval = 5;\n return dc;\n}\n\n/**\n * Device fingerprint stamped onto the CLI session at /exchange time.\n * The control plane persists it on the access + refresh token records\n * so /me/sessions can render \"Mac (rchaves.local)\" instead of\n * \"Unknown device\" — multi-device users need this to revoke\n * individual sessions without nuking every device they're logged in\n * on (Ariana QA finding). See\n * `langwatch/src/server/routes/auth-cli.ts#clientInfoSchema` for the\n * server contract.\n */\nfunction collectClientInfo(): {\n hostname: string;\n uname: string;\n platform: string;\n} {\n let hostname = \"\";\n let uname = \"\";\n try {\n hostname = os.hostname();\n } catch {\n // os.hostname() can throw on locked-down sandboxes; carry empty.\n }\n try {\n uname = os.userInfo().username;\n } catch {\n // os.userInfo() throws when the uid has no /etc/passwd entry\n // (some Docker images, CI sandboxes); carry empty.\n }\n return { hostname, uname, platform: process.platform };\n}\n\n/**\n * `POST /api/auth/cli/exchange` — single poll. Returns the access+refresh\n * token bundle on success (200), or throws DeviceFlowError with a\n * categorised `kind` so the caller can decide whether to keep polling\n * (`pending`, `slow_down`) or stop (`denied`, `expired`).\n */\nexport async function exchange(\n opts: DeviceFlowOptions,\n deviceCode: string,\n): Promise<ExchangeResult> {\n const res = await rawPost(opts, \"/api/auth/cli/exchange\", {\n device_code: deviceCode,\n client_info: collectClientInfo(),\n });\n switch (res.status) {\n case 200: {\n const body = (await res.json()) as\n | ExchangeResult\n | LegacyExchangeResult;\n // Pre-f9fcc3927 servers returned the device-session shape without\n // a `kind` field. Normalise so callers can always discriminate.\n if (!(\"kind\" in body) || !body.kind) {\n return { kind: \"device_session\", ...(body) };\n }\n return body as ExchangeResult;\n }\n case 428:\n throw new DeviceFlowError(\"pending\", \"authorization pending\");\n case 410:\n throw new DeviceFlowError(\"denied\", \"authorization denied\");\n case 408:\n throw new DeviceFlowError(\"expired\", \"authorization request expired\");\n case 429:\n throw new DeviceFlowError(\"slow_down\", \"polling too fast\");\n default: {\n const body = await res.text().catch(() => \"\");\n throw new DeviceFlowError(\"other\", `unexpected status ${res.status}: ${body.slice(0, 256)}`);\n }\n }\n}\n\n/**\n * Poll `exchange` at the cadence the server requested until the user\n * approves, denies, or the device-code expires. Honours RFC 8628 §3.5\n * by doubling the polling interval on `slow_down` responses.\n */\nexport async function pollUntilDone(\n opts: DeviceFlowOptions,\n dc: DeviceCode,\n): Promise<ExchangeResult> {\n let interval = dc.interval * 1000;\n const ceiling = 60_000;\n const deadline = Date.now() + dc.expires_in * 1000;\n\n for (;;) {\n if (Date.now() > deadline) {\n throw new DeviceFlowError(\"expired\", \"authorization request expired\");\n }\n await wait(interval);\n try {\n return await exchange(opts, dc.device_code);\n } catch (err) {\n if (!(err instanceof DeviceFlowError)) throw err;\n if (err.kind === \"pending\") continue;\n if (err.kind === \"slow_down\") {\n interval = Math.min(interval * 2, ceiling);\n continue;\n }\n throw err;\n }\n }\n}\n\n/**\n * `POST /api/auth/cli/refresh` — rotate access and refresh tokens.\n * 401 means the refresh token has been revoked server-side (admin\n * disable / off-boarding); the caller should clear local state.\n */\nexport async function refresh(\n opts: DeviceFlowOptions,\n refreshToken: string,\n): Promise<RefreshResult> {\n const res = await rawPost(opts, \"/api/auth/cli/refresh\", { refresh_token: refreshToken });\n if (res.status === 401) {\n throw new DeviceFlowError(\"unauthorized\", \"session revoked — re-authenticate\");\n }\n if (!res.ok) {\n const body = await res.text().catch(() => \"\");\n throw new DeviceFlowError(\"other\", `refresh failed (${res.status}): ${body.slice(0, 256)}`);\n }\n return (await res.json()) as RefreshResult;\n}\n\n/**\n * `POST /api/auth/cli/logout` — server-side revoke a refresh token\n * AND its paired access token (per `e7a042c69`: a stolen access\n * token used to survive logout for up to 1h until expiry; sending\n * both closes the gap). Idempotent — 200 on already-revoked or\n * unknown tokens.\n */\nexport async function logout(\n opts: DeviceFlowOptions,\n refreshToken: string,\n accessToken?: string,\n): Promise<void> {\n const body: Record<string, string> = { refresh_token: refreshToken };\n if (accessToken) body.access_token = accessToken;\n const res = await rawPost(opts, \"/api/auth/cli/logout\", body);\n // 401/404 mean \"already gone\" — that's success for logout.\n if (res.status === 200 || res.status === 401 || res.status === 404) return;\n const text = await res.text().catch(() => \"\");\n throw new DeviceFlowError(\"other\", `logout failed (${res.status}): ${text.slice(0, 256)}`);\n}\n\nasync function postJSON<T>(opts: DeviceFlowOptions, path: string, body: unknown): Promise<T> {\n const res = await rawPost(opts, path, body);\n if (!res.ok) {\n const text = await res.text().catch(() => \"\");\n throw new DeviceFlowError(\"other\", `${path} → ${res.status}: ${text.slice(0, 256)}`);\n }\n return (await res.json()) as T;\n}\n\nfunction rawPost(opts: DeviceFlowOptions, path: string, body: unknown): Promise<Response> {\n const url = opts.baseUrl.replace(/\\/+$/, \"\") + path;\n const f = opts.fetchImpl ?? fetch;\n return f(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n // Origin enforcement on the server requires this for non-browser\n // clients. The base URL is the same as the control plane, so\n // mirroring it as Origin satisfies the same-origin gate.\n Origin: opts.baseUrl.replace(/\\/+$/, \"\"),\n },\n body: JSON.stringify(body ?? {}),\n });\n}\n","/**\n * Shared device-code login implementations. Two entry points:\n *\n * 1. `runUnifiedLoginFlow({ kind })` — the canonical flow used by\n * `langwatch login` (interactive routes here for both modes). The\n * same browser-approval ceremony works for either credential type;\n * only the persist target differs:\n * kind: 'device_session' → ~/.langwatch/config.json\n * kind: 'project_api_key' → $CWD/.env (LANGWATCH_API_KEY)\n * No copy-paste of the credential ever — the server ships it\n * back to the CLI over the same RFC 8628 poll endpoint.\n *\n * 2. `runDeviceFlowLogin(...)` — back-compat wrapper that calls\n * `runUnifiedLoginFlow({ kind: 'device_session' })`. Preserved so\n * `commands/login.ts --device` and `utils/governance/wrapper.ts`\n * auto-login keep working without churn.\n *\n * Spec: specs/ai-governance/cli-onboarding/login-unified.feature\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport {\n startDeviceCode,\n pollUntilDone,\n DeviceFlowError,\n type CredentialType,\n type ExchangeApiKeyResult,\n type ExchangeDeviceSessionResult,\n} from \"./device-flow\";\nimport { loadConfig, saveConfig, type GovernanceConfig } from \"./config\";\nimport { formatLoginCeremony } from \"./login-ceremony\";\nimport {\n extractLookupIdFromToken,\n getCliBootstrap,\n listIngestionKeys,\n type CliBootstrapResponse,\n} from \"./cli-api\";\n\nexport interface RunUnifiedLoginOptions {\n /** Credential type to mint. Defaults to 'device_session' for back-compat. */\n kind?: CredentialType;\n /** Optional browser override (LANGWATCH_BROWSER also honoured). */\n browser?: string;\n /** Pre-loaded config to mutate; defaults to `loadConfig()`. */\n cfg?: GovernanceConfig;\n}\n\nexport type RunDeviceFlowLoginOptions = Omit<RunUnifiedLoginOptions, \"kind\">;\n\n/**\n * Run the canonical device-code login flow end-to-end. Selects what to\n * mint via `kind` (defaults to device_session); the same browser\n * approval ceremony covers both modes. On success, persists to the\n * right store + returns the latest GovernanceConfig.\n */\nexport async function runUnifiedLoginFlow(\n opts: RunUnifiedLoginOptions = {},\n): Promise<GovernanceConfig> {\n const kind: CredentialType = opts.kind ?? \"device_session\";\n const cfg = opts.cfg ?? loadConfig();\n const baseUrl = cfg.control_plane_url;\n\n console.log(chalk.blue(\"🔐 LangWatch login\"));\n console.log(chalk.gray(`Control plane: ${baseUrl}`));\n console.log(\n chalk.gray(\n kind === \"project_api_key\"\n ? \"Mode: project SDK API key (will write .env)\"\n : \"Mode: device session (will write ~/.langwatch/config.json)\",\n ),\n );\n\n const dc = await startDeviceCode({ baseUrl }, { credentialType: kind });\n const verifyURL =\n dc.verification_uri_complete ??\n `${dc.verification_uri.replace(/\\/+$/, \"\")}?user_code=${encodeURIComponent(dc.user_code)}`;\n\n console.log();\n console.log(chalk.cyan(`Opening: ${verifyURL}`));\n console.log(\n chalk.gray(\n `If your browser doesn't open, paste the URL above and enter code: ${chalk.bold(dc.user_code)}`,\n ),\n );\n console.log();\n\n await openInBrowser(verifyURL, opts.browser);\n\n // discardStdin:false is load-bearing. ora's default (true) flips stdin to\n // raw mode while the spinner runs, so Ctrl+C arrives as a raw 0x03 byte that\n // ora swallows instead of a SIGINT — the wait becomes unkillable. Keeping\n // stdin cooked lets the terminal deliver SIGINT; the handler stops the\n // spinner and exits cleanly so the user can always abort the login wait.\n const spinner = ora({\n text: \"Waiting for you to approve in the browser\",\n discardStdin: false,\n }).start();\n const onSigint = () => {\n spinner.stop();\n console.log(chalk.gray(\"\\nLogin cancelled.\"));\n process.exit(130);\n };\n process.once(\"SIGINT\", onSigint);\n try {\n const result = await pollUntilDone({ baseUrl }, dc);\n if (result.kind === \"device_session\") {\n spinner.succeed(`Logged in as ${result.user.email}`);\n persistDeviceSession(cfg, result);\n saveConfig(cfg);\n\n const bootstrap = await fetchBootstrapSafely(cfg);\n\n // Pick up the server's authoritative gateway URL. Without this,\n // self-hosted CLI users would see the SaaS default\n // (https://gateway.langwatch.ai) on whoami / login output even\n // though the actual gateway is on localhost:5563. The server's\n // `gatewayUrl` reflects `LW_GATEWAY_BASE_URL` or the IS_SAAS-\n // aware fallback. Backwards-compatible: older servers (without\n // this field) leave the local default in place.\n if (bootstrap?.gatewayUrl) {\n cfg.gateway_url = bootstrap.gatewayUrl;\n saveConfig(cfg);\n }\n\n // Cache the org's per-tool path policy so the `langwatch <tool>`\n // wrapper gates path selection on the admin's choices offline.\n // Older servers omit the field; the wrapper then falls back to\n // the hardcoded defaults.\n if (bootstrap?.toolPolicies) {\n cfg.tool_policies = bootstrap.toolPolicies;\n saveConfig(cfg);\n }\n\n // Reconcile cached ingestion keys (#4755): after a fresh login, drop\n // any locally cached entries whose token was revoked on the platform.\n // Errors are swallowed — a login must never fail on reconcile; the\n // worst outcome is a stale cache entry that the per-invocation wrapper\n // check will catch anyway.\n if (cfg.default_personal_ingest_keys && Object.keys(cfg.default_personal_ingest_keys).length > 0) {\n try {\n const liveKeys = await listIngestionKeys(cfg);\n const liveSet = new Set(liveKeys.map((k) => `${k.sourceType}:${k.lookupId}`));\n const reconciled: GovernanceConfig[\"default_personal_ingest_keys\"] = {};\n let changed = false;\n for (const [sourceType, entry] of Object.entries(cfg.default_personal_ingest_keys)) {\n const lookupId = extractLookupIdFromToken(entry.secret ?? \"\");\n if (lookupId && liveSet.has(`${sourceType}:${lookupId}`)) {\n reconciled[sourceType] = entry;\n } else {\n // Entry is stale (revoked or lookupId missing) — omit from reconciled\n changed = true;\n }\n }\n if (changed) {\n cfg.default_personal_ingest_keys = reconciled;\n saveConfig(cfg);\n }\n } catch {\n // Network error / older server: keep existing cache untouched\n }\n }\n\n console.log();\n const ceremonyLines = formatLoginCeremony({\n email: cfg.user?.email ?? result.user.email,\n organizationName: cfg.organization?.name,\n tools: bootstrap?.tools,\n providers: bootstrap?.providers,\n budget:\n bootstrap?.budget?.monthlyLimitUsd != null\n ? {\n period: bootstrap.budget.period,\n limitUsd: bootstrap.budget.monthlyLimitUsd,\n usedUsd: bootstrap.budget.monthlyUsedUsd,\n }\n : undefined,\n });\n for (const line of ceremonyLines) {\n console.log(line);\n }\n console.log();\n console.log(chalk.gray(` Dashboard: ${cfg.control_plane_url}`));\n\n return cfg;\n }\n\n // kind === 'api_key' — write to project-local .env (NO copy-paste)\n spinner.succeed(\n `API key generated for project ${chalk.bold(result.project.name)}`,\n );\n const envResult = writeApiKeyToEnv(result.api_key);\n console.log();\n console.log(chalk.green(\"✓ API key saved to .env\"));\n if (envResult.created) {\n console.log(chalk.gray(` • Created .env file at ${envResult.path}`));\n } else if (envResult.updated) {\n console.log(chalk.gray(` • Updated existing API key in ${envResult.path}`));\n } else {\n console.log(chalk.gray(` • Added API key to ${envResult.path}`));\n }\n console.log();\n console.log(\n chalk.gray(\n ` Project: ${result.project.name} (${result.project.slug})`,\n ),\n );\n console.log(chalk.gray(` Dashboard: ${cfg.control_plane_url}`));\n return cfg;\n } catch (err) {\n spinner.fail();\n if (err instanceof DeviceFlowError) {\n switch (err.kind) {\n case \"denied\":\n throw new Error(\n \"authorization denied — you can retry `langwatch login`\",\n );\n case \"expired\":\n throw new Error(\n \"authorization request expired — run `langwatch login` again\",\n );\n default:\n throw err;\n }\n }\n throw err;\n } finally {\n process.removeListener(\"SIGINT\", onSigint);\n }\n}\n\n/**\n * Back-compat wrapper. New callers should use `runUnifiedLoginFlow`\n * directly with an explicit `kind`.\n */\nexport async function runDeviceFlowLogin(\n opts: RunDeviceFlowLoginOptions = {},\n): Promise<GovernanceConfig> {\n return runUnifiedLoginFlow({ ...opts, kind: \"device_session\" });\n}\n\nfunction persistDeviceSession(\n cfg: GovernanceConfig,\n result: ExchangeDeviceSessionResult,\n): void {\n cfg.access_token = result.access_token;\n cfg.refresh_token = result.refresh_token;\n cfg.expires_at = Math.floor(Date.now() / 1000) + result.expires_in;\n cfg.user = {\n id: result.user.id,\n email: result.user.email,\n name: result.user.name,\n };\n cfg.organization = {\n id: result.organization.id,\n slug: result.organization.slug,\n name: result.organization.name,\n };\n if (result.default_personal_vk) {\n cfg.default_personal_vk = {\n id: result.default_personal_vk.id,\n secret: result.default_personal_vk.secret,\n prefix: result.default_personal_vk.prefix,\n };\n }\n if (result.endpoint) {\n cfg.control_plane_url = result.endpoint.replace(/\\/+$/, \"\");\n }\n}\n\ninterface EnvWriteResult {\n created: boolean;\n updated: boolean;\n path: string;\n}\n\nfunction writeApiKeyToEnv(apiKey: string): EnvWriteResult {\n const envPath = path.join(process.cwd(), \".env\");\n if (!fs.existsSync(envPath)) {\n fs.writeFileSync(envPath, `LANGWATCH_API_KEY=${apiKey}\\n`);\n return { created: true, updated: false, path: envPath };\n }\n const content = fs.readFileSync(envPath, \"utf-8\");\n const lines = content.split(\"\\n\");\n let found = false;\n const updatedLines = lines.map((line) => {\n if (line.startsWith(\"LANGWATCH_API_KEY=\")) {\n found = true;\n return `LANGWATCH_API_KEY=${apiKey}`;\n }\n return line;\n });\n if (!found) {\n if (content.endsWith(\"\\n\") || content === \"\") {\n updatedLines.push(`LANGWATCH_API_KEY=${apiKey}`);\n } else {\n updatedLines.push(\"\", `LANGWATCH_API_KEY=${apiKey}`);\n }\n }\n fs.writeFileSync(envPath, updatedLines.join(\"\\n\"));\n return { created: false, updated: found, path: envPath };\n}\n\nasync function fetchBootstrapSafely(\n cfg: GovernanceConfig,\n): Promise<CliBootstrapResponse | null> {\n try {\n return await getCliBootstrap(cfg);\n } catch {\n return null;\n }\n}\n\nasync function openInBrowser(url: string, override?: string): Promise<void> {\n const choice =\n override ?? process.env.LANGWATCH_BROWSER ?? process.env.BROWSER ?? \"\";\n if (choice === \"none\") return;\n const open = (await import(\"open\")).default;\n try {\n if (!choice || choice === \"default\") {\n await open(url);\n return;\n }\n await open(url, { app: { name: choice } });\n } catch {\n // browser failure shouldn't break login — user can paste manually\n }\n}\n\n// The post-login shell-rc persist offer was removed when `langwatch\n// login` became auth-only: the device session in config.json is\n// already authoritative, so login never edits the shell rc. The\n// persist offer now lives in the `langwatch <tool>` wrapper and fires\n// only in ingestion mode (maybeOfferIngestionShellRcPersist in\n// shell-rc.ts), framed as installing telemetry.\n\n// Type-only re-exports so callers can import the shapes from this\n// module without reaching into device-flow.ts.\nexport type { ExchangeApiKeyResult, ExchangeDeviceSessionResult };\n","/**\n * Render the \"You're in!\" ceremony emitted by `langwatch login` after a\n * successful device-flow exchange.\n *\n * Two clearly-separated lists, sourced from the org's AI Tools catalog:\n *\n * ✓ Logged in as jane@acme.com @ Acme\n *\n * Your AI tools (run any of these):\n * $ langwatch claude # Claude Code\n * $ langwatch codex # Codex\n *\n * Model providers you can issue a virtual key for:\n * • anthropic Claude\n * • openai (not configured yet)\n *\n * Monthly budget: $500 | Used: $0.00\n *\n * Or open the app in your browser:\n * $ langwatch open\n *\n * The two sections answer two different questions: which coding assistants\n * can I run right now (`tools`), and which model providers can I mint my own\n * virtual key for (`providers`). They are NOT the same thing — conflating\n * them was the bug this rewrite fixes.\n *\n * Pure function: takes the data, returns an array of lines. Caller applies\n * any chalk colouring + writes to stdout. Lets unit tests assert on the\n * literal output without colour/escape noise.\n */\n\nexport interface LoginCeremonyTool {\n /** CLI slug the wrapper runs (e.g. \"claude\", \"codex\"). */\n slug: string;\n /** Human-readable assistant name (e.g. \"Claude Code\"). */\n displayName: string;\n}\n\nexport interface LoginCeremonyProvider {\n /** Provider key (lowercase, e.g. \"anthropic\", \"openai\", \"gemini\"). */\n name: string;\n /** Optional human-readable provider label (e.g. \"Anthropic\"). */\n displayName?: string;\n /**\n * Whether the org has a live credential for this provider. When false the\n * ceremony annotates the row so the user knows the tile still needs setup\n * before a minted key will work.\n */\n configured?: boolean;\n}\n\nexport interface LoginCeremonyBudget {\n /** Period label (e.g. \"Monthly\"). Capitalised in output. */\n period: string;\n /** Spend ceiling in USD (rendered as `$N`). */\n limitUsd: number;\n /** Used so far in USD (rendered with two decimals). */\n usedUsd: number;\n}\n\nexport interface LoginCeremonyInput {\n email: string;\n organizationName?: string;\n /**\n * Coding assistants the user can run via `langwatch <slug>`, sourced from\n * the org's catalog. When empty / omitted the ceremony falls back to the\n * built-in default wrappers so a fresh org still gets a next-step.\n */\n tools?: LoginCeremonyTool[];\n /** Model providers the user can mint their own virtual key for. */\n providers?: LoginCeremonyProvider[];\n budget?: LoginCeremonyBudget;\n /** Whether the `langwatch open` browser-launch command is available. */\n openCommand?: boolean;\n}\n\n/** Fallback wrappers when the org has not published any coding-assistant tile. */\nconst DEFAULT_TOOLS: LoginCeremonyTool[] = [\n { slug: \"claude\", displayName: \"Claude Code\" },\n { slug: \"codex\", displayName: \"Codex\" },\n { slug: \"cursor\", displayName: \"Cursor\" },\n];\n\nfunction padRight(s: string, width: number): string {\n if (s.length >= width) return s;\n return s + \" \".repeat(width - s.length);\n}\n\nfunction formatUsd(n: number): string {\n // $500 (whole) → \"$500\"; $42.18 → \"$42.18\".\n if (Number.isInteger(n)) return `$${n}`;\n return `$${n.toFixed(2)}`;\n}\n\nfunction formatUsedUsd(n: number): string {\n return `$${n.toFixed(2)}`;\n}\n\nexport function formatLoginCeremony(input: LoginCeremonyInput): string[] {\n const lines: string[] = [];\n\n const orgSuffix = input.organizationName ? ` @ ${input.organizationName}` : \"\";\n lines.push(`✓ Logged in as ${input.email}${orgSuffix}`);\n\n // AI tools (coding assistants). Fall back to the built-in wrappers when the\n // org published none, so the user always gets a runnable next-step.\n const tools =\n input.tools && input.tools.length > 0 ? input.tools : DEFAULT_TOOLS;\n lines.push(\"\");\n lines.push(\"Your AI tools (run any of these):\");\n const cmdWidth = Math.max(\n ...tools.map((t) => `langwatch ${t.slug}`.length),\n );\n for (const tool of tools) {\n const cmd = `langwatch ${tool.slug}`;\n const labelSuffix = tool.displayName ? ` # ${tool.displayName}` : \"\";\n lines.push(` $ ${padRight(cmd, cmdWidth)}${labelSuffix}`);\n }\n\n // Model providers the user can mint a virtual key for — a different concept\n // from the tools above. Only shown when the org published provider tiles.\n if (input.providers && input.providers.length > 0) {\n lines.push(\"\");\n lines.push(\"Model providers you can issue a virtual key for:\");\n const nameWidth = Math.max(...input.providers.map((p) => p.name.length));\n for (const p of input.providers) {\n const padded = padRight(p.name, nameWidth);\n const annotations: string[] = [];\n if (p.displayName && p.displayName !== p.name) {\n annotations.push(p.displayName);\n }\n if (p.configured === false) annotations.push(\"(not configured yet)\");\n const suffix = annotations.length > 0 ? ` ${annotations.join(\" \")}` : \"\";\n lines.push(` • ${padded}${suffix}`);\n }\n }\n\n if (input.budget) {\n lines.push(\"\");\n const period =\n input.budget.period.charAt(0).toUpperCase() +\n input.budget.period.slice(1).toLowerCase();\n lines.push(\n `${period} budget: ${formatUsd(input.budget.limitUsd)} | Used: ${formatUsedUsd(input.budget.usedUsd)}`,\n );\n }\n\n if (input.openCommand !== false) {\n lines.push(\"\");\n lines.push(\"Or open the app in your browser:\");\n lines.push(\" $ langwatch open\");\n }\n\n return lines;\n}\n"],"mappings":"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","names":["hostname","path"]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkZX6VUKK5js = require('./chunk-ZX6VUKK5.js');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkTIAQGDR2js = require('./chunk-TIAQGDR2.js');
|
|
8
|
+
|
|
9
|
+
// src/cli/commands/dataset/create.ts
|
|
10
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
11
|
+
var _ora = require('ora'); var _ora2 = _interopRequireDefault(_ora);
|
|
12
|
+
var parseColumns = (columnsStr) => {
|
|
13
|
+
return columnsStr.split(",").map((pair) => {
|
|
14
|
+
var _a, _b;
|
|
15
|
+
const parts = pair.trim().split(":");
|
|
16
|
+
if (parts.length !== 2 || !((_a = parts[0]) == null ? void 0 : _a.trim()) || !((_b = parts[1]) == null ? void 0 : _b.trim())) {
|
|
17
|
+
throw new Error(
|
|
18
|
+
`Invalid column format: "${pair.trim()}". Expected "name:type" (e.g. "input:string")`
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
return { name: parts[0].trim(), type: parts[1].trim() };
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
var createCommand = async (name, options) => {
|
|
25
|
+
_chunkTIAQGDR2js.checkApiKey.call(void 0, );
|
|
26
|
+
let columnTypes = [];
|
|
27
|
+
if (options.columns) {
|
|
28
|
+
try {
|
|
29
|
+
columnTypes = parseColumns(options.columns);
|
|
30
|
+
} catch (error) {
|
|
31
|
+
console.error(
|
|
32
|
+
_chalk2.default.red(error instanceof Error ? error.message : "Invalid columns format")
|
|
33
|
+
);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const service = _chunkZX6VUKK5js.createDatasetService.call(void 0, );
|
|
38
|
+
const spinner = _ora2.default.call(void 0, `Creating dataset "${name}"...`).start();
|
|
39
|
+
try {
|
|
40
|
+
const dataset = await service.createDataset({ name, columnTypes });
|
|
41
|
+
spinner.succeed(`Dataset created: ${_chalk2.default.cyan(dataset.slug)}`);
|
|
42
|
+
if (options.format === "json") {
|
|
43
|
+
console.log(JSON.stringify(dataset, null, 2));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
console.log();
|
|
47
|
+
console.log(` ${_chalk2.default.bold("ID:")} ${dataset.id}`);
|
|
48
|
+
console.log(` ${_chalk2.default.bold("Slug:")} ${dataset.slug}`);
|
|
49
|
+
if (dataset.columnTypes.length > 0) {
|
|
50
|
+
const colStr = dataset.columnTypes.map((c) => `${c.name}:${c.type}`).join(", ");
|
|
51
|
+
console.log(` ${_chalk2.default.bold("Columns:")} ${colStr}`);
|
|
52
|
+
}
|
|
53
|
+
const viewUrl = dataset.platformUrl;
|
|
54
|
+
if (viewUrl) {
|
|
55
|
+
console.log(` ${_chalk2.default.bold("View:")} ${_chalk2.default.underline(viewUrl)}`);
|
|
56
|
+
}
|
|
57
|
+
} catch (error) {
|
|
58
|
+
_chunkZX6VUKK5js.handleDatasetCommandError.call(void 0, { spinner, error, context: "create dataset" });
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
exports.parseColumns = parseColumns; exports.createCommand = createCommand;
|
|
66
|
+
//# sourceMappingURL=chunk-Q6OMYVNW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-Q6OMYVNW.js","../src/cli/commands/dataset/create.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACRA,4EAAkB;AAClB,oEAAgB;AAaT,IAAM,aAAA,EAAe,CAAC,UAAA,EAAA,GAA4C;AACvE,EAAA,OAAO,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,EAAA,GAAS;AAf7C,IAAA,IAAA,EAAA,EAAA,EAAA;AAgBI,IAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA;AACnC,IAAA,GAAA,CAAI,KAAA,CAAM,OAAA,IAAW,EAAA,GAAK,CAAA,CAAA,CAAC,GAAA,EAAA,KAAA,CAAM,CAAC,CAAA,EAAA,GAAP,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAU,IAAA,CAAA,CAAA,EAAA,GAAU,CAAA,CAAA,CAAC,GAAA,EAAA,KAAA,CAAM,CAAC,CAAA,EAAA,GAAP,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAU,IAAA,CAAA,CAAA,CAAA,EAAQ;AAChE,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,wBAAA,EAA2B,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,6CAAA;AAAA,MACxC,CAAA;AAAA,IACF;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,CAAA,EAAG,IAAA,EAAM,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,EACxD,CAAC,CAAA;AACH,CAAA;AAKO,IAAM,cAAA,EAAgB,MAAA,CAC3B,IAAA,EACA,OAAA,EAAA,GACkB;AAClB,EAAA,0CAAA,CAAY;AAEZ,EAAA,IAAI,YAAA,EAAmC,CAAC,CAAA;AACxC,EAAA,GAAA,CAAI,OAAA,CAAQ,OAAA,EAAS;AACnB,IAAA,IAAI;AACF,MAAA,YAAA,EAAc,YAAA,CAAa,OAAA,CAAQ,OAAO,CAAA;AAAA,IAC5C,EAAA,MAAA,CAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA;AAAA,QACN,eAAA,CAAM,GAAA,CAAI,MAAA,WAAiB,MAAA,EAAQ,KAAA,CAAM,QAAA,EAAU,wBAAwB;AAAA,MAC7E,CAAA;AACA,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,EAAU,mDAAA,CAAqB;AACrC,EAAA,MAAM,QAAA,EAAU,2BAAA,CAAI,kBAAA,EAAqB,IAAI,CAAA,IAAA,CAAM,CAAA,CAAE,KAAA,CAAM,CAAA;AAE3D,EAAA,IAAI;AACF,IAAA,MAAM,QAAA,EAAU,MAAM,OAAA,CAAQ,aAAA,CAAc,EAAE,IAAA,EAAM,YAAY,CAAC,CAAA;AAEjE,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAA,iBAAA,EAAoB,eAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAC,CAAA,CAAA;AAE7B,IAAA;AACe,MAAA;AAC5C,MAAA;AACF,IAAA;AAEY,IAAA;AACyC,IAAA;AACE,IAAA;AACnB,IAAA;AAEP,MAAA;AAEwB,MAAA;AACrD,IAAA;AACwB,IAAA;AACX,IAAA;AAC8C,MAAA;AAC3D,IAAA;AACc,EAAA;AACuC,IAAA;AACvD,EAAA;AACF;ADhBiE;AACA;AACA;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-Q6OMYVNW.js","sourcesContent":[null,"import chalk from \"chalk\";\nimport ora from \"ora\";\nimport type { DatasetColumnType } from \"@/client-sdk/services/datasets/types\";\nimport { checkApiKey } from \"../../utils/apiKey\";\nimport { createDatasetService } from \"./service-factory\";\nimport { handleDatasetCommandError } from \"./error-handler\";\n\n/**\n * Parses a comma-separated column spec string into DatasetColumnType[].\n *\n * @param columnsStr - Format: \"name:type,name:type\" (e.g. \"input:string,output:string\")\n * @returns Parsed column type definitions\n * @throws Error if the format is invalid\n */\nexport const parseColumns = (columnsStr: string): DatasetColumnType[] => {\n return columnsStr.split(\",\").map((pair) => {\n const parts = pair.trim().split(\":\");\n if (parts.length !== 2 || !parts[0]?.trim() || !parts[1]?.trim()) {\n throw new Error(\n `Invalid column format: \"${pair.trim()}\". Expected \"name:type\" (e.g. \"input:string\")`,\n );\n }\n return { name: parts[0].trim(), type: parts[1].trim() };\n });\n};\n\n/**\n * Creates a new dataset with the given name and optional column types.\n */\nexport const createCommand = async (\n name: string,\n options: { columns?: string; format?: string },\n): Promise<void> => {\n checkApiKey();\n\n let columnTypes: DatasetColumnType[] = [];\n if (options.columns) {\n try {\n columnTypes = parseColumns(options.columns);\n } catch (error) {\n console.error(\n chalk.red(error instanceof Error ? error.message : \"Invalid columns format\"),\n );\n process.exit(1);\n }\n }\n\n const service = createDatasetService();\n const spinner = ora(`Creating dataset \"${name}\"...`).start();\n\n try {\n const dataset = await service.createDataset({ name, columnTypes });\n\n spinner.succeed(`Dataset created: ${chalk.cyan(dataset.slug)}`);\n\n if (options.format === \"json\") {\n console.log(JSON.stringify(dataset, null, 2));\n return;\n }\n\n console.log();\n console.log(` ${chalk.bold(\"ID:\")} ${dataset.id}`);\n console.log(` ${chalk.bold(\"Slug:\")} ${dataset.slug}`);\n if (dataset.columnTypes.length > 0) {\n const colStr = dataset.columnTypes\n .map((c) => `${c.name}:${c.type}`)\n .join(\", \");\n console.log(` ${chalk.bold(\"Columns:\")} ${colStr}`);\n }\n const viewUrl = dataset.platformUrl;\n if (viewUrl) {\n console.log(` ${chalk.bold(\"View:\")} ${chalk.underline(viewUrl)}`);\n }\n } catch (error) {\n handleDatasetCommandError({ spinner, error, context: \"create dataset\" });\n }\n};\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkLSRJHTPLjs = require('./chunk-LSRJHTPL.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkC5Y772G7js = require('./chunk-C5Y772G7.js');
|
|
8
|
+
|
|
9
|
+
// src/client-sdk/services/model-providers/model-providers-api.service.ts
|
|
10
|
+
var ModelProvidersApiError = class extends Error {
|
|
11
|
+
constructor(message, operation, originalError) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.operation = operation;
|
|
14
|
+
this.originalError = originalError;
|
|
15
|
+
this.name = "ModelProvidersApiError";
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
var ModelProvidersApiService = class {
|
|
19
|
+
constructor(config) {
|
|
20
|
+
var _a;
|
|
21
|
+
this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : _chunkLSRJHTPLjs.createLangWatchApiClient.call(void 0, );
|
|
22
|
+
}
|
|
23
|
+
handleApiError(operation, error) {
|
|
24
|
+
const message = _chunkC5Y772G7js.formatApiErrorForOperation.call(void 0, { operation, error, options: {
|
|
25
|
+
status: _chunkC5Y772G7js.extractStatusFromResponse.call(void 0, error)
|
|
26
|
+
} });
|
|
27
|
+
throw new ModelProvidersApiError(message, operation, error);
|
|
28
|
+
}
|
|
29
|
+
async list() {
|
|
30
|
+
const { data, error } = await this.apiClient.GET("/api/model-providers");
|
|
31
|
+
if (error) this.handleApiError("list model providers", error);
|
|
32
|
+
return data;
|
|
33
|
+
}
|
|
34
|
+
async set(provider, params) {
|
|
35
|
+
const { data, error } = await this.apiClient.PUT(
|
|
36
|
+
"/api/model-providers/{provider}",
|
|
37
|
+
{
|
|
38
|
+
params: { path: { provider } },
|
|
39
|
+
body: params
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
if (error)
|
|
43
|
+
this.handleApiError(`set model provider "${provider}"`, error);
|
|
44
|
+
return data;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
exports.ModelProvidersApiService = ModelProvidersApiService;
|
|
51
|
+
//# sourceMappingURL=chunk-QSMGACTW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-QSMGACTW.js","../src/client-sdk/services/model-providers/model-providers-api.service.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACA;ACUO,IAAM,uBAAA,EAAN,MAAA,QAAqC,MAAM;AAAA,EAChD,WAAA,CACE,OAAA,EACgB,SAAA,EACA,aAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHG,IAAA,IAAA,CAAA,UAAA,EAAA,SAAA;AACA,IAAA,IAAA,CAAA,cAAA,EAAA,aAAA;AAGhB,IAAA,IAAA,CAAK,KAAA,EAAO,wBAAA;AAAA,EACd;AACF,CAAA;AAEO,IAAM,yBAAA,EAAN,MAA+B;AAAA,EAGpC,WAAA,CAAY,MAAA,EAAqD;AAhCnE,IAAA,IAAA,EAAA;AAiCI,IAAA,IAAA,CAAK,UAAA,EAAA,CAAY,GAAA,EAAA,OAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,MAAA,CAAQ,kBAAA,EAAA,GAAR,KAAA,EAAA,GAAA,EAA8B,uDAAA,CAAyB;AAAA,EAC1E;AAAA,EAEQ,cAAA,CAAe,SAAA,EAAmB,KAAA,EAAuB;AAC/D,IAAA,MAAM,QAAA,EAAU,yDAAA,EAA6B,SAAA,EAAsB,KAAA,EAAc,OAAA,EAAS;AAAA,MACxF,MAAA,EAAQ,wDAAA,KAA+B;AAAA,IACzC,EAAE,CAAC,CAAA;AACH,IAAA,MAAM,IAAI,sBAAA,CAAuB,OAAA,EAAS,SAAA,EAAW,KAAK,CAAA;AAAA,EAC5D;AAAA,EAEA,MAAM,IAAA,CAAA,EAA4C;AAChD,IAAA,MAAM,EAAE,IAAA,EAAM,MAAM,EAAA,EAAI,MAAM,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,sBAAsB,CAAA;AACvE,IAAA,GAAA,CAAI,KAAA,EAAO,IAAA,CAAK,cAAA,CAAe,sBAAA,EAAwB,KAAK,CAAA;AAC5D,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,MAAM,GAAA,CAAI,QAAA,EAAkB,MAAA,EAAsE;AAChG,IAAA,MAAM,EAAE,IAAA,EAAM,MAAM,EAAA,EAAI,MAAM,IAAA,CAAK,SAAA,CAAU,GAAA;AAAA,MAC3C,iCAAA;AAAA,MACA;AAAA,QACE,MAAA,EAAQ,EAAE,IAAA,EAAM,EAAE,SAAS,EAAE,CAAA;AAAA,QAC7B,IAAA,EAAM;AAAA,MACR;AAAA,IACF,CAAA;AACA,IAAA,GAAA,CAAI,KAAA;AACF,MAAA,IAAA,CAAK,cAAA,CAAe,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAA,CAAA,EAAK,KAAK,CAAA;AAC/D,IAAA,OAAO,IAAA;AAAA,EACT;AACF,CAAA;ADfA;AACA;AACE;AACF,4DAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-QSMGACTW.js","sourcesContent":[null,"import type { paths } from \"@/internal/generated/openapi/api-client\";\nimport {\n createLangWatchApiClient,\n type LangwatchApiClient,\n} from \"@/internal/api/client\";\nimport { type InternalConfig } from \"@/client-sdk/types\";\nimport {\n extractStatusFromResponse,\n formatApiErrorForOperation,\n} from \"@/client-sdk/services/_shared/format-api-error\";\n\nexport type ModelProvidersListResponse =\n paths[\"/api/model-providers\"][\"get\"][\"responses\"][\"200\"][\"content\"][\"application/json\"];\n\nexport type UpdateModelProviderBody = NonNullable<\n paths[\"/api/model-providers/{provider}\"][\"put\"][\"requestBody\"]\n>[\"content\"][\"application/json\"];\n\nexport class ModelProvidersApiError extends Error {\n constructor(\n message: string,\n public readonly operation: string,\n public readonly originalError?: unknown,\n ) {\n super(message);\n this.name = \"ModelProvidersApiError\";\n }\n}\n\nexport class ModelProvidersApiService {\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 message = formatApiErrorForOperation({ operation: operation, error: error, options: {\n status: extractStatusFromResponse(error),\n } });\n throw new ModelProvidersApiError(message, operation, error);\n }\n\n async list(): Promise<ModelProvidersListResponse> {\n const { data, error } = await this.apiClient.GET(\"/api/model-providers\");\n if (error) this.handleApiError(\"list model providers\", error);\n return data;\n }\n\n async set(provider: string, params: UpdateModelProviderBody): Promise<ModelProvidersListResponse> {\n const { data, error } = await this.apiClient.PUT(\n \"/api/model-providers/{provider}\",\n {\n params: { path: { provider } },\n body: params,\n },\n );\n if (error)\n this.handleApiError(`set model provider \"${provider}\"`, error);\n return data;\n }\n}\n"]}
|