@langwatch/mcp-server 2.1.0 → 2.2.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 (415) hide show
  1. package/.gitignore +7 -0
  2. package/.npmignore +41 -0
  3. package/CHANGELOG.md +192 -201
  4. package/CONTRIBUTING.md +10 -0
  5. package/README.md +70 -68
  6. package/dist/add-dashboard-widget-4ZC5UN73.js +50 -0
  7. package/dist/add-dashboard-widget-ACC6QYBG.js +49 -0
  8. package/dist/archive-project-KWFM3I5Z.js +19 -0
  9. package/dist/{archive-project-W3IKI7UL.js → archive-project-SPVHXK6A.js} +4 -4
  10. package/dist/{archive-run-plan-474OKHHU.js → archive-run-plan-65QN3XRX.js} +4 -4
  11. package/dist/archive-run-plan-Z4SYE6BP.js +15 -0
  12. package/dist/{archive-scenario-V5UNYK26.js → archive-scenario-A6QV5LOW.js} +4 -4
  13. package/dist/archive-scenario-FXEYQNEH.js +19 -0
  14. package/dist/archive-test-suite-5ADQ3KPQ.js +15 -0
  15. package/dist/{archive-test-suite-O7FLDMXK.js → archive-test-suite-NKZDZY3D.js} +4 -4
  16. package/dist/assign-prompt-tag-5IUZXJ2T.js +23 -0
  17. package/dist/{assign-prompt-tag-Q46WRB6P.js → assign-prompt-tag-HBZLBIFD.js} +8 -4
  18. package/dist/{chunk-OJLYYJWI.js → chunk-3OCG3QPU.js} +7 -10
  19. package/dist/chunk-3YLN3ATJ.js +241 -0
  20. package/dist/chunk-5FNCQRCX.js +91 -0
  21. package/dist/{chunk-UF6XIGYR.js → chunk-6YZUOD34.js} +2 -5
  22. package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
  23. package/dist/chunk-7VNSRCXO.js +129 -0
  24. package/dist/{chunk-G4ZAZTZW.js → chunk-B4J3PJLX.js} +11 -10
  25. package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
  26. package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
  27. package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
  28. package/dist/{chunk-WT4PO4A3.js → chunk-H6WGMG2T.js} +10 -7
  29. package/dist/{chunk-EYXMLE5X.js → chunk-HGELNIVY.js} +56 -47
  30. package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
  31. package/dist/{chunk-RVAE2MEA.js → chunk-I7ATIZED.js} +7 -7
  32. package/dist/{chunk-S4GVX36W.js → chunk-ILZDO25L.js} +7 -10
  33. package/dist/{chunk-QRO35SOM.js → chunk-J7PQKBLD.js} +652 -528
  34. package/dist/{chunk-SR6QPRIE.js → chunk-JRJPH75H.js} +7 -13
  35. package/dist/chunk-K2I7Z3LZ.js +28 -0
  36. package/dist/{chunk-UFOYFYI7.js → chunk-NKMTIHIJ.js} +6 -9
  37. package/dist/{chunk-HV4DWKBI.js → chunk-O7EMWEVJ.js} +2 -4
  38. package/dist/{chunk-56OGTS24.js → chunk-PTDR56Z3.js} +4 -11
  39. package/dist/{chunk-JR6DJZOU.js → chunk-RABYBFX5.js} +4 -10
  40. package/dist/chunk-SUPUUC4W.js +64 -0
  41. package/dist/{chunk-JTQJRNFJ.js → chunk-SXFC3FNH.js} +4 -4
  42. package/dist/{chunk-CKNAH5TG.js → chunk-U24EACC4.js} +3 -10
  43. package/dist/chunk-UNJM3BIL.js +21 -0
  44. package/dist/{chunk-QAMP3CGR.js → chunk-UTJCWXPZ.js} +4 -4
  45. package/dist/chunk-UWLE5T2F.js +312 -0
  46. package/dist/{chunk-6DJDEXET.js → chunk-VMWJD732.js} +6 -12
  47. package/dist/{chunk-7E4FZIYJ.js → chunk-XUIJYNRJ.js} +1 -1
  48. package/dist/chunk-Y34DHR5K.js +67 -0
  49. package/dist/chunk-YCARO42Z.js +516 -0
  50. package/dist/config-EAKW6F26.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-AYZ3LB3V.js} +4 -4
  54. package/dist/create-agent-S5ZBCEFT.js +23 -0
  55. package/dist/create-annotation-LHNCLHYP.js +29 -0
  56. package/dist/{create-annotation-EUXXQ6NS.js → create-annotation-VUSXULQK.js} +10 -5
  57. package/dist/{create-api-key-BGBB76JX.js → create-api-key-NNYKARMG.js} +5 -7
  58. package/dist/create-api-key-T4KSNPKB.js +24 -0
  59. package/dist/create-dashboard-DHVFMEU4.js +18 -0
  60. package/dist/{create-dashboard-Z76AIPLS.js → create-dashboard-WTKKS5Z6.js} +4 -4
  61. package/dist/{create-dataset-FD5VAXU4.js → create-dataset-2MC4SD4O.js} +6 -6
  62. package/dist/create-dataset-LUP5PVDM.js +22 -0
  63. package/dist/create-dataset-records-NSKBZP3G.js +20 -0
  64. package/dist/{create-dataset-records-WQUXXOHI.js → create-dataset-records-W4GLN2FV.js} +5 -7
  65. package/dist/{create-evaluator-6NV33Z52.js → create-evaluator-643G6LXL.js} +4 -4
  66. package/dist/create-evaluator-HMTYO5SS.js +27 -0
  67. package/dist/create-mcp-server.cjs +9513 -0
  68. package/dist/create-mcp-server.js +2647 -10
  69. package/dist/create-project-6N7PIYRY.js +44 -0
  70. package/dist/{create-project-ZQ7TFIO2.js → create-project-KAIC46UY.js} +4 -4
  71. package/dist/{create-prompt-BS6QRCUU.js → create-prompt-E67LXIYT.js} +5 -7
  72. package/dist/create-prompt-PKJ7EDRR.js +37 -0
  73. package/dist/create-prompt-tag-4YO3FSJ3.js +17 -0
  74. package/dist/{create-prompt-tag-FCQ5ELSQ.js → create-prompt-tag-OPQUEXWB.js} +3 -3
  75. package/dist/create-scenario-5PJBMAXO.js +33 -0
  76. package/dist/{create-scenario-DRPTPXU3.js → create-scenario-UEM77OE7.js} +5 -5
  77. package/dist/{create-test-suite-ZIZCCFJ4.js → create-test-suite-4IPXVSFQ.js} +6 -6
  78. package/dist/create-test-suite-SZEPVXSE.js +36 -0
  79. package/dist/create-trigger-5HZSCRAN.js +49 -0
  80. package/dist/create-trigger-PRELMT6J.js +48 -0
  81. package/dist/delete-agent-JUIZWAXG.js +18 -0
  82. package/dist/{delete-agent-SA4JMUZF.js → delete-agent-QMEK3XHK.js} +4 -4
  83. package/dist/delete-annotation-HY3O2OGR.js +17 -0
  84. package/dist/{delete-annotation-X3KKK7QY.js → delete-annotation-VKIQWUYW.js} +4 -4
  85. package/dist/delete-dashboard-76N66XXL.js +18 -0
  86. package/dist/{delete-dashboard-LYMRPF27.js → delete-dashboard-JVIVHNJM.js} +4 -4
  87. package/dist/delete-dataset-HQCR66MG.js +18 -0
  88. package/dist/{delete-dataset-W6EZ44HY.js → delete-dataset-WKRUW4FP.js} +5 -7
  89. package/dist/{delete-dataset-records-7CNOTALB.js → delete-dataset-records-C2IQFFVQ.js} +5 -7
  90. package/dist/delete-dataset-records-SDUHQLLM.js +19 -0
  91. package/dist/delete-evaluator-4SNSCLEE.js +16 -0
  92. package/dist/delete-evaluator-QP3QHTLN.js +15 -0
  93. package/dist/delete-prompt-tag-NZ4JQMYG.js +17 -0
  94. package/dist/{delete-prompt-tag-QB3OCZUV.js → delete-prompt-tag-YYQ4VMAD.js} +3 -3
  95. package/dist/{delete-workflow-NG2VXYYM.js → delete-workflow-5J46T73T.js} +4 -4
  96. package/dist/delete-workflow-JSWABL5F.js +17 -0
  97. package/dist/discover-evaluator-schema-UHWA5HVL.js +120 -0
  98. package/dist/discover-evaluator-schema-XKCLLCB3.js +118 -0
  99. package/dist/discover-scenario-schema-NOJY6S7E.js +137 -0
  100. package/dist/{discover-scenario-schema-W7KBXA4J.js → discover-scenario-schema-OOFIQKOG.js} +37 -17
  101. package/dist/{discover-schema-L6QDPON3.js → discover-schema-55YJBFGQ.js} +181 -186
  102. package/dist/discover-schema-A33SLMXW.js +442 -0
  103. package/dist/get-agent-LJQX7OF4.js +69 -0
  104. package/dist/{get-agent-7THF7HCU.js → get-agent-OTIYUFZA.js} +15 -11
  105. package/dist/get-analytics-DCS72353.js +80 -0
  106. package/dist/get-analytics-IQZKJHLW.js +79 -0
  107. package/dist/get-dashboard-5NYJEIX2.js +29 -0
  108. package/dist/{get-dashboard-P4WWVHFU.js → get-dashboard-QMTYDQAZ.js} +4 -4
  109. package/dist/get-dataset-ALSP7RTX.js +64 -0
  110. package/dist/get-dataset-X4B5JDG2.js +63 -0
  111. package/dist/{get-evaluator-RZ44UIN6.js → get-evaluator-ISMC4LLI.js} +4 -4
  112. package/dist/get-evaluator-XEUZGZCH.js +47 -0
  113. package/dist/{get-project-QSQEAB33.js → get-project-5VKROSDH.js} +4 -4
  114. package/dist/get-project-RM6FRCBK.js +26 -0
  115. package/dist/{get-prompt-GVKXF5NL.js → get-prompt-OWXJZHQQ.js} +53 -58
  116. package/dist/get-prompt-W52DY36E.js +94 -0
  117. package/dist/{get-run-plan-NY7J5GRE.js → get-run-plan-BE3M2AUX.js} +7 -9
  118. package/dist/get-run-plan-RUXQ6PAX.js +58 -0
  119. package/dist/get-scenario-RNM7BAX2.js +37 -0
  120. package/dist/{get-scenario-Q3LLQE4T.js → get-scenario-YM4ODWW6.js} +5 -5
  121. package/dist/get-simulation-run-6GIATQE5.js +69 -0
  122. package/dist/{get-simulation-run-WINEYDMK.js → get-simulation-run-LCFSMPGQ.js} +26 -22
  123. package/dist/{get-test-suite-4HKA7OKS.js → get-test-suite-GC2O7YH6.js} +5 -5
  124. package/dist/get-test-suite-P5LJ6VLF.js +48 -0
  125. package/dist/get-trace-KBRVV4NN.js +45 -0
  126. package/dist/{get-trace-RCUV7N4O.js → get-trace-SEF3FMR5.js} +11 -13
  127. package/dist/get-workflow-7PVED7JE.js +25 -0
  128. package/dist/{get-workflow-EEOC7Y45.js → get-workflow-YXULW4GC.js} +4 -4
  129. package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
  130. package/dist/{http-server-WCDUARTH.js → http-server-IR4QOS43.js} +4071 -347
  131. package/dist/index.js +58671 -37983
  132. package/dist/langwatch-api-annotations-6SA4OB4C.js +17 -0
  133. package/dist/{langwatch-api-annotations-6DHVZWUK.js → langwatch-api-annotations-TBHLCQ5R.js} +4 -4
  134. package/dist/langwatch-api-dashboards-6EO2VVZW.js +17 -0
  135. package/dist/{langwatch-api-dashboards-2KJL2M42.js → langwatch-api-dashboards-NHU5BZD7.js} +4 -4
  136. package/dist/langwatch-api-monitors-CBF3FGIM.js +47 -0
  137. package/dist/{langwatch-api-monitors-6ISFJ7WX.js → langwatch-api-monitors-YNWA2M5Y.js} +11 -16
  138. package/dist/langwatch-api-secrets-ADTOJELP.js +56 -0
  139. package/dist/langwatch-api-secrets-RNFO4LF2.js +55 -0
  140. package/dist/langwatch-api-triggers-KQDQC6L5.js +22 -0
  141. package/dist/langwatch-api-triggers-QS7HDIVW.js +23 -0
  142. package/dist/{langwatch-api-workflows-6UJL5U4Z.js → langwatch-api-workflows-OKC4FXIF.js} +4 -4
  143. package/dist/langwatch-api-workflows-XGJE6SR5.js +15 -0
  144. package/dist/{list-agents-AMVDQPQL.js → list-agents-HVYWEQMI.js} +4 -4
  145. package/dist/list-agents-RBAOCF53.js +42 -0
  146. package/dist/list-annotations-HJH4NBLD.js +38 -0
  147. package/dist/{list-annotations-6PR5NLIC.js → list-annotations-J4UAHSUN.js} +10 -5
  148. package/dist/{list-api-keys-GVPNBIHQ.js → list-api-keys-7UTJRZDG.js} +10 -5
  149. package/dist/list-api-keys-A2PMV435.js +42 -0
  150. package/dist/list-dashboard-boards-OPWROHMG.js +33 -0
  151. package/dist/list-dashboard-boards-U2GJ7GC5.js +34 -0
  152. package/dist/{list-dashboards-Z3BZKDGF.js → list-dashboards-ROSYFLDQ.js} +4 -4
  153. package/dist/list-dashboards-RQ635ZU7.js +32 -0
  154. package/dist/{list-dataset-records-O67HZ35Y.js → list-dataset-records-M5TKA6LK.js} +14 -10
  155. package/dist/list-dataset-records-WFM7F33C.js +43 -0
  156. package/dist/{list-datasets-WXZL6UMP.js → list-datasets-B5X4P7BQ.js} +9 -13
  157. package/dist/list-datasets-THUKQHPX.js +56 -0
  158. package/dist/{list-evaluators-PAX72WCN.js → list-evaluators-MYH2OVCI.js} +5 -7
  159. package/dist/list-evaluators-NLVWF6K7.js +32 -0
  160. package/dist/{list-model-providers-VVLZMLCX.js → list-model-providers-3JUGP4YI.js} +4 -4
  161. package/dist/list-model-providers-H3XKORFO.js +35 -0
  162. package/dist/{list-projects-AQVI6SUK.js → list-projects-6EJ5YYEW.js} +5 -7
  163. package/dist/list-projects-YNNSRMLC.js +40 -0
  164. package/dist/{list-prompt-tags-WZFBJOHG.js → list-prompt-tags-NVFQO6WX.js} +3 -3
  165. package/dist/list-prompt-tags-XUQTTAH4.js +23 -0
  166. package/dist/{list-prompts-BQOHRHYT.js → list-prompts-HSIMMHTF.js} +4 -6
  167. package/dist/list-prompts-IRI6AIXO.js +30 -0
  168. package/dist/{list-run-plans-UBAU2DGH.js → list-run-plans-PX2XI6EK.js} +5 -5
  169. package/dist/list-run-plans-QALLCN2K.js +45 -0
  170. package/dist/{list-scenarios-MS4IUIVM.js → list-scenarios-QZRPVHS4.js} +13 -11
  171. package/dist/list-scenarios-SSJQEMJP.js +45 -0
  172. package/dist/list-simulation-runs-KNOLGMDV.js +53 -0
  173. package/dist/{list-simulation-runs-D6YF4ZOU.js → list-simulation-runs-OEADLLQR.js} +12 -8
  174. package/dist/list-test-suites-ANAQBLDG.js +34 -0
  175. package/dist/{list-test-suites-L7R2O6DR.js → list-test-suites-N4WVLBKK.js} +4 -4
  176. package/dist/list-trigger-fires-JV3WFYYG.js +19 -0
  177. package/dist/list-trigger-fires-WTW4DVIW.js +20 -0
  178. package/dist/list-triggers-SQNIG35Q.js +45 -0
  179. package/dist/list-triggers-V4Y356AK.js +46 -0
  180. package/dist/{list-workflows-6MV4XJHF.js → list-workflows-IMSX7SXU.js} +5 -7
  181. package/dist/list-workflows-ZHTX5LCL.js +33 -0
  182. package/dist/{rename-prompt-tag-K5LQ4CY6.js → rename-prompt-tag-IQI7MHOI.js} +3 -3
  183. package/dist/rename-prompt-tag-PA2BRIE6.js +18 -0
  184. package/dist/{rename-test-suite-NTYHAO5X.js → rename-test-suite-4J7UX5S2.js} +4 -4
  185. package/dist/rename-test-suite-NNVLMLKY.js +20 -0
  186. package/dist/report-issue-AS34ZMJF.js +898 -0
  187. package/dist/{report-issue-RHZZ33IS.js → report-issue-DCZFLGDO.js} +81 -67
  188. package/dist/{rerun-run-plan-MUDWJBE4.js → rerun-run-plan-TG2V4WM4.js} +5 -5
  189. package/dist/rerun-run-plan-ZI5OY3VA.js +21 -0
  190. package/dist/revoke-api-key-3J3ZA4UB.js +15 -0
  191. package/dist/{revoke-api-key-6LAZ3QZZ.js → revoke-api-key-SFMEFWJC.js} +4 -4
  192. package/dist/run-agent-W4VJP72Z.js +75 -0
  193. package/dist/run-agent-YNV6ZHW4.js +74 -0
  194. package/dist/run-plan-6C77GWG4.js +38 -0
  195. package/dist/{run-plan-T4ZYOZGA.js → run-plan-PAARQSI4.js} +7 -7
  196. package/dist/run-query-KJDH544C.js +47 -0
  197. package/dist/run-query-T4QW2Z5O.js +46 -0
  198. package/dist/{run-test-suite-L4MZ7G4D.js → run-test-suite-SQJELEZX.js} +6 -6
  199. package/dist/run-test-suite-STB6NUJM.js +25 -0
  200. package/dist/{run-workflow-DFIS23AP.js → run-workflow-D6PQNBI6.js} +4 -4
  201. package/dist/run-workflow-SP32SO5M.js +36 -0
  202. package/dist/search-traces-HCBGOG6R.js +170 -0
  203. package/dist/search-traces-HSTQ6WTQ.js +171 -0
  204. package/dist/{set-model-provider-XRNMFOVR.js → set-model-provider-GF7NXUJA.js} +4 -4
  205. package/dist/set-model-provider-KDQ7C4EZ.js +33 -0
  206. package/dist/{update-agent-DUWNYBNA.js → update-agent-DWG43T2P.js} +4 -4
  207. package/dist/update-agent-MXNOBS4H.js +20 -0
  208. package/dist/update-dashboard-widget-CJKJLCDY.js +71 -0
  209. package/dist/update-dashboard-widget-CYQDS2NR.js +70 -0
  210. package/dist/update-dataset-DQH3OHOU.js +22 -0
  211. package/dist/{update-dataset-YSOMDCOB.js → update-dataset-SQZ6T4WX.js} +6 -6
  212. package/dist/{update-dataset-record-DEA2ITYR.js → update-dataset-record-3AT4IPBC.js} +4 -4
  213. package/dist/update-dataset-record-7PLDGTMR.js +19 -0
  214. package/dist/update-evaluator-4LFTKFPT.js +24 -0
  215. package/dist/{update-evaluator-NH7Q5GWV.js → update-evaluator-IGTX6PX4.js} +4 -4
  216. package/dist/{update-project-Q26FBSYH.js → update-project-PLJIOZS6.js} +4 -4
  217. package/dist/update-project-QVHSJRUP.js +24 -0
  218. package/dist/update-prompt-GDKRYJI3.js +140 -0
  219. package/dist/{update-prompt-ZQQ2C3KU.js → update-prompt-MY263DYF.js} +27 -29
  220. package/dist/update-scenario-7KA3JDXA.js +34 -0
  221. package/dist/{update-scenario-WUX34JAR.js → update-scenario-MOHRQKAQ.js} +5 -5
  222. package/package.json +35 -39
  223. package/pyproject.toml +8 -8
  224. package/src/config.d.ts +4 -0
  225. package/src/config.ts +20 -29
  226. package/src/create-mcp-server.ts +755 -609
  227. package/src/documentation-fetch.ts +21 -20
  228. package/src/http-security.ts +166 -135
  229. package/src/http-server.ts +189 -224
  230. package/src/index.ts +14 -16
  231. package/src/langwatch-api-agents.ts +18 -21
  232. package/src/langwatch-api-annotations.ts +11 -12
  233. package/src/langwatch-api-api-keys.ts +8 -9
  234. package/src/langwatch-api-boards.ts +46 -0
  235. package/src/langwatch-api-dashboard-widgets.ts +112 -0
  236. package/src/langwatch-api-dashboards.ts +13 -10
  237. package/src/langwatch-api-datasets.ts +98 -32
  238. package/src/langwatch-api-evaluators.ts +13 -19
  239. package/src/langwatch-api-model-providers.ts +4 -4
  240. package/src/langwatch-api-monitors.ts +14 -18
  241. package/src/langwatch-api-projects.ts +27 -9
  242. package/src/langwatch-api-query.ts +114 -0
  243. package/src/langwatch-api-run-plans.ts +12 -29
  244. package/src/langwatch-api-scenarios.ts +9 -11
  245. package/src/langwatch-api-secrets.ts +31 -24
  246. package/src/langwatch-api-simulation-runs.ts +6 -8
  247. package/src/langwatch-api-test-suites.ts +14 -33
  248. package/src/langwatch-api-triggers.ts +96 -34
  249. package/src/langwatch-api-workflows.ts +9 -9
  250. package/src/langwatch-api.ts +108 -124
  251. package/src/public-http-request.ts +21 -12
  252. package/src/schemas/analytics-metrics.ts +3 -15
  253. package/src/schemas/create-dataset.ts +3 -4
  254. package/src/schemas/run-plan.ts +13 -29
  255. package/src/schemas/suite-fields.ts +6 -23
  256. package/src/schemas/triggers.ts +365 -0
  257. package/src/tools/add-dashboard-widget.ts +63 -0
  258. package/src/tools/archive-project.ts +2 -4
  259. package/src/tools/archive-run-plan.ts +2 -4
  260. package/src/tools/archive-scenario.ts +2 -4
  261. package/src/tools/archive-test-suite.ts +2 -4
  262. package/src/tools/assign-prompt-tag.ts +6 -2
  263. package/src/tools/create-agent.ts +1 -1
  264. package/src/tools/create-annotation.ts +7 -2
  265. package/src/tools/create-api-key.ts +4 -6
  266. package/src/tools/create-dashboard.ts +1 -1
  267. package/src/tools/create-dataset-records.ts +4 -8
  268. package/src/tools/create-dataset.ts +5 -7
  269. package/src/tools/create-evaluator.ts +3 -5
  270. package/src/tools/create-project.ts +2 -2
  271. package/src/tools/create-prompt-tag.ts +2 -4
  272. package/src/tools/create-prompt.ts +9 -18
  273. package/src/tools/create-scenario.ts +5 -7
  274. package/src/tools/create-test-suite.ts +4 -9
  275. package/src/tools/create-trigger.ts +55 -0
  276. package/src/tools/dashboard-exists.ts +25 -0
  277. package/src/tools/dashboard-widget-queries.ts +32 -0
  278. package/src/tools/delete-agent.ts +1 -1
  279. package/src/tools/delete-annotation.ts +1 -1
  280. package/src/tools/delete-dashboard.ts +1 -1
  281. package/src/tools/delete-dataset-records.ts +4 -8
  282. package/src/tools/delete-dataset.ts +3 -7
  283. package/src/tools/delete-evaluator.ts +4 -6
  284. package/src/tools/delete-prompt-tag.ts +2 -4
  285. package/src/tools/delete-workflow.ts +1 -1
  286. package/src/tools/discover-evaluator-schema.ts +34 -25
  287. package/src/tools/discover-scenario-schema.ts +41 -21
  288. package/src/tools/discover-schema.ts +149 -27
  289. package/src/tools/experiment-run-status.ts +2 -8
  290. package/src/tools/format-dataset-mutation.ts +5 -10
  291. package/src/tools/format-run-plan.ts +7 -21
  292. package/src/tools/format-scenario.ts +2 -4
  293. package/src/tools/format-suite-details.ts +6 -12
  294. package/src/tools/get-agent.ts +15 -6
  295. package/src/tools/get-analytics.ts +52 -46
  296. package/src/tools/get-dashboard.ts +1 -1
  297. package/src/tools/get-dataset.ts +34 -16
  298. package/src/tools/get-evaluator.ts +4 -11
  299. package/src/tools/get-experiment-results.ts +219 -186
  300. package/src/tools/get-project.ts +2 -4
  301. package/src/tools/get-prompt.ts +63 -84
  302. package/src/tools/get-run-plan.ts +4 -6
  303. package/src/tools/get-scenario.ts +4 -6
  304. package/src/tools/get-simulation-run.ts +27 -24
  305. package/src/tools/get-test-suite.ts +2 -5
  306. package/src/tools/get-trace.ts +16 -17
  307. package/src/tools/get-workflow.ts +1 -1
  308. package/src/tools/list-agents.ts +1 -1
  309. package/src/tools/list-annotations.ts +8 -5
  310. package/src/tools/list-api-keys.ts +7 -2
  311. package/src/tools/list-dashboard-boards.ts +28 -0
  312. package/src/tools/list-dashboards.ts +1 -1
  313. package/src/tools/list-dataset-records.ts +8 -6
  314. package/src/tools/list-datasets.ts +12 -23
  315. package/src/tools/list-evaluators.ts +4 -8
  316. package/src/tools/list-experiment-runs.ts +5 -9
  317. package/src/tools/list-experiments.ts +5 -11
  318. package/src/tools/list-model-providers.ts +3 -5
  319. package/src/tools/list-projects.ts +2 -4
  320. package/src/tools/list-prompt-tags.ts +3 -3
  321. package/src/tools/list-prompts.ts +4 -8
  322. package/src/tools/list-run-plans.ts +2 -2
  323. package/src/tools/list-scenarios.ts +14 -15
  324. package/src/tools/list-simulation-runs.ts +8 -4
  325. package/src/tools/list-test-suites.ts +1 -1
  326. package/src/tools/list-trigger-fires.ts +17 -0
  327. package/src/tools/list-triggers.ts +39 -0
  328. package/src/tools/list-workflows.ts +2 -4
  329. package/src/tools/rename-prompt-tag.ts +1 -1
  330. package/src/tools/rename-test-suite.ts +2 -5
  331. package/src/tools/report-issue.ts +5 -9
  332. package/src/tools/rerun-run-plan.ts +2 -5
  333. package/src/tools/revoke-api-key.ts +2 -4
  334. package/src/tools/run-agent.ts +29 -26
  335. package/src/tools/run-experiment.ts +36 -37
  336. package/src/tools/run-plan.ts +4 -7
  337. package/src/tools/run-query.ts +47 -0
  338. package/src/tools/run-test-suite.ts +4 -7
  339. package/src/tools/run-workflow.ts +2 -5
  340. package/src/tools/search-traces.ts +161 -47
  341. package/src/tools/set-model-provider.ts +4 -6
  342. package/src/tools/test-agent.ts +2 -2
  343. package/src/tools/update-agent.ts +1 -1
  344. package/src/tools/update-dashboard-widget.ts +97 -0
  345. package/src/tools/update-dataset-record.ts +1 -1
  346. package/src/tools/update-dataset.ts +5 -7
  347. package/src/tools/update-evaluator.ts +3 -5
  348. package/src/tools/update-project.ts +1 -1
  349. package/src/tools/update-prompt.ts +44 -59
  350. package/src/tools/update-scenario.ts +5 -7
  351. package/src/tools/update-test-suite.ts +6 -11
  352. package/src/utils/date-parsing.ts +1 -1
  353. package/src/utils/escape-markdown.ts +3 -8
  354. package/src/utils/format-evaluations.ts +6 -6
  355. package/src/utils/markdown-table.ts +58 -0
  356. package/src/utils/trace-id-shape.ts +20 -0
  357. package/tsconfig.app.json +24 -0
  358. package/tsconfig.json +14 -12
  359. package/vitest.integration.config.js +10 -0
  360. package/vitest.scenario.config.js +9 -0
  361. package/.eslintrc.cjs +0 -36
  362. package/dist/chunk-AN4OUA4D.js +0 -86
  363. package/dist/chunk-GELJ2MQR.js +0 -226
  364. package/dist/chunk-K37ZNPXK.js +0 -24
  365. package/dist/config.d.ts +0 -17
  366. package/dist/create-mcp-server.d.ts +0 -10
  367. package/dist/delete-evaluator-RKYC4TNB.js +0 -16
  368. package/dist/discover-evaluator-schema-ESSHQGPY.js +0 -1912
  369. package/dist/get-analytics-R6AZD3AW.js +0 -73
  370. package/dist/get-dataset-AKTYSQDI.js +0 -49
  371. package/dist/index.d.ts +0 -2
  372. package/dist/langwatch-api-secrets-OEBD6GBU.js +0 -41
  373. package/dist/langwatch-api-triggers-5E6DDGX6.js +0 -31
  374. package/dist/run-agent-CAGWGTYT.js +0 -72
  375. package/dist/search-traces-4XTJYXIK.js +0 -79
  376. package/src/__tests__/agent-tools.unit.test.ts +0 -257
  377. package/src/__tests__/all-tools.integration.test.ts +0 -1872
  378. package/src/__tests__/config.unit.test.ts +0 -202
  379. package/src/__tests__/datasets.integration.test.ts +0 -620
  380. package/src/__tests__/datasets.unit.test.ts +0 -244
  381. package/src/__tests__/date-parsing.unit.test.ts +0 -78
  382. package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
  383. package/src/__tests__/discover-schema.unit.test.ts +0 -118
  384. package/src/__tests__/docker.integration.test.ts +0 -318
  385. package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
  386. package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
  387. package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
  388. package/src/__tests__/experiment-status.unit.test.ts +0 -194
  389. package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
  390. package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
  391. package/src/__tests__/http-security-origin.unit.test.ts +0 -97
  392. package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
  393. package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
  394. package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
  395. package/src/__tests__/http-server-origin.integration.test.ts +0 -169
  396. package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
  397. package/src/__tests__/http-transport.integration.test.ts +0 -395
  398. package/src/__tests__/integration.integration.test.ts +0 -284
  399. package/src/__tests__/langwatch-api.unit.test.ts +0 -661
  400. package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
  401. package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
  402. package/src/__tests__/prompt-response-types.unit.test.ts +0 -51
  403. package/src/__tests__/prompts.integration.test.ts +0 -736
  404. package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
  405. package/src/__tests__/report-issue.integration.test.ts +0 -147
  406. package/src/__tests__/run-plan-tools.unit.test.ts +0 -565
  407. package/src/__tests__/scenario-tools.integration.test.ts +0 -286
  408. package/src/__tests__/scenario-tools.unit.test.ts +0 -207
  409. package/src/__tests__/schemas.unit.test.ts +0 -85
  410. package/src/__tests__/simulation-run-tools.unit.test.ts +0 -116
  411. package/src/__tests__/support/http-server-harness.ts +0 -138
  412. package/src/__tests__/test-suite-tools.unit.test.ts +0 -615
  413. package/src/__tests__/tools.integration.test.ts +0 -896
  414. package/src/schemas/filter-fields.ts +0 -119
  415. package/src/schemas/index.ts +0 -9
