@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
@@ -1,8 +1,64 @@
1
+ import {
2
+ LANGWATCH_API_VERSION
3
+ } from "./chunk-7CZQDZ2K.js";
1
4
  import {
2
5
  getConfig
3
- } from "./chunk-WT4PO4A3.js";
6
+ } from "./chunk-DULFP3MK.js";
4
7
  import "./chunk-SAS5OB7F.js";
5
8
 
9
+ // ../../packages/redaction/src/piiEntities.ts
10
+ var ESSENTIAL_PII_ENTITIES = [
11
+ "EMAIL_ADDRESS",
12
+ "IP_ADDRESS",
13
+ "CREDIT_CARD",
14
+ "IBAN_CODE",
15
+ "CRYPTO",
16
+ "PHONE_NUMBER",
17
+ "US_SSN",
18
+ "US_ITIN",
19
+ "US_PASSPORT",
20
+ "US_BANK_NUMBER",
21
+ "US_DRIVER_LICENSE",
22
+ "MEDICAL_LICENSE",
23
+ "UK_NHS",
24
+ "SG_NRIC_FIN",
25
+ "AU_ABN",
26
+ "AU_TFN",
27
+ "IN_PAN",
28
+ "IN_AADHAAR",
29
+ "BR_CPF"
30
+ ];
31
+ var PRESIDIO_STRICT_ENTITIES = [
32
+ "CREDIT_CARD",
33
+ "CRYPTO",
34
+ "EMAIL_ADDRESS",
35
+ "IBAN_CODE",
36
+ "IP_ADDRESS",
37
+ "LOCATION",
38
+ "PERSON",
39
+ "PHONE_NUMBER",
40
+ "MEDICAL_LICENSE",
41
+ "US_BANK_NUMBER",
42
+ "US_DRIVER_LICENSE",
43
+ "US_ITIN",
44
+ "US_PASSPORT",
45
+ "US_SSN",
46
+ "UK_NHS",
47
+ "SG_NRIC_FIN",
48
+ "AU_ABN",
49
+ "AU_ACN",
50
+ "AU_TFN",
51
+ "AU_MEDICARE",
52
+ "IN_PAN",
53
+ "IN_AADHAAR",
54
+ "IN_VEHICLE_REGISTRATION",
55
+ "IN_VOTER",
56
+ "IN_PASSPORT"
57
+ ];
58
+ var STRICT_ONLY_PII_ENTITIES = PRESIDIO_STRICT_ENTITIES.filter(
59
+ (entity) => !new Set(ESSENTIAL_PII_ENTITIES).has(entity)
60
+ );
61
+
6
62
  // ../../packages/redaction/src/markers.ts
7
63
  var SECRET_MARKER = "[SECRET]";
