@langwatch/mcp-server 3.0.0 → 3.1.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 (209) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/{add-dashboard-widget-MJHIC3CC.js → add-dashboard-widget-3IE3W5RR.js} +8 -7
  3. package/dist/{add-dashboard-widget-55UI6H22.js → add-dashboard-widget-XNAIGV37.js} +8 -7
  4. package/dist/{archive-project-L4PAKT34.js → archive-project-LAWWNKTX.js} +3 -3
  5. package/dist/{archive-project-K5UD7A6X.js → archive-project-X64627XS.js} +3 -3
  6. package/dist/{archive-run-plan-AOKNYQIO.js → archive-run-plan-3HKFL5MS.js} +3 -3
  7. package/dist/{archive-run-plan-5HSQG2HX.js → archive-run-plan-C35EJACZ.js} +3 -3
  8. package/dist/{archive-scenario-5IJQESHH.js → archive-scenario-3DOXHOJJ.js} +3 -3
  9. package/dist/{archive-scenario-2CWJW2VD.js → archive-scenario-7KDGEZM5.js} +3 -3
  10. package/dist/{archive-test-suite-OPB7NFI7.js → archive-test-suite-KZOESY2Y.js} +3 -3
  11. package/dist/{archive-test-suite-ZC3TN6VH.js → archive-test-suite-RPJ6ZKBV.js} +3 -3
  12. package/dist/{assign-prompt-tag-6DDE6ZZ5.js → assign-prompt-tag-2A25CXB7.js} +2 -2
  13. package/dist/{assign-prompt-tag-D7O23MJM.js → assign-prompt-tag-TQRV6D6V.js} +2 -2
  14. package/dist/{chunk-HLQJXUR6.js → chunk-27SS5FBC.js} +2 -2
  15. package/dist/{chunk-MOCU5XWF.js → chunk-2RLDGMPZ.js} +2 -2
  16. package/dist/{chunk-YCIUEZVK.js → chunk-3GVTJ7NK.js} +2 -2
  17. package/dist/{chunk-WCKZDOGF.js → chunk-6DF65T3B.js} +11 -6
  18. package/dist/{chunk-AASW2TO2.js → chunk-6OLI3LFY.js} +2 -2
  19. package/dist/{chunk-D2HS73VI.js → chunk-7HJSQOSZ.js} +2 -2
  20. package/dist/{chunk-7CZQDZ2K.js → chunk-7MNQDTKJ.js} +38 -26
  21. package/dist/{chunk-7GETGE6B.js → chunk-BHCYKMRH.js} +2 -2
  22. package/dist/{chunk-QXLMHLRC.js → chunk-FSU2ZBUM.js} +2 -2
  23. package/dist/{chunk-KILVK3FS.js → chunk-I2Z5CBOU.js} +2 -2
  24. package/dist/{chunk-R5YJIYPF.js → chunk-JEMUBKLJ.js} +130 -109
  25. package/dist/{chunk-XQYH52SI.js → chunk-JOFSQFCN.js} +2 -2
  26. package/dist/{chunk-4RX3G62A.js → chunk-JQN3VXPH.js} +3 -3
  27. package/dist/{chunk-B4RFWIUP.js → chunk-LXBQK3J3.js} +2 -2
  28. package/dist/{chunk-RFC2SBEX.js → chunk-MQRTYXHJ.js} +2 -2
  29. package/dist/{chunk-EYPJBL7P.js → chunk-P2JRKSYI.js} +3 -3
  30. package/dist/{chunk-VOUGDY2O.js → chunk-QF7ZGYVI.js} +2 -2
  31. package/dist/{chunk-SHSVN3SE.js → chunk-QTAHHJH3.js} +2 -2
  32. package/dist/{chunk-O2WGVCED.js → chunk-SLRQHMJZ.js} +2 -2
  33. package/dist/{chunk-GA5JUSPT.js → chunk-YQWZ4CDN.js} +5 -3
  34. package/dist/{create-agent-IRZOU4R5.js → create-agent-IE7Q2Z4C.js} +3 -3
  35. package/dist/{create-agent-6JNLMYQD.js → create-agent-JMCQ5WZC.js} +3 -3
  36. package/dist/{create-analytics-report-N4L4V5QL.js → create-analytics-report-4X5N7EOT.js} +3 -3
  37. package/dist/{create-analytics-report-QEHXG7FU.js → create-analytics-report-IKWZRS2O.js} +3 -3
  38. package/dist/{create-annotation-CCEGIZ67.js → create-annotation-IZ53SJOX.js} +3 -3
  39. package/dist/{create-annotation-DTHCMWHB.js → create-annotation-JR6DBHPW.js} +3 -3
  40. package/dist/{create-api-key-JPEUIXGM.js → create-api-key-IKMOTWCD.js} +3 -3
  41. package/dist/{create-api-key-JKM2DSZO.js → create-api-key-YUDAGOWL.js} +3 -3
  42. package/dist/{create-dataset-WON4SOTC.js → create-dataset-54FJCX45.js} +3 -3
  43. package/dist/{create-dataset-DJNXYJ5B.js → create-dataset-ONX3RADL.js} +3 -3
  44. package/dist/{create-dataset-records-UJBW3C7C.js → create-dataset-records-HPLMFDJY.js} +3 -3
  45. package/dist/{create-dataset-records-TMEOTLTO.js → create-dataset-records-QZZZF64Z.js} +3 -3
  46. package/dist/{create-evaluator-N5AEHI4K.js → create-evaluator-I5I52HOQ.js} +3 -3
  47. package/dist/{create-evaluator-XYNY2YFY.js → create-evaluator-L66QGSDX.js} +3 -3
  48. package/dist/create-mcp-server.cjs +96 -41
  49. package/dist/create-mcp-server.js +129 -108
  50. package/dist/{create-project-YL345T5L.js → create-project-UPZGETN5.js} +3 -3
  51. package/dist/{create-project-EY4XZ7TH.js → create-project-Y5EGJKDG.js} +3 -3
  52. package/dist/{create-prompt-ZUMQHHX7.js → create-prompt-RNUJOL25.js} +2 -2
  53. package/dist/{create-prompt-JZQNQ7I3.js → create-prompt-WGQLJASD.js} +2 -2
  54. package/dist/{create-prompt-tag-JFP2Q3PO.js → create-prompt-tag-3ZCA7M7O.js} +2 -2
  55. package/dist/{create-prompt-tag-CJ5FZ436.js → create-prompt-tag-R6KIAZTB.js} +2 -2
  56. package/dist/{create-scenario-S6OWWKJO.js → create-scenario-WIMKZLQO.js} +3 -3
  57. package/dist/{create-scenario-CQU2SSFB.js → create-scenario-WO5NWXVQ.js} +3 -3
  58. package/dist/{create-test-suite-Y7P2RI4L.js → create-test-suite-AVSR7IIM.js} +3 -3
  59. package/dist/{create-test-suite-OLGCAGJA.js → create-test-suite-LRKCNIJA.js} +3 -3
  60. package/dist/{create-trigger-RQ653WYF.js → create-trigger-CBO2XDYC.js} +3 -3
  61. package/dist/{create-trigger-4CNBTISJ.js → create-trigger-M3VFK5UH.js} +3 -3
  62. package/dist/{dashboards-BA7M6CMO.js → dashboards-4X6QUT3E.js} +3 -3
  63. package/dist/{dashboards-U663GUIB.js → dashboards-CX2T6RKH.js} +3 -3
  64. package/dist/{delete-agent-J2Q4DRZ2.js → delete-agent-QUVDMSOC.js} +3 -3
  65. package/dist/{delete-agent-ZAU4LTXB.js → delete-agent-Y4QTEQ3B.js} +3 -3
  66. package/dist/{delete-analytics-report-YUYLDHLL.js → delete-analytics-report-T4GIMEOA.js} +3 -3
  67. package/dist/{delete-analytics-report-QK6X7P4S.js → delete-analytics-report-WIP24EXV.js} +3 -3
  68. package/dist/{delete-annotation-KJOCDLV3.js → delete-annotation-BWO5ZEZY.js} +3 -3
  69. package/dist/{delete-annotation-7X4NYXXM.js → delete-annotation-ESUH3RWN.js} +3 -3
  70. package/dist/{delete-dataset-NXP7ZPPV.js → delete-dataset-N4AEYIAA.js} +3 -3
  71. package/dist/{delete-dataset-RUTZBBVD.js → delete-dataset-ZRD23FLO.js} +3 -3
  72. package/dist/{delete-dataset-records-75UAR5IS.js → delete-dataset-records-HC7VLBT7.js} +3 -3
  73. package/dist/{delete-dataset-records-4Z7DZCDW.js → delete-dataset-records-XC2DFVXD.js} +3 -3
  74. package/dist/{delete-evaluator-RI4GALGX.js → delete-evaluator-27P5XLNV.js} +3 -3
  75. package/dist/{delete-evaluator-E3CUNGTQ.js → delete-evaluator-LJII4YLC.js} +3 -3
  76. package/dist/{delete-prompt-tag-S4KBZTNG.js → delete-prompt-tag-DH7IQO4X.js} +2 -2
  77. package/dist/{delete-prompt-tag-LE3WJPKS.js → delete-prompt-tag-OC57CN32.js} +2 -2
  78. package/dist/{delete-workflow-PWQPDW6H.js → delete-workflow-I4IXK3ZL.js} +3 -3
  79. package/dist/{delete-workflow-4CZFIQCQ.js → delete-workflow-JXREDDW7.js} +3 -3
  80. package/dist/{discover-schema-7WHIIATI.js → discover-schema-ME5BAD2S.js} +3 -3
  81. package/dist/{discover-schema-J2ANOBKO.js → discover-schema-OHYBG3CY.js} +3 -3
  82. package/dist/{get-agent-5T3CXQOR.js → get-agent-6GKIKKL7.js} +3 -3
  83. package/dist/{get-agent-ZKYQJUQ7.js → get-agent-UKZUBVPB.js} +3 -3
  84. package/dist/{get-analytics-4MPEK4KV.js → get-analytics-TI2U3JLA.js} +2 -2
  85. package/dist/{get-analytics-ZLI3A4F5.js → get-analytics-ZGQ4LY3I.js} +2 -2
  86. package/dist/{get-analytics-report-JCKYMA2S.js → get-analytics-report-PD6XZ4ZA.js} +3 -3
  87. package/dist/{get-analytics-report-SKIP2JWH.js → get-analytics-report-QMXNQ7VA.js} +3 -3
  88. package/dist/{get-dataset-APGZBYMH.js → get-dataset-5QORNVOZ.js} +3 -3
  89. package/dist/{get-dataset-LWXDVMVE.js → get-dataset-E5WLIPNK.js} +3 -3
  90. package/dist/{get-evaluator-3A7BJBAB.js → get-evaluator-GYQFB4F3.js} +3 -3
  91. package/dist/{get-evaluator-IWNJINRY.js → get-evaluator-QQV65MQB.js} +3 -3
  92. package/dist/{get-project-RK6AJTEP.js → get-project-43SGQCAT.js} +3 -3
  93. package/dist/{get-project-EQVB4LEL.js → get-project-W5DCKXZP.js} +3 -3
  94. package/dist/{get-prompt-TLG2T2DS.js → get-prompt-IUTPSRRI.js} +2 -2
  95. package/dist/{get-prompt-ZER557X3.js → get-prompt-ZTCWGYJV.js} +2 -2
  96. package/dist/{get-run-plan-PEHRO5M3.js → get-run-plan-M3LVXMGO.js} +3 -3
  97. package/dist/{get-run-plan-5X7DDJRN.js → get-run-plan-MEPEU353.js} +3 -3
  98. package/dist/{get-scenario-UQX45ZZO.js → get-scenario-2DM4XR44.js} +3 -3
  99. package/dist/{get-scenario-375W5D6I.js → get-scenario-D6EPSSPW.js} +3 -3
  100. package/dist/{get-simulation-run-QZTLGL7W.js → get-simulation-run-53WM2XOO.js} +3 -3
  101. package/dist/{get-simulation-run-2NBXJADG.js → get-simulation-run-RKQ52TKP.js} +3 -3
  102. package/dist/{get-test-suite-OODIR3RI.js → get-test-suite-DP2HNOQZ.js} +3 -3
  103. package/dist/{get-test-suite-GVIBDG7K.js → get-test-suite-MUSY2CDJ.js} +3 -3
  104. package/dist/{get-trace-AGCHVPJK.js → get-trace-5Z2BIZ3V.js} +2 -2
  105. package/dist/{get-trace-KJLYAZRC.js → get-trace-THPWSLD3.js} +2 -2
  106. package/dist/{get-workflow-7LZSVPP2.js → get-workflow-63E7BNLY.js} +3 -3
  107. package/dist/{get-workflow-3TV2YYC5.js → get-workflow-R6XUKTZ7.js} +3 -3
  108. package/dist/{http-server-7CCN3EHJ.js → http-server-4JHSQN56.js} +5 -5
  109. package/dist/index.js +112 -44
  110. package/dist/{langwatch-api-analytics-reports-6CF6KUET.js → langwatch-api-analytics-reports-IIHGTTQA.js} +3 -3
  111. package/dist/{langwatch-api-analytics-reports-RPFB5AO5.js → langwatch-api-analytics-reports-IQ6CHM5Y.js} +3 -3
  112. package/dist/{langwatch-api-annotations-H4AI4TKG.js → langwatch-api-annotations-CN2KYV3Z.js} +3 -3
  113. package/dist/{langwatch-api-annotations-QSJNUQQS.js → langwatch-api-annotations-CRI6JTQR.js} +3 -3
  114. package/dist/{langwatch-api-monitors-ENHLOL3S.js → langwatch-api-monitors-66O5Z5LB.js} +2 -2
  115. package/dist/{langwatch-api-monitors-OHSGADTH.js → langwatch-api-monitors-GNHQRPMR.js} +2 -2
  116. package/dist/{langwatch-api-secrets-AGW6UUMD.js → langwatch-api-secrets-B7BURV76.js} +2 -2
  117. package/dist/{langwatch-api-secrets-CLTS766Q.js → langwatch-api-secrets-P6SHZOHE.js} +2 -2
  118. package/dist/{langwatch-api-triggers-G5UWFNN2.js → langwatch-api-triggers-6FR4VWDL.js} +3 -3
  119. package/dist/{langwatch-api-triggers-QMR7KEXW.js → langwatch-api-triggers-VKNGXSJH.js} +3 -3
  120. package/dist/{langwatch-api-workflows-HKTBIKKY.js → langwatch-api-workflows-22RQFYO7.js} +3 -3
  121. package/dist/{langwatch-api-workflows-OMROZH2O.js → langwatch-api-workflows-KDACD36L.js} +3 -3
  122. package/dist/{list-agents-MG24MHZE.js → list-agents-SVXWLLO7.js} +3 -3
  123. package/dist/{list-agents-BYWDNAHT.js → list-agents-XM5JNCVK.js} +3 -3
  124. package/dist/{list-analytics-reports-G3EPWGSQ.js → list-analytics-reports-DEKKC6BU.js} +3 -3
  125. package/dist/{list-analytics-reports-PPWIFRES.js → list-analytics-reports-E7QFC22G.js} +3 -3
  126. package/dist/{list-annotations-Y4EUBJHG.js → list-annotations-5CGNOIKI.js} +3 -3
  127. package/dist/{list-annotations-QCLGEK5A.js → list-annotations-P26ELIAO.js} +3 -3
  128. package/dist/{list-api-keys-DAVOBPFK.js → list-api-keys-B4YL7STE.js} +3 -3
  129. package/dist/{list-api-keys-JMW5WRXX.js → list-api-keys-ZIJJH755.js} +3 -3
  130. package/dist/{list-dashboards-2P3VJFRS.js → list-dashboards-F4YJPDKD.js} +3 -3
  131. package/dist/{list-dashboards-MW5O3MKH.js → list-dashboards-XHYTXEQK.js} +3 -3
  132. package/dist/{list-dataset-records-KEHT7G6Q.js → list-dataset-records-SWCEDRPX.js} +3 -3
  133. package/dist/{list-dataset-records-KMLLMZAZ.js → list-dataset-records-YWGROVKC.js} +3 -3
  134. package/dist/{list-datasets-P3JK2ZHS.js → list-datasets-32SCF66H.js} +3 -3
  135. package/dist/{list-datasets-Z7OOE4KI.js → list-datasets-YYADWT4D.js} +3 -3
  136. package/dist/{list-evaluators-7RRESBOU.js → list-evaluators-KKQKBJKN.js} +3 -3
  137. package/dist/{list-evaluators-VATJVOHR.js → list-evaluators-V6LP6ZQA.js} +3 -3
  138. package/dist/{list-model-providers-OXDRPUCJ.js → list-model-providers-RCPVT7R4.js} +3 -3
  139. package/dist/{list-model-providers-VXQJWDXU.js → list-model-providers-TMBSB6EE.js} +3 -3
  140. package/dist/{list-projects-X72ZXVY5.js → list-projects-4Y74TFDZ.js} +3 -3
  141. package/dist/{list-projects-HUVK7L3W.js → list-projects-R4MTRF3C.js} +3 -3
  142. package/dist/{list-prompt-tags-3I3LWFIR.js → list-prompt-tags-C345AGM2.js} +2 -2
  143. package/dist/{list-prompt-tags-DRHUH2ND.js → list-prompt-tags-RITKQDC5.js} +2 -2
  144. package/dist/{list-prompts-6DX3QECJ.js → list-prompts-DSJ2LUSU.js} +2 -2
  145. package/dist/{list-prompts-PS423RU3.js → list-prompts-F7C5L5XK.js} +2 -2
  146. package/dist/{list-run-plans-6VNHINPY.js → list-run-plans-YPGLC5QG.js} +3 -3
  147. package/dist/{list-run-plans-5SXPOV3X.js → list-run-plans-ZHRZHCDL.js} +3 -3
  148. package/dist/{list-scenarios-EQWCW7Q4.js → list-scenarios-6HN72TMW.js} +3 -3
  149. package/dist/{list-scenarios-GKNH3YND.js → list-scenarios-HCYFOTSL.js} +3 -3
  150. package/dist/{list-simulation-runs-KHY7KALI.js → list-simulation-runs-BKVMQQMT.js} +3 -3
  151. package/dist/{list-simulation-runs-PUDK32C2.js → list-simulation-runs-JNST5PQU.js} +3 -3
  152. package/dist/{list-test-suites-GY56LGLY.js → list-test-suites-4ZVYYKVB.js} +3 -3
  153. package/dist/{list-test-suites-7H2DRILK.js → list-test-suites-YY4J3L7H.js} +3 -3
  154. package/dist/{list-trigger-fires-OZUF65LI.js → list-trigger-fires-3XM6YZWG.js} +3 -3
  155. package/dist/{list-trigger-fires-7RZUP54Y.js → list-trigger-fires-5C5XM2KQ.js} +3 -3
  156. package/dist/{list-triggers-XC5KMX4C.js → list-triggers-DARBIIRA.js} +3 -3
  157. package/dist/{list-triggers-BGUCUXTJ.js → list-triggers-MRSWN7RR.js} +3 -3
  158. package/dist/{list-workflows-55NYC3PC.js → list-workflows-BGUSQUJX.js} +3 -3
  159. package/dist/{list-workflows-HV7FUWZA.js → list-workflows-NXOWP3XS.js} +3 -3
  160. package/dist/{rename-prompt-tag-2I7Z5FCY.js → rename-prompt-tag-F3WT4FB4.js} +2 -2
  161. package/dist/{rename-prompt-tag-SZYTOWDX.js → rename-prompt-tag-HR5HZZI2.js} +2 -2
  162. package/dist/{rename-test-suite-CLIEPZDO.js → rename-test-suite-2ZRXG5O7.js} +3 -3
  163. package/dist/{rename-test-suite-27AYY33K.js → rename-test-suite-PWXKE7Z4.js} +3 -3
  164. package/dist/{report-issue-5HSL7CNB.js → report-issue-HG7XCPOY.js} +2 -2
  165. package/dist/{report-issue-N7ND5TM6.js → report-issue-TWRFUPGB.js} +2 -2
  166. package/dist/{rerun-run-plan-O3VUZ6CG.js → rerun-run-plan-BFRZFEJB.js} +3 -3
  167. package/dist/{rerun-run-plan-OJTVVGJI.js → rerun-run-plan-LXM3RFZC.js} +3 -3
  168. package/dist/{revoke-api-key-NZNCFOIR.js → revoke-api-key-GR55PUP4.js} +3 -3
  169. package/dist/{revoke-api-key-BU6BKGCG.js → revoke-api-key-KCDOYPUK.js} +3 -3
  170. package/dist/{run-agent-HPCGZGYW.js → run-agent-HRVRHRHI.js} +3 -3
  171. package/dist/{run-agent-244O4Y5M.js → run-agent-WS6TADJQ.js} +3 -3
  172. package/dist/{run-plan-2ZPGGZ4H.js → run-plan-G24DBB5D.js} +3 -3
  173. package/dist/{run-plan-KSXUYQT3.js → run-plan-NSXMBEC5.js} +3 -3
  174. package/dist/{run-query-BQUHIUC2.js → run-query-6YVOA5NV.js} +18 -4
  175. package/dist/{run-query-4LMOQ5UW.js → run-query-7QIYSDVI.js} +18 -4
  176. package/dist/{run-test-suite-UEOMCON6.js → run-test-suite-NTKLJZCJ.js} +3 -3
  177. package/dist/{run-test-suite-P3WLVPXC.js → run-test-suite-P33XFQ6H.js} +3 -3
  178. package/dist/{run-workflow-I4IHEN54.js → run-workflow-E5ZRSXUB.js} +3 -3
  179. package/dist/{run-workflow-EFZ6HG5B.js → run-workflow-HDF6CRLM.js} +3 -3
  180. package/dist/{search-traces-6IR7PR4L.js → search-traces-X7NSRTTP.js} +2 -2
  181. package/dist/{search-traces-BYML2NQ4.js → search-traces-XWZYOZOM.js} +2 -2
  182. package/dist/{set-model-provider-SHEVKWRC.js → set-model-provider-XJF47L6H.js} +3 -3
  183. package/dist/{set-model-provider-RBNGWFVI.js → set-model-provider-YPUCFEXG.js} +3 -3
  184. package/dist/{update-agent-ZPXWRMS2.js → update-agent-6FHGWOO7.js} +3 -3
  185. package/dist/{update-agent-PTKTM2B5.js → update-agent-VEDXQRSM.js} +3 -3
  186. package/dist/{update-dashboard-widget-IP2TTQ5G.js → update-dashboard-widget-VOKXN7JA.js} +11 -10
  187. package/dist/{update-dashboard-widget-HKCBXH7X.js → update-dashboard-widget-VUIQZ7F5.js} +11 -10
  188. package/dist/{update-dataset-IRVMY5PF.js → update-dataset-7AQ24NRS.js} +3 -3
  189. package/dist/{update-dataset-GHIN6JR3.js → update-dataset-GHKDCJJQ.js} +3 -3
  190. package/dist/{update-dataset-record-Z3L7ACNF.js → update-dataset-record-IRD6FH2C.js} +3 -3
  191. package/dist/{update-dataset-record-6VI7K2CL.js → update-dataset-record-ZZUPG7AS.js} +3 -3
  192. package/dist/{update-evaluator-5NLNE6VY.js → update-evaluator-O6EJFTQJ.js} +3 -3
  193. package/dist/{update-evaluator-FEH7H6NS.js → update-evaluator-PUJFU5LT.js} +3 -3
  194. package/dist/{update-project-QPR3QX55.js → update-project-HO53IHXC.js} +3 -3
  195. package/dist/{update-project-75H3LDQT.js → update-project-VTVU6KNP.js} +3 -3
  196. package/dist/{update-prompt-BCDFTNLK.js → update-prompt-FABVQCAC.js} +2 -2
  197. package/dist/{update-prompt-NPRXYSWA.js → update-prompt-MNRLCLBA.js} +2 -2
  198. package/dist/{update-scenario-EM5XGMB7.js → update-scenario-MQZZM5CP.js} +3 -3
  199. package/dist/{update-scenario-BNOMDCMV.js → update-scenario-XIZNUH4I.js} +3 -3
  200. package/package.json +1 -1
  201. package/src/create-mcp-server.ts +18 -1
  202. package/src/langwatch-api-dashboard-widgets.ts +1 -0
  203. package/src/langwatch-api-query.ts +6 -0
  204. package/src/langwatch-api.ts +50 -27
  205. package/src/schemas/widget-sources.ts +36 -0
  206. package/src/tools/add-dashboard-widget.ts +5 -2
  207. package/src/tools/dashboard-widget-queries.ts +13 -4
  208. package/src/tools/run-query.ts +23 -1
  209. package/src/tools/update-dashboard-widget.ts +9 -6
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  LangWatchApiError,
3
3
  makeRequest