@@ -1,12 +1,7 @@
1
1
  /**
2
- * Escapes characters that would break markdown table formatting.
3
- *
4
- * Replaces pipe characters (`|`) with `\|` and newlines with spaces
5
- * so that values can be safely embedded in markdown tables and headers.
2
+ * Escapes characters that would break markdown table formatting:
3
+ * replaces `|` with `\|` and newlines with spaces.
6
4
  */
7
5
  export function escapeMarkdown(value: string): string {
8
- return value
9
- .replace(/\\/g, "\\\\")
10
- .replace(/\|/g, "\\|")
11
- .replace(/\n/g, " ");
6
+ return value.replace(/\\/g, "\\\\").replace(/\|/g, "\\|").replace(/\n/g, " ");
12
7
  }
@@ -9,12 +9,12 @@ export interface EvaluationSummary {
9
9
  /** Formats a trace's evaluation results as markdown bullet lines, one per evaluation. */
10
10
  export function formatEvaluationLines(evaluations: EvaluationSummary[]): string[] {
11
11
  return evaluations.map((evaluation) => {
12
- const status =
13
- evaluation.passed === true
14
- ? "PASSED"
15
- : evaluation.passed === false
16
- ? "FAILED"
17
- : "N/A";
12
+ let status = "N/A";
13
+ if (evaluation.passed === true) {
14
+ status = "PASSED";
15
+ } else if (evaluation.passed === false) {
16
+ status = "FAILED";
17
+ }
18
18
  return `- **${evaluation.name || evaluation.evaluator_id}**: ${status}${evaluation.score != null ? ` (score: ${evaluation.score})` : ""}${evaluation.label ? ` [${evaluation.label}]` : ""}`;
19
19
  });
20
20
  }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * One markdown table renderer for caller-chosen columns. Cells are captured content, so they are
3
+ * escaped: one pipe in a cell would split the row for every reader.
4
+ */
5
+
6
+ import { escapeMarkdown } from "./escape-markdown.ts";
7
+
8
+ /** Longest a single cell is rendered before it is cut. */
9
+ const MAX_CELL_LENGTH = 200;
10
+
11
+ /** One cell: escaped, flattened to a line, and bounded. */
12
+ export function markdownCell(value: unknown): string {
13
+ if (value === null || value === undefined) return "";
14
+ const text = cellText(value);
15
+ const escaped = escapeMarkdown(text);
16
+ return escaped.length > MAX_CELL_LENGTH ? `${escaped.slice(0, MAX_CELL_LENGTH - 1)}…` : escaped;
17
+ }
18
+
19
+ /**
20
+ * A markdown table, or a line saying there is nothing to show. `rows` are read by header, so a row
21
+ * missing a key renders an empty cell rather than shifting every cell after it one column left.
22
+ */
23
+ export function markdownTable({
24
+ headers,
25
+ rows,
26
+ emptyMessage = "No rows.",
27
+ }: {
28
+ headers: readonly string[];
29
+ rows: readonly Record<string, unknown>[];
30
+ emptyMessage?: string;
31
+ }): string {
32
+ if (headers.length === 0 || rows.length === 0) return emptyMessage;
33
+ const lines = [
34
+ `| ${headers.map(markdownCell).join(" | ")} |`,
35
+ `| ${headers.map(() => "---").join(" | ")} |`,
36
+ ];
37
+ for (const row of rows) {
38
+ lines.push(`| ${headers.map((header) => markdownCell(row[header])).join(" | ")} |`);
39
+ }
40
+ return lines.join("\n");
41
+ }
42
+
43
+ function cellText(value: {}): string {
44
+ switch (typeof value) {
45
+ case "string":
46
+ return value;
47
+ case "number":
48
+ case "boolean":
49
+ case "bigint":
50
+ return String(value);
51
+ case "symbol":
52
+ return value.toString();
53
+ case "function":
54
+ return value.name;
55
+ default:
56
+ return JSON.stringify(value);
57
+ }
58
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Whether a free-text query looks like a trace id. Advisory only: it adds a sentence to an
3
+ * empty result (ADR-164). Restates the platform's trace-id constants; no server code is shared.
4
+ */
5
+
6
+ /** Hex-only, matching the server's prefix resolver. */
7
+ const HEX_ONLY = /^[0-9a-f]+$/i;
8
+
9
+ /** Shortest hex string worth calling an id; no upper bound (CLI truncates to 20, OTel is 32). */
10
+ const MIN_TRACE_ID_LENGTH = 8;
11
+
12
+ /** The `trace_`-prefixed form the collector accepts (`trace_` + nanoid). */
13
+ const PREFIXED_TRACE_ID = /^trace_[A-Za-z0-9_-]{8,}$/;
14
+
15
+ export function looksLikeTraceId(query: string): boolean {
16
+ const candidate = query.trim();
17
+ if (candidate.includes(" ")) return false;
18
+ if (PREFIXED_TRACE_ID.test(candidate)) return true;
19
+ return HEX_ONLY.test(candidate) && candidate.length >= MIN_TRACE_ID_LENGTH;
20
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "composite": false,
5
+ "noEmit": true,
6
+ "tsBuildInfoFile": "dist/tsconfig.app.tsbuildinfo"
7
+ },
8
+ "include": ["**/*.ts"],
9
+ "exclude": ["node_modules", "./dist/**/*", "./example/**/*"],
10
+ "references": [
11
+ {
12
+ "path": "../../modules/evaluator/contract/tsconfig.build.json"
13
+ },
14
+ {
15
+ "path": "../../packages/redaction/tsconfig.build.json"
16
+ },
17
+ {
18
+ "path": "../../packages/handled-error/tsconfig.build.json"
19
+ },
20
+ {
21
+ "path": "../../packages/egress/tsconfig.build.json"
22
+ }
23
+ ]
24
+ }
package/tsconfig.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
+ "extends": "../../tsconfig.shared.json",
2
3
  "compilerOptions": {
3
- "target": "ES2022",
4
+ // This package emits declarations only (tsup writes the JavaScript), so
5
+ // `noEmit` from the shared base is turned back off for them.
6
+ "noEmit": false,
7
+ "emitDeclarationOnly": true,
4
8
  "module": "ESNext",
5
9
  "declaration": true,
6
10
  "declarationMap": true,
7
11
  "outDir": "./dist",
8
- "strict": true,
9
12
  "esModuleInterop": true,
10
13
  "resolveJsonModule": true,
11
14
  "allowJs": true,
12
15
  "checkJs": true,
13
- "skipLibCheck": true,
14
- "forceConsistentCasingInFileNames": true,
15
- "moduleResolution": "bundler",
16
16
  "rootDir": "../..",
17
17
  // The evaluator catalog we import (services/langevals/ts-integration/evaluators.generated.ts)
18
18
  // is Zod-first and imports `zod`, but lives outside this package's
@@ -27,13 +27,15 @@
27
27
  "ignoreDeprecations": "6.0",
28
28
  "isolatedModules": true,
29
29
  "jsx": "preserve",
30
- "incremental": true,
31
30
  "noUncheckedIndexedAccess": true,
32
- "tsBuildInfoFile": "./tsconfig.tsbuildinfo"
31
+ "tsBuildInfoFile": "dist/tsconfig.typecheck.tsbuildinfo",
32
+ "composite": true
33
33
  },
34
- "include": [
35
- ".eslintrc.cjs",
36
- "**/*.ts",
37
- ],
38
- "exclude": ["node_modules", "./dist/**/*", "./example/**/*"]
34
+ "files": [],
35
+ "include": [],
36
+ "references": [
37
+ {
38
+ "path": "./tsconfig.app.json"
39
+ }
40
+ ]
39
41
  }
