langwatch 0.33.2 → 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.
Files changed (775) hide show
  1. package/README.md +10 -8
  2. package/dist/{chunk-YQNOLNAK.mjs → chunk-2O4ILSP5.mjs} +2 -2
  3. package/dist/{chunk-PVOHCPWP.mjs → chunk-3QHURXIZ.mjs} +149 -7
  4. package/dist/chunk-3QHURXIZ.mjs.map +1 -0
  5. package/dist/{chunk-O75KIBCK.js → chunk-53AMPF5E.js} +16 -22
  6. package/dist/chunk-53AMPF5E.js.map +1 -0
  7. package/dist/{chunk-GW2YXZYN.js → chunk-EDWIKCYX.js} +130 -48
  8. package/dist/chunk-EDWIKCYX.js.map +1 -0
  9. package/dist/{chunk-FLYABTMA.js → chunk-HBVGKWJK.js} +160 -18
  10. package/dist/chunk-HBVGKWJK.js.map +1 -0
  11. package/dist/{chunk-2PNM3JZ7.js → chunk-IUSLT65Z.js} +2 -2
  12. package/dist/{chunk-2PNM3JZ7.js.map → chunk-IUSLT65Z.js.map} +1 -1
  13. package/dist/{chunk-QAZHQ7SZ.mjs → chunk-KH2GOLFO.mjs} +104 -22
  14. package/dist/chunk-KH2GOLFO.mjs.map +1 -0
  15. package/dist/{chunk-GVFRS2UN.mjs → chunk-L5KBRKHS.mjs} +111 -5
  16. package/dist/chunk-L5KBRKHS.mjs.map +1 -0
  17. package/dist/chunk-TKSTXX3D.js +239 -0
  18. package/dist/chunk-TKSTXX3D.js.map +1 -0
  19. package/dist/{chunk-QGGX6LSK.mjs → chunk-XMAFHMLS.mjs} +10 -16
  20. package/dist/{chunk-QGGX6LSK.mjs.map → chunk-XMAFHMLS.mjs.map} +1 -1
  21. package/dist/cli/bundle.js +3768 -0
  22. package/dist/cli/index.js +10 -1333
  23. package/dist/{implementation-Cbelb5TK.d.ts → implementation-CMWs8g5L.d.ts} +3 -3
  24. package/dist/{implementation-Oz1fNv8p.d.mts → implementation-Cv1hPZBQ.d.mts} +3 -3
  25. package/dist/index.d.mts +263 -17
  26. package/dist/index.d.ts +263 -17
  27. package/dist/index.js +4838 -1382
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.mjs +4808 -1352
  30. package/dist/index.mjs.map +1 -1
  31. package/dist/observability-sdk/index.d.mts +6 -6
  32. package/dist/observability-sdk/index.d.ts +6 -6
  33. package/dist/observability-sdk/index.js +6 -9
  34. package/dist/observability-sdk/index.js.map +1 -1
  35. package/dist/observability-sdk/index.mjs +7 -10
  36. package/dist/observability-sdk/instrumentation/langchain/index.d.mts +2 -2
  37. package/dist/observability-sdk/instrumentation/langchain/index.d.ts +2 -2
  38. package/dist/observability-sdk/instrumentation/langchain/index.js +18 -21
  39. package/dist/observability-sdk/instrumentation/langchain/index.js.map +1 -1
  40. package/dist/observability-sdk/instrumentation/langchain/index.mjs +3 -6
  41. package/dist/observability-sdk/instrumentation/langchain/index.mjs.map +1 -1
  42. package/dist/observability-sdk/setup/node/index.d.mts +2 -2
  43. package/dist/observability-sdk/setup/node/index.d.ts +2 -2
  44. package/dist/observability-sdk/setup/node/index.js +4 -8
  45. package/dist/observability-sdk/setup/node/index.js.map +1 -1
  46. package/dist/observability-sdk/setup/node/index.mjs +3 -7
  47. package/dist/{types-BNbQoBnh.d.mts → types-D-yAkWoC.d.ts} +256 -3
  48. package/dist/{types-Dmazk5Bk.d.mts → types-DLfhJb38.d.mts} +1 -1
  49. package/dist/{types-Dmazk5Bk.d.ts → types-DLfhJb38.d.ts} +1 -1
  50. package/dist/{types-BvCQH8F1.d.ts → types-VOZv9LYO.d.mts} +1 -1
  51. package/dist/{types-BvCQH8F1.d.mts → types-VOZv9LYO.d.ts} +1 -1
  52. package/dist/{types-CmMOt86P.d.ts → types-bfBzGB7S.d.mts} +256 -3
  53. package/package.json +24 -17
  54. package/dist/add-52KP5RUX.mjs +0 -148
  55. package/dist/add-52KP5RUX.mjs.map +0 -1
  56. package/dist/add-7Y6MH725.js +0 -148
  57. package/dist/add-7Y6MH725.js.map +0 -1
  58. package/dist/archive-MHACABLP.js +0 -41
  59. package/dist/archive-MHACABLP.js.map +0 -1
  60. package/dist/archive-ZKTGGFDU.mjs +0 -41
  61. package/dist/archive-ZKTGGFDU.mjs.map +0 -1
  62. package/dist/assign-NCK27ZW5.js +0 -54
  63. package/dist/assign-NCK27ZW5.js.map +0 -1
  64. package/dist/assign-W7HMZLLA.mjs +0 -54
  65. package/dist/assign-W7HMZLLA.mjs.map +0 -1
  66. package/dist/chunk-26WXZOLY.js +0 -70
  67. package/dist/chunk-26WXZOLY.js.map +0 -1
  68. package/dist/chunk-2VVANTLB.js +0 -68
  69. package/dist/chunk-2VVANTLB.js.map +0 -1
  70. package/dist/chunk-2XTZ7GBC.mjs +0 -90
  71. package/dist/chunk-2XTZ7GBC.mjs.map +0 -1
  72. package/dist/chunk-3BDHATON.js +0 -36
  73. package/dist/chunk-3BDHATON.js.map +0 -1
  74. package/dist/chunk-3CPA262Z.mjs +0 -124
  75. package/dist/chunk-3CPA262Z.mjs.map +0 -1
  76. package/dist/chunk-43OERQAS.js +0 -96
  77. package/dist/chunk-43OERQAS.js.map +0 -1
  78. package/dist/chunk-4F3LCT7U.js +0 -42
  79. package/dist/chunk-4F3LCT7U.js.map +0 -1
  80. package/dist/chunk-4VOXYSVX.mjs +0 -196
  81. package/dist/chunk-4VOXYSVX.mjs.map +0 -1
  82. package/dist/chunk-5C7DPGRK.mjs +0 -34
  83. package/dist/chunk-5C7DPGRK.mjs.map +0 -1
  84. package/dist/chunk-5U4XEWEX.mjs +0 -136
  85. package/dist/chunk-5U4XEWEX.mjs.map +0 -1
  86. package/dist/chunk-7YJMKWOH.mjs +0 -80
  87. package/dist/chunk-7YJMKWOH.mjs.map +0 -1
  88. package/dist/chunk-A6HNRJNS.js +0 -92
  89. package/dist/chunk-A6HNRJNS.js.map +0 -1
  90. package/dist/chunk-AJUCX3LD.mjs +0 -40
  91. package/dist/chunk-AJUCX3LD.mjs.map +0 -1
  92. package/dist/chunk-B5TBCV6N.js +0 -96
  93. package/dist/chunk-B5TBCV6N.js.map +0 -1
  94. package/dist/chunk-BAX4W3AY.mjs +0 -62
  95. package/dist/chunk-BAX4W3AY.mjs.map +0 -1
  96. package/dist/chunk-BGYXA2QV.mjs +0 -96
  97. package/dist/chunk-BGYXA2QV.mjs.map +0 -1
  98. package/dist/chunk-BMBIZJCM.js +0 -103
  99. package/dist/chunk-BMBIZJCM.js.map +0 -1
  100. package/dist/chunk-BRPEG3YQ.js +0 -62
  101. package/dist/chunk-BRPEG3YQ.js.map +0 -1
  102. package/dist/chunk-BU2DXABO.mjs +0 -85
  103. package/dist/chunk-BU2DXABO.mjs.map +0 -1
  104. package/dist/chunk-BWALMZEU.mjs +0 -101
  105. package/dist/chunk-BWALMZEU.mjs.map +0 -1
  106. package/dist/chunk-C5Y772G7.js +0 -152
  107. package/dist/chunk-C5Y772G7.js.map +0 -1
  108. package/dist/chunk-C6ZREBUA.js +0 -300
  109. package/dist/chunk-C6ZREBUA.js.map +0 -1
  110. package/dist/chunk-CEJY6QI3.mjs +0 -508
  111. package/dist/chunk-CEJY6QI3.mjs.map +0 -1
  112. package/dist/chunk-CLYXJJ6C.js +0 -66
  113. package/dist/chunk-CLYXJJ6C.js.map +0 -1
  114. package/dist/chunk-COMOCQA6.mjs +0 -13
  115. package/dist/chunk-COMOCQA6.mjs.map +0 -1
  116. package/dist/chunk-DBKEEEEC.js +0 -66
  117. package/dist/chunk-DBKEEEEC.js.map +0 -1
  118. package/dist/chunk-DC7HLQID.mjs +0 -51
  119. package/dist/chunk-DC7HLQID.mjs.map +0 -1
  120. package/dist/chunk-DTEKJ3UD.mjs +0 -66
  121. package/dist/chunk-DTEKJ3UD.mjs.map +0 -1
  122. package/dist/chunk-DZTI6GOB.mjs +0 -36
  123. package/dist/chunk-DZTI6GOB.mjs.map +0 -1
  124. package/dist/chunk-E5ZEMGE7.mjs +0 -63
  125. package/dist/chunk-E5ZEMGE7.mjs.map +0 -1
  126. package/dist/chunk-EGOB3GIL.mjs +0 -156
  127. package/dist/chunk-EGOB3GIL.mjs.map +0 -1
  128. package/dist/chunk-F4FGQZND.mjs +0 -348
  129. package/dist/chunk-F4FGQZND.mjs.map +0 -1
  130. package/dist/chunk-FAXQN7S5.js +0 -68
  131. package/dist/chunk-FAXQN7S5.js.map +0 -1
  132. package/dist/chunk-FG3JQBJB.mjs +0 -68
  133. package/dist/chunk-FG3JQBJB.mjs.map +0 -1
  134. package/dist/chunk-FLYABTMA.js.map +0 -1
  135. package/dist/chunk-FMPW7DZ3.mjs +0 -80
  136. package/dist/chunk-FMPW7DZ3.mjs.map +0 -1
  137. package/dist/chunk-GIT5RVG4.mjs +0 -76
  138. package/dist/chunk-GIT5RVG4.mjs.map +0 -1
  139. package/dist/chunk-GVFRS2UN.mjs.map +0 -1
  140. package/dist/chunk-GW2YXZYN.js.map +0 -1
  141. package/dist/chunk-H2DTN2TK.mjs +0 -70
  142. package/dist/chunk-H2DTN2TK.mjs.map +0 -1
  143. package/dist/chunk-HKFNWLCD.js +0 -663
  144. package/dist/chunk-HKFNWLCD.js.map +0 -1
  145. package/dist/chunk-I2663VLP.js +0 -85
  146. package/dist/chunk-I2663VLP.js.map +0 -1
  147. package/dist/chunk-I6QOTFMP.mjs +0 -53
  148. package/dist/chunk-I6QOTFMP.mjs.map +0 -1
  149. package/dist/chunk-IRBHL4BD.js +0 -80
  150. package/dist/chunk-IRBHL4BD.js.map +0 -1
  151. package/dist/chunk-IRVNIJXP.js +0 -51
  152. package/dist/chunk-IRVNIJXP.js.map +0 -1
  153. package/dist/chunk-IXYZL7U2.js +0 -65
  154. package/dist/chunk-IXYZL7U2.js.map +0 -1
  155. package/dist/chunk-J3KM7ZO7.mjs +0 -152
  156. package/dist/chunk-J3KM7ZO7.mjs.map +0 -1
  157. package/dist/chunk-JBEVRIYW.mjs +0 -894
  158. package/dist/chunk-JBEVRIYW.mjs.map +0 -1
  159. package/dist/chunk-JOLGDU7Q.mjs +0 -65
  160. package/dist/chunk-JOLGDU7Q.mjs.map +0 -1
  161. package/dist/chunk-KT6HZNPV.js +0 -36
  162. package/dist/chunk-KT6HZNPV.js.map +0 -1
  163. package/dist/chunk-KUEKEUKX.mjs +0 -36
  164. package/dist/chunk-KUEKEUKX.mjs.map +0 -1
  165. package/dist/chunk-KW2W5KVS.mjs +0 -22
  166. package/dist/chunk-KW2W5KVS.mjs.map +0 -1
  167. package/dist/chunk-LEJQMDGN.js +0 -894
  168. package/dist/chunk-LEJQMDGN.js.map +0 -1
  169. package/dist/chunk-M3WJZUOE.js +0 -13
  170. package/dist/chunk-M3WJZUOE.js.map +0 -1
  171. package/dist/chunk-M52LTOUT.js +0 -1433
  172. package/dist/chunk-M52LTOUT.js.map +0 -1
  173. package/dist/chunk-MHMMZ653.js +0 -40
  174. package/dist/chunk-MHMMZ653.js.map +0 -1
  175. package/dist/chunk-MLGGUNZK.js +0 -90
  176. package/dist/chunk-MLGGUNZK.js.map +0 -1
  177. package/dist/chunk-N37FLXEP.js +0 -76
  178. package/dist/chunk-N37FLXEP.js.map +0 -1
  179. package/dist/chunk-NC42BNF4.js +0 -63
  180. package/dist/chunk-NC42BNF4.js.map +0 -1
  181. package/dist/chunk-NNPQSPYD.js +0 -348
  182. package/dist/chunk-NNPQSPYD.js.map +0 -1
  183. package/dist/chunk-NW4HASQV.js +0 -80
  184. package/dist/chunk-NW4HASQV.js.map +0 -1
  185. package/dist/chunk-NYCKS3GG.js +0 -20
  186. package/dist/chunk-NYCKS3GG.js.map +0 -1
  187. package/dist/chunk-O444ZEPO.mjs +0 -300
  188. package/dist/chunk-O444ZEPO.mjs.map +0 -1
  189. package/dist/chunk-O75KIBCK.js.map +0 -1
  190. package/dist/chunk-OGAE7BVQ.js +0 -67
  191. package/dist/chunk-OGAE7BVQ.js.map +0 -1
  192. package/dist/chunk-OJ4URNYC.mjs +0 -54
  193. package/dist/chunk-OJ4URNYC.mjs.map +0 -1
  194. package/dist/chunk-ONN7U6WN.js +0 -54
  195. package/dist/chunk-ONN7U6WN.js.map +0 -1
  196. package/dist/chunk-OUJ7Z4TK.mjs +0 -103
  197. package/dist/chunk-OUJ7Z4TK.mjs.map +0 -1
  198. package/dist/chunk-PVOHCPWP.mjs.map +0 -1
  199. package/dist/chunk-PXW5C7HA.js +0 -36
  200. package/dist/chunk-PXW5C7HA.js.map +0 -1
  201. package/dist/chunk-Q7AHHFC3.mjs +0 -20
  202. package/dist/chunk-Q7AHHFC3.mjs.map +0 -1
  203. package/dist/chunk-QAZHQ7SZ.mjs.map +0 -1
  204. package/dist/chunk-R3PLRKDO.mjs +0 -68
  205. package/dist/chunk-R3PLRKDO.mjs.map +0 -1
  206. package/dist/chunk-S4JKLESF.js +0 -124
  207. package/dist/chunk-S4JKLESF.js.map +0 -1
  208. package/dist/chunk-SBBELZKD.js +0 -101
  209. package/dist/chunk-SBBELZKD.js.map +0 -1
  210. package/dist/chunk-SIIRLUO4.js +0 -136
  211. package/dist/chunk-SIIRLUO4.js.map +0 -1
  212. package/dist/chunk-SIXSSID3.mjs +0 -43
  213. package/dist/chunk-SIXSSID3.mjs.map +0 -1
  214. package/dist/chunk-SRGYS3N7.js +0 -196
  215. package/dist/chunk-SRGYS3N7.js.map +0 -1
  216. package/dist/chunk-SUANHT23.mjs +0 -92
  217. package/dist/chunk-SUANHT23.mjs.map +0 -1
  218. package/dist/chunk-SWPMKS2X.mjs +0 -1433
  219. package/dist/chunk-SWPMKS2X.mjs.map +0 -1
  220. package/dist/chunk-T7AFY3JF.js +0 -63
  221. package/dist/chunk-T7AFY3JF.js.map +0 -1
  222. package/dist/chunk-U47MQ6CS.mjs +0 -67
  223. package/dist/chunk-U47MQ6CS.mjs.map +0 -1
  224. package/dist/chunk-U4PE5N4K.js +0 -34
  225. package/dist/chunk-U4PE5N4K.js.map +0 -1
  226. package/dist/chunk-VS22JXRY.js +0 -133
  227. package/dist/chunk-VS22JXRY.js.map +0 -1
  228. package/dist/chunk-W2BNKVWJ.mjs +0 -36
  229. package/dist/chunk-W2BNKVWJ.mjs.map +0 -1
  230. package/dist/chunk-W35QTHIH.mjs +0 -63
  231. package/dist/chunk-W35QTHIH.mjs.map +0 -1
  232. package/dist/chunk-W7DAEYAO.js +0 -53
  233. package/dist/chunk-W7DAEYAO.js.map +0 -1
  234. package/dist/chunk-WZTRPR6A.js +0 -43
  235. package/dist/chunk-WZTRPR6A.js.map +0 -1
  236. package/dist/chunk-X4BHZH7P.js +0 -156
  237. package/dist/chunk-X4BHZH7P.js.map +0 -1
  238. package/dist/chunk-X6NSR74I.mjs +0 -663
  239. package/dist/chunk-X6NSR74I.mjs.map +0 -1
  240. package/dist/chunk-XHQP55GA.mjs +0 -42
  241. package/dist/chunk-XHQP55GA.mjs.map +0 -1
  242. package/dist/chunk-XLJ5GJTK.mjs +0 -42
  243. package/dist/chunk-XLJ5GJTK.mjs.map +0 -1
  244. package/dist/chunk-XMAAQWBG.mjs +0 -96
  245. package/dist/chunk-XMAAQWBG.mjs.map +0 -1
  246. package/dist/chunk-YBLYQYXL.js +0 -22
  247. package/dist/chunk-YBLYQYXL.js.map +0 -1
  248. package/dist/chunk-YF4IFY2X.js +0 -42
  249. package/dist/chunk-YF4IFY2X.js.map +0 -1
  250. package/dist/chunk-YIACSQXG.mjs +0 -66
  251. package/dist/chunk-YIACSQXG.mjs.map +0 -1
  252. package/dist/chunk-YP4LDCP6.mjs +0 -277
  253. package/dist/chunk-YP4LDCP6.mjs.map +0 -1
  254. package/dist/chunk-ZA5BH7IZ.js +0 -277
  255. package/dist/chunk-ZA5BH7IZ.js.map +0 -1
  256. package/dist/chunk-ZFFJYYDN.js +0 -508
  257. package/dist/chunk-ZFFJYYDN.js.map +0 -1
  258. package/dist/cli/index.d.mts +0 -1
  259. package/dist/cli/index.d.ts +0 -1
  260. package/dist/cli/index.js.map +0 -1
  261. package/dist/cli/index.mjs +0 -1334
  262. package/dist/cli/index.mjs.map +0 -1
  263. package/dist/config-QAMXJYXX.js +0 -96
  264. package/dist/config-QAMXJYXX.js.map +0 -1
  265. package/dist/config-VPRQKJMJ.mjs +0 -96
  266. package/dist/config-VPRQKJMJ.mjs.map +0 -1
  267. package/dist/create-2FRM4WVA.mjs +0 -52
  268. package/dist/create-2FRM4WVA.mjs.map +0 -1
  269. package/dist/create-34FEJBYM.js +0 -49
  270. package/dist/create-34FEJBYM.js.map +0 -1
  271. package/dist/create-36DDGEPS.js +0 -50
  272. package/dist/create-36DDGEPS.js.map +0 -1
  273. package/dist/create-3IUBLMI7.mjs +0 -43
  274. package/dist/create-3IUBLMI7.mjs.map +0 -1
  275. package/dist/create-3NCRMEMB.mjs +0 -72
  276. package/dist/create-3NCRMEMB.mjs.map +0 -1
  277. package/dist/create-4GFIXF5E.mjs +0 -58
  278. package/dist/create-4GFIXF5E.mjs.map +0 -1
  279. package/dist/create-4ODQ66VV.mjs +0 -91
  280. package/dist/create-4ODQ66VV.mjs.map +0 -1
  281. package/dist/create-5TFOS2OJ.mjs +0 -42
  282. package/dist/create-5TFOS2OJ.mjs.map +0 -1
  283. package/dist/create-7OBPYNWK.js +0 -42
  284. package/dist/create-7OBPYNWK.js.map +0 -1
  285. package/dist/create-ACC73K6P.mjs +0 -87
  286. package/dist/create-ACC73K6P.mjs.map +0 -1
  287. package/dist/create-DRTKTUVY.js +0 -48
  288. package/dist/create-DRTKTUVY.js.map +0 -1
  289. package/dist/create-DYCE3DG5.mjs +0 -75
  290. package/dist/create-DYCE3DG5.mjs.map +0 -1
  291. package/dist/create-EASGLRR7.js +0 -58
  292. package/dist/create-EASGLRR7.js.map +0 -1
  293. package/dist/create-EBEOJS2H.mjs +0 -50
  294. package/dist/create-EBEOJS2H.mjs.map +0 -1
  295. package/dist/create-FJMGFFCM.mjs +0 -92
  296. package/dist/create-FJMGFFCM.mjs.map +0 -1
  297. package/dist/create-I5INSZYR.mjs +0 -88
  298. package/dist/create-I5INSZYR.mjs.map +0 -1
  299. package/dist/create-IPLFOXBK.js +0 -91
  300. package/dist/create-IPLFOXBK.js.map +0 -1
  301. package/dist/create-IZAVSAXI.js +0 -72
  302. package/dist/create-IZAVSAXI.js.map +0 -1
  303. package/dist/create-P3647AMU.mjs +0 -94
  304. package/dist/create-P3647AMU.mjs.map +0 -1
  305. package/dist/create-PL3BMGB5.js +0 -43
  306. package/dist/create-PL3BMGB5.js.map +0 -1
  307. package/dist/create-Q6WY7YSF.js +0 -52
  308. package/dist/create-Q6WY7YSF.js.map +0 -1
  309. package/dist/create-RGZUQUZO.js +0 -94
  310. package/dist/create-RGZUQUZO.js.map +0 -1
  311. package/dist/create-SPAXSFIN.mjs +0 -88
  312. package/dist/create-SPAXSFIN.mjs.map +0 -1
  313. package/dist/create-SYHW6YGS.js +0 -88
  314. package/dist/create-SYHW6YGS.js.map +0 -1
  315. package/dist/create-T3V4JRJQ.mjs +0 -71
  316. package/dist/create-T3V4JRJQ.mjs.map +0 -1
  317. package/dist/create-TCP2VODP.js +0 -88
  318. package/dist/create-TCP2VODP.js.map +0 -1
  319. package/dist/create-TZ76BDWV.mjs +0 -49
  320. package/dist/create-TZ76BDWV.mjs.map +0 -1
  321. package/dist/create-UKY4IZ7G.js +0 -87
  322. package/dist/create-UKY4IZ7G.js.map +0 -1
  323. package/dist/create-WGU3PIT2.js +0 -71
  324. package/dist/create-WGU3PIT2.js.map +0 -1
  325. package/dist/create-WTO4NPVP.js +0 -75
  326. package/dist/create-WTO4NPVP.js.map +0 -1
  327. package/dist/create-XPJS3IZT.mjs +0 -48
  328. package/dist/create-XPJS3IZT.mjs.map +0 -1
  329. package/dist/create-ZBLKIRIH.js +0 -23
  330. package/dist/create-ZBLKIRIH.js.map +0 -1
  331. package/dist/create-ZU4LXLBN.mjs +0 -23
  332. package/dist/create-ZU4LXLBN.mjs.map +0 -1
  333. package/dist/create-ZW3J4VVP.js +0 -92
  334. package/dist/create-ZW3J4VVP.js.map +0 -1
  335. package/dist/delete-3PMEY5RH.mjs +0 -42
  336. package/dist/delete-3PMEY5RH.mjs.map +0 -1
  337. package/dist/delete-6FRZ6LJJ.mjs +0 -61
  338. package/dist/delete-6FRZ6LJJ.mjs.map +0 -1
  339. package/dist/delete-7KSO3V3O.js +0 -39
  340. package/dist/delete-7KSO3V3O.js.map +0 -1
  341. package/dist/delete-BPKFSXIY.js +0 -52
  342. package/dist/delete-BPKFSXIY.js.map +0 -1
  343. package/dist/delete-BSYUEGEX.js +0 -52
  344. package/dist/delete-BSYUEGEX.js.map +0 -1
  345. package/dist/delete-DOIVCA44.js +0 -52
  346. package/dist/delete-DOIVCA44.js.map +0 -1
  347. package/dist/delete-DSDE42CQ.js +0 -41
  348. package/dist/delete-DSDE42CQ.js.map +0 -1
  349. package/dist/delete-E2O6CPEK.mjs +0 -38
  350. package/dist/delete-E2O6CPEK.mjs.map +0 -1
  351. package/dist/delete-FLA25Y4H.js +0 -39
  352. package/dist/delete-FLA25Y4H.js.map +0 -1
  353. package/dist/delete-G5IYZ6R5.mjs +0 -59
  354. package/dist/delete-G5IYZ6R5.mjs.map +0 -1
  355. package/dist/delete-HZIBPYQY.js +0 -61
  356. package/dist/delete-HZIBPYQY.js.map +0 -1
  357. package/dist/delete-IRJG3K2J.mjs +0 -41
  358. package/dist/delete-IRJG3K2J.mjs.map +0 -1
  359. package/dist/delete-JMX33YI4.mjs +0 -52
  360. package/dist/delete-JMX33YI4.mjs.map +0 -1
  361. package/dist/delete-KNAPRRCM.js +0 -44
  362. package/dist/delete-KNAPRRCM.js.map +0 -1
  363. package/dist/delete-M7EG5VPB.mjs +0 -39
  364. package/dist/delete-M7EG5VPB.mjs.map +0 -1
  365. package/dist/delete-MSAI4E5L.js +0 -52
  366. package/dist/delete-MSAI4E5L.js.map +0 -1
  367. package/dist/delete-NH4NQLFP.mjs +0 -57
  368. package/dist/delete-NH4NQLFP.mjs.map +0 -1
  369. package/dist/delete-NPKRSFGU.js +0 -57
  370. package/dist/delete-NPKRSFGU.js.map +0 -1
  371. package/dist/delete-POZCY7IQ.mjs +0 -52
  372. package/dist/delete-POZCY7IQ.mjs.map +0 -1
  373. package/dist/delete-R2HXHQBB.js +0 -42
  374. package/dist/delete-R2HXHQBB.js.map +0 -1
  375. package/dist/delete-TSXQER52.js +0 -59
  376. package/dist/delete-TSXQER52.js.map +0 -1
  377. package/dist/delete-U655HP5R.mjs +0 -39
  378. package/dist/delete-U655HP5R.mjs.map +0 -1
  379. package/dist/delete-UERL72WN.js +0 -38
  380. package/dist/delete-UERL72WN.js.map +0 -1
  381. package/dist/delete-UTKUA6Z4.mjs +0 -52
  382. package/dist/delete-UTKUA6Z4.mjs.map +0 -1
  383. package/dist/delete-WP3JYGLE.mjs +0 -59
  384. package/dist/delete-WP3JYGLE.mjs.map +0 -1
  385. package/dist/delete-X6JLYJCH.js +0 -59
  386. package/dist/delete-X6JLYJCH.js.map +0 -1
  387. package/dist/delete-XAUAF53M.mjs +0 -52
  388. package/dist/delete-XAUAF53M.mjs.map +0 -1
  389. package/dist/delete-YT3ID37D.mjs +0 -44
  390. package/dist/delete-YT3ID37D.mjs.map +0 -1
  391. package/dist/docs-23TMQCLZ.js +0 -77
  392. package/dist/docs-23TMQCLZ.js.map +0 -1
  393. package/dist/docs-YG2DQVHD.mjs +0 -77
  394. package/dist/docs-YG2DQVHD.mjs.map +0 -1
  395. package/dist/download-F2DXRLJP.mjs +0 -100
  396. package/dist/download-F2DXRLJP.mjs.map +0 -1
  397. package/dist/download-PK2DSPEO.js +0 -100
  398. package/dist/download-PK2DSPEO.js.map +0 -1
  399. package/dist/duplicate-B7OUVDVB.mjs +0 -45
  400. package/dist/duplicate-B7OUVDVB.mjs.map +0 -1
  401. package/dist/duplicate-IGMNYMPS.js +0 -45
  402. package/dist/duplicate-IGMNYMPS.js.map +0 -1
  403. package/dist/export-SNBK2AV4.mjs +0 -103
  404. package/dist/export-SNBK2AV4.mjs.map +0 -1
  405. package/dist/export-VIEFMUVQ.js +0 -103
  406. package/dist/export-VIEFMUVQ.js.map +0 -1
  407. package/dist/get-45ULRVIG.js +0 -49
  408. package/dist/get-45ULRVIG.js.map +0 -1
  409. package/dist/get-4NKLZBDS.mjs +0 -85
  410. package/dist/get-4NKLZBDS.mjs.map +0 -1
  411. package/dist/get-5HAYNLXN.js +0 -85
  412. package/dist/get-5HAYNLXN.js.map +0 -1
  413. package/dist/get-6CNGBUW6.js +0 -71
  414. package/dist/get-6CNGBUW6.js.map +0 -1
  415. package/dist/get-6ECLGAOQ.js +0 -67
  416. package/dist/get-6ECLGAOQ.js.map +0 -1
  417. package/dist/get-ATD54O5U.js +0 -94
  418. package/dist/get-ATD54O5U.js.map +0 -1
  419. package/dist/get-BOXL42XW.mjs +0 -66
  420. package/dist/get-BOXL42XW.mjs.map +0 -1
  421. package/dist/get-C6OSKZH3.js +0 -51
  422. package/dist/get-C6OSKZH3.js.map +0 -1
  423. package/dist/get-C7SCGYAT.js +0 -70
  424. package/dist/get-C7SCGYAT.js.map +0 -1
  425. package/dist/get-CLTPKM7D.mjs +0 -68
  426. package/dist/get-CLTPKM7D.mjs.map +0 -1
  427. package/dist/get-CRGWXOZP.mjs +0 -70
  428. package/dist/get-CRGWXOZP.mjs.map +0 -1
  429. package/dist/get-D6SHECLX.mjs +0 -51
  430. package/dist/get-D6SHECLX.mjs.map +0 -1
  431. package/dist/get-EH37CXA2.js +0 -149
  432. package/dist/get-EH37CXA2.js.map +0 -1
  433. package/dist/get-FBWUXIQN.js +0 -76
  434. package/dist/get-FBWUXIQN.js.map +0 -1
  435. package/dist/get-FCJFZY5M.js +0 -56
  436. package/dist/get-FCJFZY5M.js.map +0 -1
  437. package/dist/get-H3DWTNDA.js +0 -71
  438. package/dist/get-H3DWTNDA.js.map +0 -1
  439. package/dist/get-JKRW7OHW.mjs +0 -52
  440. package/dist/get-JKRW7OHW.mjs.map +0 -1
  441. package/dist/get-KS3QMH5A.mjs +0 -76
  442. package/dist/get-KS3QMH5A.mjs.map +0 -1
  443. package/dist/get-NP6FEVLY.mjs +0 -49
  444. package/dist/get-NP6FEVLY.mjs.map +0 -1
  445. package/dist/get-P7W3V3CB.mjs +0 -52
  446. package/dist/get-P7W3V3CB.mjs.map +0 -1
  447. package/dist/get-QO7VEIRN.mjs +0 -149
  448. package/dist/get-QO7VEIRN.mjs.map +0 -1
  449. package/dist/get-QUXBSMZE.js +0 -52
  450. package/dist/get-QUXBSMZE.js.map +0 -1
  451. package/dist/get-ROAE6T5N.mjs +0 -56
  452. package/dist/get-ROAE6T5N.mjs.map +0 -1
  453. package/dist/get-RYIZPF25.mjs +0 -71
  454. package/dist/get-RYIZPF25.mjs.map +0 -1
  455. package/dist/get-T5BHOLX2.js +0 -68
  456. package/dist/get-T5BHOLX2.js.map +0 -1
  457. package/dist/get-TITUKTHE.mjs +0 -71
  458. package/dist/get-TITUKTHE.mjs.map +0 -1
  459. package/dist/get-UOZBGGCG.mjs +0 -71
  460. package/dist/get-UOZBGGCG.mjs.map +0 -1
  461. package/dist/get-WW7HVSUY.mjs +0 -67
  462. package/dist/get-WW7HVSUY.mjs.map +0 -1
  463. package/dist/get-XDNDTHQU.js +0 -71
  464. package/dist/get-XDNDTHQU.js.map +0 -1
  465. package/dist/get-YPCHKUHM.js +0 -52
  466. package/dist/get-YPCHKUHM.js.map +0 -1
  467. package/dist/get-ZLSHYP57.js +0 -66
  468. package/dist/get-ZLSHYP57.js.map +0 -1
  469. package/dist/get-ZXTDMVWX.mjs +0 -94
  470. package/dist/get-ZXTDMVWX.mjs.map +0 -1
  471. package/dist/health-LCGP7UDT.js +0 -73
  472. package/dist/health-LCGP7UDT.js.map +0 -1
  473. package/dist/health-MCMRR6RQ.mjs +0 -73
  474. package/dist/health-MCMRR6RQ.mjs.map +0 -1
  475. package/dist/ingestion-templates-7TLETXIF.mjs +0 -169
  476. package/dist/ingestion-templates-7TLETXIF.mjs.map +0 -1
  477. package/dist/ingestion-templates-AT5AKWJB.js +0 -169
  478. package/dist/ingestion-templates-AT5AKWJB.js.map +0 -1
  479. package/dist/init-SQ5UUFDM.js +0 -16
  480. package/dist/init-SQ5UUFDM.js.map +0 -1
  481. package/dist/init-UGSR2T2P.mjs +0 -16
  482. package/dist/init-UGSR2T2P.mjs.map +0 -1
  483. package/dist/init-shell-AEPYN2KV.mjs +0 -72
  484. package/dist/init-shell-AEPYN2KV.mjs.map +0 -1
  485. package/dist/init-shell-ULEEQ522.js +0 -72
  486. package/dist/init-shell-ULEEQ522.js.map +0 -1
  487. package/dist/install-PQACVMPW.mjs +0 -191
  488. package/dist/install-PQACVMPW.mjs.map +0 -1
  489. package/dist/install-UAGU7V2O.js +0 -191
  490. package/dist/install-UAGU7V2O.js.map +0 -1
  491. package/dist/list-44QMJJBX.js +0 -82
  492. package/dist/list-44QMJJBX.js.map +0 -1
  493. package/dist/list-45DYTLFR.js +0 -86
  494. package/dist/list-45DYTLFR.js.map +0 -1
  495. package/dist/list-53O3I5OT.js +0 -53
  496. package/dist/list-53O3I5OT.js.map +0 -1
  497. package/dist/list-5RDJDIDE.js +0 -78
  498. package/dist/list-5RDJDIDE.js.map +0 -1
  499. package/dist/list-6ZUZ54WZ.mjs +0 -83
  500. package/dist/list-6ZUZ54WZ.mjs.map +0 -1
  501. package/dist/list-7TJVXJW3.mjs +0 -75
  502. package/dist/list-7TJVXJW3.mjs.map +0 -1
  503. package/dist/list-B5QJP7XO.mjs +0 -122
  504. package/dist/list-B5QJP7XO.mjs.map +0 -1
  505. package/dist/list-BJXU6QSV.js +0 -87
  506. package/dist/list-BJXU6QSV.js.map +0 -1
  507. package/dist/list-C4TIICKC.mjs +0 -82
  508. package/dist/list-C4TIICKC.mjs.map +0 -1
  509. package/dist/list-CH36A6CW.js +0 -80
  510. package/dist/list-CH36A6CW.js.map +0 -1
  511. package/dist/list-CSPHALVP.mjs +0 -111
  512. package/dist/list-CSPHALVP.mjs.map +0 -1
  513. package/dist/list-CSZZQTHD.mjs +0 -82
  514. package/dist/list-CSZZQTHD.mjs.map +0 -1
  515. package/dist/list-DEQI2KOQ.js +0 -72
  516. package/dist/list-DEQI2KOQ.js.map +0 -1
  517. package/dist/list-FJ2T2GJT.js +0 -104
  518. package/dist/list-FJ2T2GJT.js.map +0 -1
  519. package/dist/list-FRLZQVS6.js +0 -71
  520. package/dist/list-FRLZQVS6.js.map +0 -1
  521. package/dist/list-FYKAGJ6V.mjs +0 -87
  522. package/dist/list-FYKAGJ6V.mjs.map +0 -1
  523. package/dist/list-G3ASKJUN.mjs +0 -104
  524. package/dist/list-G3ASKJUN.mjs.map +0 -1
  525. package/dist/list-GGTQOQA4.js +0 -111
  526. package/dist/list-GGTQOQA4.js.map +0 -1
  527. package/dist/list-GL4SXZ2E.js +0 -82
  528. package/dist/list-GL4SXZ2E.js.map +0 -1
  529. package/dist/list-GYJNBKUF.mjs +0 -53
  530. package/dist/list-GYJNBKUF.mjs.map +0 -1
  531. package/dist/list-J33YMH3T.js +0 -78
  532. package/dist/list-J33YMH3T.js.map +0 -1
  533. package/dist/list-J55FWBDR.js +0 -75
  534. package/dist/list-J55FWBDR.js.map +0 -1
  535. package/dist/list-JMX456IB.js +0 -75
  536. package/dist/list-JMX456IB.js.map +0 -1
  537. package/dist/list-KX4MIAJE.mjs +0 -85
  538. package/dist/list-KX4MIAJE.mjs.map +0 -1
  539. package/dist/list-L33MTOSA.mjs +0 -80
  540. package/dist/list-L33MTOSA.mjs.map +0 -1
  541. package/dist/list-LKF24T6D.js +0 -83
  542. package/dist/list-LKF24T6D.js.map +0 -1
  543. package/dist/list-M3IEVLUD.mjs +0 -86
  544. package/dist/list-M3IEVLUD.mjs.map +0 -1
  545. package/dist/list-M77G2Y5F.js +0 -76
  546. package/dist/list-M77G2Y5F.js.map +0 -1
  547. package/dist/list-MSIHIWG5.js +0 -80
  548. package/dist/list-MSIHIWG5.js.map +0 -1
  549. package/dist/list-N4LN7RVG.mjs +0 -90
  550. package/dist/list-N4LN7RVG.mjs.map +0 -1
  551. package/dist/list-OZDM5FA6.mjs +0 -75
  552. package/dist/list-OZDM5FA6.mjs.map +0 -1
  553. package/dist/list-PKDYDBNU.js +0 -75
  554. package/dist/list-PKDYDBNU.js.map +0 -1
  555. package/dist/list-PYQZKUBA.js +0 -85
  556. package/dist/list-PYQZKUBA.js.map +0 -1
  557. package/dist/list-QZZLS5TP.js +0 -78
  558. package/dist/list-QZZLS5TP.js.map +0 -1
  559. package/dist/list-R4SZ3SMF.mjs +0 -78
  560. package/dist/list-R4SZ3SMF.mjs.map +0 -1
  561. package/dist/list-TAFBD6EY.mjs +0 -71
  562. package/dist/list-TAFBD6EY.mjs.map +0 -1
  563. package/dist/list-VJL5TZ4T.mjs +0 -72
  564. package/dist/list-VJL5TZ4T.mjs.map +0 -1
  565. package/dist/list-VKNEMSY4.mjs +0 -80
  566. package/dist/list-VKNEMSY4.mjs.map +0 -1
  567. package/dist/list-WJNJNMQC.mjs +0 -75
  568. package/dist/list-WJNJNMQC.mjs.map +0 -1
  569. package/dist/list-XRW6CP7E.js +0 -90
  570. package/dist/list-XRW6CP7E.js.map +0 -1
  571. package/dist/list-YAR5NB2Q.mjs +0 -76
  572. package/dist/list-YAR5NB2Q.mjs.map +0 -1
  573. package/dist/list-YUYYYQ7E.js +0 -122
  574. package/dist/list-YUYYYQ7E.js.map +0 -1
  575. package/dist/list-Z3YOLIK2.mjs +0 -78
  576. package/dist/list-Z3YOLIK2.mjs.map +0 -1
  577. package/dist/list-Z6OG6DLD.mjs +0 -78
  578. package/dist/list-Z6OG6DLD.mjs.map +0 -1
  579. package/dist/login-7N3FOJOH.mjs +0 -280
  580. package/dist/login-7N3FOJOH.mjs.map +0 -1
  581. package/dist/login-JC4YGO3M.js +0 -280
  582. package/dist/login-JC4YGO3M.js.map +0 -1
  583. package/dist/logout-device-J325Y37F.js +0 -39
  584. package/dist/logout-device-J325Y37F.js.map +0 -1
  585. package/dist/logout-device-JOPQKPFL.mjs +0 -39
  586. package/dist/logout-device-JOPQKPFL.mjs.map +0 -1
  587. package/dist/open-2IGFGDDB.mjs +0 -47
  588. package/dist/open-2IGFGDDB.mjs.map +0 -1
  589. package/dist/open-TCBDPKWM.js +0 -47
  590. package/dist/open-TCBDPKWM.js.map +0 -1
  591. package/dist/pull-GBTWGZX6.js +0 -27
  592. package/dist/pull-GBTWGZX6.js.map +0 -1
  593. package/dist/pull-VHGPIULB.mjs +0 -27
  594. package/dist/pull-VHGPIULB.mjs.map +0 -1
  595. package/dist/push-5CNRDWJU.js +0 -27
  596. package/dist/push-5CNRDWJU.js.map +0 -1
  597. package/dist/push-ZPL2UNNV.mjs +0 -27
  598. package/dist/push-ZPL2UNNV.mjs.map +0 -1
  599. package/dist/query-5R2V74N2.js +0 -122
  600. package/dist/query-5R2V74N2.js.map +0 -1
  601. package/dist/query-PRJT7GQY.mjs +0 -122
  602. package/dist/query-PRJT7GQY.mjs.map +0 -1
  603. package/dist/records-add-E3S34UNT.js +0 -98
  604. package/dist/records-add-E3S34UNT.js.map +0 -1
  605. package/dist/records-add-P2FTGDNL.mjs +0 -98
  606. package/dist/records-add-P2FTGDNL.mjs.map +0 -1
  607. package/dist/records-delete-GCB6S4F3.js +0 -46
  608. package/dist/records-delete-GCB6S4F3.js.map +0 -1
  609. package/dist/records-delete-TZATYNEX.mjs +0 -46
  610. package/dist/records-delete-TZATYNEX.mjs.map +0 -1
  611. package/dist/records-list-AI5CT26J.mjs +0 -89
  612. package/dist/records-list-AI5CT26J.mjs.map +0 -1
  613. package/dist/records-list-XXOWLCZT.js +0 -89
  614. package/dist/records-list-XXOWLCZT.js.map +0 -1
  615. package/dist/records-update-TK3HWM2C.mjs +0 -53
  616. package/dist/records-update-TK3HWM2C.mjs.map +0 -1
  617. package/dist/records-update-ZVKQVZHW.js +0 -53
  618. package/dist/records-update-ZVKQVZHW.js.map +0 -1
  619. package/dist/remove-DPTA2GMZ.js +0 -114
  620. package/dist/remove-DPTA2GMZ.js.map +0 -1
  621. package/dist/remove-XAF4RTKP.mjs +0 -114
  622. package/dist/remove-XAF4RTKP.mjs.map +0 -1
  623. package/dist/rename-AAQZTQCF.mjs +0 -42
  624. package/dist/rename-AAQZTQCF.mjs.map +0 -1
  625. package/dist/rename-YG4P5PRQ.js +0 -42
  626. package/dist/rename-YG4P5PRQ.js.map +0 -1
  627. package/dist/request-increase-FLFEPGIC.js +0 -37
  628. package/dist/request-increase-FLFEPGIC.js.map +0 -1
  629. package/dist/request-increase-NHM27JXH.mjs +0 -37
  630. package/dist/request-increase-NHM27JXH.mjs.map +0 -1
  631. package/dist/restore-6TIHZUPS.js +0 -73
  632. package/dist/restore-6TIHZUPS.js.map +0 -1
  633. package/dist/restore-VJDHJ7Y3.mjs +0 -73
  634. package/dist/restore-VJDHJ7Y3.mjs.map +0 -1
  635. package/dist/revoke-7HUYDQZ6.mjs +0 -44
  636. package/dist/revoke-7HUYDQZ6.mjs.map +0 -1
  637. package/dist/revoke-OHOLPKBQ.js +0 -44
  638. package/dist/revoke-OHOLPKBQ.js.map +0 -1
  639. package/dist/revoke-OQQ56B2Z.js +0 -41
  640. package/dist/revoke-OQQ56B2Z.js.map +0 -1
  641. package/dist/revoke-UUVPYOPV.mjs +0 -41
  642. package/dist/revoke-UUVPYOPV.mjs.map +0 -1
  643. package/dist/rotate-D2QBTQC7.js +0 -52
  644. package/dist/rotate-D2QBTQC7.js.map +0 -1
  645. package/dist/rotate-MU4L6YPU.mjs +0 -52
  646. package/dist/rotate-MU4L6YPU.mjs.map +0 -1
  647. package/dist/run-2KISYEZP.js +0 -83
  648. package/dist/run-2KISYEZP.js.map +0 -1
  649. package/dist/run-ARQ7O43R.js +0 -142
  650. package/dist/run-ARQ7O43R.js.map +0 -1
  651. package/dist/run-D4YIYYTE.mjs +0 -144
  652. package/dist/run-D4YIYYTE.mjs.map +0 -1
  653. package/dist/run-GC3RJI74.mjs +0 -131
  654. package/dist/run-GC3RJI74.mjs.map +0 -1
  655. package/dist/run-HPDENKM2.js +0 -77
  656. package/dist/run-HPDENKM2.js.map +0 -1
  657. package/dist/run-NRODARJS.js +0 -144
  658. package/dist/run-NRODARJS.js.map +0 -1
  659. package/dist/run-PC5KFO4B.mjs +0 -142
  660. package/dist/run-PC5KFO4B.mjs.map +0 -1
  661. package/dist/run-URPG3S24.mjs +0 -83
  662. package/dist/run-URPG3S24.mjs.map +0 -1
  663. package/dist/run-V3O4TEQ2.js +0 -131
  664. package/dist/run-V3O4TEQ2.js.map +0 -1
  665. package/dist/run-WWBEHGYG.mjs +0 -77
  666. package/dist/run-WWBEHGYG.mjs.map +0 -1
  667. package/dist/search-L7IAXT4D.mjs +0 -108
  668. package/dist/search-L7IAXT4D.mjs.map +0 -1
  669. package/dist/search-M34FSP25.js +0 -108
  670. package/dist/search-M34FSP25.js.map +0 -1
  671. package/dist/set-5YJE4NOS.mjs +0 -105
  672. package/dist/set-5YJE4NOS.mjs.map +0 -1
  673. package/dist/set-6QKEZXES.js +0 -59
  674. package/dist/set-6QKEZXES.js.map +0 -1
  675. package/dist/set-ECD6VHQI.js +0 -105
  676. package/dist/set-ECD6VHQI.js.map +0 -1
  677. package/dist/set-X7XDEFU5.mjs +0 -59
  678. package/dist/set-X7XDEFU5.mjs.map +0 -1
  679. package/dist/status-6UGUEKSC.mjs +0 -120
  680. package/dist/status-6UGUEKSC.mjs.map +0 -1
  681. package/dist/status-DOPST7HX.js +0 -120
  682. package/dist/status-DOPST7HX.js.map +0 -1
  683. package/dist/status-GSPWZ255.mjs +0 -56
  684. package/dist/status-GSPWZ255.mjs.map +0 -1
  685. package/dist/status-M4GI2HR3.js +0 -56
  686. package/dist/status-M4GI2HR3.js.map +0 -1
  687. package/dist/status-PXWG34DC.mjs +0 -153
  688. package/dist/status-PXWG34DC.mjs.map +0 -1
  689. package/dist/status-TA4AIE6X.js +0 -153
  690. package/dist/status-TA4AIE6X.js.map +0 -1
  691. package/dist/sync-IVZ5VCKT.js +0 -132
  692. package/dist/sync-IVZ5VCKT.js.map +0 -1
  693. package/dist/sync-JRLKLXA6.mjs +0 -132
  694. package/dist/sync-JRLKLXA6.mjs.map +0 -1
  695. package/dist/tail-CKK6GFNI.js +0 -108
  696. package/dist/tail-CKK6GFNI.js.map +0 -1
  697. package/dist/tail-D26CEKSH.mjs +0 -108
  698. package/dist/tail-D26CEKSH.mjs.map +0 -1
  699. package/dist/unset-GLPKW2JV.js +0 -107
  700. package/dist/unset-GLPKW2JV.js.map +0 -1
  701. package/dist/unset-WSH675SN.mjs +0 -107
  702. package/dist/unset-WSH675SN.mjs.map +0 -1
  703. package/dist/update-3EI6SA7W.mjs +0 -65
  704. package/dist/update-3EI6SA7W.mjs.map +0 -1
  705. package/dist/update-3YLN3YXF.mjs +0 -83
  706. package/dist/update-3YLN3YXF.mjs.map +0 -1
  707. package/dist/update-4DSTSBSA.js +0 -51
  708. package/dist/update-4DSTSBSA.js.map +0 -1
  709. package/dist/update-4IRKH5VI.js +0 -48
  710. package/dist/update-4IRKH5VI.js.map +0 -1
  711. package/dist/update-62D6MLES.mjs +0 -79
  712. package/dist/update-62D6MLES.mjs.map +0 -1
  713. package/dist/update-7YUF7UJG.js +0 -61
  714. package/dist/update-7YUF7UJG.js.map +0 -1
  715. package/dist/update-AS7FCV5B.mjs +0 -61
  716. package/dist/update-AS7FCV5B.mjs.map +0 -1
  717. package/dist/update-BNJEOWPP.mjs +0 -71
  718. package/dist/update-BNJEOWPP.mjs.map +0 -1
  719. package/dist/update-CU4Z6XQR.mjs +0 -106
  720. package/dist/update-CU4Z6XQR.mjs.map +0 -1
  721. package/dist/update-DSRRR6J7.js +0 -76
  722. package/dist/update-DSRRR6J7.js.map +0 -1
  723. package/dist/update-E6BQSBVN.mjs +0 -63
  724. package/dist/update-E6BQSBVN.mjs.map +0 -1
  725. package/dist/update-ELVULBIN.mjs +0 -63
  726. package/dist/update-ELVULBIN.mjs.map +0 -1
  727. package/dist/update-EWBAZK64.mjs +0 -48
  728. package/dist/update-EWBAZK64.mjs.map +0 -1
  729. package/dist/update-EWS5LIXP.mjs +0 -51
  730. package/dist/update-EWS5LIXP.mjs.map +0 -1
  731. package/dist/update-G2LS465K.js +0 -65
  732. package/dist/update-G2LS465K.js.map +0 -1
  733. package/dist/update-GEKVSLEY.js +0 -79
  734. package/dist/update-GEKVSLEY.js.map +0 -1
  735. package/dist/update-GFAZJBC2.mjs +0 -75
  736. package/dist/update-GFAZJBC2.mjs.map +0 -1
  737. package/dist/update-JJDVXFLD.mjs +0 -48
  738. package/dist/update-JJDVXFLD.mjs.map +0 -1
  739. package/dist/update-JXSPKDKA.mjs +0 -66
  740. package/dist/update-JXSPKDKA.mjs.map +0 -1
  741. package/dist/update-KDJ64TZ2.js +0 -48
  742. package/dist/update-KDJ64TZ2.js.map +0 -1
  743. package/dist/update-MF56UHWY.js +0 -106
  744. package/dist/update-MF56UHWY.js.map +0 -1
  745. package/dist/update-MTHJCYKT.js +0 -63
  746. package/dist/update-MTHJCYKT.js.map +0 -1
  747. package/dist/update-NGJUN2VK.mjs +0 -76
  748. package/dist/update-NGJUN2VK.mjs.map +0 -1
  749. package/dist/update-SFGJMGKD.js +0 -75
  750. package/dist/update-SFGJMGKD.js.map +0 -1
  751. package/dist/update-SZNXZ7Y3.js +0 -83
  752. package/dist/update-SZNXZ7Y3.js.map +0 -1
  753. package/dist/update-UJYDVNOF.js +0 -63
  754. package/dist/update-UJYDVNOF.js.map +0 -1
  755. package/dist/update-XNHGNAQL.js +0 -66
  756. package/dist/update-XNHGNAQL.js.map +0 -1
  757. package/dist/update-YA6C47QH.js +0 -71
  758. package/dist/update-YA6C47QH.js.map +0 -1
  759. package/dist/upload-FXQRYNQC.js +0 -80
  760. package/dist/upload-FXQRYNQC.js.map +0 -1
  761. package/dist/upload-LERNY5WA.mjs +0 -80
  762. package/dist/upload-LERNY5WA.mjs.map +0 -1
  763. package/dist/versions-FI44YDAP.js +0 -85
  764. package/dist/versions-FI44YDAP.js.map +0 -1
  765. package/dist/versions-HP6HA2TT.mjs +0 -85
  766. package/dist/versions-HP6HA2TT.mjs.map +0 -1
  767. package/dist/whoami-EI52YRCH.js +0 -30
  768. package/dist/whoami-EI52YRCH.js.map +0 -1
  769. package/dist/whoami-KGRA4QEY.mjs +0 -30
  770. package/dist/whoami-KGRA4QEY.mjs.map +0 -1
  771. package/dist/wrap-G3UCHRFN.mjs +0 -34
  772. package/dist/wrap-G3UCHRFN.mjs.map +0 -1
  773. package/dist/wrap-SJHGCERM.js +0 -34
  774. package/dist/wrap-SJHGCERM.js.map +0 -1
  775. /package/dist/{chunk-YQNOLNAK.mjs.map → chunk-2O4ILSP5.mjs.map} +0 -0
