@langwatch/mcp-server 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/.gitignore +7 -0
  2. package/.npmignore +41 -0
  3. package/CHANGELOG.md +280 -200
  4. package/CONTRIBUTING.md +10 -0
  5. package/README.md +82 -52
  6. package/dist/add-dashboard-widget-4ZC5UN73.js +50 -0
  7. package/dist/add-dashboard-widget-ACC6QYBG.js +49 -0
  8. package/dist/archive-project-KWFM3I5Z.js +19 -0
  9. package/dist/{archive-project-4EQGLBJJ.js → archive-project-SPVHXK6A.js} +4 -4
  10. package/dist/archive-run-plan-65QN3XRX.js +16 -0
  11. package/dist/archive-run-plan-Z4SYE6BP.js +15 -0
  12. package/dist/{archive-scenario-W6BXYDZ3.js → archive-scenario-A6QV5LOW.js} +4 -4
  13. package/dist/archive-scenario-FXEYQNEH.js +19 -0
  14. package/dist/archive-test-suite-5ADQ3KPQ.js +15 -0
  15. package/dist/archive-test-suite-NKZDZY3D.js +16 -0
  16. package/dist/assign-prompt-tag-5IUZXJ2T.js +23 -0
  17. package/dist/{assign-prompt-tag-VLXUWEKU.js → assign-prompt-tag-HBZLBIFD.js} +8 -4
  18. package/dist/{chunk-CDYQOY5U.js → chunk-3OCG3QPU.js} +7 -10
  19. package/dist/chunk-3YLN3ATJ.js +241 -0
  20. package/dist/chunk-5FNCQRCX.js +91 -0
  21. package/dist/chunk-6YZUOD34.js +55 -0
  22. package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
  23. package/dist/chunk-7VNSRCXO.js +129 -0
  24. package/dist/{chunk-7RHG56OH.js → chunk-B4J3PJLX.js} +11 -10
  25. package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
  26. package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
  27. package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
  28. package/dist/{chunk-WT4PO4A3.js → chunk-H6WGMG2T.js} +10 -7
  29. package/dist/{chunk-TOXJQDIZ.js → chunk-HGELNIVY.js} +135 -51
  30. package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
  31. package/dist/{chunk-J42FWRJ2.js → chunk-I7ATIZED.js} +7 -7
  32. package/dist/{chunk-AQJO2EI5.js → chunk-ILZDO25L.js} +7 -10
  33. package/dist/{chunk-4QC7SA2L.js → chunk-J7PQKBLD.js} +884 -559
  34. package/dist/{chunk-YX3A3CFM.js → chunk-JRJPH75H.js} +7 -13
  35. package/dist/chunk-K2I7Z3LZ.js +28 -0
  36. package/dist/{chunk-5CCZFUXS.js → chunk-NKMTIHIJ.js} +6 -9
  37. package/dist/chunk-O7EMWEVJ.js +44 -0
  38. package/dist/chunk-PTDR56Z3.js +37 -0
  39. package/dist/chunk-RABYBFX5.js +43 -0
  40. package/dist/chunk-SUPUUC4W.js +64 -0
  41. package/dist/{chunk-SFB4MU6H.js → chunk-SXFC3FNH.js} +4 -4
  42. package/dist/chunk-U24EACC4.js +67 -0
  43. package/dist/chunk-UNJM3BIL.js +21 -0
  44. package/dist/{chunk-ZWIL4EFL.js → chunk-UTJCWXPZ.js} +4 -4
  45. package/dist/chunk-UWLE5T2F.js +312 -0
  46. package/dist/chunk-VMWJD732.js +57 -0
  47. package/dist/chunk-XUIJYNRJ.js +15 -0
  48. package/dist/chunk-Y34DHR5K.js +67 -0
  49. package/dist/chunk-YCARO42Z.js +516 -0
  50. package/dist/config-EAKW6F26.js +16 -0
  51. package/dist/config.cjs +109 -0
  52. package/dist/config.js +5 -4
  53. package/dist/{create-agent-7XHO6UIS.js → create-agent-AYZ3LB3V.js} +4 -4
  54. package/dist/create-agent-S5ZBCEFT.js +23 -0
  55. package/dist/create-annotation-LHNCLHYP.js +29 -0
  56. package/dist/{create-annotation-YQXRQC6A.js → create-annotation-VUSXULQK.js} +10 -5
  57. package/dist/{create-api-key-YUS36KBU.js → create-api-key-NNYKARMG.js} +5 -7
  58. package/dist/create-api-key-T4KSNPKB.js +24 -0
  59. package/dist/create-dashboard-DHVFMEU4.js +18 -0
  60. package/dist/{create-dashboard-4Z5JO5LB.js → create-dashboard-WTKKS5Z6.js} +4 -4
  61. package/dist/{create-dataset-E6NMSVX7.js → create-dataset-2MC4SD4O.js} +6 -6
  62. package/dist/create-dataset-LUP5PVDM.js +22 -0
  63. package/dist/create-dataset-records-NSKBZP3G.js +20 -0
  64. package/dist/{create-dataset-records-SKHPRD2K.js → create-dataset-records-W4GLN2FV.js} +5 -7
  65. package/dist/{create-evaluator-JXF5PF33.js → create-evaluator-643G6LXL.js} +4 -4
  66. package/dist/create-evaluator-HMTYO5SS.js +27 -0
  67. package/dist/create-mcp-server.cjs +9513 -0
  68. package/dist/create-mcp-server.js +2647 -5
  69. package/dist/create-project-6N7PIYRY.js +44 -0
  70. package/dist/{create-project-CS2CB57Y.js → create-project-KAIC46UY.js} +4 -4
  71. package/dist/{create-prompt-F5RMX3L3.js → create-prompt-E67LXIYT.js} +5 -7
  72. package/dist/create-prompt-PKJ7EDRR.js +37 -0
  73. package/dist/create-prompt-tag-4YO3FSJ3.js +17 -0
  74. package/dist/{create-prompt-tag-GMRWTEFR.js → create-prompt-tag-OPQUEXWB.js} +3 -3
  75. package/dist/create-scenario-5PJBMAXO.js +33 -0
  76. package/dist/{create-scenario-JDR2VB2H.js → create-scenario-UEM77OE7.js} +11 -4
  77. package/dist/create-test-suite-4IPXVSFQ.js +37 -0
  78. package/dist/create-test-suite-SZEPVXSE.js +36 -0
  79. package/dist/create-trigger-5HZSCRAN.js +49 -0
  80. package/dist/create-trigger-PRELMT6J.js +48 -0
  81. package/dist/delete-agent-JUIZWAXG.js +18 -0
  82. package/dist/{delete-agent-O3EEH4S5.js → delete-agent-QMEK3XHK.js} +4 -4
  83. package/dist/delete-annotation-HY3O2OGR.js +17 -0
  84. package/dist/{delete-annotation-XP6FQM7A.js → delete-annotation-VKIQWUYW.js} +4 -4
  85. package/dist/delete-dashboard-76N66XXL.js +18 -0
  86. package/dist/{delete-dashboard-RFUNYCNP.js → delete-dashboard-JVIVHNJM.js} +4 -4
  87. package/dist/delete-dataset-HQCR66MG.js +18 -0
  88. package/dist/{delete-dataset-3MJFRDLP.js → delete-dataset-WKRUW4FP.js} +5 -7
  89. package/dist/{delete-dataset-records-WPMU5GL5.js → delete-dataset-records-C2IQFFVQ.js} +5 -7
  90. package/dist/delete-dataset-records-SDUHQLLM.js +19 -0
  91. package/dist/delete-evaluator-4SNSCLEE.js +16 -0
  92. package/dist/delete-evaluator-QP3QHTLN.js +15 -0
  93. package/dist/delete-prompt-tag-NZ4JQMYG.js +17 -0
  94. package/dist/{delete-prompt-tag-KNMZVSPB.js → delete-prompt-tag-YYQ4VMAD.js} +3 -3
  95. package/dist/{delete-workflow-3NUXO46U.js → delete-workflow-5J46T73T.js} +4 -4
  96. package/dist/delete-workflow-JSWABL5F.js +17 -0
  97. package/dist/discover-evaluator-schema-UHWA5HVL.js +120 -0
  98. package/dist/discover-evaluator-schema-XKCLLCB3.js +118 -0
  99. package/dist/discover-scenario-schema-NOJY6S7E.js +137 -0
  100. package/dist/discover-scenario-schema-OOFIQKOG.js +139 -0
  101. package/dist/{discover-schema-L6QDPON3.js → discover-schema-55YJBFGQ.js} +181 -186
  102. package/dist/discover-schema-A33SLMXW.js +442 -0
  103. package/dist/get-agent-LJQX7OF4.js +69 -0
  104. package/dist/get-agent-OTIYUFZA.js +70 -0
  105. package/dist/get-analytics-DCS72353.js +80 -0
  106. package/dist/get-analytics-IQZKJHLW.js +79 -0
  107. package/dist/get-dashboard-5NYJEIX2.js +29 -0
  108. package/dist/{get-dashboard-KHBEGZGL.js → get-dashboard-QMTYDQAZ.js} +4 -4
  109. package/dist/get-dataset-ALSP7RTX.js +64 -0
  110. package/dist/get-dataset-X4B5JDG2.js +63 -0
  111. package/dist/{get-evaluator-ADMKVWYZ.js → get-evaluator-ISMC4LLI.js} +4 -4
  112. package/dist/get-evaluator-XEUZGZCH.js +47 -0
  113. package/dist/{get-project-RAK7URQJ.js → get-project-5VKROSDH.js} +4 -4
  114. package/dist/get-project-RM6FRCBK.js +26 -0
  115. package/dist/get-prompt-OWXJZHQQ.js +95 -0
  116. package/dist/get-prompt-W52DY36E.js +94 -0
  117. package/dist/get-run-plan-BE3M2AUX.js +59 -0
  118. package/dist/get-run-plan-RUXQ6PAX.js +58 -0
  119. package/dist/get-scenario-RNM7BAX2.js +37 -0
  120. package/dist/{get-scenario-ZTAJJL5T.js → get-scenario-YM4ODWW6.js} +8 -4
  121. package/dist/get-simulation-run-6GIATQE5.js +69 -0
  122. package/dist/{get-simulation-run-T2ZQWYH2.js → get-simulation-run-LCFSMPGQ.js} +33 -20
  123. package/dist/get-test-suite-GC2O7YH6.js +49 -0
  124. package/dist/get-test-suite-P5LJ6VLF.js +48 -0
  125. package/dist/get-trace-KBRVV4NN.js +45 -0
  126. package/dist/{get-trace-K7U234Q4.js → get-trace-SEF3FMR5.js} +11 -13
  127. package/dist/get-workflow-7PVED7JE.js +25 -0
  128. package/dist/{get-workflow-L5L2PSK3.js → get-workflow-YXULW4GC.js} +4 -4
  129. package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
  130. package/dist/{http-server-YXHFPPGA.js → http-server-IR4QOS43.js} +4071 -342
  131. package/dist/index.js +60221 -38077
  132. package/dist/langwatch-api-annotations-6SA4OB4C.js +17 -0
  133. package/dist/{langwatch-api-annotations-FDAS6NQ7.js → langwatch-api-annotations-TBHLCQ5R.js} +4 -4
  134. package/dist/langwatch-api-dashboards-6EO2VVZW.js +17 -0
  135. package/dist/{langwatch-api-dashboards-JTVCS7ZJ.js → langwatch-api-dashboards-NHU5BZD7.js} +4 -4
  136. package/dist/langwatch-api-monitors-CBF3FGIM.js +47 -0
  137. package/dist/{langwatch-api-monitors-3J7UIQME.js → langwatch-api-monitors-YNWA2M5Y.js} +11 -16
  138. package/dist/langwatch-api-secrets-ADTOJELP.js +56 -0
  139. package/dist/langwatch-api-secrets-RNFO4LF2.js +55 -0
  140. package/dist/langwatch-api-triggers-KQDQC6L5.js +22 -0
  141. package/dist/langwatch-api-triggers-QS7HDIVW.js +23 -0
  142. package/dist/{langwatch-api-workflows-NBJX5KOG.js → langwatch-api-workflows-OKC4FXIF.js} +4 -4
  143. package/dist/langwatch-api-workflows-XGJE6SR5.js +15 -0
  144. package/dist/list-agents-HVYWEQMI.js +43 -0
  145. package/dist/list-agents-RBAOCF53.js +42 -0
  146. package/dist/list-annotations-HJH4NBLD.js +38 -0
  147. package/dist/{list-annotations-ZTVP4EEL.js → list-annotations-J4UAHSUN.js} +10 -5
  148. package/dist/{list-api-keys-CWD4UQT5.js → list-api-keys-7UTJRZDG.js} +10 -5
  149. package/dist/list-api-keys-A2PMV435.js +42 -0
  150. package/dist/list-dashboard-boards-OPWROHMG.js +33 -0
  151. package/dist/list-dashboard-boards-U2GJ7GC5.js +34 -0
  152. package/dist/{list-dashboards-PWG6P6KR.js → list-dashboards-ROSYFLDQ.js} +4 -4
  153. package/dist/list-dashboards-RQ635ZU7.js +32 -0
  154. package/dist/{list-dataset-records-IOE7LQXS.js → list-dataset-records-M5TKA6LK.js} +14 -10
  155. package/dist/list-dataset-records-WFM7F33C.js +43 -0
  156. package/dist/{list-datasets-ZT4JYUDT.js → list-datasets-B5X4P7BQ.js} +9 -13
  157. package/dist/list-datasets-THUKQHPX.js +56 -0
  158. package/dist/{list-evaluators-SJHC7VBH.js → list-evaluators-MYH2OVCI.js} +5 -7
  159. package/dist/list-evaluators-NLVWF6K7.js +32 -0
  160. package/dist/{list-model-providers-PPD2WPD2.js → list-model-providers-3JUGP4YI.js} +4 -4
  161. package/dist/list-model-providers-H3XKORFO.js +35 -0
  162. package/dist/{list-projects-K7QAIX2I.js → list-projects-6EJ5YYEW.js} +5 -7
  163. package/dist/list-projects-YNNSRMLC.js +40 -0
  164. package/dist/{list-prompt-tags-FOO6TNHB.js → list-prompt-tags-NVFQO6WX.js} +3 -3
  165. package/dist/list-prompt-tags-XUQTTAH4.js +23 -0
  166. package/dist/{list-prompts-SC2HAUFG.js → list-prompts-HSIMMHTF.js} +4 -6
  167. package/dist/list-prompts-IRI6AIXO.js +30 -0
  168. package/dist/list-run-plans-PX2XI6EK.js +46 -0
  169. package/dist/list-run-plans-QALLCN2K.js +45 -0
  170. package/dist/list-scenarios-QZRPVHS4.js +46 -0
  171. package/dist/list-scenarios-SSJQEMJP.js +45 -0
  172. package/dist/list-simulation-runs-KNOLGMDV.js +53 -0
  173. package/dist/{list-simulation-runs-KF5THG5H.js → list-simulation-runs-OEADLLQR.js} +19 -9
  174. package/dist/list-test-suites-ANAQBLDG.js +34 -0
  175. package/dist/list-test-suites-N4WVLBKK.js +35 -0
  176. package/dist/list-trigger-fires-JV3WFYYG.js +19 -0
  177. package/dist/list-trigger-fires-WTW4DVIW.js +20 -0
  178. package/dist/list-triggers-SQNIG35Q.js +45 -0
  179. package/dist/list-triggers-V4Y356AK.js +46 -0
  180. package/dist/{list-workflows-QSJWURCK.js → list-workflows-IMSX7SXU.js} +5 -7
  181. package/dist/list-workflows-ZHTX5LCL.js +33 -0
  182. package/dist/{rename-prompt-tag-EKWU5QF3.js → rename-prompt-tag-IQI7MHOI.js} +3 -3
  183. package/dist/rename-prompt-tag-PA2BRIE6.js +18 -0
  184. package/dist/rename-test-suite-4J7UX5S2.js +21 -0
  185. package/dist/rename-test-suite-NNVLMLKY.js +20 -0
  186. package/dist/report-issue-AS34ZMJF.js +898 -0
  187. package/dist/report-issue-DCZFLGDO.js +899 -0
  188. package/dist/rerun-run-plan-TG2V4WM4.js +22 -0
  189. package/dist/rerun-run-plan-ZI5OY3VA.js +21 -0
  190. package/dist/revoke-api-key-3J3ZA4UB.js +15 -0
  191. package/dist/{revoke-api-key-FTRTZMOF.js → revoke-api-key-SFMEFWJC.js} +4 -4
  192. package/dist/run-agent-W4VJP72Z.js +75 -0
  193. package/dist/run-agent-YNV6ZHW4.js +74 -0
  194. package/dist/run-plan-6C77GWG4.js +38 -0
  195. package/dist/run-plan-PAARQSI4.js +39 -0
  196. package/dist/run-query-KJDH544C.js +47 -0
  197. package/dist/run-query-T4QW2Z5O.js +46 -0
  198. package/dist/run-test-suite-SQJELEZX.js +26 -0
  199. package/dist/run-test-suite-STB6NUJM.js +25 -0
  200. package/dist/{run-workflow-QPXC627O.js → run-workflow-D6PQNBI6.js} +4 -4
  201. package/dist/{run-agent-6SM4XNA7.js → run-workflow-SP32SO5M.js} +10 -11
  202. package/dist/search-traces-HCBGOG6R.js +170 -0
  203. package/dist/search-traces-HSTQ6WTQ.js +171 -0
  204. package/dist/{set-model-provider-3WKT63ZN.js → set-model-provider-GF7NXUJA.js} +4 -4
  205. package/dist/set-model-provider-KDQ7C4EZ.js +33 -0
  206. package/dist/{update-agent-SMAEHLXH.js → update-agent-DWG43T2P.js} +4 -4
  207. package/dist/update-agent-MXNOBS4H.js +20 -0
  208. package/dist/update-dashboard-widget-CJKJLCDY.js +71 -0
  209. package/dist/update-dashboard-widget-CYQDS2NR.js +70 -0
  210. package/dist/update-dataset-DQH3OHOU.js +22 -0
  211. package/dist/{update-dataset-BDUK7TUO.js → update-dataset-SQZ6T4WX.js} +6 -6
  212. package/dist/{update-dataset-record-4ZSDRBSW.js → update-dataset-record-3AT4IPBC.js} +4 -4
  213. package/dist/update-dataset-record-7PLDGTMR.js +19 -0
  214. package/dist/update-evaluator-4LFTKFPT.js +24 -0
  215. package/dist/{update-evaluator-LS6TIBY7.js → update-evaluator-IGTX6PX4.js} +4 -4
  216. package/dist/{update-project-LKVYXENH.js → update-project-PLJIOZS6.js} +4 -4
  217. package/dist/update-project-QVHSJRUP.js +24 -0
  218. package/dist/update-prompt-GDKRYJI3.js +140 -0
  219. package/dist/update-prompt-MY263DYF.js +141 -0
  220. package/dist/update-scenario-7KA3JDXA.js +34 -0
  221. package/dist/{update-scenario-NEXCAQI7.js → update-scenario-MOHRQKAQ.js} +11 -4
  222. package/package.json +39 -44
  223. package/pyproject.toml +8 -8
  224. package/src/config.d.ts +4 -0
  225. package/src/config.ts +20 -29
  226. package/src/create-mcp-server.ts +1021 -596
  227. package/src/documentation-fetch.ts +21 -20
  228. package/src/http-security.ts +166 -135
  229. package/src/http-server.ts +189 -224
  230. package/src/index.ts +14 -16
  231. package/src/langwatch-api-agents.ts +202 -21
  232. package/src/langwatch-api-annotations.ts +11 -12
  233. package/src/langwatch-api-api-keys.ts +8 -9
  234. package/src/langwatch-api-boards.ts +46 -0
  235. package/src/langwatch-api-dashboard-widgets.ts +112 -0
  236. package/src/langwatch-api-dashboards.ts +13 -10
  237. package/src/langwatch-api-datasets.ts +98 -32
  238. package/src/langwatch-api-evaluators.ts +13 -19
  239. package/src/langwatch-api-model-providers.ts +4 -4
  240. package/src/langwatch-api-monitors.ts +14 -18
  241. package/src/langwatch-api-projects.ts +27 -9
  242. package/src/langwatch-api-query.ts +114 -0
  243. package/src/langwatch-api-run-plans.ts +140 -0
  244. package/src/langwatch-api-scenarios.ts +17 -10
  245. package/src/langwatch-api-secrets.ts +31 -24
  246. package/src/langwatch-api-simulation-runs.ts +10 -7
  247. package/src/langwatch-api-test-suites.ts +116 -0
  248. package/src/langwatch-api-triggers.ts +96 -34
  249. package/src/langwatch-api-workflows.ts +9 -9
  250. package/src/langwatch-api.ts +143 -109
  251. package/src/public-http-request.ts +21 -12
  252. package/src/schemas/analytics-metrics.ts +3 -15
  253. package/src/schemas/create-dataset.ts +3 -4
  254. package/src/schemas/run-plan.ts +76 -0
  255. package/src/schemas/suite-fields.ts +132 -0
  256. package/src/schemas/triggers.ts +365 -0
  257. package/src/tools/add-dashboard-widget.ts +63 -0
  258. package/src/tools/archive-project.ts +2 -4
  259. package/src/tools/archive-run-plan.ts +10 -0
  260. package/src/tools/archive-scenario.ts +2 -4
  261. package/src/tools/archive-test-suite.ts +10 -0
  262. package/src/tools/assign-prompt-tag.ts +6 -2
  263. package/src/tools/create-agent.ts +1 -1
  264. package/src/tools/create-annotation.ts +7 -2
  265. package/src/tools/create-api-key.ts +4 -6
  266. package/src/tools/create-dashboard.ts +1 -1
  267. package/src/tools/create-dataset-records.ts +4 -8
  268. package/src/tools/create-dataset.ts +5 -7
  269. package/src/tools/create-evaluator.ts +3 -5
  270. package/src/tools/create-project.ts +2 -2
  271. package/src/tools/create-prompt-tag.ts +2 -4
  272. package/src/tools/create-prompt.ts +9 -18
  273. package/src/tools/create-scenario.ts +11 -5
  274. package/src/tools/create-test-suite.ts +38 -0
  275. package/src/tools/create-trigger.ts +55 -0
  276. package/src/tools/dashboard-exists.ts +25 -0
  277. package/src/tools/dashboard-widget-queries.ts +32 -0
  278. package/src/tools/delete-agent.ts +1 -1
  279. package/src/tools/delete-annotation.ts +1 -1
  280. package/src/tools/delete-dashboard.ts +1 -1
  281. package/src/tools/delete-dataset-records.ts +4 -8
  282. package/src/tools/delete-dataset.ts +3 -7
  283. package/src/tools/delete-evaluator.ts +4 -6
  284. package/src/tools/delete-prompt-tag.ts +2 -4
  285. package/src/tools/delete-workflow.ts +1 -1
  286. package/src/tools/discover-evaluator-schema.ts +34 -25
  287. package/src/tools/discover-scenario-schema.ts +86 -12
  288. package/src/tools/discover-schema.ts +149 -27
  289. package/src/tools/experiment-run-status.ts +2 -8
  290. package/src/tools/format-dataset-mutation.ts +5 -10
  291. package/src/tools/format-run-plan.ts +54 -0
  292. package/src/tools/format-scenario.ts +12 -0
  293. package/src/tools/format-suite-details.ts +90 -0
  294. package/src/tools/get-agent.ts +54 -3
  295. package/src/tools/get-analytics.ts +52 -46
  296. package/src/tools/get-dashboard.ts +1 -1
  297. package/src/tools/get-dataset.ts +34 -16
  298. package/src/tools/get-evaluator.ts +4 -11
  299. package/src/tools/get-experiment-results.ts +219 -186
  300. package/src/tools/get-project.ts +2 -4
  301. package/src/tools/get-prompt.ts +100 -37
  302. package/src/tools/get-run-plan.ts +60 -0
  303. package/src/tools/get-scenario.ts +6 -5
  304. package/src/tools/get-simulation-run.ts +32 -20
  305. package/src/tools/get-test-suite.ts +46 -0
  306. package/src/tools/get-trace.ts +16 -17
  307. package/src/tools/get-workflow.ts +1 -1
  308. package/src/tools/list-agents.ts +20 -3
  309. package/src/tools/list-annotations.ts +8 -5
  310. package/src/tools/list-api-keys.ts +7 -2
  311. package/src/tools/list-dashboard-boards.ts +28 -0
  312. package/src/tools/list-dashboards.ts +1 -1
  313. package/src/tools/list-dataset-records.ts +8 -6
  314. package/src/tools/list-datasets.ts +12 -23
  315. package/src/tools/list-evaluators.ts +4 -8
  316. package/src/tools/list-experiment-runs.ts +5 -9
  317. package/src/tools/list-experiments.ts +5 -11
  318. package/src/tools/list-model-providers.ts +3 -5
  319. package/src/tools/list-projects.ts +2 -4
  320. package/src/tools/list-prompt-tags.ts +3 -3
  321. package/src/tools/list-prompts.ts +4 -8
  322. package/src/tools/list-run-plans.ts +47 -0
  323. package/src/tools/list-scenarios.ts +26 -17
  324. package/src/tools/list-simulation-runs.ts +13 -5
  325. package/src/tools/list-test-suites.ts +35 -0
  326. package/src/tools/list-trigger-fires.ts +17 -0
  327. package/src/tools/list-triggers.ts +39 -0
  328. package/src/tools/list-workflows.ts +2 -4
  329. package/src/tools/rename-prompt-tag.ts +1 -1
  330. package/src/tools/rename-test-suite.ts +15 -0
  331. package/src/tools/report-issue.ts +5 -9
  332. package/src/tools/rerun-run-plan.ts +18 -0
  333. package/src/tools/revoke-api-key.ts +2 -4
  334. package/src/tools/run-agent.ts +65 -14
  335. package/src/tools/run-experiment.ts +36 -37
  336. package/src/tools/run-plan.ts +46 -0
  337. package/src/tools/run-query.ts +47 -0
  338. package/src/tools/run-test-suite.ts +27 -0
  339. package/src/tools/run-workflow.ts +2 -5
  340. package/src/tools/search-traces.ts +161 -47
  341. package/src/tools/set-model-provider.ts +4 -6
  342. package/src/tools/test-agent.ts +18 -0
  343. package/src/tools/update-agent.ts +1 -1
  344. package/src/tools/update-dashboard-widget.ts +97 -0
  345. package/src/tools/update-dataset-record.ts +1 -1
  346. package/src/tools/update-dataset.ts +5 -7
  347. package/src/tools/update-evaluator.ts +3 -5
  348. package/src/tools/update-project.ts +1 -1
  349. package/src/tools/update-prompt.ts +185 -15
  350. package/src/tools/update-scenario.ts +11 -5
  351. package/src/tools/update-test-suite.ts +40 -0
  352. package/src/utils/date-parsing.ts +1 -1
  353. package/src/utils/escape-markdown.ts +3 -8
  354. package/src/utils/format-evaluations.ts +6 -6
  355. package/src/utils/markdown-table.ts +58 -0
  356. package/src/utils/trace-id-shape.ts +20 -0
  357. package/tsconfig.app.json +24 -0
  358. package/tsconfig.json +19 -12
  359. package/uv.lock +416 -296
  360. package/vitest.integration.config.js +10 -0
  361. package/vitest.scenario.config.js +9 -0
  362. package/.eslintrc.cjs +0 -36
  363. package/dist/archive-suite-4T6BSRS7.js +0 -16
  364. package/dist/chunk-77BNWQ3U.js +0 -86
  365. package/dist/chunk-A2LEVYQ5.js +0 -217
  366. package/dist/chunk-TJCXFNDT.js +0 -24
  367. package/dist/chunk-YZLYHLLI.js +0 -48
  368. package/dist/config.d.ts +0 -17
  369. package/dist/create-mcp-server.d.ts +0 -10
  370. package/dist/create-suite-LZS6QIAF.js +0 -39
  371. package/dist/delete-evaluator-33SP2JFX.js +0 -16
  372. package/dist/discover-evaluator-schema-XTAD4X7D.js +0 -2191
  373. package/dist/discover-scenario-schema-FE64QK2D.js +0 -67
  374. package/dist/get-agent-Y7MWZ65F.js +0 -29
  375. package/dist/get-analytics-TETCSOK6.js +0 -73
  376. package/dist/get-dataset-RCMU5VAH.js +0 -49
  377. package/dist/get-prompt-OY5B7TRI.js +0 -46
  378. package/dist/get-suite-J7JVWO6O.js +0 -45
  379. package/dist/index.d.ts +0 -2
  380. package/dist/langwatch-api-secrets-BUBSNCNO.js +0 -41
  381. package/dist/langwatch-api-triggers-EDFUCJN6.js +0 -31
  382. package/dist/list-agents-KFHKGPXV.js +0 -33
  383. package/dist/list-scenarios-F2WYNRIE.js +0 -41
  384. package/dist/list-suites-CRY4VWW6.js +0 -43
  385. package/dist/report-issue-XYVAPAYJ.js +0 -412
  386. package/dist/run-suite-NKZCJ2IN.js +0 -30
  387. package/dist/search-traces-A6HFKPLJ.js +0 -79
  388. package/dist/update-prompt-ODCRQRN6.js +0 -25
  389. package/dist/update-suite-SNO3GS7T.js +0 -40
  390. package/src/__tests__/all-tools.integration.test.ts +0 -1626
  391. package/src/__tests__/config.unit.test.ts +0 -202
  392. package/src/__tests__/datasets.integration.test.ts +0 -620
  393. package/src/__tests__/datasets.unit.test.ts +0 -244
  394. package/src/__tests__/date-parsing.unit.test.ts +0 -78
  395. package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
  396. package/src/__tests__/discover-schema.unit.test.ts +0 -118
  397. package/src/__tests__/docker.integration.test.ts +0 -318
  398. package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
  399. package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
  400. package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
  401. package/src/__tests__/experiment-status.unit.test.ts +0 -194
  402. package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
  403. package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
  404. package/src/__tests__/http-security-origin.unit.test.ts +0 -97
  405. package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
  406. package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
  407. package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
  408. package/src/__tests__/http-server-origin.integration.test.ts +0 -169
  409. package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
  410. package/src/__tests__/http-transport.integration.test.ts +0 -395
  411. package/src/__tests__/integration.integration.test.ts +0 -288
  412. package/src/__tests__/langwatch-api.unit.test.ts +0 -661
  413. package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
  414. package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
  415. package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
  416. package/src/__tests__/report-issue.integration.test.ts +0 -147
  417. package/src/__tests__/scenario-tools.integration.test.ts +0 -286
  418. package/src/__tests__/scenario-tools.unit.test.ts +0 -188
  419. package/src/__tests__/schemas.unit.test.ts +0 -85
  420. package/src/__tests__/support/http-server-harness.ts +0 -138
  421. package/src/__tests__/tools.unit.test.ts +0 -924
  422. package/src/langwatch-api-suites.ts +0 -118
  423. package/src/schemas/filter-fields.ts +0 -119
  424. package/src/schemas/index.ts +0 -4
  425. package/src/tools/archive-suite.ts +0 -12
  426. package/src/tools/create-suite.ts +0 -42
  427. package/src/tools/get-suite.ts +0 -47
  428. package/src/tools/list-suites.ts +0 -43
  429. package/src/tools/run-suite.ts +0 -28
  430. package/src/tools/update-suite.ts +0 -44