8
64
  function formatPiiMarker(entity) {
@@ -42,18 +98,10 @@ function countCharClasses(value) {
42
98
  var TOKEN_START = String.raw`(?<![A-Za-z0-9_-])`;
43
99
  var TOKEN_END = String.raw`(?![A-Za-z0-9_-])`;
44
100
  var VENDOR_KEY_PATTERNS = [
45
- // LangWatch's own API, ingest and legacy personal-access tokens, minted as
46
- // `{prefix}{lookupId}_{secret}` by
47
- // platform/app/src/server/api-key/api-key-token.utils.ts. Matched on the
48
- // prefix plus three body characters, like every other known vendor, so a
49
- // truncated or short-bodied one still redacts: `sk-lw-` would otherwise reach
50
- // only the generic `sk-` rule and its 20-character floor, and `ik-lw-`
51
- // nothing at all. The three-character floor is what keeps the bare prefix,
52
- // which documentation and error messages print on its own, from reading as a
53
- // key.
54
- // The prefixes are duplicated rather than imported because this package is
55
- // shared with the SDK and stays dependency-free; a test pins them to the
56
- // constants so the two cannot drift.
101
+ // LangWatch's own token prefixes, minted by modules/api-key/contract/src/api-key.tokens.ts.
102
+ // The 3-body-char floor keeps a bare prefix (printed alone in docs/errors) from matching as a
103
+ // key. Duplicated here rather than imported so this package stays dependency-free; a test pins
104
+ // them to the constants so the two cannot drift.
57
105
  String.raw`(?:sk|ik|pat|vk)-lw-[A-Za-z0-9_-]{3,}`,
58
106
  // GitLab personal, project, deploy, runner and agent tokens.
59
107
  String.raw`gl(?:pat|rt|dt|soat|ptt|cbt|imt|agent|ffct)-[A-Za-z0-9_-]{20,}`,
@@ -110,8 +158,30 @@ function isKeyShapedBody(body) {
110
158
  }
111
159
  const { lower, upper, digit } = countCharClasses(body);
112
160
  if (lower < 2 || upper < 2 || digit < 2) return false;
161
+ if (isWordSlug(body)) return false;
113
162
  return shannonEntropyBits(body) >= SHAPED_TOKEN_MIN_ENTROPY;
114
163
  }
164
+ var SLUG_MIN_SEGMENTS = 4;
165
+ var SLUG_LETTERS_SEGMENT = /^[A-Za-z]{1,12}$/;
166
+ var SLUG_TAG_SEGMENT = /^[A-Za-z0-9]{1,6}$/;
167
+ var SLUG_WORD_SEGMENT = /^(?:[a-z]{4,}|[A-Z]{4,}|[A-Z][a-z]{3,})$/;
168
+ var SLUG_RANDOM_SEGMENT = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])/;
169
+ var SLUG_MAX_RANDOM_SEGMENTS = 1;
170
+ var SLUG_MIN_WORDS = 2;
171
+ function isWordSlug(body) {
172
+ const segments = body.split(/[-_]/);
173
+ if (segments.length < SLUG_MIN_SEGMENTS) return false;
174
+ let words = 0;
175
+ let randomLooking = 0;
176
+ for (const segment of segments) {
177
+ if (!SLUG_LETTERS_SEGMENT.test(segment) && !SLUG_TAG_SEGMENT.test(segment)) {
178
+ return false;
179
+ }
180
+ if (SLUG_WORD_SEGMENT.test(segment)) words += 1;
181
+ if (SLUG_RANDOM_SEGMENT.test(segment)) randomLooking += 1;
182
+ }
183
+ return words >= SLUG_MIN_WORDS && randomLooking <= SLUG_MAX_RANDOM_SEGMENTS;
184
+ }
115
185
  var DIGEST_PREFIXES = /* @__PURE__ */ new Set([
116
186
  "sha1",
117
187
  "sha224",
@@ -339,24 +409,15 @@ var VALUE_RULES = [
339
409
  {
340
410
  id: "url_credentials",
341
411
  description: "Password embedded in a connection URL",
342
- // scheme://user:password@host -> keep everything but the password. The
343
- // scheme length is bounded (real schemes are short) so a long run of
344
- // name-like characters costs constant backtracking per position instead
345
- // of a quadratic scan on huge inputs.
346
- //
347
- // The scheme sits in a lookbehind so that the first character the engine
348
- // must find is the literal `:`. With the scheme inside the match the
349
- // pattern starts with a character class, every lowercase letter in the
350
- // text is a candidate start, and each one costs up to 30 characters of
351
- // scheme scan before it fails: 6.2 ms on a 200 KB payload, more than every
352
- // other rule together. Anchored on `:` the same payload costs 0.09 ms.
353
- // The scheme stays outside the match and therefore untouched, which is
354
- // what the rule already did with it.
412
+ // scheme://user:password@host -> keep everything but the password. The scheme sits in a
413
+ // lookbehind so the engine anchors on the literal `:` instead of scanning from every
414
+ // lowercase letter: unanchored this cost 6.2ms on a 200KB payload (more than every other
415
+ // rule combined); anchored, 0.09ms. The scheme stays outside the match and untouched.
355
416
  regex: /(?<=[a-z][a-z0-9+.-]{0,30})(:\/\/[^\s:@/]+:)([^\s:@/]+)(@)/gi,
356
417
  // The same scheme the lookbehind reads, so a reported match still spans the
357
418
  // whole URL rather than starting at the colon.
358
419
  precededBy: /[a-z][a-z0-9+.-]{0,30}$/i,
359
- render: (_m, prefix, _password, at) => `${prefix}${REPLACEMENT}${at}`
420
+ render: (...[, prefix = "", , at = ""]) => `${prefix}${REPLACEMENT}${at}`
360
421
  },
361
422
  {
362
423
  id: "bearer_token",
@@ -397,23 +458,13 @@ var VALUE_RULES = [
397
458
  precondition: (text) => text.includes("_")
398
459
  },
399
460
  {
400
- // The layer that catches a vendor nobody has heard of. A short prefix, a
401
- // separator and a high-entropy body is the shape almost every modern key is
402
- // minted in, and it needs no vendor knowledge at all.
403
- //
404
- // The prefix may be upper, lower or mixed case: plenty of vendors mint
405
- // `LW_…` or `Xy_…`, and restricting it to lowercase missed them. That also
406
- // makes the prefix the shape of a screaming-snake environment variable
407
- // NAME, which must survive as a bare name, and does: `AWS_SECRET_ACCESS_KEY`
408
- // and `DATABASE_URL_PRODUCTION` are dictionary words with no digits and no
409
- // lowercase, so the length floor and the character-mix gate turn them both
410
- // away. The digest check lowercases the prefix so `SHA512-…` is still
411
- // recognised as a digest.
412
- //
413
- // A declined match consumes the text it spanned, so in principle a benign
414
- // outer match could hide a secret further inside the same unbroken token.
415
- // It cannot in practice: a body containing key material inherits that
416
- // material's entropy and character mix, so the outer match is accepted and
461
+ // The layer that catches a vendor nobody has heard of: a short prefix, a separator and a
462
+ // high-entropy body, needing no vendor knowledge. The prefix may be upper, lower or mixed
463
+ // case since plenty of vendors mint `LW_…` or `Xy_…`; that also makes it the shape of a
464
+ // screaming-snake env var NAME, but the length floor and character-mix gate turn those away.
465
+ // A declined match consumes the text it spanned, so in principle an outer match could hide
466
+ // secret material further inside the same token. It cannot in practice: a body containing
467
+ // key material inherits that material's entropy and mix, so the outer match is accepted and
417
468
  // the secret is redacted along with its prefix.
418
469
  id: "shaped_api_key",
419
470
  description: "High-entropy API key with a vendor-style prefix",
@@ -431,26 +482,14 @@ var VALUE_RULES = [
431
482
  // they write "key:".
432
483
  id: "sensitive_assignment",
433
484
  description: "Value assigned to a credential-named field",
434
- // One capture for everything that introduces the value, one for the value
435
- // itself, so the replacement puts the sentence back and swaps only the
436
- // credential.
437
- // `key is <value>` was accepted as a separator too, and across a 236 MB
438
- // corpus of real traces it caught zero credentials while being the sole
439
- // source of English-prose redactions: "a bare digest of an API key is
440
- // offline-checkable" lost the words after "key is". A cue that only ever
441
- // fires on prose is not a cue, so the strict separator is `:` or `=`.
442
- //
443
- // A whitespace separator is accepted on a HIGHER bar instead of not at
444
- // all, because `Authorization <token>` and `key <token>` do carry real
445
- // credentials. Ungated it matched 5,816 further spans over 309 shapes,
446
- // mostly prose; gated on the value looking like key material in its own
447
- // right it matches 338 over 19 at roughly 87% precision.
448
- //
449
- // The value class excludes backslash. Span content arrives JSON-encoded,
450
- // so a literal two-character `\n` sits inside the text; letting a value run
451
- // through one carried it across logical lines and past the `$VAR` and
452
- // code-expression guards, which is why `api_key = $OPENAI_API_KEY` was kept
453
- // with a real newline and redacted with an escaped one.
485
+ // `key is <value>` was rejected as a strict separator: on real traces it caught zero
486
+ // credentials while being the sole source of prose false-positives. Whitespace is accepted
487
+ // instead on a higher bar — the value must look like key material (see `isKeyMaterial`) —
488
+ // which is what keeps `Authorization <token>` and `key <token>` while rejecting prose.
489
+ // The value class excludes backslash: span content arrives JSON-encoded, so a literal `\n`
490
+ // is two characters, and letting a value run through one carried it across logical lines and
491
+ // past the `$VAR`/code-expression guards — `api_key = $OPENAI_API_KEY` was kept with a real
492
+ // newline and redacted with an escaped one.
454
493
  regex: new RegExp(
455
494
  `((?:^|[\\W_])(?:${CREDENTIAL_KEYWORD})(?:\\s+[A-Za-z]{1,8}){0,2}["'\`]?(?:\\s*[:=]{1,2}\\s*|[ \\t?-]+)["'\`]?)([^\\s"'\`,;<>(){}\\[\\]\\\\]{${CONTEXT_VALUE_MIN_LENGTH},})`,
456
495
  "gi"
@@ -609,7 +648,7 @@ function collectSensitiveEnvValues(env) {
609
648
  if (!ENV_SECRET_NAME_REGEX.test(name)) continue;
610
649
  values.add(trimmed);
611
650
  }
612
- return [...values].sort((a, b) => b.length - a.length);
651
+ return [...values].toSorted((a, b) => b.length - a.length);
613
652
  }
614
653
  var EMAIL_REGEX = /[A-Za-z0-9._%+-]{1,64}@[A-Za-z0-9.-]{1,253}\.[A-Za-z]{2,24}/g;
615
654
  var INTL_PHONE_REGEX = /(?<![\w.+-])\+[1-9]\d{0,2}(?:[\s.-]?(?:\(\d{1,4}\)[\s.-]?)?\d{1,4}){1,5}(?!\d)/g;
@@ -829,10 +868,11 @@ function redactReport(params) {
829
868
  async function deliverReport(report, params) {
830
869
  const config = getConfig();
831
870
  const endpoint = config.endpoint.replace(/\/+$/, "");
832
- const response = await fetch(`${endpoint}/api/bug-reports`, {
871
+ const response = await fetch(`${endpoint}/api/v1/bug-reports`, {
833
872
  method: "POST",
834
873
  headers: {
835
874
  "content-type": "application/json",
875
+ "x-api-version": LANGWATCH_API_VERSION,
836
876
  ...config.apiKey ? { authorization: `Bearer ${config.apiKey}` } : {}
837
877
  },
838
878
  body: JSON.stringify({
@@ -882,4 +922,4 @@ async function handleReportIssue(params) {
882
922
  export {
883
923
  handleReportIssue
884
924
  };
885
- //# sourceMappingURL=report-issue-RHZZ33IS.js.map
925
+ //# sourceMappingURL=report-issue-N7ND5TM6.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  formatRunPlanRun
3
- } from "./chunk-JR6DJZOU.js";
3
+ } from "./chunk-RABYBFX5.js";
4
4
  import {
5
5
  rerunRunPlan
6
- } from "./chunk-56OGTS24.js";
7
- import "./chunk-GELJ2MQR.js";
8
- import "./chunk-WT4PO4A3.js";
6
+ } from "./chunk-VOUGDY2O.js";
7
+ import "./chunk-7CZQDZ2K.js";
8
+ import "./chunk-DULFP3MK.js";
9
9
  import "./chunk-SAS5OB7F.js";
10
10
 
11
11
  // src/tools/rerun-run-plan.ts
@@ -19,4 +19,4 @@ async function handleRerunRunPlan(params) {
19
19
  export {
20
20
  handleRerunRunPlan
21
21
  };
22
- //# sourceMappingURL=rerun-run-plan-MUDWJBE4.js.map
22
+ //# sourceMappingURL=rerun-run-plan-O3VUZ6CG.js.map
@@ -0,0 +1,21 @@
1
+ import {
2
+ formatRunPlanRun
3
+ } from "./chunk-RABYBFX5.js";
4
+ import {
5
+ rerunRunPlan
6
+ } from "./chunk-VOUGDY2O.js";
7
+ import "./chunk-7CZQDZ2K.js";
8
+ import "./chunk-DULFP3MK.js";
9
+
10
+ // src/tools/rerun-run-plan.ts
11
+ async function handleRerunRunPlan(params) {
12
+ const result = await rerunRunPlan(params.id, {
13
+ parameters: params.parameters,
14
+ note: params.note
15
+ });
16
+ return formatRunPlanRun(result);
17
+ }
18
+ export {
19
+ handleRerunRunPlan
20
+ };
21
+ //# sourceMappingURL=rerun-run-plan-OJTVVGJI.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  revokeApiKey
3
- } from "./chunk-K37ZNPXK.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-SHSVN3SE.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/revoke-api-key.ts
@@ -13,4 +13,4 @@ async function handleRevokeApiKey(params) {
13
13
  export {
14
14
  handleRevokeApiKey
15
15
  };
16
- //# sourceMappingURL=revoke-api-key-6LAZ3QZZ.js.map
16
+ //# sourceMappingURL=revoke-api-key-BU6BKGCG.js.map
@@ -0,0 +1,15 @@
1
+ import {
2
+ revokeApiKey
3
+ } from "./chunk-SHSVN3SE.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.js";
6
+
7
+ // src/tools/revoke-api-key.ts
8
+ async function handleRevokeApiKey(params) {
9
+ await revokeApiKey(params.id);
10
+ return `API key ${params.id} revoked successfully.`;
11
+ }
12
+ export {
13
+ handleRevokeApiKey
14
+ };
15
+ //# sourceMappingURL=revoke-api-key-NZNCFOIR.js.map
@@ -0,0 +1,75 @@
1
+ import {
2
+ runAgent
3
+ } from "./chunk-4RX3G62A.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.js";
6
+ import "./chunk-SAS5OB7F.js";
7
+
8
+ // src/tools/run-agent.ts
9
+ import { z } from "zod";
10
+ var jsonObjectSchema = z.looseObject({});
11
+ function outputLines(result) {
12
+ const output = result.output;
13
+ if (output !== void 0) {
14
+ return ["**Output:**", typeof output === "string" ? output : JSON.stringify(output, null, 2)];
15
+ }
16
+ return ["**Result:**", JSON.stringify(result, null, 2)];
17
+ }
18
+ function connectedLines(result) {
19
+ const lines = [];
20
+ const instance = result.instance;
21
+ const durationMs = result.durationMs;
22
+ if (instance?.hostname) {
23
+ const label = instance.label ? ` (${instance.label})` : "";
24
+ lines.push(`
25
+ **Instance:** ${instance.hostname}${label}`);
26
+ }
27
+ if (typeof durationMs === "number") lines.push(`**Duration:** ${durationMs} ms`);
28
+ const session = result.session;
29
+ if (session !== void 0 && session !== null) {
30
+ lines.push("**Session:**");
31
+ lines.push(JSON.stringify(session, null, 2));
32
+ }
33
+ return lines;
34
+ }
35
+ async function handleRunAgent({
36
+ id,
37
+ input,
38
+ message,
39
+ parameters,
40
+ threadId
41
+ }) {
42
+ let parsedInput = {};
43
+ if (input) {
44
+ let decoded;
45
+ try {
46
+ decoded = JSON.parse(input);
47
+ } catch {
48
+ return "Error: `input` must be a valid JSON object.";
49
+ }
50
+ const result2 = jsonObjectSchema.safeParse(decoded);
51
+ if (!result2.success) {
52
+ return "Error: `input` must be a valid JSON object.";
53
+ }
54
+ parsedInput = result2.data;
55
+ }
56
+ const { agentType, result } = await runAgent({
57
+ id,
58
+ input: parsedInput,
59
+ message,
60
+ parameters,
61
+ threadId
62
+ });
63
+ const lines = [];
64
+ lines.push(`Agent executed successfully (type: ${agentType}).
65
+ `);
66
+ if (typeof result === "object" && result !== null) {
67
+ lines.push(...outputLines(result));
68
+ if (agentType === "connected") lines.push(...connectedLines(result));
69
+ }
70
+ return lines.join("\n");
71
+ }
72
+ export {
73
+ handleRunAgent
74
+ };
75
+ //# sourceMappingURL=run-agent-244O4Y5M.js.map
@@ -0,0 +1,74 @@
1
+ import {
2
+ runAgent
3
+ } from "./chunk-EYPJBL7P.js";
4
+ import "./chunk-7CZQDZ2K.js";
5
+ import "./chunk-DULFP3MK.js";
6
+
7
+ // src/tools/run-agent.ts
8
+ import { z } from "zod";
9
+ var jsonObjectSchema = z.looseObject({});
10
+ function outputLines(result) {
11
+ const output = result.output;
12
+ if (output !== void 0) {
13
+ return ["**Output:**", typeof output === "string" ? output : JSON.stringify(output, null, 2)];
14
+ }
15
+ return ["**Result:**", JSON.stringify(result, null, 2)];
16
+ }
17
+ function connectedLines(result) {
18
+ const lines = [];
19
+ const instance = result.instance;
20
+ const durationMs = result.durationMs;
21
+ if (instance?.hostname) {
22
+ const label = instance.label ? ` (${instance.label})` : "";
23
+ lines.push(`
24
+ **Instance:** ${instance.hostname}${label}`);
25
+ }
26
+ if (typeof durationMs === "number") lines.push(`**Duration:** ${durationMs} ms`);
27
+ const session = result.session;
28
+ if (session !== void 0 && session !== null) {
29
+ lines.push("**Session:**");
30
+ lines.push(JSON.stringify(session, null, 2));
31
+ }
32
+ return lines;
33
+ }
34
+ async function handleRunAgent({
35
+ id,
36
+ input,
37
+ message,
38
+ parameters,
39
+ threadId
40
+ }) {
41
+ let parsedInput = {};
42
+ if (input) {
43
+ let decoded;
44
+ try {
45
+ decoded = JSON.parse(input);
46
+ } catch {
47
+ return "Error: `input` must be a valid JSON object.";
48
+ }
49
+ const result2 = jsonObjectSchema.safeParse(decoded);
50
+ if (!result2.success) {
51
+ return "Error: `input` must be a valid JSON object.";
52
+ }
53
+ parsedInput = result2.data;
54
+ }
55
+ const { agentType, result } = await runAgent({
56
+ id,
57
+ input: parsedInput,
58
+ message,
59
+ parameters,
60
+ threadId
61
+ });
62
+ const lines = [];
63
+ lines.push(`Agent executed successfully (type: ${agentType}).
64
+ `);
65
+ if (typeof result === "object" && result !== null) {
66
+ lines.push(...outputLines(result));
67
+ if (agentType === "connected") lines.push(...connectedLines(result));
68
+ }
69
+ return lines.join("\n");
70
+ }
71
+ export {
72
+ handleRunAgent
73
+ };
74
+ //# sourceMappingURL=run-agent-HPCGZGYW.js.map
@@ -0,0 +1,38 @@
1
+ import {
2
+ formatRunPlanRun
3
+ } from "./chunk-RABYBFX5.js";
4
+ import {
5
+ runRunPlan
6
+ } from "./chunk-VOUGDY2O.js";
7
+ import {
8
+ toWireTargets
9
+ } from "./chunk-O7EMWEVJ.js";
10
+ import {
11
+ toWireAttachments
12
+ } from "./chunk-U24EACC4.js";
13
+ import "./chunk-7CZQDZ2K.js";
14
+ import "./chunk-DULFP3MK.js";
15
+
16
+ // src/tools/run-plan.ts
17
+ async function handleRunPlan(params) {
18
+ const result = await runRunPlan({
19
+ name: params.name,
20
+ config: {
21
+ scope: params.scope,
22
+ targets: toWireTargets(params.targets),
23
+ repeatCount: params.repeatCount,
24
+ simulatorModel: params.simulatorModel,
25
+ judgeModel: params.judgeModel,
26
+ scenarioIds: params.scenarioIds,
27
+ ...params.evaluators !== void 0 ? { evaluators: toWireAttachments(params.evaluators) } : {}
28
+ },
29
+ idempotencyKey: params.idempotencyKey,
30
+ parameters: params.parameters,
31
+ note: params.note
32
+ });
33
+ return formatRunPlanRun(result);
34
+ }
35
+ export {
36
+ handleRunPlan
37
+ };
38
+ //# sourceMappingURL=run-plan-2ZPGGZ4H.js.map
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  formatRunPlanRun
3
- } from "./chunk-JR6DJZOU.js";
3
+ } from "./chunk-RABYBFX5.js";
4
4
  import {
5
5
  runRunPlan
6
- } from "./chunk-56OGTS24.js";
6
+ } from "./chunk-VOUGDY2O.js";
7
7
  import {
8
8
  toWireTargets
9
- } from "./chunk-HV4DWKBI.js";
9
+ } from "./chunk-O7EMWEVJ.js";
10
10
  import {
11
11
  toWireAttachments
12
- } from "./chunk-CKNAH5TG.js";
13
- import "./chunk-GELJ2MQR.js";
14
- import "./chunk-WT4PO4A3.js";
12
+ } from "./chunk-U24EACC4.js";
13
+ import "./chunk-7CZQDZ2K.js";
14
+ import "./chunk-DULFP3MK.js";
15
15
  import "./chunk-SAS5OB7F.js";
16
16
 
17
17
  // src/tools/run-plan.ts
@@ -36,4 +36,4 @@ async function handleRunPlan(params) {
36
36
  export {
37
37
  handleRunPlan
38
38
  };
39
- //# sourceMappingURL=run-plan-T4ZYOZGA.js.map
39
+ //# sourceMappingURL=run-plan-KSXUYQT3.js.map
@@ -0,0 +1,47 @@
1
+ import {
2
+ markdownTable,
3
+ runQuery
4
+ } from "./chunk-GA5JUSPT.js";
5
+ import "./chunk-FOKVY3BK.js";
6
+ import "./chunk-7CZQDZ2K.js";
7
+ import "./chunk-DULFP3MK.js";
8
+ import "./chunk-SAS5OB7F.js";
9
+
10
+ // src/tools/run-query.ts
11
+ var RUN_QUERY_ROW_CAP = 50;
12
+ async function handleRunQuery(params) {
13
+ const result = await runQuery(params);
14
+ const headers = result.columns.map((column) => column.name);
15
+ const shown = result.rows.slice(0, RUN_QUERY_ROW_CAP);
16
+ const lines = [];
17
+ lines.push(
18
+ markdownTable({
19
+ headers,
20
+ rows: shown,
21
+ emptyMessage: "The statement ran and returned no rows."
22
+ })
23
+ );
24
+ lines.push("");
25
+ lines.push(
26
+ `Returned ${result.rows.length} row${result.rows.length === 1 ? "" : "s"} in ${result.statistics.elapsedMs}ms.`
27
+ );
28
+ if (result.rows.length > shown.length) {
29
+ lines.push(
30
+ `Showing the first ${shown.length}. Aggregate further, or export every row with \`langwatch query "<statement>" --format jsonl\`.`
31
+ );
32
+ }
33
+ if (result.truncated) {
34
+ lines.push(
35
+ "The result hit a response ceiling and was cut short, so this is not the whole answer."
36
+ );
37
+ }
38
+ for (const diagnostic of result.diagnostics) {
39
+ lines.push(`${diagnostic.code}: ${diagnostic.message}`);
40
+ }
41
+ return lines.join("\n");
42
+ }
43
+ export {
44
+ RUN_QUERY_ROW_CAP,
45
+ handleRunQuery
46
+ };
47
+ //# sourceMappingURL=run-query-4LMOQ5UW.js.map
@@ -0,0 +1,46 @@
1
+ import {
2
+ markdownTable,
3
+ runQuery
4
+ } from "./chunk-GA5JUSPT.js";
5
+ import "./chunk-FOKVY3BK.js";
6
+ import "./chunk-7CZQDZ2K.js";
7
+ import "./chunk-DULFP3MK.js";
8
+
9
+ // src/tools/run-query.ts
10
+ var RUN_QUERY_ROW_CAP = 50;
11
+ async function handleRunQuery(params) {
12
+ const result = await runQuery(params);
13
+ const headers = result.columns.map((column) => column.name);
14
+ const shown = result.rows.slice(0, RUN_QUERY_ROW_CAP);
15
+ const lines = [];
16
+ lines.push(
17
+ markdownTable({
18
+ headers,
19
+ rows: shown,
20
+ emptyMessage: "The statement ran and returned no rows."
21
+ })
22
+ );
23
+ lines.push("");
24
+ lines.push(
25
+ `Returned ${result.rows.length} row${result.rows.length === 1 ? "" : "s"} in ${result.statistics.elapsedMs}ms.`
26
+ );
27
+ if (result.rows.length > shown.length) {
28
+ lines.push(
29
+ `Showing the first ${shown.length}. Aggregate further, or export every row with \`langwatch query "<statement>" --format jsonl\`.`
30
+ );
31
+ }
32
+ if (result.truncated) {
33
+ lines.push(
34
+ "The result hit a response ceiling and was cut short, so this is not the whole answer."
35
+ );
36
+ }
37
+ for (const diagnostic of result.diagnostics) {
38
+ lines.push(`${diagnostic.code}: ${diagnostic.message}`);
39
+ }
40
+ return lines.join("\n");
41
+ }
42
+ export {
43
+ RUN_QUERY_ROW_CAP,
44
+ handleRunQuery
45
+ };
46
+ //# sourceMappingURL=run-query-BQUHIUC2.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  formatRunPlanRun
3
- } from "./chunk-JR6DJZOU.js";
3
+ } from "./chunk-RABYBFX5.js";
4
4
  import {
5
5
  toWireTargets
6
- } from "./chunk-HV4DWKBI.js";
6
+ } from "./chunk-O7EMWEVJ.js";
7
7
  import {
8
8
  runTestSuite
9
- } from "./chunk-6DJDEXET.js";
10
- import "./chunk-GELJ2MQR.js";
11
- import "./chunk-WT4PO4A3.js";
9
+ } from "./chunk-YCIUEZVK.js";
10
+ import "./chunk-7CZQDZ2K.js";
11
+ import "./chunk-DULFP3MK.js";
12
12
  import "./chunk-SAS5OB7F.js";
13
13
 
14
14
  // src/tools/run-test-suite.ts
@@ -23,4 +23,4 @@ async function handleRunTestSuite(params) {
23
23
  export {
24
24
  handleRunTestSuite
25
25
  };
26
- //# sourceMappingURL=run-test-suite-L4MZ7G4D.js.map
26
+ //# sourceMappingURL=run-test-suite-P3WLVPXC.js.map