langwatch 0.34.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-RIPASL56.mjs → chunk-2O4ILSP5.mjs} +2 -2
- package/dist/{chunk-2V5FBEY3.mjs → chunk-3QHURXIZ.mjs} +42 -5
- package/dist/chunk-3QHURXIZ.mjs.map +1 -0
- package/dist/{chunk-FSACIXYG.js → chunk-53AMPF5E.js} +16 -22
- package/dist/chunk-53AMPF5E.js.map +1 -0
- package/dist/{chunk-YKWXS2BM.js → chunk-EDWIKCYX.js} +130 -48
- package/dist/chunk-EDWIKCYX.js.map +1 -0
- package/dist/{chunk-QZRBNYW2.js → chunk-HBVGKWJK.js} +53 -16
- package/dist/chunk-HBVGKWJK.js.map +1 -0
- package/dist/{chunk-NTRV2ICJ.js → chunk-IUSLT65Z.js} +2 -2
- package/dist/{chunk-NTRV2ICJ.js.map → chunk-IUSLT65Z.js.map} +1 -1
- package/dist/{chunk-4ZA6WF6S.mjs → chunk-KH2GOLFO.mjs} +104 -22
- package/dist/chunk-KH2GOLFO.mjs.map +1 -0
- package/dist/{chunk-PONU4KJX.mjs → chunk-L5KBRKHS.mjs} +110 -5
- package/dist/chunk-L5KBRKHS.mjs.map +1 -0
- package/dist/chunk-TKSTXX3D.js +239 -0
- package/dist/chunk-TKSTXX3D.js.map +1 -0
- package/dist/{chunk-42EDFIG2.mjs → chunk-XMAFHMLS.mjs} +10 -16
- package/dist/{chunk-42EDFIG2.mjs.map → chunk-XMAFHMLS.mjs.map} +1 -1
- package/dist/cli/bundle.js +3768 -0
- package/dist/cli/index.js +10 -1335
- package/dist/{implementation-BIfcyP32.d.ts → implementation-CMWs8g5L.d.ts} +3 -3
- package/dist/{implementation-BBG46scL.d.mts → implementation-Cv1hPZBQ.d.mts} +3 -3
- package/dist/index.d.mts +125 -12
- package/dist/index.d.ts +125 -12
- package/dist/index.js +4840 -1410
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4788 -1358
- package/dist/index.mjs.map +1 -1
- package/dist/observability-sdk/index.d.mts +6 -6
- package/dist/observability-sdk/index.d.ts +6 -6
- package/dist/observability-sdk/index.js +5 -10
- package/dist/observability-sdk/index.js.map +1 -1
- package/dist/observability-sdk/index.mjs +5 -10
- package/dist/observability-sdk/instrumentation/langchain/index.d.mts +2 -2
- package/dist/observability-sdk/instrumentation/langchain/index.d.ts +2 -2
- package/dist/observability-sdk/instrumentation/langchain/index.js +18 -21
- package/dist/observability-sdk/instrumentation/langchain/index.js.map +1 -1
- package/dist/observability-sdk/instrumentation/langchain/index.mjs +3 -6
- package/dist/observability-sdk/instrumentation/langchain/index.mjs.map +1 -1
- package/dist/observability-sdk/setup/node/index.d.mts +2 -2
- package/dist/observability-sdk/setup/node/index.d.ts +2 -2
- package/dist/observability-sdk/setup/node/index.js +4 -8
- package/dist/observability-sdk/setup/node/index.js.map +1 -1
- package/dist/observability-sdk/setup/node/index.mjs +3 -7
- package/dist/{types-CYfKDbKj.d.ts → types-D-yAkWoC.d.ts} +71 -3
- package/dist/{types-Dmazk5Bk.d.mts → types-DLfhJb38.d.mts} +1 -1
- package/dist/{types-Dmazk5Bk.d.ts → types-DLfhJb38.d.ts} +1 -1
- package/dist/{types-BvCQH8F1.d.ts → types-VOZv9LYO.d.mts} +1 -1
- package/dist/{types-BvCQH8F1.d.mts → types-VOZv9LYO.d.ts} +1 -1
- package/dist/{types-fzTtg5sg.d.mts → types-bfBzGB7S.d.mts} +71 -3
- package/package.json +13 -6
- package/dist/add-TFE2BH4K.mjs +0 -148
- package/dist/add-TFE2BH4K.mjs.map +0 -1
- package/dist/add-URBA6FGV.js +0 -148
- package/dist/add-URBA6FGV.js.map +0 -1
- package/dist/archive-CL6XUEYU.mjs +0 -41
- package/dist/archive-CL6XUEYU.mjs.map +0 -1
- package/dist/archive-K4SSNBML.js +0 -41
- package/dist/archive-K4SSNBML.js.map +0 -1
- package/dist/assign-4PVKU4WO.mjs +0 -54
- package/dist/assign-4PVKU4WO.mjs.map +0 -1
- package/dist/assign-RFENMUXO.js +0 -54
- package/dist/assign-RFENMUXO.js.map +0 -1
- package/dist/chunk-2MITUTNI.js +0 -205
- package/dist/chunk-2MITUTNI.js.map +0 -1
- package/dist/chunk-2V5FBEY3.mjs.map +0 -1
- package/dist/chunk-2VVANTLB.js +0 -68
- package/dist/chunk-2VVANTLB.js.map +0 -1
- package/dist/chunk-377U47MY.js +0 -42
- package/dist/chunk-377U47MY.js.map +0 -1
- package/dist/chunk-3K6C35HN.mjs +0 -80
- package/dist/chunk-3K6C35HN.mjs.map +0 -1
- package/dist/chunk-3PZ5VO5T.mjs +0 -205
- package/dist/chunk-3PZ5VO5T.mjs.map +0 -1
- package/dist/chunk-4Q4HSAKZ.js +0 -894
- package/dist/chunk-4Q4HSAKZ.js.map +0 -1
- package/dist/chunk-4ZA6WF6S.mjs.map +0 -1
- package/dist/chunk-535JT5M3.mjs +0 -42
- package/dist/chunk-535JT5M3.mjs.map +0 -1
- package/dist/chunk-5M6GLAIG.js +0 -410
- package/dist/chunk-5M6GLAIG.js.map +0 -1
- package/dist/chunk-5PF32BLZ.mjs +0 -76
- package/dist/chunk-5PF32BLZ.mjs.map +0 -1
- package/dist/chunk-5W4B44MH.mjs +0 -103
- package/dist/chunk-5W4B44MH.mjs.map +0 -1
- package/dist/chunk-5Z3A3Z5M.mjs +0 -96
- package/dist/chunk-5Z3A3Z5M.mjs.map +0 -1
- package/dist/chunk-64H4FLDB.mjs +0 -51
- package/dist/chunk-64H4FLDB.mjs.map +0 -1
- package/dist/chunk-67PP4GB4.mjs +0 -40
- package/dist/chunk-67PP4GB4.mjs.map +0 -1
- package/dist/chunk-6KMX34ZH.js +0 -257
- package/dist/chunk-6KMX34ZH.js.map +0 -1
- package/dist/chunk-6RSHYGUB.js +0 -85
- package/dist/chunk-6RSHYGUB.js.map +0 -1
- package/dist/chunk-7HFW67OR.mjs +0 -63
- package/dist/chunk-7HFW67OR.mjs.map +0 -1
- package/dist/chunk-7KSBRJUY.js +0 -54
- package/dist/chunk-7KSBRJUY.js.map +0 -1
- package/dist/chunk-7ULZZHBP.mjs +0 -42
- package/dist/chunk-7ULZZHBP.mjs.map +0 -1
- package/dist/chunk-A6YWANGL.js +0 -103
- package/dist/chunk-A6YWANGL.js.map +0 -1
- package/dist/chunk-B5TBCV6N.js +0 -96
- package/dist/chunk-B5TBCV6N.js.map +0 -1
- package/dist/chunk-BAX4W3AY.mjs +0 -62
- package/dist/chunk-BAX4W3AY.mjs.map +0 -1
- package/dist/chunk-BGYXA2QV.mjs +0 -96
- package/dist/chunk-BGYXA2QV.mjs.map +0 -1
- package/dist/chunk-BRPEG3YQ.js +0 -62
- package/dist/chunk-BRPEG3YQ.js.map +0 -1
- package/dist/chunk-C5Y772G7.js +0 -152
- package/dist/chunk-C5Y772G7.js.map +0 -1
- package/dist/chunk-CEJY6QI3.mjs +0 -508
- package/dist/chunk-CEJY6QI3.mjs.map +0 -1
- package/dist/chunk-CGECDLSE.js +0 -90
- package/dist/chunk-CGECDLSE.js.map +0 -1
- package/dist/chunk-CKTJADY6.mjs +0 -348
- package/dist/chunk-CKTJADY6.mjs.map +0 -1
- package/dist/chunk-CLYXJJ6C.js +0 -66
- package/dist/chunk-CLYXJJ6C.js.map +0 -1
- package/dist/chunk-COMOCQA6.mjs +0 -13
- package/dist/chunk-COMOCQA6.mjs.map +0 -1
- package/dist/chunk-D2VRKNFF.js +0 -1672
- package/dist/chunk-D2VRKNFF.js.map +0 -1
- package/dist/chunk-D5NUUB4G.mjs +0 -225
- package/dist/chunk-D5NUUB4G.mjs.map +0 -1
- package/dist/chunk-DCTJDRBW.js +0 -40
- package/dist/chunk-DCTJDRBW.js.map +0 -1
- package/dist/chunk-DIILEB4J.js +0 -196
- package/dist/chunk-DIILEB4J.js.map +0 -1
- package/dist/chunk-DOJBPYAE.js +0 -663
- package/dist/chunk-DOJBPYAE.js.map +0 -1
- package/dist/chunk-DTEKJ3UD.mjs +0 -66
- package/dist/chunk-DTEKJ3UD.mjs.map +0 -1
- package/dist/chunk-FG3JQBJB.mjs +0 -68
- package/dist/chunk-FG3JQBJB.mjs.map +0 -1
- package/dist/chunk-FNFLZXXA.js +0 -80
- package/dist/chunk-FNFLZXXA.js.map +0 -1
- package/dist/chunk-FSACIXYG.js.map +0 -1
- package/dist/chunk-GFLV5NP6.mjs +0 -70
- package/dist/chunk-GFLV5NP6.mjs.map +0 -1
- package/dist/chunk-GNWMKXDU.mjs +0 -66
- package/dist/chunk-GNWMKXDU.mjs.map +0 -1
- package/dist/chunk-GPGJNBPP.js +0 -63
- package/dist/chunk-GPGJNBPP.js.map +0 -1
- package/dist/chunk-GUPNZDU7.js +0 -101
- package/dist/chunk-GUPNZDU7.js.map +0 -1
- package/dist/chunk-HDA25KWZ.js +0 -134
- package/dist/chunk-HDA25KWZ.js.map +0 -1
- package/dist/chunk-IZD5CIVE.js +0 -70
- package/dist/chunk-IZD5CIVE.js.map +0 -1
- package/dist/chunk-J3KM7ZO7.mjs +0 -152
- package/dist/chunk-J3KM7ZO7.mjs.map +0 -1
- package/dist/chunk-JQVI5CD7.mjs +0 -894
- package/dist/chunk-JQVI5CD7.mjs.map +0 -1
- package/dist/chunk-JSV75WAY.js +0 -76
- package/dist/chunk-JSV75WAY.js.map +0 -1
- package/dist/chunk-JZYHVNJR.js +0 -22
- package/dist/chunk-JZYHVNJR.js.map +0 -1
- package/dist/chunk-KT6HZNPV.js +0 -36
- package/dist/chunk-KT6HZNPV.js.map +0 -1
- package/dist/chunk-KW2W5KVS.mjs +0 -22
- package/dist/chunk-KW2W5KVS.mjs.map +0 -1
- package/dist/chunk-LA5LU5UP.js +0 -225
- package/dist/chunk-LA5LU5UP.js.map +0 -1
- package/dist/chunk-LSRJHTPL.js +0 -36
- package/dist/chunk-LSRJHTPL.js.map +0 -1
- package/dist/chunk-M3WJZUOE.js +0 -13
- package/dist/chunk-M3WJZUOE.js.map +0 -1
- package/dist/chunk-M5UNTGGK.mjs +0 -68
- package/dist/chunk-M5UNTGGK.mjs.map +0 -1
- package/dist/chunk-NQN42A2N.js +0 -348
- package/dist/chunk-NQN42A2N.js.map +0 -1
- package/dist/chunk-NYCKS3GG.js +0 -20
- package/dist/chunk-NYCKS3GG.js.map +0 -1
- package/dist/chunk-O2GHYEAE.mjs +0 -92
- package/dist/chunk-O2GHYEAE.mjs.map +0 -1
- package/dist/chunk-OGAE7BVQ.js +0 -67
- package/dist/chunk-OGAE7BVQ.js.map +0 -1
- package/dist/chunk-OMOZEGVZ.mjs +0 -22
- package/dist/chunk-OMOZEGVZ.mjs.map +0 -1
- package/dist/chunk-OMZ3FRPU.mjs +0 -65
- package/dist/chunk-OMZ3FRPU.mjs.map +0 -1
- package/dist/chunk-OOXU4LFW.js +0 -65
- package/dist/chunk-OOXU4LFW.js.map +0 -1
- package/dist/chunk-OSAFGMGH.mjs +0 -85
- package/dist/chunk-OSAFGMGH.mjs.map +0 -1
- package/dist/chunk-OXULVOBF.mjs +0 -144
- package/dist/chunk-OXULVOBF.mjs.map +0 -1
- package/dist/chunk-PONU4KJX.mjs.map +0 -1
- package/dist/chunk-PQA46YVG.mjs +0 -410
- package/dist/chunk-PQA46YVG.mjs.map +0 -1
- package/dist/chunk-Q6OMYVNW.js +0 -66
- package/dist/chunk-Q6OMYVNW.js.map +0 -1
- package/dist/chunk-Q7AHHFC3.mjs +0 -20
- package/dist/chunk-Q7AHHFC3.mjs.map +0 -1
- package/dist/chunk-QSMGACTW.js +0 -51
- package/dist/chunk-QSMGACTW.js.map +0 -1
- package/dist/chunk-QVQ7WDJS.mjs +0 -196
- package/dist/chunk-QVQ7WDJS.mjs.map +0 -1
- package/dist/chunk-QZRBNYW2.js.map +0 -1
- package/dist/chunk-R6QPBFZD.mjs +0 -63
- package/dist/chunk-R6QPBFZD.mjs.map +0 -1
- package/dist/chunk-RALJR5ZU.js +0 -80
- package/dist/chunk-RALJR5ZU.js.map +0 -1
- package/dist/chunk-S2UWK4HL.mjs +0 -36
- package/dist/chunk-S2UWK4HL.mjs.map +0 -1
- package/dist/chunk-SIXSSID3.mjs +0 -43
- package/dist/chunk-SIXSSID3.mjs.map +0 -1
- package/dist/chunk-SNKGSX5I.js +0 -42
- package/dist/chunk-SNKGSX5I.js.map +0 -1
- package/dist/chunk-SQXVLXIS.mjs +0 -90
- package/dist/chunk-SQXVLXIS.mjs.map +0 -1
- package/dist/chunk-TIAQGDR2.js +0 -34
- package/dist/chunk-TIAQGDR2.js.map +0 -1
- package/dist/chunk-U47MQ6CS.mjs +0 -67
- package/dist/chunk-U47MQ6CS.mjs.map +0 -1
- package/dist/chunk-UQ633TEF.mjs +0 -54
- package/dist/chunk-UQ633TEF.mjs.map +0 -1
- package/dist/chunk-UTXV7U7Z.js +0 -92
- package/dist/chunk-UTXV7U7Z.js.map +0 -1
- package/dist/chunk-W2BNKVWJ.mjs +0 -36
- package/dist/chunk-W2BNKVWJ.mjs.map +0 -1
- package/dist/chunk-WG7MPZXJ.mjs +0 -663
- package/dist/chunk-WG7MPZXJ.mjs.map +0 -1
- package/dist/chunk-WIXX2IDN.mjs +0 -101
- package/dist/chunk-WIXX2IDN.mjs.map +0 -1
- package/dist/chunk-WQRATXQU.mjs +0 -80
- package/dist/chunk-WQRATXQU.mjs.map +0 -1
- package/dist/chunk-WV4U2PPY.js +0 -68
- package/dist/chunk-WV4U2PPY.js.map +0 -1
- package/dist/chunk-WZTRPR6A.js +0 -43
- package/dist/chunk-WZTRPR6A.js.map +0 -1
- package/dist/chunk-XGULH63G.mjs +0 -1672
- package/dist/chunk-XGULH63G.mjs.map +0 -1
- package/dist/chunk-YBLYQYXL.js +0 -22
- package/dist/chunk-YBLYQYXL.js.map +0 -1
- package/dist/chunk-YK55ZGRQ.mjs +0 -257
- package/dist/chunk-YK55ZGRQ.mjs.map +0 -1
- package/dist/chunk-YKDTIJF2.js +0 -144
- package/dist/chunk-YKDTIJF2.js.map +0 -1
- package/dist/chunk-YKWXS2BM.js.map +0 -1
- package/dist/chunk-YOSDU6PV.mjs +0 -34
- package/dist/chunk-YOSDU6PV.mjs.map +0 -1
- package/dist/chunk-YP4LDCP6.mjs +0 -277
- package/dist/chunk-YP4LDCP6.mjs.map +0 -1
- package/dist/chunk-ZA5BH7IZ.js +0 -277
- package/dist/chunk-ZA5BH7IZ.js.map +0 -1
- package/dist/chunk-ZFAAOZZM.js +0 -96
- package/dist/chunk-ZFAAOZZM.js.map +0 -1
- package/dist/chunk-ZFFJYYDN.js +0 -508
- package/dist/chunk-ZFFJYYDN.js.map +0 -1
- package/dist/chunk-ZX6VUKK5.js +0 -63
- package/dist/chunk-ZX6VUKK5.js.map +0 -1
- package/dist/cli/index.d.mts +0 -1
- package/dist/cli/index.d.ts +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/index.mjs +0 -1336
- package/dist/cli/index.mjs.map +0 -1
- package/dist/config-DPFYZQUU.js +0 -96
- package/dist/config-DPFYZQUU.js.map +0 -1
- package/dist/config-DXWUTPTA.mjs +0 -96
- package/dist/config-DXWUTPTA.mjs.map +0 -1
- package/dist/create-2MUVHIRR.js +0 -49
- package/dist/create-2MUVHIRR.js.map +0 -1
- package/dist/create-2VO6N4CY.js +0 -50
- package/dist/create-2VO6N4CY.js.map +0 -1
- package/dist/create-5HLREIKR.mjs +0 -52
- package/dist/create-5HLREIKR.mjs.map +0 -1
- package/dist/create-7WWQNO2D.mjs +0 -88
- package/dist/create-7WWQNO2D.mjs.map +0 -1
- package/dist/create-APC6WMHS.js +0 -72
- package/dist/create-APC6WMHS.js.map +0 -1
- package/dist/create-B6AZP3AH.js +0 -42
- package/dist/create-B6AZP3AH.js.map +0 -1
- package/dist/create-BWIIJPYN.js +0 -88
- package/dist/create-BWIIJPYN.js.map +0 -1
- package/dist/create-C7HS7DAN.js +0 -91
- package/dist/create-C7HS7DAN.js.map +0 -1
- package/dist/create-CENOO2Z5.mjs +0 -94
- package/dist/create-CENOO2Z5.mjs.map +0 -1
- package/dist/create-CSENTPZ7.mjs +0 -88
- package/dist/create-CSENTPZ7.mjs.map +0 -1
- package/dist/create-F564PPYR.mjs +0 -72
- package/dist/create-F564PPYR.mjs.map +0 -1
- package/dist/create-FEVRMAGI.js +0 -75
- package/dist/create-FEVRMAGI.js.map +0 -1
- package/dist/create-FK6ZCXCA.js +0 -92
- package/dist/create-FK6ZCXCA.js.map +0 -1
- package/dist/create-G5KF3LVC.mjs +0 -50
- package/dist/create-G5KF3LVC.mjs.map +0 -1
- package/dist/create-HL6BPJBM.mjs +0 -71
- package/dist/create-HL6BPJBM.mjs.map +0 -1
- package/dist/create-KFDWNSGC.mjs +0 -87
- package/dist/create-KFDWNSGC.mjs.map +0 -1
- package/dist/create-KTPZZ7NV.mjs +0 -75
- package/dist/create-KTPZZ7NV.mjs.map +0 -1
- package/dist/create-LAKPCRNY.mjs +0 -92
- package/dist/create-LAKPCRNY.mjs.map +0 -1
- package/dist/create-LFU7Z6DS.mjs +0 -42
- package/dist/create-LFU7Z6DS.mjs.map +0 -1
- package/dist/create-MI7MQLN6.mjs +0 -48
- package/dist/create-MI7MQLN6.mjs.map +0 -1
- package/dist/create-OMO3TETI.mjs +0 -23
- package/dist/create-OMO3TETI.mjs.map +0 -1
- package/dist/create-OWODQWNJ.js +0 -48
- package/dist/create-OWODQWNJ.js.map +0 -1
- package/dist/create-POGAVC3B.mjs +0 -49
- package/dist/create-POGAVC3B.mjs.map +0 -1
- package/dist/create-QJLKTHQ6.mjs +0 -58
- package/dist/create-QJLKTHQ6.mjs.map +0 -1
- package/dist/create-R57TZY3Y.js +0 -94
- package/dist/create-R57TZY3Y.js.map +0 -1
- package/dist/create-RIHQJENZ.js +0 -71
- package/dist/create-RIHQJENZ.js.map +0 -1
- package/dist/create-UOIUDY25.js +0 -88
- package/dist/create-UOIUDY25.js.map +0 -1
- package/dist/create-URUJVBUC.js +0 -87
- package/dist/create-URUJVBUC.js.map +0 -1
- package/dist/create-VEK55UDK.mjs +0 -43
- package/dist/create-VEK55UDK.mjs.map +0 -1
- package/dist/create-VKXRDN5O.js +0 -52
- package/dist/create-VKXRDN5O.js.map +0 -1
- package/dist/create-XHAKNOTS.mjs +0 -91
- package/dist/create-XHAKNOTS.mjs.map +0 -1
- package/dist/create-YJHDG2ZO.js +0 -23
- package/dist/create-YJHDG2ZO.js.map +0 -1
- package/dist/create-Z5CM76ZW.js +0 -43
- package/dist/create-Z5CM76ZW.js.map +0 -1
- package/dist/create-Z6JTQNL6.js +0 -58
- package/dist/create-Z6JTQNL6.js.map +0 -1
- package/dist/delete-6BINMYZI.mjs +0 -52
- package/dist/delete-6BINMYZI.mjs.map +0 -1
- package/dist/delete-6T5CCDFJ.js +0 -42
- package/dist/delete-6T5CCDFJ.js.map +0 -1
- package/dist/delete-6UHWYVNZ.js +0 -52
- package/dist/delete-6UHWYVNZ.js.map +0 -1
- package/dist/delete-A5RWDQKJ.js +0 -52
- package/dist/delete-A5RWDQKJ.js.map +0 -1
- package/dist/delete-A7ZWGQPR.mjs +0 -59
- package/dist/delete-A7ZWGQPR.mjs.map +0 -1
- package/dist/delete-B5G7GAHY.mjs +0 -44
- package/dist/delete-B5G7GAHY.mjs.map +0 -1
- package/dist/delete-BGCVEG3C.js +0 -61
- package/dist/delete-BGCVEG3C.js.map +0 -1
- package/dist/delete-BYCIZOZG.js +0 -39
- package/dist/delete-BYCIZOZG.js.map +0 -1
- package/dist/delete-E5VYCRYX.mjs +0 -39
- package/dist/delete-E5VYCRYX.mjs.map +0 -1
- package/dist/delete-EK6PUMYW.js +0 -52
- package/dist/delete-EK6PUMYW.js.map +0 -1
- package/dist/delete-ERB4LGWZ.mjs +0 -41
- package/dist/delete-ERB4LGWZ.mjs.map +0 -1
- package/dist/delete-FD3IISGJ.js +0 -38
- package/dist/delete-FD3IISGJ.js.map +0 -1
- package/dist/delete-FE3MRFPM.mjs +0 -52
- package/dist/delete-FE3MRFPM.mjs.map +0 -1
- package/dist/delete-FP5MMDDA.mjs +0 -61
- package/dist/delete-FP5MMDDA.mjs.map +0 -1
- package/dist/delete-FWKI62NT.mjs +0 -39
- package/dist/delete-FWKI62NT.mjs.map +0 -1
- package/dist/delete-HLKQDPTI.js +0 -52
- package/dist/delete-HLKQDPTI.js.map +0 -1
- package/dist/delete-KAVDMRQX.mjs +0 -59
- package/dist/delete-KAVDMRQX.mjs.map +0 -1
- package/dist/delete-M4ZCKWOU.mjs +0 -52
- package/dist/delete-M4ZCKWOU.mjs.map +0 -1
- package/dist/delete-NGPOOTEX.mjs +0 -42
- package/dist/delete-NGPOOTEX.mjs.map +0 -1
- package/dist/delete-NN4CSTK5.js +0 -44
- package/dist/delete-NN4CSTK5.js.map +0 -1
- package/dist/delete-NRW5THMB.js +0 -39
- package/dist/delete-NRW5THMB.js.map +0 -1
- package/dist/delete-SZG6DJUR.mjs +0 -52
- package/dist/delete-SZG6DJUR.mjs.map +0 -1
- package/dist/delete-UMDNW3RR.mjs +0 -59
- package/dist/delete-UMDNW3RR.mjs.map +0 -1
- package/dist/delete-UVGITJ2L.mjs +0 -38
- package/dist/delete-UVGITJ2L.mjs.map +0 -1
- package/dist/delete-VBP7TKUH.js +0 -41
- package/dist/delete-VBP7TKUH.js.map +0 -1
- package/dist/delete-Y3DTH336.js +0 -59
- package/dist/delete-Y3DTH336.js.map +0 -1
- package/dist/delete-ZM3GFW2Z.js +0 -59
- package/dist/delete-ZM3GFW2Z.js.map +0 -1
- package/dist/delete-ZSN6PWGA.js +0 -59
- package/dist/delete-ZSN6PWGA.js.map +0 -1
- package/dist/docs-23TMQCLZ.js +0 -77
- package/dist/docs-23TMQCLZ.js.map +0 -1
- package/dist/docs-YG2DQVHD.mjs +0 -77
- package/dist/docs-YG2DQVHD.mjs.map +0 -1
- package/dist/download-B4Z4TAXZ.js +0 -100
- package/dist/download-B4Z4TAXZ.js.map +0 -1
- package/dist/download-JPL3BO4H.mjs +0 -100
- package/dist/download-JPL3BO4H.mjs.map +0 -1
- package/dist/duplicate-IYUSDPY2.js +0 -45
- package/dist/duplicate-IYUSDPY2.js.map +0 -1
- package/dist/duplicate-OWG7P745.mjs +0 -45
- package/dist/duplicate-OWG7P745.mjs.map +0 -1
- package/dist/export-4A6ILAPM.mjs +0 -103
- package/dist/export-4A6ILAPM.mjs.map +0 -1
- package/dist/export-BUFJDFWC.js +0 -103
- package/dist/export-BUFJDFWC.js.map +0 -1
- package/dist/get-37E7GAV3.js +0 -76
- package/dist/get-37E7GAV3.js.map +0 -1
- package/dist/get-4D2MVW4T.js +0 -49
- package/dist/get-4D2MVW4T.js.map +0 -1
- package/dist/get-576OERBE.mjs +0 -66
- package/dist/get-576OERBE.mjs.map +0 -1
- package/dist/get-5GQP5EDN.mjs +0 -71
- package/dist/get-5GQP5EDN.mjs.map +0 -1
- package/dist/get-6DKM4MZL.mjs +0 -70
- package/dist/get-6DKM4MZL.mjs.map +0 -1
- package/dist/get-BO7KWXNS.js +0 -70
- package/dist/get-BO7KWXNS.js.map +0 -1
- package/dist/get-BQH2FJBV.mjs +0 -49
- package/dist/get-BQH2FJBV.mjs.map +0 -1
- package/dist/get-DCEQN75Y.mjs +0 -71
- package/dist/get-DCEQN75Y.mjs.map +0 -1
- package/dist/get-DEFHJ7CN.js +0 -94
- package/dist/get-DEFHJ7CN.js.map +0 -1
- package/dist/get-DX5U344V.mjs +0 -149
- package/dist/get-DX5U344V.mjs.map +0 -1
- package/dist/get-EWYM6FYK.js +0 -54
- package/dist/get-EWYM6FYK.js.map +0 -1
- package/dist/get-HY3N72VT.js +0 -71
- package/dist/get-HY3N72VT.js.map +0 -1
- package/dist/get-I2CSBUKB.js +0 -56
- package/dist/get-I2CSBUKB.js.map +0 -1
- package/dist/get-I6EY4PC6.mjs +0 -54
- package/dist/get-I6EY4PC6.mjs.map +0 -1
- package/dist/get-JDHZ2YUC.mjs +0 -85
- package/dist/get-JDHZ2YUC.mjs.map +0 -1
- package/dist/get-KSATLDNX.mjs +0 -56
- package/dist/get-KSATLDNX.mjs.map +0 -1
- package/dist/get-L5HUN5CE.mjs +0 -94
- package/dist/get-L5HUN5CE.mjs.map +0 -1
- package/dist/get-LIQYXM3J.mjs +0 -76
- package/dist/get-LIQYXM3J.mjs.map +0 -1
- package/dist/get-NICBHRKG.js +0 -51
- package/dist/get-NICBHRKG.js.map +0 -1
- package/dist/get-NXV4JPXT.mjs +0 -51
- package/dist/get-NXV4JPXT.mjs.map +0 -1
- package/dist/get-OH6XFEO7.js +0 -149
- package/dist/get-OH6XFEO7.js.map +0 -1
- package/dist/get-OW77HE3C.mjs +0 -67
- package/dist/get-OW77HE3C.mjs.map +0 -1
- package/dist/get-P5MUOCUP.js +0 -68
- package/dist/get-P5MUOCUP.js.map +0 -1
- package/dist/get-PHEE7JVL.mjs +0 -71
- package/dist/get-PHEE7JVL.mjs.map +0 -1
- package/dist/get-QYIM3DCN.mjs +0 -68
- package/dist/get-QYIM3DCN.mjs.map +0 -1
- package/dist/get-R6F56IVZ.js +0 -67
- package/dist/get-R6F56IVZ.js.map +0 -1
- package/dist/get-RWF3UWIF.js +0 -71
- package/dist/get-RWF3UWIF.js.map +0 -1
- package/dist/get-T6TAL2GB.js +0 -52
- package/dist/get-T6TAL2GB.js.map +0 -1
- package/dist/get-TNDPILF3.js +0 -85
- package/dist/get-TNDPILF3.js.map +0 -1
- package/dist/get-UV3YT4VH.js +0 -66
- package/dist/get-UV3YT4VH.js.map +0 -1
- package/dist/get-X4Q4RZQC.mjs +0 -52
- package/dist/get-X4Q4RZQC.mjs.map +0 -1
- package/dist/get-XIK4FEGG.js +0 -71
- package/dist/get-XIK4FEGG.js.map +0 -1
- package/dist/health-LCGP7UDT.js +0 -73
- package/dist/health-LCGP7UDT.js.map +0 -1
- package/dist/health-MCMRR6RQ.mjs +0 -73
- package/dist/health-MCMRR6RQ.mjs.map +0 -1
- package/dist/ingestion-templates-7TLETXIF.mjs +0 -169
- package/dist/ingestion-templates-7TLETXIF.mjs.map +0 -1
- package/dist/ingestion-templates-AT5AKWJB.js +0 -169
- package/dist/ingestion-templates-AT5AKWJB.js.map +0 -1
- package/dist/init-SQ5UUFDM.js +0 -16
- package/dist/init-SQ5UUFDM.js.map +0 -1
- package/dist/init-UGSR2T2P.mjs +0 -16
- package/dist/init-UGSR2T2P.mjs.map +0 -1
- package/dist/init-shell-2JQCBGMG.mjs +0 -71
- package/dist/init-shell-2JQCBGMG.mjs.map +0 -1
- package/dist/init-shell-UDTYTWJ4.js +0 -71
- package/dist/init-shell-UDTYTWJ4.js.map +0 -1
- package/dist/install-JNBCGN7Q.mjs +0 -191
- package/dist/install-JNBCGN7Q.mjs.map +0 -1
- package/dist/install-VBJKW5WP.js +0 -191
- package/dist/install-VBJKW5WP.js.map +0 -1
- package/dist/list-2ALO3KFG.js +0 -87
- package/dist/list-2ALO3KFG.js.map +0 -1
- package/dist/list-2YGHM2AD.mjs +0 -76
- package/dist/list-2YGHM2AD.mjs.map +0 -1
- package/dist/list-3XJ7VZN4.mjs +0 -75
- package/dist/list-3XJ7VZN4.mjs.map +0 -1
- package/dist/list-47FO2DBS.js +0 -80
- package/dist/list-47FO2DBS.js.map +0 -1
- package/dist/list-4JFVZU6U.mjs +0 -78
- package/dist/list-4JFVZU6U.mjs.map +0 -1
- package/dist/list-5DNRGKML.mjs +0 -80
- package/dist/list-5DNRGKML.mjs.map +0 -1
- package/dist/list-6CPPEJQV.js +0 -75
- package/dist/list-6CPPEJQV.js.map +0 -1
- package/dist/list-6UYNGBNA.mjs +0 -75
- package/dist/list-6UYNGBNA.mjs.map +0 -1
- package/dist/list-7F3TLLLA.js +0 -85
- package/dist/list-7F3TLLLA.js.map +0 -1
- package/dist/list-AVYXRPYR.mjs +0 -53
- package/dist/list-AVYXRPYR.mjs.map +0 -1
- package/dist/list-B5QJP7XO.mjs +0 -122
- package/dist/list-B5QJP7XO.mjs.map +0 -1
- package/dist/list-BI6VDR3L.mjs +0 -80
- package/dist/list-BI6VDR3L.mjs.map +0 -1
- package/dist/list-BIXZNQNL.mjs +0 -90
- package/dist/list-BIXZNQNL.mjs.map +0 -1
- package/dist/list-E2NKP4RN.mjs +0 -71
- package/dist/list-E2NKP4RN.mjs.map +0 -1
- package/dist/list-EX74E4W3.js +0 -82
- package/dist/list-EX74E4W3.js.map +0 -1
- package/dist/list-F7RK6OGO.js +0 -71
- package/dist/list-F7RK6OGO.js.map +0 -1
- package/dist/list-FQVXBMOV.js +0 -82
- package/dist/list-FQVXBMOV.js.map +0 -1
- package/dist/list-FTAHO7RS.js +0 -53
- package/dist/list-FTAHO7RS.js.map +0 -1
- package/dist/list-HJFLTMZZ.js +0 -80
- package/dist/list-HJFLTMZZ.js.map +0 -1
- package/dist/list-HZCZZBHB.js +0 -83
- package/dist/list-HZCZZBHB.js.map +0 -1
- package/dist/list-IIUX33VL.mjs +0 -86
- package/dist/list-IIUX33VL.mjs.map +0 -1
- package/dist/list-JFASUTLY.js +0 -78
- package/dist/list-JFASUTLY.js.map +0 -1
- package/dist/list-KJIOIAVI.mjs +0 -80
- package/dist/list-KJIOIAVI.mjs.map +0 -1
- package/dist/list-LKNXTUMI.js +0 -104
- package/dist/list-LKNXTUMI.js.map +0 -1
- package/dist/list-M34E5BJ5.js +0 -80
- package/dist/list-M34E5BJ5.js.map +0 -1
- package/dist/list-MX4GYY6P.mjs +0 -87
- package/dist/list-MX4GYY6P.mjs.map +0 -1
- package/dist/list-O5SCIB3L.js +0 -75
- package/dist/list-O5SCIB3L.js.map +0 -1
- package/dist/list-O6OJ5XHC.mjs +0 -72
- package/dist/list-O6OJ5XHC.mjs.map +0 -1
- package/dist/list-ODC5L7LD.mjs +0 -83
- package/dist/list-ODC5L7LD.mjs.map +0 -1
- package/dist/list-Q5WBWW4Q.mjs +0 -82
- package/dist/list-Q5WBWW4Q.mjs.map +0 -1
- package/dist/list-QA563QDB.js +0 -90
- package/dist/list-QA563QDB.js.map +0 -1
- package/dist/list-RJFCSUUQ.mjs +0 -111
- package/dist/list-RJFCSUUQ.mjs.map +0 -1
- package/dist/list-RMHLZBQG.js +0 -76
- package/dist/list-RMHLZBQG.js.map +0 -1
- package/dist/list-SRYZRJCV.js +0 -111
- package/dist/list-SRYZRJCV.js.map +0 -1
- package/dist/list-TOSZ7BU7.js +0 -86
- package/dist/list-TOSZ7BU7.js.map +0 -1
- package/dist/list-UQQ2PAU3.mjs +0 -104
- package/dist/list-UQQ2PAU3.mjs.map +0 -1
- package/dist/list-V2WO7LLU.js +0 -72
- package/dist/list-V2WO7LLU.js.map +0 -1
- package/dist/list-VA5A3CCK.mjs +0 -75
- package/dist/list-VA5A3CCK.mjs.map +0 -1
- package/dist/list-X6EIZ5MP.js +0 -75
- package/dist/list-X6EIZ5MP.js.map +0 -1
- package/dist/list-YUYYYQ7E.js +0 -122
- package/dist/list-YUYYYQ7E.js.map +0 -1
- package/dist/list-Z4GK3RXW.js +0 -78
- package/dist/list-Z4GK3RXW.js.map +0 -1
- package/dist/list-ZBKYVBPN.mjs +0 -85
- package/dist/list-ZBKYVBPN.mjs.map +0 -1
- package/dist/list-ZDLAHVOP.mjs +0 -78
- package/dist/list-ZDLAHVOP.mjs.map +0 -1
- package/dist/list-ZONPFTHT.mjs +0 -82
- package/dist/list-ZONPFTHT.mjs.map +0 -1
- package/dist/login-UWJ4SQ3T.mjs +0 -279
- package/dist/login-UWJ4SQ3T.mjs.map +0 -1
- package/dist/login-Y3TEPZOC.js +0 -279
- package/dist/login-Y3TEPZOC.js.map +0 -1
- package/dist/logout-RTWQU22E.mjs +0 -181
- package/dist/logout-RTWQU22E.mjs.map +0 -1
- package/dist/logout-TXOAFCK7.js +0 -181
- package/dist/logout-TXOAFCK7.js.map +0 -1
- package/dist/open-2IGFGDDB.mjs +0 -47
- package/dist/open-2IGFGDDB.mjs.map +0 -1
- package/dist/open-TCBDPKWM.js +0 -47
- package/dist/open-TCBDPKWM.js.map +0 -1
- package/dist/pull-3MXPXKVF.mjs +0 -27
- package/dist/pull-3MXPXKVF.mjs.map +0 -1
- package/dist/pull-5RX2YX5P.js +0 -27
- package/dist/pull-5RX2YX5P.js.map +0 -1
- package/dist/push-7L3NXCCJ.mjs +0 -27
- package/dist/push-7L3NXCCJ.mjs.map +0 -1
- package/dist/push-QPS47QAN.js +0 -27
- package/dist/push-QPS47QAN.js.map +0 -1
- package/dist/query-2PAEPPLR.js +0 -122
- package/dist/query-2PAEPPLR.js.map +0 -1
- package/dist/query-FJ4JJLRH.mjs +0 -122
- package/dist/query-FJ4JJLRH.mjs.map +0 -1
- package/dist/records-add-K6ZRY3MM.mjs +0 -98
- package/dist/records-add-K6ZRY3MM.mjs.map +0 -1
- package/dist/records-add-OQK2SWSP.js +0 -98
- package/dist/records-add-OQK2SWSP.js.map +0 -1
- package/dist/records-delete-DPNRLQRU.mjs +0 -46
- package/dist/records-delete-DPNRLQRU.mjs.map +0 -1
- package/dist/records-delete-UC3XJNIF.js +0 -46
- package/dist/records-delete-UC3XJNIF.js.map +0 -1
- package/dist/records-list-AC7ADD4R.js +0 -89
- package/dist/records-list-AC7ADD4R.js.map +0 -1
- package/dist/records-list-EEDFGR5M.mjs +0 -89
- package/dist/records-list-EEDFGR5M.mjs.map +0 -1
- package/dist/records-update-R5G7AOMD.js +0 -53
- package/dist/records-update-R5G7AOMD.js.map +0 -1
- package/dist/records-update-V23XILMF.mjs +0 -53
- package/dist/records-update-V23XILMF.mjs.map +0 -1
- package/dist/remove-JS3XWII2.mjs +0 -114
- package/dist/remove-JS3XWII2.mjs.map +0 -1
- package/dist/remove-QU7WDHPI.js +0 -114
- package/dist/remove-QU7WDHPI.js.map +0 -1
- package/dist/rename-AQZWJOSA.js +0 -42
- package/dist/rename-AQZWJOSA.js.map +0 -1
- package/dist/rename-NX4OMJDP.mjs +0 -42
- package/dist/rename-NX4OMJDP.mjs.map +0 -1
- package/dist/request-increase-FLFEPGIC.js +0 -37
- package/dist/request-increase-FLFEPGIC.js.map +0 -1
- package/dist/request-increase-NHM27JXH.mjs +0 -37
- package/dist/request-increase-NHM27JXH.mjs.map +0 -1
- package/dist/restore-HTAPXIPP.js +0 -73
- package/dist/restore-HTAPXIPP.js.map +0 -1
- package/dist/restore-R5LY5MWO.mjs +0 -73
- package/dist/restore-R5LY5MWO.mjs.map +0 -1
- package/dist/revoke-2JIUV7JE.mjs +0 -41
- package/dist/revoke-2JIUV7JE.mjs.map +0 -1
- package/dist/revoke-GH3YEBRW.js +0 -44
- package/dist/revoke-GH3YEBRW.js.map +0 -1
- package/dist/revoke-MS5OZQHS.js +0 -41
- package/dist/revoke-MS5OZQHS.js.map +0 -1
- package/dist/revoke-TQJVF3BL.mjs +0 -44
- package/dist/revoke-TQJVF3BL.mjs.map +0 -1
- package/dist/rotate-QUP62JOC.mjs +0 -52
- package/dist/rotate-QUP62JOC.mjs.map +0 -1
- package/dist/rotate-U3RJTWOO.js +0 -52
- package/dist/rotate-U3RJTWOO.js.map +0 -1
- package/dist/run-2KC3XYCD.js +0 -77
- package/dist/run-2KC3XYCD.js.map +0 -1
- package/dist/run-35JPAOLO.mjs +0 -83
- package/dist/run-35JPAOLO.mjs.map +0 -1
- package/dist/run-5YPCH5US.mjs +0 -77
- package/dist/run-5YPCH5US.mjs.map +0 -1
- package/dist/run-6BUAGYXY.mjs +0 -142
- package/dist/run-6BUAGYXY.mjs.map +0 -1
- package/dist/run-BB27OOPE.js +0 -131
- package/dist/run-BB27OOPE.js.map +0 -1
- package/dist/run-BPTFP3HA.mjs +0 -144
- package/dist/run-BPTFP3HA.mjs.map +0 -1
- package/dist/run-DVPUVKTV.mjs +0 -131
- package/dist/run-DVPUVKTV.mjs.map +0 -1
- package/dist/run-GJEOP5LP.js +0 -144
- package/dist/run-GJEOP5LP.js.map +0 -1
- package/dist/run-JLC2AGGB.js +0 -83
- package/dist/run-JLC2AGGB.js.map +0 -1
- package/dist/run-P5B7FK6K.js +0 -142
- package/dist/run-P5B7FK6K.js.map +0 -1
- package/dist/search-FMFV6U6P.mjs +0 -108
- package/dist/search-FMFV6U6P.mjs.map +0 -1
- package/dist/search-LEF4NLQJ.js +0 -108
- package/dist/search-LEF4NLQJ.js.map +0 -1
- package/dist/set-7Q2IUUPV.mjs +0 -105
- package/dist/set-7Q2IUUPV.mjs.map +0 -1
- package/dist/set-DYXQGJNE.js +0 -59
- package/dist/set-DYXQGJNE.js.map +0 -1
- package/dist/set-FVXIBW4X.js +0 -105
- package/dist/set-FVXIBW4X.js.map +0 -1
- package/dist/set-PMA5UWDK.mjs +0 -59
- package/dist/set-PMA5UWDK.mjs.map +0 -1
- package/dist/status-DS55UJ7O.mjs +0 -153
- package/dist/status-DS55UJ7O.mjs.map +0 -1
- package/dist/status-GSPWZ255.mjs +0 -56
- package/dist/status-GSPWZ255.mjs.map +0 -1
- package/dist/status-KH64EWPP.js +0 -153
- package/dist/status-KH64EWPP.js.map +0 -1
- package/dist/status-M4GI2HR3.js +0 -56
- package/dist/status-M4GI2HR3.js.map +0 -1
- package/dist/status-OAD2U66Z.js +0 -122
- package/dist/status-OAD2U66Z.js.map +0 -1
- package/dist/status-U3EPMBTN.mjs +0 -122
- package/dist/status-U3EPMBTN.mjs.map +0 -1
- package/dist/sync-PKDE2D7V.js +0 -132
- package/dist/sync-PKDE2D7V.js.map +0 -1
- package/dist/sync-XV5HX5TO.mjs +0 -132
- package/dist/sync-XV5HX5TO.mjs.map +0 -1
- package/dist/tail-CKK6GFNI.js +0 -108
- package/dist/tail-CKK6GFNI.js.map +0 -1
- package/dist/tail-D26CEKSH.mjs +0 -108
- package/dist/tail-D26CEKSH.mjs.map +0 -1
- package/dist/unset-FGAQM4WA.js +0 -107
- package/dist/unset-FGAQM4WA.js.map +0 -1
- package/dist/unset-TVSHRR64.mjs +0 -107
- package/dist/unset-TVSHRR64.mjs.map +0 -1
- package/dist/update-337XCLM7.mjs +0 -65
- package/dist/update-337XCLM7.mjs.map +0 -1
- package/dist/update-43JHGSN7.js +0 -106
- package/dist/update-43JHGSN7.js.map +0 -1
- package/dist/update-4KGPCVCD.js +0 -71
- package/dist/update-4KGPCVCD.js.map +0 -1
- package/dist/update-5DIMZPJB.mjs +0 -71
- package/dist/update-5DIMZPJB.mjs.map +0 -1
- package/dist/update-5WVIKR5E.js +0 -48
- package/dist/update-5WVIKR5E.js.map +0 -1
- package/dist/update-AAZVLFRJ.js +0 -75
- package/dist/update-AAZVLFRJ.js.map +0 -1
- package/dist/update-APD7MSPV.js +0 -61
- package/dist/update-APD7MSPV.js.map +0 -1
- package/dist/update-AR7L7TOZ.js +0 -48
- package/dist/update-AR7L7TOZ.js.map +0 -1
- package/dist/update-C3I3BHWG.js +0 -63
- package/dist/update-C3I3BHWG.js.map +0 -1
- package/dist/update-CDBNRXSO.mjs +0 -106
- package/dist/update-CDBNRXSO.mjs.map +0 -1
- package/dist/update-CXYYWVNO.mjs +0 -75
- package/dist/update-CXYYWVNO.mjs.map +0 -1
- package/dist/update-DUJU3A4R.mjs +0 -48
- package/dist/update-DUJU3A4R.mjs.map +0 -1
- package/dist/update-E3GH3WEX.mjs +0 -83
- package/dist/update-E3GH3WEX.mjs.map +0 -1
- package/dist/update-HHGQ2DVM.js +0 -83
- package/dist/update-HHGQ2DVM.js.map +0 -1
- package/dist/update-IFDJZ6LW.js +0 -66
- package/dist/update-IFDJZ6LW.js.map +0 -1
- package/dist/update-JEGVDVSK.js +0 -51
- package/dist/update-JEGVDVSK.js.map +0 -1
- package/dist/update-JL3MKZXC.mjs +0 -66
- package/dist/update-JL3MKZXC.mjs.map +0 -1
- package/dist/update-JUTNNHSA.mjs +0 -51
- package/dist/update-JUTNNHSA.mjs.map +0 -1
- package/dist/update-MBBSJQJL.mjs +0 -79
- package/dist/update-MBBSJQJL.mjs.map +0 -1
- package/dist/update-NOYJVXCB.mjs +0 -63
- package/dist/update-NOYJVXCB.mjs.map +0 -1
- package/dist/update-OFUQFYBD.js +0 -76
- package/dist/update-OFUQFYBD.js.map +0 -1
- package/dist/update-OZC2S3BC.js +0 -79
- package/dist/update-OZC2S3BC.js.map +0 -1
- package/dist/update-P4PNDOMU.mjs +0 -63
- package/dist/update-P4PNDOMU.mjs.map +0 -1
- package/dist/update-RJFENG32.mjs +0 -48
- package/dist/update-RJFENG32.mjs.map +0 -1
- package/dist/update-W2RQW53I.js +0 -65
- package/dist/update-W2RQW53I.js.map +0 -1
- package/dist/update-WFGCL4JS.mjs +0 -61
- package/dist/update-WFGCL4JS.mjs.map +0 -1
- package/dist/update-WTIR2BYE.js +0 -63
- package/dist/update-WTIR2BYE.js.map +0 -1
- package/dist/update-X7J6WRG3.mjs +0 -76
- package/dist/update-X7J6WRG3.mjs.map +0 -1
- package/dist/upload-7O3K4YAL.mjs +0 -80
- package/dist/upload-7O3K4YAL.mjs.map +0 -1
- package/dist/upload-DJA44RJ3.js +0 -80
- package/dist/upload-DJA44RJ3.js.map +0 -1
- package/dist/versions-2JD6EKCA.js +0 -85
- package/dist/versions-2JD6EKCA.js.map +0 -1
- package/dist/versions-HXI6GAD2.mjs +0 -85
- package/dist/versions-HXI6GAD2.mjs.map +0 -1
- package/dist/whoami-EI52YRCH.js +0 -30
- package/dist/whoami-EI52YRCH.js.map +0 -1
- package/dist/whoami-KGRA4QEY.mjs +0 -30
- package/dist/whoami-KGRA4QEY.mjs.map +0 -1
- package/dist/wrap-LBMHL6N6.mjs +0 -33
- package/dist/wrap-LBMHL6N6.mjs.map +0 -1
- package/dist/wrap-O7DQWEVA.js +0 -33
- package/dist/wrap-O7DQWEVA.js.map +0 -1
- /package/dist/{chunk-RIPASL56.mjs.map → chunk-2O4ILSP5.mjs.map} +0 -0
package/dist/chunk-D2VRKNFF.js
DELETED
|
@@ -1,1672 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var _chunk6KMX34ZHjs = require('./chunk-6KMX34ZH.js');
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var _chunk5M6GLAIGjs = require('./chunk-5M6GLAIG.js');
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var _chunkZA5BH7IZjs = require('./chunk-ZA5BH7IZ.js');
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var _chunkOGAE7BVQjs = require('./chunk-OGAE7BVQ.js');
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
var _chunkBRPEG3YQjs = require('./chunk-BRPEG3YQ.js');
|
|
28
|
-
|
|
29
|
-
// src/cli/utils/governance/wrapper.ts
|
|
30
|
-
var _child_process = require('child_process');
|
|
31
|
-
|
|
32
|
-
// src/cli/utils/governance/brand.ts
|
|
33
|
-
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
34
|
-
var LANGWATCH_ORANGE = "#ED8926";
|
|
35
|
-
function lwTag() {
|
|
36
|
-
return _chalk2.default.hex(LANGWATCH_ORANGE).bold("\u2726 langwatch");
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// src/cli/utils/governance/budget.ts
|
|
40
|
-
async function checkBudget(cfg, opts = {}) {
|
|
41
|
-
var _a, _b;
|
|
42
|
-
if (!cfg.access_token) return null;
|
|
43
|
-
const f = (_a = opts.fetchImpl) != null ? _a : fetch;
|
|
44
|
-
const url = cfg.control_plane_url.replace(/\/+$/, "") + "/api/auth/cli/budget/status";
|
|
45
|
-
let res;
|
|
46
|
-
try {
|
|
47
|
-
res = await f(url, {
|
|
48
|
-
method: "GET",
|
|
49
|
-
headers: {
|
|
50
|
-
Authorization: `Bearer ${cfg.access_token}`,
|
|
51
|
-
Accept: "application/json"
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
} catch (e) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
if (res.status === 200) return null;
|
|
58
|
-
if (res.status === 404) return null;
|
|
59
|
-
if (res.status === 402) {
|
|
60
|
-
try {
|
|
61
|
-
const body = await res.json();
|
|
62
|
-
if (((_b = body.error) == null ? void 0 : _b.type) && body.error.scope) return body.error;
|
|
63
|
-
} catch (e) {
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
var PERIOD_LABEL = {
|
|
69
|
-
minute: "per-minute",
|
|
70
|
-
hour: "hourly",
|
|
71
|
-
day: "daily",
|
|
72
|
-
week: "weekly",
|
|
73
|
-
month: "monthly",
|
|
74
|
-
total: "total"
|
|
75
|
-
};
|
|
76
|
-
function renderBudgetExceeded(e) {
|
|
77
|
-
var _a;
|
|
78
|
-
const period = (e.period || "month").toLowerCase();
|
|
79
|
-
const periodLabel = (_a = PERIOD_LABEL[period]) != null ? _a : period;
|
|
80
|
-
const lines = [];
|
|
81
|
-
lines.push("\u26A0 Budget limit reached");
|
|
82
|
-
lines.push("");
|
|
83
|
-
lines.push(` You've used $${e.spent_usd} of your $${e.limit_usd} ${periodLabel} budget.`);
|
|
84
|
-
lines.push(" To continue, ask your team admin to raise your limit.");
|
|
85
|
-
lines.push("");
|
|
86
|
-
if (e.admin_email) {
|
|
87
|
-
lines.push(` Admin: ${e.admin_email}`);
|
|
88
|
-
lines.push("");
|
|
89
|
-
}
|
|
90
|
-
lines.push(" Need urgent access? Run:");
|
|
91
|
-
lines.push(" langwatch request-increase");
|
|
92
|
-
return lines.join("\n") + "\n";
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// src/cli/utils/governance/platform-tool-policy.ts
|
|
96
|
-
var DEFAULTS = {
|
|
97
|
-
allowVk: true,
|
|
98
|
-
allowOtelDirect: true
|
|
99
|
-
};
|
|
100
|
-
var PLATFORM_TOOL_POLICIES = {
|
|
101
|
-
claude: _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, DEFAULTS),
|
|
102
|
-
codex: _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, DEFAULTS),
|
|
103
|
-
gemini: _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, DEFAULTS),
|
|
104
|
-
opencode: _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, DEFAULTS),
|
|
105
|
-
// cursor is GUI-only; Path B is not meaningful (no terminal env
|
|
106
|
-
// reaches the agent panel). The wrapper still gates on this so
|
|
107
|
-
// future GUI integrations can flip allowOtelDirect to true.
|
|
108
|
-
cursor: { allowVk: true, allowOtelDirect: false }
|
|
109
|
-
};
|
|
110
|
-
function hardcodedPolicy(toolSlug) {
|
|
111
|
-
if (toolSlug in PLATFORM_TOOL_POLICIES) {
|
|
112
|
-
return PLATFORM_TOOL_POLICIES[toolSlug];
|
|
113
|
-
}
|
|
114
|
-
return DEFAULTS;
|
|
115
|
-
}
|
|
116
|
-
function resolvePlatformToolPolicy(toolSlug, cachedPolicies) {
|
|
117
|
-
const cached = cachedPolicies == null ? void 0 : cachedPolicies[toolSlug];
|
|
118
|
-
if (cached) return cached;
|
|
119
|
-
return hardcodedPolicy(toolSlug);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// src/cli/utils/governance/shell-rc.ts
|
|
123
|
-
var _fs = require('fs'); var fs2 = _interopRequireWildcard(_fs); var fs = _interopRequireWildcard(_fs); var fs4 = _interopRequireWildcard(_fs);
|
|
124
|
-
var _os = require('os'); var os2 = _interopRequireWildcard(_os); var os = _interopRequireWildcard(_os); var os4 = _interopRequireWildcard(_os);
|
|
125
|
-
var _path = require('path'); var path2 = _interopRequireWildcard(_path); var path = _interopRequireWildcard(_path); var path4 = _interopRequireWildcard(_path);
|
|
126
|
-
var _readline = require('readline'); var readline = _interopRequireWildcard(_readline);
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
// src/cli/utils/governance/app-settings.ts
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
var TARGETS = {
|
|
134
|
-
claude: { segments: [".claude", "settings.json"] }
|
|
135
|
-
};
|
|
136
|
-
function appSettingsTargetFor(tool) {
|
|
137
|
-
const spec = TARGETS[tool];
|
|
138
|
-
if (!spec) return null;
|
|
139
|
-
const home = os.homedir();
|
|
140
|
-
return {
|
|
141
|
-
tool,
|
|
142
|
-
path: path.join(home, ...spec.segments),
|
|
143
|
-
displayPath: `~/${spec.segments.join("/")}`
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
function appEnvHasAllVars(target, vars) {
|
|
147
|
-
const current = readEnvMap(target.path);
|
|
148
|
-
for (const [k, v] of Object.entries(vars)) {
|
|
149
|
-
if (current[k] !== v) return false;
|
|
150
|
-
}
|
|
151
|
-
return true;
|
|
152
|
-
}
|
|
153
|
-
function appEnvHasAnyVar(target, keys) {
|
|
154
|
-
const current = readEnvMap(target.path);
|
|
155
|
-
return keys.some((k) => k in current);
|
|
156
|
-
}
|
|
157
|
-
function installAppEnv(target, vars) {
|
|
158
|
-
fs.mkdirSync(path.dirname(target.path), { recursive: true });
|
|
159
|
-
const settings = readSettings(target.path);
|
|
160
|
-
const existingEnv = settings.env;
|
|
161
|
-
const nextEnv = isPlainObject(existingEnv) ? _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, existingEnv) : {};
|
|
162
|
-
for (const [k, v] of Object.entries(vars)) {
|
|
163
|
-
nextEnv[k] = v;
|
|
164
|
-
}
|
|
165
|
-
settings.env = nextEnv;
|
|
166
|
-
fs.writeFileSync(target.path, JSON.stringify(settings, null, 2) + "\n");
|
|
167
|
-
}
|
|
168
|
-
function removeAppEnvVars(target, keys) {
|
|
169
|
-
let raw;
|
|
170
|
-
try {
|
|
171
|
-
raw = fs.readFileSync(target.path, "utf8");
|
|
172
|
-
} catch (e) {
|
|
173
|
-
return false;
|
|
174
|
-
}
|
|
175
|
-
let parsed;
|
|
176
|
-
try {
|
|
177
|
-
parsed = JSON.parse(raw);
|
|
178
|
-
} catch (e) {
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
if (!isPlainObject(parsed)) return false;
|
|
182
|
-
const settings = _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, parsed);
|
|
183
|
-
const env = settings.env;
|
|
184
|
-
if (!isPlainObject(env)) return false;
|
|
185
|
-
const nextEnv = _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, env);
|
|
186
|
-
let removed = false;
|
|
187
|
-
for (const k of keys) {
|
|
188
|
-
if (k in nextEnv) {
|
|
189
|
-
delete nextEnv[k];
|
|
190
|
-
removed = true;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
if (!removed) return false;
|
|
194
|
-
if (Object.keys(nextEnv).length === 0) {
|
|
195
|
-
delete settings.env;
|
|
196
|
-
} else {
|
|
197
|
-
settings.env = nextEnv;
|
|
198
|
-
}
|
|
199
|
-
fs.writeFileSync(target.path, JSON.stringify(settings, null, 2) + "\n");
|
|
200
|
-
return true;
|
|
201
|
-
}
|
|
202
|
-
function readSettings(filePath) {
|
|
203
|
-
try {
|
|
204
|
-
const raw = fs.readFileSync(filePath, "utf8");
|
|
205
|
-
const parsed = JSON.parse(raw);
|
|
206
|
-
if (isPlainObject(parsed)) return _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, parsed);
|
|
207
|
-
return {};
|
|
208
|
-
} catch (e) {
|
|
209
|
-
return {};
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
function readEnvMap(filePath) {
|
|
213
|
-
const settings = readSettings(filePath);
|
|
214
|
-
const env = settings.env;
|
|
215
|
-
if (!isPlainObject(env)) return {};
|
|
216
|
-
const out = {};
|
|
217
|
-
for (const [k, v] of Object.entries(env)) {
|
|
218
|
-
if (typeof v === "string") out[k] = v;
|
|
219
|
-
}
|
|
220
|
-
return out;
|
|
221
|
-
}
|
|
222
|
-
function isPlainObject(v) {
|
|
223
|
-
return v !== null && typeof v === "object" && !Array.isArray(v);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
// src/cli/utils/governance/shell-rc.ts
|
|
227
|
-
var BLOCK_BEGIN = "# >>> langwatch begin >>>";
|
|
228
|
-
var BLOCK_END = "# <<< langwatch end <<<";
|
|
229
|
-
var GATEWAY_RC_MARKERS = { begin: BLOCK_BEGIN, end: BLOCK_END };
|
|
230
|
-
function toolMarkers(tool) {
|
|
231
|
-
return {
|
|
232
|
-
begin: `# >>> langwatch ${tool} begin >>>`,
|
|
233
|
-
end: `# <<< langwatch ${tool} end <<<`
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
function detectShell() {
|
|
237
|
-
var _a;
|
|
238
|
-
const raw = ((_a = process.env.SHELL) != null ? _a : "").toLowerCase();
|
|
239
|
-
if (raw.includes("fish")) return "fish";
|
|
240
|
-
if (raw.includes("zsh")) return "zsh";
|
|
241
|
-
if (raw.includes("bash")) return "bash";
|
|
242
|
-
if (process.platform === "darwin") return "zsh";
|
|
243
|
-
if (process.platform === "linux") return "bash";
|
|
244
|
-
return null;
|
|
245
|
-
}
|
|
246
|
-
function rcPath(shell) {
|
|
247
|
-
const home = os2.homedir();
|
|
248
|
-
switch (shell) {
|
|
249
|
-
case "zsh":
|
|
250
|
-
return path2.join(home, ".zshrc");
|
|
251
|
-
case "bash":
|
|
252
|
-
return path2.join(home, ".bashrc");
|
|
253
|
-
case "fish":
|
|
254
|
-
return path2.join(home, ".config", "fish", "config.fish");
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
function rcHasLangwatchBlock({
|
|
258
|
-
shell,
|
|
259
|
-
requiredKeys,
|
|
260
|
-
markers = { begin: BLOCK_BEGIN, end: BLOCK_END }
|
|
261
|
-
}) {
|
|
262
|
-
try {
|
|
263
|
-
const content = fs2.readFileSync(rcPath(shell), "utf8");
|
|
264
|
-
const begin = content.indexOf(markers.begin);
|
|
265
|
-
const end = content.indexOf(markers.end);
|
|
266
|
-
if (begin === -1 || end === -1 || end < begin) return false;
|
|
267
|
-
if (!requiredKeys || requiredKeys.length === 0) return true;
|
|
268
|
-
const block = content.slice(begin, end);
|
|
269
|
-
return requiredKeys.every((k) => block.includes(k));
|
|
270
|
-
} catch (e) {
|
|
271
|
-
return false;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
function quote(s) {
|
|
275
|
-
if (!/[ \t\n'"$\\]/.test(s)) return s;
|
|
276
|
-
return "'" + s.replace(/'/g, "'\\''") + "'";
|
|
277
|
-
}
|
|
278
|
-
function buildScopedToolFunction(tool, vars, shell) {
|
|
279
|
-
const entries = Object.entries(vars);
|
|
280
|
-
if (shell === "fish") {
|
|
281
|
-
const sets = entries.map(([k, v]) => ` set -lx ${k} ${quote(v)}`).join("\n");
|
|
282
|
-
return [
|
|
283
|
-
`function ${tool}`,
|
|
284
|
-
sets,
|
|
285
|
-
` command ${tool} $argv`,
|
|
286
|
-
"end"
|
|
287
|
-
].join("\n");
|
|
288
|
-
}
|
|
289
|
-
const assigns = entries.map(([k, v]) => ` ${k}=${quote(v)} \\`).join("\n");
|
|
290
|
-
return [`${tool}() {`, assigns, ` command ${tool} "$@"`, "}"].join("\n");
|
|
291
|
-
}
|
|
292
|
-
function persistBlockToRc(shell, block, markers = {
|
|
293
|
-
begin: BLOCK_BEGIN,
|
|
294
|
-
end: BLOCK_END
|
|
295
|
-
}) {
|
|
296
|
-
const file = rcPath(shell);
|
|
297
|
-
const dir = path2.dirname(file);
|
|
298
|
-
fs2.mkdirSync(dir, { recursive: true });
|
|
299
|
-
const wrapped = `${markers.begin}
|
|
300
|
-
${block}
|
|
301
|
-
${markers.end}
|
|
302
|
-
`;
|
|
303
|
-
let existing = "";
|
|
304
|
-
try {
|
|
305
|
-
existing = fs2.readFileSync(file, "utf8");
|
|
306
|
-
} catch (e) {
|
|
307
|
-
}
|
|
308
|
-
const marker = new RegExp(
|
|
309
|
-
`${escapeRegex(markers.begin)}[\\s\\S]*?${escapeRegex(markers.end)}\\n?`,
|
|
310
|
-
"m"
|
|
311
|
-
);
|
|
312
|
-
let next;
|
|
313
|
-
if (marker.test(existing)) {
|
|
314
|
-
next = existing.replace(marker, wrapped);
|
|
315
|
-
} else {
|
|
316
|
-
const needsNewline = existing.length > 0 && !existing.endsWith("\n");
|
|
317
|
-
next = existing + (needsNewline ? "\n" : "") + "\n" + wrapped;
|
|
318
|
-
}
|
|
319
|
-
fs2.writeFileSync(file, next);
|
|
320
|
-
return file;
|
|
321
|
-
}
|
|
322
|
-
function escapeRegex(s) {
|
|
323
|
-
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
324
|
-
}
|
|
325
|
-
function removeBlockFromRc(shell, markers = {
|
|
326
|
-
begin: BLOCK_BEGIN,
|
|
327
|
-
end: BLOCK_END
|
|
328
|
-
}) {
|
|
329
|
-
const file = rcPath(shell);
|
|
330
|
-
let content;
|
|
331
|
-
try {
|
|
332
|
-
content = fs2.readFileSync(file, "utf8");
|
|
333
|
-
} catch (e) {
|
|
334
|
-
return false;
|
|
335
|
-
}
|
|
336
|
-
const re = new RegExp(
|
|
337
|
-
`\\n?${escapeRegex(markers.begin)}[\\s\\S]*?${escapeRegex(markers.end)}\\n?`,
|
|
338
|
-
"m"
|
|
339
|
-
);
|
|
340
|
-
if (!re.test(content)) return false;
|
|
341
|
-
fs2.writeFileSync(file, content.replace(re, ""));
|
|
342
|
-
return true;
|
|
343
|
-
}
|
|
344
|
-
async function askPersistChoice(rcPathHint, tool) {
|
|
345
|
-
if (!process.stdin.isTTY) return "skip";
|
|
346
|
-
const rl = readline.createInterface({
|
|
347
|
-
input: process.stdin,
|
|
348
|
-
output: process.stdout
|
|
349
|
-
});
|
|
350
|
-
const ans = await new Promise((resolve) => {
|
|
351
|
-
rl.question(
|
|
352
|
-
`Install env vars to ${rcPathHint} so that next time the plain \`${tool}\` command keeps capturing telemetry data? [Y/n/never] `,
|
|
353
|
-
(a) => resolve(a)
|
|
354
|
-
);
|
|
355
|
-
});
|
|
356
|
-
rl.close();
|
|
357
|
-
const norm = ans.trim().toLowerCase();
|
|
358
|
-
if (norm === "" || norm === "y" || norm === "yes") return "yes";
|
|
359
|
-
if (norm === "never") return "never";
|
|
360
|
-
return "no";
|
|
361
|
-
}
|
|
362
|
-
async function maybeOfferIngestionShellRcPersist({
|
|
363
|
-
cfg,
|
|
364
|
-
tool,
|
|
365
|
-
vars
|
|
366
|
-
}) {
|
|
367
|
-
var _a, _b;
|
|
368
|
-
if (cfg.shell_rc_preference === "skip") return;
|
|
369
|
-
if (process.env.OTEL_EXPORTER_OTLP_ENDPOINT) return;
|
|
370
|
-
if (Object.keys(vars).length === 0) return;
|
|
371
|
-
const appTarget = appSettingsTargetFor(tool);
|
|
372
|
-
if (appTarget) {
|
|
373
|
-
if (appEnvHasAllVars(appTarget, vars)) return;
|
|
374
|
-
console.log();
|
|
375
|
-
const choice2 = await askPersistChoice(appTarget.displayPath, tool);
|
|
376
|
-
if (choice2 === "skip" || choice2 === "no") return;
|
|
377
|
-
if (choice2 === "never") {
|
|
378
|
-
recordNeverChoice(cfg);
|
|
379
|
-
return;
|
|
380
|
-
}
|
|
381
|
-
try {
|
|
382
|
-
installAppEnv(appTarget, vars);
|
|
383
|
-
console.log(
|
|
384
|
-
_chalk2.default.green(
|
|
385
|
-
` \u2713 Installed langwatch telemetry exports to ${appTarget.displayPath}`
|
|
386
|
-
)
|
|
387
|
-
);
|
|
388
|
-
} catch (err) {
|
|
389
|
-
console.log(
|
|
390
|
-
_chalk2.default.yellow(
|
|
391
|
-
` ! Couldn't write to ${appTarget.displayPath}: ${err.message}`
|
|
392
|
-
)
|
|
393
|
-
);
|
|
394
|
-
}
|
|
395
|
-
return;
|
|
396
|
-
}
|
|
397
|
-
if (tool === "codex") {
|
|
398
|
-
const configPath = _chunk6KMX34ZHjs.defaultCodexConfigPath.call(void 0, );
|
|
399
|
-
if (_chunk6KMX34ZHjs.codexOtelBlockHasAuthHeader.call(void 0, configPath)) return;
|
|
400
|
-
const endpointBase = vars.OTEL_EXPORTER_OTLP_ENDPOINT;
|
|
401
|
-
const token = bearerFromHeaders(vars.OTEL_EXPORTER_OTLP_HEADERS);
|
|
402
|
-
if (!endpointBase || !token) return;
|
|
403
|
-
console.log();
|
|
404
|
-
const choice2 = await askPersistChoice(_chunk6KMX34ZHjs.displayCodexConfigPath.call(void 0, ), tool);
|
|
405
|
-
if (choice2 === "skip" || choice2 === "no") return;
|
|
406
|
-
if (choice2 === "never") {
|
|
407
|
-
recordNeverChoice(cfg);
|
|
408
|
-
return;
|
|
409
|
-
}
|
|
410
|
-
try {
|
|
411
|
-
_chunk6KMX34ZHjs.writeCodexOtelBlock.call(void 0,
|
|
412
|
-
{
|
|
413
|
-
endpoint: _chunk6KMX34ZHjs.codexTraceEndpoint.call(void 0, endpointBase),
|
|
414
|
-
ingestionToken: token,
|
|
415
|
-
environment: (_b = (_a = cfg.organization) == null ? void 0 : _a.slug) != null ? _b : "langwatch"
|
|
416
|
-
},
|
|
417
|
-
{ persistAuthHeader: true }
|
|
418
|
-
);
|
|
419
|
-
console.log(
|
|
420
|
-
_chalk2.default.green(
|
|
421
|
-
` \u2713 Installed langwatch telemetry exports to ${_chunk6KMX34ZHjs.displayCodexConfigPath.call(void 0, )}`
|
|
422
|
-
)
|
|
423
|
-
);
|
|
424
|
-
} catch (err) {
|
|
425
|
-
console.log(
|
|
426
|
-
_chalk2.default.yellow(
|
|
427
|
-
` ! Couldn't write to ${_chunk6KMX34ZHjs.displayCodexConfigPath.call(void 0, )}: ${err.message}`
|
|
428
|
-
)
|
|
429
|
-
);
|
|
430
|
-
}
|
|
431
|
-
return;
|
|
432
|
-
}
|
|
433
|
-
const shell = detectShell();
|
|
434
|
-
if (!shell) return;
|
|
435
|
-
const markers = toolMarkers(tool);
|
|
436
|
-
if (rcHasLangwatchBlock({
|
|
437
|
-
shell,
|
|
438
|
-
requiredKeys: [vars.OTEL_EXPORTER_OTLP_ENDPOINT].filter(
|
|
439
|
-
Boolean
|
|
440
|
-
),
|
|
441
|
-
markers
|
|
442
|
-
})) {
|
|
443
|
-
return;
|
|
444
|
-
}
|
|
445
|
-
const target = rcPath(shell);
|
|
446
|
-
console.log();
|
|
447
|
-
const choice = await askPersistChoice(target, tool);
|
|
448
|
-
if (choice === "skip" || choice === "no") return;
|
|
449
|
-
if (choice === "never") {
|
|
450
|
-
recordNeverChoice(cfg);
|
|
451
|
-
return;
|
|
452
|
-
}
|
|
453
|
-
try {
|
|
454
|
-
const wrote = persistBlockToRc(
|
|
455
|
-
shell,
|
|
456
|
-
buildScopedToolFunction(tool, vars, shell),
|
|
457
|
-
markers
|
|
458
|
-
);
|
|
459
|
-
console.log(
|
|
460
|
-
_chalk2.default.green(
|
|
461
|
-
` \u2713 Installed a scoped \`${tool}\` telemetry wrapper in ${wrote}`
|
|
462
|
-
)
|
|
463
|
-
);
|
|
464
|
-
} catch (err) {
|
|
465
|
-
console.log(
|
|
466
|
-
_chalk2.default.yellow(` ! Couldn't write to ${target}: ${err.message}`)
|
|
467
|
-
);
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
function recordNeverChoice(cfg) {
|
|
471
|
-
cfg.shell_rc_preference = "skip";
|
|
472
|
-
try {
|
|
473
|
-
_chunkOGAE7BVQjs.saveConfig.call(void 0, cfg);
|
|
474
|
-
} catch (e) {
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
function bearerFromHeaders(headers) {
|
|
478
|
-
if (!headers) return null;
|
|
479
|
-
const m = /Bearer\s+(\S+)/.exec(headers);
|
|
480
|
-
return m ? m[1] : null;
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
// src/cli/utils/opencode-config-flag.ts
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
function defaultOpencodeConfigPath() {
|
|
488
|
-
const xdg = process.env.XDG_CONFIG_HOME;
|
|
489
|
-
const configHome = xdg && xdg.length > 0 ? xdg : path2.default.join(os2.default.homedir(), ".config");
|
|
490
|
-
return path2.default.join(configHome, "opencode", "opencode.jsonc");
|
|
491
|
-
}
|
|
492
|
-
function stripJsoncComments(s) {
|
|
493
|
-
return s.replace(/\/\*[\s\S]*?\*\//g, "").replace(/^\s*\/\/.*$/gm, "");
|
|
494
|
-
}
|
|
495
|
-
function setOpencodeOpenTelemetryFlag(options = {}) {
|
|
496
|
-
var _a, _b;
|
|
497
|
-
const filePath = (_a = options.filePath) != null ? _a : defaultOpencodeConfigPath();
|
|
498
|
-
if (!fs2.default.existsSync(filePath)) {
|
|
499
|
-
fs2.default.mkdirSync(path2.default.dirname(filePath), { recursive: true });
|
|
500
|
-
const content = JSON.stringify(
|
|
501
|
-
{
|
|
502
|
-
$schema: "https://opencode.ai/config.json",
|
|
503
|
-
experimental: { openTelemetry: true }
|
|
504
|
-
},
|
|
505
|
-
null,
|
|
506
|
-
2
|
|
507
|
-
) + "\n";
|
|
508
|
-
fs2.default.writeFileSync(filePath, content, { mode: 384 });
|
|
509
|
-
return { action: "created", path: filePath };
|
|
510
|
-
}
|
|
511
|
-
const raw = fs2.default.readFileSync(filePath, "utf8");
|
|
512
|
-
let parsed;
|
|
513
|
-
try {
|
|
514
|
-
parsed = JSON.parse(stripJsoncComments(raw));
|
|
515
|
-
} catch (e) {
|
|
516
|
-
parsed = { $schema: "https://opencode.ai/config.json" };
|
|
517
|
-
}
|
|
518
|
-
const experimental = (_b = parsed.experimental) != null ? _b : {};
|
|
519
|
-
const prior = experimental.openTelemetry;
|
|
520
|
-
if (prior === true) return { action: "unchanged", path: filePath };
|
|
521
|
-
if (prior === false) return { action: "disabled-by-user", path: filePath };
|
|
522
|
-
parsed.experimental = _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, experimental), { openTelemetry: true });
|
|
523
|
-
fs2.default.writeFileSync(filePath, JSON.stringify(parsed, null, 2) + "\n", {
|
|
524
|
-
mode: 384
|
|
525
|
-
});
|
|
526
|
-
return { action: "updated", path: filePath };
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
// src/cli/utils/governance/gemini-settings-preflight.ts
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
function defaultGeminiSettingsPath() {
|
|
534
|
-
var _a;
|
|
535
|
-
const home = (_a = process.env.HOME) != null ? _a : os4.homedir();
|
|
536
|
-
return path4.join(home, ".gemini", "settings.json");
|
|
537
|
-
}
|
|
538
|
-
function stripJsoncComments2(s) {
|
|
539
|
-
return s.replace(/\/\*[\s\S]*?\*\//g, "").replace(/^\s*\/\/.*$/gm, "");
|
|
540
|
-
}
|
|
541
|
-
function warnIfGeminiOAuthSelected(options = {}) {
|
|
542
|
-
var _a, _b;
|
|
543
|
-
const filePath = (_a = options.filePath) != null ? _a : defaultGeminiSettingsPath();
|
|
544
|
-
const writeLine = (_b = options.writeLine) != null ? _b : ((line) => process.stderr.write(line + "\n"));
|
|
545
|
-
if (!fs4.existsSync(filePath)) {
|
|
546
|
-
return { action: "no-settings", warned: false };
|
|
547
|
-
}
|
|
548
|
-
let raw;
|
|
549
|
-
try {
|
|
550
|
-
raw = fs4.readFileSync(filePath, "utf8");
|
|
551
|
-
} catch (e) {
|
|
552
|
-
return { action: "parse-error", warned: false };
|
|
553
|
-
}
|
|
554
|
-
let parsed;
|
|
555
|
-
try {
|
|
556
|
-
parsed = JSON.parse(stripJsoncComments2(raw));
|
|
557
|
-
} catch (e) {
|
|
558
|
-
return { action: "parse-error", warned: false };
|
|
559
|
-
}
|
|
560
|
-
const selectedType = readSelectedType(parsed);
|
|
561
|
-
if (selectedType === "gemini-oauth") {
|
|
562
|
-
writeLine(
|
|
563
|
-
'warning: ~/.gemini/settings.json has security.auth.selectedType="gemini-oauth". gemini-cli 0.46 will use cached OAuth and ignore GOOGLE_API_KEY / GEMINI_API_KEY, so this `langwatch gemini` call will bypass the gateway. To route through langwatch: edit ~/.gemini/settings.json and set security.auth.selectedType to "gemini-api-key".'
|
|
564
|
-
);
|
|
565
|
-
return { action: "oauth-selected", warned: true };
|
|
566
|
-
}
|
|
567
|
-
return { action: "api-key-selected", warned: false };
|
|
568
|
-
}
|
|
569
|
-
function readSelectedType(parsed) {
|
|
570
|
-
if (parsed === null || typeof parsed !== "object") return null;
|
|
571
|
-
const security = parsed.security;
|
|
572
|
-
if (security === null || typeof security !== "object") return null;
|
|
573
|
-
const auth = security.auth;
|
|
574
|
-
if (auth === null || typeof auth !== "object") return null;
|
|
575
|
-
const selectedType = auth.selectedType;
|
|
576
|
-
return typeof selectedType === "string" ? selectedType : null;
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
// src/cli/utils/governance/wrapper-mode.ts
|
|
580
|
-
var SOURCE_TYPE_BY_TOOL = {
|
|
581
|
-
claude: "claude_code",
|
|
582
|
-
codex: "codex",
|
|
583
|
-
gemini: "gemini",
|
|
584
|
-
opencode: "opencode"
|
|
585
|
-
};
|
|
586
|
-
async function resolveWrapperMode(cfg, tool, gatewayVars, gatewayClears = [], forcedMode) {
|
|
587
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
588
|
-
const persistedMode = (_a = cfg.tool_mode) == null ? void 0 : _a[tool];
|
|
589
|
-
const hasVk = !!((_b = cfg.default_personal_vk) == null ? void 0 : _b.secret);
|
|
590
|
-
const policy = resolvePlatformToolPolicy(tool, cfg.tool_policies);
|
|
591
|
-
if (!policy.allowVk && !policy.allowOtelDirect) {
|
|
592
|
-
throw new (0, _chunkZA5BH7IZjs.GovernanceCliError)(
|
|
593
|
-
403,
|
|
594
|
-
"tool_disabled",
|
|
595
|
-
`Tool '${tool}' is disabled in the platform policy (both gateway and direct OTLP paths off). Ask your org admin to enable allow_vk or allow_otel_direct.`
|
|
596
|
-
);
|
|
597
|
-
}
|
|
598
|
-
let notice;
|
|
599
|
-
let mode = forcedMode != null ? forcedMode : persistedMode === "gateway" ? "gateway" : persistedMode === "ingestion" ? "ingestion" : hasVk ? "gateway" : "ingestion";
|
|
600
|
-
if (mode === "gateway" && !policy.allowVk) {
|
|
601
|
-
mode = "ingestion";
|
|
602
|
-
notice = `${lwTag()} gateway path is disabled for ${tool} by your org admin; using direct OTLP ingestion instead.`;
|
|
603
|
-
}
|
|
604
|
-
if (mode === "ingestion" && !policy.allowOtelDirect) {
|
|
605
|
-
mode = "gateway";
|
|
606
|
-
notice = `${lwTag()} direct OTLP ingestion is disabled for ${tool} by your org admin; routing through the gateway instead.`;
|
|
607
|
-
}
|
|
608
|
-
if (mode === "gateway") {
|
|
609
|
-
if (tool === "gemini") {
|
|
610
|
-
warnIfGeminiOAuthSelected();
|
|
611
|
-
}
|
|
612
|
-
if (tool === "codex") {
|
|
613
|
-
const gw = _chunk6KMX34ZHjs.writeCodexGatewayBlock.call(void 0, {
|
|
614
|
-
gatewayUrl: cfg.gateway_url,
|
|
615
|
-
envKey: "OPENAI_API_KEY"
|
|
616
|
-
});
|
|
617
|
-
return {
|
|
618
|
-
mode,
|
|
619
|
-
vars: gatewayVars,
|
|
620
|
-
clears: gatewayClears,
|
|
621
|
-
codexConfigPath: gw.path,
|
|
622
|
-
codexProfilePath: gw.profilePath,
|
|
623
|
-
extraArgs: ["--profile", gw.profile],
|
|
624
|
-
notice
|
|
625
|
-
};
|
|
626
|
-
}
|
|
627
|
-
return { mode, vars: gatewayVars, clears: gatewayClears, notice };
|
|
628
|
-
}
|
|
629
|
-
const sourceType = SOURCE_TYPE_BY_TOOL[tool];
|
|
630
|
-
if (!sourceType) {
|
|
631
|
-
return { mode: "gateway", vars: gatewayVars, clears: gatewayClears, notice };
|
|
632
|
-
}
|
|
633
|
-
if (!policy.allowOtelDirect) {
|
|
634
|
-
throw new (0, _chunkZA5BH7IZjs.GovernanceCliError)(
|
|
635
|
-
403,
|
|
636
|
-
"otel_direct_disabled",
|
|
637
|
-
`Direct OTLP ingestion is disabled for '${tool}' by your org admin. Ask them to enable allow_otel_direct, or run with the gateway path.`
|
|
638
|
-
);
|
|
639
|
-
}
|
|
640
|
-
const cached = (_c = cfg.default_personal_ingest_keys) == null ? void 0 : _c[sourceType];
|
|
641
|
-
let token;
|
|
642
|
-
let prefix;
|
|
643
|
-
let endpoint;
|
|
644
|
-
let minted;
|
|
645
|
-
if (cached == null ? void 0 : cached.secret) {
|
|
646
|
-
const cachedLookupId = _chunkZA5BH7IZjs.extractLookupIdFromToken.call(void 0, cached.secret);
|
|
647
|
-
let cacheIsLive = true;
|
|
648
|
-
try {
|
|
649
|
-
const liveKeys = await _chunkZA5BH7IZjs.listIngestionKeys.call(void 0, cfg);
|
|
650
|
-
const liveEntry = liveKeys.find(
|
|
651
|
-
(k) => k.sourceType === sourceType && k.lookupId === cachedLookupId
|
|
652
|
-
);
|
|
653
|
-
if (!liveEntry) {
|
|
654
|
-
cacheIsLive = false;
|
|
655
|
-
}
|
|
656
|
-
} catch (e) {
|
|
657
|
-
}
|
|
658
|
-
if (cacheIsLive) {
|
|
659
|
-
token = cached.secret;
|
|
660
|
-
prefix = cached.prefix;
|
|
661
|
-
endpoint = `${cfg.control_plane_url.replace(/\/+$/, "")}/api/otel`;
|
|
662
|
-
minted = false;
|
|
663
|
-
} else {
|
|
664
|
-
const r = await _chunkZA5BH7IZjs.mintIngestionKey.call(void 0, cfg, sourceType);
|
|
665
|
-
token = r.token;
|
|
666
|
-
prefix = r.prefix;
|
|
667
|
-
endpoint = r.endpoint;
|
|
668
|
-
minted = true;
|
|
669
|
-
}
|
|
670
|
-
} else {
|
|
671
|
-
const r = await _chunkZA5BH7IZjs.mintIngestionKey.call(void 0, cfg, sourceType);
|
|
672
|
-
token = r.token;
|
|
673
|
-
prefix = r.prefix;
|
|
674
|
-
endpoint = r.endpoint;
|
|
675
|
-
minted = true;
|
|
676
|
-
}
|
|
677
|
-
const vars = buildOtelEnvBlock(tool, endpoint, token);
|
|
678
|
-
let codexConfigPath;
|
|
679
|
-
if (tool === "codex") {
|
|
680
|
-
const result = _chunk6KMX34ZHjs.writeCodexOtelBlock.call(void 0, {
|
|
681
|
-
endpoint: _chunk6KMX34ZHjs.codexTraceEndpoint.call(void 0, endpoint),
|
|
682
|
-
ingestionToken: token,
|
|
683
|
-
environment: (_e = (_d = cfg.organization) == null ? void 0 : _d.slug) != null ? _e : "langwatch"
|
|
684
|
-
});
|
|
685
|
-
codexConfigPath = result.path;
|
|
686
|
-
}
|
|
687
|
-
if (tool === "opencode") {
|
|
688
|
-
setOpencodeOpenTelemetryFlag();
|
|
689
|
-
}
|
|
690
|
-
const next = _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, cfg), {
|
|
691
|
-
tool_mode: _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, (_f = cfg.tool_mode) != null ? _f : {}), { [tool]: "ingestion" })
|
|
692
|
-
});
|
|
693
|
-
if (minted) {
|
|
694
|
-
next.default_personal_ingest_keys = _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, (_g = cfg.default_personal_ingest_keys) != null ? _g : {}), {
|
|
695
|
-
[sourceType]: { secret: token, prefix }
|
|
696
|
-
});
|
|
697
|
-
}
|
|
698
|
-
try {
|
|
699
|
-
_chunkOGAE7BVQjs.saveConfig.call(void 0, next);
|
|
700
|
-
} catch (e) {
|
|
701
|
-
}
|
|
702
|
-
return {
|
|
703
|
-
mode,
|
|
704
|
-
vars,
|
|
705
|
-
codexConfigPath,
|
|
706
|
-
newKeyMinted: minted,
|
|
707
|
-
notice,
|
|
708
|
-
endpoint,
|
|
709
|
-
ingestionToken: token
|
|
710
|
-
};
|
|
711
|
-
}
|
|
712
|
-
function telemetryEnvVarNames(tool) {
|
|
713
|
-
return Object.keys(buildOtelEnvBlock(tool, "", ""));
|
|
714
|
-
}
|
|
715
|
-
function buildOtelEnvBlock(tool, endpoint, token) {
|
|
716
|
-
const base = {
|
|
717
|
-
OTEL_EXPORTER_OTLP_ENDPOINT: endpoint,
|
|
718
|
-
OTEL_EXPORTER_OTLP_HEADERS: `Authorization=Bearer ${token}`
|
|
719
|
-
};
|
|
720
|
-
switch (tool) {
|
|
721
|
-
case "claude":
|
|
722
|
-
return _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {
|
|
723
|
-
CLAUDE_CODE_ENABLE_TELEMETRY: "1",
|
|
724
|
-
OTEL_TRACES_EXPORTER: "otlp",
|
|
725
|
-
OTEL_LOGS_EXPORTER: "otlp",
|
|
726
|
-
OTEL_METRICS_EXPORTER: "otlp",
|
|
727
|
-
OTEL_EXPORTER_OTLP_PROTOCOL: "http/json",
|
|
728
|
-
OTEL_LOG_USER_PROMPTS: "1",
|
|
729
|
-
OTEL_LOG_TOOL_DETAILS: "1",
|
|
730
|
-
OTEL_LOG_TOOL_CONTENT: "1",
|
|
731
|
-
OTEL_LOG_RAW_API_BODIES: "1"
|
|
732
|
-
}, base), {
|
|
733
|
-
OTEL_RESOURCE_ATTRIBUTES: "service.name=claude-code"
|
|
734
|
-
});
|
|
735
|
-
case "codex":
|
|
736
|
-
return _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {
|
|
737
|
-
OTEL_TRACES_EXPORTER: "otlp",
|
|
738
|
-
OTEL_EXPORTER_OTLP_PROTOCOL: "http/json"
|
|
739
|
-
}, base), {
|
|
740
|
-
OTEL_RESOURCE_ATTRIBUTES: "service.name=codex"
|
|
741
|
-
});
|
|
742
|
-
case "gemini":
|
|
743
|
-
return _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {
|
|
744
|
-
GEMINI_TELEMETRY_ENABLED: "true",
|
|
745
|
-
GEMINI_TELEMETRY_TARGET: "local",
|
|
746
|
-
GEMINI_TELEMETRY_USE_COLLECTOR: "true",
|
|
747
|
-
GEMINI_TELEMETRY_TRACES_ENABLED: "true",
|
|
748
|
-
GEMINI_TELEMETRY_OTLP_PROTOCOL: "http",
|
|
749
|
-
GEMINI_TELEMETRY_OTLP_ENDPOINT: endpoint,
|
|
750
|
-
GEMINI_TELEMETRY_LOG_PROMPTS: "true",
|
|
751
|
-
OTEL_TRACES_EXPORTER: "otlp",
|
|
752
|
-
OTEL_EXPORTER_OTLP_PROTOCOL: "http/json"
|
|
753
|
-
}, base), {
|
|
754
|
-
OTEL_RESOURCE_ATTRIBUTES: "service.name=gemini-cli"
|
|
755
|
-
});
|
|
756
|
-
case "opencode":
|
|
757
|
-
return _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {
|
|
758
|
-
OTEL_TRACES_EXPORTER: "otlp",
|
|
759
|
-
OTEL_LOGS_EXPORTER: "otlp",
|
|
760
|
-
OTEL_METRICS_EXPORTER: "otlp",
|
|
761
|
-
OTEL_EXPORTER_OTLP_PROTOCOL: "http/json"
|
|
762
|
-
}, base), {
|
|
763
|
-
OTEL_RESOURCE_ATTRIBUTES: "service.name=opencode"
|
|
764
|
-
});
|
|
765
|
-
default:
|
|
766
|
-
return base;
|
|
767
|
-
}
|
|
768
|
-
}
|
|
769
|
-
|
|
770
|
-
// src/cli/utils/governance/codex-rollout-otlp.ts
|
|
771
|
-
var _crypto = require('crypto');
|
|
772
|
-
var _promises = require('fs/promises');
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
// src/cli/utils/governance/codex-rollout.ts
|
|
777
|
-
var MAX_CONTENT_CHARS = 3e4;
|
|
778
|
-
var MAX_INPUT_CHARS = 12e4;
|
|
779
|
-
var MAX_OUTPUT_CHARS = 3e4;
|
|
780
|
-
function truncate(text, max) {
|
|
781
|
-
return text.length > max ? `${text.slice(0, max)}\u2026[truncated]` : text;
|
|
782
|
-
}
|
|
783
|
-
function textFromContent(content) {
|
|
784
|
-
if (!Array.isArray(content)) return "";
|
|
785
|
-
const parts = [];
|
|
786
|
-
for (const part of content) {
|
|
787
|
-
if (part && typeof part === "object") {
|
|
788
|
-
const t = part.text;
|
|
789
|
-
const ot = part.output_text;
|
|
790
|
-
if (typeof t === "string") parts.push(t);
|
|
791
|
-
else if (typeof ot === "string") parts.push(ot);
|
|
792
|
-
}
|
|
793
|
-
}
|
|
794
|
-
return parts.join("").trim();
|
|
795
|
-
}
|
|
796
|
-
function outputToText(output) {
|
|
797
|
-
if (typeof output === "string") return output;
|
|
798
|
-
if (output && typeof output === "object") {
|
|
799
|
-
const inner = output.output;
|
|
800
|
-
if (typeof inner === "string") return inner;
|
|
801
|
-
try {
|
|
802
|
-
return JSON.stringify(output);
|
|
803
|
-
} catch (e) {
|
|
804
|
-
return "";
|
|
805
|
-
}
|
|
806
|
-
}
|
|
807
|
-
if (typeof output === "number" || typeof output === "boolean") {
|
|
808
|
-
return String(output);
|
|
809
|
-
}
|
|
810
|
-
return "";
|
|
811
|
-
}
|
|
812
|
-
function capInputMessages(messages) {
|
|
813
|
-
var _a;
|
|
814
|
-
const capped = messages.map(
|
|
815
|
-
(m) => typeof m.content === "string" && m.content.length > MAX_CONTENT_CHARS ? _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, m), { content: truncate(m.content, MAX_CONTENT_CHARS) }) : m
|
|
816
|
-
);
|
|
817
|
-
const serializedLength = () => JSON.stringify(capped).length;
|
|
818
|
-
let i = 0;
|
|
819
|
-
while (serializedLength() > MAX_INPUT_CHARS && i < capped.length) {
|
|
820
|
-
if (((_a = capped[i]) == null ? void 0 : _a.role) === "system") {
|
|
821
|
-
i++;
|
|
822
|
-
continue;
|
|
823
|
-
}
|
|
824
|
-
capped.splice(i, 1);
|
|
825
|
-
}
|
|
826
|
-
return capped;
|
|
827
|
-
}
|
|
828
|
-
function explicitToolCallId(payload) {
|
|
829
|
-
if (typeof payload.call_id === "string" && payload.call_id) {
|
|
830
|
-
return payload.call_id;
|
|
831
|
-
}
|
|
832
|
-
if (typeof payload.id === "string" && payload.id) return payload.id;
|
|
833
|
-
return null;
|
|
834
|
-
}
|
|
835
|
-
var CodexTurnAccumulator = class {
|
|
836
|
-
constructor() {
|
|
837
|
-
/** Emitted turns, in rollout order. */
|
|
838
|
-
this.turns = [];
|
|
839
|
-
/** Accumulating conversation across the whole rollout (claude-style). */
|
|
840
|
-
this.history = [];
|
|
841
|
-
this.sessionModel = null;
|
|
842
|
-
this.cur = null;
|
|
843
|
-
/** Latest assistant text not yet committed to history (the final-answer candidate). */
|
|
844
|
-
this.pendingAssistant = null;
|
|
845
|
-
/** Authoritative final answer from the agent_message(final_answer) event. */
|
|
846
|
-
this.agentFinal = null;
|
|
847
|
-
/**
|
|
848
|
-
* Synthetic ids minted for tool calls that arrived without a `call_id`, queued
|
|
849
|
-
* FIFO so the matching (also id-less) function_call_output pairs to the same id
|
|
850
|
-
* instead of drifting as the running history grows.
|
|
851
|
-
*/
|
|
852
|
-
this.pendingToolCallIds = [];
|
|
853
|
-
this.autoToolCallSeq = 0;
|
|
854
|
-
}
|
|
855
|
-
/** Route one parsed rollout line to the handler for its event type. */
|
|
856
|
-
handle(obj) {
|
|
857
|
-
var _a;
|
|
858
|
-
const payload = (_a = obj.payload) != null ? _a : {};
|
|
859
|
-
switch (obj.type) {
|
|
860
|
-
case "session_meta":
|
|
861
|
-
return this.onSessionMeta(payload);
|
|
862
|
-
case "turn_context":
|
|
863
|
-
return this.onTurnContext(payload);
|
|
864
|
-
case "event_msg":
|
|
865
|
-
return this.onEventMsg(payload);
|
|
866
|
-
case "response_item":
|
|
867
|
-
return this.onResponseItem(payload);
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
/** Close the trailing open turn and return every emitted turn. */
|
|
871
|
-
finish() {
|
|
872
|
-
this.closeTurn();
|
|
873
|
-
return this.turns;
|
|
874
|
-
}
|
|
875
|
-
onSessionMeta(payload) {
|
|
876
|
-
const bi = payload.base_instructions;
|
|
877
|
-
if (typeof bi === "string" && bi.trim()) {
|
|
878
|
-
this.history.push({ role: "system", content: bi.trim() });
|
|
879
|
-
}
|
|
880
|
-
}
|
|
881
|
-
onTurnContext(payload) {
|
|
882
|
-
const m = payload.model;
|
|
883
|
-
if (typeof m === "string" && m) {
|
|
884
|
-
this.sessionModel = m;
|
|
885
|
-
if (this.cur) this.cur.model = m;
|
|
886
|
-
}
|
|
887
|
-
}
|
|
888
|
-
onEventMsg(payload) {
|
|
889
|
-
if (payload.type === "task_started") return this.onTaskStarted(payload);
|
|
890
|
-
if (payload.type === "task_complete") return this.closeTurn();
|
|
891
|
-
if (!this.cur) return;
|
|
892
|
-
if (payload.type === "agent_message") this.onAgentMessage(payload);
|
|
893
|
-
}
|
|
894
|
-
onTaskStarted(payload) {
|
|
895
|
-
this.closeTurn();
|
|
896
|
-
const traceId = typeof payload.trace_id === "string" ? payload.trace_id : null;
|
|
897
|
-
if (!traceId) return;
|
|
898
|
-
this.cur = {
|
|
899
|
-
traceId,
|
|
900
|
-
turnId: typeof payload.turn_id === "string" ? payload.turn_id : null,
|
|
901
|
-
model: this.sessionModel,
|
|
902
|
-
startedAtMs: typeof payload.started_at === "number" ? payload.started_at * 1e3 : null
|
|
903
|
-
};
|
|
904
|
-
}
|
|
905
|
-
onAgentMessage(payload) {
|
|
906
|
-
const msg = payload.message;
|
|
907
|
-
if (typeof msg === "string" && msg.trim() && payload.phase === "final_answer") {
|
|
908
|
-
this.agentFinal = msg.trim();
|
|
909
|
-
}
|
|
910
|
-
}
|
|
911
|
-
onResponseItem(payload) {
|
|
912
|
-
if (!this.cur) return;
|
|
913
|
-
switch (payload.type) {
|
|
914
|
-
case "message":
|
|
915
|
-
return this.onMessage(payload);
|
|
916
|
-
case "function_call":
|
|
917
|
-
return this.onFunctionCall(payload);
|
|
918
|
-
case "function_call_output":
|
|
919
|
-
return this.onFunctionCallOutput(payload);
|
|
920
|
-
}
|
|
921
|
-
}
|
|
922
|
-
onMessage(payload) {
|
|
923
|
-
const role = payload.role;
|
|
924
|
-
const text = textFromContent(payload.content);
|
|
925
|
-
if (!text) return;
|
|
926
|
-
if (role === "developer") {
|
|
927
|
-
this.flushPendingAssistant();
|
|
928
|
-
this.history.push({ role: "system", content: text });
|
|
929
|
-
} else if (role === "user") {
|
|
930
|
-
this.flushPendingAssistant();
|
|
931
|
-
this.history.push({ role: "user", content: text });
|
|
932
|
-
} else if (role === "assistant") {
|
|
933
|
-
this.flushPendingAssistant();
|
|
934
|
-
this.pendingAssistant = text;
|
|
935
|
-
}
|
|
936
|
-
}
|
|
937
|
-
onFunctionCall(payload) {
|
|
938
|
-
this.flushPendingAssistant();
|
|
939
|
-
let callId = explicitToolCallId(payload);
|
|
940
|
-
if (!callId) {
|
|
941
|
-
callId = `call_auto_${this.autoToolCallSeq++}`;
|
|
942
|
-
this.pendingToolCallIds.push(callId);
|
|
943
|
-
}
|
|
944
|
-
const name = typeof payload.name === "string" ? payload.name : "tool";
|
|
945
|
-
const args = typeof payload.arguments === "string" ? payload.arguments : payload.arguments != null ? JSON.stringify(payload.arguments) : "";
|
|
946
|
-
this.history.push({
|
|
947
|
-
role: "assistant",
|
|
948
|
-
tool_calls: [
|
|
949
|
-
{
|
|
950
|
-
id: callId,
|
|
951
|
-
type: "function",
|
|
952
|
-
function: { name, arguments: truncate(args, MAX_CONTENT_CHARS) }
|
|
953
|
-
}
|
|
954
|
-
]
|
|
955
|
-
});
|
|
956
|
-
}
|
|
957
|
-
onFunctionCallOutput(payload) {
|
|
958
|
-
var _a, _b;
|
|
959
|
-
this.flushPendingAssistant();
|
|
960
|
-
const callId = (_b = (_a = explicitToolCallId(payload)) != null ? _a : this.pendingToolCallIds.shift()) != null ? _b : `call_auto_${this.autoToolCallSeq++}`;
|
|
961
|
-
this.history.push({
|
|
962
|
-
role: "tool",
|
|
963
|
-
tool_call_id: callId,
|
|
964
|
-
content: truncate(outputToText(payload.output), MAX_CONTENT_CHARS)
|
|
965
|
-
});
|
|
966
|
-
}
|
|
967
|
-
flushPendingAssistant() {
|
|
968
|
-
if (this.pendingAssistant !== null) {
|
|
969
|
-
this.history.push({ role: "assistant", content: this.pendingAssistant });
|
|
970
|
-
this.pendingAssistant = null;
|
|
971
|
-
}
|
|
972
|
-
}
|
|
973
|
-
closeTurn() {
|
|
974
|
-
var _a, _b;
|
|
975
|
-
if (this.cur) {
|
|
976
|
-
const finalAnswer = (_a = this.agentFinal) != null ? _a : this.pendingAssistant;
|
|
977
|
-
if (finalAnswer == null ? void 0 : finalAnswer.trim()) {
|
|
978
|
-
this.turns.push({
|
|
979
|
-
traceId: this.cur.traceId,
|
|
980
|
-
turnId: this.cur.turnId,
|
|
981
|
-
model: (_b = this.cur.model) != null ? _b : this.sessionModel,
|
|
982
|
-
inputMessages: capInputMessages([...this.history]),
|
|
983
|
-
output: truncate(finalAnswer.trim(), MAX_OUTPUT_CHARS),
|
|
984
|
-
startedAtMs: this.cur.startedAtMs
|
|
985
|
-
});
|
|
986
|
-
this.history.push({ role: "assistant", content: finalAnswer.trim() });
|
|
987
|
-
}
|
|
988
|
-
}
|
|
989
|
-
this.pendingToolCallIds.length = 0;
|
|
990
|
-
this.cur = null;
|
|
991
|
-
this.pendingAssistant = null;
|
|
992
|
-
this.agentFinal = null;
|
|
993
|
-
}
|
|
994
|
-
};
|
|
995
|
-
function parseCodexRollout(content) {
|
|
996
|
-
const acc = new CodexTurnAccumulator();
|
|
997
|
-
for (const line of content.split("\n")) {
|
|
998
|
-
const trimmed = line.trim();
|
|
999
|
-
if (!trimmed) continue;
|
|
1000
|
-
let obj;
|
|
1001
|
-
try {
|
|
1002
|
-
obj = JSON.parse(trimmed);
|
|
1003
|
-
} catch (e) {
|
|
1004
|
-
continue;
|
|
1005
|
-
}
|
|
1006
|
-
acc.handle(obj);
|
|
1007
|
-
}
|
|
1008
|
-
return acc.finish();
|
|
1009
|
-
}
|
|
1010
|
-
|
|
1011
|
-
// src/cli/utils/governance/codex-rollout-otlp.ts
|
|
1012
|
-
function ioSpanId(traceId) {
|
|
1013
|
-
return _crypto.createHash.call(void 0, "sha256").update(`${traceId}:langwatch.io`).digest("hex").slice(0, 16);
|
|
1014
|
-
}
|
|
1015
|
-
function attr(key, value) {
|
|
1016
|
-
return { key, value: { stringValue: value } };
|
|
1017
|
-
}
|
|
1018
|
-
function buildCodexIOExportRequest(turns, nowMs) {
|
|
1019
|
-
const spans = turns.map((turn) => {
|
|
1020
|
-
var _a;
|
|
1021
|
-
const startMs = (_a = turn.startedAtMs) != null ? _a : nowMs;
|
|
1022
|
-
const endMs = Math.max(startMs, nowMs);
|
|
1023
|
-
const attributes = [
|
|
1024
|
-
attr("langwatch.span.type", "llm"),
|
|
1025
|
-
attr(
|
|
1026
|
-
"langwatch.input",
|
|
1027
|
-
JSON.stringify({ type: "chat_messages", value: turn.inputMessages })
|
|
1028
|
-
),
|
|
1029
|
-
attr("langwatch.output", turn.output)
|
|
1030
|
-
];
|
|
1031
|
-
if (turn.model) {
|
|
1032
|
-
attributes.push(attr("gen_ai.request.model", turn.model));
|
|
1033
|
-
attributes.push(attr("gen_ai.response.model", turn.model));
|
|
1034
|
-
}
|
|
1035
|
-
return {
|
|
1036
|
-
traceId: turn.traceId,
|
|
1037
|
-
spanId: ioSpanId(turn.traceId),
|
|
1038
|
-
name: "codex.turn.response",
|
|
1039
|
-
kind: 1,
|
|
1040
|
-
startTimeUnixNano: `${startMs}000000`,
|
|
1041
|
-
endTimeUnixNano: `${endMs}000000`,
|
|
1042
|
-
attributes,
|
|
1043
|
-
status: {}
|
|
1044
|
-
};
|
|
1045
|
-
});
|
|
1046
|
-
return {
|
|
1047
|
-
resourceSpans: [
|
|
1048
|
-
{
|
|
1049
|
-
resource: { attributes: [attr("service.name", "codex")] },
|
|
1050
|
-
scopeSpans: [
|
|
1051
|
-
{
|
|
1052
|
-
// A langwatch.* scope (NOT codex_cli_rs) so the ingestion
|
|
1053
|
-
// infra-span filter leaves these content spans alone.
|
|
1054
|
-
scope: { name: "langwatch.codex.rollout" },
|
|
1055
|
-
spans
|
|
1056
|
-
}
|
|
1057
|
-
]
|
|
1058
|
-
}
|
|
1059
|
-
]
|
|
1060
|
-
};
|
|
1061
|
-
}
|
|
1062
|
-
async function findRecentRollouts(sinceMs, sessionsRoot = _path.join.call(void 0, _os.homedir.call(void 0, ), ".codex", "sessions")) {
|
|
1063
|
-
const out = [];
|
|
1064
|
-
async function walk(dir, depth) {
|
|
1065
|
-
let entries;
|
|
1066
|
-
try {
|
|
1067
|
-
entries = await _promises.readdir.call(void 0, dir, { withFileTypes: true });
|
|
1068
|
-
} catch (e) {
|
|
1069
|
-
return;
|
|
1070
|
-
}
|
|
1071
|
-
for (const e of entries) {
|
|
1072
|
-
const full = _path.join.call(void 0, dir, e.name);
|
|
1073
|
-
if (e.isDirectory()) {
|
|
1074
|
-
if (depth < 3) await walk(full, depth + 1);
|
|
1075
|
-
} else if (e.isFile() && e.name.startsWith("rollout-") && e.name.endsWith(".jsonl")) {
|
|
1076
|
-
try {
|
|
1077
|
-
const s = await _promises.stat.call(void 0, full);
|
|
1078
|
-
if (s.mtimeMs >= sinceMs) out.push(full);
|
|
1079
|
-
} catch (e2) {
|
|
1080
|
-
}
|
|
1081
|
-
}
|
|
1082
|
-
}
|
|
1083
|
-
}
|
|
1084
|
-
await walk(sessionsRoot, 0);
|
|
1085
|
-
return out;
|
|
1086
|
-
}
|
|
1087
|
-
async function readRolloutTurns(sinceMs, sessionsRoot) {
|
|
1088
|
-
const files = await findRecentRollouts(sinceMs, sessionsRoot);
|
|
1089
|
-
const turns = [];
|
|
1090
|
-
for (const file of files) {
|
|
1091
|
-
try {
|
|
1092
|
-
turns.push(...parseCodexRollout(await _promises.readFile.call(void 0, file, "utf8")));
|
|
1093
|
-
} catch (e) {
|
|
1094
|
-
}
|
|
1095
|
-
}
|
|
1096
|
-
return turns;
|
|
1097
|
-
}
|
|
1098
|
-
async function postCodexTurns(args) {
|
|
1099
|
-
const { turns, nowMs, endpoint, token, fetchImpl } = args;
|
|
1100
|
-
const body = buildCodexIOExportRequest(turns, nowMs);
|
|
1101
|
-
const doFetch = fetchImpl != null ? fetchImpl : fetch;
|
|
1102
|
-
const controller = new AbortController();
|
|
1103
|
-
const timeout = setTimeout(() => controller.abort(), 5e3);
|
|
1104
|
-
try {
|
|
1105
|
-
await doFetch(endpoint, {
|
|
1106
|
-
method: "POST",
|
|
1107
|
-
headers: {
|
|
1108
|
-
"content-type": "application/json",
|
|
1109
|
-
authorization: `Bearer ${token}`
|
|
1110
|
-
},
|
|
1111
|
-
body: JSON.stringify(body),
|
|
1112
|
-
signal: controller.signal
|
|
1113
|
-
});
|
|
1114
|
-
} finally {
|
|
1115
|
-
clearTimeout(timeout);
|
|
1116
|
-
}
|
|
1117
|
-
}
|
|
1118
|
-
function createCodexIOStreamer(args) {
|
|
1119
|
-
var _a;
|
|
1120
|
-
const root = (_a = args.sessionsRoot) != null ? _a : _path.join.call(void 0, _os.homedir.call(void 0, ), ".codex", "sessions");
|
|
1121
|
-
const emitted = /* @__PURE__ */ new Set();
|
|
1122
|
-
return {
|
|
1123
|
-
async harvest(nowMs) {
|
|
1124
|
-
const turns = await readRolloutTurns(args.sinceMs, root);
|
|
1125
|
-
const fresh = turns.filter((t) => t.traceId && !emitted.has(t.traceId));
|
|
1126
|
-
if (fresh.length === 0) return 0;
|
|
1127
|
-
await postCodexTurns({
|
|
1128
|
-
turns: fresh,
|
|
1129
|
-
nowMs,
|
|
1130
|
-
endpoint: args.endpoint,
|
|
1131
|
-
token: args.token,
|
|
1132
|
-
fetchImpl: args.fetchImpl
|
|
1133
|
-
});
|
|
1134
|
-
for (const t of fresh) emitted.add(t.traceId);
|
|
1135
|
-
return fresh.length;
|
|
1136
|
-
}
|
|
1137
|
-
};
|
|
1138
|
-
}
|
|
1139
|
-
|
|
1140
|
-
// src/cli/utils/governance/wrapper-path-choice.ts
|
|
1141
|
-
var _prompts = require('prompts'); var _prompts2 = _interopRequireDefault(_prompts);
|
|
1142
|
-
var TOOL_MODE_FLAG = "--tool-mode";
|
|
1143
|
-
function tokenToMode(token) {
|
|
1144
|
-
const t = (token != null ? token : "").trim().toLowerCase();
|
|
1145
|
-
if (t === "gateway" || t === "vk") return "gateway";
|
|
1146
|
-
if (t === "otlp" || t === "ingestion" || t === "direct") return "ingestion";
|
|
1147
|
-
return null;
|
|
1148
|
-
}
|
|
1149
|
-
function parseToolModeFlag(args, env = process.env) {
|
|
1150
|
-
var _a;
|
|
1151
|
-
const out = [];
|
|
1152
|
-
let flagOverride;
|
|
1153
|
-
for (let i = 0; i < args.length; i++) {
|
|
1154
|
-
const arg = args[i];
|
|
1155
|
-
if (arg === TOOL_MODE_FLAG) {
|
|
1156
|
-
const value = args[i + 1];
|
|
1157
|
-
const mode = tokenToMode(value);
|
|
1158
|
-
if (mode) flagOverride = mode;
|
|
1159
|
-
if (value !== void 0) i++;
|
|
1160
|
-
continue;
|
|
1161
|
-
}
|
|
1162
|
-
if (arg.startsWith(`${TOOL_MODE_FLAG}=`)) {
|
|
1163
|
-
const value = arg.slice(TOOL_MODE_FLAG.length + 1);
|
|
1164
|
-
const mode = tokenToMode(value);
|
|
1165
|
-
if (mode) flagOverride = mode;
|
|
1166
|
-
continue;
|
|
1167
|
-
}
|
|
1168
|
-
out.push(arg);
|
|
1169
|
-
}
|
|
1170
|
-
const override = (_a = flagOverride != null ? flagOverride : tokenToMode(env.LANGWATCH_TOOL_MODE)) != null ? _a : void 0;
|
|
1171
|
-
return { args: out, override };
|
|
1172
|
-
}
|
|
1173
|
-
function isForcedAutoLogin(env) {
|
|
1174
|
-
const flag = env.LANGWATCH_AUTO_LOGIN;
|
|
1175
|
-
return flag === "1" || flag === "true";
|
|
1176
|
-
}
|
|
1177
|
-
function pathChoiceMessage(tool) {
|
|
1178
|
-
return `How should \`langwatch ${tool}\` run?`;
|
|
1179
|
-
}
|
|
1180
|
-
function gatewayChoiceTitle() {
|
|
1181
|
-
return "Gateway (virtual key) - route LLM calls through LangWatch (usage billed per token)";
|
|
1182
|
-
}
|
|
1183
|
-
function otlpChoiceTitle(tool) {
|
|
1184
|
-
return `Direct OTLP - use your own ${tool} plan, send only telemetry to LangWatch`;
|
|
1185
|
-
}
|
|
1186
|
-
async function resolveWrapperPath(opts) {
|
|
1187
|
-
var _a, _b, _c;
|
|
1188
|
-
const {
|
|
1189
|
-
cfg,
|
|
1190
|
-
tool,
|
|
1191
|
-
override,
|
|
1192
|
-
promptImpl = _prompts2.default,
|
|
1193
|
-
saveImpl = _chunkOGAE7BVQjs.saveConfig,
|
|
1194
|
-
writeImpl = (s) => void process.stderr.write(s),
|
|
1195
|
-
env = process.env
|
|
1196
|
-
} = opts;
|
|
1197
|
-
const isTTY = (_a = opts.isTTY) != null ? _a : Boolean(process.stdin.isTTY) && Boolean(process.stdout.isTTY);
|
|
1198
|
-
if (override) {
|
|
1199
|
-
return { mode: override, prompted: false };
|
|
1200
|
-
}
|
|
1201
|
-
const pinned = (_b = cfg.tool_mode) == null ? void 0 : _b[tool];
|
|
1202
|
-
if (pinned === "gateway" || pinned === "ingestion") {
|
|
1203
|
-
return { mode: pinned, prompted: false };
|
|
1204
|
-
}
|
|
1205
|
-
if (opts.refreshPolicies) {
|
|
1206
|
-
try {
|
|
1207
|
-
const fresh = await opts.refreshPolicies(cfg);
|
|
1208
|
-
if (fresh) {
|
|
1209
|
-
cfg.tool_policies = fresh;
|
|
1210
|
-
try {
|
|
1211
|
-
saveImpl(_chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, cfg), { tool_policies: fresh }));
|
|
1212
|
-
} catch (e) {
|
|
1213
|
-
}
|
|
1214
|
-
}
|
|
1215
|
-
} catch (e) {
|
|
1216
|
-
}
|
|
1217
|
-
}
|
|
1218
|
-
const policy = resolvePlatformToolPolicy(tool, cfg.tool_policies);
|
|
1219
|
-
const allowGateway = policy.allowVk;
|
|
1220
|
-
const allowOtlp = policy.allowOtelDirect;
|
|
1221
|
-
if (allowGateway && !allowOtlp) {
|
|
1222
|
-
return { mode: "gateway", prompted: false };
|
|
1223
|
-
}
|
|
1224
|
-
if (!allowGateway && allowOtlp) {
|
|
1225
|
-
return { mode: "ingestion", prompted: false };
|
|
1226
|
-
}
|
|
1227
|
-
if (!allowGateway && !allowOtlp) {
|
|
1228
|
-
return { mode: "gateway", prompted: false };
|
|
1229
|
-
}
|
|
1230
|
-
const canPrompt = isTTY && !isForcedAutoLogin(env);
|
|
1231
|
-
if (!canPrompt) {
|
|
1232
|
-
return { mode: "gateway", prompted: false };
|
|
1233
|
-
}
|
|
1234
|
-
const res = await promptImpl({
|
|
1235
|
-
type: "select",
|
|
1236
|
-
name: "path",
|
|
1237
|
-
message: pathChoiceMessage(tool),
|
|
1238
|
-
choices: [
|
|
1239
|
-
{
|
|
1240
|
-
title: gatewayChoiceTitle(),
|
|
1241
|
-
value: "gateway"
|
|
1242
|
-
},
|
|
1243
|
-
{
|
|
1244
|
-
title: otlpChoiceTitle(tool),
|
|
1245
|
-
value: "ingestion"
|
|
1246
|
-
}
|
|
1247
|
-
],
|
|
1248
|
-
initial: 0
|
|
1249
|
-
});
|
|
1250
|
-
const chosen = tokenToMode(res == null ? void 0 : res.path);
|
|
1251
|
-
if (!chosen) {
|
|
1252
|
-
return { mode: "gateway", prompted: false };
|
|
1253
|
-
}
|
|
1254
|
-
const next = _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, cfg), {
|
|
1255
|
-
tool_mode: _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, (_c = cfg.tool_mode) != null ? _c : {}), { [tool]: chosen })
|
|
1256
|
-
});
|
|
1257
|
-
try {
|
|
1258
|
-
saveImpl(next);
|
|
1259
|
-
cfg.tool_mode = next.tool_mode;
|
|
1260
|
-
} catch (e) {
|
|
1261
|
-
}
|
|
1262
|
-
const label = chosen === "gateway" ? "gateway" : "otlp";
|
|
1263
|
-
writeImpl(
|
|
1264
|
-
`${lwTag()} saved. \`${tool}\` will use the ${label} path. Override with --tool-mode=${chosen === "gateway" ? "otlp" : "gateway"}, or edit ~/.langwatch/config.json (tool_mode.${tool}).
|
|
1265
|
-
`
|
|
1266
|
-
);
|
|
1267
|
-
return { mode: chosen, prompted: true };
|
|
1268
|
-
}
|
|
1269
|
-
|
|
1270
|
-
// src/cli/utils/governance/wrapper.ts
|
|
1271
|
-
var CODEX_IO_POLL_MS = 2500;
|
|
1272
|
-
function envForTool(cfg, tool) {
|
|
1273
|
-
var _a;
|
|
1274
|
-
const gw = cfg.gateway_url.replace(/\/+$/, "");
|
|
1275
|
-
const auth = (_a = cfg.default_personal_vk) == null ? void 0 : _a.secret;
|
|
1276
|
-
if (!auth) return { vars: {} };
|
|
1277
|
-
switch (tool) {
|
|
1278
|
-
case "claude":
|
|
1279
|
-
return {
|
|
1280
|
-
vars: {
|
|
1281
|
-
ANTHROPIC_BASE_URL: gw,
|
|
1282
|
-
ANTHROPIC_AUTH_TOKEN: auth
|
|
1283
|
-
},
|
|
1284
|
-
clears: ["ANTHROPIC_API_KEY"]
|
|
1285
|
-
};
|
|
1286
|
-
case "codex":
|
|
1287
|
-
return {
|
|
1288
|
-
vars: {
|
|
1289
|
-
OPENAI_BASE_URL: gw,
|
|
1290
|
-
OPENAI_API_KEY: auth
|
|
1291
|
-
}
|
|
1292
|
-
};
|
|
1293
|
-
case "cursor":
|
|
1294
|
-
return {
|
|
1295
|
-
vars: {
|
|
1296
|
-
OPENAI_BASE_URL: gw,
|
|
1297
|
-
OPENAI_API_KEY: auth,
|
|
1298
|
-
ANTHROPIC_BASE_URL: gw,
|
|
1299
|
-
ANTHROPIC_AUTH_TOKEN: auth
|
|
1300
|
-
},
|
|
1301
|
-
clears: ["ANTHROPIC_API_KEY"]
|
|
1302
|
-
};
|
|
1303
|
-
case "gemini":
|
|
1304
|
-
return {
|
|
1305
|
-
vars: {
|
|
1306
|
-
GOOGLE_GEMINI_BASE_URL: gw,
|
|
1307
|
-
GEMINI_API_KEY: auth,
|
|
1308
|
-
GOOGLE_API_KEY: auth
|
|
1309
|
-
}
|
|
1310
|
-
};
|
|
1311
|
-
case "opencode":
|
|
1312
|
-
return {
|
|
1313
|
-
vars: {
|
|
1314
|
-
OPENAI_BASE_URL: `${gw}/v1`,
|
|
1315
|
-
OPENAI_API_KEY: auth,
|
|
1316
|
-
ANTHROPIC_BASE_URL: `${gw}/v1`,
|
|
1317
|
-
ANTHROPIC_AUTH_TOKEN: auth,
|
|
1318
|
-
ANTHROPIC_API_KEY: auth
|
|
1319
|
-
}
|
|
1320
|
-
};
|
|
1321
|
-
default:
|
|
1322
|
-
return { vars: {} };
|
|
1323
|
-
}
|
|
1324
|
-
}
|
|
1325
|
-
var TOOL_PROVIDER_FAMILIES = {
|
|
1326
|
-
claude: ["anthropic"],
|
|
1327
|
-
codex: ["openai"],
|
|
1328
|
-
cursor: ["anthropic", "openai"],
|
|
1329
|
-
gemini: ["google", "gemini"],
|
|
1330
|
-
opencode: ["anthropic", "openai"]
|
|
1331
|
-
};
|
|
1332
|
-
function shouldForgetGatewayPin(args) {
|
|
1333
|
-
return args.pinnedMode === "gateway" && args.retryable !== true;
|
|
1334
|
-
}
|
|
1335
|
-
function renderContactFooter(adminEmail) {
|
|
1336
|
-
if (adminEmail) {
|
|
1337
|
-
return `Need help? Contact your LangWatch admin: ${adminEmail}
|
|
1338
|
-
`;
|
|
1339
|
-
}
|
|
1340
|
-
return `If you need help, contact your LangWatch admin.
|
|
1341
|
-
`;
|
|
1342
|
-
}
|
|
1343
|
-
async function preflightWrapper(cfg, tool, opts = {}) {
|
|
1344
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
1345
|
-
const cp = cfg.control_plane_url.replace(/\/+$/, "");
|
|
1346
|
-
const bootstrap = await ((_a = opts.bootstrapImpl) != null ? _a : (0, _chunkZA5BH7IZjs.getCliBootstrap))(cfg).catch(
|
|
1347
|
-
() => null
|
|
1348
|
-
);
|
|
1349
|
-
const adminEmail = (_b = bootstrap == null ? void 0 : bootstrap.adminEmail) != null ? _b : null;
|
|
1350
|
-
if (!((_c = cfg.default_personal_vk) == null ? void 0 : _c.secret)) {
|
|
1351
|
-
return {
|
|
1352
|
-
ok: false,
|
|
1353
|
-
message: `No personal virtual key on this account.
|
|
1354
|
-
Your organization needs at least one AI provider configured before
|
|
1355
|
-
\`langwatch ${tool}\` can route requests.
|
|
1356
|
-
If you're an admin, set one up at
|
|
1357
|
-
${cp}/settings/model-providers
|
|
1358
|
-
then run \`langwatch login --device\` to refresh your credentials.
|
|
1359
|
-
` + renderContactFooter(adminEmail)
|
|
1360
|
-
};
|
|
1361
|
-
}
|
|
1362
|
-
const gw = cfg.gateway_url.replace(/\/+$/, "");
|
|
1363
|
-
const f = (_d = opts.fetchImpl) != null ? _d : fetch;
|
|
1364
|
-
const timeoutMs = (_e = opts.timeoutMs) != null ? _e : 3e3;
|
|
1365
|
-
try {
|
|
1366
|
-
const res = await f(`${gw}/healthz`, {
|
|
1367
|
-
method: "GET",
|
|
1368
|
-
signal: AbortSignal.timeout(timeoutMs)
|
|
1369
|
-
});
|
|
1370
|
-
if (!res.ok) {
|
|
1371
|
-
return {
|
|
1372
|
-
ok: false,
|
|
1373
|
-
retryable: true,
|
|
1374
|
-
message: `AI Gateway at ${gw} returned HTTP ${res.status}.
|
|
1375
|
-
The wrapper cannot route \`langwatch ${tool}\` requests until the
|
|
1376
|
-
data plane is healthy. Check that the LangWatch gateway is running.
|
|
1377
|
-
` + renderContactFooter(adminEmail)
|
|
1378
|
-
};
|
|
1379
|
-
}
|
|
1380
|
-
} catch (err) {
|
|
1381
|
-
return {
|
|
1382
|
-
ok: false,
|
|
1383
|
-
retryable: true,
|
|
1384
|
-
message: `Cannot reach AI Gateway at ${gw}
|
|
1385
|
-
${err.message}
|
|
1386
|
-
Check that the LangWatch gateway is running, or set LANGWATCH_GATEWAY_URL
|
|
1387
|
-
if you've deployed it elsewhere.
|
|
1388
|
-
` + renderContactFooter(adminEmail)
|
|
1389
|
-
};
|
|
1390
|
-
}
|
|
1391
|
-
if (Array.isArray(bootstrap == null ? void 0 : bootstrap.tools)) {
|
|
1392
|
-
const published = bootstrap.tools.some((t) => t.slug === tool);
|
|
1393
|
-
if (!published) {
|
|
1394
|
-
return {
|
|
1395
|
-
ok: false,
|
|
1396
|
-
message: `The gateway isn't enabled for \`${tool}\` in your organization.
|
|
1397
|
-
An admin needs to publish a ${tool} coding-assistant tile in the
|
|
1398
|
-
AI Tools catalog (with the gateway path enabled):
|
|
1399
|
-
${cp}/settings/governance/tool-catalog
|
|
1400
|
-
` + renderContactFooter(adminEmail)
|
|
1401
|
-
};
|
|
1402
|
-
}
|
|
1403
|
-
}
|
|
1404
|
-
const need = TOOL_PROVIDER_FAMILIES[tool];
|
|
1405
|
-
const configured = (_g = bootstrap == null ? void 0 : bootstrap.gatewayProviders) != null ? _g : (_f = bootstrap == null ? void 0 : bootstrap.providers) == null ? void 0 : _f.map((p) => p.name);
|
|
1406
|
-
if (need && need.length > 0 && Array.isArray(configured)) {
|
|
1407
|
-
const have = new Set(configured.map((n) => n.toLowerCase()));
|
|
1408
|
-
const matches = need.filter((n) => have.has(n));
|
|
1409
|
-
if (matches.length === 0) {
|
|
1410
|
-
const list = need.map((n) => `\`${n}\``).join(" or ");
|
|
1411
|
-
return {
|
|
1412
|
-
ok: false,
|
|
1413
|
-
message: `No ${list} provider credential is configured for your organization.
|
|
1414
|
-
\`langwatch ${tool}\` needs at least one enabled provider to route
|
|
1415
|
-
requests through the gateway. If you're an admin, add one at
|
|
1416
|
-
${cp}/settings/model-providers
|
|
1417
|
-
` + renderContactFooter(adminEmail)
|
|
1418
|
-
};
|
|
1419
|
-
}
|
|
1420
|
-
}
|
|
1421
|
-
return { ok: true };
|
|
1422
|
-
}
|
|
1423
|
-
function shouldAutoLogin() {
|
|
1424
|
-
const flag = process.env.LANGWATCH_AUTO_LOGIN;
|
|
1425
|
-
if (flag === "1" || flag === "true") return true;
|
|
1426
|
-
if (flag === "0" || flag === "false") return false;
|
|
1427
|
-
return Boolean(process.stdin.isTTY);
|
|
1428
|
-
}
|
|
1429
|
-
async function runWrapped(tool, args) {
|
|
1430
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
1431
|
-
let cfg = _chunkOGAE7BVQjs.loadConfig.call(void 0, );
|
|
1432
|
-
if (!_chunkOGAE7BVQjs.isLoggedIn.call(void 0, cfg)) {
|
|
1433
|
-
if (!shouldAutoLogin()) {
|
|
1434
|
-
process.stderr.write(
|
|
1435
|
-
"Not logged in. Run `langwatch login --device` first.\n"
|
|
1436
|
-
);
|
|
1437
|
-
process.exit(1);
|
|
1438
|
-
}
|
|
1439
|
-
process.stderr.write(
|
|
1440
|
-
"Not logged in. Starting device-flow login...\n"
|
|
1441
|
-
);
|
|
1442
|
-
try {
|
|
1443
|
-
cfg = await _chunk5M6GLAIGjs.runDeviceFlowLogin.call(void 0, { cfg });
|
|
1444
|
-
} catch (err) {
|
|
1445
|
-
process.stderr.write(
|
|
1446
|
-
`login failed: ${(_a = err.message) != null ? _a : "unknown error"}
|
|
1447
|
-
`
|
|
1448
|
-
);
|
|
1449
|
-
process.exit(1);
|
|
1450
|
-
}
|
|
1451
|
-
if (!_chunkOGAE7BVQjs.isLoggedIn.call(void 0, cfg)) {
|
|
1452
|
-
process.stderr.write("login did not complete - exiting\n");
|
|
1453
|
-
process.exit(1);
|
|
1454
|
-
}
|
|
1455
|
-
}
|
|
1456
|
-
const exceeded = await checkBudget(cfg);
|
|
1457
|
-
if (exceeded) {
|
|
1458
|
-
process.stderr.write(renderBudgetExceeded(exceeded));
|
|
1459
|
-
if (exceeded.request_increase_url) {
|
|
1460
|
-
cfg.last_request_increase_url = exceeded.request_increase_url;
|
|
1461
|
-
try {
|
|
1462
|
-
_chunkOGAE7BVQjs.saveConfig.call(void 0, cfg);
|
|
1463
|
-
} catch (e) {
|
|
1464
|
-
}
|
|
1465
|
-
}
|
|
1466
|
-
process.exit(2);
|
|
1467
|
-
}
|
|
1468
|
-
const { args: toolArgs, override: pathOverride } = parseToolModeFlag(args);
|
|
1469
|
-
let pathChoice;
|
|
1470
|
-
try {
|
|
1471
|
-
pathChoice = await resolveWrapperPath({
|
|
1472
|
-
cfg,
|
|
1473
|
-
tool,
|
|
1474
|
-
args: toolArgs,
|
|
1475
|
-
override: pathOverride,
|
|
1476
|
-
// Re-check the org policy at run time so a path the admin disabled
|
|
1477
|
-
// after login is respected without a re-login. Best-effort: on any
|
|
1478
|
-
// failure resolveWrapperPath keeps the login-cached policy map.
|
|
1479
|
-
refreshPolicies: (c) => _chunkZA5BH7IZjs.getCliBootstrap.call(void 0, c).then((b) => {
|
|
1480
|
-
var _a2;
|
|
1481
|
-
return (_a2 = b == null ? void 0 : b.toolPolicies) != null ? _a2 : null;
|
|
1482
|
-
})
|
|
1483
|
-
});
|
|
1484
|
-
} catch (err) {
|
|
1485
|
-
process.stderr.write(`path selection failed: ${err.message}
|
|
1486
|
-
`);
|
|
1487
|
-
process.exit(2);
|
|
1488
|
-
}
|
|
1489
|
-
const toolEnv = envForTool(cfg, tool);
|
|
1490
|
-
const gatewayVars = toolEnv.vars;
|
|
1491
|
-
const gatewayClears = (_b = toolEnv.clears) != null ? _b : [];
|
|
1492
|
-
let modeResult;
|
|
1493
|
-
try {
|
|
1494
|
-
modeResult = await resolveWrapperMode(
|
|
1495
|
-
cfg,
|
|
1496
|
-
tool,
|
|
1497
|
-
gatewayVars,
|
|
1498
|
-
gatewayClears,
|
|
1499
|
-
pathChoice.mode
|
|
1500
|
-
);
|
|
1501
|
-
} catch (err) {
|
|
1502
|
-
const isToolDisabled = err instanceof _chunkZA5BH7IZjs.GovernanceCliError && err.code === "tool_disabled";
|
|
1503
|
-
const policy = resolvePlatformToolPolicy(tool, cfg.tool_policies);
|
|
1504
|
-
if (pathChoice.mode === "ingestion" && policy.allowVk && !isToolDisabled) {
|
|
1505
|
-
process.stderr.write(
|
|
1506
|
-
`${lwTag()} couldn't set up direct OTLP ingestion for ${tool} (${err.message}). Falling back to the gateway path.
|
|
1507
|
-
`
|
|
1508
|
-
);
|
|
1509
|
-
try {
|
|
1510
|
-
modeResult = await resolveWrapperMode(
|
|
1511
|
-
cfg,
|
|
1512
|
-
tool,
|
|
1513
|
-
gatewayVars,
|
|
1514
|
-
gatewayClears,
|
|
1515
|
-
"gateway"
|
|
1516
|
-
);
|
|
1517
|
-
} catch (err2) {
|
|
1518
|
-
process.stderr.write(
|
|
1519
|
-
`mode resolution failed: ${err2.message}
|
|
1520
|
-
`
|
|
1521
|
-
);
|
|
1522
|
-
process.exit(2);
|
|
1523
|
-
}
|
|
1524
|
-
} else {
|
|
1525
|
-
process.stderr.write(
|
|
1526
|
-
`mode resolution failed: ${err.message}
|
|
1527
|
-
`
|
|
1528
|
-
);
|
|
1529
|
-
process.exit(2);
|
|
1530
|
-
}
|
|
1531
|
-
}
|
|
1532
|
-
if (modeResult.notice) {
|
|
1533
|
-
process.stderr.write(`${modeResult.notice}
|
|
1534
|
-
`);
|
|
1535
|
-
}
|
|
1536
|
-
if (modeResult.mode === "gateway") {
|
|
1537
|
-
const probe = await preflightWrapper(cfg, tool);
|
|
1538
|
-
if (!probe.ok) {
|
|
1539
|
-
process.stderr.write((_c = probe.message) != null ? _c : "preflight failed\n");
|
|
1540
|
-
if (shouldForgetGatewayPin({
|
|
1541
|
-
pinnedMode: (_d = cfg.tool_mode) == null ? void 0 : _d[tool],
|
|
1542
|
-
retryable: probe.retryable
|
|
1543
|
-
})) {
|
|
1544
|
-
const toolMode = _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, cfg.tool_mode);
|
|
1545
|
-
delete toolMode[tool];
|
|
1546
|
-
cfg.tool_mode = toolMode;
|
|
1547
|
-
try {
|
|
1548
|
-
_chunkOGAE7BVQjs.saveConfig.call(void 0, cfg);
|
|
1549
|
-
process.stderr.write(
|
|
1550
|
-
`${lwTag()} cleared the saved gateway path for \`${tool}\`; you'll be asked again next time so you can pick direct OTLP.
|
|
1551
|
-
`
|
|
1552
|
-
);
|
|
1553
|
-
} catch (e) {
|
|
1554
|
-
}
|
|
1555
|
-
}
|
|
1556
|
-
process.exit(2);
|
|
1557
|
-
}
|
|
1558
|
-
if (modeResult.codexConfigPath) {
|
|
1559
|
-
process.stderr.write(
|
|
1560
|
-
`${lwTag()} wired [model_providers.langwatch] in ${modeResult.codexConfigPath}.
|
|
1561
|
-
`
|
|
1562
|
-
);
|
|
1563
|
-
}
|
|
1564
|
-
if (modeResult.codexProfilePath) {
|
|
1565
|
-
process.stderr.write(
|
|
1566
|
-
`${lwTag()} wrote profile body to ${modeResult.codexProfilePath}.
|
|
1567
|
-
`
|
|
1568
|
-
);
|
|
1569
|
-
}
|
|
1570
|
-
} else {
|
|
1571
|
-
if (modeResult.newKeyMinted) {
|
|
1572
|
-
process.stderr.write(
|
|
1573
|
-
`${lwTag()} minted a personal ingestion key for ${tool}.
|
|
1574
|
-
`
|
|
1575
|
-
);
|
|
1576
|
-
}
|
|
1577
|
-
if (modeResult.codexConfigPath) {
|
|
1578
|
-
process.stderr.write(
|
|
1579
|
-
`${lwTag()} wrote [otel] activation block to ${modeResult.codexConfigPath}.
|
|
1580
|
-
`
|
|
1581
|
-
);
|
|
1582
|
-
}
|
|
1583
|
-
await maybeOfferIngestionShellRcPersist({
|
|
1584
|
-
cfg,
|
|
1585
|
-
tool,
|
|
1586
|
-
vars: modeResult.vars
|
|
1587
|
-
});
|
|
1588
|
-
}
|
|
1589
|
-
const parentEnv = _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, process.env);
|
|
1590
|
-
for (const key of (_e = modeResult.clears) != null ? _e : []) {
|
|
1591
|
-
delete parentEnv[key];
|
|
1592
|
-
}
|
|
1593
|
-
const env = _chunkBRPEG3YQjs.__spreadValues.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, parentEnv), modeResult.vars);
|
|
1594
|
-
const finalArgs = [...(_f = modeResult.extraArgs) != null ? _f : [], ...toolArgs];
|
|
1595
|
-
const shellName = (_h = ((_g = process.env.SHELL) != null ? _g : "").split("/").pop()) != null ? _h : "";
|
|
1596
|
-
const aliasShell = process.platform !== "win32" && (shellName === "zsh" || shellName === "bash") ? process.env.SHELL : null;
|
|
1597
|
-
const notFoundMessage = `${tool} not found in PATH - install it first (https://docs.langwatch.ai/ai-gateway/governance/admin-setup#cli-device-flow-rest-api)`;
|
|
1598
|
-
const sessionStartMs = Date.now();
|
|
1599
|
-
const codexStreamer = tool === "codex" && modeResult.mode === "ingestion" && modeResult.endpoint && modeResult.ingestionToken ? createCodexIOStreamer({
|
|
1600
|
-
sinceMs: sessionStartMs,
|
|
1601
|
-
endpoint: `${modeResult.endpoint.replace(/\/+$/, "")}/v1/traces`,
|
|
1602
|
-
token: modeResult.ingestionToken
|
|
1603
|
-
}) : null;
|
|
1604
|
-
let codexPoll = null;
|
|
1605
|
-
if (codexStreamer) {
|
|
1606
|
-
let inFlight = false;
|
|
1607
|
-
codexPoll = setInterval(() => {
|
|
1608
|
-
if (inFlight) return;
|
|
1609
|
-
inFlight = true;
|
|
1610
|
-
void codexStreamer.harvest(Date.now()).catch(() => 0).finally(() => {
|
|
1611
|
-
inFlight = false;
|
|
1612
|
-
});
|
|
1613
|
-
}, CODEX_IO_POLL_MS);
|
|
1614
|
-
(_i = codexPoll.unref) == null ? void 0 : _i.call(codexPoll);
|
|
1615
|
-
}
|
|
1616
|
-
let child;
|
|
1617
|
-
if (aliasShell) {
|
|
1618
|
-
const q = (s) => `'${s.replace(/'/g, "'\\''")}'`;
|
|
1619
|
-
const reapply = [
|
|
1620
|
-
...((_j = modeResult.clears) != null ? _j : []).map((k) => `unset ${k}`),
|
|
1621
|
-
...Object.entries(modeResult.vars).map(([k, v]) => `export ${k}=${q(v)}`)
|
|
1622
|
-
].join("; ");
|
|
1623
|
-
const guard = `command -v -- ${q(tool)} >/dev/null 2>&1 || { printf '%s\\n' ${q(notFoundMessage)} >&2; exit 127; }`;
|
|
1624
|
-
const command = `${reapply ? `${reapply}; ` : ""}${guard}; ${tool} "$@"`;
|
|
1625
|
-
child = _child_process.spawn.call(void 0, aliasShell, ["-i", "-c", command, tool, ...finalArgs], {
|
|
1626
|
-
stdio: "inherit",
|
|
1627
|
-
env
|
|
1628
|
-
});
|
|
1629
|
-
} else {
|
|
1630
|
-
child = _child_process.spawn.call(void 0, tool, finalArgs, {
|
|
1631
|
-
stdio: "inherit",
|
|
1632
|
-
env,
|
|
1633
|
-
shell: process.platform === "win32"
|
|
1634
|
-
});
|
|
1635
|
-
}
|
|
1636
|
-
child.on("error", (err) => {
|
|
1637
|
-
if (err.code === "ENOENT") {
|
|
1638
|
-
process.stderr.write(`${notFoundMessage}
|
|
1639
|
-
`);
|
|
1640
|
-
process.exit(127);
|
|
1641
|
-
}
|
|
1642
|
-
process.stderr.write(`exec ${tool}: ${err.message}
|
|
1643
|
-
`);
|
|
1644
|
-
process.exit(1);
|
|
1645
|
-
});
|
|
1646
|
-
const exitCode = await new Promise((resolve) => {
|
|
1647
|
-
child.on("close", (code) => resolve(code != null ? code : 1));
|
|
1648
|
-
});
|
|
1649
|
-
if (codexPoll) clearInterval(codexPoll);
|
|
1650
|
-
if (codexStreamer) {
|
|
1651
|
-
try {
|
|
1652
|
-
await codexStreamer.harvest(Date.now());
|
|
1653
|
-
} catch (e) {
|
|
1654
|
-
}
|
|
1655
|
-
}
|
|
1656
|
-
process.exit(exitCode);
|
|
1657
|
-
}
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
exports.appSettingsTargetFor = appSettingsTargetFor; exports.appEnvHasAnyVar = appEnvHasAnyVar; exports.removeAppEnvVars = removeAppEnvVars; exports.GATEWAY_RC_MARKERS = GATEWAY_RC_MARKERS; exports.toolMarkers = toolMarkers; exports.rcPath = rcPath; exports.rcHasLangwatchBlock = rcHasLangwatchBlock; exports.removeBlockFromRc = removeBlockFromRc; exports.telemetryEnvVarNames = telemetryEnvVarNames; exports.envForTool = envForTool; exports.runWrapped = runWrapped;
|
|
1672
|
-
//# sourceMappingURL=chunk-D2VRKNFF.js.map
|