@langwatch/mcp-server 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/.gitignore +7 -0
  2. package/.npmignore +41 -0
  3. package/CHANGELOG.md +192 -201
  4. package/CONTRIBUTING.md +10 -0
  5. package/README.md +70 -68
  6. package/dist/add-dashboard-widget-4ZC5UN73.js +50 -0
  7. package/dist/add-dashboard-widget-ACC6QYBG.js +49 -0
  8. package/dist/archive-project-KWFM3I5Z.js +19 -0
  9. package/dist/{archive-project-W3IKI7UL.js → archive-project-SPVHXK6A.js} +4 -4
  10. package/dist/{archive-run-plan-474OKHHU.js → archive-run-plan-65QN3XRX.js} +4 -4
  11. package/dist/archive-run-plan-Z4SYE6BP.js +15 -0
  12. package/dist/{archive-scenario-V5UNYK26.js → archive-scenario-A6QV5LOW.js} +4 -4
  13. package/dist/archive-scenario-FXEYQNEH.js +19 -0
  14. package/dist/archive-test-suite-5ADQ3KPQ.js +15 -0
  15. package/dist/{archive-test-suite-O7FLDMXK.js → archive-test-suite-NKZDZY3D.js} +4 -4
  16. package/dist/assign-prompt-tag-5IUZXJ2T.js +23 -0
  17. package/dist/{assign-prompt-tag-Q46WRB6P.js → assign-prompt-tag-HBZLBIFD.js} +8 -4
  18. package/dist/{chunk-OJLYYJWI.js → chunk-3OCG3QPU.js} +7 -10
  19. package/dist/chunk-3YLN3ATJ.js +241 -0
  20. package/dist/chunk-5FNCQRCX.js +91 -0
  21. package/dist/{chunk-UF6XIGYR.js → chunk-6YZUOD34.js} +2 -5
  22. package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
  23. package/dist/chunk-7VNSRCXO.js +129 -0
  24. package/dist/{chunk-G4ZAZTZW.js → chunk-B4J3PJLX.js} +11 -10
  25. package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
  26. package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
  27. package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
  28. package/dist/{chunk-WT4PO4A3.js → chunk-H6WGMG2T.js} +10 -7
  29. package/dist/{chunk-EYXMLE5X.js → chunk-HGELNIVY.js} +56 -47
  30. package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
  31. package/dist/{chunk-RVAE2MEA.js → chunk-I7ATIZED.js} +7 -7
  32. package/dist/{chunk-S4GVX36W.js → chunk-ILZDO25L.js} +7 -10
  33. package/dist/{chunk-QRO35SOM.js → chunk-J7PQKBLD.js} +652 -528
  34. package/dist/{chunk-SR6QPRIE.js → chunk-JRJPH75H.js} +7 -13
  35. package/dist/chunk-K2I7Z3LZ.js +28 -0
  36. package/dist/{chunk-UFOYFYI7.js → chunk-NKMTIHIJ.js} +6 -9
  37. package/dist/{chunk-HV4DWKBI.js → chunk-O7EMWEVJ.js} +2 -4
  38. package/dist/{chunk-56OGTS24.js → chunk-PTDR56Z3.js} +4 -11
  39. package/dist/{chunk-JR6DJZOU.js → chunk-RABYBFX5.js} +4 -10
  40. package/dist/chunk-SUPUUC4W.js +64 -0
  41. package/dist/{chunk-JTQJRNFJ.js → chunk-SXFC3FNH.js} +4 -4
  42. package/dist/{chunk-CKNAH5TG.js → chunk-U24EACC4.js} +3 -10
  43. package/dist/chunk-UNJM3BIL.js +21 -0
  44. package/dist/{chunk-QAMP3CGR.js → chunk-UTJCWXPZ.js} +4 -4
  45. package/dist/chunk-UWLE5T2F.js +312 -0
  46. package/dist/{chunk-6DJDEXET.js → chunk-VMWJD732.js} +6 -12
  47. package/dist/{chunk-7E4FZIYJ.js → chunk-XUIJYNRJ.js} +1 -1
  48. package/dist/chunk-Y34DHR5K.js +67 -0
  49. package/dist/chunk-YCARO42Z.js +516 -0
  50. package/dist/config-EAKW6F26.js +16 -0
  51. package/dist/config.cjs +109 -0
  52. package/dist/config.js +5 -4
  53. package/dist/{create-agent-JFJ2K6X3.js → create-agent-AYZ3LB3V.js} +4 -4
  54. package/dist/create-agent-S5ZBCEFT.js +23 -0
  55. package/dist/create-annotation-LHNCLHYP.js +29 -0
  56. package/dist/{create-annotation-EUXXQ6NS.js → create-annotation-VUSXULQK.js} +10 -5
  57. package/dist/{create-api-key-BGBB76JX.js → create-api-key-NNYKARMG.js} +5 -7
  58. package/dist/create-api-key-T4KSNPKB.js +24 -0
  59. package/dist/create-dashboard-DHVFMEU4.js +18 -0
  60. package/dist/{create-dashboard-Z76AIPLS.js → create-dashboard-WTKKS5Z6.js} +4 -4
  61. package/dist/{create-dataset-FD5VAXU4.js → create-dataset-2MC4SD4O.js} +6 -6
  62. package/dist/create-dataset-LUP5PVDM.js +22 -0
  63. package/dist/create-dataset-records-NSKBZP3G.js +20 -0
  64. package/dist/{create-dataset-records-WQUXXOHI.js → create-dataset-records-W4GLN2FV.js} +5 -7
  65. package/dist/{create-evaluator-6NV33Z52.js → create-evaluator-643G6LXL.js} +4 -4
  66. package/dist/create-evaluator-HMTYO5SS.js +27 -0
  67. package/dist/create-mcp-server.cjs +9513 -0
  68. package/dist/create-mcp-server.js +2647 -10
  69. package/dist/create-project-6N7PIYRY.js +44 -0
  70. package/dist/{create-project-ZQ7TFIO2.js → create-project-KAIC46UY.js} +4 -4
  71. package/dist/{create-prompt-BS6QRCUU.js → create-prompt-E67LXIYT.js} +5 -7
  72. package/dist/create-prompt-PKJ7EDRR.js +37 -0
  73. package/dist/create-prompt-tag-4YO3FSJ3.js +17 -0
  74. package/dist/{create-prompt-tag-FCQ5ELSQ.js → create-prompt-tag-OPQUEXWB.js} +3 -3
  75. package/dist/create-scenario-5PJBMAXO.js +33 -0
  76. package/dist/{create-scenario-DRPTPXU3.js → create-scenario-UEM77OE7.js} +5 -5
  77. package/dist/{create-test-suite-ZIZCCFJ4.js → create-test-suite-4IPXVSFQ.js} +6 -6
  78. package/dist/create-test-suite-SZEPVXSE.js +36 -0
  79. package/dist/create-trigger-5HZSCRAN.js +49 -0
  80. package/dist/create-trigger-PRELMT6J.js +48 -0
  81. package/dist/delete-agent-JUIZWAXG.js +18 -0
  82. package/dist/{delete-agent-SA4JMUZF.js → delete-agent-QMEK3XHK.js} +4 -4
  83. package/dist/delete-annotation-HY3O2OGR.js +17 -0
  84. package/dist/{delete-annotation-X3KKK7QY.js → delete-annotation-VKIQWUYW.js} +4 -4
  85. package/dist/delete-dashboard-76N66XXL.js +18 -0
  86. package/dist/{delete-dashboard-LYMRPF27.js → delete-dashboard-JVIVHNJM.js} +4 -4
  87. package/dist/delete-dataset-HQCR66MG.js +18 -0
  88. package/dist/{delete-dataset-W6EZ44HY.js → delete-dataset-WKRUW4FP.js} +5 -7
  89. package/dist/{delete-dataset-records-7CNOTALB.js → delete-dataset-records-C2IQFFVQ.js} +5 -7
  90. package/dist/delete-dataset-records-SDUHQLLM.js +19 -0
  91. package/dist/delete-evaluator-4SNSCLEE.js +16 -0
  92. package/dist/delete-evaluator-QP3QHTLN.js +15 -0
  93. package/dist/delete-prompt-tag-NZ4JQMYG.js +17 -0
  94. package/dist/{delete-prompt-tag-QB3OCZUV.js → delete-prompt-tag-YYQ4VMAD.js} +3 -3
  95. package/dist/{delete-workflow-NG2VXYYM.js → delete-workflow-5J46T73T.js} +4 -4
  96. package/dist/delete-workflow-JSWABL5F.js +17 -0
  97. package/dist/discover-evaluator-schema-UHWA5HVL.js +120 -0
  98. package/dist/discover-evaluator-schema-XKCLLCB3.js +118 -0
  99. package/dist/discover-scenario-schema-NOJY6S7E.js +137 -0
  100. package/dist/{discover-scenario-schema-W7KBXA4J.js → discover-scenario-schema-OOFIQKOG.js} +37 -17
  101. package/dist/{discover-schema-L6QDPON3.js → discover-schema-55YJBFGQ.js} +181 -186
  102. package/dist/discover-schema-A33SLMXW.js +442 -0
  103. package/dist/get-agent-LJQX7OF4.js +69 -0
  104. package/dist/{get-agent-7THF7HCU.js → get-agent-OTIYUFZA.js} +15 -11
  105. package/dist/get-analytics-DCS72353.js +80 -0
  106. package/dist/get-analytics-IQZKJHLW.js +79 -0
  107. package/dist/get-dashboard-5NYJEIX2.js +29 -0
  108. package/dist/{get-dashboard-P4WWVHFU.js → get-dashboard-QMTYDQAZ.js} +4 -4
  109. package/dist/get-dataset-ALSP7RTX.js +64 -0
  110. package/dist/get-dataset-X4B5JDG2.js +63 -0
  111. package/dist/{get-evaluator-RZ44UIN6.js → get-evaluator-ISMC4LLI.js} +4 -4
  112. package/dist/get-evaluator-XEUZGZCH.js +47 -0
  113. package/dist/{get-project-QSQEAB33.js → get-project-5VKROSDH.js} +4 -4
  114. package/dist/get-project-RM6FRCBK.js +26 -0
  115. package/dist/{get-prompt-GVKXF5NL.js → get-prompt-OWXJZHQQ.js} +53 -58
  116. package/dist/get-prompt-W52DY36E.js +94 -0
  117. package/dist/{get-run-plan-NY7J5GRE.js → get-run-plan-BE3M2AUX.js} +7 -9
  118. package/dist/get-run-plan-RUXQ6PAX.js +58 -0
  119. package/dist/get-scenario-RNM7BAX2.js +37 -0
  120. package/dist/{get-scenario-Q3LLQE4T.js → get-scenario-YM4ODWW6.js} +5 -5
  121. package/dist/get-simulation-run-6GIATQE5.js +69 -0
  122. package/dist/{get-simulation-run-WINEYDMK.js → get-simulation-run-LCFSMPGQ.js} +26 -22
  123. package/dist/{get-test-suite-4HKA7OKS.js → get-test-suite-GC2O7YH6.js} +5 -5
  124. package/dist/get-test-suite-P5LJ6VLF.js +48 -0
  125. package/dist/get-trace-KBRVV4NN.js +45 -0
  126. package/dist/{get-trace-RCUV7N4O.js → get-trace-SEF3FMR5.js} +11 -13
  127. package/dist/get-workflow-7PVED7JE.js +25 -0
  128. package/dist/{get-workflow-EEOC7Y45.js → get-workflow-YXULW4GC.js} +4 -4
  129. package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
  130. package/dist/{http-server-WCDUARTH.js → http-server-IR4QOS43.js} +4071 -347
  131. package/dist/index.js +58671 -37983
  132. package/dist/langwatch-api-annotations-6SA4OB4C.js +17 -0
  133. package/dist/{langwatch-api-annotations-6DHVZWUK.js → langwatch-api-annotations-TBHLCQ5R.js} +4 -4
  134. package/dist/langwatch-api-dashboards-6EO2VVZW.js +17 -0
  135. package/dist/{langwatch-api-dashboards-2KJL2M42.js → langwatch-api-dashboards-NHU5BZD7.js} +4 -4
  136. package/dist/langwatch-api-monitors-CBF3FGIM.js +47 -0
  137. package/dist/{langwatch-api-monitors-6ISFJ7WX.js → langwatch-api-monitors-YNWA2M5Y.js} +11 -16
  138. package/dist/langwatch-api-secrets-ADTOJELP.js +56 -0
  139. package/dist/langwatch-api-secrets-RNFO4LF2.js +55 -0
  140. package/dist/langwatch-api-triggers-KQDQC6L5.js +22 -0
  141. package/dist/langwatch-api-triggers-QS7HDIVW.js +23 -0
  142. package/dist/{langwatch-api-workflows-6UJL5U4Z.js → langwatch-api-workflows-OKC4FXIF.js} +4 -4
  143. package/dist/langwatch-api-workflows-XGJE6SR5.js +15 -0
  144. package/dist/{list-agents-AMVDQPQL.js → list-agents-HVYWEQMI.js} +4 -4
  145. package/dist/list-agents-RBAOCF53.js +42 -0
  146. package/dist/list-annotations-HJH4NBLD.js +38 -0
  147. package/dist/{list-annotations-6PR5NLIC.js → list-annotations-J4UAHSUN.js} +10 -5
  148. package/dist/{list-api-keys-GVPNBIHQ.js → list-api-keys-7UTJRZDG.js} +10 -5
  149. package/dist/list-api-keys-A2PMV435.js +42 -0
  150. package/dist/list-dashboard-boards-OPWROHMG.js +33 -0
  151. package/dist/list-dashboard-boards-U2GJ7GC5.js +34 -0
  152. package/dist/{list-dashboards-Z3BZKDGF.js → list-dashboards-ROSYFLDQ.js} +4 -4
  153. package/dist/list-dashboards-RQ635ZU7.js +32 -0
  154. package/dist/{list-dataset-records-O67HZ35Y.js → list-dataset-records-M5TKA6LK.js} +14 -10
  155. package/dist/list-dataset-records-WFM7F33C.js +43 -0
  156. package/dist/{list-datasets-WXZL6UMP.js → list-datasets-B5X4P7BQ.js} +9 -13
  157. package/dist/list-datasets-THUKQHPX.js +56 -0
  158. package/dist/{list-evaluators-PAX72WCN.js → list-evaluators-MYH2OVCI.js} +5 -7
  159. package/dist/list-evaluators-NLVWF6K7.js +32 -0
  160. package/dist/{list-model-providers-VVLZMLCX.js → list-model-providers-3JUGP4YI.js} +4 -4
  161. package/dist/list-model-providers-H3XKORFO.js +35 -0
  162. package/dist/{list-projects-AQVI6SUK.js → list-projects-6EJ5YYEW.js} +5 -7
  163. package/dist/list-projects-YNNSRMLC.js +40 -0
  164. package/dist/{list-prompt-tags-WZFBJOHG.js → list-prompt-tags-NVFQO6WX.js} +3 -3
  165. package/dist/list-prompt-tags-XUQTTAH4.js +23 -0
  166. package/dist/{list-prompts-BQOHRHYT.js → list-prompts-HSIMMHTF.js} +4 -6
  167. package/dist/list-prompts-IRI6AIXO.js +30 -0
  168. package/dist/{list-run-plans-UBAU2DGH.js → list-run-plans-PX2XI6EK.js} +5 -5
  169. package/dist/list-run-plans-QALLCN2K.js +45 -0
  170. package/dist/{list-scenarios-MS4IUIVM.js → list-scenarios-QZRPVHS4.js} +13 -11
  171. package/dist/list-scenarios-SSJQEMJP.js +45 -0
  172. package/dist/list-simulation-runs-KNOLGMDV.js +53 -0
  173. package/dist/{list-simulation-runs-D6YF4ZOU.js → list-simulation-runs-OEADLLQR.js} +12 -8
  174. package/dist/list-test-suites-ANAQBLDG.js +34 -0
  175. package/dist/{list-test-suites-L7R2O6DR.js → list-test-suites-N4WVLBKK.js} +4 -4
  176. package/dist/list-trigger-fires-JV3WFYYG.js +19 -0
  177. package/dist/list-trigger-fires-WTW4DVIW.js +20 -0
  178. package/dist/list-triggers-SQNIG35Q.js +45 -0
  179. package/dist/list-triggers-V4Y356AK.js +46 -0
  180. package/dist/{list-workflows-6MV4XJHF.js → list-workflows-IMSX7SXU.js} +5 -7
  181. package/dist/list-workflows-ZHTX5LCL.js +33 -0
  182. package/dist/{rename-prompt-tag-K5LQ4CY6.js → rename-prompt-tag-IQI7MHOI.js} +3 -3
  183. package/dist/rename-prompt-tag-PA2BRIE6.js +18 -0
  184. package/dist/{rename-test-suite-NTYHAO5X.js → rename-test-suite-4J7UX5S2.js} +4 -4
  185. package/dist/rename-test-suite-NNVLMLKY.js +20 -0
  186. package/dist/report-issue-AS34ZMJF.js +898 -0
  187. package/dist/{report-issue-RHZZ33IS.js → report-issue-DCZFLGDO.js} +81 -67
  188. package/dist/{rerun-run-plan-MUDWJBE4.js → rerun-run-plan-TG2V4WM4.js} +5 -5
  189. package/dist/rerun-run-plan-ZI5OY3VA.js +21 -0
  190. package/dist/revoke-api-key-3J3ZA4UB.js +15 -0
  191. package/dist/{revoke-api-key-6LAZ3QZZ.js → revoke-api-key-SFMEFWJC.js} +4 -4
  192. package/dist/run-agent-W4VJP72Z.js +75 -0
  193. package/dist/run-agent-YNV6ZHW4.js +74 -0
  194. package/dist/run-plan-6C77GWG4.js +38 -0
  195. package/dist/{run-plan-T4ZYOZGA.js → run-plan-PAARQSI4.js} +7 -7
  196. package/dist/run-query-KJDH544C.js +47 -0
  197. package/dist/run-query-T4QW2Z5O.js +46 -0
  198. package/dist/{run-test-suite-L4MZ7G4D.js → run-test-suite-SQJELEZX.js} +6 -6
  199. package/dist/run-test-suite-STB6NUJM.js +25 -0
  200. package/dist/{run-workflow-DFIS23AP.js → run-workflow-D6PQNBI6.js} +4 -4
  201. package/dist/run-workflow-SP32SO5M.js +36 -0
  202. package/dist/search-traces-HCBGOG6R.js +170 -0
  203. package/dist/search-traces-HSTQ6WTQ.js +171 -0
  204. package/dist/{set-model-provider-XRNMFOVR.js → set-model-provider-GF7NXUJA.js} +4 -4
  205. package/dist/set-model-provider-KDQ7C4EZ.js +33 -0
  206. package/dist/{update-agent-DUWNYBNA.js → update-agent-DWG43T2P.js} +4 -4
  207. package/dist/update-agent-MXNOBS4H.js +20 -0
  208. package/dist/update-dashboard-widget-CJKJLCDY.js +71 -0
  209. package/dist/update-dashboard-widget-CYQDS2NR.js +70 -0
  210. package/dist/update-dataset-DQH3OHOU.js +22 -0
  211. package/dist/{update-dataset-YSOMDCOB.js → update-dataset-SQZ6T4WX.js} +6 -6
  212. package/dist/{update-dataset-record-DEA2ITYR.js → update-dataset-record-3AT4IPBC.js} +4 -4
  213. package/dist/update-dataset-record-7PLDGTMR.js +19 -0
  214. package/dist/update-evaluator-4LFTKFPT.js +24 -0
  215. package/dist/{update-evaluator-NH7Q5GWV.js → update-evaluator-IGTX6PX4.js} +4 -4
  216. package/dist/{update-project-Q26FBSYH.js → update-project-PLJIOZS6.js} +4 -4
  217. package/dist/update-project-QVHSJRUP.js +24 -0
  218. package/dist/update-prompt-GDKRYJI3.js +140 -0
  219. package/dist/{update-prompt-ZQQ2C3KU.js → update-prompt-MY263DYF.js} +27 -29
  220. package/dist/update-scenario-7KA3JDXA.js +34 -0
  221. package/dist/{update-scenario-WUX34JAR.js → update-scenario-MOHRQKAQ.js} +5 -5
  222. package/package.json +35 -39
  223. package/pyproject.toml +8 -8
  224. package/src/config.d.ts +4 -0
  225. package/src/config.ts +20 -29
  226. package/src/create-mcp-server.ts +755 -609
  227. package/src/documentation-fetch.ts +21 -20
  228. package/src/http-security.ts +166 -135
  229. package/src/http-server.ts +189 -224
  230. package/src/index.ts +14 -16
  231. package/src/langwatch-api-agents.ts +18 -21
  232. package/src/langwatch-api-annotations.ts +11 -12
  233. package/src/langwatch-api-api-keys.ts +8 -9
  234. package/src/langwatch-api-boards.ts +46 -0
  235. package/src/langwatch-api-dashboard-widgets.ts +112 -0
  236. package/src/langwatch-api-dashboards.ts +13 -10
  237. package/src/langwatch-api-datasets.ts +98 -32
  238. package/src/langwatch-api-evaluators.ts +13 -19
  239. package/src/langwatch-api-model-providers.ts +4 -4
  240. package/src/langwatch-api-monitors.ts +14 -18
  241. package/src/langwatch-api-projects.ts +27 -9
  242. package/src/langwatch-api-query.ts +114 -0
  243. package/src/langwatch-api-run-plans.ts +12 -29
  244. package/src/langwatch-api-scenarios.ts +9 -11
  245. package/src/langwatch-api-secrets.ts +31 -24
  246. package/src/langwatch-api-simulation-runs.ts +6 -8
  247. package/src/langwatch-api-test-suites.ts +14 -33
  248. package/src/langwatch-api-triggers.ts +96 -34
  249. package/src/langwatch-api-workflows.ts +9 -9
  250. package/src/langwatch-api.ts +108 -124
  251. package/src/public-http-request.ts +21 -12
  252. package/src/schemas/analytics-metrics.ts +3 -15
  253. package/src/schemas/create-dataset.ts +3 -4
  254. package/src/schemas/run-plan.ts +13 -29
  255. package/src/schemas/suite-fields.ts +6 -23
  256. package/src/schemas/triggers.ts +365 -0
  257. package/src/tools/add-dashboard-widget.ts +63 -0
  258. package/src/tools/archive-project.ts +2 -4
  259. package/src/tools/archive-run-plan.ts +2 -4
  260. package/src/tools/archive-scenario.ts +2 -4
  261. package/src/tools/archive-test-suite.ts +2 -4
  262. package/src/tools/assign-prompt-tag.ts +6 -2
  263. package/src/tools/create-agent.ts +1 -1
  264. package/src/tools/create-annotation.ts +7 -2
  265. package/src/tools/create-api-key.ts +4 -6
  266. package/src/tools/create-dashboard.ts +1 -1
  267. package/src/tools/create-dataset-records.ts +4 -8
  268. package/src/tools/create-dataset.ts +5 -7
  269. package/src/tools/create-evaluator.ts +3 -5
  270. package/src/tools/create-project.ts +2 -2
  271. package/src/tools/create-prompt-tag.ts +2 -4
  272. package/src/tools/create-prompt.ts +9 -18
  273. package/src/tools/create-scenario.ts +5 -7
  274. package/src/tools/create-test-suite.ts +4 -9
  275. package/src/tools/create-trigger.ts +55 -0
  276. package/src/tools/dashboard-exists.ts +25 -0
  277. package/src/tools/dashboard-widget-queries.ts +32 -0
  278. package/src/tools/delete-agent.ts +1 -1
  279. package/src/tools/delete-annotation.ts +1 -1
  280. package/src/tools/delete-dashboard.ts +1 -1
  281. package/src/tools/delete-dataset-records.ts +4 -8
  282. package/src/tools/delete-dataset.ts +3 -7
  283. package/src/tools/delete-evaluator.ts +4 -6
  284. package/src/tools/delete-prompt-tag.ts +2 -4
  285. package/src/tools/delete-workflow.ts +1 -1
  286. package/src/tools/discover-evaluator-schema.ts +34 -25
  287. package/src/tools/discover-scenario-schema.ts +41 -21
  288. package/src/tools/discover-schema.ts +149 -27
  289. package/src/tools/experiment-run-status.ts +2 -8
  290. package/src/tools/format-dataset-mutation.ts +5 -10
  291. package/src/tools/format-run-plan.ts +7 -21
  292. package/src/tools/format-scenario.ts +2 -4
  293. package/src/tools/format-suite-details.ts +6 -12
  294. package/src/tools/get-agent.ts +15 -6
  295. package/src/tools/get-analytics.ts +52 -46
  296. package/src/tools/get-dashboard.ts +1 -1
  297. package/src/tools/get-dataset.ts +34 -16
  298. package/src/tools/get-evaluator.ts +4 -11
  299. package/src/tools/get-experiment-results.ts +219 -186
  300. package/src/tools/get-project.ts +2 -4
  301. package/src/tools/get-prompt.ts +63 -84
  302. package/src/tools/get-run-plan.ts +4 -6
  303. package/src/tools/get-scenario.ts +4 -6
  304. package/src/tools/get-simulation-run.ts +27 -24
  305. package/src/tools/get-test-suite.ts +2 -5
  306. package/src/tools/get-trace.ts +16 -17
  307. package/src/tools/get-workflow.ts +1 -1
  308. package/src/tools/list-agents.ts +1 -1
  309. package/src/tools/list-annotations.ts +8 -5
  310. package/src/tools/list-api-keys.ts +7 -2
  311. package/src/tools/list-dashboard-boards.ts +28 -0
  312. package/src/tools/list-dashboards.ts +1 -1
  313. package/src/tools/list-dataset-records.ts +8 -6
  314. package/src/tools/list-datasets.ts +12 -23
  315. package/src/tools/list-evaluators.ts +4 -8
  316. package/src/tools/list-experiment-runs.ts +5 -9
  317. package/src/tools/list-experiments.ts +5 -11
  318. package/src/tools/list-model-providers.ts +3 -5
  319. package/src/tools/list-projects.ts +2 -4
  320. package/src/tools/list-prompt-tags.ts +3 -3
  321. package/src/tools/list-prompts.ts +4 -8
  322. package/src/tools/list-run-plans.ts +2 -2
  323. package/src/tools/list-scenarios.ts +14 -15
  324. package/src/tools/list-simulation-runs.ts +8 -4
  325. package/src/tools/list-test-suites.ts +1 -1
  326. package/src/tools/list-trigger-fires.ts +17 -0
  327. package/src/tools/list-triggers.ts +39 -0
  328. package/src/tools/list-workflows.ts +2 -4
  329. package/src/tools/rename-prompt-tag.ts +1 -1
  330. package/src/tools/rename-test-suite.ts +2 -5
  331. package/src/tools/report-issue.ts +5 -9
  332. package/src/tools/rerun-run-plan.ts +2 -5
  333. package/src/tools/revoke-api-key.ts +2 -4
  334. package/src/tools/run-agent.ts +29 -26
  335. package/src/tools/run-experiment.ts +36 -37
  336. package/src/tools/run-plan.ts +4 -7
  337. package/src/tools/run-query.ts +47 -0
  338. package/src/tools/run-test-suite.ts +4 -7
  339. package/src/tools/run-workflow.ts +2 -5
  340. package/src/tools/search-traces.ts +161 -47
  341. package/src/tools/set-model-provider.ts +4 -6
  342. package/src/tools/test-agent.ts +2 -2
  343. package/src/tools/update-agent.ts +1 -1
  344. package/src/tools/update-dashboard-widget.ts +97 -0
  345. package/src/tools/update-dataset-record.ts +1 -1
  346. package/src/tools/update-dataset.ts +5 -7
  347. package/src/tools/update-evaluator.ts +3 -5
  348. package/src/tools/update-project.ts +1 -1
  349. package/src/tools/update-prompt.ts +44 -59
  350. package/src/tools/update-scenario.ts +5 -7
  351. package/src/tools/update-test-suite.ts +6 -11
  352. package/src/utils/date-parsing.ts +1 -1
  353. package/src/utils/escape-markdown.ts +3 -8
  354. package/src/utils/format-evaluations.ts +6 -6
  355. package/src/utils/markdown-table.ts +58 -0
  356. package/src/utils/trace-id-shape.ts +20 -0
  357. package/tsconfig.app.json +24 -0
  358. package/tsconfig.json +14 -12
  359. package/vitest.integration.config.js +10 -0
  360. package/vitest.scenario.config.js +9 -0
  361. package/.eslintrc.cjs +0 -36
  362. package/dist/chunk-AN4OUA4D.js +0 -86
  363. package/dist/chunk-GELJ2MQR.js +0 -226
  364. package/dist/chunk-K37ZNPXK.js +0 -24
  365. package/dist/config.d.ts +0 -17
  366. package/dist/create-mcp-server.d.ts +0 -10
  367. package/dist/delete-evaluator-RKYC4TNB.js +0 -16
  368. package/dist/discover-evaluator-schema-ESSHQGPY.js +0 -1912
  369. package/dist/get-analytics-R6AZD3AW.js +0 -73
  370. package/dist/get-dataset-AKTYSQDI.js +0 -49
  371. package/dist/index.d.ts +0 -2
  372. package/dist/langwatch-api-secrets-OEBD6GBU.js +0 -41
  373. package/dist/langwatch-api-triggers-5E6DDGX6.js +0 -31
  374. package/dist/run-agent-CAGWGTYT.js +0 -72
  375. package/dist/search-traces-4XTJYXIK.js +0 -79
  376. package/src/__tests__/agent-tools.unit.test.ts +0 -257
  377. package/src/__tests__/all-tools.integration.test.ts +0 -1872
  378. package/src/__tests__/config.unit.test.ts +0 -202
  379. package/src/__tests__/datasets.integration.test.ts +0 -620
  380. package/src/__tests__/datasets.unit.test.ts +0 -244
  381. package/src/__tests__/date-parsing.unit.test.ts +0 -78
  382. package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
  383. package/src/__tests__/discover-schema.unit.test.ts +0 -118
  384. package/src/__tests__/docker.integration.test.ts +0 -318
  385. package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
  386. package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
  387. package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
  388. package/src/__tests__/experiment-status.unit.test.ts +0 -194
  389. package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
  390. package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
  391. package/src/__tests__/http-security-origin.unit.test.ts +0 -97
  392. package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
  393. package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
  394. package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
  395. package/src/__tests__/http-server-origin.integration.test.ts +0 -169
  396. package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
  397. package/src/__tests__/http-transport.integration.test.ts +0 -395
  398. package/src/__tests__/integration.integration.test.ts +0 -284
  399. package/src/__tests__/langwatch-api.unit.test.ts +0 -661
  400. package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
  401. package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
  402. package/src/__tests__/prompt-response-types.unit.test.ts +0 -51
  403. package/src/__tests__/prompts.integration.test.ts +0 -736
  404. package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
  405. package/src/__tests__/report-issue.integration.test.ts +0 -147
  406. package/src/__tests__/run-plan-tools.unit.test.ts +0 -565
  407. package/src/__tests__/scenario-tools.integration.test.ts +0 -286
  408. package/src/__tests__/scenario-tools.unit.test.ts +0 -207
  409. package/src/__tests__/schemas.unit.test.ts +0 -85
  410. package/src/__tests__/simulation-run-tools.unit.test.ts +0 -116
  411. package/src/__tests__/support/http-server-harness.ts +0 -138
  412. package/src/__tests__/test-suite-tools.unit.test.ts +0 -615
  413. package/src/__tests__/tools.integration.test.ts +0 -896
  414. package/src/schemas/filter-fields.ts +0 -119
  415. package/src/schemas/index.ts +0 -9