@@ -1,277 +0,0 @@
1
- import {
2
- __spreadProps,
3
- __spreadValues
4
- } from "./chunk-BAX4W3AY.mjs";
5
-
6
- // src/cli/utils/governance/surface.ts
7
- var CLI_SURFACE_HEADER = "X-LangWatch-Surface";
8
- var CLI_SURFACE_VALUE = "cli";
9
-
10
- // src/cli/utils/governance/cli-api.ts
11
- var GovernanceCliError = class extends Error {
12
- constructor(status, code, message) {
13
- super(message);
14
- this.status = status;
15
- this.code = code;
16
- this.name = "GovernanceCliError";
17
- }
18
- };
19
- async function getJSON(cfg, path, opts = {}) {
20
- var _a, _b, _c;
21
- if (!cfg.access_token) {
22
- throw new GovernanceCliError(
23
- 401,
24
- "not_logged_in",
25
- "Not logged in. Run `langwatch login --device` first."
26
- );
27
- }
28
- const url = cfg.control_plane_url.replace(/\/+$/, "") + path;
29
- const f = (_a = opts.fetchImpl) != null ? _a : fetch;
30
- const res = await f(url, {
31
- method: "GET",
32
- headers: {
33
- Authorization: `Bearer ${cfg.access_token}`,
34
- Accept: "application/json"
35
- }
36
- });
37
- if (res.status === 401) {
38
- throw new GovernanceCliError(
39
- 401,
40
- "unauthorized",
41
- "Session expired \u2014 run `langwatch login --device` again"
42
- );
43
- }
44
- if (res.status === 402) {
45
- const body = await res.json().catch(() => ({}));
46
- const description = (_b = body.error_description) != null ? _b : "This feature requires an Enterprise plan";
47
- const upgrade = body.upgrade_url ? `
48
-
49
- Upgrade your organization at:
50
- ${body.upgrade_url}` : "";
51
- throw new GovernanceCliError(
52
- 402,
53
- "payment_required",
54
- `${description}${upgrade}`
55
- );
56
- }
57
- if (res.status === 404) {
58
- const body = await res.json().catch(() => ({}));
59
- throw new GovernanceCliError(
60
- 404,
61
- "not_found",
62
- (_c = body.error_description) != null ? _c : "Not found"
63
- );
64
- }
65
- if (!res.ok) {
66
- const body = await res.text().catch(() => "");
67
- throw new GovernanceCliError(
68
- res.status,
69
- "other",
70
- `${res.status} ${body.slice(0, 200)}`
71
- );
72
- }
73
- return await res.json();
74
- }
75
- async function listIngestionSources(cfg, options = {}) {
76
- const qs = options.includeArchived ? "?include_archived=1" : "";
77
- const body = await getJSON(
78
- cfg,
79
- `/api/auth/cli/governance/ingest/sources${qs}`,
80
- options
81
- );
82
- return body.sources;
83
- }
84
- async function getEventsForSource(cfg, sourceId, options = {}) {
85
- const params = new URLSearchParams();
86
- if (options.limit) params.set("limit", String(options.limit));
87
- if (options.beforeIso) params.set("before_iso", options.beforeIso);
88
- const qs = params.toString() ? `?${params.toString()}` : "";
89
- const body = await getJSON(
90
- cfg,
91
- `/api/auth/cli/governance/ingest/sources/${encodeURIComponent(
92
- sourceId
93
- )}/events${qs}`,
94
- options
95
- );
96
- return body.events;
97
- }
98
- async function getSourceHealth(cfg, sourceId, options = {}) {
99
- return getJSON(
100
- cfg,
101
- `/api/auth/cli/governance/ingest/sources/${encodeURIComponent(
102
- sourceId
103
- )}/health`,
104
- options
105
- );
106
- }
107
- async function getGovernanceStatus(cfg, options = {}) {
108
- return getJSON(cfg, `/api/auth/cli/governance/status`, options);
109
- }
110
- async function getCliBootstrap(cfg, options = {}) {
111
- try {
112
- return await getJSON(
113
- cfg,
114
- `/api/auth/cli/bootstrap`,
115
- options
116
- );
117
- } catch (err) {
118
- if (err instanceof GovernanceCliError && err.status === 404) {
119
- return null;
120
- }
121
- throw err;
122
- }
123
- }
124
- async function requestREST(cfg, method, path, options = {}) {
125
- var _a, _b, _c, _d, _e, _f, _g;
126
- if (!cfg.access_token) {
127
- throw new GovernanceCliError(
128
- 401,
129
- "not_logged_in",
130
- "Not logged in. Run `langwatch login --device` first."
131
- );
132
- }
133
- const url = cfg.control_plane_url.replace(/\/+$/, "") + path;
134
- const f = (_a = options.fetchImpl) != null ? _a : fetch;
135
- const headers = {
136
- Authorization: `Bearer ${cfg.access_token}`,
137
- Accept: "application/json"
138
- };
139
- if (options.mutating) {
140
- headers[CLI_SURFACE_HEADER] = CLI_SURFACE_VALUE;
141
- }
142
- if (options.body !== void 0) {
143
- headers["Content-Type"] = "application/json";
144
- }
145
- const res = await f(url, {
146
- method,
147
- headers,
148
- body: options.body !== void 0 ? JSON.stringify(options.body) : void 0
149
- });
150
- if (res.status === 204) return void 0;
151
- if (res.status === 401) {
152
- throw new GovernanceCliError(
153
- 401,
154
- "unauthorized",
155
- "Session expired \u2014 run `langwatch login --device` again"
156
- );
157
- }
158
- if (res.status === 403) {
159
- const body = await res.json().catch(() => ({}));
160
- throw new GovernanceCliError(
161
- 403,
162
- (_c = (_b = body.error) == null ? void 0 : _b.code) != null ? _c : "forbidden",
163
- (_e = (_d = body.error) == null ? void 0 : _d.message) != null ? _e : "Forbidden"
164
- );
165
- }
166
- if (res.status === 404) {
167
- const body = await res.json().catch(() => ({}));
168
- throw new GovernanceCliError(
169
- 404,
170
- "not_found",
171
- (_g = (_f = body.error) == null ? void 0 : _f.message) != null ? _g : "Not found"
172
- );
173
- }
174
- if (!res.ok) {
175
- const body = await res.text().catch(() => "");
176
- throw new GovernanceCliError(
177
- res.status,
178
- "other",
179
- `${res.status} ${body.slice(0, 200)}`
180
- );
181
- }
182
- return await res.json();
183
- }
184
- async function mintIngestionKey(cfg, sourceType, options = {}) {
185
- return requestREST(
186
- cfg,
187
- "POST",
188
- "/api/auth/cli/governance/ingestion-key",
189
- __spreadProps(__spreadValues({}, options), { body: { source_type: sourceType }, mutating: true })
190
- );
191
- }
192
- function extractLookupIdFromToken(token) {
193
- const match = /^ik-lw-([^_]+)_/.exec(token);
194
- return match == null ? void 0 : match[1];
195
- }
196
- async function listIngestionKeys(cfg, options = {}) {
197
- const body = await requestREST(cfg, "GET", "/api/auth/cli/governance/ingestion-keys", options);
198
- return body.keys.map((k) => ({
199
- sourceType: k.source_type,
200
- lookupId: k.lookup_id
201
- }));
202
- }
203
- async function adminListIngestionTemplates(cfg, options = {}) {
204
- const body = await requestREST(
205
- cfg,
206
- "GET",
207
- "/api/governance/ingestion-templates/admin",
208
- options
209
- );
210
- return body.ingestion_templates;
211
- }
212
- async function getIngestionTemplate(cfg, id, options = {}) {
213
- const body = await requestREST(
214
- cfg,
215
- "GET",
216
- `/api/governance/ingestion-templates/${encodeURIComponent(id)}`,
217
- options
218
- );
219
- return body.ingestion_template;
220
- }
221
- async function createIngestionTemplate(cfg, input, options = {}) {
222
- const body = await requestREST(
223
- cfg,
224
- "POST",
225
- "/api/governance/ingestion-templates",
226
- __spreadProps(__spreadValues({}, options), { body: input, mutating: true })
227
- );
228
- return body.ingestion_template;
229
- }
230
- async function updateIngestionTemplateOttlRules(cfg, id, ottlRules, options = {}) {
231
- const body = await requestREST(
232
- cfg,
233
- "PATCH",
234
- `/api/governance/ingestion-templates/${encodeURIComponent(id)}/ottl-rules`,
235
- __spreadProps(__spreadValues({}, options), { body: { ottl_rules: ottlRules }, mutating: true })
236
- );
237
- return body.ingestion_template;
238
- }
239
- async function archiveIngestionTemplate(cfg, id, options = {}) {
240
- return requestREST(
241
- cfg,
242
- "DELETE",
243
- `/api/governance/ingestion-templates/${encodeURIComponent(id)}`,
244
- __spreadProps(__spreadValues({}, options), { mutating: true })
245
- );
246
- }
247
- async function cloneIngestionTemplateFromPlatform(cfg, sourceTemplateId, options = {}) {
248
- const body = await requestREST(
249
- cfg,
250
- "POST",
251
- "/api/governance/ingestion-templates/clone-from-platform",
252
- __spreadProps(__spreadValues({}, options), {
253
- body: { source_template_id: sourceTemplateId },
254
- mutating: true
255
- })
256
- );
257
- return body.ingestion_template;
258
- }
259
-
260
- export {
261
- GovernanceCliError,
262
- listIngestionSources,
263
- getEventsForSource,
264
- getSourceHealth,
265
- getGovernanceStatus,
266
- getCliBootstrap,
267
- mintIngestionKey,
268
- extractLookupIdFromToken,
269
- listIngestionKeys,
270
- adminListIngestionTemplates,
271
- getIngestionTemplate,
272
- createIngestionTemplate,
273
- updateIngestionTemplateOttlRules,
274
- archiveIngestionTemplate,
275
- cloneIngestionTemplateFromPlatform
276
- };
277
- //# sourceMappingURL=chunk-YP4LDCP6.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/utils/governance/surface.ts","../src/cli/utils/governance/cli-api.ts"],"sourcesContent":["/**\n * Mirror of `GovernanceCallSurface` from the langwatch app\n * (ee/governance/services/auditSurface.ts). Kept as a hand-written\n * type alias rather than imported because the CLI package doesn't\n * pull from the langwatch source tree.\n *\n * The CLI only ever sends \"cli\" — the other values are documented\n * here so the type stays informational + so any future SDK regen\n * targeting governance audit metadata picks up the canonical set.\n */\nexport type GovernanceCallSurface = \"trpc\" | \"hono\" | \"cli\" | \"mcp\";\n\nexport const CLI_SURFACE_HEADER = \"X-LangWatch-Surface\" as const;\nexport const CLI_SURFACE_VALUE: GovernanceCallSurface = \"cli\";\n","/**\n * Thin REST client for governance endpoints used by the\n * `langwatch governance ...` CLI namespace.\n *\n * Two transports live in this file:\n *\n * 1. `/api/auth/cli/governance/*` — CLI-specific read proxies for\n * activity monitor + status that pre-date the public REST\n * surface. Read-only.\n * 2. `/api/governance/*` — the public REST contract for\n * IngestionTemplate CRUD plus the device-session ingestion-key\n * mint route. The CLI sends `X-LangWatch-Surface: cli` so audit\n * rows land with `metadata.surface = 'cli'` per @audit-uniform.\n */\n\nimport { type GovernanceConfig } from \"./config\";\nimport type { PlatformToolPolicyMap } from \"./platform-tool-policy\";\nimport {\n CLI_SURFACE_HEADER,\n CLI_SURFACE_VALUE,\n} from \"./surface\";\n\nexport interface IngestionSourceSummary {\n id: string;\n name: string;\n sourceType: string;\n description: string | null;\n status: string;\n lastEventAt: string | null;\n createdAt: string;\n archivedAt: string | null;\n}\n\nexport interface ActivityEventDetailRow {\n eventId: string;\n eventType: string;\n actor: string;\n action: string;\n target: string;\n costUsd: number;\n tokensInput: number;\n tokensOutput: number;\n eventTimestampIso: string;\n ingestedAtIso: string;\n rawPayload: string;\n}\n\nexport interface SourceHealthMetrics {\n events24h: number;\n events7d: number;\n events30d: number;\n lastSuccessIso: string | null;\n}\n\nexport interface GovernanceSetupState {\n hasPersonalVKs: boolean;\n hasRoutingPolicies: boolean;\n hasIngestionSources: boolean;\n hasAnomalyRules: boolean;\n hasRecentActivity: boolean;\n governanceActive: boolean;\n}\n\nexport class GovernanceCliError extends Error {\n constructor(\n public readonly status: number,\n public readonly code: string,\n message: string,\n ) {\n super(message);\n this.name = \"GovernanceCliError\";\n }\n}\n\nexport interface CliApiOptions {\n fetchImpl?: typeof fetch;\n}\n\nasync function getJSON<T>(\n cfg: GovernanceConfig,\n path: string,\n opts: CliApiOptions = {},\n): Promise<T> {\n if (!cfg.access_token) {\n throw new GovernanceCliError(\n 401,\n \"not_logged_in\",\n \"Not logged in. Run `langwatch login --device` first.\",\n );\n }\n const url = cfg.control_plane_url.replace(/\\/+$/, \"\") + path;\n const f = opts.fetchImpl ?? fetch;\n const res = await f(url, {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${cfg.access_token}`,\n Accept: \"application/json\",\n },\n });\n if (res.status === 401) {\n throw new GovernanceCliError(\n 401,\n \"unauthorized\",\n \"Session expired — run `langwatch login --device` again\",\n );\n }\n if (res.status === 402) {\n const body = (await res.json().catch(() => ({}))) as {\n error_description?: string;\n upgrade_url?: string;\n };\n const description =\n body.error_description ?? \"This feature requires an Enterprise plan\";\n const upgrade = body.upgrade_url\n ? `\\n\\n Upgrade your organization at:\\n ${body.upgrade_url}`\n : \"\";\n throw new GovernanceCliError(\n 402,\n \"payment_required\",\n `${description}${upgrade}`,\n );\n }\n if (res.status === 404) {\n const body = (await res.json().catch(() => ({}))) as {\n error_description?: string;\n };\n throw new GovernanceCliError(\n 404,\n \"not_found\",\n body.error_description ?? \"Not found\",\n );\n }\n if (!res.ok) {\n const body = await res.text().catch(() => \"\");\n throw new GovernanceCliError(\n res.status,\n \"other\",\n `${res.status} ${body.slice(0, 200)}`,\n );\n }\n return (await res.json()) as T;\n}\n\nexport async function listIngestionSources(\n cfg: GovernanceConfig,\n options: { includeArchived?: boolean } & CliApiOptions = {},\n): Promise<IngestionSourceSummary[]> {\n const qs = options.includeArchived ? \"?include_archived=1\" : \"\";\n const body = await getJSON<{ sources: IngestionSourceSummary[] }>(\n cfg,\n `/api/auth/cli/governance/ingest/sources${qs}`,\n options,\n );\n return body.sources;\n}\n\nexport async function getEventsForSource(\n cfg: GovernanceConfig,\n sourceId: string,\n options: { limit?: number; beforeIso?: string } & CliApiOptions = {},\n): Promise<ActivityEventDetailRow[]> {\n const params = new URLSearchParams();\n if (options.limit) params.set(\"limit\", String(options.limit));\n if (options.beforeIso) params.set(\"before_iso\", options.beforeIso);\n const qs = params.toString() ? `?${params.toString()}` : \"\";\n const body = await getJSON<{ events: ActivityEventDetailRow[] }>(\n cfg,\n `/api/auth/cli/governance/ingest/sources/${encodeURIComponent(\n sourceId,\n )}/events${qs}`,\n options,\n );\n return body.events;\n}\n\nexport async function getSourceHealth(\n cfg: GovernanceConfig,\n sourceId: string,\n options: CliApiOptions = {},\n): Promise<{\n source: { id: string; name: string; status: string };\n health: SourceHealthMetrics;\n}> {\n return getJSON(\n cfg,\n `/api/auth/cli/governance/ingest/sources/${encodeURIComponent(\n sourceId,\n )}/health`,\n options,\n );\n}\n\nexport async function getGovernanceStatus(\n cfg: GovernanceConfig,\n options: CliApiOptions = {},\n): Promise<{ setup: GovernanceSetupState }> {\n return getJSON(cfg, `/api/auth/cli/governance/status`, options);\n}\n\n/**\n * A coding assistant the member can run via `langwatch <slug>`. Sourced from\n * the org's published coding_assistant catalog tiles, so the CLI only offers\n * tools the org actually publishes.\n */\nexport interface CliBootstrapTool {\n slug: string;\n displayName: string;\n}\n\n/**\n * A model provider the member can mint a personal virtual key for. Sourced\n * from the org's published model_provider catalog tiles. Distinct from a\n * tool: a provider backs a virtual key, a tool is a coding assistant you run.\n */\nexport interface CliBootstrapProvider {\n name: string;\n displayName: string;\n configured: boolean;\n}\n\nexport interface CliBootstrapBudget {\n monthlyLimitUsd: number | null;\n monthlyUsedUsd: number;\n period: string;\n}\n\nexport interface CliBootstrapResponse {\n /**\n * Coding assistants the member can run via `langwatch <slug>`. Empty when\n * the org has published no coding-assistant tiles; the ceremony then falls\n * back to its built-in default wrapper list. `undefined` on legacy servers\n * without the field (same fallback).\n */\n tools?: CliBootstrapTool[];\n providers: CliBootstrapProvider[];\n /**\n * Provider families (e.g. \"openai\") for which the org has a live, enabled\n * credential the caller can reach - independent of whether a model_provider\n * catalog tile was published. This is what the gateway can actually route\n * through, so the wrapper preflight gates the gateway path on this, NOT on\n * `providers` (which is the admin-curated mint-your-own-VK catalog).\n * `undefined` on legacy servers without the field; the wrapper then falls\n * back to the `providers` tile list for the check.\n */\n gatewayProviders?: string[];\n budget: CliBootstrapBudget;\n /**\n * Server-authoritative gateway base URL. Sourced from the backend's\n * `LW_GATEWAY_BASE_URL` (or its self-hosted/SaaS-aware fallback).\n * Older self-hosted servers without this field fall back to the\n * CLI's local config default — so undefined is the legacy shape, not\n * an error.\n */\n gatewayUrl?: string;\n /**\n * First org admin's email (by createdAt). Rendered as a mailto in\n * wrapper preflight failure messages so non-admin users get a real\n * contact path instead of a vague \"ask your admin\". `null` when the\n * org has no admin yet; `undefined` on legacy servers without the\n * field (CLI falls back to a generic line).\n */\n adminEmail?: string | null;\n /**\n * Per-(org, tool) path policy map (claude/codex/gemini/opencode/cursor\n * → {allowVk, allowOtelDirect}). The CLI caches this into\n * `cfg.tool_policies` so the wrapper gates path selection on the org's\n * admin choices. `undefined` on legacy servers without the field; the\n * wrapper then falls back to hardcoded defaults.\n */\n toolPolicies?: PlatformToolPolicyMap;\n}\n\n/**\n * Fetch the Storyboard Screen 4 ceremony enrichment data —\n * inheritable providers + the user's effective monthly budget.\n *\n * Backend tRPC source: `api.user.cliBootstrap` (Sergey 32cad11ae).\n * REST adapter: `/api/auth/cli/bootstrap` (queued backend follow-up).\n *\n * Graceful degrade: returns null on 404 (older self-hosted server\n * without the REST endpoint) so the CLI ceremony falls back to the\n * basic header + try-it block. Other errors still throw so they can\n * be logged at the call site.\n */\nexport async function getCliBootstrap(\n cfg: GovernanceConfig,\n options: CliApiOptions = {},\n): Promise<CliBootstrapResponse | null> {\n try {\n return await getJSON<CliBootstrapResponse>(\n cfg,\n `/api/auth/cli/bootstrap`,\n options,\n );\n } catch (err) {\n if (err instanceof GovernanceCliError && err.status === 404) {\n return null;\n }\n throw err;\n }\n}\n\n// ── Public REST: /api/governance/* ─────────────────────────────────────────\n//\n// IngestionTemplate CRUD Hono routes. Wire shape is snake_case in/out.\n// All mutating calls send X-LangWatch-Surface: cli per @audit-uniform.\n\nexport interface IngestionTemplateRow {\n id: string;\n organization_id: string | null;\n slug: string;\n source_type: string;\n display_name: string;\n description: string | null;\n icon_asset: string | null;\n credential_schema: string | null;\n ottl_rules: string;\n platform_published: boolean;\n enabled: boolean;\n}\n\ntype RestMethod = \"GET\" | \"POST\" | \"PATCH\" | \"DELETE\";\n\nasync function requestREST<T>(\n cfg: GovernanceConfig,\n method: RestMethod,\n path: string,\n options: { body?: unknown; mutating?: boolean } & CliApiOptions = {},\n): Promise<T> {\n if (!cfg.access_token) {\n throw new GovernanceCliError(\n 401,\n \"not_logged_in\",\n \"Not logged in. Run `langwatch login --device` first.\",\n );\n }\n const url = cfg.control_plane_url.replace(/\\/+$/, \"\") + path;\n const f = options.fetchImpl ?? fetch;\n const headers: Record<string, string> = {\n Authorization: `Bearer ${cfg.access_token}`,\n Accept: \"application/json\",\n };\n if (options.mutating) {\n headers[CLI_SURFACE_HEADER] = CLI_SURFACE_VALUE;\n }\n if (options.body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n const res = await f(url, {\n method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n });\n if (res.status === 204) return undefined as T;\n if (res.status === 401) {\n throw new GovernanceCliError(\n 401,\n \"unauthorized\",\n \"Session expired — run `langwatch login --device` again\",\n );\n }\n if (res.status === 403) {\n const body = (await res.json().catch(() => ({}))) as {\n error?: { message?: string; code?: string };\n };\n throw new GovernanceCliError(\n 403,\n body.error?.code ?? \"forbidden\",\n body.error?.message ?? \"Forbidden\",\n );\n }\n if (res.status === 404) {\n const body = (await res.json().catch(() => ({}))) as {\n error?: { message?: string };\n };\n throw new GovernanceCliError(\n 404,\n \"not_found\",\n body.error?.message ?? \"Not found\",\n );\n }\n if (!res.ok) {\n const body = await res.text().catch(() => \"\");\n throw new GovernanceCliError(\n res.status,\n \"other\",\n `${res.status} ${body.slice(0, 200)}`,\n );\n }\n return (await res.json()) as T;\n}\n\n// Ingestion key minting ------------------------------------------------------\n\n/**\n * Mint a personal-project ingest-only ApiKey (the `sk-lw-<...>` shape)\n * for a wrapped tool. Returns the plaintext key (shown once) plus the\n * OTLP endpoint the caller should point the tool's exporter at.\n *\n * Device-session adapter route under /api/auth/cli/governance/* so the\n * wrapper's auto-mint flow works with the device-session\n * cfg.access_token (lw_at_*). The public REST mounted under\n * createProjectApp rejects Bearer access tokens with 401, so the CLI\n * uses the mirror route, same as the (now-retired) binding flow did.\n */\nexport async function mintIngestionKey(\n cfg: GovernanceConfig,\n sourceType: string,\n options: CliApiOptions = {},\n): Promise<{ token: string; prefix: string; endpoint: string }> {\n return requestREST<{ token: string; prefix: string; endpoint: string }>(\n cfg,\n \"POST\",\n \"/api/auth/cli/governance/ingestion-key\",\n { ...options, body: { source_type: sourceType }, mutating: true },\n );\n}\n\n\n/**\n * Extracts the 16-char lookupId from an ingestion token.\n * Token format: `ik-lw-{16-char lookupId}_{secret}`.\n * Returns the lookupId string, or undefined when the token doesn't match the\n * expected format (older token shapes, malformed cache entries).\n */\nexport function extractLookupIdFromToken(token: string): string | undefined {\n const match = /^ik-lw-([^_]+)_/.exec(token);\n return match?.[1];\n}\n\n// Ingestion key listing -------------------------------------------------------\n\n/**\n * Lists all live (non-revoked) personal-project ingestion keys for the\n * caller's org. Used as a cache-liveness preflight (#4755): before reusing a\n * locally cached token, the wrapper calls this to confirm the key is still\n * active. If the server resolves and the cached lookupId is absent → the key\n * was revoked → mint fresh. If the call rejects (offline / older server) →\n * reuse the cache as-is (offline-first fallback).\n */\nexport async function listIngestionKeys(\n cfg: GovernanceConfig,\n options: CliApiOptions = {},\n): Promise<{ sourceType: string; lookupId: string }[]> {\n const body = await requestREST<{\n keys: Array<{\n source_type: string;\n lookup_id: string;\n ingestion_template_id: string | null;\n }>;\n }>(cfg, \"GET\", \"/api/auth/cli/governance/ingestion-keys\", options);\n return body.keys.map((k) => ({\n sourceType: k.source_type,\n lookupId: k.lookup_id,\n }));\n}\n\n// IngestionTemplate verbs ----------------------------------------------------\n\nexport async function adminListIngestionTemplates(\n cfg: GovernanceConfig,\n options: CliApiOptions = {},\n): Promise<IngestionTemplateRow[]> {\n const body = await requestREST<{ ingestion_templates: IngestionTemplateRow[] }>(\n cfg,\n \"GET\",\n \"/api/governance/ingestion-templates/admin\",\n options,\n );\n return body.ingestion_templates;\n}\n\nexport async function getIngestionTemplate(\n cfg: GovernanceConfig,\n id: string,\n options: CliApiOptions = {},\n): Promise<IngestionTemplateRow> {\n const body = await requestREST<{ ingestion_template: IngestionTemplateRow }>(\n cfg,\n \"GET\",\n `/api/governance/ingestion-templates/${encodeURIComponent(id)}`,\n options,\n );\n return body.ingestion_template;\n}\n\nexport async function createIngestionTemplate(\n cfg: GovernanceConfig,\n input: {\n source_type: string;\n display_name: string;\n description?: string;\n icon_asset?: string;\n credential_schema?: \"otlp_token\" | \"static_api_key\" | \"agent_id\" | null;\n ottl_rules?: string;\n },\n options: CliApiOptions = {},\n): Promise<IngestionTemplateRow> {\n const body = await requestREST<{ ingestion_template: IngestionTemplateRow }>(\n cfg,\n \"POST\",\n \"/api/governance/ingestion-templates\",\n { ...options, body: input, mutating: true },\n );\n return body.ingestion_template;\n}\n\nexport async function updateIngestionTemplateOttlRules(\n cfg: GovernanceConfig,\n id: string,\n ottlRules: string,\n options: CliApiOptions = {},\n): Promise<IngestionTemplateRow> {\n const body = await requestREST<{ ingestion_template: IngestionTemplateRow }>(\n cfg,\n \"PATCH\",\n `/api/governance/ingestion-templates/${encodeURIComponent(id)}/ottl-rules`,\n { ...options, body: { ottl_rules: ottlRules }, mutating: true },\n );\n return body.ingestion_template;\n}\n\nexport async function archiveIngestionTemplate(\n cfg: GovernanceConfig,\n id: string,\n options: CliApiOptions = {},\n): Promise<{ ok: true }> {\n return requestREST<{ ok: true }>(\n cfg,\n \"DELETE\",\n `/api/governance/ingestion-templates/${encodeURIComponent(id)}`,\n { ...options, mutating: true },\n );\n}\n\nexport async function cloneIngestionTemplateFromPlatform(\n cfg: GovernanceConfig,\n sourceTemplateId: string,\n options: CliApiOptions = {},\n): Promise<IngestionTemplateRow> {\n const body = await requestREST<{ ingestion_template: IngestionTemplateRow }>(\n cfg,\n \"POST\",\n \"/api/governance/ingestion-templates/clone-from-platform\",\n {\n ...options,\n body: { source_template_id: sourceTemplateId },\n mutating: true,\n },\n );\n return body.ingestion_template;\n}\n"],"mappings":"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","names":[]}
@@ -1,277 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
- var _chunkBRPEG3YQjs = require('./chunk-BRPEG3YQ.js');
5
-
6
- // src/cli/utils/governance/surface.ts
7
- var CLI_SURFACE_HEADER = "X-LangWatch-Surface";
8
- var CLI_SURFACE_VALUE = "cli";
9
-
10
- // src/cli/utils/governance/cli-api.ts
11
- var GovernanceCliError = class extends Error {
12
- constructor(status, code, message) {
13
- super(message);
14
- this.status = status;
15
- this.code = code;
16
- this.name = "GovernanceCliError";
17
- }
18
- };
19
- async function getJSON(cfg, path, opts = {}) {
20
- var _a, _b, _c;
21
- if (!cfg.access_token) {
22
- throw new GovernanceCliError(
23
- 401,
24
- "not_logged_in",
25
- "Not logged in. Run `langwatch login --device` first."
26
- );
27
- }
28
- const url = cfg.control_plane_url.replace(/\/+$/, "") + path;
29
- const f = (_a = opts.fetchImpl) != null ? _a : fetch;
30
- const res = await f(url, {
31
- method: "GET",
32
- headers: {
33
- Authorization: `Bearer ${cfg.access_token}`,
34
- Accept: "application/json"
35
- }
36
- });
37
- if (res.status === 401) {
38
- throw new GovernanceCliError(
39
- 401,
40
- "unauthorized",
41
- "Session expired \u2014 run `langwatch login --device` again"
42
- );
43
- }
44
- if (res.status === 402) {
45
- const body = await res.json().catch(() => ({}));
46
- const description = (_b = body.error_description) != null ? _b : "This feature requires an Enterprise plan";
47
- const upgrade = body.upgrade_url ? `
48
-
49
- Upgrade your organization at:
50
- ${body.upgrade_url}` : "";
51
- throw new GovernanceCliError(
52
- 402,
53
- "payment_required",
54
- `${description}${upgrade}`
55
- );
56
- }
57
- if (res.status === 404) {
58
- const body = await res.json().catch(() => ({}));
59
- throw new GovernanceCliError(
60
- 404,
61
- "not_found",
62
- (_c = body.error_description) != null ? _c : "Not found"
63
- );
64
- }
65
- if (!res.ok) {
66
- const body = await res.text().catch(() => "");
67
- throw new GovernanceCliError(
68
- res.status,
69
- "other",
70
- `${res.status} ${body.slice(0, 200)}`
71
- );
72
- }
73
- return await res.json();
74
- }
75
- async function listIngestionSources(cfg, options = {}) {
76
- const qs = options.includeArchived ? "?include_archived=1" : "";
77
- const body = await getJSON(
78
- cfg,
79
- `/api/auth/cli/governance/ingest/sources${qs}`,
80
- options
81
- );
82
- return body.sources;
83
- }
84
- async function getEventsForSource(cfg, sourceId, options = {}) {
85
- const params = new URLSearchParams();
86
- if (options.limit) params.set("limit", String(options.limit));
87
- if (options.beforeIso) params.set("before_iso", options.beforeIso);
88
- const qs = params.toString() ? `?${params.toString()}` : "";
89
- const body = await getJSON(
90
- cfg,
91
- `/api/auth/cli/governance/ingest/sources/${encodeURIComponent(
92
- sourceId
93
- )}/events${qs}`,
94
- options
95
- );
96
- return body.events;
97
- }
98
- async function getSourceHealth(cfg, sourceId, options = {}) {
99
- return getJSON(
100
- cfg,
101
- `/api/auth/cli/governance/ingest/sources/${encodeURIComponent(
102
- sourceId
103
- )}/health`,
104
- options
105
- );
106
- }
107
- async function getGovernanceStatus(cfg, options = {}) {
108
- return getJSON(cfg, `/api/auth/cli/governance/status`, options);
109
- }
110
- async function getCliBootstrap(cfg, options = {}) {
111
- try {
112
- return await getJSON(
113
- cfg,
114
- `/api/auth/cli/bootstrap`,
115
- options
116
- );
117
- } catch (err) {
118
- if (err instanceof GovernanceCliError && err.status === 404) {
119
- return null;
120
- }
121
- throw err;
122
- }
123
- }
124
- async function requestREST(cfg, method, path, options = {}) {
125
- var _a, _b, _c, _d, _e, _f, _g;
126
- if (!cfg.access_token) {
127
- throw new GovernanceCliError(
128
- 401,
129
- "not_logged_in",
130
- "Not logged in. Run `langwatch login --device` first."
131
- );
132
- }
133
- const url = cfg.control_plane_url.replace(/\/+$/, "") + path;
134
- const f = (_a = options.fetchImpl) != null ? _a : fetch;
135
- const headers = {
136
- Authorization: `Bearer ${cfg.access_token}`,
137
- Accept: "application/json"
138
- };
139
- if (options.mutating) {
140
- headers[CLI_SURFACE_HEADER] = CLI_SURFACE_VALUE;
141
- }
142
- if (options.body !== void 0) {
143
- headers["Content-Type"] = "application/json";
144
- }
145
- const res = await f(url, {
146
- method,
147
- headers,
148
- body: options.body !== void 0 ? JSON.stringify(options.body) : void 0
149
- });
150
- if (res.status === 204) return void 0;
151
- if (res.status === 401) {
152
- throw new GovernanceCliError(
153
- 401,
154
- "unauthorized",
155
- "Session expired \u2014 run `langwatch login --device` again"
156
- );
157
- }
158
- if (res.status === 403) {
159
- const body = await res.json().catch(() => ({}));
160
- throw new GovernanceCliError(
161
- 403,
162
- (_c = (_b = body.error) == null ? void 0 : _b.code) != null ? _c : "forbidden",
163
- (_e = (_d = body.error) == null ? void 0 : _d.message) != null ? _e : "Forbidden"
164
- );
165
- }
166
- if (res.status === 404) {
167
- const body = await res.json().catch(() => ({}));
168
- throw new GovernanceCliError(
169
- 404,
170
- "not_found",
171
- (_g = (_f = body.error) == null ? void 0 : _f.message) != null ? _g : "Not found"
172
- );
173
- }
174
- if (!res.ok) {
175
- const body = await res.text().catch(() => "");
176
- throw new GovernanceCliError(
177
- res.status,
178
- "other",
179
- `${res.status} ${body.slice(0, 200)}`
180
- );
181
- }
182
- return await res.json();
183
- }
184
- async function mintIngestionKey(cfg, sourceType, options = {}) {
185
- return requestREST(
186
- cfg,
187
- "POST",
188
- "/api/auth/cli/governance/ingestion-key",
189
- _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, options), { body: { source_type: sourceType }, mutating: true })
190
- );
191
- }
192
- function extractLookupIdFromToken(token) {
193
- const match = /^ik-lw-([^_]+)_/.exec(token);
194
- return match == null ? void 0 : match[1];
195
- }
196
- async function listIngestionKeys(cfg, options = {}) {
197
- const body = await requestREST(cfg, "GET", "/api/auth/cli/governance/ingestion-keys", options);
198
- return body.keys.map((k) => ({
199
- sourceType: k.source_type,
200
- lookupId: k.lookup_id
201
- }));
202
- }
203
- async function adminListIngestionTemplates(cfg, options = {}) {
204
- const body = await requestREST(
205
- cfg,
206
- "GET",
207
- "/api/governance/ingestion-templates/admin",
208
- options
209
- );
210
- return body.ingestion_templates;
211
- }
212
- async function getIngestionTemplate(cfg, id, options = {}) {
213
- const body = await requestREST(
214
- cfg,
215
- "GET",
216
- `/api/governance/ingestion-templates/${encodeURIComponent(id)}`,
217
- options
218
- );
219
- return body.ingestion_template;
220
- }
221
- async function createIngestionTemplate(cfg, input, options = {}) {
222
- const body = await requestREST(
223
- cfg,
224
- "POST",
225
- "/api/governance/ingestion-templates",
226
- _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, options), { body: input, mutating: true })
227
- );
228
- return body.ingestion_template;
229
- }
230
- async function updateIngestionTemplateOttlRules(cfg, id, ottlRules, options = {}) {
231
- const body = await requestREST(
232
- cfg,
233
- "PATCH",
234
- `/api/governance/ingestion-templates/${encodeURIComponent(id)}/ottl-rules`,
235
- _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, options), { body: { ottl_rules: ottlRules }, mutating: true })
236
- );
237
- return body.ingestion_template;
238
- }
239
- async function archiveIngestionTemplate(cfg, id, options = {}) {
240
- return requestREST(
241
- cfg,
242
- "DELETE",
243
- `/api/governance/ingestion-templates/${encodeURIComponent(id)}`,
244
- _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, options), { mutating: true })
245
- );
246
- }
247
- async function cloneIngestionTemplateFromPlatform(cfg, sourceTemplateId, options = {}) {
248
- const body = await requestREST(
249
- cfg,
250
- "POST",
251
- "/api/governance/ingestion-templates/clone-from-platform",
252
- _chunkBRPEG3YQjs.__spreadProps.call(void 0, _chunkBRPEG3YQjs.__spreadValues.call(void 0, {}, options), {
253
- body: { source_template_id: sourceTemplateId },
254
- mutating: true
255
- })
256
- );
257
- return body.ingestion_template;
258
- }
259
-
260
-
261
-
262
-
263
-
264
-
265
-
266
-
267
-
268
-
269
-
270
-
271
-
272
-
273
-
274
-
275
-
276
- exports.GovernanceCliError = GovernanceCliError; exports.listIngestionSources = listIngestionSources; exports.getEventsForSource = getEventsForSource; exports.getSourceHealth = getSourceHealth; exports.getGovernanceStatus = getGovernanceStatus; exports.getCliBootstrap = getCliBootstrap; exports.mintIngestionKey = mintIngestionKey; exports.extractLookupIdFromToken = extractLookupIdFromToken; exports.listIngestionKeys = listIngestionKeys; exports.adminListIngestionTemplates = adminListIngestionTemplates; exports.getIngestionTemplate = getIngestionTemplate; exports.createIngestionTemplate = createIngestionTemplate; exports.updateIngestionTemplateOttlRules = updateIngestionTemplateOttlRules; exports.archiveIngestionTemplate = archiveIngestionTemplate; exports.cloneIngestionTemplateFromPlatform = cloneIngestionTemplateFromPlatform;
277
- //# sourceMappingURL=chunk-ZA5BH7IZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-ZA5BH7IZ.js","../src/cli/utils/governance/surface.ts","../src/cli/utils/governance/cli-api.ts"],"names":[],"mappings":"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;AACF,EAAA;AACuB,EAAA;AACzB;AAiBE;AAGO,EAAA;AACL,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACF;AAS4E;AAChC,EAAA;AAC3B,EAAA;AACjB;AAc2B;AAQV,EAAA;AACc,EAAA;AACb,IAAA;AACF,IAAA;AACZ,EAAA;AACJ;AAME;AAEmB,EAAA;AACjB,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACY,EAAA;AACd;AAKE;AAEmB,EAAA;AACjB,IAAA;AACA,IAAA;AACuC,IAAA;AACvC,IAAA;AACF,EAAA;AACY,EAAA;AACd;AAIE;AAUmB,EAAA;AACjB,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACY,EAAA;AACd;AAGE;AAKmB,EAAA;AACjB,IAAA;AACA,IAAA;AACuC,IAAA;AACvC,IAAA;AACF,EAAA;AACY,EAAA;AACd;AAIE;AAGO,EAAA;AACL,IAAA;AACA,IAAA;AACuC,IAAA;AACvC,IAAA;AACF,EAAA;AACF;AAEsB;AAKD,EAAA;AACjB,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAE8B,MAAA;AAClB,MAAA;AACZ,IAAA;AACF,EAAA;AACY,EAAA;AACd;AFrSgD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-ZA5BH7IZ.js","sourcesContent":[null,"/**\n * Mirror of `GovernanceCallSurface` from the langwatch app\n * (ee/governance/services/auditSurface.ts). Kept as a hand-written\n * type alias rather than imported because the CLI package doesn't\n * pull from the langwatch source tree.\n *\n * The CLI only ever sends \"cli\" — the other values are documented\n * here so the type stays informational + so any future SDK regen\n * targeting governance audit metadata picks up the canonical set.\n */\nexport type GovernanceCallSurface = \"trpc\" | \"hono\" | \"cli\" | \"mcp\";\n\nexport const CLI_SURFACE_HEADER = \"X-LangWatch-Surface\" as const;\nexport const CLI_SURFACE_VALUE: GovernanceCallSurface = \"cli\";\n","/**\n * Thin REST client for governance endpoints used by the\n * `langwatch governance ...` CLI namespace.\n *\n * Two transports live in this file:\n *\n * 1. `/api/auth/cli/governance/*` — CLI-specific read proxies for\n * activity monitor + status that pre-date the public REST\n * surface. Read-only.\n * 2. `/api/governance/*` — the public REST contract for\n * IngestionTemplate CRUD plus the device-session ingestion-key\n * mint route. The CLI sends `X-LangWatch-Surface: cli` so audit\n * rows land with `metadata.surface = 'cli'` per @audit-uniform.\n */\n\nimport { type GovernanceConfig } from \"./config\";\nimport type { PlatformToolPolicyMap } from \"./platform-tool-policy\";\nimport {\n CLI_SURFACE_HEADER,\n CLI_SURFACE_VALUE,\n} from \"./surface\";\n\nexport interface IngestionSourceSummary {\n id: string;\n name: string;\n sourceType: string;\n description: string | null;\n status: string;\n lastEventAt: string | null;\n createdAt: string;\n archivedAt: string | null;\n}\n\nexport interface ActivityEventDetailRow {\n eventId: string;\n eventType: string;\n actor: string;\n action: string;\n target: string;\n costUsd: number;\n tokensInput: number;\n tokensOutput: number;\n eventTimestampIso: string;\n ingestedAtIso: string;\n rawPayload: string;\n}\n\nexport interface SourceHealthMetrics {\n events24h: number;\n events7d: number;\n events30d: number;\n lastSuccessIso: string | null;\n}\n\nexport interface GovernanceSetupState {\n hasPersonalVKs: boolean;\n hasRoutingPolicies: boolean;\n hasIngestionSources: boolean;\n hasAnomalyRules: boolean;\n hasRecentActivity: boolean;\n governanceActive: boolean;\n}\n\nexport class GovernanceCliError extends Error {\n constructor(\n public readonly status: number,\n public readonly code: string,\n message: string,\n ) {\n super(message);\n this.name = \"GovernanceCliError\";\n }\n}\n\nexport interface CliApiOptions {\n fetchImpl?: typeof fetch;\n}\n\nasync function getJSON<T>(\n cfg: GovernanceConfig,\n path: string,\n opts: CliApiOptions = {},\n): Promise<T> {\n if (!cfg.access_token) {\n throw new GovernanceCliError(\n 401,\n \"not_logged_in\",\n \"Not logged in. Run `langwatch login --device` first.\",\n );\n }\n const url = cfg.control_plane_url.replace(/\\/+$/, \"\") + path;\n const f = opts.fetchImpl ?? fetch;\n const res = await f(url, {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${cfg.access_token}`,\n Accept: \"application/json\",\n },\n });\n if (res.status === 401) {\n throw new GovernanceCliError(\n 401,\n \"unauthorized\",\n \"Session expired — run `langwatch login --device` again\",\n );\n }\n if (res.status === 402) {\n const body = (await res.json().catch(() => ({}))) as {\n error_description?: string;\n upgrade_url?: string;\n };\n const description =\n body.error_description ?? \"This feature requires an Enterprise plan\";\n const upgrade = body.upgrade_url\n ? `\\n\\n Upgrade your organization at:\\n ${body.upgrade_url}`\n : \"\";\n throw new GovernanceCliError(\n 402,\n \"payment_required\",\n `${description}${upgrade}`,\n );\n }\n if (res.status === 404) {\n const body = (await res.json().catch(() => ({}))) as {\n error_description?: string;\n };\n throw new GovernanceCliError(\n 404,\n \"not_found\",\n body.error_description ?? \"Not found\",\n );\n }\n if (!res.ok) {\n const body = await res.text().catch(() => \"\");\n throw new GovernanceCliError(\n res.status,\n \"other\",\n `${res.status} ${body.slice(0, 200)}`,\n );\n }\n return (await res.json()) as T;\n}\n\nexport async function listIngestionSources(\n cfg: GovernanceConfig,\n options: { includeArchived?: boolean } & CliApiOptions = {},\n): Promise<IngestionSourceSummary[]> {\n const qs = options.includeArchived ? \"?include_archived=1\" : \"\";\n const body = await getJSON<{ sources: IngestionSourceSummary[] }>(\n cfg,\n `/api/auth/cli/governance/ingest/sources${qs}`,\n options,\n );\n return body.sources;\n}\n\nexport async function getEventsForSource(\n cfg: GovernanceConfig,\n sourceId: string,\n options: { limit?: number; beforeIso?: string } & CliApiOptions = {},\n): Promise<ActivityEventDetailRow[]> {\n const params = new URLSearchParams();\n if (options.limit) params.set(\"limit\", String(options.limit));\n if (options.beforeIso) params.set(\"before_iso\", options.beforeIso);\n const qs = params.toString() ? `?${params.toString()}` : \"\";\n const body = await getJSON<{ events: ActivityEventDetailRow[] }>(\n cfg,\n `/api/auth/cli/governance/ingest/sources/${encodeURIComponent(\n sourceId,\n )}/events${qs}`,\n options,\n );\n return body.events;\n}\n\nexport async function getSourceHealth(\n cfg: GovernanceConfig,\n sourceId: string,\n options: CliApiOptions = {},\n): Promise<{\n source: { id: string; name: string; status: string };\n health: SourceHealthMetrics;\n}> {\n return getJSON(\n cfg,\n `/api/auth/cli/governance/ingest/sources/${encodeURIComponent(\n sourceId,\n )}/health`,\n options,\n );\n}\n\nexport async function getGovernanceStatus(\n cfg: GovernanceConfig,\n options: CliApiOptions = {},\n): Promise<{ setup: GovernanceSetupState }> {\n return getJSON(cfg, `/api/auth/cli/governance/status`, options);\n}\n\n/**\n * A coding assistant the member can run via `langwatch <slug>`. Sourced from\n * the org's published coding_assistant catalog tiles, so the CLI only offers\n * tools the org actually publishes.\n */\nexport interface CliBootstrapTool {\n slug: string;\n displayName: string;\n}\n\n/**\n * A model provider the member can mint a personal virtual key for. Sourced\n * from the org's published model_provider catalog tiles. Distinct from a\n * tool: a provider backs a virtual key, a tool is a coding assistant you run.\n */\nexport interface CliBootstrapProvider {\n name: string;\n displayName: string;\n configured: boolean;\n}\n\nexport interface CliBootstrapBudget {\n monthlyLimitUsd: number | null;\n monthlyUsedUsd: number;\n period: string;\n}\n\nexport interface CliBootstrapResponse {\n /**\n * Coding assistants the member can run via `langwatch <slug>`. Empty when\n * the org has published no coding-assistant tiles; the ceremony then falls\n * back to its built-in default wrapper list. `undefined` on legacy servers\n * without the field (same fallback).\n */\n tools?: CliBootstrapTool[];\n providers: CliBootstrapProvider[];\n /**\n * Provider families (e.g. \"openai\") for which the org has a live, enabled\n * credential the caller can reach - independent of whether a model_provider\n * catalog tile was published. This is what the gateway can actually route\n * through, so the wrapper preflight gates the gateway path on this, NOT on\n * `providers` (which is the admin-curated mint-your-own-VK catalog).\n * `undefined` on legacy servers without the field; the wrapper then falls\n * back to the `providers` tile list for the check.\n */\n gatewayProviders?: string[];\n budget: CliBootstrapBudget;\n /**\n * Server-authoritative gateway base URL. Sourced from the backend's\n * `LW_GATEWAY_BASE_URL` (or its self-hosted/SaaS-aware fallback).\n * Older self-hosted servers without this field fall back to the\n * CLI's local config default — so undefined is the legacy shape, not\n * an error.\n */\n gatewayUrl?: string;\n /**\n * First org admin's email (by createdAt). Rendered as a mailto in\n * wrapper preflight failure messages so non-admin users get a real\n * contact path instead of a vague \"ask your admin\". `null` when the\n * org has no admin yet; `undefined` on legacy servers without the\n * field (CLI falls back to a generic line).\n */\n adminEmail?: string | null;\n /**\n * Per-(org, tool) path policy map (claude/codex/gemini/opencode/cursor\n * → {allowVk, allowOtelDirect}). The CLI caches this into\n * `cfg.tool_policies` so the wrapper gates path selection on the org's\n * admin choices. `undefined` on legacy servers without the field; the\n * wrapper then falls back to hardcoded defaults.\n */\n toolPolicies?: PlatformToolPolicyMap;\n}\n\n/**\n * Fetch the Storyboard Screen 4 ceremony enrichment data —\n * inheritable providers + the user's effective monthly budget.\n *\n * Backend tRPC source: `api.user.cliBootstrap` (Sergey 32cad11ae).\n * REST adapter: `/api/auth/cli/bootstrap` (queued backend follow-up).\n *\n * Graceful degrade: returns null on 404 (older self-hosted server\n * without the REST endpoint) so the CLI ceremony falls back to the\n * basic header + try-it block. Other errors still throw so they can\n * be logged at the call site.\n */\nexport async function getCliBootstrap(\n cfg: GovernanceConfig,\n options: CliApiOptions = {},\n): Promise<CliBootstrapResponse | null> {\n try {\n return await getJSON<CliBootstrapResponse>(\n cfg,\n `/api/auth/cli/bootstrap`,\n options,\n );\n } catch (err) {\n if (err instanceof GovernanceCliError && err.status === 404) {\n return null;\n }\n throw err;\n }\n}\n\n// ── Public REST: /api/governance/* ─────────────────────────────────────────\n//\n// IngestionTemplate CRUD Hono routes. Wire shape is snake_case in/out.\n// All mutating calls send X-LangWatch-Surface: cli per @audit-uniform.\n\nexport interface IngestionTemplateRow {\n id: string;\n organization_id: string | null;\n slug: string;\n source_type: string;\n display_name: string;\n description: string | null;\n icon_asset: string | null;\n credential_schema: string | null;\n ottl_rules: string;\n platform_published: boolean;\n enabled: boolean;\n}\n\ntype RestMethod = \"GET\" | \"POST\" | \"PATCH\" | \"DELETE\";\n\nasync function requestREST<T>(\n cfg: GovernanceConfig,\n method: RestMethod,\n path: string,\n options: { body?: unknown; mutating?: boolean } & CliApiOptions = {},\n): Promise<T> {\n if (!cfg.access_token) {\n throw new GovernanceCliError(\n 401,\n \"not_logged_in\",\n \"Not logged in. Run `langwatch login --device` first.\",\n );\n }\n const url = cfg.control_plane_url.replace(/\\/+$/, \"\") + path;\n const f = options.fetchImpl ?? fetch;\n const headers: Record<string, string> = {\n Authorization: `Bearer ${cfg.access_token}`,\n Accept: \"application/json\",\n };\n if (options.mutating) {\n headers[CLI_SURFACE_HEADER] = CLI_SURFACE_VALUE;\n }\n if (options.body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n const res = await f(url, {\n method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n });\n if (res.status === 204) return undefined as T;\n if (res.status === 401) {\n throw new GovernanceCliError(\n 401,\n \"unauthorized\",\n \"Session expired — run `langwatch login --device` again\",\n );\n }\n if (res.status === 403) {\n const body = (await res.json().catch(() => ({}))) as {\n error?: { message?: string; code?: string };\n };\n throw new GovernanceCliError(\n 403,\n body.error?.code ?? \"forbidden\",\n body.error?.message ?? \"Forbidden\",\n );\n }\n if (res.status === 404) {\n const body = (await res.json().catch(() => ({}))) as {\n error?: { message?: string };\n };\n throw new GovernanceCliError(\n 404,\n \"not_found\",\n body.error?.message ?? \"Not found\",\n );\n }\n if (!res.ok) {\n const body = await res.text().catch(() => \"\");\n throw new GovernanceCliError(\n res.status,\n \"other\",\n `${res.status} ${body.slice(0, 200)}`,\n );\n }\n return (await res.json()) as T;\n}\n\n// Ingestion key minting ------------------------------------------------------\n\n/**\n * Mint a personal-project ingest-only ApiKey (the `sk-lw-<...>` shape)\n * for a wrapped tool. Returns the plaintext key (shown once) plus the\n * OTLP endpoint the caller should point the tool's exporter at.\n *\n * Device-session adapter route under /api/auth/cli/governance/* so the\n * wrapper's auto-mint flow works with the device-session\n * cfg.access_token (lw_at_*). The public REST mounted under\n * createProjectApp rejects Bearer access tokens with 401, so the CLI\n * uses the mirror route, same as the (now-retired) binding flow did.\n */\nexport async function mintIngestionKey(\n cfg: GovernanceConfig,\n sourceType: string,\n options: CliApiOptions = {},\n): Promise<{ token: string; prefix: string; endpoint: string }> {\n return requestREST<{ token: string; prefix: string; endpoint: string }>(\n cfg,\n \"POST\",\n \"/api/auth/cli/governance/ingestion-key\",\n { ...options, body: { source_type: sourceType }, mutating: true },\n );\n}\n\n\n/**\n * Extracts the 16-char lookupId from an ingestion token.\n * Token format: `ik-lw-{16-char lookupId}_{secret}`.\n * Returns the lookupId string, or undefined when the token doesn't match the\n * expected format (older token shapes, malformed cache entries).\n */\nexport function extractLookupIdFromToken(token: string): string | undefined {\n const match = /^ik-lw-([^_]+)_/.exec(token);\n return match?.[1];\n}\n\n// Ingestion key listing -------------------------------------------------------\n\n/**\n * Lists all live (non-revoked) personal-project ingestion keys for the\n * caller's org. Used as a cache-liveness preflight (#4755): before reusing a\n * locally cached token, the wrapper calls this to confirm the key is still\n * active. If the server resolves and the cached lookupId is absent → the key\n * was revoked → mint fresh. If the call rejects (offline / older server) →\n * reuse the cache as-is (offline-first fallback).\n */\nexport async function listIngestionKeys(\n cfg: GovernanceConfig,\n options: CliApiOptions = {},\n): Promise<{ sourceType: string; lookupId: string }[]> {\n const body = await requestREST<{\n keys: Array<{\n source_type: string;\n lookup_id: string;\n ingestion_template_id: string | null;\n }>;\n }>(cfg, \"GET\", \"/api/auth/cli/governance/ingestion-keys\", options);\n return body.keys.map((k) => ({\n sourceType: k.source_type,\n lookupId: k.lookup_id,\n }));\n}\n\n// IngestionTemplate verbs ----------------------------------------------------\n\nexport async function adminListIngestionTemplates(\n cfg: GovernanceConfig,\n options: CliApiOptions = {},\n): Promise<IngestionTemplateRow[]> {\n const body = await requestREST<{ ingestion_templates: IngestionTemplateRow[] }>(\n cfg,\n \"GET\",\n \"/api/governance/ingestion-templates/admin\",\n options,\n );\n return body.ingestion_templates;\n}\n\nexport async function getIngestionTemplate(\n cfg: GovernanceConfig,\n id: string,\n options: CliApiOptions = {},\n): Promise<IngestionTemplateRow> {\n const body = await requestREST<{ ingestion_template: IngestionTemplateRow }>(\n cfg,\n \"GET\",\n `/api/governance/ingestion-templates/${encodeURIComponent(id)}`,\n options,\n );\n return body.ingestion_template;\n}\n\nexport async function createIngestionTemplate(\n cfg: GovernanceConfig,\n input: {\n source_type: string;\n display_name: string;\n description?: string;\n icon_asset?: string;\n credential_schema?: \"otlp_token\" | \"static_api_key\" | \"agent_id\" | null;\n ottl_rules?: string;\n },\n options: CliApiOptions = {},\n): Promise<IngestionTemplateRow> {\n const body = await requestREST<{ ingestion_template: IngestionTemplateRow }>(\n cfg,\n \"POST\",\n \"/api/governance/ingestion-templates\",\n { ...options, body: input, mutating: true },\n );\n return body.ingestion_template;\n}\n\nexport async function updateIngestionTemplateOttlRules(\n cfg: GovernanceConfig,\n id: string,\n ottlRules: string,\n options: CliApiOptions = {},\n): Promise<IngestionTemplateRow> {\n const body = await requestREST<{ ingestion_template: IngestionTemplateRow }>(\n cfg,\n \"PATCH\",\n `/api/governance/ingestion-templates/${encodeURIComponent(id)}/ottl-rules`,\n { ...options, body: { ottl_rules: ottlRules }, mutating: true },\n );\n return body.ingestion_template;\n}\n\nexport async function archiveIngestionTemplate(\n cfg: GovernanceConfig,\n id: string,\n options: CliApiOptions = {},\n): Promise<{ ok: true }> {\n return requestREST<{ ok: true }>(\n cfg,\n \"DELETE\",\n `/api/governance/ingestion-templates/${encodeURIComponent(id)}`,\n { ...options, mutating: true },\n );\n}\n\nexport async function cloneIngestionTemplateFromPlatform(\n cfg: GovernanceConfig,\n sourceTemplateId: string,\n options: CliApiOptions = {},\n): Promise<IngestionTemplateRow> {\n const body = await requestREST<{ ingestion_template: IngestionTemplateRow }>(\n cfg,\n \"POST\",\n \"/api/governance/ingestion-templates/clone-from-platform\",\n {\n ...options,\n body: { source_template_id: sourceTemplateId },\n mutating: true,\n },\n );\n return body.ingestion_template;\n}\n"]}