@langwatch/mcp-server 2.1.0 → 3.0.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 (428) hide show
  1. package/.gitignore +7 -0
  2. package/.npmignore +41 -0
  3. package/CHANGELOG.md +218 -201
  4. package/CONTRIBUTING.md +10 -0
  5. package/README.md +70 -68
  6. package/dist/add-dashboard-widget-55UI6H22.js +44 -0
  7. package/dist/add-dashboard-widget-MJHIC3CC.js +45 -0
  8. package/dist/{archive-project-W3IKI7UL.js → archive-project-K5UD7A6X.js} +4 -4
  9. package/dist/archive-project-L4PAKT34.js +19 -0
  10. package/dist/{archive-run-plan-474OKHHU.js → archive-run-plan-5HSQG2HX.js} +4 -4
  11. package/dist/archive-run-plan-AOKNYQIO.js +15 -0
  12. package/dist/archive-scenario-2CWJW2VD.js +19 -0
  13. package/dist/{archive-scenario-V5UNYK26.js → archive-scenario-5IJQESHH.js} +4 -4
  14. package/dist/{archive-test-suite-O7FLDMXK.js → archive-test-suite-OPB7NFI7.js} +4 -4
  15. package/dist/archive-test-suite-ZC3TN6VH.js +15 -0
  16. package/dist/assign-prompt-tag-6DDE6ZZ5.js +23 -0
  17. package/dist/{assign-prompt-tag-Q46WRB6P.js → assign-prompt-tag-D7O23MJM.js} +8 -4
  18. package/dist/chunk-3YLN3ATJ.js +241 -0
  19. package/dist/{chunk-EYXMLE5X.js → chunk-4RX3G62A.js} +56 -47
  20. package/dist/{chunk-UF6XIGYR.js → chunk-6YZUOD34.js} +2 -5
  21. package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
  22. package/dist/chunk-7CZQDZ2K.js +319 -0
  23. package/dist/{chunk-RVAE2MEA.js → chunk-7GETGE6B.js} +7 -7
  24. package/dist/{chunk-OJLYYJWI.js → chunk-AASW2TO2.js} +7 -10
  25. package/dist/{chunk-QAMP3CGR.js → chunk-B4RFWIUP.js} +4 -4
  26. package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
  27. package/dist/{chunk-G4ZAZTZW.js → chunk-D2HS73VI.js} +7 -10
  28. package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
  29. package/dist/{chunk-WT4PO4A3.js → chunk-DULFP3MK.js} +10 -7
  30. package/dist/chunk-EYPJBL7P.js +516 -0
  31. package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
  32. package/dist/chunk-GA5JUSPT.js +64 -0
  33. package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
  34. package/dist/chunk-HLQJXUR6.js +67 -0
  35. package/dist/{chunk-JTQJRNFJ.js → chunk-KILVK3FS.js} +4 -4
  36. package/dist/chunk-MOCU5XWF.js +79 -0
  37. package/dist/chunk-O2WGVCED.js +41 -0
  38. package/dist/{chunk-HV4DWKBI.js → chunk-O7EMWEVJ.js} +2 -4
  39. package/dist/{chunk-UFOYFYI7.js → chunk-QXLMHLRC.js} +6 -9
  40. package/dist/{chunk-QRO35SOM.js → chunk-R5YJIYPF.js} +981 -747
  41. package/dist/{chunk-JR6DJZOU.js → chunk-RABYBFX5.js} +4 -10
  42. package/dist/{chunk-SR6QPRIE.js → chunk-RFC2SBEX.js} +7 -13
  43. package/dist/chunk-SHSVN3SE.js +21 -0
  44. package/dist/{chunk-CKNAH5TG.js → chunk-U24EACC4.js} +3 -10
  45. package/dist/{chunk-56OGTS24.js → chunk-VOUGDY2O.js} +4 -11
  46. package/dist/chunk-WCKZDOGF.js +31 -0
  47. package/dist/chunk-XQYH52SI.js +129 -0
  48. package/dist/{chunk-7E4FZIYJ.js → chunk-XUIJYNRJ.js} +1 -1
  49. package/dist/{chunk-6DJDEXET.js → chunk-YCIUEZVK.js} +6 -12
  50. package/dist/config-2WQGMAEN.js +16 -0
  51. package/dist/config.cjs +109 -0
  52. package/dist/config.js +5 -4
  53. package/dist/{create-agent-JFJ2K6X3.js → create-agent-6JNLMYQD.js} +4 -4
  54. package/dist/create-agent-IRZOU4R5.js +23 -0
  55. package/dist/create-analytics-report-N4L4V5QL.js +19 -0
  56. package/dist/create-analytics-report-QEHXG7FU.js +18 -0
  57. package/dist/{create-annotation-EUXXQ6NS.js → create-annotation-CCEGIZ67.js} +10 -5
  58. package/dist/create-annotation-DTHCMWHB.js +29 -0
  59. package/dist/{create-api-key-BGBB76JX.js → create-api-key-JKM2DSZO.js} +5 -7
  60. package/dist/create-api-key-JPEUIXGM.js +24 -0
  61. package/dist/create-dataset-DJNXYJ5B.js +22 -0
  62. package/dist/{create-dataset-FD5VAXU4.js → create-dataset-WON4SOTC.js} +6 -6
  63. package/dist/create-dataset-records-TMEOTLTO.js +20 -0
  64. package/dist/{create-dataset-records-WQUXXOHI.js → create-dataset-records-UJBW3C7C.js} +5 -7
  65. package/dist/create-evaluator-N5AEHI4K.js +27 -0
  66. package/dist/{create-evaluator-6NV33Z52.js → create-evaluator-XYNY2YFY.js} +4 -4
  67. package/dist/create-mcp-server.cjs +9712 -0
  68. package/dist/create-mcp-server.js +2757 -10
  69. package/dist/{create-project-ZQ7TFIO2.js → create-project-EY4XZ7TH.js} +4 -4
  70. package/dist/create-project-YL345T5L.js +44 -0
  71. package/dist/{create-prompt-BS6QRCUU.js → create-prompt-JZQNQ7I3.js} +5 -7
  72. package/dist/create-prompt-ZUMQHHX7.js +37 -0
  73. package/dist/create-prompt-tag-CJ5FZ436.js +17 -0
  74. package/dist/{create-prompt-tag-FCQ5ELSQ.js → create-prompt-tag-JFP2Q3PO.js} +3 -3
  75. package/dist/create-scenario-CQU2SSFB.js +33 -0
  76. package/dist/{create-scenario-DRPTPXU3.js → create-scenario-S6OWWKJO.js} +5 -5
  77. package/dist/create-test-suite-OLGCAGJA.js +36 -0
  78. package/dist/{create-test-suite-ZIZCCFJ4.js → create-test-suite-Y7P2RI4L.js} +6 -6
  79. package/dist/create-trigger-4CNBTISJ.js +48 -0
  80. package/dist/create-trigger-RQ653WYF.js +49 -0
  81. package/dist/dashboards-BA7M6CMO.js +90 -0
  82. package/dist/dashboards-U663GUIB.js +91 -0
  83. package/dist/{delete-agent-SA4JMUZF.js → delete-agent-J2Q4DRZ2.js} +4 -4
  84. package/dist/delete-agent-ZAU4LTXB.js +18 -0
  85. package/dist/delete-analytics-report-QK6X7P4S.js +19 -0
  86. package/dist/delete-analytics-report-YUYLDHLL.js +18 -0
  87. package/dist/delete-annotation-7X4NYXXM.js +17 -0
  88. package/dist/{delete-annotation-X3KKK7QY.js → delete-annotation-KJOCDLV3.js} +4 -4
  89. package/dist/{delete-dataset-W6EZ44HY.js → delete-dataset-NXP7ZPPV.js} +5 -7
  90. package/dist/delete-dataset-RUTZBBVD.js +18 -0
  91. package/dist/{delete-dataset-records-7CNOTALB.js → delete-dataset-records-4Z7DZCDW.js} +5 -7
  92. package/dist/delete-dataset-records-75UAR5IS.js +19 -0
  93. package/dist/delete-evaluator-E3CUNGTQ.js +16 -0
  94. package/dist/delete-evaluator-RI4GALGX.js +15 -0
  95. package/dist/delete-prompt-tag-LE3WJPKS.js +17 -0
  96. package/dist/{delete-prompt-tag-QB3OCZUV.js → delete-prompt-tag-S4KBZTNG.js} +3 -3
  97. package/dist/delete-workflow-4CZFIQCQ.js +17 -0
  98. package/dist/{delete-workflow-NG2VXYYM.js → delete-workflow-PWQPDW6H.js} +4 -4
  99. package/dist/discover-evaluator-schema-UHWA5HVL.js +120 -0
  100. package/dist/discover-evaluator-schema-XKCLLCB3.js +118 -0
  101. package/dist/discover-scenario-schema-NOJY6S7E.js +137 -0
  102. package/dist/{discover-scenario-schema-W7KBXA4J.js → discover-scenario-schema-OOFIQKOG.js} +37 -17
  103. package/dist/discover-schema-7WHIIATI.js +442 -0
  104. package/dist/{discover-schema-L6QDPON3.js → discover-schema-J2ANOBKO.js} +181 -186
  105. package/dist/get-agent-5T3CXQOR.js +69 -0
  106. package/dist/{get-agent-7THF7HCU.js → get-agent-ZKYQJUQ7.js} +15 -11
  107. package/dist/get-analytics-4MPEK4KV.js +79 -0
  108. package/dist/get-analytics-ZLI3A4F5.js +80 -0
  109. package/dist/get-analytics-report-JCKYMA2S.js +29 -0
  110. package/dist/get-analytics-report-SKIP2JWH.js +30 -0
  111. package/dist/get-dataset-APGZBYMH.js +64 -0
  112. package/dist/get-dataset-LWXDVMVE.js +63 -0
  113. package/dist/get-evaluator-3A7BJBAB.js +47 -0
  114. package/dist/{get-evaluator-RZ44UIN6.js → get-evaluator-IWNJINRY.js} +4 -4
  115. package/dist/get-project-EQVB4LEL.js +26 -0
  116. package/dist/{get-project-QSQEAB33.js → get-project-RK6AJTEP.js} +4 -4
  117. package/dist/{get-prompt-GVKXF5NL.js → get-prompt-TLG2T2DS.js} +53 -58
  118. package/dist/get-prompt-ZER557X3.js +94 -0
  119. package/dist/get-run-plan-5X7DDJRN.js +58 -0
  120. package/dist/{get-run-plan-NY7J5GRE.js → get-run-plan-PEHRO5M3.js} +7 -9
  121. package/dist/{get-scenario-Q3LLQE4T.js → get-scenario-375W5D6I.js} +5 -5
  122. package/dist/get-scenario-UQX45ZZO.js +37 -0
  123. package/dist/{get-simulation-run-WINEYDMK.js → get-simulation-run-2NBXJADG.js} +26 -22
  124. package/dist/get-simulation-run-QZTLGL7W.js +69 -0
  125. package/dist/{get-test-suite-4HKA7OKS.js → get-test-suite-GVIBDG7K.js} +5 -5
  126. package/dist/get-test-suite-OODIR3RI.js +48 -0
  127. package/dist/{get-trace-RCUV7N4O.js → get-trace-AGCHVPJK.js} +11 -13
  128. package/dist/get-trace-KJLYAZRC.js +45 -0
  129. package/dist/get-workflow-3TV2YYC5.js +25 -0
  130. package/dist/{get-workflow-EEOC7Y45.js → get-workflow-7LZSVPP2.js} +4 -4
  131. package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
  132. package/dist/{http-server-WCDUARTH.js → http-server-7CCN3EHJ.js} +4249 -325
  133. package/dist/index.js +59595 -38027
  134. package/dist/langwatch-api-analytics-reports-6CF6KUET.js +17 -0
  135. package/dist/langwatch-api-analytics-reports-RPFB5AO5.js +18 -0
  136. package/dist/{langwatch-api-annotations-6DHVZWUK.js → langwatch-api-annotations-H4AI4TKG.js} +4 -4
  137. package/dist/langwatch-api-annotations-QSJNUQQS.js +17 -0
  138. package/dist/langwatch-api-monitors-ENHLOL3S.js +47 -0
  139. package/dist/{langwatch-api-monitors-6ISFJ7WX.js → langwatch-api-monitors-OHSGADTH.js} +11 -16
  140. package/dist/langwatch-api-secrets-AGW6UUMD.js +55 -0
  141. package/dist/langwatch-api-secrets-CLTS766Q.js +56 -0
  142. package/dist/langwatch-api-triggers-G5UWFNN2.js +22 -0
  143. package/dist/langwatch-api-triggers-QMR7KEXW.js +23 -0
  144. package/dist/langwatch-api-workflows-HKTBIKKY.js +15 -0
  145. package/dist/{langwatch-api-workflows-6UJL5U4Z.js → langwatch-api-workflows-OMROZH2O.js} +4 -4
  146. package/dist/{list-agents-AMVDQPQL.js → list-agents-BYWDNAHT.js} +4 -4
  147. package/dist/list-agents-MG24MHZE.js +42 -0
  148. package/dist/list-analytics-reports-G3EPWGSQ.js +32 -0
  149. package/dist/list-analytics-reports-PPWIFRES.js +33 -0
  150. package/dist/list-annotations-QCLGEK5A.js +38 -0
  151. package/dist/{list-annotations-6PR5NLIC.js → list-annotations-Y4EUBJHG.js} +10 -5
  152. package/dist/list-api-keys-DAVOBPFK.js +42 -0
  153. package/dist/{list-api-keys-GVPNBIHQ.js → list-api-keys-JMW5WRXX.js} +10 -5
  154. package/dist/list-dashboards-2P3VJFRS.js +29 -0
  155. package/dist/list-dashboards-MW5O3MKH.js +30 -0
  156. package/dist/list-dataset-records-KEHT7G6Q.js +43 -0
  157. package/dist/{list-dataset-records-O67HZ35Y.js → list-dataset-records-KMLLMZAZ.js} +14 -10
  158. package/dist/{list-datasets-WXZL6UMP.js → list-datasets-P3JK2ZHS.js} +9 -13
  159. package/dist/list-datasets-Z7OOE4KI.js +56 -0
  160. package/dist/{list-evaluators-PAX72WCN.js → list-evaluators-7RRESBOU.js} +5 -7
  161. package/dist/list-evaluators-VATJVOHR.js +32 -0
  162. package/dist/{list-model-providers-VVLZMLCX.js → list-model-providers-OXDRPUCJ.js} +4 -4
  163. package/dist/list-model-providers-VXQJWDXU.js +35 -0
  164. package/dist/{list-projects-AQVI6SUK.js → list-projects-HUVK7L3W.js} +5 -7
  165. package/dist/list-projects-X72ZXVY5.js +40 -0
  166. package/dist/{list-prompt-tags-WZFBJOHG.js → list-prompt-tags-3I3LWFIR.js} +3 -3
  167. package/dist/list-prompt-tags-DRHUH2ND.js +23 -0
  168. package/dist/list-prompts-6DX3QECJ.js +30 -0
  169. package/dist/{list-prompts-BQOHRHYT.js → list-prompts-PS423RU3.js} +4 -6
  170. package/dist/list-run-plans-5SXPOV3X.js +45 -0
  171. package/dist/{list-run-plans-UBAU2DGH.js → list-run-plans-6VNHINPY.js} +5 -5
  172. package/dist/list-scenarios-EQWCW7Q4.js +45 -0
  173. package/dist/{list-scenarios-MS4IUIVM.js → list-scenarios-GKNH3YND.js} +13 -11
  174. package/dist/{list-simulation-runs-D6YF4ZOU.js → list-simulation-runs-KHY7KALI.js} +12 -8
  175. package/dist/list-simulation-runs-PUDK32C2.js +53 -0
  176. package/dist/list-test-suites-7H2DRILK.js +34 -0
  177. package/dist/{list-test-suites-L7R2O6DR.js → list-test-suites-GY56LGLY.js} +4 -4
  178. package/dist/list-trigger-fires-7RZUP54Y.js +19 -0
  179. package/dist/list-trigger-fires-OZUF65LI.js +20 -0
  180. package/dist/list-triggers-BGUCUXTJ.js +45 -0
  181. package/dist/list-triggers-XC5KMX4C.js +46 -0
  182. package/dist/list-workflows-55NYC3PC.js +33 -0
  183. package/dist/{list-workflows-6MV4XJHF.js → list-workflows-HV7FUWZA.js} +5 -7
  184. package/dist/{rename-prompt-tag-K5LQ4CY6.js → rename-prompt-tag-2I7Z5FCY.js} +3 -3
  185. package/dist/rename-prompt-tag-SZYTOWDX.js +18 -0
  186. package/dist/{rename-test-suite-NTYHAO5X.js → rename-test-suite-27AYY33K.js} +4 -4
  187. package/dist/rename-test-suite-CLIEPZDO.js +20 -0
  188. package/dist/report-issue-5HSL7CNB.js +924 -0
  189. package/dist/{report-issue-RHZZ33IS.js → report-issue-N7ND5TM6.js} +107 -67
  190. package/dist/{rerun-run-plan-MUDWJBE4.js → rerun-run-plan-O3VUZ6CG.js} +5 -5
  191. package/dist/rerun-run-plan-OJTVVGJI.js +21 -0
  192. package/dist/{revoke-api-key-6LAZ3QZZ.js → revoke-api-key-BU6BKGCG.js} +4 -4
  193. package/dist/revoke-api-key-NZNCFOIR.js +15 -0
  194. package/dist/run-agent-244O4Y5M.js +75 -0
  195. package/dist/run-agent-HPCGZGYW.js +74 -0
  196. package/dist/run-plan-2ZPGGZ4H.js +38 -0
  197. package/dist/{run-plan-T4ZYOZGA.js → run-plan-KSXUYQT3.js} +7 -7
  198. package/dist/run-query-4LMOQ5UW.js +47 -0
  199. package/dist/run-query-BQUHIUC2.js +46 -0
  200. package/dist/{run-test-suite-L4MZ7G4D.js → run-test-suite-P3WLVPXC.js} +6 -6
  201. package/dist/run-test-suite-UEOMCON6.js +25 -0
  202. package/dist/run-workflow-EFZ6HG5B.js +36 -0
  203. package/dist/{run-workflow-DFIS23AP.js → run-workflow-I4IHEN54.js} +4 -4
  204. package/dist/search-traces-6IR7PR4L.js +170 -0
  205. package/dist/search-traces-BYML2NQ4.js +171 -0
  206. package/dist/set-model-provider-RBNGWFVI.js +33 -0
  207. package/dist/{set-model-provider-XRNMFOVR.js → set-model-provider-SHEVKWRC.js} +4 -4
  208. package/dist/{update-agent-DUWNYBNA.js → update-agent-PTKTM2B5.js} +4 -4
  209. package/dist/update-agent-ZPXWRMS2.js +20 -0
  210. package/dist/update-dashboard-widget-HKCBXH7X.js +62 -0
  211. package/dist/update-dashboard-widget-IP2TTQ5G.js +63 -0
  212. package/dist/update-dataset-GHIN6JR3.js +22 -0
  213. package/dist/{update-dataset-YSOMDCOB.js → update-dataset-IRVMY5PF.js} +6 -6
  214. package/dist/update-dataset-record-6VI7K2CL.js +19 -0
  215. package/dist/{update-dataset-record-DEA2ITYR.js → update-dataset-record-Z3L7ACNF.js} +4 -4
  216. package/dist/update-evaluator-5NLNE6VY.js +24 -0
  217. package/dist/{update-evaluator-NH7Q5GWV.js → update-evaluator-FEH7H6NS.js} +4 -4
  218. package/dist/update-project-75H3LDQT.js +24 -0
  219. package/dist/{update-project-Q26FBSYH.js → update-project-QPR3QX55.js} +4 -4
  220. package/dist/update-prompt-BCDFTNLK.js +140 -0
  221. package/dist/{update-prompt-ZQQ2C3KU.js → update-prompt-NPRXYSWA.js} +27 -29
  222. package/dist/update-scenario-BNOMDCMV.js +34 -0
  223. package/dist/{update-scenario-WUX34JAR.js → update-scenario-EM5XGMB7.js} +5 -5
  224. package/package.json +35 -39
  225. package/pyproject.toml +23 -8
  226. package/src/config.d.ts +6 -0
  227. package/src/config.ts +22 -29
  228. package/src/create-mcp-server.ts +887 -634
  229. package/src/documentation-fetch.ts +21 -20
  230. package/src/http-security.ts +166 -135
  231. package/src/http-server.ts +189 -224
  232. package/src/index.ts +14 -16
  233. package/src/langwatch-api-agents.ts +18 -21
  234. package/src/langwatch-api-analytics-reports.ts +62 -0
  235. package/src/langwatch-api-annotations.ts +11 -12
  236. package/src/langwatch-api-api-keys.ts +8 -9
  237. package/src/langwatch-api-dashboard-widgets.ts +47 -0
  238. package/src/langwatch-api-dashboards.ts +109 -24
  239. package/src/langwatch-api-datasets.ts +98 -32
  240. package/src/langwatch-api-evaluators.ts +13 -19
  241. package/src/langwatch-api-model-providers.ts +4 -4
  242. package/src/langwatch-api-monitors.ts +14 -18
  243. package/src/langwatch-api-projects.ts +10 -9
  244. package/src/langwatch-api-query.ts +114 -0
  245. package/src/langwatch-api-run-plans.ts +12 -29
  246. package/src/langwatch-api-scenarios.ts +9 -11
  247. package/src/langwatch-api-secrets.ts +31 -24
  248. package/src/langwatch-api-simulation-runs.ts +6 -8
  249. package/src/langwatch-api-test-suites.ts +14 -33
  250. package/src/langwatch-api-triggers.ts +96 -34
  251. package/src/langwatch-api-workflows.ts +9 -9
  252. package/src/langwatch-api.ts +118 -124
  253. package/src/public-http-request.ts +21 -12
  254. package/src/schemas/analytics-metrics.ts +3 -15
  255. package/src/schemas/create-dataset.ts +3 -4
  256. package/src/schemas/run-plan.ts +13 -29
  257. package/src/schemas/suite-fields.ts +6 -23
  258. package/src/schemas/triggers.ts +365 -0
  259. package/src/schemas/widget-sources.ts +33 -0
  260. package/src/tools/add-dashboard-widget.ts +51 -0
  261. package/src/tools/archive-project.ts +2 -4
  262. package/src/tools/archive-run-plan.ts +2 -4
  263. package/src/tools/archive-scenario.ts +2 -4
  264. package/src/tools/archive-test-suite.ts +2 -4
  265. package/src/tools/assign-prompt-tag.ts +6 -2
  266. package/src/tools/create-agent.ts +1 -1
  267. package/src/tools/create-analytics-report.ts +7 -0
  268. package/src/tools/create-annotation.ts +7 -2
  269. package/src/tools/create-api-key.ts +4 -6
  270. package/src/tools/create-dataset-records.ts +4 -8
  271. package/src/tools/create-dataset.ts +5 -7
  272. package/src/tools/create-evaluator.ts +3 -5
  273. package/src/tools/create-project.ts +2 -2
  274. package/src/tools/create-prompt-tag.ts +2 -4
  275. package/src/tools/create-prompt.ts +9 -18
  276. package/src/tools/create-scenario.ts +5 -7
  277. package/src/tools/create-test-suite.ts +4 -9
  278. package/src/tools/create-trigger.ts +55 -0
  279. package/src/tools/dashboard-widget-queries.ts +45 -0
  280. package/src/tools/dashboards.ts +104 -0
  281. package/src/tools/delete-agent.ts +1 -1
  282. package/src/tools/delete-analytics-report.ts +7 -0
  283. package/src/tools/delete-annotation.ts +1 -1
  284. package/src/tools/delete-dataset-records.ts +4 -8
  285. package/src/tools/delete-dataset.ts +3 -7
  286. package/src/tools/delete-evaluator.ts +4 -6
  287. package/src/tools/delete-prompt-tag.ts +2 -4
  288. package/src/tools/delete-workflow.ts +1 -1
  289. package/src/tools/discover-evaluator-schema.ts +34 -25
  290. package/src/tools/discover-scenario-schema.ts +41 -21
  291. package/src/tools/discover-schema.ts +149 -27
  292. package/src/tools/experiment-run-status.ts +2 -8
  293. package/src/tools/format-dataset-mutation.ts +5 -10
  294. package/src/tools/format-run-plan.ts +7 -21
  295. package/src/tools/format-scenario.ts +2 -4
  296. package/src/tools/format-suite-details.ts +6 -12
  297. package/src/tools/get-agent.ts +15 -6
  298. package/src/tools/get-analytics-report.ts +23 -0
  299. package/src/tools/get-analytics.ts +52 -46
  300. package/src/tools/get-dataset.ts +34 -16
  301. package/src/tools/get-evaluator.ts +4 -11
  302. package/src/tools/get-experiment-results.ts +219 -186
  303. package/src/tools/get-project.ts +2 -4
  304. package/src/tools/get-prompt.ts +63 -84
  305. package/src/tools/get-run-plan.ts +4 -6
  306. package/src/tools/get-scenario.ts +4 -6
  307. package/src/tools/get-simulation-run.ts +27 -24
  308. package/src/tools/get-test-suite.ts +2 -5
  309. package/src/tools/get-trace.ts +16 -17
  310. package/src/tools/get-workflow.ts +1 -1
  311. package/src/tools/list-agents.ts +1 -1
  312. package/src/tools/list-analytics-reports.ts +27 -0
  313. package/src/tools/list-annotations.ts +8 -5
  314. package/src/tools/list-api-keys.ts +7 -2
  315. package/src/tools/list-dashboards.ts +20 -21
  316. package/src/tools/list-dataset-records.ts +8 -6
  317. package/src/tools/list-datasets.ts +12 -23
  318. package/src/tools/list-evaluators.ts +4 -8
  319. package/src/tools/list-experiment-runs.ts +5 -9
  320. package/src/tools/list-experiments.ts +5 -11
  321. package/src/tools/list-model-providers.ts +3 -5
  322. package/src/tools/list-projects.ts +2 -4
  323. package/src/tools/list-prompt-tags.ts +3 -3
  324. package/src/tools/list-prompts.ts +4 -8
  325. package/src/tools/list-run-plans.ts +2 -2
  326. package/src/tools/list-scenarios.ts +14 -15
  327. package/src/tools/list-simulation-runs.ts +8 -4
  328. package/src/tools/list-test-suites.ts +1 -1
  329. package/src/tools/list-trigger-fires.ts +17 -0
  330. package/src/tools/list-triggers.ts +39 -0
  331. package/src/tools/list-workflows.ts +2 -4
  332. package/src/tools/rename-prompt-tag.ts +1 -1
  333. package/src/tools/rename-test-suite.ts +2 -5
  334. package/src/tools/report-issue.ts +7 -9
  335. package/src/tools/rerun-run-plan.ts +2 -5
  336. package/src/tools/revoke-api-key.ts +2 -4
  337. package/src/tools/run-agent.ts +29 -26
  338. package/src/tools/run-experiment.ts +37 -34
  339. package/src/tools/run-plan.ts +4 -7
  340. package/src/tools/run-query.ts +47 -0
  341. package/src/tools/run-test-suite.ts +4 -7
  342. package/src/tools/run-workflow.ts +2 -5
  343. package/src/tools/search-traces.ts +161 -47
  344. package/src/tools/set-model-provider.ts +4 -6
  345. package/src/tools/test-agent.ts +2 -2
  346. package/src/tools/update-agent.ts +1 -1
  347. package/src/tools/update-dashboard-widget.ts +86 -0
  348. package/src/tools/update-dataset-record.ts +1 -1
  349. package/src/tools/update-dataset.ts +5 -7
  350. package/src/tools/update-evaluator.ts +3 -5
  351. package/src/tools/update-project.ts +1 -1
  352. package/src/tools/update-prompt.ts +44 -59
  353. package/src/tools/update-scenario.ts +5 -7
  354. package/src/tools/update-test-suite.ts +6 -11
  355. package/src/utils/date-parsing.ts +1 -1
  356. package/src/utils/escape-markdown.ts +3 -8
  357. package/src/utils/format-evaluations.ts +6 -6
  358. package/src/utils/markdown-table.ts +58 -0
  359. package/src/utils/trace-id-shape.ts +20 -0
  360. package/tsconfig.app.json +24 -0
  361. package/tsconfig.json +14 -12
  362. package/uv.lock +667 -341
  363. package/vitest.integration.config.js +10 -0
  364. package/vitest.scenario.config.js +9 -0
  365. package/.eslintrc.cjs +0 -36
  366. package/dist/chunk-AN4OUA4D.js +0 -86
  367. package/dist/chunk-GELJ2MQR.js +0 -226
  368. package/dist/chunk-K37ZNPXK.js +0 -24
  369. package/dist/chunk-S4GVX36W.js +0 -39
  370. package/dist/config.d.ts +0 -17
  371. package/dist/create-dashboard-Z76AIPLS.js +0 -19
  372. package/dist/create-mcp-server.d.ts +0 -10
  373. package/dist/delete-dashboard-LYMRPF27.js +0 -19
  374. package/dist/delete-evaluator-RKYC4TNB.js +0 -16
  375. package/dist/discover-evaluator-schema-ESSHQGPY.js +0 -1912
  376. package/dist/get-analytics-R6AZD3AW.js +0 -73
  377. package/dist/get-dashboard-P4WWVHFU.js +0 -30
  378. package/dist/get-dataset-AKTYSQDI.js +0 -49
  379. package/dist/index.d.ts +0 -2
  380. package/dist/langwatch-api-dashboards-2KJL2M42.js +0 -18
  381. package/dist/langwatch-api-secrets-OEBD6GBU.js +0 -41
  382. package/dist/langwatch-api-triggers-5E6DDGX6.js +0 -31
  383. package/dist/list-dashboards-Z3BZKDGF.js +0 -33
  384. package/dist/run-agent-CAGWGTYT.js +0 -72
  385. package/dist/search-traces-4XTJYXIK.js +0 -79
  386. package/src/__tests__/agent-tools.unit.test.ts +0 -257
  387. package/src/__tests__/all-tools.integration.test.ts +0 -1872
  388. package/src/__tests__/config.unit.test.ts +0 -202
  389. package/src/__tests__/datasets.integration.test.ts +0 -620
  390. package/src/__tests__/datasets.unit.test.ts +0 -244
  391. package/src/__tests__/date-parsing.unit.test.ts +0 -78
  392. package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
  393. package/src/__tests__/discover-schema.unit.test.ts +0 -118
  394. package/src/__tests__/docker.integration.test.ts +0 -318
  395. package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
  396. package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
  397. package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
  398. package/src/__tests__/experiment-status.unit.test.ts +0 -194
  399. package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
  400. package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
  401. package/src/__tests__/http-security-origin.unit.test.ts +0 -97
  402. package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
  403. package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
  404. package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
  405. package/src/__tests__/http-server-origin.integration.test.ts +0 -169
  406. package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
  407. package/src/__tests__/http-transport.integration.test.ts +0 -395
  408. package/src/__tests__/integration.integration.test.ts +0 -284
  409. package/src/__tests__/langwatch-api.unit.test.ts +0 -661
  410. package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
  411. package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
  412. package/src/__tests__/prompt-response-types.unit.test.ts +0 -51
  413. package/src/__tests__/prompts.integration.test.ts +0 -736
  414. package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
  415. package/src/__tests__/report-issue.integration.test.ts +0 -147
  416. package/src/__tests__/run-plan-tools.unit.test.ts +0 -565
  417. package/src/__tests__/scenario-tools.integration.test.ts +0 -286
  418. package/src/__tests__/scenario-tools.unit.test.ts +0 -207
  419. package/src/__tests__/schemas.unit.test.ts +0 -85
  420. package/src/__tests__/simulation-run-tools.unit.test.ts +0 -116
  421. package/src/__tests__/support/http-server-harness.ts +0 -138
  422. package/src/__tests__/test-suite-tools.unit.test.ts +0 -615
  423. package/src/__tests__/tools.integration.test.ts +0 -896
  424. package/src/schemas/filter-fields.ts +0 -119
  425. package/src/schemas/index.ts +0 -9
  426. package/src/tools/create-dashboard.ts +0 -7
  427. package/src/tools/delete-dashboard.ts +0 -7
  428. package/src/tools/get-dashboard.ts +0 -22
