@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,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
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  getAgent
3
- } from "./chunk-EYXMLE5X.js";
4
- import "./chunk-GELJ2MQR.js";
5
- import "./chunk-WT4PO4A3.js";
3
+ } from "./chunk-HGELNIVY.js";
4
+ import "./chunk-UWLE5T2F.js";
5
+ import "./chunk-H6WGMG2T.js";
6
6
  import "./chunk-SAS5OB7F.js";
7
7
 
8
8
  // src/tools/get-agent.ts
@@ -21,6 +21,16 @@ var describeParameter = ({
21
21
  const suffix = description ? `: ${description}` : "";
22
22
  return `- **${name}** (${parts.join(", ")})${suffix}`;
23
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
+ }
24
34
  async function handleGetAgent({ id }) {
25
35
  const agent = await getAgent(id);
26
36
  const lines = [];
@@ -43,13 +53,7 @@ async function handleGetAgent({ id }) {
43
53
  for (const parameter of agent.parameters) lines.push(describeParameter(parameter));
44
54
  }
45
55
  if (agent.instances && agent.instances.length > 0) {
46
- lines.push(`
47
- ## Instances (${agent.instances.length})
48
- `);
49
- for (const instance of agent.instances) {
50
- const label = instance.label ? ` (${instance.label})` : "";
51
- lines.push(`- ${instance.hostname || instance.id}${label}, connected ${instance.connectedAt}`);
52
- }
56
+ lines.push(...instancesSection(agent.instances));
53
57
  }
54
58
  if (agent.config && Object.keys(agent.config).length > 0) {
55
59
  lines.push("\n## Config\n");
@@ -63,4 +67,4 @@ export {
63
67
  describeParameter,
64
68
  handleGetAgent
65
69
  };
66
- //# sourceMappingURL=get-agent-7THF7HCU.js.map
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