@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
@@ -0,0 +1,32 @@
1
+ import {
2
+ listDashboards
3
+ } from "./chunk-ILZDO25L.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
+
7
+ // src/tools/list-dashboards.ts
8
+ async function handleListDashboards() {
9
+ const result = await listDashboards();
10
+ const dashboards = result.data;
11
+ if (!Array.isArray(dashboards) || dashboards.length === 0) {
12
+ return "No dashboards found in this project.\n\n> Tip: Use `platform_create_dashboard` to create a new dashboard.";
13
+ }
14
+ const lines = [];
15
+ lines.push(`# Dashboards (${dashboards.length} total)
16
+ `);
17
+ for (const d of dashboards) {
18
+ lines.push(`## ${d.name}`);
19
+ lines.push(`**ID**: ${d.id}`);
20
+ lines.push(`**Graphs**: ${d.graphCount}`);
21
+ lines.push(`**Updated**: ${d.updatedAt}`);
22
+ lines.push("");
23
+ }
24
+ lines.push(
25
+ "> Use `platform_get_dashboard` with the ID to see dashboard details including graphs."
26
+ );
27
+ return lines.join("\n");
28
+ }
29
+ export {
30
+ handleListDashboards
31
+ };
32
+ //# sourceMappingURL=list-dashboards-RQ635ZU7.js.map
@@ -1,11 +1,11 @@
1
- import {
2
- escapeMarkdown
3
- } from "./chunk-NUFPTHKU.js";
4
1
  import {
5
2
  listDatasetRecords
6
- } from "./chunk-AN4OUA4D.js";
7
- import "./chunk-GELJ2MQR.js";
8
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-7VNSRCXO.js";
4
+ import {
5
+ escapeMarkdown
6
+ } from "./chunk-FOKVY3BK.js";
7
+ import "./chunk-UWLE5T2F.js";
8
+ import "./chunk-H6WGMG2T.js";
9
9
  import "./chunk-SAS5OB7F.js";
10
10
 
11
11
  // src/tools/list-dataset-records.ts
@@ -23,18 +23,22 @@ async function handleListDatasetRecords(params) {
23
23
  return "No records found in this dataset.";
24
24
  }
25
25
  const lines = [];
26
- lines.push(`# Records (page ${pagination.page} of ${pagination.totalPages}, ${pagination.total} total)
27
- `);
26
+ lines.push(
27
+ `# Records (page ${pagination.page} of ${pagination.totalPages}, ${pagination.total} total)
28
+ `
29
+ );
28
30
  for (const record of records) {
29
31
  lines.push(`**${escapeMarkdown(record.id)}**: ${escapeMarkdown(JSON.stringify(record.entry))}`);
30
32
  }
31
33
  if (pagination.page < pagination.totalPages) {
32
34
  lines.push("");
33
- lines.push(`> Use \`platform_list_dataset_records\` with \`page: ${pagination.page + 1}\` to see the next page.`);
35
+ lines.push(
36
+ `> Use \`platform_list_dataset_records\` with \`page: ${pagination.page + 1}\` to see the next page.`
37
+ );
34
38
  }
35
39
  return lines.join("\n");
36
40
  }
37
41
  export {
38
42
  handleListDatasetRecords
39
43
  };