4
- } from "./chunk-7CZQDZ2K.js";
4
+ } from "./chunk-7MNQDTKJ.js";
5
5
 
6
6
  // src/langwatch-api-datasets.ts
7
7
  var DATASET_PREVIEW_MAX_RECORDS = 100;
@@ -126,4 +126,4 @@ export {
126
126
  deleteDatasetRecords,
127
127
  listDatasetRecords
128
128
  };
129
- //# sourceMappingURL=chunk-XQYH52SI.js.map
129
+ //# sourceMappingURL=chunk-JOFSQFCN.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
4
 
5
5
  // src/langwatch-api-agents.ts
6
6
  import { z } from "zod";
@@ -496,7 +496,7 @@ async function runAgent({
496
496
  `Agent "${agent.name}" (type: ${agent.type}) cannot be executed directly. Only connected agents, HTTP agents and workflow-linked agents can be run.`
497
497
  );
498
498
  }
499
- const { runWorkflow } = await import("./langwatch-api-workflows-OMROZH2O.js");
499
+ const { runWorkflow } = await import("./langwatch-api-workflows-22RQFYO7.js");
500
500
  const result = await runWorkflow(workflowId, input);
501
501
  return { agentType: agent.type, result };
502
502
  }
@@ -513,4 +513,4 @@ export {
513
513
  runAgent,
514
514
  deleteAgent
515
515
  };
