@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
@@ -0,0 +1,36 @@
1
+ import {
2
+ runWorkflow
3
+ } from "./chunk-NKMTIHIJ.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
+
7
+ // src/tools/run-workflow.ts
8
+ async function handleRunWorkflow(params) {
9
+ let parsedInput = {};
10
+ if (params.input) {
11
+ try {
12
+ parsedInput = JSON.parse(params.input);
13
+ } catch {
14
+ return "Error: `input` must be a valid JSON object.";
15
+ }
16
+ }
17
+ const result = await runWorkflow(params.id, parsedInput);
18
+ const lines = [];
19
+ lines.push(`Workflow "${params.id}" executed successfully.
20
+ `);
21
+ if (typeof result === "object" && result !== null) {
22
+ const output = result.output;
23
+ if (output !== void 0) {
24
+ lines.push("**Output:**");
25
+ lines.push(typeof output === "string" ? output : JSON.stringify(output, null, 2));
26
+ } else {
27
+ lines.push("**Result:**");
28
+ lines.push(JSON.stringify(result, null, 2));
29
+ }
30
+ }
31
+ return lines.join("\n");
32
+ }
33
+ export {
34
+ handleRunWorkflow
35
+ };
36
+ //# sourceMappingURL=run-workflow-SP32SO5M.js.map
@@ -0,0 +1,170 @@
1
+ import {
2
+ formatEvaluationLines
3
+ } from "./chunk-DMM3JQ42.js";
4
+ import {
5
+ parseRelativeDate
6
+ } from "./chunk-BIIKE3EI.js";
7
+ import {
8
+ searchTraces
9
+ } from "./chunk-UWLE5T2F.js";
10
+ import "./chunk-H6WGMG2T.js";
11
+
12
+ // src/utils/trace-id-shape.ts
13
+ var HEX_ONLY = /^[0-9a-f]+$/i;
14
+ var MIN_TRACE_ID_LENGTH = 8;
15
+ var PREFIXED_TRACE_ID = /^trace_[A-Za-z0-9_-]{8,}$/;
16
+ function looksLikeTraceId(query) {
17
+ const candidate = query.trim();
18
+ if (candidate.includes(" ")) return false;
19
+ if (PREFIXED_TRACE_ID.test(candidate)) return true;
20
+ return HEX_ONLY.test(candidate) && candidate.length >= MIN_TRACE_ID_LENGTH;
21
+ }
22
+
23
+ // src/tools/search-traces.ts
24
+ var HOUR_MS = 36e5;
25
+ var DAY_MS = 864e5;
26
+ var TEXT_SEARCH_WINDOW_MS = DAY_MS;
27
+ var ID_LOOKUP_WINDOW_MS = 90 * DAY_MS;
28
+ function previewLine({
29
+ label,
30
+ text
31
+ }) {
32
+ const value = text?.value ? String(text.value) : "N/A";
33
+ return `- **${label}**: ${value.slice(0, 100)}${value.length > 100 ? "..." : ""}`;
34
+ }
35
+ function traceLines(trace) {
36
+ const lines = [`### Trace: ${trace.trace_id}`];
37
+ if (trace.formatted_trace) {
38
+ lines.push(trace.formatted_trace);
39
+ } else {
40
+ lines.push(previewLine({ label: "Input", text: trace.input }));
41
+ lines.push(previewLine({ label: "Output", text: trace.output }));
42
+ }
43
+ if (trace.timestamps) {
44
+ lines.push(`- **Time**: ${trace.timestamps.started_at || "N/A"}`);
45
+ }
46
+ if (trace.error) {
47
+ lines.push(`- **Error**: ${JSON.stringify(trace.error)}`);
48
+ }
49
+ if (trace.evaluations && trace.evaluations.length > 0) {
50
+ lines.push(...formatEvaluationLines(trace.evaluations));
51
+ }
52
+ lines.push("");
53
+ return lines;
54
+ }
55
+ function describeSpan({ ms }) {
56
+ if (ms % DAY_MS === 0) {
57
+ const days = ms / DAY_MS;
58
+ return days === 1 ? "24 hours" : `${days} days`;
59
+ }
60
+ const hours = Math.round(ms / HOUR_MS);
61
+ return hours === 1 ? "1 hour" : `${hours} hours`;
62
+ }
63
+ function suggestWiderWindow({ spanMs }) {
64
+ if (spanMs < 7 * DAY_MS) return "7d";
65
+ if (spanMs < 30 * DAY_MS) return "30d";
66
+ if (spanMs < 90 * DAY_MS) return "90d";
67
+ return void 0;
68
+ }
69
+ function buildEmptyResult({
70
+ query,
71
+ traceIds,
72
+ spanMs,
73
+ windowWasDefaulted,
74
+ startDate,
75
+ endDate
76
+ }) {
77
+ const hasTraceIds = (traceIds?.length ?? 0) > 0;
78
+ const lines = [
79
+ hasTraceIds ? "No traces matched the requested trace ids in the searched window." : "No traces found matching your query.",
80
+ ""
81
+ ];
82
+ const range = `${new Date(startDate).toISOString()} to ${new Date(endDate).toISOString()}`;
83
+ lines.push(
84
+ windowWasDefaulted ? `Searched the last ${describeSpan({ ms: spanMs })} (the default): ${range}.` : `Searched ${range}.`
85
+ );
86
+ lines.push("", "Tips:");
87
+ if (query && looksLikeTraceId(query)) {
88
+ lines.push(
89
+ `- "${query}" looks like a trace id. Free text never matches trace ids \u2014 use \`get_trace\` with traceId: "${query}".`
90
+ );
91
+ }
92
+ const wider = suggestWiderWindow({ spanMs });
93
+ if (wider) {
94
+ lines.push(
95
+ `- Widen the window with startDate, e.g. startDate: "${wider}". Accepts h (hours), d (days), w (weeks), m (30-day months), or an ISO date.`
96
+ );
97
+ }
98
+ if (hasTraceIds) {
99
+ lines.push(
100
+ "- Retry with an earlier startDate, or relax the query and filters if you supplied them.",
101
+ "- Looking up one full id? `get_trace` has no time window. A unique 8\u201331 character hex prefix searches the last 90 days."
102
+ );
103
+ } else {
104
+ lines.push(
105
+ "- Looking up a known trace id? `get_trace` takes a traceId. A full id has no time window; a unique 8\u201331 character hex prefix searches the last 90 days.",
106
+ "- To fetch several known trace ids at once, pass `traceIds` instead of `query`."
107
+ );
108
+ }
109
+ return lines.join("\n");
110
+ }
111
+ async function handleSearchTraces(params) {
112
+ const now = Date.now();
113
+ const hasTraceIds = (params.traceIds?.length ?? 0) > 0;
114
+ const defaultSpanMs = hasTraceIds ? ID_LOOKUP_WINDOW_MS : TEXT_SEARCH_WINDOW_MS;
115
+ const endDate = params.endDate !== void 0 ? parseRelativeDate(params.endDate) : now;
116
+ const startDate = params.startDate !== void 0 ? parseRelativeDate(params.startDate) : endDate - defaultSpanMs;
117
+ if (startDate >= endDate) {
118
+ throw new Error(
119
+ `Invalid trace search window: startDate (${new Date(startDate).toISOString()}) must be before endDate (${new Date(endDate).toISOString()}).`
120
+ );
121
+ }
122
+ const format = params.format ?? "digest";
123
+ const result = await searchTraces({
124
+ query: params.query,
125
+ traceIds: params.traceIds,
126
+ filters: params.filters,
127
+ // Forwarded as itself: the filter language and the free-text query are two
128
+ // different searches, and the server combines them.
129
+ ...params.filter ? { filter: params.filter } : {},
130
+ startDate,
131
+ endDate,
132
+ pageSize: params.pageSize ?? 25,
133
+ scrollId: params.scrollId,
134
+ format
135
+ });
136
+ const traces = result.traces ?? [];
137
+ if (traces.length === 0) {
138
+ return buildEmptyResult({
139
+ query: params.query,
140
+ traceIds: params.traceIds,
141
+ spanMs: endDate - startDate,
142
+ windowWasDefaulted: params.startDate === void 0,
143
+ startDate,
144
+ endDate
145
+ });
146
+ }
147
+ if (format === "json") {
148
+ return JSON.stringify(result, null, 2);
149
+ }
150
+ const lines = [];
151
+ lines.push(`Found ${result.pagination?.totalHits ?? traces.length} traces:
152
+ `);
153
+ for (const trace of traces) {
154
+ lines.push(...traceLines(trace));
155
+ }
156
+ if (result.pagination?.scrollId) {
157
+ lines.push(
158
+ `
159
+ **More results available.** Use scrollId: "${result.pagination.scrollId}" to get next page.`
160
+ );
161
+ }
162
+ lines.push(
163
+ '\n> Tip: Use `get_trace` with a traceId for full details. Use `search_traces` with `format: "json"` for raw data. Use `discover_schema` to see available filter fields.'
164
+ );
165
+ return lines.join("\n");
166
+ }
167
+ export {
168
+ handleSearchTraces
169
+ };
170
+ //# sourceMappingURL=search-traces-HCBGOG6R.js.map
@@ -0,0 +1,171 @@
1
+ import {
2
+ formatEvaluationLines
3
+ } from "./chunk-DMM3JQ42.js";
4
+ import {
5
+ parseRelativeDate
6
+ } from "./chunk-BIIKE3EI.js";
7
+ import {
8
+ searchTraces
9
+ } from "./chunk-UWLE5T2F.js";
10
+ import "./chunk-H6WGMG2T.js";
11
+ import "./chunk-SAS5OB7F.js";
12
+
13
+ // src/utils/trace-id-shape.ts
14
+ var HEX_ONLY = /^[0-9a-f]+$/i;
15
+ var MIN_TRACE_ID_LENGTH = 8;
16
+ var PREFIXED_TRACE_ID = /^trace_[A-Za-z0-9_-]{8,}$/;
17
+ function looksLikeTraceId(query) {
18
+ const candidate = query.trim();
19
+ if (candidate.includes(" ")) return false;
20
+ if (PREFIXED_TRACE_ID.test(candidate)) return true;
21
+ return HEX_ONLY.test(candidate) && candidate.length >= MIN_TRACE_ID_LENGTH;
22
+ }
23
+
24
+ // src/tools/search-traces.ts
25
+ var HOUR_MS = 36e5;
26
+ var DAY_MS = 864e5;
27
+ var TEXT_SEARCH_WINDOW_MS = DAY_MS;
28
+ var ID_LOOKUP_WINDOW_MS = 90 * DAY_MS;
29
+ function previewLine({
30
+ label,
31
+ text
32
+ }) {
33
+ const value = text?.value ? String(text.value) : "N/A";
34
+ return `- **${label}**: ${value.slice(0, 100)}${value.length > 100 ? "..." : ""}`;
35
+ }
36
+ function traceLines(trace) {
37
+ const lines = [`### Trace: ${trace.trace_id}`];
38
+ if (trace.formatted_trace) {
39
+ lines.push(trace.formatted_trace);
40
+ } else {
41
+ lines.push(previewLine({ label: "Input", text: trace.input }));
42
+ lines.push(previewLine({ label: "Output", text: trace.output }));
43
+ }
44
+ if (trace.timestamps) {
45
+ lines.push(`- **Time**: ${trace.timestamps.started_at || "N/A"}`);
46
+ }
47
+ if (trace.error) {
48
+ lines.push(`- **Error**: ${JSON.stringify(trace.error)}`);
49
+ }
50
+ if (trace.evaluations && trace.evaluations.length > 0) {
51
+ lines.push(...formatEvaluationLines(trace.evaluations));
52
+ }
53
+ lines.push("");
54
+ return lines;
55
+ }
56
+ function describeSpan({ ms }) {
57
+ if (ms % DAY_MS === 0) {
58
+ const days = ms / DAY_MS;
59
+ return days === 1 ? "24 hours" : `${days} days`;
60
+ }
61
+ const hours = Math.round(ms / HOUR_MS);
62
+ return hours === 1 ? "1 hour" : `${hours} hours`;
63
+ }
64
+ function suggestWiderWindow({ spanMs }) {
65
+ if (spanMs < 7 * DAY_MS) return "7d";
66
+ if (spanMs < 30 * DAY_MS) return "30d";
67
+ if (spanMs < 90 * DAY_MS) return "90d";
68
+ return void 0;
69
+ }
70
+ function buildEmptyResult({
71
+ query,
72
+ traceIds,
73
+ spanMs,
74
+ windowWasDefaulted,
75
+ startDate,
76
+ endDate
77
+ }) {
78
+ const hasTraceIds = (traceIds?.length ?? 0) > 0;
79
+ const lines = [
80
+ hasTraceIds ? "No traces matched the requested trace ids in the searched window." : "No traces found matching your query.",
81
+ ""
82
+ ];
83
+ const range = `${new Date(startDate).toISOString()} to ${new Date(endDate).toISOString()}`;
84
+ lines.push(
85
+ windowWasDefaulted ? `Searched the last ${describeSpan({ ms: spanMs })} (the default): ${range}.` : `Searched ${range}.`
86
+ );
87
+ lines.push("", "Tips:");
88
+ if (query && looksLikeTraceId(query)) {
89
+ lines.push(
90
+ `- "${query}" looks like a trace id. Free text never matches trace ids \u2014 use \`get_trace\` with traceId: "${query}".`
91
+ );
92
+ }
93
+ const wider = suggestWiderWindow({ spanMs });
94
+ if (wider) {
95
+ lines.push(
96
+ `- Widen the window with startDate, e.g. startDate: "${wider}". Accepts h (hours), d (days), w (weeks), m (30-day months), or an ISO date.`
97
+ );
98
+ }
99
+ if (hasTraceIds) {
100
+ lines.push(
101
+ "- Retry with an earlier startDate, or relax the query and filters if you supplied them.",
102
+ "- Looking up one full id? `get_trace` has no time window. A unique 8\u201331 character hex prefix searches the last 90 days."
103
+ );
104
+ } else {
105
+ lines.push(
106
+ "- Looking up a known trace id? `get_trace` takes a traceId. A full id has no time window; a unique 8\u201331 character hex prefix searches the last 90 days.",
107
+ "- To fetch several known trace ids at once, pass `traceIds` instead of `query`."
108
+ );
109
+ }
110
+ return lines.join("\n");
111
+ }
112
+ async function handleSearchTraces(params) {
113
+ const now = Date.now();
114
+ const hasTraceIds = (params.traceIds?.length ?? 0) > 0;
115
+ const defaultSpanMs = hasTraceIds ? ID_LOOKUP_WINDOW_MS : TEXT_SEARCH_WINDOW_MS;
116
+ const endDate = params.endDate !== void 0 ? parseRelativeDate(params.endDate) : now;
117
+ const startDate = params.startDate !== void 0 ? parseRelativeDate(params.startDate) : endDate - defaultSpanMs;
118
+ if (startDate >= endDate) {
119
+ throw new Error(
120
+ `Invalid trace search window: startDate (${new Date(startDate).toISOString()}) must be before endDate (${new Date(endDate).toISOString()}).`
121
+ );
122
+ }
123
+ const format = params.format ?? "digest";
124
+ const result = await searchTraces({
125
+ query: params.query,
126
+ traceIds: params.traceIds,
127
+ filters: params.filters,
128
+ // Forwarded as itself: the filter language and the free-text query are two
129
+ // different searches, and the server combines them.
130
+ ...params.filter ? { filter: params.filter } : {},
131
+ startDate,
132
+ endDate,
133
+ pageSize: params.pageSize ?? 25,
134
+ scrollId: params.scrollId,
135
+ format
136
+ });
137
+ const traces = result.traces ?? [];
138
+ if (traces.length === 0) {
139
+ return buildEmptyResult({
140
+ query: params.query,
141
+ traceIds: params.traceIds,
142
+ spanMs: endDate - startDate,
143
+ windowWasDefaulted: params.startDate === void 0,
144
+ startDate,
145
+ endDate
146
+ });
147
+ }
148
+ if (format === "json") {
149
+ return JSON.stringify(result, null, 2);
150
+ }
151
+ const lines = [];
152
+ lines.push(`Found ${result.pagination?.totalHits ?? traces.length} traces:
153
+ `);
154
+ for (const trace of traces) {
155
+ lines.push(...traceLines(trace));
156
+ }
157
+ if (result.pagination?.scrollId) {
158
+ lines.push(
159
+ `
160
+ **More results available.** Use scrollId: "${result.pagination.scrollId}" to get next page.`
161
+ );
162
+ }
163
+ lines.push(
164
+ '\n> Tip: Use `get_trace` with a traceId for full details. Use `search_traces` with `format: "json"` for raw data. Use `discover_schema` to see available filter fields.'
165
+ );
166
+ return lines.join("\n");
167
+ }
168
+ export {
169
+ handleSearchTraces
170
+ };
171
+ //# sourceMappingURL=search-traces-HSTQ6WTQ.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  setModelProvider
3
- } from "./chunk-JTQJRNFJ.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-SXFC3FNH.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/set-model-provider.ts
@@ -31,4 +31,4 @@ async function handleSetModelProvider(params) {
31
31
  export {
32
32
  handleSetModelProvider
33
33
  };
34
- //# sourceMappingURL=set-model-provider-XRNMFOVR.js.map
34
+ //# sourceMappingURL=set-model-provider-GF7NXUJA.js.map
@@ -0,0 +1,33 @@
1
+ import {
2
+ setModelProvider
3
+ } from "./chunk-SXFC3FNH.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
+
7
+ // src/tools/set-model-provider.ts
8
+ async function handleSetModelProvider(params) {
9
+ const providers = await setModelProvider(params);
10
+ const updated = providers[params.provider];
11
+ if (!updated) {
12
+ throw new Error(
13
+ `Model provider "${params.provider}" was not found in the response. The provider name may be invalid.`
14
+ );
15
+ }
16
+ const lines = [];
17
+ lines.push("Model provider updated successfully!\n");
18
+ lines.push(`**Provider**: ${params.provider}`);
19
+ lines.push(`**Status**: ${updated?.enabled ? "enabled" : "disabled"}`);
20
+ if (updated?.customKeys) {
21
+ const keyFields = Object.entries(updated.customKeys).map(([k, v]) => `${k}: ${v ? "set" : "not set"}`).join(", ");
22
+ lines.push(`**Keys**: ${keyFields}`);
23
+ }
24
+ if (params.defaultModel) {
25
+ const normalizedModel = params.defaultModel.includes("/") ? params.defaultModel : `${params.provider}/${params.defaultModel}`;
26
+ lines.push(`**Default Model**: ${normalizedModel}`);
27
+ }
28
+ return lines.join("\n");
29
+ }
30
+ export {
31
+ handleSetModelProvider
32
+ };
33
+ //# sourceMappingURL=set-model-provider-KDQ7C4EZ.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  updateAgent
3
- } from "./chunk-EYXMLE5X.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-HGELNIVY.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/update-agent.ts
@@ -18,4 +18,4 @@ async function handleUpdateAgent(params) {
18
18
  export {
19
19
  handleUpdateAgent
20
20
  };
21
- //# sourceMappingURL=update-agent-DUWNYBNA.js.map
21
+ //# sourceMappingURL=update-agent-DWG43T2P.js.map
@@ -0,0 +1,20 @@
1
+ import {
2
+ updateAgent
3
+ } from "./chunk-YCARO42Z.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
+
7
+ // src/tools/update-agent.ts
8
+ async function handleUpdateAgent(params) {
9
+ const { id, ...data } = params;
10
+ const agent = await updateAgent({ id, ...data });
11
+ return `Agent updated successfully!
12
+
13
+ **Name**: ${agent.name}
14
+ **ID**: ${agent.id}
15
+ **Type**: ${agent.type}`;
16
+ }
17
+ export {
18
+ handleUpdateAgent
19
+ };
20
+ //# sourceMappingURL=update-agent-MXNOBS4H.js.map
@@ -0,0 +1,71 @@
1
+ import {
2
+ assertDashboardExists,
3
+ getDashboardWidget,
4
+ normalizeDashboardWidgetQueries,
5
+ updateDashboardWidget
6
+ } from "./chunk-5FNCQRCX.js";
7
+ import "./chunk-K2I7Z3LZ.js";
8
+ import {
9
+ getCurrentProject
10
+ } from "./chunk-B4J3PJLX.js";
11
+ import {
12
+ LangWatchApiError
13
+ } from "./chunk-UWLE5T2F.js";
14
+ import "./chunk-H6WGMG2T.js";
15
+ import "./chunk-SAS5OB7F.js";
16
+
17
+ // src/tools/update-dashboard-widget.ts
18
+ async function handleUpdateDashboardWidget(params) {
19
+ const { dashboardId, widgetId, name, code, description } = params;
20
+ if (name === void 0 && code === void 0 && params.queries === void 0 && description === void 0) {
21
+ throw new Error("Provide at least one of name, code, queries or description to change.");
22
+ }
23
+ const queries = params.queries === void 0 ? void 0 : normalizeDashboardWidgetQueries({ queries: params.queries });
24
+ const project = await getCurrentProject();
25
+ await assertDashboardExists({ projectId: project.id, dashboardId });
26
+ const current = await getWidgetOnDashboard({ projectId: project.id, widgetId, dashboardId });
27
+ const widget = await updateDashboardWidget({
28
+ projectId: project.id,
29
+ widgetId: current.id,
30
+ ...name === void 0 ? {} : { name },
31
+ ...code === void 0 ? {} : { code },
32
+ ...queries === void 0 ? {} : { queries },
33
+ ...description === void 0 ? {} : { description }
34
+ });
35
+ return [
36
+ `Widget "${widget.name}" updated on dashboard "${dashboardId}".`,
37
+ `**Widget ID**: ${widget.id}`,
38
+ `**Queries**: ${widget.definition.queries.map((query) => query.name).join(", ") || "(none)"}`,
39
+ "",
40
+ "```json",
41
+ JSON.stringify(widget, null, 2),
42
+ "```"
43
+ ].join("\n");
44
+ }
45
+ async function getWidgetOnDashboard({
46
+ projectId,
47
+ widgetId,
48
+ dashboardId
49
+ }) {
50
+ let widget;
51
+ try {
52
+ widget = await getDashboardWidget({ projectId, widgetId });
53
+ } catch (error) {
54
+ if (error instanceof LangWatchApiError && error.status === 404) {
55
+ throw new Error(
56
+ `No widget with ID "${widgetId}" was found in this project. Use the widget ID add_dashboard_widget returned.`
57
+ );
58
+ }
59
+ throw error;
60
+ }
61
+ if (widget.dashboardId !== dashboardId) {
62
+ throw new Error(
63
+ `Widget "${widgetId}" is not on dashboard "${dashboardId}". Pass the dashboard the widget was added to.`
64
+ );
65
+ }
66
+ return widget;
67
+ }
68
+ export {
69
+ handleUpdateDashboardWidget
70
+ };
71
+ //# sourceMappingURL=update-dashboard-widget-CJKJLCDY.js.map
@@ -0,0 +1,70 @@
1
+ import {
2
+ assertDashboardExists,
3
+ getDashboardWidget,
4
+ normalizeDashboardWidgetQueries,
5
+ updateDashboardWidget
6
+ } from "./chunk-5FNCQRCX.js";
7
+ import "./chunk-K2I7Z3LZ.js";
8
+ import {
9
+ getCurrentProject
10
+ } from "./chunk-B4J3PJLX.js";
11
+ import {
12
+ LangWatchApiError
13
+ } from "./chunk-UWLE5T2F.js";
14
+ import "./chunk-H6WGMG2T.js";
15
+
16
+ // src/tools/update-dashboard-widget.ts
17
+ async function handleUpdateDashboardWidget(params) {
18
+ const { dashboardId, widgetId, name, code, description } = params;
19
+ if (name === void 0 && code === void 0 && params.queries === void 0 && description === void 0) {
20
+ throw new Error("Provide at least one of name, code, queries or description to change.");
21
+ }
22
+ const queries = params.queries === void 0 ? void 0 : normalizeDashboardWidgetQueries({ queries: params.queries });
23
+ const project = await getCurrentProject();
24
+ await assertDashboardExists({ projectId: project.id, dashboardId });
25
+ const current = await getWidgetOnDashboard({ projectId: project.id, widgetId, dashboardId });
26
+ const widget = await updateDashboardWidget({
27
+ projectId: project.id,
28
+ widgetId: current.id,
29
+ ...name === void 0 ? {} : { name },
30
+ ...code === void 0 ? {} : { code },
31
+ ...queries === void 0 ? {} : { queries },
32
+ ...description === void 0 ? {} : { description }
33
+ });
34
+ return [
35
+ `Widget "${widget.name}" updated on dashboard "${dashboardId}".`,
36
+ `**Widget ID**: ${widget.id}`,
37
+ `**Queries**: ${widget.definition.queries.map((query) => query.name).join(", ") || "(none)"}`,
38
+ "",
39
+ "```json",
40
+ JSON.stringify(widget, null, 2),
41
+ "```"
42
+ ].join("\n");
43
+ }
44
+ async function getWidgetOnDashboard({
45
+ projectId,
46
+ widgetId,
47
+ dashboardId
48
+ }) {
49
+ let widget;
50
+ try {
51
+ widget = await getDashboardWidget({ projectId, widgetId });
52
+ } catch (error) {
53
+ if (error instanceof LangWatchApiError && error.status === 404) {
54
+ throw new Error(
55
+ `No widget with ID "${widgetId}" was found in this project. Use the widget ID add_dashboard_widget returned.`
56
+ );
57
+ }
58
+ throw error;
59
+ }
60
+ if (widget.dashboardId !== dashboardId) {
61
+ throw new Error(
62
+ `Widget "${widgetId}" is not on dashboard "${dashboardId}". Pass the dashboard the widget was added to.`
63
+ );
64
+ }
65
+ return widget;
66
+ }
67
+ export {
68
+ handleUpdateDashboardWidget
69
+ };
70
+ //# sourceMappingURL=update-dashboard-widget-CYQDS2NR.js.map
@@ -0,0 +1,22 @@
1
+ import {
2
+ formatDatasetMutationDetails
3
+ } from "./chunk-7AQLPVFL.js";
4
+ import {
5
+ updateDataset
6
+ } from "./chunk-7VNSRCXO.js";
7
+ import "./chunk-FOKVY3BK.js";
8
+ import "./chunk-UWLE5T2F.js";
9
+ import "./chunk-H6WGMG2T.js";
10
+
11
+ // src/tools/update-dataset.ts
12
+ async function handleUpdateDataset(params) {
13
+ const result = await updateDataset(params);
14
+ const lines = [];
15
+ lines.push("Dataset updated successfully!\n");
16
+ lines.push(...formatDatasetMutationDetails(result));
17
+ return lines.join("\n");
18
+ }
19
+ export {
20
+ handleUpdateDataset
21
+ };
22
+ //# sourceMappingURL=update-dataset-DQH3OHOU.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  formatDatasetMutationDetails
3
- } from "./chunk-WVI5CJ6S.js";
4
- import "./chunk-NUFPTHKU.js";
3
+ } from "./chunk-7AQLPVFL.js";
5
4
  import {
6
5
  updateDataset
7
- } from "./chunk-AN4OUA4D.js";
8
- import "./chunk-GELJ2MQR.js";
9
- import "./chunk-WT4PO4A3.js";
6
+ } from "./chunk-7VNSRCXO.js";
7
+ import "./chunk-FOKVY3BK.js";
8
+ import "./chunk-UWLE5T2F.js";
9
+ import "./chunk-H6WGMG2T.js";
10
10
  import "./chunk-SAS5OB7F.js";
11
11
 
12
12
  // src/tools/update-dataset.ts
@@ -20,4 +20,4 @@ async function handleUpdateDataset(params) {
20
20
  export {
21
21
  handleUpdateDataset
22
22
  };
23
- //# sourceMappingURL=update-dataset-YSOMDCOB.js.map
23
+ //# sourceMappingURL=update-dataset-SQZ6T4WX.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  updateDatasetRecord
3
- } from "./chunk-AN4OUA4D.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-7VNSRCXO.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/update-dataset-record.ts
@@ -17,4 +17,4 @@ async function handleUpdateDatasetRecord(params) {
17
17
  export {
18
18
  handleUpdateDatasetRecord
19
19
  };
20
- //# sourceMappingURL=update-dataset-record-DEA2ITYR.js.map
20
+ //# sourceMappingURL=update-dataset-record-3AT4IPBC.js.map