40
- //# sourceMappingURL=list-dataset-records-O67HZ35Y.js.map
44
+ //# sourceMappingURL=list-dataset-records-M5TKA6LK.js.map
@@ -0,0 +1,43 @@
1
+ import {
2
+ listDatasetRecords
3
+ } from "./chunk-7VNSRCXO.js";
4
+ import {
5
+ escapeMarkdown
6
+ } from "./chunk-FOKVY3BK.js";
7
+ import "./chunk-UWLE5T2F.js";
8
+ import "./chunk-H6WGMG2T.js";
9
+
10
+ // src/tools/list-dataset-records.ts
11
+ async function handleListDatasetRecords(params) {
12
+ const response = await listDatasetRecords({
13
+ slugOrId: params.slugOrId,
14
+ page: params.page,
15
+ limit: params.limit
16
+ });
17
+ if (params.format === "json") {
18
+ return JSON.stringify(response, null, 2);
19
+ }
20
+ const { data: records, pagination } = response;
21
+ if (records.length === 0) {
22
+ return "No records found in this dataset.";
23
+ }
24
+ const lines = [];
25
+ lines.push(
26
+ `# Records (page ${pagination.page} of ${pagination.totalPages}, ${pagination.total} total)
27
+ `
28
+ );
29
+ for (const record of records) {
30
+ lines.push(`**${escapeMarkdown(record.id)}**: ${escapeMarkdown(JSON.stringify(record.entry))}`);
31
+ }
32
+ if (pagination.page < pagination.totalPages) {
33
+ lines.push("");
34
+ lines.push(
35
+ `> Use \`platform_list_dataset_records\` with \`page: ${pagination.page + 1}\` to see the next page.`
36
+ );
37
+ }
38
+ return lines.join("\n");
39
+ }
40
+ export {
41
+ handleListDatasetRecords
42
+ };
43
+ //# sourceMappingURL=list-dataset-records-WFM7F33C.js.map
@@ -1,11 +1,11 @@
1
- import {
2
- escapeMarkdown
3
- } from "./chunk-NUFPTHKU.js";
4
1
  import {
5
2
  listDatasets
6
- } from "./chunk-AN4OUA4D.js";
7
- import "./chunk-GELJ2MQR.js";
8
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-7VNSRCXO.js";
4
+ import {
5
+ escapeMarkdown
6
+ } from "./chunk-FOKVY3BK.js";
7
+ import "./chunk-UWLE5T2F.js";
8
+ import "./chunk-H6WGMG2T.js";
9
9
  import "./chunk-SAS5OB7F.js";
10
10
 
11
11
  // src/tools/list-datasets.ts
@@ -45,17 +45,13 @@ async function handleListDatasets(params = {}) {
45
45
  const colNames = ds.columnTypes.map((c) => c.name).join(", ");
46
46
  lines.push(`**Columns**: ${colNames}`);
47
47
  }
48
- lines.push(
49
- `**Records**: ${ds.recordCount ?? "unknown"}`
50
- );
48
+ lines.push(`**Records**: ${ds.recordCount ?? "unknown"}`);
51
49
  lines.push("");
52
50
  }
53
- lines.push(
54
- "> Use `platform_get_dataset` with the slug to see full dataset details and records."
55
- );
51
+ lines.push("> Use `platform_get_dataset` with the slug to see full dataset details and records.");
56
52
  return lines.join("\n");
57
53
  }
58
54
  export {
59
55
  handleListDatasets
60
56
  };