@@ -1,8 +1,61 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-H6WGMG2T.js";
4
4
  import "./chunk-SAS5OB7F.js";
5
5
 
6
+ // ../../packages/redaction/src/piiEntities.ts
7
+ var ESSENTIAL_PII_ENTITIES = [
8
+ "EMAIL_ADDRESS",
9
+ "IP_ADDRESS",
10
+ "CREDIT_CARD",
11
+ "IBAN_CODE",
12
+ "CRYPTO",
13
+ "PHONE_NUMBER",
14
+ "US_SSN",
15
+ "US_ITIN",
16
+ "US_PASSPORT",
17
+ "US_BANK_NUMBER",
18
+ "US_DRIVER_LICENSE",
19
+ "MEDICAL_LICENSE",
20
+ "UK_NHS",
21
+ "SG_NRIC_FIN",
22
+ "AU_ABN",
23
+ "AU_TFN",
24
+ "IN_PAN",
25
+ "IN_AADHAAR",
26
+ "BR_CPF"
27
+ ];
28
+ var PRESIDIO_STRICT_ENTITIES = [
29
+ "CREDIT_CARD",
30
+ "CRYPTO",
31
+ "EMAIL_ADDRESS",
32
+ "IBAN_CODE",
33
+ "IP_ADDRESS",
34
+ "LOCATION",
35
+ "PERSON",
36
+ "PHONE_NUMBER",
37
+ "MEDICAL_LICENSE",
38
+ "US_BANK_NUMBER",
39
+ "US_DRIVER_LICENSE",
40
+ "US_ITIN",
41
+ "US_PASSPORT",
42
+ "US_SSN",
43
+ "UK_NHS",
44
+ "SG_NRIC_FIN",
45
+ "AU_ABN",
46
+ "AU_ACN",
47
+ "AU_TFN",
48
+ "AU_MEDICARE",
49
+ "IN_PAN",
50
+ "IN_AADHAAR",
51
+ "IN_VEHICLE_REGISTRATION",
52
+ "IN_VOTER",
53
+ "IN_PASSPORT"
54
+ ];
55
+ var STRICT_ONLY_PII_ENTITIES = PRESIDIO_STRICT_ENTITIES.filter(
56
+ (entity) => !new Set(ESSENTIAL_PII_ENTITIES).has(entity)
57
+ );
58
+
6
59
  // ../../packages/redaction/src/markers.ts