@@ -0,0 +1,10 @@
1
+ import { defineConfig } from "vitest/config";
2
+
3
+ // In-process HTTP servers, plus a Docker image built in `beforeAll`.
4
+ export default defineConfig({
5
+ test: {
6
+ include: ["src/**/*.integration.test.ts"],
7
+ testTimeout: 60_000,
8
+ hookTimeout: 10 * 60_000,
9
+ },
10
+ });
@@ -0,0 +1,9 @@
1
+ import { defineConfig } from "vitest/config";
2
+
3
+ // Drives a real Claude Code session against live model APIs.
4
+ export default defineConfig({
5
+ test: {
6
+ include: ["tests/**/*.scenario.test.ts"],
7
+ testTimeout: 60 * 60 * 1000,
8
+ },
9
+ });
package/.eslintrc.cjs DELETED
@@ -1,36 +0,0 @@
1
- const config = {
2
- parser: "@typescript-eslint/parser",
3
- parserOptions: {
4
- project: true,
5
- },
6
- plugins: ["@typescript-eslint"],
7
- extends: [
8
- "plugin:@typescript-eslint/recommended-type-checked",
9
- "plugin:@typescript-eslint/stylistic-type-checked",
10
- ],
11
- rules: {
12
- // These opinionated rules are enabled in stylistic-type-checked above.
13
- // Feel free to reconfigure them to your own preference.
14
- "@typescript-eslint/array-type": "off",
15
- "@typescript-eslint/consistent-type-definitions": "off",
16
- "@typescript-eslint/no-explicit-any": "off",
17
- "@typescript-eslint/no-unsafe-assignment": "off",
18
- "@typescript-eslint/ban-ts-comment": "off",
19
- "@typescript-eslint/require-await": "off",
20
- "@typescript-eslint/no-unsafe-member-access": "off",
21
- "@typescript-eslint/no-unsafe-call": "off",
22
- "@typescript-eslint/no-unsafe-argument": "off",
23
- "@typescript-eslint/no-unsafe-return": "off",
24
-
25
- "@typescript-eslint/consistent-type-imports": [
26
- "warn",
27
- {
28
- prefer: "type-imports",
29
- fixStyle: "inline-type-imports",
30
- },
31
- ],
32
- "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
33
- },
34
- };
35
-
36
- module.exports = config;
@@ -1,86 +0,0 @@
1
- import {
2
- makeRequest
3
- } from "./chunk-GELJ2MQR.js";
4
-
5
- // src/langwatch-api-datasets.ts
6
- async function listDatasets(params) {
7
- const query = new URLSearchParams();
8
- if (params?.page != null) query.set("page", String(params.page));
9
- if (params?.limit != null) query.set("limit", String(params.limit));
10
- const qs = query.toString();
11
- const path = qs ? `/api/dataset?${qs}` : "/api/dataset";
12
- return makeRequest("GET", path);
13
- }
14
- async function getDataset(slugOrId) {
15
- return makeRequest(
16
- "GET",
17
- `/api/dataset/${encodeURIComponent(slugOrId)}`
18
- );
19
- }
20
- async function createDataset(data) {
21
- return makeRequest(
22
- "POST",
23
- "/api/dataset",
24
- data
25
- );
26
- }
27
- async function updateDataset(params) {
28
- const { slugOrId, ...data } = params;
29
- return makeRequest(
30
- "PATCH",
31
- `/api/dataset/${encodeURIComponent(slugOrId)}`,
32
- data
33
- );
34
- }
35
- async function deleteDataset(slugOrId) {
36
- return makeRequest(
37
- "DELETE",
38
- `/api/dataset/${encodeURIComponent(slugOrId)}`
39
- );
40
- }
41
- async function createDatasetRecords(params) {
42
- const { slugOrId, entries } = params;
43
- return makeRequest(
44
- "POST",
45
- `/api/dataset/${encodeURIComponent(slugOrId)}/records`,
46
- { entries }
47
- );
48
- }
49
- async function updateDatasetRecord(params) {
50
- const { slugOrId, recordId, entry } = params;
51
- return makeRequest(
52
- "PATCH",
53
- `/api/dataset/${encodeURIComponent(slugOrId)}/records/${encodeURIComponent(recordId)}`,
54
- { entry }
55
- );
56
- }
57
- async function deleteDatasetRecords(params) {
58
- const { slugOrId, recordIds } = params;
59
- return makeRequest(
60
- "DELETE",
61
- `/api/dataset/${encodeURIComponent(slugOrId)}/records`,
62
- { recordIds }
63
- );
64
- }
65
- async function listDatasetRecords(params) {
66
- const { slugOrId } = params;
67
- const query = new URLSearchParams();
68
- if (params.page != null) query.set("page", String(params.page));
69
- if (params.limit != null) query.set("limit", String(params.limit));
70
- const qs = query.toString();
71
- const path = `/api/dataset/${encodeURIComponent(slugOrId)}/records${qs ? `?${qs}` : ""}`;
72
- return makeRequest("GET", path);
73
- }
74
-
75
- export {
76
- listDatasets,
77
- getDataset,
78
- createDataset,
79
- updateDataset,
80
- deleteDataset,
81
- createDatasetRecords,
82
- updateDatasetRecord,
83
- deleteDatasetRecords,
84
- listDatasetRecords
85
- };
86
- //# sourceMappingURL=chunk-AN4OUA4D.js.map
@@ -1,226 +0,0 @@
1
- import {
2
- getConfig,
3
- requireApiKey
4
- } from "./chunk-WT4PO4A3.js";
5
-
6
- // src/langwatch-api.ts
7
- var LangWatchApiError = class extends Error {
8
- constructor(message, status, responseBody, options = {}) {
9
- super(message);
10
- this.status = status;
11
- this.responseBody = responseBody;
12
- this.name = "LangWatchApiError";
13
- this.code = options.code;
14
- this.tips = options.tips;
15
- this.docsUrl = options.docsUrl;
16
- this.fault = options.fault;
17
- this.reasons = options.reasons;
18
- }
19
- status;
20
- responseBody;
21
- code;
22
- tips;
23
- docsUrl;
24
- fault;
25
- /**
26
- * The per-field failures behind this error, verbatim from the envelope.
27
- * A validation failure carries the offending field and the values it would
28
- * have accepted here — the difference between an agent correcting its own
29
- * request and an agent guessing again.
30
- */
31
- reasons;
32
- };
33
- var VALID_FAULTS = ["customer", "platform", "provider"];
34
- function parseErrorBody(responseBody) {
35
- try {
36
- const parsed = JSON.parse(responseBody);
37
- if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
38
- return {};
39
- }
40
- const envelope = parsed;
41
- const nested = typeof envelope.error === "object" && envelope.error !== null && !Array.isArray(envelope.error) ? envelope.error : null;
42
- const body = nested ?? envelope;
43
- const code = typeof body.code === "string" ? body.code : typeof body.error === "string" ? body.error : void 0;
44
- const message = typeof body.message === "string" ? body.message : void 0;
45
- if (code === void 0 && message === void 0) {
46
- return {};
47
- }
48
- const tips = Array.isArray(body.tips) && body.tips.every((t) => typeof t === "string") ? body.tips : void 0;
49
- const docsUrl = typeof body.docsUrl === "string" ? body.docsUrl : void 0;
50
- const fault = VALID_FAULTS.includes(body.fault) ? body.fault : void 0;
51
- const reasons = Array.isArray(body.reasons) && body.reasons.every((r) => !!r && typeof r === "object") ? body.reasons : void 0;
52
- return { code, message, tips, docsUrl, fault, reasons };
53
- } catch {
54
- return {};
55
- }
56
- }
57
- function describeReason(reason) {
58
- const meta = reason.meta;
59
- if (!meta || typeof meta !== "object") return null;
60
- const field = typeof meta.field === "string" ? meta.field : null;
61
- if (!field) return null;
62
- const parts = [`- ${field}`];
63
- if (meta.received !== void 0) {
64
- parts.push(`received ${JSON.stringify(meta.received)}`);
65
- }
66
- if (Array.isArray(meta.expected) && meta.expected.length > 0) {
67
- parts.push(`expected one of: ${meta.expected.join(", ")}`);
68
- }
69
- return parts.join(" \u2014 ");
70
- }
71
- async function makeRequest(method, path, body) {
72
- const config = getConfig();
73
- const url = config.endpoint + path;
74
- const headers = {
75
- "X-Auth-Token": requireApiKey()
76
- };
77
- if (config.projectId) {
78
- headers["X-Project-Id"] = config.projectId;
79
- }
80
- if (body !== void 0) {
81
- headers["Content-Type"] = "application/json";
82
- }
83
- const response = await fetch(url, {
84
- method,
85
- headers,
86
- ...body !== void 0 ? { body: JSON.stringify(body) } : {}
87
- });
88
- if (!response.ok) {
89
- const responseBody = await response.text();
90
- const parsed = parseErrorBody(responseBody);
91
- const lines = [
92
- `LangWatch API error ${response.status}: ${parsed.message ?? responseBody}`
93
- ];
94
- const reasonLines = (parsed.reasons ?? []).map(describeReason).filter((line) => line !== null);
95
- if (reasonLines.length > 0) {
96
- lines.push("Rejected fields:", ...reasonLines);
97
- }
98
- if (parsed.tips && parsed.tips.length > 0) {
99
- lines.push("Tips:", ...parsed.tips.map((tip) => `- ${tip}`));
100
- }
101
- if (parsed.docsUrl) {
102
- lines.push(`Docs: ${parsed.docsUrl}`);
103
- }
104
- throw new LangWatchApiError(
105
- lines.join("\n"),
106
- response.status,
107
- responseBody,
108
- {
109
- code: parsed.code,
110
- tips: parsed.tips,
111
- docsUrl: parsed.docsUrl,
112
- fault: parsed.fault,
113
- reasons: parsed.reasons
114
- }
115
- );
116
- }
117
- if (response.status === 204 || response.headers?.get("content-length") === "0") {
118
- return null;
119
- }
120
- return response.json();
121
- }
122
- async function searchTraces(params) {
123
- const { format = "digest", ...rest } = params;
124
- return makeRequest("POST", "/api/traces/search", {
125
- ...rest,
126
- format
127
- });
128
- }
129
- async function getTraceById(traceId, format = "digest") {
130
- return makeRequest(
131
- "GET",
132
- `/api/traces/${encodeURIComponent(traceId)}?format=${format}`
133
- );
134
- }
135
- async function getAnalyticsTimeseries(params) {
136
- return makeRequest(
137
- "POST",
138
- "/api/analytics/timeseries",
139
- params
140
- );
141
- }
142
- async function listPrompts() {
143
- return makeRequest("GET", "/api/prompts");
144
- }
145
- async function getPrompt(idOrHandle, options) {
146
- const params = new URLSearchParams();
147
- if (options?.version != null) params.set("version", String(options.version));
148
- if (options?.tag) params.set("tag", options.tag);
149
- const query = params.toString() ? `?${params}` : "";
150
- return makeRequest(
151
- "GET",
152
- `/api/prompts/${encodeURIComponent(idOrHandle)}${query}`
153
- );
154
- }
155
- async function getPromptVersions(idOrHandle) {
156
- return makeRequest(
157
- "GET",
158
- `/api/prompts/${encodeURIComponent(idOrHandle)}/versions`
159
- );
160
- }
161
- async function createPrompt(data) {
162
- return makeRequest(
163
- "POST",
164
- "/api/prompts",
165
- data
166
- );
167
- }
168
- async function updatePrompt(idOrHandle, data) {
169
- return makeRequest(
170
- "PUT",
171
- `/api/prompts/${encodeURIComponent(idOrHandle)}`,
172
- data
173
- );
174
- }
175
- async function assignPromptTag({
176
- idOrHandle,
177
- tag,
178
- versionId
179
- }) {
180
- return makeRequest(
181
- "PUT",
182
- `/api/prompts/${encodeURIComponent(idOrHandle)}/tags/${encodeURIComponent(tag)}`,
183
- { versionId }
184
- );
185
- }
186
- async function listPromptTags() {
187
- return makeRequest("GET", "/api/prompts/tags");
188
- }
189
- async function createPromptTag(name) {
190
- return makeRequest("POST", "/api/prompts/tags", { name });
191
- }
192
- async function renamePromptTag({
193
- tag,
194
- name
195
- }) {
196
- return makeRequest(
197
- "PUT",
198
- `/api/prompts/tags/${encodeURIComponent(tag)}`,
199
- { name }
200
- );
201
- }
202
- async function deletePromptTag(tag) {
203
- return makeRequest(
204
- "DELETE",
205
- `/api/prompts/tags/${encodeURIComponent(tag)}`
206
- );
207
- }
208
-
209
- export {
210
- LangWatchApiError,
211
- makeRequest,
212
- searchTraces,
213
- getTraceById,
214
- getAnalyticsTimeseries,
215
- listPrompts,
216
- getPrompt,
217
- getPromptVersions,
218
- createPrompt,
219
- updatePrompt,
220
- assignPromptTag,
221
- listPromptTags,
222
- createPromptTag,
223
- renamePromptTag,
224
- deletePromptTag
225
- };
226
- //# sourceMappingURL=chunk-GELJ2MQR.js.map
@@ -1,24 +0,0 @@
1
- import {
2
- makeRequest
3
- } from "./chunk-GELJ2MQR.js";
4
-
5
- // src/langwatch-api-api-keys.ts
6
- async function listApiKeys() {
7
- return makeRequest("GET", "/api/api-keys");
8
- }
9
- async function createApiKey(data) {
10
- return makeRequest("POST", "/api/api-keys", data);
11
- }
12
- async function revokeApiKey(id) {
13
- return makeRequest(
14
- "DELETE",
15
- `/api/api-keys/${encodeURIComponent(id)}`
16
- );
17
- }
18
-
19
- export {
20
- listApiKeys,
21
- createApiKey,
22
- revokeApiKey
23
- };
24
- //# sourceMappingURL=chunk-K37ZNPXK.js.map
package/dist/config.d.ts DELETED
@@ -1,17 +0,0 @@
1
- interface McpConfig {
2
- apiKey: string | undefined;
3
- endpoint: string;
4
- }
5
-
6
- declare function initConfig(args: {
7
- apiKey?: string;
8
- endpoint?: string;
9
- }): void;
10
-
11
- declare function getConfig(): McpConfig;
12
-
13
- declare function requireApiKey(): string;
14
-
15
- declare function runWithConfig<T>(config: McpConfig, fn: () => T): T;
16
-
17
- export { type McpConfig, getConfig, initConfig, requireApiKey, runWithConfig };
@@ -1,10 +0,0 @@
1
- // Minimal type declaration — avoids pulling mcp-server's full dependency tree
2
- // into the langwatch app's typecheck scope. The actual return type is McpServer,
3
- // but we only expose the connect() and tool() methods that handler.ts +
4
- // in-app tool registrations (e.g. registerGovernanceMcpTools) use.
5
- declare function createMcpServer(): {
6
- connect(transport: unknown): Promise<void>;
7
- tool(...args: unknown[]): unknown;
8
- };
9
-
10
- export { createMcpServer };
@@ -1,16 +0,0 @@
1
- import {
2
- deleteEvaluator
3
- } from "./chunk-OJLYYJWI.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
6
- import "./chunk-SAS5OB7F.js";
7
-
8
- // src/tools/delete-evaluator.ts
9
- async function handleDeleteEvaluator(params) {
10
- const result = await deleteEvaluator(params.idOrSlug);
11
- return `Evaluator ${result.id} has been archived (soft-deleted).`;
12
- }
13
- export {
14
- handleDeleteEvaluator
15
- };
16
- //# sourceMappingURL=delete-evaluator-RKYC4TNB.js.map