61
- //# sourceMappingURL=list-datasets-WXZL6UMP.js.map
57
+ //# sourceMappingURL=list-datasets-B5X4P7BQ.js.map
@@ -0,0 +1,56 @@
1
+ import {
2
+ listDatasets
3
+ } from "./chunk-7VNSRCXO.js";
4
+ import {
5
+ escapeMarkdown
6
+ } from "./chunk-FOKVY3BK.js";
7
+ import "./chunk-UWLE5T2F.js";
8
+ import "./chunk-H6WGMG2T.js";
9
+
10
+ // src/tools/list-datasets.ts
11
+ async function fetchAllDatasets() {
12
+ const PAGE_SIZE = 100;
13
+ const datasets = [];
14
+ let page = 1;
15
+ let total = 0;
16
+ while (true) {
17
+ const response = await listDatasets({ page, limit: PAGE_SIZE });
18
+ total = response.pagination.total;
19
+ datasets.push(...response.data);
20
+ if (datasets.length >= total || response.data.length === 0) {
21
+ break;
22
+ }
23
+ page++;
24
+ }
25
+ return { datasets, total };
26
+ }
27
+ async function handleListDatasets(params = {}) {
28
+ if (params.format === "json") {
29
+ const { datasets: datasets2, total: total2 } = await fetchAllDatasets();
30
+ return JSON.stringify({ data: datasets2, total: total2 }, null, 2);
31
+ }
32
+ const { datasets, total } = await fetchAllDatasets();
33
+ if (datasets.length === 0) {
34
+ return "No datasets found in this project.\n\n> Tip: Use `platform_create_dataset` to create your first dataset.";
35
+ }
36
+ const lines = [];
37
+ lines.push(`# Datasets (${total} total)
38
+ `);
39
+ for (const ds of datasets) {
40
+ lines.push(`## ${escapeMarkdown(ds.name)}`);
41
+ lines.push(`**Slug**: ${escapeMarkdown(ds.slug)}`);
42
+ lines.push(`**ID**: ${ds.id}`);
43
+ if (Array.isArray(ds.columnTypes) && ds.columnTypes.length > 0) {
44
+ const colNames = ds.columnTypes.map((c) => c.name).join(", ");
45
+ lines.push(`**Columns**: ${colNames}`);
46
+ }
47
+ lines.push(`**Records**: ${ds.recordCount ?? "unknown"}`);
48
+ lines.push("");
49
+ }
50
+ lines.push("> Use `platform_get_dataset` with the slug to see full dataset details and records.");
51
+ return lines.join("\n");
52
+ }
53
+ export {
54
+ handleListDatasets
55
+ };
56
+ //# sourceMappingURL=list-datasets-THUKQHPX.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getEvaluatorType,
3
3
  listEvaluators
4
- } from "./chunk-OJLYYJWI.js";
5
- import "./chunk-GELJ2MQR.js";
6
- import "./chunk-WT4PO4A3.js";
4
+ } from "./chunk-3OCG3QPU.js";
5
+ import "./chunk-UWLE5T2F.js";
6
+ import "./chunk-H6WGMG2T.js";
7
7
  import "./chunk-SAS5OB7F.js";
8
8
 
9
9
  // src/tools/list-evaluators.ts
@@ -24,12 +24,10 @@ async function handleListEvaluators() {
24
24
  lines.push(`**Kind**: ${e.type}`);
25
25
  lines.push("");
26
26
  }
27
- lines.push(
28
- "> Use `platform_get_evaluator` with the ID or slug to see full evaluator details."
29
- );
27
+ lines.push("> Use `platform_get_evaluator` with the ID or slug to see full evaluator details.");
30
28
  return lines.join("\n");
31
29
  }
32
30
  export {
33
31
  handleListEvaluators
34
32
  };