7
60
  var SECRET_MARKER = "[SECRET]";
8
61
  function formatPiiMarker(entity) {
@@ -42,18 +95,10 @@ function countCharClasses(value) {
42
95
  var TOKEN_START = String.raw`(?<![A-Za-z0-9_-])`;
43
96
  var TOKEN_END = String.raw`(?![A-Za-z0-9_-])`;
44
97
  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.
98
+ // LangWatch's own token prefixes, minted by modules/api-key/contract/src/api-key.tokens.ts.
99
+ // The 3-body-char floor keeps a bare prefix (printed alone in docs/errors) from matching as a
100
+ // key. Duplicated here rather than imported so this package stays dependency-free; a test pins
101
+ // them to the constants so the two cannot drift.
57
102
  String.raw`(?:sk|ik|pat|vk)-lw-[A-Za-z0-9_-]{3,}`,
58
103
  // GitLab personal, project, deploy, runner and agent tokens.
59
104
  String.raw`gl(?:pat|rt|dt|soat|ptt|cbt|imt|agent|ffct)-[A-Za-z0-9_-]{20,}`,
@@ -339,24 +384,15 @@ var VALUE_RULES = [
339
384
  {
340
385
  id: "url_credentials",
341
386
  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.
387
+ // scheme://user:password@host -> keep everything but the password. The scheme sits in a
388
+ // lookbehind so the engine anchors on the literal `:` instead of scanning from every
389
+ // lowercase letter: unanchored this cost 6.2ms on a 200KB payload (more than every other
390
+ // rule combined); anchored, 0.09ms. The scheme stays outside the match and untouched.
355
391
  regex: /(?<=[a-z][a-z0-9+.-]{0,30})(:\/\/[^\s:@/]+:)([^\s:@/]+)(@)/gi,
356
392
  // The same scheme the lookbehind reads, so a reported match still spans the
357
393
  // whole URL rather than starting at the colon.
358
394
  precededBy: /[a-z][a-z0-9+.-]{0,30}$/i,
359
- render: (_m, prefix, _password, at) => `${prefix}${REPLACEMENT}${at}`
395
+ render: (...[, prefix = "", , at = ""]) => `${prefix}${REPLACEMENT}${at}`
360
396
  },
361
397
  {
362
398
  id: "bearer_token",
@@ -397,23 +433,13 @@ var VALUE_RULES = [
397
433
  precondition: (text) => text.includes("_")
398
434
  },
399
435
  {
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
436
+ // The layer that catches a vendor nobody has heard of: a short prefix, a separator and a
437
+ // high-entropy body, needing no vendor knowledge. The prefix may be upper, lower or mixed
438
+ // case since plenty of vendors mint `LW_…` or `Xy_…`; that also makes it the shape of a
439
+ // screaming-snake env var NAME, but the length floor and character-mix gate turn those away.
440
+ // A declined match consumes the text it spanned, so in principle an outer match could hide
441
+ // secret material further inside the same token. It cannot in practice: a body containing
442
+ // key material inherits that material's entropy and mix, so the outer match is accepted and
417
443
  // the secret is redacted along with its prefix.
418
444
  id: "shaped_api_key",
419
445
  description: "High-entropy API key with a vendor-style prefix",
@@ -431,26 +457,14 @@ var VALUE_RULES = [
431
457
  // they write "key:".
432
458
  id: "sensitive_assignment",
433
459
  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.
460
+ // `key is <value>` was rejected as a strict separator: on real traces it caught zero
461
+ // credentials while being the sole source of prose false-positives. Whitespace is accepted
462
+ // instead on a higher bar — the value must look like key material (see `isKeyMaterial`) —
463
+ // which is what keeps `Authorization <token>` and `key <token>` while rejecting prose.
464
+ // The value class excludes backslash: span content arrives JSON-encoded, so a literal `\n`
465
+ // is two characters, and letting a value run through one carried it across logical lines and
466
+ // past the `$VAR`/code-expression guards — `api_key = $OPENAI_API_KEY` was kept with a real
467
+ // newline and redacted with an escaped one.
454
468
  regex: new RegExp(
455
469
  `((?:^|[\\W_])(?:${CREDENTIAL_KEYWORD})(?:\\s+[A-Za-z]{1,8}){0,2}["'\`]?(?:\\s*[:=]{1,2}\\s*|[ \\t?-]+)["'\`]?)([^\\s"'\`,;<>(){}\\[\\]\\\\]{${CONTEXT_VALUE_MIN_LENGTH},})`,
456
470
  "gi"
@@ -609,7 +623,7 @@ function collectSensitiveEnvValues(env) {
609
623
  if (!ENV_SECRET_NAME_REGEX.test(name)) continue;
610
624
  values.add(trimmed);
611
625
  }
612
- return [...values].sort((a, b) => b.length - a.length);
626
+ return [...values].toSorted((a, b) => b.length - a.length);
613
627
  }
614
628
  var EMAIL_REGEX = /[A-Za-z0-9._%+-]{1,64}@[A-Za-z0-9.-]{1,253}\.[A-Za-z]{2,24}/g;
615
629
  var INTL_PHONE_REGEX = /(?<![\w.+-])\+[1-9]\d{0,2}(?:[\s.-]?(?:\(\d{1,4}\)[\s.-]?)?\d{1,4}){1,5}(?!\d)/g;
@@ -829,7 +843,7 @@ function redactReport(params) {
829
843
  async function deliverReport(report, params) {
830
844
  const config = getConfig();
831
845
  const endpoint = config.endpoint.replace(/\/+$/, "");
832
- const response = await fetch(`${endpoint}/api/bug-reports`, {
846
+ const response = await fetch(`${endpoint}/api/v1/bug-reports`, {
833
847
  method: "POST",
834
848
  headers: {
835
849
  "content-type": "application/json",
@@ -882,4 +896,4 @@ async function handleReportIssue(params) {
882
896
  export {
883
897
  handleReportIssue
884
898
  };
885
- //# sourceMappingURL=report-issue-RHZZ33IS.js.map
899
+ //# sourceMappingURL=report-issue-DCZFLGDO.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-PTDR56Z3.js";
7
+ import "./chunk-UWLE5T2F.js";
8
+ import "./chunk-H6WGMG2T.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-TG2V4WM4.js.map
@@ -0,0 +1,21 @@
1
+ import {
2
+ formatRunPlanRun
3
+ } from "./chunk-RABYBFX5.js";
4
+ import {
5
+ rerunRunPlan
6
+ } from "./chunk-PTDR56Z3.js";
7
+ import "./chunk-UWLE5T2F.js";
8
+ import "./chunk-H6WGMG2T.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-ZI5OY3VA.js.map
@@ -0,0 +1,15 @@
1
+ import {
2
+ revokeApiKey
3
+ } from "./chunk-UNJM3BIL.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.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-3J3ZA4UB.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-UNJM3BIL.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.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-SFMEFWJC.js.map
@@ -0,0 +1,75 @@
1
+ import {
2
+ runAgent
3
+ } from "./chunk-HGELNIVY.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.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-W4VJP72Z.js.map
@@ -0,0 +1,74 @@
1
+ import {
2
+ runAgent
3
+ } from "./chunk-YCARO42Z.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.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-YNV6ZHW4.js.map
@@ -0,0 +1,38 @@
1
+ import {
2
+ formatRunPlanRun
3
+ } from "./chunk-RABYBFX5.js";
4
+ import {
5
+ runRunPlan
6
+ } from "./chunk-PTDR56Z3.js";
7
+ import {
8
+ toWireTargets
9
+ } from "./chunk-O7EMWEVJ.js";
10
+ import {
11
+ toWireAttachments
12
+ } from "./chunk-U24EACC4.js";
13
+ import "./chunk-UWLE5T2F.js";
14
+ import "./chunk-H6WGMG2T.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-6C77GWG4.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-PTDR56Z3.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-UWLE5T2F.js";
14
+ import "./chunk-H6WGMG2T.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-PAARQSI4.js.map
@@ -0,0 +1,47 @@
1
+ import {
2
+ markdownTable,
3
+ runQuery
4
+ } from "./chunk-SUPUUC4W.js";
5
+ import "./chunk-FOKVY3BK.js";
6
+ import "./chunk-UWLE5T2F.js";
7
+ import "./chunk-H6WGMG2T.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-KJDH544C.js.map
@@ -0,0 +1,46 @@
1
+ import {
2
+ markdownTable,
3
+ runQuery
4
+ } from "./chunk-SUPUUC4W.js";
5
+ import "./chunk-FOKVY3BK.js";
6
+ import "./chunk-UWLE5T2F.js";
7
+ import "./chunk-H6WGMG2T.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-T4QW2Z5O.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-VMWJD732.js";
10
+ import "./chunk-UWLE5T2F.js";
11
+ import "./chunk-H6WGMG2T.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-SQJELEZX.js.map
@@ -0,0 +1,25 @@
1
+ import {
2
+ formatRunPlanRun
3
+ } from "./chunk-RABYBFX5.js";
4
+ import {
5
+ toWireTargets
6
+ } from "./chunk-O7EMWEVJ.js";
7
+ import {
8
+ runTestSuite
9
+ } from "./chunk-VMWJD732.js";
10
+ import "./chunk-UWLE5T2F.js";
11
+ import "./chunk-H6WGMG2T.js";
12
+
13
+ // src/tools/run-test-suite.ts
14
+ async function handleRunTestSuite(params) {
15
+ const { targets, ...rest } = params;
16
+ const result = await runTestSuite({
17
+ ...rest,
18
+ targets: toWireTargets(targets)
19
+ });
20
+ return formatRunPlanRun(result);
21
+ }
22
+ export {
23
+ handleRunTestSuite
24
+ };
25
+ //# sourceMappingURL=run-test-suite-STB6NUJM.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  runWorkflow
3
- } from "./chunk-UFOYFYI7.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-NKMTIHIJ.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/run-workflow.ts
@@ -34,4 +34,4 @@ async function handleRunWorkflow(params) {
34
34
  export {
35
35
  handleRunWorkflow
36
36
  };
37
- //# sourceMappingURL=run-workflow-DFIS23AP.js.map
37
+ //# sourceMappingURL=run-workflow-D6PQNBI6.js.map