@langwatch/mcp-server 2.0.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 (430) hide show
  1. package/.gitignore +7 -0
  2. package/.npmignore +41 -0
  3. package/CHANGELOG.md +280 -200
  4. package/CONTRIBUTING.md +10 -0
  5. package/README.md +82 -52
  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-4EQGLBJJ.js → archive-project-SPVHXK6A.js} +4 -4
  10. package/dist/archive-run-plan-65QN3XRX.js +16 -0
  11. package/dist/archive-run-plan-Z4SYE6BP.js +15 -0
  12. package/dist/{archive-scenario-W6BXYDZ3.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-NKZDZY3D.js +16 -0
  16. package/dist/assign-prompt-tag-5IUZXJ2T.js +23 -0
  17. package/dist/{assign-prompt-tag-VLXUWEKU.js → assign-prompt-tag-HBZLBIFD.js} +8 -4
  18. package/dist/{chunk-CDYQOY5U.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-6YZUOD34.js +55 -0
  22. package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
  23. package/dist/chunk-7VNSRCXO.js +129 -0
  24. package/dist/{chunk-7RHG56OH.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-TOXJQDIZ.js → chunk-HGELNIVY.js} +135 -51
  30. package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
  31. package/dist/{chunk-J42FWRJ2.js → chunk-I7ATIZED.js} +7 -7
  32. package/dist/{chunk-AQJO2EI5.js → chunk-ILZDO25L.js} +7 -10
  33. package/dist/{chunk-4QC7SA2L.js → chunk-J7PQKBLD.js} +884 -559
  34. package/dist/{chunk-YX3A3CFM.js → chunk-JRJPH75H.js} +7 -13
  35. package/dist/chunk-K2I7Z3LZ.js +28 -0
  36. package/dist/{chunk-5CCZFUXS.js → chunk-NKMTIHIJ.js} +6 -9
  37. package/dist/chunk-O7EMWEVJ.js +44 -0
  38. package/dist/chunk-PTDR56Z3.js +37 -0
  39. package/dist/chunk-RABYBFX5.js +43 -0
  40. package/dist/chunk-SUPUUC4W.js +64 -0
  41. package/dist/{chunk-SFB4MU6H.js → chunk-SXFC3FNH.js} +4 -4
  42. package/dist/chunk-U24EACC4.js +67 -0
  43. package/dist/chunk-UNJM3BIL.js +21 -0
  44. package/dist/{chunk-ZWIL4EFL.js → chunk-UTJCWXPZ.js} +4 -4
  45. package/dist/chunk-UWLE5T2F.js +312 -0
  46. package/dist/chunk-VMWJD732.js +57 -0
  47. package/dist/chunk-XUIJYNRJ.js +15 -0
  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-7XHO6UIS.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-YQXRQC6A.js → create-annotation-VUSXULQK.js} +10 -5
  57. package/dist/{create-api-key-YUS36KBU.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-4Z5JO5LB.js → create-dashboard-WTKKS5Z6.js} +4 -4
  61. package/dist/{create-dataset-E6NMSVX7.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-SKHPRD2K.js → create-dataset-records-W4GLN2FV.js} +5 -7
  65. package/dist/{create-evaluator-JXF5PF33.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 -5
  69. package/dist/create-project-6N7PIYRY.js +44 -0
  70. package/dist/{create-project-CS2CB57Y.js → create-project-KAIC46UY.js} +4 -4
  71. package/dist/{create-prompt-F5RMX3L3.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-GMRWTEFR.js → create-prompt-tag-OPQUEXWB.js} +3 -3
  75. package/dist/create-scenario-5PJBMAXO.js +33 -0
  76. package/dist/{create-scenario-JDR2VB2H.js → create-scenario-UEM77OE7.js} +11 -4
  77. package/dist/create-test-suite-4IPXVSFQ.js +37 -0
  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-O3EEH4S5.js → delete-agent-QMEK3XHK.js} +4 -4
  83. package/dist/delete-annotation-HY3O2OGR.js +17 -0
  84. package/dist/{delete-annotation-XP6FQM7A.js → delete-annotation-VKIQWUYW.js} +4 -4
  85. package/dist/delete-dashboard-76N66XXL.js +18 -0
  86. package/dist/{delete-dashboard-RFUNYCNP.js → delete-dashboard-JVIVHNJM.js} +4 -4
  87. package/dist/delete-dataset-HQCR66MG.js +18 -0
  88. package/dist/{delete-dataset-3MJFRDLP.js → delete-dataset-WKRUW4FP.js} +5 -7
  89. package/dist/{delete-dataset-records-WPMU5GL5.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-KNMZVSPB.js → delete-prompt-tag-YYQ4VMAD.js} +3 -3
  95. package/dist/{delete-workflow-3NUXO46U.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-OOFIQKOG.js +139 -0
  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-OTIYUFZA.js +70 -0
  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-KHBEGZGL.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-ADMKVWYZ.js → get-evaluator-ISMC4LLI.js} +4 -4
  112. package/dist/get-evaluator-XEUZGZCH.js +47 -0
  113. package/dist/{get-project-RAK7URQJ.js → get-project-5VKROSDH.js} +4 -4
  114. package/dist/get-project-RM6FRCBK.js +26 -0
  115. package/dist/get-prompt-OWXJZHQQ.js +95 -0
  116. package/dist/get-prompt-W52DY36E.js +94 -0
  117. package/dist/get-run-plan-BE3M2AUX.js +59 -0
  118. package/dist/get-run-plan-RUXQ6PAX.js +58 -0
  119. package/dist/get-scenario-RNM7BAX2.js +37 -0
  120. package/dist/{get-scenario-ZTAJJL5T.js → get-scenario-YM4ODWW6.js} +8 -4
  121. package/dist/get-simulation-run-6GIATQE5.js +69 -0
  122. package/dist/{get-simulation-run-T2ZQWYH2.js → get-simulation-run-LCFSMPGQ.js} +33 -20
  123. package/dist/get-test-suite-GC2O7YH6.js +49 -0
  124. package/dist/get-test-suite-P5LJ6VLF.js +48 -0
  125. package/dist/get-trace-KBRVV4NN.js +45 -0
  126. package/dist/{get-trace-K7U234Q4.js → get-trace-SEF3FMR5.js} +11 -13
  127. package/dist/get-workflow-7PVED7JE.js +25 -0
  128. package/dist/{get-workflow-L5L2PSK3.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-YXHFPPGA.js → http-server-IR4QOS43.js} +4071 -342
  131. package/dist/index.js +60221 -38077
  132. package/dist/langwatch-api-annotations-6SA4OB4C.js +17 -0
  133. package/dist/{langwatch-api-annotations-FDAS6NQ7.js → langwatch-api-annotations-TBHLCQ5R.js} +4 -4
  134. package/dist/langwatch-api-dashboards-6EO2VVZW.js +17 -0
  135. package/dist/{langwatch-api-dashboards-JTVCS7ZJ.js → langwatch-api-dashboards-NHU5BZD7.js} +4 -4
  136. package/dist/langwatch-api-monitors-CBF3FGIM.js +47 -0
  137. package/dist/{langwatch-api-monitors-3J7UIQME.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-NBJX5KOG.js → langwatch-api-workflows-OKC4FXIF.js} +4 -4
  143. package/dist/langwatch-api-workflows-XGJE6SR5.js +15 -0
  144. package/dist/list-agents-HVYWEQMI.js +43 -0
  145. package/dist/list-agents-RBAOCF53.js +42 -0
  146. package/dist/list-annotations-HJH4NBLD.js +38 -0
  147. package/dist/{list-annotations-ZTVP4EEL.js → list-annotations-J4UAHSUN.js} +10 -5
  148. package/dist/{list-api-keys-CWD4UQT5.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-PWG6P6KR.js → list-dashboards-ROSYFLDQ.js} +4 -4
  153. package/dist/list-dashboards-RQ635ZU7.js +32 -0
  154. package/dist/{list-dataset-records-IOE7LQXS.js → list-dataset-records-M5TKA6LK.js} +14 -10
  155. package/dist/list-dataset-records-WFM7F33C.js +43 -0
  156. package/dist/{list-datasets-ZT4JYUDT.js → list-datasets-B5X4P7BQ.js} +9 -13
  157. package/dist/list-datasets-THUKQHPX.js +56 -0
  158. package/dist/{list-evaluators-SJHC7VBH.js → list-evaluators-MYH2OVCI.js} +5 -7
  159. package/dist/list-evaluators-NLVWF6K7.js +32 -0
  160. package/dist/{list-model-providers-PPD2WPD2.js → list-model-providers-3JUGP4YI.js} +4 -4
  161. package/dist/list-model-providers-H3XKORFO.js +35 -0
  162. package/dist/{list-projects-K7QAIX2I.js → list-projects-6EJ5YYEW.js} +5 -7
  163. package/dist/list-projects-YNNSRMLC.js +40 -0
  164. package/dist/{list-prompt-tags-FOO6TNHB.js → list-prompt-tags-NVFQO6WX.js} +3 -3
  165. package/dist/list-prompt-tags-XUQTTAH4.js +23 -0
  166. package/dist/{list-prompts-SC2HAUFG.js → list-prompts-HSIMMHTF.js} +4 -6
  167. package/dist/list-prompts-IRI6AIXO.js +30 -0
  168. package/dist/list-run-plans-PX2XI6EK.js +46 -0
  169. package/dist/list-run-plans-QALLCN2K.js +45 -0
  170. package/dist/list-scenarios-QZRPVHS4.js +46 -0
  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-KF5THG5H.js → list-simulation-runs-OEADLLQR.js} +19 -9
  174. package/dist/list-test-suites-ANAQBLDG.js +34 -0
  175. package/dist/list-test-suites-N4WVLBKK.js +35 -0
  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-QSJWURCK.js → list-workflows-IMSX7SXU.js} +5 -7
  181. package/dist/list-workflows-ZHTX5LCL.js +33 -0
  182. package/dist/{rename-prompt-tag-EKWU5QF3.js → rename-prompt-tag-IQI7MHOI.js} +3 -3
  183. package/dist/rename-prompt-tag-PA2BRIE6.js +18 -0
  184. package/dist/rename-test-suite-4J7UX5S2.js +21 -0
  185. package/dist/rename-test-suite-NNVLMLKY.js +20 -0
  186. package/dist/report-issue-AS34ZMJF.js +898 -0
  187. package/dist/report-issue-DCZFLGDO.js +899 -0
  188. package/dist/rerun-run-plan-TG2V4WM4.js +22 -0
  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-FTRTZMOF.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-PAARQSI4.js +39 -0
  196. package/dist/run-query-KJDH544C.js +47 -0
  197. package/dist/run-query-T4QW2Z5O.js +46 -0
  198. package/dist/run-test-suite-SQJELEZX.js +26 -0
  199. package/dist/run-test-suite-STB6NUJM.js +25 -0
  200. package/dist/{run-workflow-QPXC627O.js → run-workflow-D6PQNBI6.js} +4 -4
  201. package/dist/{run-agent-6SM4XNA7.js → run-workflow-SP32SO5M.js} +10 -11
  202. package/dist/search-traces-HCBGOG6R.js +170 -0
  203. package/dist/search-traces-HSTQ6WTQ.js +171 -0
  204. package/dist/{set-model-provider-3WKT63ZN.js → set-model-provider-GF7NXUJA.js} +4 -4
  205. package/dist/set-model-provider-KDQ7C4EZ.js +33 -0
  206. package/dist/{update-agent-SMAEHLXH.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-BDUK7TUO.js → update-dataset-SQZ6T4WX.js} +6 -6
  212. package/dist/{update-dataset-record-4ZSDRBSW.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-LS6TIBY7.js → update-evaluator-IGTX6PX4.js} +4 -4
  216. package/dist/{update-project-LKVYXENH.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-MY263DYF.js +141 -0
  220. package/dist/update-scenario-7KA3JDXA.js +34 -0
  221. package/dist/{update-scenario-NEXCAQI7.js → update-scenario-MOHRQKAQ.js} +11 -4
  222. package/package.json +39 -44
  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 +1021 -596
  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 +202 -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 +140 -0
  244. package/src/langwatch-api-scenarios.ts +17 -10
  245. package/src/langwatch-api-secrets.ts +31 -24
  246. package/src/langwatch-api-simulation-runs.ts +10 -7
  247. package/src/langwatch-api-test-suites.ts +116 -0
  248. package/src/langwatch-api-triggers.ts +96 -34
  249. package/src/langwatch-api-workflows.ts +9 -9
  250. package/src/langwatch-api.ts +143 -109
  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 +76 -0
  255. package/src/schemas/suite-fields.ts +132 -0
  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 +10 -0
  260. package/src/tools/archive-scenario.ts +2 -4
  261. package/src/tools/archive-test-suite.ts +10 -0
  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 +11 -5
  274. package/src/tools/create-test-suite.ts +38 -0
  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 +86 -12
  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 +54 -0
  292. package/src/tools/format-scenario.ts +12 -0
  293. package/src/tools/format-suite-details.ts +90 -0
  294. package/src/tools/get-agent.ts +54 -3
  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 +100 -37
  302. package/src/tools/get-run-plan.ts +60 -0
  303. package/src/tools/get-scenario.ts +6 -5
  304. package/src/tools/get-simulation-run.ts +32 -20
  305. package/src/tools/get-test-suite.ts +46 -0
  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 +20 -3
  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 +47 -0
  323. package/src/tools/list-scenarios.ts +26 -17
  324. package/src/tools/list-simulation-runs.ts +13 -5
  325. package/src/tools/list-test-suites.ts +35 -0
  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 +15 -0
  331. package/src/tools/report-issue.ts +5 -9
  332. package/src/tools/rerun-run-plan.ts +18 -0
  333. package/src/tools/revoke-api-key.ts +2 -4
  334. package/src/tools/run-agent.ts +65 -14
  335. package/src/tools/run-experiment.ts +36 -37
  336. package/src/tools/run-plan.ts +46 -0
  337. package/src/tools/run-query.ts +47 -0
  338. package/src/tools/run-test-suite.ts +27 -0
  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 +18 -0
  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 +185 -15
  350. package/src/tools/update-scenario.ts +11 -5
  351. package/src/tools/update-test-suite.ts +40 -0
  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 +19 -12
  359. package/uv.lock +416 -296
  360. package/vitest.integration.config.js +10 -0
  361. package/vitest.scenario.config.js +9 -0
  362. package/.eslintrc.cjs +0 -36
  363. package/dist/archive-suite-4T6BSRS7.js +0 -16
  364. package/dist/chunk-77BNWQ3U.js +0 -86
  365. package/dist/chunk-A2LEVYQ5.js +0 -217
  366. package/dist/chunk-TJCXFNDT.js +0 -24
  367. package/dist/chunk-YZLYHLLI.js +0 -48
  368. package/dist/config.d.ts +0 -17
  369. package/dist/create-mcp-server.d.ts +0 -10
  370. package/dist/create-suite-LZS6QIAF.js +0 -39
  371. package/dist/delete-evaluator-33SP2JFX.js +0 -16
  372. package/dist/discover-evaluator-schema-XTAD4X7D.js +0 -2191
  373. package/dist/discover-scenario-schema-FE64QK2D.js +0 -67
  374. package/dist/get-agent-Y7MWZ65F.js +0 -29
  375. package/dist/get-analytics-TETCSOK6.js +0 -73
  376. package/dist/get-dataset-RCMU5VAH.js +0 -49
  377. package/dist/get-prompt-OY5B7TRI.js +0 -46
  378. package/dist/get-suite-J7JVWO6O.js +0 -45
  379. package/dist/index.d.ts +0 -2
  380. package/dist/langwatch-api-secrets-BUBSNCNO.js +0 -41
  381. package/dist/langwatch-api-triggers-EDFUCJN6.js +0 -31
  382. package/dist/list-agents-KFHKGPXV.js +0 -33
  383. package/dist/list-scenarios-F2WYNRIE.js +0 -41
  384. package/dist/list-suites-CRY4VWW6.js +0 -43
  385. package/dist/report-issue-XYVAPAYJ.js +0 -412
  386. package/dist/run-suite-NKZCJ2IN.js +0 -30
  387. package/dist/search-traces-A6HFKPLJ.js +0 -79
  388. package/dist/update-prompt-ODCRQRN6.js +0 -25
  389. package/dist/update-suite-SNO3GS7T.js +0 -40
  390. package/src/__tests__/all-tools.integration.test.ts +0 -1626
  391. package/src/__tests__/config.unit.test.ts +0 -202
  392. package/src/__tests__/datasets.integration.test.ts +0 -620
  393. package/src/__tests__/datasets.unit.test.ts +0 -244
  394. package/src/__tests__/date-parsing.unit.test.ts +0 -78
  395. package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
  396. package/src/__tests__/discover-schema.unit.test.ts +0 -118
  397. package/src/__tests__/docker.integration.test.ts +0 -318
  398. package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
  399. package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
  400. package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
  401. package/src/__tests__/experiment-status.unit.test.ts +0 -194
  402. package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
  403. package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
  404. package/src/__tests__/http-security-origin.unit.test.ts +0 -97
  405. package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
  406. package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
  407. package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
  408. package/src/__tests__/http-server-origin.integration.test.ts +0 -169
  409. package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
  410. package/src/__tests__/http-transport.integration.test.ts +0 -395
  411. package/src/__tests__/integration.integration.test.ts +0 -288
  412. package/src/__tests__/langwatch-api.unit.test.ts +0 -661
  413. package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
  414. package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
  415. package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
  416. package/src/__tests__/report-issue.integration.test.ts +0 -147
  417. package/src/__tests__/scenario-tools.integration.test.ts +0 -286
  418. package/src/__tests__/scenario-tools.unit.test.ts +0 -188
  419. package/src/__tests__/schemas.unit.test.ts +0 -85
  420. package/src/__tests__/support/http-server-harness.ts +0 -138
  421. package/src/__tests__/tools.unit.test.ts +0 -924
  422. package/src/langwatch-api-suites.ts +0 -118
  423. package/src/schemas/filter-fields.ts +0 -119
  424. package/src/schemas/index.ts +0 -4
  425. package/src/tools/archive-suite.ts +0 -12
  426. package/src/tools/create-suite.ts +0 -42
  427. package/src/tools/get-suite.ts +0 -47
  428. package/src/tools/list-suites.ts +0 -43
  429. package/src/tools/run-suite.ts +0 -28
  430. package/src/tools/update-suite.ts +0 -44
@@ -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-SFB4MU6H.js";
4
- import "./chunk-A2LEVYQ5.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-3WKT63ZN.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-TOXJQDIZ.js";
4
- import "./chunk-A2LEVYQ5.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-SMAEHLXH.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-77BNWQ3U.js";
8
- import "./chunk-A2LEVYQ5.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-BDUK7TUO.js.map
23
+ //# sourceMappingURL=update-dataset-SQZ6T4WX.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  updateDatasetRecord
3
- } from "./chunk-77BNWQ3U.js";
4
- import "./chunk-A2LEVYQ5.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-4ZSDRBSW.js.map
20
+ //# sourceMappingURL=update-dataset-record-3AT4IPBC.js.map
@@ -0,0 +1,19 @@
1
+ import {
2
+ updateDatasetRecord
3
+ } from "./chunk-7VNSRCXO.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
+
7
+ // src/tools/update-dataset-record.ts
8
+ async function handleUpdateDatasetRecord(params) {
9
+ const result = await updateDatasetRecord(params);
10
+ const lines = [];
11
+ lines.push("Record updated successfully!\n");
12
+ lines.push(`**Record ID**: ${result.id}`);
13
+ lines.push(`**Entry**: ${JSON.stringify(result.entry)}`);
14
+ return lines.join("\n");
15
+ }
16
+ export {
17
+ handleUpdateDatasetRecord
18
+ };
19
+ //# sourceMappingURL=update-dataset-record-7PLDGTMR.js.map
@@ -0,0 +1,24 @@
1
+ import {
2
+ getEvaluatorType,
3
+ updateEvaluator
4
+ } from "./chunk-3OCG3QPU.js";
5
+ import "./chunk-UWLE5T2F.js";
6
+ import "./chunk-H6WGMG2T.js";
7
+
8
+ // src/tools/update-evaluator.ts
9
+ async function handleUpdateEvaluator(params) {
10
+ const { evaluatorId, ...data } = params;
11
+ const result = await updateEvaluator({ id: evaluatorId, ...data });
12
+ const evaluatorType = getEvaluatorType(result);
13
+ const lines = [];
14
+ lines.push("Evaluator updated successfully!\n");
15
+ lines.push(`**ID**: ${result.id}`);
16
+ if (result.slug) lines.push(`**Slug**: ${result.slug}`);
17
+ lines.push(`**Name**: ${result.name}`);
18
+ if (evaluatorType) lines.push(`**Evaluator Type**: ${evaluatorType}`);
19
+ return lines.join("\n");
20
+ }
21
+ export {
22
+ handleUpdateEvaluator
23
+ };
24
+ //# sourceMappingURL=update-evaluator-4LFTKFPT.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getEvaluatorType,
3
3
  updateEvaluator