@@ -0,0 +1,442 @@
1
+ import {
2
+ getQueryReference,
3
+ markdownTable
4
+ } from "./chunk-SUPUUC4W.js";
5
+ import "./chunk-FOKVY3BK.js";
6
+ import "./chunk-UWLE5T2F.js";
7
+ import "./chunk-H6WGMG2T.js";
8
+
9
+ // src/schemas/analytics-groups.ts
10
+ var analyticsGroups = [
11
+ {
12
+ name: "topics.topics",
13
+ label: "Topic",
14
+ description: "Group by topic classification"
15
+ },
16
+ {
17
+ name: "metadata.user_id",
18
+ label: "User",
19
+ description: "Group by user ID"
20
+ },
21
+ {
22
+ name: "metadata.thread_id",
23
+ label: "Thread",
24
+ description: "Group by conversation thread"
25
+ },
26
+ {
27
+ name: "metadata.customer_id",
28
+ label: "Customer ID",
29
+ description: "Group by customer/organization"
30
+ },
31
+ {
32
+ name: "metadata.labels",
33
+ label: "Label",
34
+ description: "Group by custom labels"
35
+ },
36
+ {
37
+ name: "metadata.model",
38
+ label: "Model",
39
+ description: "Group by LLM model name"
40
+ },
41
+ {
42
+ name: "metadata.span_type",
43
+ label: "Span Type",
44
+ description: "Group by span type (llm, tool, agent, etc.)"
45
+ },
46
+ {
47
+ name: "sentiment.input_sentiment",
48
+ label: "Input Sentiment",
49
+ description: "Group by detected input sentiment (positive, negative, neutral)"
50
+ },
51
+ {
52
+ name: "sentiment.thumbs_up_down",
53
+ label: "Thumbs Up/Down",
54
+ description: "Group by user feedback (positive, negative, neutral)"
55
+ },
56
+ {
57
+ name: "events.event_type",
58
+ label: "Event Type",
59
+ description: "Group by event type"
60
+ },
61
+ {
62
+ name: "evaluations.evaluation_passed",
63
+ label: "Evaluation Passed",
64
+ description: "Group by evaluation pass/fail status"
65
+ },
66
+ {
67
+ name: "evaluations.evaluation_label",
68
+ label: "Evaluation Label",
69
+ description: "Group by evaluation label result"
70
+ },
71
+ {
72
+ name: "evaluations.evaluation_processing_state",
73
+ label: "Evaluation Processing State",
74
+ description: "Group by evaluation processing state"
75
+ },
76
+ {
77
+ name: "error.has_error",
78
+ label: "Contains Error",
79
+ description: "Group by whether the trace contains an error"
80
+ }
81
+ ];
82
+
83
+ // src/schemas/analytics-metrics.ts
84
+ var analyticsMetrics = [
85
+ // metadata
86
+ {
87
+ category: "metadata",
88
+ name: "trace_id",
89
+ label: "Traces",
90
+ allowedAggregations: ["cardinality"],
91
+ description: "Count of unique traces"
92
+ },
93
+ {
94
+ category: "metadata",
95
+ name: "user_id",
96
+ label: "Users",
97
+ allowedAggregations: ["cardinality"],
98
+ description: "Count of unique users"
99
+ },
100
+ {
101
+ category: "metadata",
102
+ name: "thread_id",
103
+ label: "Threads",
104
+ allowedAggregations: ["cardinality"],
105
+ description: "Count of unique conversation threads"
106
+ },
107
+ {
108
+ category: "metadata",
109
+ name: "span_type",
110
+ label: "Span Type",
111
+ allowedAggregations: ["cardinality"],
112
+ description: "Count of spans, optionally filtered by span type"
113
+ },
114
+ // sentiment
115
+ {
116
+ category: "sentiment",
117
+ name: "input_sentiment",
118
+ label: "Input Sentiment Score",
119
+ allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
120
+ description: "Sentiment analysis score of inputs"
121
+ },
122
+ {
123
+ category: "sentiment",
124
+ name: "thumbs_up_down",
125
+ label: "Thumbs Up/Down Score",
126
+ allowedAggregations: [
127
+ "terms",
128
+ "cardinality",
129
+ "avg",
130
+ "sum",
131
+ "min",
132
+ "max",
133
+ "median",
134
+ "p99",
135
+ "p95",
136
+ "p90"
137
+ ],
138
+ description: "User feedback score (-1 to 1)"
139
+ },
140
+ // performance
141
+ {
142
+ category: "performance",
143
+ name: "completion_time",
144
+ label: "Completion Time",
145
+ allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
146
+ description: "Time to complete the trace (ms)"
147
+ },
148
+ {
149
+ category: "performance",
150
+ name: "first_token",
151
+ label: "Time to First Token",
152
+ allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
153
+ description: "Time to first token (ms)"
154
+ },
155
+ {
156
+ category: "performance",
157
+ name: "total_cost",
158
+ label: "Total Cost",
159
+ allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
160
+ description: "Cost per trace in USD"
161
+ },
162
+ {
163
+ category: "performance",
164
+ name: "prompt_tokens",
165
+ label: "Prompt Tokens",
166
+ allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
167
+ description: "Input token count"
168
+ },
169
+ {
170
+ category: "performance",
171
+ name: "completion_tokens",
172
+ label: "Completion Tokens",
173
+ allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
174
+ description: "Output token count"
175
+ },
176
+ {
177
+ category: "performance",
178
+ name: "total_tokens",
179
+ label: "Total Tokens",
180
+ allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
181
+ description: "Total token count (input + output)"
182
+ },
183
+ {
184
+ category: "performance",
185
+ name: "tokens_per_second",
186
+ label: "Tokens per Second",
187
+ allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
188
+ description: "Token generation speed"
189
+ },
190
+ // events
191
+ {
192
+ category: "events",
193
+ name: "event_type",
194
+ label: "Event Type",
195
+ allowedAggregations: ["cardinality"],
196
+ description: "Count of events, optionally filtered by event type"
197
+ },
198
+ {
199
+ category: "events",
200
+ name: "event_score",
201
+ label: "Event Score",
202
+ allowedAggregations: ["terms", "avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
203
+ description: "Numeric score from events (requires event_type key and metrics key)"
204
+ },
205
+ {
206
+ category: "events",
207
+ name: "event_details",
208
+ label: "Event Details",
209
+ allowedAggregations: ["cardinality"],
210
+ description: "Event detail key/value distribution (requires event_type key and details key)"
211
+ },
212
+ // evaluations
213
+ {
214
+ category: "evaluations",
215
+ name: "evaluation_score",
216
+ label: "Evaluation Score",
217
+ allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
218
+ description: "Numeric evaluation score (requires evaluator_id key)"
219
+ },
220
+ {
221
+ category: "evaluations",
222
+ name: "evaluation_pass_rate",
223
+ label: "Evaluation Pass Rate",
224
+ allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
225
+ description: "Percentage of traces passing evaluation (requires evaluator_id key)"
226
+ },
227
+ {
228
+ category: "evaluations",
229
+ name: "evaluation_runs",
230
+ label: "Evaluation Runs",
231
+ allowedAggregations: ["cardinality"],
232
+ description: "Count of evaluation executions"
233
+ },
234
+ // threads
235
+ {
236
+ category: "threads",
237
+ name: "average_duration_per_thread",
238
+ label: "Thread Duration",
239
+ allowedAggregations: ["avg"],
240
+ description: "Average duration of conversation threads (ms)"
241
+ }
242
+ ];
243
+
244
+ // src/tools/discover-schema.ts
245
+ var PLATFORM_BACKED = /* @__PURE__ */ new Set(["filters", "lwql", "all"]);
246
+ function needsQueryReference(category) {
247
+ return PLATFORM_BACKED.has(category);
248
+ }
249
+ async function formatSchema(category, reference) {
250
+ const sections = [];
251
+ const resolved = needsQueryReference(category) && !reference ? await getQueryReference() : reference;
252
+ if (category === "filters" || category === "all") {
253
+ sections.push(formatFilters(resolved));
254
+ }
255
+ if (category === "lwql" || category === "all") {
256
+ sections.push(formatLangWatchQL(resolved));
257
+ }
258
+ if (category === "metrics" || category === "all") {
259
+ sections.push(formatMetrics());
260
+ }
261
+ if (category === "aggregations" || category === "all") {
262
+ sections.push(formatAggregations());
263
+ }
264
+ if (category === "groups" || category === "all") {
265
+ sections.push(formatGroups());
266
+ }
267
+ if (category === "all" && resolved) {
268
+ sections.push(formatDecisionTable(resolved));
269
+ }
270
+ return sections.join("\n\n");
271
+ }
272
+ var knownValuesCell = (field) => {
273
+ if (field.knownValues.length > 0) return field.knownValues.join(", ");
274
+ return field.facetable ? "open set, read them from GET /api/v1/traces/facets" : "";
275
+ };
276
+ function formatFilters(reference) {
277
+ if (!reference) {
278
+ return "## Trace Filter Fields\n\nUnavailable: the platform could not be reached.";
279
+ }
280
+ const lines = ["## Trace Filter Fields", ""];
281
+ lines.push(
282
+ "Send one of these as the `filter` parameter of `search_traces`, in the language the Trace Explorer's search bar speaks: `status:error AND model:gpt-*`."
283
+ );
284
+ lines.push(
285
+ "The `filters` parameter is the older per-field map and still works; both are combined when you send both."
286
+ );
287
+ lines.push("");
288
+ lines.push(
289
+ markdownTable({
290
+ headers: ["Field", "Type", "Group", "Known values"],
291
+ rows: reference.traceFilter.fields.map((field) => ({
292
+ Field: field.name,
293
+ Type: field.valueType,
294
+ Group: field.group ?? "",
295
+ "Known values": knownValuesCell(field)
296
+ }))
297
+ })
298
+ );
299
+ lines.push("");
300
+ lines.push("### Attribute namespaces", "");
301
+ lines.push(
302
+ markdownTable({
303
+ headers: ["Prefix", "Matches", "Older spellings"],
304
+ rows: reference.traceFilter.dynamicPrefixes.map((prefix) => ({
305
+ Prefix: `${prefix.prefix}<key>`,
306
+ Matches: prefix.description,
307
+ "Older spellings": prefix.aliases.join(", ")
308
+ }))
309
+ })
310
+ );
311
+ lines.push("");
312
+ lines.push("### Syntax", "");
313
+ lines.push(reference.traceFilter.syntax);
314
+ lines.push("");
315
+ lines.push("### Worked filters", "");
316
+ for (const example of reference.examples.filter(
317
+ (candidate) => candidate.language === "trace-filter"
318
+ )) {
319
+ lines.push(`- \`${example.text}\` \u2014 ${example.title}`);
320
+ }
321
+ return lines.join("\n");
322
+ }
323
+ function formatLangWatchQL(reference) {
324
+ if (!reference) {
325
+ return "## Analytics SQL\n\nUnavailable: the platform could not be reached.";
326
+ }
327
+ if (!reference.lwql.enabled) {
328
+ return [
329
+ "## Analytics SQL",
330
+ "",
331
+ "Not enabled for this project, so `run_query` will refuse. Use `search_traces` and `get_analytics` instead."
332
+ ].join("\n");
333
+ }
334
+ const lines = ["## Analytics SQL", ""];
335
+ lines.push(
336
+ "Run one read-only SELECT with `run_query`. The statement is executed as written: nothing rewrites it."
337
+ );
338
+ lines.push(
339
+ `Ceilings: ${reference.lwql.limits.maxRowsReturned} rows, ${reference.lwql.limits.maxExecutionTimeSeconds} seconds. ${reference.lwql.limits.pagination}`
340
+ );
341
+ lines.push("");
342
+ for (const view of reference.lwql.schema.views) {
343
+ lines.push(`### ${view.name}`);
344
+ lines.push(`${view.description} One row is: ${view.grain}`);
345
+ lines.push(
346
+ `Filter on \`${view.timeColumn}\` to prune partitions. Join keys: ${view.joinKeys.join(", ") || "none"}.`
347
+ );
348
+ lines.push("");
349
+ lines.push(
350
+ markdownTable({
351
+ headers: ["Column", "Type", "Available", "Description"],
352
+ rows: view.columns.map((column) => ({
353
+ Column: column.name,
354
+ Type: column.type,
355
+ Available: column.available ? "yes" : `needs ${column.gates.join(", ")}`,
356
+ Description: column.description
357
+ }))
358
+ })
359
+ );
360
+ lines.push("");
361
+ }
362
+ lines.push("### Worked statements", "");
363
+ for (const example of reference.examples.filter((candidate) => candidate.language === "lwql")) {
364
+ lines.push(
365
+ `**${example.title}**${example.available ? "" : ` (needs ${example.requires.gates.join(", ")})`}`
366
+ );
367
+ lines.push("```sql");
368
+ lines.push(example.text);
369
+ lines.push("```");
370
+ for (const parameter of example.parameters) {
371
+ lines.push(`- \`{${parameter.name}:${parameter.type}}\` \u2014 ${parameter.description}`);
372
+ }
373
+ lines.push("");
374
+ }
375
+ return lines.join("\n");
376
+ }
377
+ function formatDecisionTable(reference) {
378
+ const lines = ["## Which one to reach for", ""];
379
+ lines.push(
380
+ markdownTable({
381
+ headers: ["When you want", "Use", "Why"],
382
+ rows: reference.decisionTable.map((row) => ({
383
+ "When you want": row.when,
384
+ Use: row.use,
385
+ Why: row.why
386
+ }))
387
+ })
388
+ );
389
+ return lines.join("\n");
390
+ }
391
+ function formatMetrics() {
392
+ const lines = ["## Available Metrics", ""];
393
+ lines.push("Use these in `get_analytics` as `metric` parameter in `category.name` format.");
394
+ lines.push("");
395
+ const byCategory = /* @__PURE__ */ new Map();
396
+ for (const m of analyticsMetrics) {
397
+ const list = byCategory.get(m.category) || [];
398
+ list.push(m);
399
+ byCategory.set(m.category, list);
400
+ }
401
+ for (const [cat, metrics] of byCategory) {
402
+ lines.push(`### ${cat}`);
403
+ for (const m of metrics) {
404
+ lines.push(`- **${cat}.${m.name}** (${m.label}): ${m.description}`);
405
+ lines.push(` Aggregations: ${m.allowedAggregations.join(", ")}`);
406
+ }
407
+ lines.push("");
408
+ }
409
+ return lines.join("\n");
410
+ }
411
+ function formatAggregations() {
412
+ return [
413
+ "## Available Aggregation Types",
414
+ "",
415
+ "- **cardinality**: Count unique values",
416
+ "- **terms**: Distribution/breakdown of values",
417
+ "- **avg**: Average",
418
+ "- **sum**: Sum total",
419
+ "- **min**: Minimum",
420
+ "- **max**: Maximum",
421
+ "- **median**: 50th percentile",
422
+ "- **p90**: 90th percentile",
423
+ "- **p95**: 95th percentile",
424
+ "- **p99**: 99th percentile",
425
+ "",
426
+ "Note: Not all aggregations are available for all metrics. Check the metric's allowed aggregations."
427
+ ].join("\n");
428
+ }
429
+ function formatGroups() {
430
+ const lines = ["## Available Group-By Options", ""];
431
+ lines.push("Use these in the `groupBy` parameter of `get_analytics`.");
432
+ lines.push("");
433
+ for (const g of analyticsGroups) {
434
+ lines.push(`- **${g.name}** (${g.label}): ${g.description}`);
435
+ }
436
+ return lines.join("\n");
437
+ }
438
+ export {
439
+ formatSchema,
440
+ needsQueryReference
441
+ };
442
+ //# sourceMappingURL=discover-schema-A33SLMXW.js.map
@@ -0,0 +1,69 @@
1
+ import {
2
+ getAgent
3
+ } from "./chunk-YCARO42Z.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
+
7
+ // src/tools/get-agent.ts
8
+ var describeParameter = ({
9
+ name,
10
+ type,
11
+ options,
12
+ default: defaultValue,
13
+ description,
14
+ required
15
+ }) => {
16
+ const parts = [type];
17
+ if (options?.length) parts.push(`one of ${options.join(", ")}`);
18
+ if (defaultValue !== void 0) parts.push(`default ${JSON.stringify(defaultValue)}`);
19
+ if (required) parts.push("required");
20
+ const suffix = description ? `: ${description}` : "";
21
+ return `- **${name}** (${parts.join(", ")})${suffix}`;
22
+ };
23
+ function instancesSection(instances) {
24
+ const lines = [`
25
+ ## Instances (${instances.length})
26
+ `];
27
+ for (const instance of instances) {
28
+ const label = instance.label ? ` (${instance.label})` : "";
29
+ lines.push(`- ${instance.hostname || instance.id}${label}, connected ${instance.connectedAt}`);
30
+ }
31
+ return lines;
32
+ }
33
+ async function handleGetAgent({ id }) {
34
+ const agent = await getAgent(id);
35
+ const lines = [];
36
+ lines.push(`# ${agent.name}
37
+ `);
38
+ lines.push(`**ID**: ${agent.id}`);
39
+ lines.push(`**Type**: ${agent.type}`);
40
+ if (agent.environment) lines.push(`**Environment**: ${agent.environment}`);
41
+ if (agent.status) lines.push(`**Status**: ${agent.status}`);
42
+ if (agent.owner?.name) lines.push(`**Owner**: ${agent.owner.name}`);
43
+ else if (agent.hostLabel) lines.push(`**Host**: ${agent.hostLabel}`);
44
+ if (agent.selectable === false) {
45
+ lines.push("**Run**: only its owner can run this agent");
46
+ }
47
+ if (agent.lastSeenAt) lines.push(`**Last seen**: ${agent.lastSeenAt}`);
48
+ lines.push(`**Created**: ${agent.createdAt}`);
49
+ lines.push(`**Updated**: ${agent.updatedAt}`);
50
+ if (agent.parameters && agent.parameters.length > 0) {
51
+ lines.push("\n## Parameters\n");
52
+ for (const parameter of agent.parameters) lines.push(describeParameter(parameter));
53
+ }
54
+ if (agent.instances && agent.instances.length > 0) {
55
+ lines.push(...instancesSection(agent.instances));
56
+ }
57
+ if (agent.config && Object.keys(agent.config).length > 0) {
58
+ lines.push("\n## Config\n");
59
+ lines.push("```json");
60
+ lines.push(JSON.stringify(agent.config, null, 2));
61
+ lines.push("```");
62
+ }
63
+ return lines.join("\n");
64
+ }
65
+ export {
66
+ describeParameter,
67
+ handleGetAgent
68
+ };
69
+ //# sourceMappingURL=get-agent-LJQX7OF4.js.map
@@ -0,0 +1,70 @@
1
+ import {
2
+ getAgent
3
+ } from "./chunk-HGELNIVY.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
+ import "./chunk-SAS5OB7F.js";
7
+
8
+ // src/tools/get-agent.ts
9
+ var describeParameter = ({
10
+ name,
11
+ type,
12
+ options,
13
+ default: defaultValue,
14
+ description,
15
+ required
16
+ }) => {
17
+ const parts = [type];
18
+ if (options?.length) parts.push(`one of ${options.join(", ")}`);
19
+ if (defaultValue !== void 0) parts.push(`default ${JSON.stringify(defaultValue)}`);
20
+ if (required) parts.push("required");
21
+ const suffix = description ? `: ${description}` : "";
22
+ return `- **${name}** (${parts.join(", ")})${suffix}`;
23
+ };
24
+ function instancesSection(instances) {
25
+ const lines = [`
26
+ ## Instances (${instances.length})
27
+ `];
28
+ for (const instance of instances) {
29
+ const label = instance.label ? ` (${instance.label})` : "";
30
+ lines.push(`- ${instance.hostname || instance.id}${label}, connected ${instance.connectedAt}`);
31
+ }
32
+ return lines;
33
+ }
34
+ async function handleGetAgent({ id }) {
35
+ const agent = await getAgent(id);
36
+ const lines = [];
37
+ lines.push(`# ${agent.name}
38
+ `);
39
+ lines.push(`**ID**: ${agent.id}`);
40
+ lines.push(`**Type**: ${agent.type}`);
41
+ if (agent.environment) lines.push(`**Environment**: ${agent.environment}`);
42
+ if (agent.status) lines.push(`**Status**: ${agent.status}`);
43
+ if (agent.owner?.name) lines.push(`**Owner**: ${agent.owner.name}`);
44
+ else if (agent.hostLabel) lines.push(`**Host**: ${agent.hostLabel}`);
45
+ if (agent.selectable === false) {
46
+ lines.push("**Run**: only its owner can run this agent");
47
+ }
48
+ if (agent.lastSeenAt) lines.push(`**Last seen**: ${agent.lastSeenAt}`);
49
+ lines.push(`**Created**: ${agent.createdAt}`);
50
+ lines.push(`**Updated**: ${agent.updatedAt}`);
51
+ if (agent.parameters && agent.parameters.length > 0) {
52
+ lines.push("\n## Parameters\n");
53
+ for (const parameter of agent.parameters) lines.push(describeParameter(parameter));
54
+ }
55
+ if (agent.instances && agent.instances.length > 0) {
56
+ lines.push(...instancesSection(agent.instances));
57
+ }
58
+ if (agent.config && Object.keys(agent.config).length > 0) {
59
+ lines.push("\n## Config\n");
60
+ lines.push("```json");
61
+ lines.push(JSON.stringify(agent.config, null, 2));
62
+ lines.push("```");
63
+ }
64
+ return lines.join("\n");
65
+ }
66
+ export {
67
+ describeParameter,
68
+ handleGetAgent
69
+ };
70
+ //# sourceMappingURL=get-agent-OTIYUFZA.js.map
@@ -0,0 +1,80 @@
1
+ import {
2
+ parseRelativeDate
3
+ } from "./chunk-BIIKE3EI.js";
4
+ import {
5
+ getAnalyticsTimeseries
6
+ } from "./chunk-UWLE5T2F.js";
7
+ import "./chunk-H6WGMG2T.js";
8
+ import "./chunk-SAS5OB7F.js";
9
+
10
+ // src/tools/get-analytics.ts
11
+ function getGroupedData(bucket, groupBy) {
12
+ const data = bucket[groupBy];
13
+ if (typeof data === "object" && data !== null && !Array.isArray(data)) {
14
+ return data;
15
+ }
16
+ return void 0;
17
+ }
18
+ function groupedPeriodTable({
19
+ currentPeriod,
20
+ groupBy
21
+ }) {
22
+ const lines = ["| Date | Group | Value |", "|------|-------|-------|"];
23
+ for (const bucket of currentPeriod) {
24
+ const groups = getGroupedData(bucket, groupBy);
25
+ if (!groups) continue;
26
+ for (const [groupKey, metrics] of Object.entries(groups)) {
27
+ const value = Object.values(metrics).find((v) => typeof v === "number") ?? "N/A";
28
+ lines.push(`| ${bucket.date} | ${groupKey} | ${value} |`);
29
+ }
30
+ }
31
+ return lines;
32
+ }
33
+ function periodTable({
34
+ currentPeriod,
35
+ groupBy
36
+ }) {
37
+ if (currentPeriod.length === 0) return ["No data available for this period."];
38
+ if (groupBy && currentPeriod.some((b) => getGroupedData(b, groupBy) !== void 0)) {
39
+ return groupedPeriodTable({ currentPeriod, groupBy });
40
+ }
41
+ const lines = ["| Date | Value |", "|------|-------|"];
42
+ for (const bucket of currentPeriod) {
43
+ const value = Object.entries(bucket).map(([k, v]) => k !== "date" && typeof v === "number" ? v : void 0).find((v) => v !== void 0) ?? "N/A";
44
+ lines.push(`| ${bucket.date} | ${value} |`);
45
+ }
46
+ return lines;
47
+ }
48
+ async function handleGetAnalytics(params) {
49
+ const now = Date.now();
50
+ const startDate = params.startDate ? parseRelativeDate(params.startDate) : now - 7 * 864e5;
51
+ const endDate = params.endDate ? parseRelativeDate(params.endDate) : now;
52
+ const [category, name] = params.metric.includes(".") ? params.metric.split(".", 2) : ["metadata", params.metric];
53
+ const metricKey = `${category}.${name}`;
54
+ const aggregation = params.aggregation ?? "avg";
55
+ const result = await getAnalyticsTimeseries({
56
+ series: [{ metric: metricKey, aggregation }],
57
+ startDate,
58
+ endDate,
59
+ timeZone: params.timeZone ?? "UTC",
60
+ groupBy: params.groupBy,
61
+ filters: params.filters
62
+ });
63
+ const lines = [];
64
+ lines.push(`# Analytics: ${metricKey} (${aggregation})
65
+ `);
66
+ lines.push(
67
+ `Period: ${new Date(startDate).toISOString().split("T")[0]} to ${new Date(endDate).toISOString().split("T")[0]}`
68
+ );
69
+ if (params.groupBy) lines.push(`Grouped by: ${params.groupBy}`);
70
+ lines.push("");
71
+ lines.push(
72
+ ...periodTable({ currentPeriod: result.currentPeriod ?? [], groupBy: params.groupBy })
73
+ );
74
+ lines.push("\n> Tip: Use `discover_schema` to see all available metrics and aggregation types.");
75
+ return lines.join("\n");
76
+ }
77
+ export {
78
+ handleGetAnalytics
79
+ };
80
+ //# sourceMappingURL=get-analytics-DCS72353.js.map