516
- //# sourceMappingURL=chunk-4RX3G62A.js.map
516
+ //# sourceMappingURL=chunk-JQN3VXPH.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
4
 
5
5
  // src/langwatch-api-simulation-runs.ts
6
6
  async function listSimulationRuns(params) {
@@ -22,4 +22,4 @@ export {
22
22
  listSimulationRuns,
23
23
  getSimulationRun
24
24
  };
25
- //# sourceMappingURL=chunk-B4RFWIUP.js.map
25
+ //# sourceMappingURL=chunk-LXBQK3J3.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
4
 
5
5
  // src/langwatch-api-annotations.ts
6
6
  async function listAnnotations() {
@@ -33,4 +33,4 @@ export {
33
33
  createAnnotation,
34
34
  deleteAnnotation
35
35
  };
36
- //# sourceMappingURL=chunk-RFC2SBEX.js.map
36
+ //# sourceMappingURL=chunk-MQRTYXHJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
4
 
5
5
  // src/langwatch-api-agents.ts
6
6
  import { z } from "zod";
@@ -496,7 +496,7 @@ async function runAgent({
496
496
  `Agent "${agent.name}" (type: ${agent.type}) cannot be executed directly. Only connected agents, HTTP agents and workflow-linked agents can be run.`
497
497
  );
498
498
  }
499
- const { runWorkflow } = await import("./langwatch-api-workflows-HKTBIKKY.js");
499
+ const { runWorkflow } = await import("./langwatch-api-workflows-KDACD36L.js");
500
500
  const result = await runWorkflow(workflowId, input);
501
501
  return { agentType: agent.type, result };
502
502
  }
@@ -513,4 +513,4 @@ export {
513
513
  runAgent,
514
514
  deleteAgent
515
515
  };
516
- //# sourceMappingURL=chunk-EYPJBL7P.js.map
516
+ //# sourceMappingURL=chunk-P2JRKSYI.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
4
 
5
5
  // src/langwatch-api-run-plans.ts
6
6
  async function listRunPlans(params) {
@@ -34,4 +34,4 @@ export {
34
34
  rerunRunPlan,
35
35
  archiveRunPlan
36
36
  };
37
- //# sourceMappingURL=chunk-VOUGDY2O.js.map
37
+ //# sourceMappingURL=chunk-QF7ZGYVI.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
4
 
5
5
  // src/langwatch-api-api-keys.ts
6
6
  async function listApiKeys() {
@@ -18,4 +18,4 @@ export {
18
18
  createApiKey,
19
19
  revokeApiKey
20
20
  };
21
- //# sourceMappingURL=chunk-SHSVN3SE.js.map
21
+ //# sourceMappingURL=chunk-QTAHHJH3.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeRequest
3
- } from "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-7MNQDTKJ.js";
4
4
 
5
5
  // src/langwatch-api-analytics-reports.ts
6
6
  var reportPath = (reportId) => `/api/v1/analytics/reports/${encodeURIComponent(reportId)}`;
@@ -38,4 +38,4 @@ export {
38
38
  renameAnalyticsReport,
39
39
  deleteAnalyticsReport
40
40
  };
41
- //# sourceMappingURL=chunk-O2WGVCED.js.map
41
+ //# sourceMappingURL=chunk-SLRQHMJZ.js.map
@@ -3,13 +3,15 @@ import {
3
3
  } from "./chunk-FOKVY3BK.js";
4
4
  import {
5
5
  makeRequest
6
- } from "./chunk-7CZQDZ2K.js";
6
+ } from "./chunk-7MNQDTKJ.js";
7
7
 
8
8
  // src/langwatch-api-query.ts
9
9
  async function runQuery(params) {
10
10
  return makeRequest("POST", "/api/v1/query", {
11
11
  sql: params.sql,
12
- ...params.parameters ? { parameters: params.parameters } : {}
12
+ ...params.parameters ? { parameters: params.parameters } : {},
13
+ ...params.projects ? { projects: params.projects } : {},
14
+ ...params.sources ? { sources: params.sources } : {}
13
15
  });
14
16
  }
15
17
  async function getQueryReference() {
@@ -61,4 +63,4 @@ export {
61
63
  getQueryReference,
62
64
  markdownTable
63
65
  };
64
- //# sourceMappingURL=chunk-GA5JUSPT.js.map
66
+ //# sourceMappingURL=chunk-YQWZ4CDN.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createAgent
3
- } from "./chunk-EYPJBL7P.js";
4
- import "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-JQN3VXPH.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
5
  import "./chunk-DULFP3MK.js";
6
6
 
7
7
  // src/tools/create-agent.ts
@@ -20,4 +20,4 @@ async function handleCreateAgent(params) {
20
20
  export {
21
21
  handleCreateAgent
22
22
  };
23
- //# sourceMappingURL=create-agent-IRZOU4R5.js.map
23
+ //# sourceMappingURL=create-agent-IE7Q2Z4C.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createAgent
3
- } from "./chunk-4RX3G62A.js";
4
- import "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-P2JRKSYI.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
5
  import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
@@ -21,4 +21,4 @@ async function handleCreateAgent(params) {
21
21
  export {
22
22
  handleCreateAgent
23
23
  };
24
- //# sourceMappingURL=create-agent-6JNLMYQD.js.map
24
+ //# sourceMappingURL=create-agent-JMCQ5WZC.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createAnalyticsReport
3
- } from "./chunk-O2WGVCED.js";
4
- import "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-SLRQHMJZ.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
5
  import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
@@ -16,4 +16,4 @@ async function handleCreateAnalyticsReport(params) {
16
16
  export {
17
17
  handleCreateAnalyticsReport
18
18
  };
19
- //# sourceMappingURL=create-analytics-report-N4L4V5QL.js.map
19
+ //# sourceMappingURL=create-analytics-report-4X5N7EOT.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createAnalyticsReport
3
- } from "./chunk-O2WGVCED.js";
4
- import "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-SLRQHMJZ.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
5
  import "./chunk-DULFP3MK.js";
6
6
 
7
7
  // src/tools/create-analytics-report.ts
@@ -15,4 +15,4 @@ async function handleCreateAnalyticsReport(params) {
15
15
  export {
16
16
  handleCreateAnalyticsReport
17
17
  };
18
- //# sourceMappingURL=create-analytics-report-QEHXG7FU.js.map
18
+ //# sourceMappingURL=create-analytics-report-IKWZRS2O.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createAnnotation
3
- } from "./chunk-RFC2SBEX.js";
4
- import "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-MQRTYXHJ.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
5
  import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
@@ -27,4 +27,4 @@ async function handleCreateAnnotation(params) {
27
27
  export {
28
28
  handleCreateAnnotation
29
29
  };
30
- //# sourceMappingURL=create-annotation-CCEGIZ67.js.map
30
+ //# sourceMappingURL=create-annotation-IZ53SJOX.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createAnnotation
3
- } from "./chunk-RFC2SBEX.js";
4
- import "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-MQRTYXHJ.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
5
  import "./chunk-DULFP3MK.js";
6
6
 
7
7
  // src/tools/create-annotation.ts
@@ -26,4 +26,4 @@ async function handleCreateAnnotation(params) {
26
26
  export {
27
27
  handleCreateAnnotation
28
28
  };
29
- //# sourceMappingURL=create-annotation-DTHCMWHB.js.map
29
+ //# sourceMappingURL=create-annotation-JR6DBHPW.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiKey
3
- } from "./chunk-SHSVN3SE.js";
4
- import "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-QTAHHJH3.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
5
  import "./chunk-DULFP3MK.js";
6
6
 
7
7
  // src/tools/create-api-key.ts
@@ -21,4 +21,4 @@ async function handleCreateApiKey(params) {
21
21
  export {
22
22
  handleCreateApiKey
23
23
  };
24
- //# sourceMappingURL=create-api-key-JPEUIXGM.js.map
24
+ //# sourceMappingURL=create-api-key-IKMOTWCD.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiKey
3
- } from "./chunk-SHSVN3SE.js";
4
- import "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-QTAHHJH3.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
5
  import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
@@ -22,4 +22,4 @@ async function handleCreateApiKey(params) {
22
22
  export {
23
23
  handleCreateApiKey
24
24
  };
25
- //# sourceMappingURL=create-api-key-JKM2DSZO.js.map
25
+ //# sourceMappingURL=create-api-key-YUDAGOWL.js.map
@@ -3,9 +3,9 @@ import {
3
3
  } from "./chunk-7AQLPVFL.js";
4
4
  import {
5
5
  createDataset
6
- } from "./chunk-XQYH52SI.js";
6
+ } from "./chunk-JOFSQFCN.js";
7
7
  import "./chunk-FOKVY3BK.js";
8
- import "./chunk-7CZQDZ2K.js";
8
+ import "./chunk-7MNQDTKJ.js";
9
9
  import "./chunk-DULFP3MK.js";
10
10
  import "./chunk-SAS5OB7F.js";
11
11
 
@@ -20,4 +20,4 @@ async function handleCreateDataset(params) {
20
20
  export {
21
21
  handleCreateDataset
22
22
  };
23
- //# sourceMappingURL=create-dataset-WON4SOTC.js.map
23
+ //# sourceMappingURL=create-dataset-54FJCX45.js.map
@@ -3,9 +3,9 @@ import {
3
3
  } from "./chunk-7AQLPVFL.js";
4
4
  import {
5
5
  createDataset
6
- } from "./chunk-XQYH52SI.js";
6
+ } from "./chunk-JOFSQFCN.js";
7
7
  import "./chunk-FOKVY3BK.js";
8
- import "./chunk-7CZQDZ2K.js";
8
+ import "./chunk-7MNQDTKJ.js";
9
9
  import "./chunk-DULFP3MK.js";
10
10
 
11
11
  // src/tools/create-dataset.ts
@@ -19,4 +19,4 @@ async function handleCreateDataset(params) {
19
19
  export {
20
20
  handleCreateDataset
21
21
  };
22
- //# sourceMappingURL=create-dataset-DJNXYJ5B.js.map
22
+ //# sourceMappingURL=create-dataset-ONX3RADL.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createDatasetRecords
3
- } from "./chunk-XQYH52SI.js";
4
- import "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-JOFSQFCN.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
5
  import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
@@ -18,4 +18,4 @@ async function handleCreateDatasetRecords(params) {
18
18
  export {
19
19
  handleCreateDatasetRecords
20
20
  };
21
- //# sourceMappingURL=create-dataset-records-UJBW3C7C.js.map
21
+ //# sourceMappingURL=create-dataset-records-HPLMFDJY.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createDatasetRecords
3
- } from "./chunk-XQYH52SI.js";
4
- import "./chunk-7CZQDZ2K.js";
3
+ } from "./chunk-JOFSQFCN.js";
4
+ import "./chunk-7MNQDTKJ.js";
5
5
  import "./chunk-DULFP3MK.js";