4
- } from "./chunk-CDYQOY5U.js";
5
- import "./chunk-A2LEVYQ5.js";
6
- import "./chunk-WT4PO4A3.js";
4
+ } from "./chunk-3OCG3QPU.js";
5
+ import "./chunk-UWLE5T2F.js";
6
+ import "./chunk-H6WGMG2T.js";
7
7
  import "./chunk-SAS5OB7F.js";
8
8
 
9
9
  // src/tools/update-evaluator.ts
@@ -22,4 +22,4 @@ async function handleUpdateEvaluator(params) {
22
22
  export {
23
23
  handleUpdateEvaluator
24
24
  };
25
- //# sourceMappingURL=update-evaluator-LS6TIBY7.js.map
25
+ //# sourceMappingURL=update-evaluator-IGTX6PX4.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  updateProject
3
- } from "./chunk-7RHG56OH.js";
4
- import "./chunk-A2LEVYQ5.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-B4J3PJLX.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/update-project.ts
@@ -22,4 +22,4 @@ async function handleUpdateProject(params) {
22
22
  export {
23
23
  handleUpdateProject
24
24
  };
25
- //# sourceMappingURL=update-project-LKVYXENH.js.map
25
+ //# sourceMappingURL=update-project-PLJIOZS6.js.map
@@ -0,0 +1,24 @@
1
+ import {
2
+ updateProject
3
+ } from "./chunk-B4J3PJLX.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
+
7
+ // src/tools/update-project.ts
8
+ async function handleUpdateProject(params) {
9
+ const project = await updateProject(params);
10
+ const lines = [];
11
+ lines.push(`Project updated successfully!
12
+ `);
13
+ lines.push(`**Name**: ${project.name}`);
14
+ lines.push(`**ID**: ${project.id}`);
15
+ lines.push(`**Slug**: ${project.slug}`);
16
+ lines.push(`**Language**: ${project.language}`);
17
+ lines.push(`**Framework**: ${project.framework}`);
18
+ lines.push(`**PII Redaction**: ${project.piiRedactionLevel}`);
19
+ return lines.join("\n");
20
+ }
21
+ export {
22
+ handleUpdateProject
23
+ };
24
+ //# sourceMappingURL=update-project-QVHSJRUP.js.map