35
- //# sourceMappingURL=list-evaluators-PAX72WCN.js.map
33
+ //# sourceMappingURL=list-evaluators-MYH2OVCI.js.map
@@ -0,0 +1,32 @@
1
+ import {
2
+ getEvaluatorType,
3
+ listEvaluators
4
+ } from "./chunk-3OCG3QPU.js";
5
+ import "./chunk-UWLE5T2F.js";
6
+ import "./chunk-H6WGMG2T.js";
7
+
8
+ // src/tools/list-evaluators.ts
9
+ async function handleListEvaluators() {
10
+ const evaluators = await listEvaluators();
11
+ if (!Array.isArray(evaluators) || evaluators.length === 0) {
12
+ return "No evaluators found in this project.\n\n> Tip: Use `platform_create_evaluator` to create your first evaluator. Call `discover_schema({ category: 'evaluators' })` to see available evaluator types.";
13
+ }
14
+ const lines = [];
15
+ lines.push(`# Evaluators (${evaluators.length} total)
16
+ `);
17
+ for (const e of evaluators) {
18
+ const evaluatorType = getEvaluatorType(e);
19
+ lines.push(`## ${e.name}`);
20
+ lines.push(`**ID**: ${e.id}`);
21
+ if (e.slug) lines.push(`**Slug**: ${e.slug}`);
22
+ if (evaluatorType) lines.push(`**Type**: ${evaluatorType}`);
23
+ lines.push(`**Kind**: ${e.type}`);
24
+ lines.push("");
25
+ }
26
+ lines.push("> Use `platform_get_evaluator` with the ID or slug to see full evaluator details.");
27
+ return lines.join("\n");
28
+ }
29
+ export {
30
+ handleListEvaluators
31
+ };
32
+ //# sourceMappingURL=list-evaluators-NLVWF6K7.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  listModelProviders
3
- } from "./chunk-JTQJRNFJ.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-SXFC3FNH.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/list-model-providers.ts
@@ -33,4 +33,4 @@ async function handleListModelProviders() {
33
33
  export {
34
34
  handleListModelProviders
35
35
  };
36
- //# sourceMappingURL=list-model-providers-VVLZMLCX.js.map
36
+ //# sourceMappingURL=list-model-providers-3JUGP4YI.js.map
@@ -0,0 +1,35 @@
1
+ import {
2
+ listModelProviders
3
+ } from "./chunk-SXFC3FNH.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
+
7
+ // src/tools/list-model-providers.ts
8
+ async function handleListModelProviders() {
9
+ const providers = await listModelProviders();
10
+ const entries = Object.entries(providers);
11
+ if (entries.length === 0) {
12
+ return "No model providers configured for this project.\n\n> Tip: Use `platform_set_model_provider` to configure an API key for a model provider.";
13
+ }
14
+ const lines = [];
15
+ lines.push(`# Model Providers (${entries.length} total)
16
+ `);
17
+ for (const [key, provider] of entries) {
18
+ const status = provider.enabled ? "enabled" : "disabled";
19
+ lines.push(`## ${key}`);
20
+ lines.push(`**Status**: ${status}`);
21
+ if (provider.customKeys) {
22
+ const keyFields = Object.entries(provider.customKeys).map(([k, v]) => `${k}: ${v ? "set" : "not set"}`).join(", ");
23
+ lines.push(`**Keys**: ${keyFields}`);
24
+ }
25
+ if (provider.models && provider.models.length > 0) {
26
+ lines.push(`**Models**: ${provider.models.length} available`);
27
+ }
28
+ lines.push("");
29
+ }
30
+ return lines.join("\n");
31
+ }
32
+ export {
33
+ handleListModelProviders
34
+ };
35
+ //# sourceMappingURL=list-model-providers-H3XKORFO.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  listProjects
3
- } from "./chunk-G4ZAZTZW.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-B4J3PJLX.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/list-projects.ts
@@ -32,12 +32,10 @@ async function handleListProjects(params) {
32
32
  `> Showing page ${result.pagination.page} of ${result.pagination.totalPages}. Use \`page\` parameter to navigate.`
33
33
  );
34
34
  }
35
- lines.push(
36
- "> Use `platform_get_project` with the ID to see full project details."
37
- );
35
+ lines.push("> Use `platform_get_project` with the ID to see full project details.");
38
36
  return lines.join("\n");
39
37
  }
40
38
  export {
41
39
  handleListProjects
42
40
  };