@@ -10,20 +10,14 @@ function formatRunPlanRun(result) {
10
10
  lines.push(`**Set ID**: ${result.setId}`);
11
11
  lines.push(`**Jobs**: ${result.jobCount}`);
12
12
  if (result.skippedArchived.scenarios.length > 0) {
13
- lines.push(
14
- `**Skipped archived scenarios**: ${result.skippedArchived.scenarios.join(", ")}`
15
- );
13
+ lines.push(`**Skipped archived scenarios**: ${result.skippedArchived.scenarios.join(", ")}`);
16
14
  }
17
15
  if (result.skippedArchived.targets.length > 0) {
18
- lines.push(
19
- `**Skipped archived targets**: ${result.skippedArchived.targets.join(", ")}`
20
- );
16
+ lines.push(`**Skipped archived targets**: ${result.skippedArchived.targets.join(", ")}`);
21
17
  }
22
18
  lines.push(`**View**: ${result.platformUrl}`);
23
19
  lines.push("");
24
- lines.push(
25
- "> Use `platform_list_simulation_runs` with the batch run ID to read the results."
26
- );
20
+ lines.push("> Use `platform_list_simulation_runs` with the batch run ID to read the results.");
27
21
  return lines.join("\n");
28
22
  }
29
23
  function describeRunPlanScope(scope, scenarioIds) {
@@ -46,4 +40,4 @@ export {
46
40
  formatRunPlanRun,
47
41
  describeRunPlanScope
48
42
  };
49
- //# sourceMappingURL=chunk-JR6DJZOU.js.map
43
+ //# sourceMappingURL=chunk-RABYBFX5.js.map
@@ -1,35 +1,29 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-7CZQDZ2K.js";
4
4
 
5
5
  // src/langwatch-api-annotations.ts
6
6
  async function listAnnotations() {
7
- return makeRequest("GET", "/api/annotations");
7
+ return makeRequest("GET", "/api/v1/annotations");
8
8
  }
9
9
  async function getAnnotation(id) {
10
10
  return makeRequest(
11
11
  "GET",
12
- `/api/annotations/${encodeURIComponent(id)}`
12
+ `/api/v1/annotations/${encodeURIComponent(id)}`
13
13
  );
14
14
  }
15
15
  async function getAnnotationsByTrace(traceId) {
16
- return makeRequest(
17
- "GET",
18
- `/api/annotations/trace/${encodeURIComponent(traceId)}`
19
- );
16
+ return makeRequest("GET", `/api/v1/annotations/trace/${encodeURIComponent(traceId)}`);
20
17
  }
21
18
  async function createAnnotation(traceId, data) {
22
19
  return makeRequest(
23
20
  "POST",
24
- `/api/annotations/trace/${encodeURIComponent(traceId)}`,
21
+ `/api/v1/annotations/trace/${encodeURIComponent(traceId)}`,
25
22
  data
26
23
  );
27
24
  }
28
25
  async function deleteAnnotation(id) {
29
- return makeRequest(
30
- "DELETE",
31
- `/api/annotations/${encodeURIComponent(id)}`
32
- );
26
+ return makeRequest("DELETE", `/api/v1/annotations/${encodeURIComponent(id)}`);
33
27
  }
34
28
 
35
29
  export {
@@ -39,4 +33,4 @@ export {
39
33
  createAnnotation,
40
34
  deleteAnnotation
41
35
  };
42
- //# sourceMappingURL=chunk-SR6QPRIE.js.map
36
+ //# sourceMappingURL=chunk-RFC2SBEX.js.map
@@ -0,0 +1,21 @@
1
+ import {
2
+ makeRequest
3
+ } from "./chunk-7CZQDZ2K.js";
4
+
5
+ // src/langwatch-api-api-keys.ts
6
+ async function listApiKeys() {
7
+ return makeRequest("GET", "/api/v1/api-keys");
8
+ }
9
+ async function createApiKey(data) {
10
+ return makeRequest("POST", "/api/v1/api-keys", data);
11
+ }
12
+ async function revokeApiKey(id) {
13
+ return makeRequest("DELETE", `/api/v1/api-keys/${encodeURIComponent(id)}`);
14
+ }
15
+
16
+ export {
17
+ listApiKeys,
18
+ createApiKey,
19
+ revokeApiKey
20
+ };
21
+ //# sourceMappingURL=chunk-SHSVN3SE.js.map
@@ -2,10 +2,7 @@
2
2
  import { z } from "zod";
3
3
  var SUITE_FIELD_TYPES = ["text", "number", "boolean"];
4
4
  var suiteFieldSchema = z.object({
5
- identifier: z.string().min(1).max(64).regex(
6
- /^[a-z][a-z0-9_]*$/,
7
- "Lowercase letters, digits and underscores, starting with a letter"
8
- ).describe(
5
+ identifier: z.string().min(1).max(64).regex(/^[a-z][a-z0-9_]*$/, "Lowercase letters, digits and underscores, starting with a letter").describe(
9
6
  "The field name, as scenarios and evaluator mappings address it, for example golden_sql. Lowercase letters, digits and underscores, starting with a letter. situation, criteria, name, input and output are reserved."
10
7
  ),
11
8
  type: z.enum(SUITE_FIELD_TYPES).describe("The value type every scenario carries for this field.")
@@ -13,11 +10,7 @@ var suiteFieldSchema = z.object({
13
10
  var suiteFieldsSchema = z.array(suiteFieldSchema).max(30).describe(
14
11
  "The fields the test suite declares, in order. Up to 30. Every scenario filed in the suite carries one value per field, and an evaluator attached to the suite reads them through its mappings."
15
12
  );
16
- var SCENARIO_MAPPING_SOURCE_IDS = [
17
- "conversation",
18
- "scenario",
19
- "trace"
20
- ];
13
+ var SCENARIO_MAPPING_SOURCE_IDS = ["conversation", "scenario", "trace"];
21
14
  var scenarioMappingSchema = z.discriminatedUnion("type", [
22
15
  z.object({
23
16
  type: z.literal("source"),
@@ -71,4 +64,4 @@ export {
71
64
  scenarioFieldValuesSchema,
72
65
  toWireAttachments
73
66
  };
74
- //# sourceMappingURL=chunk-CKNAH5TG.js.map
67
+ //# sourceMappingURL=chunk-U24EACC4.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-7CZQDZ2K.js";
4
4
 
5
5
  // src/langwatch-api-run-plans.ts
6
6
  async function listRunPlans(params) {
@@ -8,17 +8,10 @@ async function listRunPlans(params) {
8
8
  return makeRequest("GET", `/api/v1/run-plans${query}`);
9
9
  }
10
10
  async function getRunPlan(id) {
11
- return makeRequest(
12
- "GET",
13
- `/api/v1/run-plans/${encodeURIComponent(id)}`
14
- );
11
+ return makeRequest("GET", `/api/v1/run-plans/${encodeURIComponent(id)}`);
15
12
  }
16
13
  async function runRunPlan(data) {
17
- return makeRequest(
18
- "POST",
19
- "/api/v1/run-plans/run",
20
- data
21
- );
14
+ return makeRequest("POST", "/api/v1/run-plans/run", data);
22
15
  }
23
16
  async function rerunRunPlan(id, data) {
24
17
  return makeRequest(
@@ -41,4 +34,4 @@ export {
41
34
  rerunRunPlan,
42
35
  archiveRunPlan
43
36
  };
44
- //# sourceMappingURL=chunk-56OGTS24.js.map
37
+ //# sourceMappingURL=chunk-VOUGDY2O.js.map
@@ -0,0 +1,31 @@
1
+ // src/tools/dashboard-widget-queries.ts
2
+ function withSources({
3
+ queries,
4
+ sources
5
+ }) {
6
+ if (sources === void 0) return [...queries];
7
+ return queries.map((query) => ({ ...query, sources }));
8
+ }
9
+ var MAX_DASHBOARD_WIDGET_QUERIES = 8;
10
+ function normalizeDashboardWidgetQueries({
11
+ queries
12
+ }) {
13
+ const normalized = Array.isArray(queries) ? queries : Object.entries(queries).map(([name, sql]) => ({ name, sql }));
14
+ if (normalized.length === 0) {
15
+ throw new Error(
16
+ "Provide at least one named LWQL query in `queries`. Validate each query's SQL first with run_query."
17
+ );
18
+ }
19
+ if (normalized.length > MAX_DASHBOARD_WIDGET_QUERIES) {
20
+ throw new Error(
21
+ `A widget may declare at most ${MAX_DASHBOARD_WIDGET_QUERIES} queries, got ${normalized.length}.`
22
+ );
23
+ }
24
+ return normalized;
25
+ }
26
+
27
+ export {
28
+ withSources,
29
+ normalizeDashboardWidgetQueries
30
+ };
31
+ //# sourceMappingURL=chunk-WCKZDOGF.js.map
@@ -0,0 +1,129 @@
1
+ import {
2
+ LangWatchApiError,
3
+ makeRequest
4
+ } from "./chunk-7CZQDZ2K.js";
5
+
6
+ // src/langwatch-api-datasets.ts
7
+ var DATASET_PREVIEW_MAX_RECORDS = 100;
8
+ var DATASET_PREVIEW_MAX_BYTES = 1024 * 1024;
9
+ async function listDatasets(params) {
10
+ const query = new URLSearchParams();
11
+ if (params?.page != null) query.set("page", String(params.page));
12
+ if (params?.limit != null) query.set("limit", String(params.limit));
13
+ const qs = query.toString();
14
+ const path = qs ? `/api/v1/dataset?${qs}` : "/api/v1/dataset";
15
+ return makeRequest("GET", path);
16
+ }
17
+ async function getDataset(slugOrId) {
18
+ const page = await readPreviewPage(slugOrId);
19
+ if (!page?.dataset) {
20
+ return makeRequest(
21
+ "GET",
22
+ `/api/v1/dataset/${encodeURIComponent(slugOrId)}`
23
+ );
24
+ }
25
+ const data = [];
26
+ let bytes = 0;
27
+ for (const record of page.data) {
28
+ bytes += JSON.stringify(record).length;
29
+ if (bytes > DATASET_PREVIEW_MAX_BYTES) break;
30
+ data.push(record);
31
+ }
32
+ const { id, name, slug, columnTypes, createdAt, updatedAt } = page.dataset;
33
+ const totalRecords = page.pagination.total;
34
+ return {
35
+ id,
36
+ name,
37
+ slug,
38
+ columnTypes,
39
+ createdAt,
40
+ updatedAt,
41
+ data,
42
+ totalRecords,
43
+ omittedRecords: Math.max(0, totalRecords - data.length)
44
+ };
45
+ }
46
+ async function readPreviewPage(slugOrId) {
47
+ let limit = DATASET_PREVIEW_MAX_RECORDS;
48
+ for (; ; ) {
49
+ try {
50
+ return await listDatasetRecords({ slugOrId, page: 1, limit });
51
+ } catch (error) {
52
+ if (!(error instanceof LangWatchApiError)) throw error;
53
+ if (error.status === 404) return null;
54
+ if (error.status !== 413 || limit <= 1) throw error;
55
+ limit = smallerLimit(limit, error.responseBody);
56
+ }
57
+ }
58
+ }
59
+ function smallerLimit(limit, responseBody) {
60
+ const half = Math.max(1, Math.floor(limit / 2));
61
+ try {
62
+ const suggested = JSON.parse(responseBody).meta?.suggestedLimit;
63
+ const usable = typeof suggested === "number" && Number.isInteger(suggested) && suggested >= 1 && suggested < limit;
64
+ return usable ? suggested : half;
65
+ } catch {
66
+ return half;
67
+ }
68
+ }
69
+ async function createDataset(data) {
70
+ return makeRequest("POST", "/api/v1/dataset", data);
71
+ }
72
+ async function updateDataset(params) {
73
+ const { slugOrId, ...data } = params;
74
+ return makeRequest(
75
+ "PATCH",
76
+ `/api/v1/dataset/${encodeURIComponent(slugOrId)}`,
77
+ data
78
+ );
79
+ }
80
+ async function deleteDataset(slugOrId) {
81
+ return makeRequest(
82
+ "DELETE",
83
+ `/api/v1/dataset/${encodeURIComponent(slugOrId)}`
84
+ );
85
+ }
86
+ async function createDatasetRecords(params) {
87
+ const { slugOrId, entries } = params;
88
+ return makeRequest("POST", `/api/v1/dataset/${encodeURIComponent(slugOrId)}/records`, {
89
+ entries
90
+ });
91
+ }
92
+ async function updateDatasetRecord(params) {
93
+ const { slugOrId, recordId, entry } = params;
94
+ return makeRequest(
95
+ "PATCH",
96
+ `/api/v1/dataset/${encodeURIComponent(slugOrId)}/records/${encodeURIComponent(recordId)}`,
97
+ { entry }
98
+ );
99
+ }
100
+ async function deleteDatasetRecords(params) {
101
+ const { slugOrId, recordIds } = params;
102
+ return makeRequest("DELETE", `/api/v1/dataset/${encodeURIComponent(slugOrId)}/records`, {
103
+ recordIds
104
+ });
105
+ }
106
+ async function listDatasetRecords(params) {
107
+ const { slugOrId } = params;
108
+ const query = new URLSearchParams();
109
+ if (params.page != null) query.set("page", String(params.page));
110
+ if (params.limit != null) query.set("limit", String(params.limit));
111
+ const qs = query.toString();
112
+ const path = `/api/v1/dataset/${encodeURIComponent(slugOrId)}/records${qs ? `?${qs}` : ""}`;
113
+ return makeRequest("GET", path);
114
+ }
115
+
116
+ export {
117
+ DATASET_PREVIEW_MAX_RECORDS,
118
+ DATASET_PREVIEW_MAX_BYTES,
119
+ listDatasets,
120
+ getDataset,
121
+ createDataset,
122
+ updateDataset,
123
+ deleteDataset,
124
+ createDatasetRecords,
125
+ updateDatasetRecord,
126
+ deleteDatasetRecords,
127
+ listDatasetRecords
128
+ };
129
+ //# sourceMappingURL=chunk-XQYH52SI.js.map
@@ -12,4 +12,4 @@ function formatScenarioFields(fields) {
12
12
  export {
13
13
  formatScenarioFields
14
14
  };
15
- //# sourceMappingURL=chunk-7E4FZIYJ.js.map
15
+ //# sourceMappingURL=chunk-XUIJYNRJ.js.map
@@ -1,17 +1,13 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-GELJ2MQR.js";
3
+ } from "./chunk-7CZQDZ2K.js";
4
4
 
5
5
  // src/langwatch-api-test-suites.ts
6
6
  async function listTestSuites() {
7
7
  return makeRequest("GET", "/api/v1/test-suites");
8
8
  }
9
9
  async function createTestSuite(data) {
10
- return makeRequest(
11
- "POST",
12
- "/api/v1/test-suites",
13
- data
14
- );
10
+ return makeRequest("POST", "/api/v1/test-suites", data);
15
11
  }
16
12
  async function getTestSuite(id) {
17
13
  return makeRequest(
@@ -28,11 +24,9 @@ async function updateTestSuite(params) {
28
24
  );
29
25
  }
30
26
  async function renameTestSuite(params) {
31
- return makeRequest(
32
- "PATCH",
33
- `/api/v1/test-suites/${encodeURIComponent(params.id)}`,
34
- { name: params.name }
35
- );
27
+ return makeRequest("PATCH", `/api/v1/test-suites/${encodeURIComponent(params.id)}`, {
28
+ name: params.name
29
+ });
36
30
  }
37
31
  async function archiveTestSuite(id) {
38
32
  return makeRequest(
@@ -60,4 +54,4 @@ export {
60
54
  archiveTestSuite,
61
55
  runTestSuite
62
56
  };
63
- //# sourceMappingURL=chunk-6DJDEXET.js.map
57
+ //# sourceMappingURL=chunk-YCIUEZVK.js.map
@@ -0,0 +1,16 @@
1
+ import {
2
+ getConfig,
3
+ initConfig,
4
+ requireApiKey,
5
+ runWithConfig,
6
+ tryGetConfig
7
+ } from "./chunk-DULFP3MK.js";
8
+ import "./chunk-SAS5OB7F.js";
9
+ export {
10
+ getConfig,
11
+ initConfig,
12
+ requireApiKey,
13
+ runWithConfig,
14
+ tryGetConfig
15
+ };
16
+ //# sourceMappingURL=config-2WQGMAEN.js.map
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/config.ts
21
+ var config_exports = {};
22
+ __export(config_exports, {
23
+ getConfig: () => getConfig,
24
+ initConfig: () => initConfig,
25
+ requireApiKey: () => requireApiKey,
26
+ runWithConfig: () => runWithConfig,
27
+ tryGetConfig: () => tryGetConfig
28
+ });
29
+ module.exports = __toCommonJS(config_exports);
30
+ var import_node_async_hooks = require("async_hooks");
31
+ var GLOBAL_KEY = "__langwatch_mcp_config";
32
+ var STORAGE_KEY = "__langwatch_mcp_config_storage";
33
+ function getGlobalState() {
34
+ const g = globalThis;
35
+ if (!g[GLOBAL_KEY]) {
36
+ g[GLOBAL_KEY] = void 0;
37
+ }
38
+ if (!g[STORAGE_KEY]) {
39
+ g[STORAGE_KEY] = new import_node_async_hooks.AsyncLocalStorage();
40
+ }
41
+ return {
42
+ get globalConfig() {
43
+ return g[GLOBAL_KEY];
44
+ },
45
+ set globalConfig(val) {
46
+ g[GLOBAL_KEY] = val;
47
+ },
48
+ get configStorage() {
49
+ return g[STORAGE_KEY];
50
+ }
51
+ };
52
+ }
53
+ function normalizeEndpoint(endpoint) {
54
+ const trimmed = endpoint.trim();
55
+ let end = trimmed.length;
56
+ while (end > 0 && trimmed[end - 1] === "/") end--;
57
+ return trimmed.slice(0, end);
58
+ }
59
+ function initConfig(args) {
60
+ const state = getGlobalState();
61
+ state.globalConfig = {
62
+ apiKey: args.apiKey || process.env.LANGWATCH_API_KEY,
63
+ endpoint: normalizeEndpoint(args.endpoint ?? "") || normalizeEndpoint(process.env.LANGWATCH_ENDPOINT ?? "") || "https://app.langwatch.ai",
64
+ projectId: args.projectId ?? process.env.LANGWATCH_PROJECT_ID
65
+ };
66
+ }
67
+ function tryGetConfig() {
68
+ const state = getGlobalState();
69
+ return state.configStorage.getStore() ?? state.globalConfig;
70
+ }
71
+ function getConfig() {
72
+ const config = tryGetConfig();
73
+ if (!config) {
74
+ console.error(
75
+ "[MCP config] getConfig() failed: globalConfig is null, no scoped config active. Was initConfig() called? Stack:",
76
+ new Error().stack
77
+ );
78
+ throw new Error("Config not initialized");
79
+ }
80
+ return config;
81
+ }
82
+ function requireApiKey() {
83
+ const config = getConfig();
84
+ if (!config.apiKey) {
85
+ const state = getGlobalState();
86
+ const hasScoped = !!state.configStorage.getStore();
87
+ console.error(
88
+ `[MCP config] requireApiKey() failed: apiKey is undefined. scopedConfig=${hasScoped}, endpoint=${config.endpoint}. In HTTP mode, the API key should be set per-session via runWithConfig(). Stack:`,
89
+ new Error().stack
90
+ );
91
+ throw new Error(
92
+ "LANGWATCH_API_KEY is required. Set it via --apiKey flag or LANGWATCH_API_KEY environment variable."
93
+ );
94
+ }
95
+ return config.apiKey;
96
+ }
97
+ function runWithConfig(config, fn) {
98
+ const state = getGlobalState();
99
+ return state.configStorage.run(config, fn);
100
+ }
101
+ // Annotate the CommonJS export names for ESM import in node:
102
+ 0 && (module.exports = {
103
+ getConfig,
104
+ initConfig,
105
+ requireApiKey,
106
+ runWithConfig,
107
+ tryGetConfig
108
+ });
109
+ //# sourceMappingURL=config.cjs.map
package/dist/config.js CHANGED
@@ -2,13 +2,14 @@ import {
2
2
  getConfig,
3
3
  initConfig,
4
4
  requireApiKey,
5
- runWithConfig
6
- } from "./chunk-WT4PO4A3.js";
7
- import "./chunk-SAS5OB7F.js";
5
+ runWithConfig,
6
+ tryGetConfig
7
+ } from "./chunk-DULFP3MK.js";
8
8
  export {
9
9
  getConfig,
10
10
  initConfig,
11
11
  requireApiKey,
12
- runWithConfig
12
+ runWithConfig,
13
+ tryGetConfig
13
14
  };
14
15
  //# sourceMappingURL=config.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  createAgent
3
- } from "./chunk-EYXMLE5X.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-4RX3G62A.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/create-agent.ts
@@ -21,4 +21,4 @@ async function handleCreateAgent(params) {
21
21
  export {
22
22
  handleCreateAgent
23
23
  };
24
- //# sourceMappingURL=create-agent-JFJ2K6X3.js.map
24
+ //# sourceMappingURL=create-agent-6JNLMYQD.js.map
@@ -0,0 +1,23 @@
1
+ import {
2
+ createAgent
3
+ } from "./chunk-EYPJBL7P.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.js";
6
+
7
+ // src/tools/create-agent.ts
8
+ async function handleCreateAgent(params) {
9
+ const agent = await createAgent({
10
+ name: params.name,
11
+ type: params.type,
12
+ config: params.config ?? {}
13
+ });
14
+ return `Agent created successfully!
15
+
16
+ **Name**: ${agent.name}
17
+ **ID**: ${agent.id}
18
+ **Type**: ${agent.type}`;
19
+ }
20
+ export {
21
+ handleCreateAgent
22
+ };
23
+ //# sourceMappingURL=create-agent-IRZOU4R5.js.map
@@ -0,0 +1,19 @@
1
+ import {
2
+ createAnalyticsReport
3
+ } from "./chunk-O2WGVCED.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.js";
6
+ import "./chunk-SAS5OB7F.js";
7
+
8
+ // src/tools/create-analytics-report.ts
9
+ async function handleCreateAnalyticsReport(params) {
10
+ const report = await createAnalyticsReport({ name: params.name });
11
+ return `Analytics Report created successfully!
12
+
13
+ **Name**: ${report.name}
14
+ **ID**: ${report.id}`;
15
+ }
16
+ export {
17
+ handleCreateAnalyticsReport
18
+ };
19
+ //# sourceMappingURL=create-analytics-report-N4L4V5QL.js.map
@@ -0,0 +1,18 @@
1
+ import {
2
+ createAnalyticsReport
3
+ } from "./chunk-O2WGVCED.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.js";
6
+
7
+ // src/tools/create-analytics-report.ts
8
+ async function handleCreateAnalyticsReport(params) {
9
+ const report = await createAnalyticsReport({ name: params.name });
10
+ return `Analytics Report created successfully!
11
+
12
+ **Name**: ${report.name}
13
+ **ID**: ${report.id}`;
14
+ }
15
+ export {
16
+ handleCreateAnalyticsReport
17
+ };
18
+ //# sourceMappingURL=create-analytics-report-QEHXG7FU.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  createAnnotation
3
- } from "./chunk-SR6QPRIE.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-RFC2SBEX.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/create-annotation.ts
@@ -12,7 +12,12 @@ async function handleCreateAnnotation(params) {
12
12
  isThumbsUp: params.isThumbsUp,
13
13
  email: params.email
14
14
  });
15
- const rating = params.isThumbsUp === true ? " \u{1F44D}" : params.isThumbsUp === false ? " \u{1F44E}" : "";
15
+ let rating = "";
16
+ if (params.isThumbsUp === true) {
17
+ rating = " \u{1F44D}";
18
+ } else if (params.isThumbsUp === false) {
19
+ rating = " \u{1F44E}";
20
+ }
16
21
  return `Annotation created successfully!${rating}
17
22
 
18
23
  **ID**: ${annotation.id ?? "\u2014"}
@@ -22,4 +27,4 @@ async function handleCreateAnnotation(params) {
22
27
  export {
23
28
  handleCreateAnnotation
24
29
  };
25
- //# sourceMappingURL=create-annotation-EUXXQ6NS.js.map
30
+ //# sourceMappingURL=create-annotation-CCEGIZ67.js.map
@@ -0,0 +1,29 @@
1
+ import {
2
+ createAnnotation
3
+ } from "./chunk-RFC2SBEX.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.js";
6
+
7
+ // src/tools/create-annotation.ts
8
+ async function handleCreateAnnotation(params) {
9
+ const annotation = await createAnnotation(params.traceId, {
10
+ comment: params.comment,
11
+ isThumbsUp: params.isThumbsUp,
12
+ email: params.email
13
+ });
14
+ let rating = "";
15
+ if (params.isThumbsUp === true) {
16
+ rating = " \u{1F44D}";
17
+ } else if (params.isThumbsUp === false) {
18
+ rating = " \u{1F44E}";
19
+ }
20
+ return `Annotation created successfully!${rating}
21
+
22
+ **ID**: ${annotation.id ?? "\u2014"}
23
+ **Trace ID**: ${params.traceId}${params.comment ? `
24
+ **Comment**: ${params.comment}` : ""}`;
25
+ }
26
+ export {
27
+ handleCreateAnnotation
28
+ };
29
+ //# sourceMappingURL=create-annotation-DTHCMWHB.js.map