@langwatch/mcp-server 2.1.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/.gitignore +7 -0
  2. package/.npmignore +41 -0
  3. package/CHANGELOG.md +218 -201
  4. package/CONTRIBUTING.md +10 -0
  5. package/README.md +70 -68
  6. package/dist/add-dashboard-widget-55UI6H22.js +44 -0
  7. package/dist/add-dashboard-widget-MJHIC3CC.js +45 -0
  8. package/dist/{archive-project-W3IKI7UL.js → archive-project-K5UD7A6X.js} +4 -4
  9. package/dist/archive-project-L4PAKT34.js +19 -0
  10. package/dist/{archive-run-plan-474OKHHU.js → archive-run-plan-5HSQG2HX.js} +4 -4
  11. package/dist/archive-run-plan-AOKNYQIO.js +15 -0
  12. package/dist/archive-scenario-2CWJW2VD.js +19 -0
  13. package/dist/{archive-scenario-V5UNYK26.js → archive-scenario-5IJQESHH.js} +4 -4
  14. package/dist/{archive-test-suite-O7FLDMXK.js → archive-test-suite-OPB7NFI7.js} +4 -4
  15. package/dist/archive-test-suite-ZC3TN6VH.js +15 -0
  16. package/dist/assign-prompt-tag-6DDE6ZZ5.js +23 -0
  17. package/dist/{assign-prompt-tag-Q46WRB6P.js → assign-prompt-tag-D7O23MJM.js} +8 -4
  18. package/dist/chunk-3YLN3ATJ.js +241 -0
  19. package/dist/{chunk-EYXMLE5X.js → chunk-4RX3G62A.js} +56 -47
  20. package/dist/{chunk-UF6XIGYR.js → chunk-6YZUOD34.js} +2 -5
  21. package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
  22. package/dist/chunk-7CZQDZ2K.js +319 -0
  23. package/dist/{chunk-RVAE2MEA.js → chunk-7GETGE6B.js} +7 -7
  24. package/dist/{chunk-OJLYYJWI.js → chunk-AASW2TO2.js} +7 -10
  25. package/dist/{chunk-QAMP3CGR.js → chunk-B4RFWIUP.js} +4 -4
  26. package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
  27. package/dist/{chunk-G4ZAZTZW.js → chunk-D2HS73VI.js} +7 -10
  28. package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
  29. package/dist/{chunk-WT4PO4A3.js → chunk-DULFP3MK.js} +10 -7
  30. package/dist/chunk-EYPJBL7P.js +516 -0
  31. package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
  32. package/dist/chunk-GA5JUSPT.js +64 -0
  33. package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
  34. package/dist/chunk-HLQJXUR6.js +67 -0
  35. package/dist/{chunk-JTQJRNFJ.js → chunk-KILVK3FS.js} +4 -4
  36. package/dist/chunk-MOCU5XWF.js +79 -0
  37. package/dist/chunk-O2WGVCED.js +41 -0
  38. package/dist/{chunk-HV4DWKBI.js → chunk-O7EMWEVJ.js} +2 -4
  39. package/dist/{chunk-UFOYFYI7.js → chunk-QXLMHLRC.js} +6 -9
  40. package/dist/{chunk-QRO35SOM.js → chunk-R5YJIYPF.js} +981 -747
  41. package/dist/{chunk-JR6DJZOU.js → chunk-RABYBFX5.js} +4 -10
  42. package/dist/{chunk-SR6QPRIE.js → chunk-RFC2SBEX.js} +7 -13
  43. package/dist/chunk-SHSVN3SE.js +21 -0
  44. package/dist/{chunk-CKNAH5TG.js → chunk-U24EACC4.js} +3 -10
  45. package/dist/{chunk-56OGTS24.js → chunk-VOUGDY2O.js} +4 -11
  46. package/dist/chunk-WCKZDOGF.js +31 -0
  47. package/dist/chunk-XQYH52SI.js +129 -0
  48. package/dist/{chunk-7E4FZIYJ.js → chunk-XUIJYNRJ.js} +1 -1
  49. package/dist/{chunk-6DJDEXET.js → chunk-YCIUEZVK.js} +6 -12
  50. package/dist/config-2WQGMAEN.js +16 -0
  51. package/dist/config.cjs +109 -0
  52. package/dist/config.js +5 -4
  53. package/dist/{create-agent-JFJ2K6X3.js → create-agent-6JNLMYQD.js} +4 -4
  54. package/dist/create-agent-IRZOU4R5.js +23 -0
  55. package/dist/create-analytics-report-N4L4V5QL.js +19 -0
  56. package/dist/create-analytics-report-QEHXG7FU.js +18 -0
  57. package/dist/{create-annotation-EUXXQ6NS.js → create-annotation-CCEGIZ67.js} +10 -5
  58. package/dist/create-annotation-DTHCMWHB.js +29 -0
  59. package/dist/{create-api-key-BGBB76JX.js → create-api-key-JKM2DSZO.js} +5 -7
  60. package/dist/create-api-key-JPEUIXGM.js +24 -0
  61. package/dist/create-dataset-DJNXYJ5B.js +22 -0
  62. package/dist/{create-dataset-FD5VAXU4.js → create-dataset-WON4SOTC.js} +6 -6
  63. package/dist/create-dataset-records-TMEOTLTO.js +20 -0
  64. package/dist/{create-dataset-records-WQUXXOHI.js → create-dataset-records-UJBW3C7C.js} +5 -7
  65. package/dist/create-evaluator-N5AEHI4K.js +27 -0
  66. package/dist/{create-evaluator-6NV33Z52.js → create-evaluator-XYNY2YFY.js} +4 -4
  67. package/dist/create-mcp-server.cjs +9712 -0
  68. package/dist/create-mcp-server.js +2757 -10
  69. package/dist/{create-project-ZQ7TFIO2.js → create-project-EY4XZ7TH.js} +4 -4
  70. package/dist/create-project-YL345T5L.js +44 -0
  71. package/dist/{create-prompt-BS6QRCUU.js → create-prompt-JZQNQ7I3.js} +5 -7
  72. package/dist/create-prompt-ZUMQHHX7.js +37 -0
  73. package/dist/create-prompt-tag-CJ5FZ436.js +17 -0
  74. package/dist/{create-prompt-tag-FCQ5ELSQ.js → create-prompt-tag-JFP2Q3PO.js} +3 -3
  75. package/dist/create-scenario-CQU2SSFB.js +33 -0
  76. package/dist/{create-scenario-DRPTPXU3.js → create-scenario-S6OWWKJO.js} +5 -5
  77. package/dist/create-test-suite-OLGCAGJA.js +36 -0
  78. package/dist/{create-test-suite-ZIZCCFJ4.js → create-test-suite-Y7P2RI4L.js} +6 -6
  79. package/dist/create-trigger-4CNBTISJ.js +48 -0
  80. package/dist/create-trigger-RQ653WYF.js +49 -0
  81. package/dist/dashboards-BA7M6CMO.js +90 -0
  82. package/dist/dashboards-U663GUIB.js +91 -0
  83. package/dist/{delete-agent-SA4JMUZF.js → delete-agent-J2Q4DRZ2.js} +4 -4
  84. package/dist/delete-agent-ZAU4LTXB.js +18 -0
  85. package/dist/delete-analytics-report-QK6X7P4S.js +19 -0
  86. package/dist/delete-analytics-report-YUYLDHLL.js +18 -0
  87. package/dist/delete-annotation-7X4NYXXM.js +17 -0
  88. package/dist/{delete-annotation-X3KKK7QY.js → delete-annotation-KJOCDLV3.js} +4 -4
  89. package/dist/{delete-dataset-W6EZ44HY.js → delete-dataset-NXP7ZPPV.js} +5 -7
  90. package/dist/delete-dataset-RUTZBBVD.js +18 -0
  91. package/dist/{delete-dataset-records-7CNOTALB.js → delete-dataset-records-4Z7DZCDW.js} +5 -7
  92. package/dist/delete-dataset-records-75UAR5IS.js +19 -0
  93. package/dist/delete-evaluator-E3CUNGTQ.js +16 -0
  94. package/dist/delete-evaluator-RI4GALGX.js +15 -0
  95. package/dist/delete-prompt-tag-LE3WJPKS.js +17 -0
  96. package/dist/{delete-prompt-tag-QB3OCZUV.js → delete-prompt-tag-S4KBZTNG.js} +3 -3
  97. package/dist/delete-workflow-4CZFIQCQ.js +17 -0
  98. package/dist/{delete-workflow-NG2VXYYM.js → delete-workflow-PWQPDW6H.js} +4 -4
  99. package/dist/discover-evaluator-schema-UHWA5HVL.js +120 -0
  100. package/dist/discover-evaluator-schema-XKCLLCB3.js +118 -0
  101. package/dist/discover-scenario-schema-NOJY6S7E.js +137 -0
  102. package/dist/{discover-scenario-schema-W7KBXA4J.js → discover-scenario-schema-OOFIQKOG.js} +37 -17
  103. package/dist/discover-schema-7WHIIATI.js +442 -0
  104. package/dist/{discover-schema-L6QDPON3.js → discover-schema-J2ANOBKO.js} +181 -186
  105. package/dist/get-agent-5T3CXQOR.js +69 -0
  106. package/dist/{get-agent-7THF7HCU.js → get-agent-ZKYQJUQ7.js} +15 -11
  107. package/dist/get-analytics-4MPEK4KV.js +79 -0
  108. package/dist/get-analytics-ZLI3A4F5.js +80 -0
  109. package/dist/get-analytics-report-JCKYMA2S.js +29 -0
  110. package/dist/get-analytics-report-SKIP2JWH.js +30 -0
  111. package/dist/get-dataset-APGZBYMH.js +64 -0
  112. package/dist/get-dataset-LWXDVMVE.js +63 -0
  113. package/dist/get-evaluator-3A7BJBAB.js +47 -0
  114. package/dist/{get-evaluator-RZ44UIN6.js → get-evaluator-IWNJINRY.js} +4 -4
  115. package/dist/get-project-EQVB4LEL.js +26 -0
  116. package/dist/{get-project-QSQEAB33.js → get-project-RK6AJTEP.js} +4 -4
  117. package/dist/{get-prompt-GVKXF5NL.js → get-prompt-TLG2T2DS.js} +53 -58
  118. package/dist/get-prompt-ZER557X3.js +94 -0
  119. package/dist/get-run-plan-5X7DDJRN.js +58 -0
  120. package/dist/{get-run-plan-NY7J5GRE.js → get-run-plan-PEHRO5M3.js} +7 -9
  121. package/dist/{get-scenario-Q3LLQE4T.js → get-scenario-375W5D6I.js} +5 -5
  122. package/dist/get-scenario-UQX45ZZO.js +37 -0
  123. package/dist/{get-simulation-run-WINEYDMK.js → get-simulation-run-2NBXJADG.js} +26 -22
  124. package/dist/get-simulation-run-QZTLGL7W.js +69 -0
  125. package/dist/{get-test-suite-4HKA7OKS.js → get-test-suite-GVIBDG7K.js} +5 -5
  126. package/dist/get-test-suite-OODIR3RI.js +48 -0
  127. package/dist/{get-trace-RCUV7N4O.js → get-trace-AGCHVPJK.js} +11 -13
  128. package/dist/get-trace-KJLYAZRC.js +45 -0
  129. package/dist/get-workflow-3TV2YYC5.js +25 -0
  130. package/dist/{get-workflow-EEOC7Y45.js → get-workflow-7LZSVPP2.js} +4 -4
  131. package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
  132. package/dist/{http-server-WCDUARTH.js → http-server-7CCN3EHJ.js} +4249 -325
  133. package/dist/index.js +59595 -38027
  134. package/dist/langwatch-api-analytics-reports-6CF6KUET.js +17 -0
  135. package/dist/langwatch-api-analytics-reports-RPFB5AO5.js +18 -0
  136. package/dist/{langwatch-api-annotations-6DHVZWUK.js → langwatch-api-annotations-H4AI4TKG.js} +4 -4
  137. package/dist/langwatch-api-annotations-QSJNUQQS.js +17 -0
  138. package/dist/langwatch-api-monitors-ENHLOL3S.js +47 -0
  139. package/dist/{langwatch-api-monitors-6ISFJ7WX.js → langwatch-api-monitors-OHSGADTH.js} +11 -16
  140. package/dist/langwatch-api-secrets-AGW6UUMD.js +55 -0
  141. package/dist/langwatch-api-secrets-CLTS766Q.js +56 -0
  142. package/dist/langwatch-api-triggers-G5UWFNN2.js +22 -0
  143. package/dist/langwatch-api-triggers-QMR7KEXW.js +23 -0
  144. package/dist/langwatch-api-workflows-HKTBIKKY.js +15 -0
  145. package/dist/{langwatch-api-workflows-6UJL5U4Z.js → langwatch-api-workflows-OMROZH2O.js} +4 -4
  146. package/dist/{list-agents-AMVDQPQL.js → list-agents-BYWDNAHT.js} +4 -4
  147. package/dist/list-agents-MG24MHZE.js +42 -0
  148. package/dist/list-analytics-reports-G3EPWGSQ.js +32 -0
  149. package/dist/list-analytics-reports-PPWIFRES.js +33 -0
  150. package/dist/list-annotations-QCLGEK5A.js +38 -0
  151. package/dist/{list-annotations-6PR5NLIC.js → list-annotations-Y4EUBJHG.js} +10 -5
  152. package/dist/list-api-keys-DAVOBPFK.js +42 -0
  153. package/dist/{list-api-keys-GVPNBIHQ.js → list-api-keys-JMW5WRXX.js} +10 -5
  154. package/dist/list-dashboards-2P3VJFRS.js +29 -0
  155. package/dist/list-dashboards-MW5O3MKH.js +30 -0
  156. package/dist/list-dataset-records-KEHT7G6Q.js +43 -0
  157. package/dist/{list-dataset-records-O67HZ35Y.js → list-dataset-records-KMLLMZAZ.js} +14 -10
  158. package/dist/{list-datasets-WXZL6UMP.js → list-datasets-P3JK2ZHS.js} +9 -13
  159. package/dist/list-datasets-Z7OOE4KI.js +56 -0
  160. package/dist/{list-evaluators-PAX72WCN.js → list-evaluators-7RRESBOU.js} +5 -7
  161. package/dist/list-evaluators-VATJVOHR.js +32 -0
  162. package/dist/{list-model-providers-VVLZMLCX.js → list-model-providers-OXDRPUCJ.js} +4 -4
  163. package/dist/list-model-providers-VXQJWDXU.js +35 -0
  164. package/dist/{list-projects-AQVI6SUK.js → list-projects-HUVK7L3W.js} +5 -7
  165. package/dist/list-projects-X72ZXVY5.js +40 -0
  166. package/dist/{list-prompt-tags-WZFBJOHG.js → list-prompt-tags-3I3LWFIR.js} +3 -3
  167. package/dist/list-prompt-tags-DRHUH2ND.js +23 -0
  168. package/dist/list-prompts-6DX3QECJ.js +30 -0
  169. package/dist/{list-prompts-BQOHRHYT.js → list-prompts-PS423RU3.js} +4 -6
  170. package/dist/list-run-plans-5SXPOV3X.js +45 -0
  171. package/dist/{list-run-plans-UBAU2DGH.js → list-run-plans-6VNHINPY.js} +5 -5
  172. package/dist/list-scenarios-EQWCW7Q4.js +45 -0
  173. package/dist/{list-scenarios-MS4IUIVM.js → list-scenarios-GKNH3YND.js} +13 -11
  174. package/dist/{list-simulation-runs-D6YF4ZOU.js → list-simulation-runs-KHY7KALI.js} +12 -8
  175. package/dist/list-simulation-runs-PUDK32C2.js +53 -0
  176. package/dist/list-test-suites-7H2DRILK.js +34 -0
  177. package/dist/{list-test-suites-L7R2O6DR.js → list-test-suites-GY56LGLY.js} +4 -4
  178. package/dist/list-trigger-fires-7RZUP54Y.js +19 -0
  179. package/dist/list-trigger-fires-OZUF65LI.js +20 -0
  180. package/dist/list-triggers-BGUCUXTJ.js +45 -0
  181. package/dist/list-triggers-XC5KMX4C.js +46 -0
  182. package/dist/list-workflows-55NYC3PC.js +33 -0
  183. package/dist/{list-workflows-6MV4XJHF.js → list-workflows-HV7FUWZA.js} +5 -7
  184. package/dist/{rename-prompt-tag-K5LQ4CY6.js → rename-prompt-tag-2I7Z5FCY.js} +3 -3
  185. package/dist/rename-prompt-tag-SZYTOWDX.js +18 -0
  186. package/dist/{rename-test-suite-NTYHAO5X.js → rename-test-suite-27AYY33K.js} +4 -4
  187. package/dist/rename-test-suite-CLIEPZDO.js +20 -0
  188. package/dist/report-issue-5HSL7CNB.js +924 -0
  189. package/dist/{report-issue-RHZZ33IS.js → report-issue-N7ND5TM6.js} +107 -67
  190. package/dist/{rerun-run-plan-MUDWJBE4.js → rerun-run-plan-O3VUZ6CG.js} +5 -5
  191. package/dist/rerun-run-plan-OJTVVGJI.js +21 -0
  192. package/dist/{revoke-api-key-6LAZ3QZZ.js → revoke-api-key-BU6BKGCG.js} +4 -4
  193. package/dist/revoke-api-key-NZNCFOIR.js +15 -0
  194. package/dist/run-agent-244O4Y5M.js +75 -0
  195. package/dist/run-agent-HPCGZGYW.js +74 -0
  196. package/dist/run-plan-2ZPGGZ4H.js +38 -0
  197. package/dist/{run-plan-T4ZYOZGA.js → run-plan-KSXUYQT3.js} +7 -7
  198. package/dist/run-query-4LMOQ5UW.js +47 -0
  199. package/dist/run-query-BQUHIUC2.js +46 -0
  200. package/dist/{run-test-suite-L4MZ7G4D.js → run-test-suite-P3WLVPXC.js} +6 -6
  201. package/dist/run-test-suite-UEOMCON6.js +25 -0
  202. package/dist/run-workflow-EFZ6HG5B.js +36 -0
  203. package/dist/{run-workflow-DFIS23AP.js → run-workflow-I4IHEN54.js} +4 -4
  204. package/dist/search-traces-6IR7PR4L.js +170 -0
  205. package/dist/search-traces-BYML2NQ4.js +171 -0
  206. package/dist/set-model-provider-RBNGWFVI.js +33 -0
  207. package/dist/{set-model-provider-XRNMFOVR.js → set-model-provider-SHEVKWRC.js} +4 -4
  208. package/dist/{update-agent-DUWNYBNA.js → update-agent-PTKTM2B5.js} +4 -4
  209. package/dist/update-agent-ZPXWRMS2.js +20 -0
  210. package/dist/update-dashboard-widget-HKCBXH7X.js +62 -0
  211. package/dist/update-dashboard-widget-IP2TTQ5G.js +63 -0
  212. package/dist/update-dataset-GHIN6JR3.js +22 -0
  213. package/dist/{update-dataset-YSOMDCOB.js → update-dataset-IRVMY5PF.js} +6 -6
  214. package/dist/update-dataset-record-6VI7K2CL.js +19 -0
  215. package/dist/{update-dataset-record-DEA2ITYR.js → update-dataset-record-Z3L7ACNF.js} +4 -4
  216. package/dist/update-evaluator-5NLNE6VY.js +24 -0
  217. package/dist/{update-evaluator-NH7Q5GWV.js → update-evaluator-FEH7H6NS.js} +4 -4
  218. package/dist/update-project-75H3LDQT.js +24 -0
  219. package/dist/{update-project-Q26FBSYH.js → update-project-QPR3QX55.js} +4 -4
  220. package/dist/update-prompt-BCDFTNLK.js +140 -0
  221. package/dist/{update-prompt-ZQQ2C3KU.js → update-prompt-NPRXYSWA.js} +27 -29
  222. package/dist/update-scenario-BNOMDCMV.js +34 -0
  223. package/dist/{update-scenario-WUX34JAR.js → update-scenario-EM5XGMB7.js} +5 -5
  224. package/package.json +35 -39
  225. package/pyproject.toml +23 -8
  226. package/src/config.d.ts +6 -0
  227. package/src/config.ts +22 -29
  228. package/src/create-mcp-server.ts +887 -634
  229. package/src/documentation-fetch.ts +21 -20
  230. package/src/http-security.ts +166 -135
  231. package/src/http-server.ts +189 -224
  232. package/src/index.ts +14 -16
  233. package/src/langwatch-api-agents.ts +18 -21
  234. package/src/langwatch-api-analytics-reports.ts +62 -0
  235. package/src/langwatch-api-annotations.ts +11 -12
  236. package/src/langwatch-api-api-keys.ts +8 -9
  237. package/src/langwatch-api-dashboard-widgets.ts +47 -0
  238. package/src/langwatch-api-dashboards.ts +109 -24
  239. package/src/langwatch-api-datasets.ts +98 -32
  240. package/src/langwatch-api-evaluators.ts +13 -19
  241. package/src/langwatch-api-model-providers.ts +4 -4
  242. package/src/langwatch-api-monitors.ts +14 -18
  243. package/src/langwatch-api-projects.ts +10 -9
  244. package/src/langwatch-api-query.ts +114 -0
  245. package/src/langwatch-api-run-plans.ts +12 -29
  246. package/src/langwatch-api-scenarios.ts +9 -11
  247. package/src/langwatch-api-secrets.ts +31 -24
  248. package/src/langwatch-api-simulation-runs.ts +6 -8
  249. package/src/langwatch-api-test-suites.ts +14 -33
  250. package/src/langwatch-api-triggers.ts +96 -34
  251. package/src/langwatch-api-workflows.ts +9 -9
  252. package/src/langwatch-api.ts +118 -124
  253. package/src/public-http-request.ts +21 -12
  254. package/src/schemas/analytics-metrics.ts +3 -15
  255. package/src/schemas/create-dataset.ts +3 -4
  256. package/src/schemas/run-plan.ts +13 -29
  257. package/src/schemas/suite-fields.ts +6 -23
  258. package/src/schemas/triggers.ts +365 -0
  259. package/src/schemas/widget-sources.ts +33 -0
  260. package/src/tools/add-dashboard-widget.ts +51 -0
  261. package/src/tools/archive-project.ts +2 -4
  262. package/src/tools/archive-run-plan.ts +2 -4
  263. package/src/tools/archive-scenario.ts +2 -4
  264. package/src/tools/archive-test-suite.ts +2 -4
  265. package/src/tools/assign-prompt-tag.ts +6 -2
  266. package/src/tools/create-agent.ts +1 -1
  267. package/src/tools/create-analytics-report.ts +7 -0
  268. package/src/tools/create-annotation.ts +7 -2
  269. package/src/tools/create-api-key.ts +4 -6
  270. package/src/tools/create-dataset-records.ts +4 -8
  271. package/src/tools/create-dataset.ts +5 -7
  272. package/src/tools/create-evaluator.ts +3 -5
  273. package/src/tools/create-project.ts +2 -2
  274. package/src/tools/create-prompt-tag.ts +2 -4
  275. package/src/tools/create-prompt.ts +9 -18
  276. package/src/tools/create-scenario.ts +5 -7
  277. package/src/tools/create-test-suite.ts +4 -9
  278. package/src/tools/create-trigger.ts +55 -0
  279. package/src/tools/dashboard-widget-queries.ts +45 -0
  280. package/src/tools/dashboards.ts +104 -0
  281. package/src/tools/delete-agent.ts +1 -1
  282. package/src/tools/delete-analytics-report.ts +7 -0
  283. package/src/tools/delete-annotation.ts +1 -1
  284. package/src/tools/delete-dataset-records.ts +4 -8
  285. package/src/tools/delete-dataset.ts +3 -7
  286. package/src/tools/delete-evaluator.ts +4 -6
  287. package/src/tools/delete-prompt-tag.ts +2 -4
  288. package/src/tools/delete-workflow.ts +1 -1
  289. package/src/tools/discover-evaluator-schema.ts +34 -25
  290. package/src/tools/discover-scenario-schema.ts +41 -21
  291. package/src/tools/discover-schema.ts +149 -27
  292. package/src/tools/experiment-run-status.ts +2 -8
  293. package/src/tools/format-dataset-mutation.ts +5 -10
  294. package/src/tools/format-run-plan.ts +7 -21
  295. package/src/tools/format-scenario.ts +2 -4
  296. package/src/tools/format-suite-details.ts +6 -12
  297. package/src/tools/get-agent.ts +15 -6
  298. package/src/tools/get-analytics-report.ts +23 -0
  299. package/src/tools/get-analytics.ts +52 -46
  300. package/src/tools/get-dataset.ts +34 -16
  301. package/src/tools/get-evaluator.ts +4 -11
  302. package/src/tools/get-experiment-results.ts +219 -186
  303. package/src/tools/get-project.ts +2 -4
  304. package/src/tools/get-prompt.ts +63 -84
  305. package/src/tools/get-run-plan.ts +4 -6
  306. package/src/tools/get-scenario.ts +4 -6
  307. package/src/tools/get-simulation-run.ts +27 -24
  308. package/src/tools/get-test-suite.ts +2 -5
  309. package/src/tools/get-trace.ts +16 -17
  310. package/src/tools/get-workflow.ts +1 -1
  311. package/src/tools/list-agents.ts +1 -1
  312. package/src/tools/list-analytics-reports.ts +27 -0
  313. package/src/tools/list-annotations.ts +8 -5
  314. package/src/tools/list-api-keys.ts +7 -2
  315. package/src/tools/list-dashboards.ts +20 -21
  316. package/src/tools/list-dataset-records.ts +8 -6
  317. package/src/tools/list-datasets.ts +12 -23
  318. package/src/tools/list-evaluators.ts +4 -8
  319. package/src/tools/list-experiment-runs.ts +5 -9
  320. package/src/tools/list-experiments.ts +5 -11
  321. package/src/tools/list-model-providers.ts +3 -5
  322. package/src/tools/list-projects.ts +2 -4
  323. package/src/tools/list-prompt-tags.ts +3 -3
  324. package/src/tools/list-prompts.ts +4 -8
  325. package/src/tools/list-run-plans.ts +2 -2
  326. package/src/tools/list-scenarios.ts +14 -15
  327. package/src/tools/list-simulation-runs.ts +8 -4
  328. package/src/tools/list-test-suites.ts +1 -1
  329. package/src/tools/list-trigger-fires.ts +17 -0
  330. package/src/tools/list-triggers.ts +39 -0
  331. package/src/tools/list-workflows.ts +2 -4
  332. package/src/tools/rename-prompt-tag.ts +1 -1
  333. package/src/tools/rename-test-suite.ts +2 -5
  334. package/src/tools/report-issue.ts +7 -9
  335. package/src/tools/rerun-run-plan.ts +2 -5
  336. package/src/tools/revoke-api-key.ts +2 -4
  337. package/src/tools/run-agent.ts +29 -26
  338. package/src/tools/run-experiment.ts +37 -34
  339. package/src/tools/run-plan.ts +4 -7
  340. package/src/tools/run-query.ts +47 -0
  341. package/src/tools/run-test-suite.ts +4 -7
  342. package/src/tools/run-workflow.ts +2 -5
  343. package/src/tools/search-traces.ts +161 -47
  344. package/src/tools/set-model-provider.ts +4 -6
  345. package/src/tools/test-agent.ts +2 -2
  346. package/src/tools/update-agent.ts +1 -1
  347. package/src/tools/update-dashboard-widget.ts +86 -0
  348. package/src/tools/update-dataset-record.ts +1 -1
  349. package/src/tools/update-dataset.ts +5 -7
  350. package/src/tools/update-evaluator.ts +3 -5
  351. package/src/tools/update-project.ts +1 -1
  352. package/src/tools/update-prompt.ts +44 -59
  353. package/src/tools/update-scenario.ts +5 -7
  354. package/src/tools/update-test-suite.ts +6 -11
  355. package/src/utils/date-parsing.ts +1 -1
  356. package/src/utils/escape-markdown.ts +3 -8
  357. package/src/utils/format-evaluations.ts +6 -6
  358. package/src/utils/markdown-table.ts +58 -0
  359. package/src/utils/trace-id-shape.ts +20 -0
  360. package/tsconfig.app.json +24 -0
  361. package/tsconfig.json +14 -12
  362. package/uv.lock +667 -341
  363. package/vitest.integration.config.js +10 -0
  364. package/vitest.scenario.config.js +9 -0
  365. package/.eslintrc.cjs +0 -36
  366. package/dist/chunk-AN4OUA4D.js +0 -86
  367. package/dist/chunk-GELJ2MQR.js +0 -226
  368. package/dist/chunk-K37ZNPXK.js +0 -24
  369. package/dist/chunk-S4GVX36W.js +0 -39
  370. package/dist/config.d.ts +0 -17
  371. package/dist/create-dashboard-Z76AIPLS.js +0 -19
  372. package/dist/create-mcp-server.d.ts +0 -10
  373. package/dist/delete-dashboard-LYMRPF27.js +0 -19
  374. package/dist/delete-evaluator-RKYC4TNB.js +0 -16
  375. package/dist/discover-evaluator-schema-ESSHQGPY.js +0 -1912
  376. package/dist/get-analytics-R6AZD3AW.js +0 -73
  377. package/dist/get-dashboard-P4WWVHFU.js +0 -30
  378. package/dist/get-dataset-AKTYSQDI.js +0 -49
  379. package/dist/index.d.ts +0 -2
  380. package/dist/langwatch-api-dashboards-2KJL2M42.js +0 -18
  381. package/dist/langwatch-api-secrets-OEBD6GBU.js +0 -41
  382. package/dist/langwatch-api-triggers-5E6DDGX6.js +0 -31
  383. package/dist/list-dashboards-Z3BZKDGF.js +0 -33
  384. package/dist/run-agent-CAGWGTYT.js +0 -72
  385. package/dist/search-traces-4XTJYXIK.js +0 -79
  386. package/src/__tests__/agent-tools.unit.test.ts +0 -257
  387. package/src/__tests__/all-tools.integration.test.ts +0 -1872
  388. package/src/__tests__/config.unit.test.ts +0 -202
  389. package/src/__tests__/datasets.integration.test.ts +0 -620
  390. package/src/__tests__/datasets.unit.test.ts +0 -244
  391. package/src/__tests__/date-parsing.unit.test.ts +0 -78
  392. package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
  393. package/src/__tests__/discover-schema.unit.test.ts +0 -118
  394. package/src/__tests__/docker.integration.test.ts +0 -318
  395. package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
  396. package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
  397. package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
  398. package/src/__tests__/experiment-status.unit.test.ts +0 -194
  399. package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
  400. package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
  401. package/src/__tests__/http-security-origin.unit.test.ts +0 -97
  402. package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
  403. package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
  404. package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
  405. package/src/__tests__/http-server-origin.integration.test.ts +0 -169
  406. package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
  407. package/src/__tests__/http-transport.integration.test.ts +0 -395
  408. package/src/__tests__/integration.integration.test.ts +0 -284
  409. package/src/__tests__/langwatch-api.unit.test.ts +0 -661
  410. package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
  411. package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
  412. package/src/__tests__/prompt-response-types.unit.test.ts +0 -51
  413. package/src/__tests__/prompts.integration.test.ts +0 -736
  414. package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
  415. package/src/__tests__/report-issue.integration.test.ts +0 -147
  416. package/src/__tests__/run-plan-tools.unit.test.ts +0 -565
  417. package/src/__tests__/scenario-tools.integration.test.ts +0 -286
  418. package/src/__tests__/scenario-tools.unit.test.ts +0 -207
  419. package/src/__tests__/schemas.unit.test.ts +0 -85
  420. package/src/__tests__/simulation-run-tools.unit.test.ts +0 -116
  421. package/src/__tests__/support/http-server-harness.ts +0 -138
  422. package/src/__tests__/test-suite-tools.unit.test.ts +0 -615
  423. package/src/__tests__/tools.integration.test.ts +0 -896
  424. package/src/schemas/filter-fields.ts +0 -119
  425. package/src/schemas/index.ts +0 -9
  426. package/src/tools/create-dashboard.ts +0 -7
  427. package/src/tools/delete-dashboard.ts +0 -7
  428. package/src/tools/get-dashboard.ts +0 -22