43
- //# sourceMappingURL=list-projects-AQVI6SUK.js.map
41
+ //# sourceMappingURL=list-projects-6EJ5YYEW.js.map
@@ -0,0 +1,40 @@
1
+ import {
2
+ listProjects
3
+ } from "./chunk-B4J3PJLX.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
+
7
+ // src/tools/list-projects.ts
8
+ async function handleListProjects(params) {
9
+ const result = await listProjects({
10
+ page: params?.page,
11
+ limit: params?.limit ?? 100
12
+ });
13
+ const projects = result.data;
14
+ if (!Array.isArray(projects) || projects.length === 0) {
15
+ return "No projects found in this organization.\n\n> Tip: Use `platform_create_project` to create your first project.";
16
+ }
17
+ const lines = [];
18
+ lines.push(`# Projects (${result.pagination.total} total)
19
+ `);
20
+ for (const p of projects) {
21
+ lines.push(`## ${p.name}`);
22
+ lines.push(`**ID**: ${p.id}`);
23
+ lines.push(`**Slug**: ${p.slug}`);
24
+ lines.push(`**Language**: ${p.language}`);
25
+ lines.push(`**Framework**: ${p.framework}`);
26
+ lines.push(`**Updated**: ${p.updatedAt}`);
27
+ lines.push("");
28
+ }
29
+ if (result.pagination.totalPages > 1) {
30
+ lines.push(
31
+ `> Showing page ${result.pagination.page} of ${result.pagination.totalPages}. Use \`page\` parameter to navigate.`
32
+ );
33
+ }
34
+ lines.push("> Use `platform_get_project` with the ID to see full project details.");
35
+ return lines.join("\n");
36
+ }
37
+ export {
38
+ handleListProjects
39
+ };
40
+ //# sourceMappingURL=list-projects-YNNSRMLC.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  listPromptTags
3
- } from "./chunk-GELJ2MQR.js";
4
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-UWLE5T2F.js";
4
+ import "./chunk-H6WGMG2T.js";
5
5
  import "./chunk-SAS5OB7F.js";
6
6
 
7
7
  // src/tools/list-prompt-tags.ts
@@ -21,4 +21,4 @@ async function handleListPromptTags() {
21
21
  export {
22
22
  handleListPromptTags
23
23
  };
24
- //# sourceMappingURL=list-prompt-tags-WZFBJOHG.js.map
24
+ //# sourceMappingURL=list-prompt-tags-NVFQO6WX.js.map
@@ -0,0 +1,23 @@
1
+ import {
2
+ listPromptTags
3
+ } from "./chunk-UWLE5T2F.js";
4
+ import "./chunk-H6WGMG2T.js";
5
+
6
+ // src/tools/list-prompt-tags.ts
7
+ async function handleListPromptTags() {
8
+ const tags = await listPromptTags();
9
+ if (!tags || tags.length === 0) {
10
+ return "No prompt tags found. The `latest` tag is always available.";
11
+ }
12
+ const lines = [];
13
+ lines.push("# Prompt Tags\n");
14
+ for (const tag of tags) {
15
+ const created = tag.createdAt ? ` (created ${tag.createdAt})` : "";
16
+ lines.push(`- **${tag.name}**${created}`);
17
+ }
18
+ return lines.join("\n");
19
+ }
20
+ export {
21
+ handleListPromptTags
22
+ };
23
+ //# sourceMappingURL=list-prompt-tags-XUQTTAH4.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  listPrompts
3
- } from "./chunk-GELJ2MQR.js";
4
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-UWLE5T2F.js";
4
+ import "./chunk-H6WGMG2T.js";
5
5
  import "./chunk-SAS5OB7F.js";
6
6
 
7
7
  // src/tools/list-prompts.ts
@@ -22,12 +22,10 @@ async function handleListPrompts() {
22
22
  const version = versionNum != null ? `v${versionNum}` : "N/A";
23
23
  lines.push(`| ${handle} | ${name} | ${version} |`);
24
24
  }
25
- lines.push(
26
- "\n> Use `platform_get_prompt` with the handle or ID to see full prompt details."
27
- );
25
+ lines.push("\n> Use `platform_get_prompt` with the handle or ID to see full prompt details.");
28
26
  return lines.join("\n");
29
27
  }
30
28
  export {
31
29
  handleListPrompts
32
30
  };