6
6
 
7
7
  // src/tools/create-dataset-records.ts
@@ -17,4 +17,4 @@ async function handleCreateDatasetRecords(params) {
17
17
  export {
18
18
  handleCreateDatasetRecords
19
19
  };
20
- //# sourceMappingURL=create-dataset-records-TMEOTLTO.js.map
20
+ //# sourceMappingURL=create-dataset-records-QZZZF64Z.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  createEvaluator,
3
3
  getEvaluatorType
4
- } from "./chunk-AASW2TO2.js";
5
- import "./chunk-7CZQDZ2K.js";
4
+ } from "./chunk-6OLI3LFY.js";
5
+ import "./chunk-7MNQDTKJ.js";
6
6
  import "./chunk-DULFP3MK.js";
7
7
 
8
8
  // src/tools/create-evaluator.ts
@@ -24,4 +24,4 @@ async function handleCreateEvaluator(params) {
24
24
  export {
25
25
  handleCreateEvaluator
26
26
  };
27
- //# sourceMappingURL=create-evaluator-N5AEHI4K.js.map
27
+ //# sourceMappingURL=create-evaluator-I5I52HOQ.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  createEvaluator,
3
3
  getEvaluatorType
4
- } from "./chunk-AASW2TO2.js";
5
- import "./chunk-7CZQDZ2K.js";
4
+ } from "./chunk-6OLI3LFY.js";
5
+ import "./chunk-7MNQDTKJ.js";
6
6
  import "./chunk-DULFP3MK.js";
