@langwatch/mcp-server 2.2.0 → 3.1.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.
- package/CHANGELOG.md +33 -0
- package/dist/add-dashboard-widget-3IE3W5RR.js +46 -0
- package/dist/add-dashboard-widget-XNAIGV37.js +45 -0
- package/dist/{archive-project-KWFM3I5Z.js → archive-project-LAWWNKTX.js} +4 -4
- package/dist/{archive-project-SPVHXK6A.js → archive-project-X64627XS.js} +4 -4
- package/dist/{archive-run-plan-Z4SYE6BP.js → archive-run-plan-3HKFL5MS.js} +4 -4
- package/dist/{archive-run-plan-65QN3XRX.js → archive-run-plan-C35EJACZ.js} +4 -4
- package/dist/{archive-scenario-A6QV5LOW.js → archive-scenario-3DOXHOJJ.js} +4 -4
- package/dist/{archive-scenario-FXEYQNEH.js → archive-scenario-7KDGEZM5.js} +4 -4
- package/dist/{archive-test-suite-NKZDZY3D.js → archive-test-suite-KZOESY2Y.js} +4 -4
- package/dist/{archive-test-suite-5ADQ3KPQ.js → archive-test-suite-RPJ6ZKBV.js} +4 -4
- package/dist/{assign-prompt-tag-5IUZXJ2T.js → assign-prompt-tag-2A25CXB7.js} +3 -3
- package/dist/{assign-prompt-tag-HBZLBIFD.js → assign-prompt-tag-TQRV6D6V.js} +3 -3
- package/dist/{chunk-Y34DHR5K.js → chunk-27SS5FBC.js} +2 -2
- package/dist/chunk-2RLDGMPZ.js +79 -0
- package/dist/{chunk-VMWJD732.js → chunk-3GVTJ7NK.js} +2 -2
- package/dist/chunk-6DF65T3B.js +36 -0
- package/dist/{chunk-3OCG3QPU.js → chunk-6OLI3LFY.js} +2 -2
- package/dist/{chunk-B4J3PJLX.js → chunk-7HJSQOSZ.js} +2 -6
- package/dist/{chunk-UWLE5T2F.js → chunk-7MNQDTKJ.js} +46 -27
- package/dist/{chunk-I7ATIZED.js → chunk-BHCYKMRH.js} +2 -2
- package/dist/{chunk-H6WGMG2T.js → chunk-DULFP3MK.js} +1 -1
- package/dist/{chunk-NKMTIHIJ.js → chunk-FSU2ZBUM.js} +2 -2
- package/dist/{chunk-SXFC3FNH.js → chunk-I2Z5CBOU.js} +2 -2
- package/dist/{chunk-J7PQKBLD.js → chunk-JEMUBKLJ.js} +533 -402
- package/dist/{chunk-7VNSRCXO.js → chunk-JOFSQFCN.js} +2 -2
- package/dist/{chunk-HGELNIVY.js → chunk-JQN3VXPH.js} +3 -3
- package/dist/{chunk-UTJCWXPZ.js → chunk-LXBQK3J3.js} +2 -2
- package/dist/{chunk-JRJPH75H.js → chunk-MQRTYXHJ.js} +2 -2
- package/dist/{chunk-YCARO42Z.js → chunk-P2JRKSYI.js} +3 -3
- package/dist/{chunk-PTDR56Z3.js → chunk-QF7ZGYVI.js} +2 -2
- package/dist/{chunk-UNJM3BIL.js → chunk-QTAHHJH3.js} +2 -2
- package/dist/chunk-SLRQHMJZ.js +41 -0
- package/dist/{chunk-SUPUUC4W.js → chunk-YQWZ4CDN.js} +5 -3
- package/dist/{config-EAKW6F26.js → config-2WQGMAEN.js} +2 -2
- package/dist/config.js +1 -1
- package/dist/{create-agent-S5ZBCEFT.js → create-agent-IE7Q2Z4C.js} +4 -4
- package/dist/{create-agent-AYZ3LB3V.js → create-agent-JMCQ5WZC.js} +4 -4
- package/dist/create-analytics-report-4X5N7EOT.js +19 -0
- package/dist/create-analytics-report-IKWZRS2O.js +18 -0
- package/dist/{create-annotation-VUSXULQK.js → create-annotation-IZ53SJOX.js} +4 -4
- package/dist/{create-annotation-LHNCLHYP.js → create-annotation-JR6DBHPW.js} +4 -4
- package/dist/{create-api-key-T4KSNPKB.js → create-api-key-IKMOTWCD.js} +4 -4
- package/dist/{create-api-key-NNYKARMG.js → create-api-key-YUDAGOWL.js} +4 -4
- package/dist/{create-dataset-2MC4SD4O.js → create-dataset-54FJCX45.js} +4 -4
- package/dist/{create-dataset-LUP5PVDM.js → create-dataset-ONX3RADL.js} +4 -4
- package/dist/{create-dataset-records-W4GLN2FV.js → create-dataset-records-HPLMFDJY.js} +4 -4
- package/dist/{create-dataset-records-NSKBZP3G.js → create-dataset-records-QZZZF64Z.js} +4 -4
- package/dist/{create-evaluator-HMTYO5SS.js → create-evaluator-I5I52HOQ.js} +4 -4
- package/dist/{create-evaluator-643G6LXL.js → create-evaluator-L66QGSDX.js} +4 -4
- package/dist/create-mcp-server.cjs +851 -597
- package/dist/create-mcp-server.js +523 -392
- package/dist/{create-project-6N7PIYRY.js → create-project-UPZGETN5.js} +4 -4
- package/dist/{create-project-KAIC46UY.js → create-project-Y5EGJKDG.js} +4 -4
- package/dist/{create-prompt-PKJ7EDRR.js → create-prompt-RNUJOL25.js} +3 -3
- package/dist/{create-prompt-E67LXIYT.js → create-prompt-WGQLJASD.js} +3 -3
- package/dist/{create-prompt-tag-OPQUEXWB.js → create-prompt-tag-3ZCA7M7O.js} +3 -3
- package/dist/{create-prompt-tag-4YO3FSJ3.js → create-prompt-tag-R6KIAZTB.js} +3 -3
- package/dist/{create-scenario-UEM77OE7.js → create-scenario-WIMKZLQO.js} +4 -4
- package/dist/{create-scenario-5PJBMAXO.js → create-scenario-WO5NWXVQ.js} +4 -4
- package/dist/{create-test-suite-4IPXVSFQ.js → create-test-suite-AVSR7IIM.js} +4 -4
- package/dist/{create-test-suite-SZEPVXSE.js → create-test-suite-LRKCNIJA.js} +4 -4
- package/dist/{create-trigger-5HZSCRAN.js → create-trigger-CBO2XDYC.js} +4 -4
- package/dist/{create-trigger-PRELMT6J.js → create-trigger-M3VFK5UH.js} +4 -4
- package/dist/dashboards-4X6QUT3E.js +90 -0
- package/dist/dashboards-CX2T6RKH.js +91 -0
- package/dist/{delete-agent-QMEK3XHK.js → delete-agent-QUVDMSOC.js} +4 -4
- package/dist/{delete-agent-JUIZWAXG.js → delete-agent-Y4QTEQ3B.js} +4 -4
- package/dist/delete-analytics-report-T4GIMEOA.js +18 -0
- package/dist/delete-analytics-report-WIP24EXV.js +19 -0
- package/dist/{delete-annotation-VKIQWUYW.js → delete-annotation-BWO5ZEZY.js} +4 -4
- package/dist/{delete-annotation-HY3O2OGR.js → delete-annotation-ESUH3RWN.js} +4 -4
- package/dist/{delete-dataset-WKRUW4FP.js → delete-dataset-N4AEYIAA.js} +4 -4
- package/dist/{delete-dataset-HQCR66MG.js → delete-dataset-ZRD23FLO.js} +4 -4
- package/dist/{delete-dataset-records-SDUHQLLM.js → delete-dataset-records-HC7VLBT7.js} +4 -4
- package/dist/{delete-dataset-records-C2IQFFVQ.js → delete-dataset-records-XC2DFVXD.js} +4 -4
- package/dist/{delete-evaluator-QP3QHTLN.js → delete-evaluator-27P5XLNV.js} +4 -4
- package/dist/{delete-evaluator-4SNSCLEE.js → delete-evaluator-LJII4YLC.js} +4 -4
- package/dist/{delete-prompt-tag-YYQ4VMAD.js → delete-prompt-tag-DH7IQO4X.js} +3 -3
- package/dist/{delete-prompt-tag-NZ4JQMYG.js → delete-prompt-tag-OC57CN32.js} +3 -3
- package/dist/{delete-workflow-5J46T73T.js → delete-workflow-I4IXK3ZL.js} +4 -4
- package/dist/{delete-workflow-JSWABL5F.js → delete-workflow-JXREDDW7.js} +4 -4
- package/dist/{discover-schema-A33SLMXW.js → discover-schema-ME5BAD2S.js} +4 -4
- package/dist/{discover-schema-55YJBFGQ.js → discover-schema-OHYBG3CY.js} +4 -4
- package/dist/{get-agent-LJQX7OF4.js → get-agent-6GKIKKL7.js} +4 -4
- package/dist/{get-agent-OTIYUFZA.js → get-agent-UKZUBVPB.js} +4 -4
- package/dist/{get-analytics-IQZKJHLW.js → get-analytics-TI2U3JLA.js} +3 -3
- package/dist/{get-analytics-DCS72353.js → get-analytics-ZGQ4LY3I.js} +3 -3
- package/dist/get-analytics-report-PD6XZ4ZA.js +29 -0
- package/dist/get-analytics-report-QMXNQ7VA.js +30 -0
- package/dist/{get-dataset-ALSP7RTX.js → get-dataset-5QORNVOZ.js} +4 -4
- package/dist/{get-dataset-X4B5JDG2.js → get-dataset-E5WLIPNK.js} +4 -4
- package/dist/{get-evaluator-XEUZGZCH.js → get-evaluator-GYQFB4F3.js} +4 -4
- package/dist/{get-evaluator-ISMC4LLI.js → get-evaluator-QQV65MQB.js} +4 -4
- package/dist/{get-project-5VKROSDH.js → get-project-43SGQCAT.js} +4 -4
- package/dist/{get-project-RM6FRCBK.js → get-project-W5DCKXZP.js} +4 -4
- package/dist/{get-prompt-OWXJZHQQ.js → get-prompt-IUTPSRRI.js} +3 -3
- package/dist/{get-prompt-W52DY36E.js → get-prompt-ZTCWGYJV.js} +3 -3
- package/dist/{get-run-plan-BE3M2AUX.js → get-run-plan-M3LVXMGO.js} +4 -4
- package/dist/{get-run-plan-RUXQ6PAX.js → get-run-plan-MEPEU353.js} +4 -4
- package/dist/{get-scenario-RNM7BAX2.js → get-scenario-2DM4XR44.js} +4 -4
- package/dist/{get-scenario-YM4ODWW6.js → get-scenario-D6EPSSPW.js} +4 -4
- package/dist/{get-simulation-run-6GIATQE5.js → get-simulation-run-53WM2XOO.js} +4 -4
- package/dist/{get-simulation-run-LCFSMPGQ.js → get-simulation-run-RKQ52TKP.js} +4 -4
- package/dist/{get-test-suite-P5LJ6VLF.js → get-test-suite-DP2HNOQZ.js} +4 -4
- package/dist/{get-test-suite-GC2O7YH6.js → get-test-suite-MUSY2CDJ.js} +4 -4
- package/dist/{get-trace-SEF3FMR5.js → get-trace-5Z2BIZ3V.js} +3 -3
- package/dist/{get-trace-KBRVV4NN.js → get-trace-THPWSLD3.js} +3 -3
- package/dist/{get-workflow-YXULW4GC.js → get-workflow-63E7BNLY.js} +4 -4
- package/dist/{get-workflow-7PVED7JE.js → get-workflow-R6XUKTZ7.js} +4 -4
- package/dist/{http-server-IR4QOS43.js → http-server-4JHSQN56.js} +245 -45
- package/dist/index.js +1847 -899
- package/dist/langwatch-api-analytics-reports-IIHGTTQA.js +17 -0
- package/dist/langwatch-api-analytics-reports-IQ6CHM5Y.js +18 -0
- package/dist/{langwatch-api-annotations-TBHLCQ5R.js → langwatch-api-annotations-CN2KYV3Z.js} +4 -4
- package/dist/{langwatch-api-annotations-6SA4OB4C.js → langwatch-api-annotations-CRI6JTQR.js} +4 -4
- package/dist/{langwatch-api-monitors-CBF3FGIM.js → langwatch-api-monitors-66O5Z5LB.js} +3 -3
- package/dist/{langwatch-api-monitors-YNWA2M5Y.js → langwatch-api-monitors-GNHQRPMR.js} +3 -3
- package/dist/{langwatch-api-secrets-RNFO4LF2.js → langwatch-api-secrets-B7BURV76.js} +3 -3
- package/dist/{langwatch-api-secrets-ADTOJELP.js → langwatch-api-secrets-P6SHZOHE.js} +3 -3
- package/dist/{langwatch-api-triggers-KQDQC6L5.js → langwatch-api-triggers-6FR4VWDL.js} +4 -4
- package/dist/{langwatch-api-triggers-QS7HDIVW.js → langwatch-api-triggers-VKNGXSJH.js} +4 -4
- package/dist/langwatch-api-workflows-22RQFYO7.js +15 -0
- package/dist/{langwatch-api-workflows-OKC4FXIF.js → langwatch-api-workflows-KDACD36L.js} +4 -4
- package/dist/{list-agents-RBAOCF53.js → list-agents-SVXWLLO7.js} +4 -4
- package/dist/{list-agents-HVYWEQMI.js → list-agents-XM5JNCVK.js} +4 -4
- package/dist/list-analytics-reports-DEKKC6BU.js +32 -0
- package/dist/list-analytics-reports-E7QFC22G.js +33 -0
- package/dist/{list-annotations-J4UAHSUN.js → list-annotations-5CGNOIKI.js} +4 -4
- package/dist/{list-annotations-HJH4NBLD.js → list-annotations-P26ELIAO.js} +4 -4
- package/dist/{list-api-keys-A2PMV435.js → list-api-keys-B4YL7STE.js} +4 -4
- package/dist/{list-api-keys-7UTJRZDG.js → list-api-keys-ZIJJH755.js} +4 -4
- package/dist/list-dashboards-F4YJPDKD.js +29 -0
- package/dist/list-dashboards-XHYTXEQK.js +30 -0
- package/dist/{list-dataset-records-WFM7F33C.js → list-dataset-records-SWCEDRPX.js} +4 -4
- package/dist/{list-dataset-records-M5TKA6LK.js → list-dataset-records-YWGROVKC.js} +4 -4
- package/dist/{list-datasets-B5X4P7BQ.js → list-datasets-32SCF66H.js} +4 -4
- package/dist/{list-datasets-THUKQHPX.js → list-datasets-YYADWT4D.js} +4 -4
- package/dist/{list-evaluators-MYH2OVCI.js → list-evaluators-KKQKBJKN.js} +4 -4
- package/dist/{list-evaluators-NLVWF6K7.js → list-evaluators-V6LP6ZQA.js} +4 -4
- package/dist/{list-model-providers-3JUGP4YI.js → list-model-providers-RCPVT7R4.js} +4 -4
- package/dist/{list-model-providers-H3XKORFO.js → list-model-providers-TMBSB6EE.js} +4 -4
- package/dist/{list-projects-YNNSRMLC.js → list-projects-4Y74TFDZ.js} +4 -4
- package/dist/{list-projects-6EJ5YYEW.js → list-projects-R4MTRF3C.js} +4 -4
- package/dist/{list-prompt-tags-NVFQO6WX.js → list-prompt-tags-C345AGM2.js} +3 -3
- package/dist/{list-prompt-tags-XUQTTAH4.js → list-prompt-tags-RITKQDC5.js} +3 -3
- package/dist/{list-prompts-IRI6AIXO.js → list-prompts-DSJ2LUSU.js} +3 -3
- package/dist/{list-prompts-HSIMMHTF.js → list-prompts-F7C5L5XK.js} +3 -3
- package/dist/{list-run-plans-PX2XI6EK.js → list-run-plans-YPGLC5QG.js} +4 -4
- package/dist/{list-run-plans-QALLCN2K.js → list-run-plans-ZHRZHCDL.js} +4 -4
- package/dist/{list-scenarios-SSJQEMJP.js → list-scenarios-6HN72TMW.js} +4 -4
- package/dist/{list-scenarios-QZRPVHS4.js → list-scenarios-HCYFOTSL.js} +4 -4
- package/dist/{list-simulation-runs-OEADLLQR.js → list-simulation-runs-BKVMQQMT.js} +4 -4
- package/dist/{list-simulation-runs-KNOLGMDV.js → list-simulation-runs-JNST5PQU.js} +4 -4
- package/dist/{list-test-suites-N4WVLBKK.js → list-test-suites-4ZVYYKVB.js} +4 -4
- package/dist/{list-test-suites-ANAQBLDG.js → list-test-suites-YY4J3L7H.js} +4 -4
- package/dist/{list-trigger-fires-WTW4DVIW.js → list-trigger-fires-3XM6YZWG.js} +4 -4
- package/dist/{list-trigger-fires-JV3WFYYG.js → list-trigger-fires-5C5XM2KQ.js} +4 -4
- package/dist/{list-triggers-V4Y356AK.js → list-triggers-DARBIIRA.js} +4 -4
- package/dist/{list-triggers-SQNIG35Q.js → list-triggers-MRSWN7RR.js} +4 -4
- package/dist/{list-workflows-ZHTX5LCL.js → list-workflows-BGUSQUJX.js} +4 -4
- package/dist/{list-workflows-IMSX7SXU.js → list-workflows-NXOWP3XS.js} +4 -4
- package/dist/{rename-prompt-tag-IQI7MHOI.js → rename-prompt-tag-F3WT4FB4.js} +3 -3
- package/dist/{rename-prompt-tag-PA2BRIE6.js → rename-prompt-tag-HR5HZZI2.js} +3 -3
- package/dist/{rename-test-suite-NNVLMLKY.js → rename-test-suite-2ZRXG5O7.js} +4 -4
- package/dist/{rename-test-suite-4J7UX5S2.js → rename-test-suite-PWXKE7Z4.js} +4 -4
- package/dist/{report-issue-AS34ZMJF.js → report-issue-HG7XCPOY.js} +28 -2
- package/dist/{report-issue-DCZFLGDO.js → report-issue-TWRFUPGB.js} +28 -2
- package/dist/{rerun-run-plan-TG2V4WM4.js → rerun-run-plan-BFRZFEJB.js} +4 -4
- package/dist/{rerun-run-plan-ZI5OY3VA.js → rerun-run-plan-LXM3RFZC.js} +4 -4
- package/dist/{revoke-api-key-3J3ZA4UB.js → revoke-api-key-GR55PUP4.js} +4 -4
- package/dist/{revoke-api-key-SFMEFWJC.js → revoke-api-key-KCDOYPUK.js} +4 -4
- package/dist/{run-agent-YNV6ZHW4.js → run-agent-HRVRHRHI.js} +4 -4
- package/dist/{run-agent-W4VJP72Z.js → run-agent-WS6TADJQ.js} +4 -4
- package/dist/{run-plan-6C77GWG4.js → run-plan-G24DBB5D.js} +4 -4
- package/dist/{run-plan-PAARQSI4.js → run-plan-NSXMBEC5.js} +4 -4
- package/dist/{run-query-T4QW2Z5O.js → run-query-6YVOA5NV.js} +19 -5
- package/dist/{run-query-KJDH544C.js → run-query-7QIYSDVI.js} +19 -5
- package/dist/{run-test-suite-STB6NUJM.js → run-test-suite-NTKLJZCJ.js} +4 -4
- package/dist/{run-test-suite-SQJELEZX.js → run-test-suite-P33XFQ6H.js} +4 -4
- package/dist/{run-workflow-D6PQNBI6.js → run-workflow-E5ZRSXUB.js} +4 -4
- package/dist/{run-workflow-SP32SO5M.js → run-workflow-HDF6CRLM.js} +4 -4
- package/dist/{search-traces-HCBGOG6R.js → search-traces-X7NSRTTP.js} +3 -3
- package/dist/{search-traces-HSTQ6WTQ.js → search-traces-XWZYOZOM.js} +3 -3
- package/dist/{set-model-provider-GF7NXUJA.js → set-model-provider-XJF47L6H.js} +4 -4
- package/dist/{set-model-provider-KDQ7C4EZ.js → set-model-provider-YPUCFEXG.js} +4 -4
- package/dist/{update-agent-MXNOBS4H.js → update-agent-6FHGWOO7.js} +4 -4
- package/dist/{update-agent-DWG43T2P.js → update-agent-VEDXQRSM.js} +4 -4
- package/dist/update-dashboard-widget-VOKXN7JA.js +64 -0
- package/dist/update-dashboard-widget-VUIQZ7F5.js +63 -0
- package/dist/{update-dataset-SQZ6T4WX.js → update-dataset-7AQ24NRS.js} +4 -4
- package/dist/{update-dataset-DQH3OHOU.js → update-dataset-GHKDCJJQ.js} +4 -4
- package/dist/{update-dataset-record-3AT4IPBC.js → update-dataset-record-IRD6FH2C.js} +4 -4
- package/dist/{update-dataset-record-7PLDGTMR.js → update-dataset-record-ZZUPG7AS.js} +4 -4
- package/dist/{update-evaluator-4LFTKFPT.js → update-evaluator-O6EJFTQJ.js} +4 -4
- package/dist/{update-evaluator-IGTX6PX4.js → update-evaluator-PUJFU5LT.js} +4 -4
- package/dist/{update-project-PLJIOZS6.js → update-project-HO53IHXC.js} +4 -4
- package/dist/{update-project-QVHSJRUP.js → update-project-VTVU6KNP.js} +4 -4
- package/dist/{update-prompt-GDKRYJI3.js → update-prompt-FABVQCAC.js} +3 -3
- package/dist/{update-prompt-MY263DYF.js → update-prompt-MNRLCLBA.js} +3 -3
- package/dist/{update-scenario-MOHRQKAQ.js → update-scenario-MQZZM5CP.js} +4 -4
- package/dist/{update-scenario-7KA3JDXA.js → update-scenario-XIZNUH4I.js} +4 -4
- package/package.json +2 -2
- package/pyproject.toml +17 -2
- package/src/config.d.ts +2 -0
- package/src/config.ts +2 -0
- package/src/create-mcp-server.ts +165 -41
- package/src/langwatch-api-analytics-reports.ts +62 -0
- package/src/langwatch-api-dashboard-widgets.ts +4 -68
- package/src/langwatch-api-dashboards.ts +110 -28
- package/src/langwatch-api-projects.ts +0 -17
- package/src/langwatch-api-query.ts +6 -0
- package/src/langwatch-api.ts +60 -27
- package/src/schemas/widget-sources.ts +69 -0
- package/src/tools/add-dashboard-widget.ts +23 -32
- package/src/tools/create-analytics-report.ts +7 -0
- package/src/tools/dashboard-widget-queries.ts +22 -0
- package/src/tools/dashboards.ts +104 -0
- package/src/tools/delete-analytics-report.ts +7 -0
- package/src/tools/get-analytics-report.ts +23 -0
- package/src/tools/list-analytics-reports.ts +27 -0
- package/src/tools/list-dashboards.ts +20 -21
- package/src/tools/report-issue.ts +2 -0
- package/src/tools/run-experiment.ts +5 -1
- package/src/tools/run-query.ts +23 -1
- package/src/tools/update-dashboard-widget.ts +32 -40
- package/uv.lock +667 -341
- package/dist/add-dashboard-widget-4ZC5UN73.js +0 -50
- package/dist/add-dashboard-widget-ACC6QYBG.js +0 -49
- package/dist/chunk-5FNCQRCX.js +0 -91
- package/dist/chunk-ILZDO25L.js +0 -36
- package/dist/chunk-K2I7Z3LZ.js +0 -28
- package/dist/create-dashboard-DHVFMEU4.js +0 -18
- package/dist/create-dashboard-WTKKS5Z6.js +0 -19
- package/dist/delete-dashboard-76N66XXL.js +0 -18
- package/dist/delete-dashboard-JVIVHNJM.js +0 -19
- package/dist/get-dashboard-5NYJEIX2.js +0 -29
- package/dist/get-dashboard-QMTYDQAZ.js +0 -30
- package/dist/langwatch-api-dashboards-6EO2VVZW.js +0 -17
- package/dist/langwatch-api-dashboards-NHU5BZD7.js +0 -18
- package/dist/langwatch-api-workflows-XGJE6SR5.js +0 -15
- package/dist/list-dashboard-boards-OPWROHMG.js +0 -33
- package/dist/list-dashboard-boards-U2GJ7GC5.js +0 -34
- package/dist/list-dashboards-ROSYFLDQ.js +0 -33
- package/dist/list-dashboards-RQ635ZU7.js +0 -32
- package/dist/update-dashboard-widget-CJKJLCDY.js +0 -71
- package/dist/update-dashboard-widget-CYQDS2NR.js +0 -70
- package/src/langwatch-api-boards.ts +0 -46
- package/src/tools/create-dashboard.ts +0 -7
- package/src/tools/dashboard-exists.ts +0 -25
- package/src/tools/delete-dashboard.ts +0 -7
- package/src/tools/get-dashboard.ts +0 -22
- package/src/tools/list-dashboard-boards.ts +0 -28
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.1.0](https://github.com/langwatch/langwatch/compare/mcp-server@v3.0.0...mcp-server@v3.1.0) (2026-11-02)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **dashboards:** widget queries take sources and projects as params ([#9171](https://github.com/langwatch/langwatch/issues/9171)) ([af5a9c3](https://github.com/langwatch/langwatch/commit/af5a9c342951371a1cf547188cff78f9cd50bcc1))
|
|
9
|
+
|
|
10
|
+
## [3.0.0](https://github.com/langwatch/langwatch/compare/mcp-server@v2.2.0...mcp-server@v3.0.0) (2026-10-30)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### ⚠ BREAKING CHANGES
|
|
14
|
+
|
|
15
|
+
* **sdk:** client.dashboards and langwatch.dashboards now address the new Dashboards API, not the old Reports; use client.analyticsReports / langwatch.analytics_reports for those. MCP Reports tools are renamed platform_*_analytics_report(s).
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* **auth:** log which credential and client each API request used ([#9003](https://github.com/langwatch/langwatch/issues/9003)) ([c55dc6e](https://github.com/langwatch/langwatch/commit/c55dc6e6e22aa2a6563b4be7d3e93d7f40c7f23b))
|
|
20
|
+
* **dashboard:** add REST create and delete for Dashboards boards ([#8896](https://github.com/langwatch/langwatch/issues/8896)) ([fbc1469](https://github.com/langwatch/langwatch/commit/fbc1469027d6ef59c920243f63e2ebaf2264bcf8))
|
|
21
|
+
* **dashboards:** per-widget "Langy traces" setting in the query editor ([#9137](https://github.com/langwatch/langwatch/issues/9137)) ([5e82c1e](https://github.com/langwatch/langwatch/commit/5e82c1ebc1d2dbfda817cf175f3aba62e485a0d8))
|
|
22
|
+
* **experiment:** accept a per-run concurrency on the experiment run API ([#9023](https://github.com/langwatch/langwatch/issues/9023)) ([640d0f6](https://github.com/langwatch/langwatch/commit/640d0f6e21afd19e46eaed9312d4c04c121b9a4b))
|
|
23
|
+
* **monitor:** pause a monitor whose evaluations mostly fail ([#9040](https://github.com/langwatch/langwatch/issues/9040)) ([fcbd9ed](https://github.com/langwatch/langwatch/commit/fcbd9edabbfa2fd9b3a4c142c678298a846e184d))
|
|
24
|
+
* **sdk:** one product per dashboards path; dashboards means the new product everywhere ([#9089](https://github.com/langwatch/langwatch/issues/9089)) ([552534d](https://github.com/langwatch/langwatch/commit/552534d24487441ac5395d91c1af69ed072a0c00))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Bug Fixes
|
|
28
|
+
|
|
29
|
+
* **dashboards:** refresh moves fixed ranges, hidden stars keep their place, agents read boards by id ([#9048](https://github.com/langwatch/langwatch/issues/9048)) ([a5ea0ed](https://github.com/langwatch/langwatch/commit/a5ea0eda1d886635096da02bb76b2b99f9bed6f6))
|
|
30
|
+
* **deps:** raise authlib, litellm and dnspython for today's advisories ([#9120](https://github.com/langwatch/langwatch/issues/9120)) ([828259f](https://github.com/langwatch/langwatch/commit/828259f92eafec9a0d4e1c5ffecab87e4abd2257))
|
|
31
|
+
* **langevals:** judges reach a verdict on gpt-6 reasoning models ([#9102](https://github.com/langwatch/langwatch/issues/9102)) ([d7b6238](https://github.com/langwatch/langwatch/commit/d7b623874e55e0b6af4d81ce9671114d54dfb2cc))
|
|
32
|
+
* **mcp:** repair main after the board-reading merge ([#9087](https://github.com/langwatch/langwatch/issues/9087)) ([96a4bf6](https://github.com/langwatch/langwatch/commit/96a4bf61c903ffb0f75b64e93cef7fd43d0897cd))
|
|
33
|
+
* **security:** close 148 of 150 alerts across the python locks ([#7634](https://github.com/langwatch/langwatch/issues/7634)) ([c0837d1](https://github.com/langwatch/langwatch/commit/c0837d164d28f15ba179fc6f1c1f0516be32cfa3))
|
|
34
|
+
* **security:** close the nine alerts raised on 2026-10-22 ([#8982](https://github.com/langwatch/langwatch/issues/8982)) ([7eca2c2](https://github.com/langwatch/langwatch/commit/7eca2c24ccba4b38a1636048ea18801a2fd1d2b1))
|
|
35
|
+
|
|
3
36
|
## [2.2.0](https://github.com/langwatch/langwatch/compare/mcp-server@v2.1.0...mcp-server@v2.2.0) (2026-10-21)
|
|
4
37
|
|
|
5
38
|
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import {
|
|
2
|
+
normalizeDashboardWidgetQueries,
|
|
3
|
+
withLists
|
|
4
|
+
} from "./chunk-6DF65T3B.js";
|
|
5
|
+
import {
|
|
6
|
+
createWidgetOnDashboard
|
|
7
|
+
} from "./chunk-2RLDGMPZ.js";
|
|
8
|
+
import {
|
|
9
|
+
LangWatchApiError
|
|
10
|
+
} from "./chunk-7MNQDTKJ.js";
|
|
11
|
+
import "./chunk-DULFP3MK.js";
|
|
12
|
+
import "./chunk-SAS5OB7F.js";
|
|
13
|
+
|
|
14
|
+
// src/tools/add-dashboard-widget.ts
|
|
15
|
+
async function handleAddDashboardWidget(params) {
|
|
16
|
+
const queries = withLists({
|
|
17
|
+
queries: normalizeDashboardWidgetQueries({ queries: params.queries }),
|
|
18
|
+
sources: params.sources,
|
|
19
|
+
projects: params.projects
|
|
20
|
+
});
|
|
21
|
+
let widget;
|
|
22
|
+
try {
|
|
23
|
+
widget = await createWidgetOnDashboard({
|
|
24
|
+
dashboardId: params.dashboardId,
|
|
25
|
+
name: params.name,
|
|
26
|
+
code: params.code,
|
|
27
|
+
queries
|
|
28
|
+
});
|
|
29
|
+
} catch (error) {
|
|
30
|
+
if (error instanceof LangWatchApiError && error.status === 404) {
|
|
31
|
+
throw new Error(
|
|
32
|
+
`No dashboard with ID "${params.dashboardId}" was found in this project. Use list_dashboards to find a valid dashboard ID.`
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
return [
|
|
38
|
+
`Widget "${params.name}" created and added to dashboard "${params.dashboardId}".`,
|
|
39
|
+
`**Widget ID**: ${widget.id}`,
|
|
40
|
+
`**Queries**: ${queries.map((q) => q.name).join(", ")}`
|
|
41
|
+
].join("\n");
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
handleAddDashboardWidget
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=add-dashboard-widget-3IE3W5RR.js.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {
|
|
2
|
+
normalizeDashboardWidgetQueries,
|
|
3
|
+
withLists
|
|
4
|
+
} from "./chunk-6DF65T3B.js";
|
|
5
|
+
import {
|
|
6
|
+
createWidgetOnDashboard
|
|
7
|
+
} from "./chunk-2RLDGMPZ.js";
|
|
8
|
+
import {
|
|
9
|
+
LangWatchApiError
|
|
10
|
+
} from "./chunk-7MNQDTKJ.js";
|
|
11
|
+
import "./chunk-DULFP3MK.js";
|
|
12
|
+
|
|
13
|
+
// src/tools/add-dashboard-widget.ts
|
|
14
|
+
async function handleAddDashboardWidget(params) {
|
|
15
|
+
const queries = withLists({
|
|
16
|
+
queries: normalizeDashboardWidgetQueries({ queries: params.queries }),
|
|
17
|
+
sources: params.sources,
|
|
18
|
+
projects: params.projects
|
|
19
|
+
});
|
|
20
|
+
let widget;
|
|
21
|
+
try {
|
|
22
|
+
widget = await createWidgetOnDashboard({
|
|
23
|
+
dashboardId: params.dashboardId,
|
|
24
|
+
name: params.name,
|
|
25
|
+
code: params.code,
|
|
26
|
+
queries
|
|
27
|
+
});
|
|
28
|
+
} catch (error) {
|
|
29
|
+
if (error instanceof LangWatchApiError && error.status === 404) {
|
|
30
|
+
throw new Error(
|
|
31
|
+
`No dashboard with ID "${params.dashboardId}" was found in this project. Use list_dashboards to find a valid dashboard ID.`
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
return [
|
|
37
|
+
`Widget "${params.name}" created and added to dashboard "${params.dashboardId}".`,
|
|
38
|
+
`**Widget ID**: ${widget.id}`,
|
|
39
|
+
`**Queries**: ${queries.map((q) => q.name).join(", ")}`
|
|
40
|
+
].join("\n");
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
handleAddDashboardWidget
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=add-dashboard-widget-XNAIGV37.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
archiveProject
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-7HJSQOSZ.js";
|
|
4
|
+
import "./chunk-7MNQDTKJ.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
|
|
7
7
|
// src/tools/archive-project.ts
|
|
8
8
|
async function handleArchiveProject(params) {
|
|
@@ -16,4 +16,4 @@ async function handleArchiveProject(params) {
|
|
|
16
16
|
export {
|
|
17
17
|
handleArchiveProject
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=archive-project-
|
|
19
|
+
//# sourceMappingURL=archive-project-LAWWNKTX.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
archiveProject
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-7HJSQOSZ.js";
|
|
4
|
+
import "./chunk-7MNQDTKJ.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/archive-project.ts
|
|
@@ -17,4 +17,4 @@ async function handleArchiveProject(params) {
|
|
|
17
17
|
export {
|
|
18
18
|
handleArchiveProject
|
|
19
19
|
};
|
|
20
|
-
//# sourceMappingURL=archive-project-
|
|
20
|
+
//# sourceMappingURL=archive-project-X64627XS.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
archiveRunPlan
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-QF7ZGYVI.js";
|
|
4
|
+
import "./chunk-7MNQDTKJ.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
|
|
7
7
|
// src/tools/archive-run-plan.ts
|
|
8
8
|
async function handleArchiveRunPlan(params) {
|
|
@@ -12,4 +12,4 @@ async function handleArchiveRunPlan(params) {
|
|
|
12
12
|
export {
|
|
13
13
|
handleArchiveRunPlan
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=archive-run-plan-
|
|
15
|
+
//# sourceMappingURL=archive-run-plan-3HKFL5MS.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
archiveRunPlan
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-QF7ZGYVI.js";
|
|
4
|
+
import "./chunk-7MNQDTKJ.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/archive-run-plan.ts
|
|
@@ -13,4 +13,4 @@ async function handleArchiveRunPlan(params) {
|
|
|
13
13
|
export {
|
|
14
14
|
handleArchiveRunPlan
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=archive-run-plan-
|
|
16
|
+
//# sourceMappingURL=archive-run-plan-C35EJACZ.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
archiveScenario
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-BHCYKMRH.js";
|
|
4
|
+
import "./chunk-7MNQDTKJ.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/archive-scenario.ts
|
|
@@ -17,4 +17,4 @@ async function handleArchiveScenario(params) {
|
|
|
17
17
|
export {
|
|
18
18
|
handleArchiveScenario
|
|
19
19
|
};
|
|
20
|
-
//# sourceMappingURL=archive-scenario-
|
|
20
|
+
//# sourceMappingURL=archive-scenario-3DOXHOJJ.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
archiveScenario
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-BHCYKMRH.js";
|
|
4
|
+
import "./chunk-7MNQDTKJ.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
|
|
7
7
|
// src/tools/archive-scenario.ts
|
|
8
8
|
async function handleArchiveScenario(params) {
|
|
@@ -16,4 +16,4 @@ async function handleArchiveScenario(params) {
|
|
|
16
16
|
export {
|
|
17
17
|
handleArchiveScenario
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=archive-scenario-
|
|
19
|
+
//# sourceMappingURL=archive-scenario-7KDGEZM5.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
archiveTestSuite
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-3GVTJ7NK.js";
|
|
4
|
+
import "./chunk-7MNQDTKJ.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/archive-test-suite.ts
|
|
@@ -13,4 +13,4 @@ async function handleArchiveTestSuite(params) {
|
|
|
13
13
|
export {
|
|
14
14
|
handleArchiveTestSuite
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=archive-test-suite-
|
|
16
|
+
//# sourceMappingURL=archive-test-suite-KZOESY2Y.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
archiveTestSuite
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-3GVTJ7NK.js";
|
|
4
|
+
import "./chunk-7MNQDTKJ.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
|
|
7
7
|
// src/tools/archive-test-suite.ts
|
|
8
8
|
async function handleArchiveTestSuite(params) {
|
|
@@ -12,4 +12,4 @@ async function handleArchiveTestSuite(params) {
|
|
|
12
12
|
export {
|
|
13
13
|
handleArchiveTestSuite
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=archive-test-suite-
|
|
15
|
+
//# sourceMappingURL=archive-test-suite-RPJ6ZKBV.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assignPromptTag
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-7MNQDTKJ.js";
|
|
4
|
+
import "./chunk-DULFP3MK.js";
|
|
5
5
|
|
|
6
6
|
// src/tools/assign-prompt-tag.ts
|
|
7
7
|
async function handleAssignPromptTag(params) {
|
|
@@ -20,4 +20,4 @@ async function handleAssignPromptTag(params) {
|
|
|
20
20
|
export {
|
|
21
21
|
handleAssignPromptTag
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=assign-prompt-tag-
|
|
23
|
+
//# sourceMappingURL=assign-prompt-tag-2A25CXB7.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assignPromptTag
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-7MNQDTKJ.js";
|
|
4
|
+
import "./chunk-DULFP3MK.js";
|
|
5
5
|
import "./chunk-SAS5OB7F.js";
|
|
6
6
|
|
|
7
7
|
// src/tools/assign-prompt-tag.ts
|
|
@@ -21,4 +21,4 @@ async function handleAssignPromptTag(params) {
|
|
|
21
21
|
export {
|
|
22
22
|
handleAssignPromptTag
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=assign-prompt-tag-
|
|
24
|
+
//# sourceMappingURL=assign-prompt-tag-TQRV6D6V.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-3YLN3ATJ.js";
|
|
7
7
|
import {
|
|
8
8
|
makeRequest
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-7MNQDTKJ.js";
|
|
10
10
|
|
|
11
11
|
// src/langwatch-api-triggers.ts
|
|
12
12
|
import { z } from "zod";
|
|
@@ -64,4 +64,4 @@ export {
|
|
|
64
64
|
listTriggerFires,
|
|
65
65
|
deleteTrigger
|
|
66
66
|
};
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
67
|
+
//# sourceMappingURL=chunk-27SS5FBC.js.map
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import {
|
|
2
|
+
makeRequest
|
|
3
|
+
} from "./chunk-7MNQDTKJ.js";
|
|
4
|
+
|
|
5
|
+
// src/langwatch-api-dashboards.ts
|
|
6
|
+
var dashboardPath = (dashboardId) => `/api/v1/dashboards/${encodeURIComponent(dashboardId)}`;
|
|
7
|
+
var widgetPath = (dashboardId, widgetId) => `${dashboardPath(dashboardId)}/widgets/${encodeURIComponent(widgetId)}`;
|
|
8
|
+
async function listDashboards() {
|
|
9
|
+
return makeRequest("GET", "/api/v1/dashboards");
|
|
10
|
+
}
|
|
11
|
+
async function getDashboard({ dashboardId }) {
|
|
12
|
+
return makeRequest("GET", dashboardPath(dashboardId));
|
|
13
|
+
}
|
|
14
|
+
async function createDashboard({ name }) {
|
|
15
|
+
return makeRequest("POST", "/api/v1/dashboards", { name });
|
|
16
|
+
}
|
|
17
|
+
async function updateDashboard({
|
|
18
|
+
dashboardId,
|
|
19
|
+
...changes
|
|
20
|
+
}) {
|
|
21
|
+
return makeRequest("PATCH", dashboardPath(dashboardId), changes);
|
|
22
|
+
}
|
|
23
|
+
async function deleteDashboard({
|
|
24
|
+
dashboardId
|
|
25
|
+
}) {
|
|
26
|
+
return makeRequest("DELETE", dashboardPath(dashboardId));
|
|
27
|
+
}
|
|
28
|
+
async function listWidgetsOnDashboard({
|
|
29
|
+
dashboardId
|
|
30
|
+
}) {
|
|
31
|
+
return makeRequest("GET", `${dashboardPath(dashboardId)}/widgets`);
|
|
32
|
+
}
|
|
33
|
+
async function createWidgetOnDashboard({
|
|
34
|
+
dashboardId,
|
|
35
|
+
...data
|
|
36
|
+
}) {
|
|
37
|
+
return makeRequest(
|
|
38
|
+
"POST",
|
|
39
|
+
`${dashboardPath(dashboardId)}/widgets`,
|
|
40
|
+
data
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
async function getWidgetOnDashboard({
|
|
44
|
+
dashboardId,
|
|
45
|
+
widgetId
|
|
46
|
+
}) {
|
|
47
|
+
return makeRequest("GET", widgetPath(dashboardId, widgetId));
|
|
48
|
+
}
|
|
49
|
+
async function updateWidgetOnDashboard({
|
|
50
|
+
dashboardId,
|
|
51
|
+
widgetId,
|
|
52
|
+
...changes
|
|
53
|
+
}) {
|
|
54
|
+
return makeRequest(
|
|
55
|
+
"PATCH",
|
|
56
|
+
widgetPath(dashboardId, widgetId),
|
|
57
|
+
changes
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
async function deleteWidgetOnDashboard({
|
|
61
|
+
dashboardId,
|
|
62
|
+
widgetId
|
|
63
|
+
}) {
|
|
64
|
+
await makeRequest("DELETE", widgetPath(dashboardId, widgetId));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export {
|
|
68
|
+
listDashboards,
|
|
69
|
+
getDashboard,
|
|
70
|
+
createDashboard,
|
|
71
|
+
updateDashboard,
|
|
72
|
+
deleteDashboard,
|
|
73
|
+
listWidgetsOnDashboard,
|
|
74
|
+
createWidgetOnDashboard,
|
|
75
|
+
getWidgetOnDashboard,
|
|
76
|
+
updateWidgetOnDashboard,
|
|
77
|
+
deleteWidgetOnDashboard
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=chunk-2RLDGMPZ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7MNQDTKJ.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-test-suites.ts
|
|
6
6
|
async function listTestSuites() {
|
|
@@ -54,4 +54,4 @@ export {
|
|
|
54
54
|
archiveTestSuite,
|
|
55
55
|
runTestSuite
|
|
56
56
|
};
|
|
57
|
-
//# sourceMappingURL=chunk-
|
|
57
|
+
//# sourceMappingURL=chunk-3GVTJ7NK.js.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// src/tools/dashboard-widget-queries.ts
|
|
2
|
+
function withLists({
|
|
3
|
+
queries,
|
|
4
|
+
sources,
|
|
5
|
+
projects
|
|
6
|
+
}) {
|
|
7
|
+
if (sources === void 0 && projects === void 0) return [...queries];
|
|
8
|
+
return queries.map((query) => ({
|
|
9
|
+
...query,
|
|
10
|
+
...sources === void 0 ? {} : { sources },
|
|
11
|
+
...projects === void 0 ? {} : { projects }
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
14
|
+
var MAX_DASHBOARD_WIDGET_QUERIES = 8;
|
|
15
|
+
function normalizeDashboardWidgetQueries({
|
|
16
|
+
queries
|
|
17
|
+
}) {
|
|
18
|
+
const normalized = Array.isArray(queries) ? queries : Object.entries(queries).map(([name, sql]) => ({ name, sql }));
|
|
19
|
+
if (normalized.length === 0) {
|
|
20
|
+
throw new Error(
|
|
21
|
+
"Provide at least one named LWQL query in `queries`. Validate each query's SQL first with run_query."
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
if (normalized.length > MAX_DASHBOARD_WIDGET_QUERIES) {
|
|
25
|
+
throw new Error(
|
|
26
|
+
`A widget may declare at most ${MAX_DASHBOARD_WIDGET_QUERIES} queries, got ${normalized.length}.`
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
return normalized;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
withLists,
|
|
34
|
+
normalizeDashboardWidgetQueries
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=chunk-6DF65T3B.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7MNQDTKJ.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-evaluators.ts
|
|
6
6
|
function getEvaluatorType(evaluator) {
|
|
@@ -38,4 +38,4 @@ export {
|
|
|
38
38
|
updateEvaluator,
|
|
39
39
|
deleteEvaluator
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-6OLI3LFY.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7MNQDTKJ.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-projects.ts
|
|
6
6
|
async function listProjects(params) {
|
|
@@ -16,9 +16,6 @@ async function getProject(id) {
|
|
|
16
16
|
`/api/v1/projects/${encodeURIComponent(id)}`
|
|
17
17
|
);
|
|
18
18
|
}
|
|
19
|
-
async function getCurrentProject() {
|
|
20
|
-
return makeRequest("GET", "/api/v1/me/project");
|
|
21
|
-
}
|
|
22
19
|
async function createProject(data) {
|
|
23
20
|
return makeRequest("POST", "/api/v1/projects", data);
|
|
24
21
|
}
|
|
@@ -37,9 +34,8 @@ async function archiveProject(id) {
|
|
|
37
34
|
export {
|
|
38
35
|
listProjects,
|
|
39
36
|
getProject,
|
|
40
|
-
getCurrentProject,
|
|
41
37
|
createProject,
|
|
42
38
|
updateProject,
|
|
43
39
|
archiveProject
|
|
44
40
|
};
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-7HJSQOSZ.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getConfig,
|
|
3
3
|
requireApiKey
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DULFP3MK.js";
|
|
5
5
|
|
|
6
6
|
// package.json
|
|
7
7
|
var package_default = {
|
|
8
8
|
name: "@langwatch/mcp-server",
|
|
9
|
-
version: "
|
|
9
|
+
version: "3.1.0",
|
|
10
10
|
description: "An MCP server for Langwatch.",
|
|
11
11
|
license: "MIT",
|
|
12
12
|
author: "",
|
|
@@ -88,6 +88,8 @@ var MCP_IDENTITY_HEADERS = {
|
|
|
88
88
|
"X-LangWatch-SDK-Language": "typescript",
|
|
89
89
|
"X-LangWatch-SDK-Version": package_default.version
|
|
90
90
|
};
|
|
91
|
+
var LANGWATCH_API_VERSION = "2026-10-26";
|
|
92
|
+
var HOSTED_MCP_HEADER = "X-LangWatch-MCP-Host";
|
|
91
93
|
var LangWatchApiError = class extends Error {
|
|
92
94
|
constructor(message, status, responseBody, options = {}) {
|
|
93
95
|
super(message);
|
|
@@ -113,6 +115,10 @@ var LangWatchApiError = class extends Error {
|
|
|
113
115
|
*/
|
|
114
116
|
reasons;
|
|
115
117
|
};
|
|
118
|
+
function detailsOf(meta) {
|
|
119
|
+
const { reasons: _reasons, target: _target, fields: _fields, ...details } = meta;
|
|
120
|
+
return Object.keys(details).length > 0 ? details : void 0;
|
|
121
|
+
}
|
|
116
122
|
var VALID_FAULTS = [
|
|
117
123
|
"customer",
|
|
118
124
|
"platform",
|
|
@@ -135,8 +141,10 @@ function parseErrorBody(responseBody) {
|
|
|
135
141
|
const tips = readStringArray(body.tips);
|
|
136
142
|
const docsUrl = typeof body.docsUrl === "string" ? body.docsUrl : void 0;
|
|
137
143
|
const fault = VALID_FAULTS.includes(body.fault) ? body.fault : void 0;
|
|
138
|
-
const
|
|
139
|
-
|
|
144
|
+
const meta = isRecord(body.meta) ? body.meta : {};
|
|
145
|
+
const rawReasons = Array.isArray(body.reasons) ? body.reasons : meta.reasons;
|
|
146
|
+
const reasons = Array.isArray(rawReasons) && rawReasons.every((r) => !!r && typeof r === "object") ? rawReasons : void 0;
|
|
147
|
+
return { code, message, tips, docsUrl, fault, reasons, meta: detailsOf(meta) };
|
|
140
148
|
} catch {
|
|
141
149
|
return {};
|
|
142
150
|
}
|
|
@@ -170,16 +178,46 @@ function describeReason(reason) {
|
|
|
170
178
|
}
|
|
171
179
|
return parts.join(" \u2014 ");
|
|
172
180
|
}
|
|
181
|
+
function apiErrorOf({
|
|
182
|
+
status,
|
|
183
|
+
responseBody
|
|
184
|
+
}) {
|
|
185
|
+
const parsed = parseErrorBody(responseBody);
|
|
186
|
+
const lines = [`LangWatch API error ${status}: ${parsed.message ?? responseBody}`];
|
|
187
|
+
if (parsed.code) lines.push(`Code: ${parsed.code}`);
|
|
188
|
+
if (parsed.meta) lines.push(`Details: ${JSON.stringify(parsed.meta)}`);
|
|
189
|
+
const reasonLines = (parsed.reasons ?? []).map(describeReason).filter((line) => line !== null);
|
|
190
|
+
if (reasonLines.length > 0) {
|
|
191
|
+
lines.push("Rejected fields:", ...reasonLines);
|
|
192
|
+
}
|
|
193
|
+
if (parsed.tips && parsed.tips.length > 0) {
|
|
194
|
+
lines.push("Tips:", ...parsed.tips.map((tip) => `- ${tip}`));
|
|
195
|
+
}
|
|
196
|
+
if (parsed.docsUrl) {
|
|
197
|
+
lines.push(`Docs: ${parsed.docsUrl}`);
|
|
198
|
+
}
|
|
199
|
+
return new LangWatchApiError(lines.join("\n"), status, responseBody, {
|
|
200
|
+
code: parsed.code,
|
|
201
|
+
tips: parsed.tips,
|
|
202
|
+
docsUrl: parsed.docsUrl,
|
|
203
|
+
fault: parsed.fault,
|
|
204
|
+
reasons: parsed.reasons
|
|
205
|
+
});
|
|
206
|
+
}
|
|
173
207
|
async function makeRequest(method, path, body) {
|
|
174
208
|
const config = getConfig();
|
|
175
209
|
const url = config.endpoint + path;
|
|
176
210
|
const headers = {
|
|
177
211
|
...MCP_IDENTITY_HEADERS,
|
|
212
|
+
"X-API-Version": LANGWATCH_API_VERSION,
|
|
178
213
|
"X-Auth-Token": requireApiKey()
|
|
179
214
|
};
|
|
180
215
|
if (config.projectId) {
|
|
181
216
|
headers["X-Project-Id"] = config.projectId;
|
|
182
217
|
}
|
|
218
|
+
if (config.hosted) {
|
|
219
|
+
headers[HOSTED_MCP_HEADER] = "hosted";
|
|
220
|
+
}
|
|
183
221
|
if (body !== void 0) {
|
|
184
222
|
headers["Content-Type"] = "application/json";
|
|
185
223
|
}
|
|
@@ -188,28 +226,8 @@ async function makeRequest(method, path, body) {
|
|
|
188
226
|
headers,
|
|
189
227
|
...body !== void 0 ? { body: JSON.stringify(body) } : {}
|
|
190
228
|
});
|
|
191
|
-
if (!response.ok)
|
|
192
|
-
|
|
193
|
-
const parsed = parseErrorBody(responseBody);
|
|
194
|
-
const lines = [`LangWatch API error ${response.status}: ${parsed.message ?? responseBody}`];
|
|
195
|
-
const reasonLines = (parsed.reasons ?? []).map(describeReason).filter((line) => line !== null);
|
|
196
|
-
if (reasonLines.length > 0) {
|
|
197
|
-
lines.push("Rejected fields:", ...reasonLines);
|
|
198
|
-
}
|
|
199
|
-
if (parsed.tips && parsed.tips.length > 0) {
|
|
200
|
-
lines.push("Tips:", ...parsed.tips.map((tip) => `- ${tip}`));
|
|
201
|
-
}
|
|
202
|
-
if (parsed.docsUrl) {
|
|
203
|
-
lines.push(`Docs: ${parsed.docsUrl}`);
|
|
204
|
-
}
|
|
205
|
-
throw new LangWatchApiError(lines.join("\n"), response.status, responseBody, {
|
|
206
|
-
code: parsed.code,
|
|
207
|
-
tips: parsed.tips,
|
|
208
|
-
docsUrl: parsed.docsUrl,
|
|
209
|
-
fault: parsed.fault,
|
|
210
|
-
reasons: parsed.reasons
|
|
211
|
-
});
|
|
212
|
-
}
|
|
229
|
+
if (!response.ok)
|
|
230
|
+
throw apiErrorOf({ status: response.status, responseBody: await response.text() });
|
|
213
231
|
if (response.status === 204 || response.headers?.get("content-length") === "0") {
|
|
214
232
|
return null;
|
|
215
233
|
}
|
|
@@ -293,6 +311,7 @@ async function deletePromptTag(tag) {
|
|
|
293
311
|
|
|
294
312
|
export {
|
|
295
313
|
package_default,
|
|
314
|
+
LANGWATCH_API_VERSION,
|
|
296
315
|
LangWatchApiError,
|
|
297
316
|
makeRequest,
|
|
298
317
|
searchTraces,
|
|
@@ -309,4 +328,4 @@ export {
|
|
|
309
328
|
renamePromptTag,
|
|
310
329
|
deletePromptTag
|
|
311
330
|
};
|
|
312
|
-
//# sourceMappingURL=chunk-
|
|
331
|
+
//# sourceMappingURL=chunk-7MNQDTKJ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7MNQDTKJ.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-scenarios.ts
|
|
6
6
|
async function listScenarios() {
|
|
@@ -37,4 +37,4 @@ export {
|
|
|
37
37
|
updateScenario,
|
|
38
38
|
archiveScenario
|
|
39
39
|
};
|
|
40
|
-
//# sourceMappingURL=chunk-
|
|
40
|
+
//# sourceMappingURL=chunk-BHCYKMRH.js.map
|