@@ -0,0 +1,25 @@
1
+ import {
2
+ formatRunPlanRun
3
+ } from "./chunk-RABYBFX5.js";
4
+ import {
5
+ toWireTargets
6
+ } from "./chunk-O7EMWEVJ.js";
7
+ import {
8
+ runTestSuite
9
+ } from "./chunk-YCIUEZVK.js";
10
+ import "./chunk-7CZQDZ2K.js";
11
+ import "./chunk-DULFP3MK.js";
12
+
13
+ // src/tools/run-test-suite.ts
14
+ async function handleRunTestSuite(params) {
15
+ const { targets, ...rest } = params;
16
+ const result = await runTestSuite({
17
+ ...rest,
18
+ targets: toWireTargets(targets)
19
+ });
20
+ return formatRunPlanRun(result);
21
+ }
22
+ export {
23
+ handleRunTestSuite
24
+ };
25
+ //# sourceMappingURL=run-test-suite-UEOMCON6.js.map
@@ -0,0 +1,36 @@
1
+ import {
2
+ runWorkflow
3
+ } from "./chunk-QXLMHLRC.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.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-EFZ6HG5B.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  runWorkflow
3
- } from "./chunk-UFOYFYI7.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-QXLMHLRC.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/run-workflow.ts
@@ -34,4 +34,4 @@ async function handleRunWorkflow(params) {
34
34
  export {
35
35
  handleRunWorkflow
36
36
  };
37
- //# sourceMappingURL=run-workflow-DFIS23AP.js.map
37
+ //# sourceMappingURL=run-workflow-I4IHEN54.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-7CZQDZ2K.js";
10
+ import "./chunk-DULFP3MK.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-6IR7PR4L.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-7CZQDZ2K.js";
10
+ import "./chunk-DULFP3MK.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-BYML2NQ4.js.map
@@ -0,0 +1,33 @@
1
+ import {
2
+ setModelProvider
3
+ } from "./chunk-KILVK3FS.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.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-RBNGWFVI.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-KILVK3FS.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.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-SHEVKWRC.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-4RX3G62A.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.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-PTKTM2B5.js.map
@@ -0,0 +1,20 @@
1
+ import {
2
+ updateAgent
3
+ } from "./chunk-EYPJBL7P.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.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-ZPXWRMS2.js.map
@@ -0,0 +1,62 @@
1
+ import {
2
+ normalizeDashboardWidgetQueries,
3
+ withSources
4
+ } from "./chunk-WCKZDOGF.js";
5
+ import {
6
+ getWidgetOnDashboard,
7
+ updateWidgetOnDashboard
8
+ } from "./chunk-MOCU5XWF.js";
9
+ import {
10
+ LangWatchApiError
11
+ } from "./chunk-7CZQDZ2K.js";
12
+ import "./chunk-DULFP3MK.js";
13
+
14
+ // src/tools/update-dashboard-widget.ts
15
+ async function handleUpdateDashboardWidget(params) {
16
+ const { dashboardId, widgetId, name, code, description, sources } = params;
17
+ const fields = [name, code, params.queries, description, sources];
18
+ if (fields.every((field) => field === void 0)) {
19
+ throw new Error(
20
+ "Provide at least one of name, code, queries, description or sources to change."
21
+ );
22
+ }
23
+ const current = await widgetOnDashboardOrRefused({ widgetId, dashboardId });
24
+ const given = params.queries === void 0 ? void 0 : normalizeDashboardWidgetQueries({ queries: params.queries });
25
+ const base = given ?? (sources === void 0 ? void 0 : current.definition.queries);
26
+ const queries = base === void 0 ? void 0 : withSources({ queries: base, sources });
27
+ const changes = {
28
+ ...name === void 0 ? {} : { name },
29
+ ...code === void 0 ? {} : { code },
30
+ ...queries === void 0 ? {} : { queries },
31
+ ...description === void 0 ? {} : { description }
32
+ };
33
+ const widget = await updateWidgetOnDashboard({ dashboardId, widgetId: current.id, ...changes });
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 widgetOnDashboardOrRefused({
45
+ widgetId,
46
+ dashboardId
47
+ }) {
48
+ try {
49
+ return await getWidgetOnDashboard({ dashboardId, widgetId });
50
+ } catch (error) {
51
+ if (error instanceof LangWatchApiError && error.status === 404) {
52
+ throw new Error(
53
+ `No widget with ID "${widgetId}" was found on dashboard "${dashboardId}". Use the widget ID add_dashboard_widget returned, and the dashboard it was added to.`
54
+ );
55
+ }
56
+ throw error;
57
+ }
58
+ }
59
+ export {
60
+ handleUpdateDashboardWidget
61
+ };
62
+ //# sourceMappingURL=update-dashboard-widget-HKCBXH7X.js.map
@@ -0,0 +1,63 @@
1
+ import {
2
+ normalizeDashboardWidgetQueries,
3
+ withSources
4
+ } from "./chunk-WCKZDOGF.js";
5
+ import {
6
+ getWidgetOnDashboard,
7
+ updateWidgetOnDashboard
8
+ } from "./chunk-MOCU5XWF.js";
9
+ import {
10
+ LangWatchApiError
11
+ } from "./chunk-7CZQDZ2K.js";
12
+ import "./chunk-DULFP3MK.js";
13
+ import "./chunk-SAS5OB7F.js";
14
+
15
+ // src/tools/update-dashboard-widget.ts
16
+ async function handleUpdateDashboardWidget(params) {
17
+ const { dashboardId, widgetId, name, code, description, sources } = params;
18
+ const fields = [name, code, params.queries, description, sources];
19
+ if (fields.every((field) => field === void 0)) {
20
+ throw new Error(
21
+ "Provide at least one of name, code, queries, description or sources to change."
22
+ );
23
+ }
24
+ const current = await widgetOnDashboardOrRefused({ widgetId, dashboardId });
25
+ const given = params.queries === void 0 ? void 0 : normalizeDashboardWidgetQueries({ queries: params.queries });
26
+ const base = given ?? (sources === void 0 ? void 0 : current.definition.queries);
27
+ const queries = base === void 0 ? void 0 : withSources({ queries: base, sources });
28
+ const changes = {
29
+ ...name === void 0 ? {} : { name },
30
+ ...code === void 0 ? {} : { code },
31
+ ...queries === void 0 ? {} : { queries },
32
+ ...description === void 0 ? {} : { description }
33
+ };
34
+ const widget = await updateWidgetOnDashboard({ dashboardId, widgetId: current.id, ...changes });
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 widgetOnDashboardOrRefused({
46
+ widgetId,
47
+ dashboardId
48
+ }) {
49
+ try {
50
+ return await getWidgetOnDashboard({ dashboardId, widgetId });
51
+ } catch (error) {
52
+ if (error instanceof LangWatchApiError && error.status === 404) {
53
+ throw new Error(
54
+ `No widget with ID "${widgetId}" was found on dashboard "${dashboardId}". Use the widget ID add_dashboard_widget returned, and the dashboard it was added to.`
55
+ );
56
+ }
57
+ throw error;
58
+ }
59
+ }
60
+ export {
61
+ handleUpdateDashboardWidget
62
+ };
63
+ //# sourceMappingURL=update-dashboard-widget-IP2TTQ5G.js.map
@@ -0,0 +1,22 @@
1
+ import {
2
+ formatDatasetMutationDetails
3
+ } from "./chunk-7AQLPVFL.js";
4
+ import {
5
+ updateDataset
6
+ } from "./chunk-XQYH52SI.js";
7
+ import "./chunk-FOKVY3BK.js";
8
+ import "./chunk-7CZQDZ2K.js";
9
+ import "./chunk-DULFP3MK.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-GHIN6JR3.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-XQYH52SI.js";
7
+ import "./chunk-FOKVY3BK.js";
8
+ import "./chunk-7CZQDZ2K.js";
9
+ import "./chunk-DULFP3MK.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-IRVMY5PF.js.map