7
7
  import "./chunk-SAS5OB7F.js";
8
8
 
@@ -25,4 +25,4 @@ async function handleCreateEvaluator(params) {
25
25
  export {
26
26
  handleCreateEvaluator
27
27
  };
28
- //# sourceMappingURL=create-evaluator-XYNY2YFY.js.map
28
+ //# sourceMappingURL=create-evaluator-L66QGSDX.js.map
@@ -31,7 +31,7 @@ var init_package = __esm({
31
31
  "package.json"() {
32
32
  package_default = {
33
33
  name: "@langwatch/mcp-server",
34
- version: "3.0.0",
34
+ version: "3.1.0",
35
35
  description: "An MCP server for Langwatch.",
36
36
  license: "MIT",
37
37
  author: "",
@@ -534,6 +534,10 @@ var init_triggers = __esm({
534
534
  });
535
535
 
536
536
  // src/langwatch-api.ts
537
+ function detailsOf(meta) {
538
+ const { reasons: _reasons, target: _target, fields: _fields, ...details } = meta;
539
+ return Object.keys(details).length > 0 ? details : void 0;
540
+ }
537
541
  function parseErrorBody(responseBody) {
538
542
  try {
539
543
  const parsed = JSON.parse(responseBody);
@@ -550,8 +554,10 @@ function parseErrorBody(responseBody) {
550
554
  const tips = readStringArray(body.tips);
551
555
  const docsUrl = typeof body.docsUrl === "string" ? body.docsUrl : void 0;
552
556
  const fault = VALID_FAULTS.includes(body.fault) ? body.fault : void 0;
553
- const reasons = Array.isArray(body.reasons) && body.reasons.every((r) => !!r && typeof r === "object") ? body.reasons : void 0;
554
- return { code, message, tips, docsUrl, fault, reasons };
557
+ const meta = isRecord(body.meta) ? body.meta : {};
558
+ const rawReasons = Array.isArray(body.reasons) ? body.reasons : meta.reasons;
559
+ const reasons = Array.isArray(rawReasons) && rawReasons.every((r) => !!r && typeof r === "object") ? rawReasons : void 0;
560
+ return { code, message, tips, docsUrl, fault, reasons, meta: detailsOf(meta) };
555
561
  } catch {
556
562
  return {};
557
563
  }
@@ -585,6 +591,32 @@ function describeReason(reason) {
585
591
  }
586
592
  return parts.join(" \u2014 ");
587
593
  }
594
+ function apiErrorOf({
595
+ status,
596
+ responseBody
597
+ }) {
598
+ const parsed = parseErrorBody(responseBody);
599
+ const lines = [`LangWatch API error ${status}: ${parsed.message ?? responseBody}`];
600
+ if (parsed.code) lines.push(`Code: ${parsed.code}`);
601
+ if (parsed.meta) lines.push(`Details: ${JSON.stringify(parsed.meta)}`);
602
+ const reasonLines = (parsed.reasons ?? []).map(describeReason).filter((line) => line !== null);
603
+ if (reasonLines.length > 0) {
604
+ lines.push("Rejected fields:", ...reasonLines);
605
+ }
606
+ if (parsed.tips && parsed.tips.length > 0) {
607
+ lines.push("Tips:", ...parsed.tips.map((tip) => `- ${tip}`));
608
+ }
609
+ if (parsed.docsUrl) {
610
+ lines.push(`Docs: ${parsed.docsUrl}`);
611
+ }
612
+ return new LangWatchApiError(lines.join("\n"), status, responseBody, {
613
+ code: parsed.code,
614
+ tips: parsed.tips,
615
+ docsUrl: parsed.docsUrl,
616
+ fault: parsed.fault,
617
+ reasons: parsed.reasons
618
+ });
619
+ }
588
620
  async function makeRequest(method, path, body) {
589
621
  const config = getConfig();
590
622
  const url = config.endpoint + path;
@@ -607,28 +639,8 @@ async function makeRequest(method, path, body) {
607
639
  headers,
608
640
  ...body !== void 0 ? { body: JSON.stringify(body) } : {}
609
641
  });
610
- if (!response.ok) {
611
- const responseBody = await response.text();
612
- const parsed = parseErrorBody(responseBody);
613
- const lines = [`LangWatch API error ${response.status}: ${parsed.message ?? responseBody}`];
614
- const reasonLines = (parsed.reasons ?? []).map(describeReason).filter((line) => line !== null);
615
- if (reasonLines.length > 0) {
616
- lines.push("Rejected fields:", ...reasonLines);
617
- }
618
- if (parsed.tips && parsed.tips.length > 0) {
619
- lines.push("Tips:", ...parsed.tips.map((tip) => `- ${tip}`));
620
- }
621
- if (parsed.docsUrl) {
622
- lines.push(`Docs: ${parsed.docsUrl}`);
623
- }
624
- throw new LangWatchApiError(lines.join("\n"), response.status, responseBody, {
625
- code: parsed.code,
626
- tips: parsed.tips,
627
- docsUrl: parsed.docsUrl,
628
- fault: parsed.fault,
629
- reasons: parsed.reasons
630
- });
631
- }
642
+ if (!response.ok)
643
+ throw apiErrorOf({ status: response.status, responseBody: await response.text() });
632
644
  if (response.status === 204 || response.headers?.get("content-length") === "0") {
633
645
  return null;
634
646
  }
@@ -2647,7 +2659,9 @@ var init_discover_evaluator_schema = __esm({
2647
2659
  async function runQuery(params) {
2648
2660
  return makeRequest("POST", "/api/v1/query", {
2649
2661
  sql: params.sql,
2650
- ...params.parameters ? { parameters: params.parameters } : {}
2662
+ ...params.parameters ? { parameters: params.parameters } : {},
2663
+ ...params.projects ? { projects: params.projects } : {},
2664
+ ...params.sources ? { sources: params.sources } : {}
2651
2665
  });
2652
2666
  }
2653
2667
  async function getQueryReference() {
@@ -3181,7 +3195,12 @@ __export(run_query_exports, {
3181
3195
  handleRunQuery: () => handleRunQuery
3182
3196
  });
3183
3197
  async function handleRunQuery(params) {
3184
- const result = await runQuery(params);
3198
+ const result = await runQuery(params).catch((error) => {
3199
+ if (error instanceof LangWatchApiError && error.code === "projects_required") {
3200
+ throw new Error(PROJECTS_REQUIRED_MESSAGE);
3201
+ }
3202
+ throw error;
3203
+ });
3185
3204
  const headers = result.columns.map((column) => column.name);
3186
3205
  const shown = result.rows.slice(0, RUN_QUERY_ROW_CAP);
3187
3206
  const lines = [];
@@ -3209,15 +3228,23 @@ async function handleRunQuery(params) {
3209
3228
  for (const diagnostic of result.diagnostics) {
3210
3229
  lines.push(`${diagnostic.code}: ${diagnostic.message}`);
3211
3230
  }
3231
+ if (result.params) lines.push("", describeParams(result.params));
3212
3232
  return lines.join("\n");
3213
3233
  }
3214
- var RUN_QUERY_ROW_CAP;
3234
+ function describeParams(params) {
3235
+ return ["Ran with these placeholders:", "```json", JSON.stringify(params, null, 2), "```"].join(
3236
+ "\n"
3237
+ );
3238
+ }
3239
+ var RUN_QUERY_ROW_CAP, PROJECTS_REQUIRED_MESSAGE;
3215
3240
  var init_run_query = __esm({
3216
3241
  "src/tools/run-query.ts"() {
3217
3242
  "use strict";
3218
3243
  init_langwatch_api_query();
3244
+ init_langwatch_api();
3219
3245
  init_markdown_table();
3220
3246
  RUN_QUERY_ROW_CAP = 50;
3247
+ PROJECTS_REQUIRED_MESSAGE = 'Name the projects to query: pass `projects`, a list of project ids, or "all"';
3221
3248
  }
3222
3249
  });
3223
3250
 
@@ -5525,12 +5552,17 @@ var init_list_dashboards = __esm({
5525
5552
  });
5526
5553
 
5527
5554
  // src/tools/dashboard-widget-queries.ts
5528
- function withSources({
5555
+ function withLists({
5529
5556
  queries,
5530
- sources
5557
+ sources,
5558
+ projects
5531
5559
  }) {
5532
- if (sources === void 0) return [...queries];
5533
- return queries.map((query) => ({ ...query, sources }));
5560
+ if (sources === void 0 && projects === void 0) return [...queries];
5561
+ return queries.map((query) => ({
5562
+ ...query,
5563
+ ...sources === void 0 ? {} : { sources },
5564
+ ...projects === void 0 ? {} : { projects }
5565
+ }));
5534
5566
  }
5535
5567
  function normalizeDashboardWidgetQueries({
5536
5568
  queries
@@ -5562,9 +5594,10 @@ __export(add_dashboard_widget_exports, {
5562
5594
  handleAddDashboardWidget: () => handleAddDashboardWidget
5563
5595
  });
5564
5596
  async function handleAddDashboardWidget(params) {
5565
- const queries = withSources({
5597
+ const queries = withLists({
5566
5598
  queries: normalizeDashboardWidgetQueries({ queries: params.queries }),
5567
- sources: params.sources
5599
+ sources: params.sources,
5600
+ projects: params.projects
5568
5601
  });
5569
5602
  let widget;
5570
5603
  try {
@@ -5603,17 +5636,18 @@ __export(update_dashboard_widget_exports, {
5603
5636
  handleUpdateDashboardWidget: () => handleUpdateDashboardWidget
5604
5637
  });
5605
5638
  async function handleUpdateDashboardWidget(params) {
5606
- const { dashboardId, widgetId, name, code, description, sources } = params;
5607
- const fields = [name, code, params.queries, description, sources];
5639
+ const { dashboardId, widgetId, name, code, description, sources, projects } = params;
5640
+ const fields = [name, code, params.queries, description, sources, projects];
5608
5641
  if (fields.every((field) => field === void 0)) {
5609
5642
  throw new Error(
5610
- "Provide at least one of name, code, queries, description or sources to change."
5643
+ "Provide at least one of name, code, queries, description, sources or projects to change."
5611
5644
  );
5612
5645
  }
5613
5646
  const current = await widgetOnDashboardOrRefused({ widgetId, dashboardId });
5614
5647
  const given = params.queries === void 0 ? void 0 : normalizeDashboardWidgetQueries({ queries: params.queries });
5615
- const base = given ?? (sources === void 0 ? void 0 : current.definition.queries);
5616
- const queries = base === void 0 ? void 0 : withSources({ queries: base, sources });
5648
+ const listed = sources !== void 0 || projects !== void 0;
5649
+ const base = given ?? (listed ? current.definition.queries : void 0);
5650
+ const queries = base === void 0 ? void 0 : withLists({ queries: base, sources, projects });
5617
5651
  const changes = {
5618
5652
  ...name === void 0 ? {} : { name },
5619
5653
  ...code === void 0 ? {} : { code },
@@ -7099,6 +7133,7 @@ init_triggers();
7099
7133
 
7100
7134
  // src/schemas/widget-sources.ts
7101
7135
  var import_zod5 = require("zod");
7136
+ var isAllWord = (id) => id.trim().toLowerCase() === "all";
7102
7137
  var WIDGET_SOURCES = [
7103
7138
  "application",
7104
7139
  "simulation",
@@ -7115,6 +7150,18 @@ var WIDGET_SOURCES = [
7115
7150
  var widgetSourcesInput = import_zod5.z.array(import_zod5.z.enum(WIDGET_SOURCES)).max(WIDGET_SOURCES.length).nullable().optional().describe(
7116
7151
  `The trace origins every query of the widget counts: any of ${WIDGET_SOURCES.join(", ")} (other = any origin not listed). A new widget counts ["application"]; add "langy" to count your own conversations, as a widget about Langy's requests needs. null makes it unset again, counting the default.`
7117
7152
  );
7153
+ var ALL_NOT_STORED = 'projects holds project ids; "all" is not stored in a widget';
7154
+ var widgetProjectsInput = import_zod5.z.array(import_zod5.z.string().min(1), {
7155
+ error: (issue) => typeof issue.input === "string" && isAllWord(issue.input) ? ALL_NOT_STORED : void 0
7156
+ }).min(1).refine((ids) => !ids.some(isAllWord), { message: ALL_NOT_STORED }).nullable().optional().describe(
7157
+ "The project ids every query of the widget reads, each one you can read. A new widget reads its board's project. null makes it unset again, reading the board's project."
7158
+ );
7159
+ var runQueryProjectsInput = import_zod5.z.union([
7160
+ import_zod5.z.string().refine(isAllWord),
7161
+ import_zod5.z.array(import_zod5.z.string().min(1)).min(1).refine((ids) => !ids.some(isAllWord), {
7162
+ message: '"all" stands alone; send it by itself, or list project ids'
7163
+ })
7164
+ ]);
7118
7165
 
7119
7166
  // src/tools/get-experiment-results.ts
7120
7167
  init_langwatch_api();
@@ -7812,6 +7859,12 @@ function registerObservabilityTools(server) {
7812
7859
  ),
7813
7860
  parameters: import_zod9.z.record(import_zod9.z.string(), import_zod9.z.union([import_zod9.z.string(), import_zod9.z.number(), import_zod9.z.boolean(), import_zod9.z.null()])).optional().describe(
7814
7861
  'Values for the parameters the statement declares, e.g. {"days": 7} for {days:UInt32}'
7862
+ ),
7863
+ projects: runQueryProjectsInput.optional().describe(
7864
+ 'The project ids to read, or the string "all" for every project the key can read (params.dashboard_context_projects lists them). A key that reaches several projects must name them or send "all"; a key that reads one project defaults to it'
7865
+ ),
7866
+ sources: import_zod9.z.array(import_zod9.z.string()).optional().describe(
7867
+ "The trace sources {dashboard_context_sources:Array(String)} is bound to (default application). Only a statement that reads that parameter is kept to them; a SOURCES_IGNORED diagnostic says it did not"
7815
7868
  )
7816
7869
  },
7817
7870
  withToolLogging("run_query", async (params) => {
@@ -8754,7 +8807,8 @@ function registerDashboardTools(server) {
8754
8807
  ]).describe(
8755
8808
  "The widget's named LangWatchQL queries: either {name: sql} or an array of {name, sql}. Max 8. Validate each statement with run_query first."
8756
8809
  ),
8757
- sources: widgetSourcesInput
8810
+ sources: widgetSourcesInput,
8811
+ projects: widgetProjectsInput
8758
8812
  },
8759
8813
  withToolLogging("add_dashboard_widget", async (params) => {
8760
8814
  requireApiKey();
@@ -8786,7 +8840,8 @@ function registerDashboardTools(server) {
8786
8840
  "The widget's new named LangWatchQL queries, replacing the stored set: either {name: sql} or an array of {name, sql}. Max 8."
8787
8841
  ),
8788
8842
  description: import_zod9.z.string().optional().describe("What the widget's info tip says: a sentence or two"),
8789
- sources: widgetSourcesInput
8843
+ sources: widgetSourcesInput,
8844
+ projects: widgetProjectsInput
8790
8845
  },
8791
8846
  withToolLogging("update_dashboard_widget", async (params) => {
8792
8847
  requireApiKey();