33
- //# sourceMappingURL=list-prompts-BQOHRHYT.js.map
31
+ //# sourceMappingURL=list-prompts-HSIMMHTF.js.map
@@ -0,0 +1,30 @@
1
+ import {
2
+ listPrompts
3
+ } from "./chunk-UWLE5T2F.js";
4
+ import "./chunk-H6WGMG2T.js";
5
+
6
+ // src/tools/list-prompts.ts
7
+ async function handleListPrompts() {
8
+ const prompts = await listPrompts();
9
+ if (!Array.isArray(prompts) || prompts.length === 0) {
10
+ return "No prompts found in this project.";
11
+ }
12
+ const lines = [];
13
+ lines.push(`# Prompts (${prompts.length} total)
14
+ `);
15
+ lines.push("| Handle | Name | Latest Version |");
16
+ lines.push("|--------|------|----------------|");
17
+ for (const p of prompts) {
18
+ const handle = p.handle || p.id || "N/A";
19
+ const name = p.name || "Untitled";
20
+ const versionNum = p.latestVersionNumber ?? p.version;
21
+ const version = versionNum != null ? `v${versionNum}` : "N/A";
22
+ lines.push(`| ${handle} | ${name} | ${version} |`);
23
+ }
24
+ lines.push("\n> Use `platform_get_prompt` with the handle or ID to see full prompt details.");
25
+ return lines.join("\n");
26
+ }
27
+ export {
28
+ handleListPrompts
29
+ };
30
+ //# sourceMappingURL=list-prompts-IRI6AIXO.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  describeRunPlanScope
3
- } from "./chunk-JR6DJZOU.js";
3
+ } from "./chunk-RABYBFX5.js";
4
4
  import {
5
5
  listRunPlans
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/list-run-plans.ts
@@ -43,4 +43,4 @@ async function handleListRunPlans(params) {
43
43
  export {
44
44
  handleListRunPlans
45
45
  };
46
- //# sourceMappingURL=list-run-plans-UBAU2DGH.js.map
46
+ //# sourceMappingURL=list-run-plans-PX2XI6EK.js.map
@@ -0,0 +1,45 @@
1
+ import {
2
+ describeRunPlanScope
3
+ } from "./chunk-RABYBFX5.js";
4
+ import {
5
+ listRunPlans
6
+ } from "./chunk-PTDR56Z3.js";
7
+ import "./chunk-UWLE5T2F.js";
8
+ import "./chunk-H6WGMG2T.js";
9
+
10
+ // src/tools/list-run-plans.ts
11
+ async function handleListRunPlans(params) {
12
+ const plans = await listRunPlans({
13
+ includeArchived: params.includeArchived
14
+ });
15
+ if (params.format === "json") {
16
+ return JSON.stringify(plans, null, 2);
17
+ }
18
+ if (!Array.isArray(plans) || plans.length === 0) {
19
+ return "No run plans found in this project.\n\n> Tip: Use `platform_run_plan` to start one. A run plan is created the first time you run its name.";
20
+ }
21
+ const lines = [];
22
+ lines.push(`# Run Plans (${plans.length} total)
23
+ `);
24
+ for (const plan of plans) {
25
+ lines.push(`## ${plan.name}${plan.archivedAt ? " (archived)" : ""}`);
26
+ lines.push(`**ID**: ${plan.id}`);
27
+ lines.push(`**Covers**: ${describeRunPlanScope(plan.scope, plan.scenarioIds)}`);
28
+ lines.push(
29
+ `**Targets**: ${plan.targets.length} (${plan.targets.map((t) => `${t.type}:${t.referenceId}`).join(", ")})`
30
+ );
31
+ lines.push(`**Repeat**: ${plan.repeatCount}x`);
32
+ if (plan.labels.length > 0) {
33
+ lines.push(`**Labels**: ${plan.labels.join(", ")}`);
34
+ }
35
+ lines.push("");
36
+ }
37
+ lines.push(
38
+ "> Use `platform_get_run_plan` with the ID for the full configuration, or `platform_rerun_run_plan` to run it again."
39
+ );
40
+ return lines.join("\n");
41
+ }
42
+ export {
43
+ handleListRunPlans
44
+ };
45
+ //# sourceMappingURL=list-run-plans-QALLCN2K.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  listScenarios
3
- } from "./chunk-RVAE2MEA.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-I7ATIZED.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/list-scenarios.ts
@@ -23,22 +23,24 @@ async function handleListScenarios(params) {
23
23
  for (const s of scenarios) {
24
24
  lines.push(`## ${s.name}`);
25
25
  lines.push(`**ID**: ${s.id}`);
26
- const preview = s.situation && s.situation.length > 60 ? s.situation.slice(0, 60) + "..." : s.situation;
26
+ const preview = formatSituationPreview(s.situation);
27
27
  lines.push(`**Situation**: ${preview}`);
28
- lines.push(
29
- `**Criteria**: ${Array.isArray(s.criteria) ? s.criteria.length : 0} criteria`
30
- );
28
+ lines.push(`**Criteria**: ${Array.isArray(s.criteria) ? s.criteria.length : 0} criteria`);
31
29
  if (Array.isArray(s.labels) && s.labels.length > 0) {
32
30
  lines.push(`**Labels**: ${s.labels.join(", ")}`);
33
31
  }
34
32
  lines.push("");
35
33
  }
36
- lines.push(
37
- "> Use `platform_get_scenario` with the ID to see full scenario details."
38
- );
34
+ lines.push("> Use `platform_get_scenario` with the ID to see full scenario details.");
39
35
  return lines.join("\n");
40
36
  }
37
+ function formatSituationPreview(situation) {
38
+ if (situation && situation.length > 60) {
39
+ return situation.slice(0, 60) + "...";
40
+ }
41
+ return situation;
42
+ }
41
43
  export {
42
44
  handleListScenarios
43
45
  };
44
- //# sourceMappingURL=list-scenarios-MS4IUIVM.js.map
46
+ //# sourceMappingURL=list-scenarios-QZRPVHS4.js.map
@@ -0,0 +1,45 @@
1
+ import {
2
+ listScenarios
3
+ } from "./chunk-I7ATIZED.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
+
7
+ // src/tools/list-scenarios.ts
8
+ async function handleListScenarios(params) {
9
+ const all = await listScenarios();
10
+ const scenarios = params.testSuiteId !== void 0 && Array.isArray(all) ? all.filter((s) => s.testSuiteId === params.testSuiteId) : all;
11
+ if (params.format === "json") {
12
+ return JSON.stringify(scenarios, null, 2);
13
+ }
14
+ if (!Array.isArray(scenarios) || scenarios.length === 0) {
15
+ return params.testSuiteId !== void 0 ? `No scenarios found in test suite ${params.testSuiteId}.
16
+
17
+ > Tip: Use \`platform_create_scenario\` with testSuiteId \`${params.testSuiteId}\` to file one there.` : "No scenarios found in this project.\n\n> Tip: Use `platform_create_scenario` to create your first scenario.";
18
+ }
19
+ const lines = [];
20
+ lines.push(`# Scenarios (${scenarios.length} total)
21
+ `);
22
+ for (const s of scenarios) {
23
+ lines.push(`## ${s.name}`);
24
+ lines.push(`**ID**: ${s.id}`);
25
+ const preview = formatSituationPreview(s.situation);
26
+ lines.push(`**Situation**: ${preview}`);
27
+ lines.push(`**Criteria**: ${Array.isArray(s.criteria) ? s.criteria.length : 0} criteria`);
28
+ if (Array.isArray(s.labels) && s.labels.length > 0) {
29
+ lines.push(`**Labels**: ${s.labels.join(", ")}`);
30
+ }
31
+ lines.push("");
32
+ }
33
+ lines.push("> Use `platform_get_scenario` with the ID to see full scenario details.");
34
+ return lines.join("\n");
35
+ }
36
+ function formatSituationPreview(situation) {
37
+ if (situation && situation.length > 60) {
38
+ return situation.slice(0, 60) + "...";
39
+ }
40
+ return situation;
41
+ }
42
+ export {
43
+ handleListScenarios
44
+ };
45
+ //# sourceMappingURL=list-scenarios-SSJQEMJP.js.map