@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.
- package/.gitignore +7 -0
- package/.npmignore +41 -0
- package/CHANGELOG.md +192 -201
- package/CONTRIBUTING.md +10 -0
- package/README.md +70 -68
- package/dist/add-dashboard-widget-4ZC5UN73.js +50 -0
- package/dist/add-dashboard-widget-ACC6QYBG.js +49 -0
- package/dist/archive-project-KWFM3I5Z.js +19 -0
- package/dist/{archive-project-W3IKI7UL.js → archive-project-SPVHXK6A.js} +4 -4
- package/dist/{archive-run-plan-474OKHHU.js → archive-run-plan-65QN3XRX.js} +4 -4
- package/dist/archive-run-plan-Z4SYE6BP.js +15 -0
- package/dist/{archive-scenario-V5UNYK26.js → archive-scenario-A6QV5LOW.js} +4 -4
- package/dist/archive-scenario-FXEYQNEH.js +19 -0
- package/dist/archive-test-suite-5ADQ3KPQ.js +15 -0
- package/dist/{archive-test-suite-O7FLDMXK.js → archive-test-suite-NKZDZY3D.js} +4 -4
- package/dist/assign-prompt-tag-5IUZXJ2T.js +23 -0
- package/dist/{assign-prompt-tag-Q46WRB6P.js → assign-prompt-tag-HBZLBIFD.js} +8 -4
- package/dist/{chunk-OJLYYJWI.js → chunk-3OCG3QPU.js} +7 -10
- package/dist/chunk-3YLN3ATJ.js +241 -0
- package/dist/chunk-5FNCQRCX.js +91 -0
- package/dist/{chunk-UF6XIGYR.js → chunk-6YZUOD34.js} +2 -5
- package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
- package/dist/chunk-7VNSRCXO.js +129 -0
- package/dist/{chunk-G4ZAZTZW.js → chunk-B4J3PJLX.js} +11 -10
- package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
- package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
- package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
- package/dist/{chunk-WT4PO4A3.js → chunk-H6WGMG2T.js} +10 -7
- package/dist/{chunk-EYXMLE5X.js → chunk-HGELNIVY.js} +56 -47
- package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
- package/dist/{chunk-RVAE2MEA.js → chunk-I7ATIZED.js} +7 -7
- package/dist/{chunk-S4GVX36W.js → chunk-ILZDO25L.js} +7 -10
- package/dist/{chunk-QRO35SOM.js → chunk-J7PQKBLD.js} +652 -528
- package/dist/{chunk-SR6QPRIE.js → chunk-JRJPH75H.js} +7 -13
- package/dist/chunk-K2I7Z3LZ.js +28 -0
- package/dist/{chunk-UFOYFYI7.js → chunk-NKMTIHIJ.js} +6 -9
- package/dist/{chunk-HV4DWKBI.js → chunk-O7EMWEVJ.js} +2 -4
- package/dist/{chunk-56OGTS24.js → chunk-PTDR56Z3.js} +4 -11
- package/dist/{chunk-JR6DJZOU.js → chunk-RABYBFX5.js} +4 -10
- package/dist/chunk-SUPUUC4W.js +64 -0
- package/dist/{chunk-JTQJRNFJ.js → chunk-SXFC3FNH.js} +4 -4
- package/dist/{chunk-CKNAH5TG.js → chunk-U24EACC4.js} +3 -10
- package/dist/chunk-UNJM3BIL.js +21 -0
- package/dist/{chunk-QAMP3CGR.js → chunk-UTJCWXPZ.js} +4 -4
- package/dist/chunk-UWLE5T2F.js +312 -0
- package/dist/{chunk-6DJDEXET.js → chunk-VMWJD732.js} +6 -12
- package/dist/{chunk-7E4FZIYJ.js → chunk-XUIJYNRJ.js} +1 -1
- package/dist/chunk-Y34DHR5K.js +67 -0
- package/dist/chunk-YCARO42Z.js +516 -0
- package/dist/config-EAKW6F26.js +16 -0
- package/dist/config.cjs +109 -0
- package/dist/config.js +5 -4
- package/dist/{create-agent-JFJ2K6X3.js → create-agent-AYZ3LB3V.js} +4 -4
- package/dist/create-agent-S5ZBCEFT.js +23 -0
- package/dist/create-annotation-LHNCLHYP.js +29 -0
- package/dist/{create-annotation-EUXXQ6NS.js → create-annotation-VUSXULQK.js} +10 -5
- package/dist/{create-api-key-BGBB76JX.js → create-api-key-NNYKARMG.js} +5 -7
- package/dist/create-api-key-T4KSNPKB.js +24 -0
- package/dist/create-dashboard-DHVFMEU4.js +18 -0
- package/dist/{create-dashboard-Z76AIPLS.js → create-dashboard-WTKKS5Z6.js} +4 -4
- package/dist/{create-dataset-FD5VAXU4.js → create-dataset-2MC4SD4O.js} +6 -6
- package/dist/create-dataset-LUP5PVDM.js +22 -0
- package/dist/create-dataset-records-NSKBZP3G.js +20 -0
- package/dist/{create-dataset-records-WQUXXOHI.js → create-dataset-records-W4GLN2FV.js} +5 -7
- package/dist/{create-evaluator-6NV33Z52.js → create-evaluator-643G6LXL.js} +4 -4
- package/dist/create-evaluator-HMTYO5SS.js +27 -0
- package/dist/create-mcp-server.cjs +9513 -0
- package/dist/create-mcp-server.js +2647 -10
- package/dist/create-project-6N7PIYRY.js +44 -0
- package/dist/{create-project-ZQ7TFIO2.js → create-project-KAIC46UY.js} +4 -4
- package/dist/{create-prompt-BS6QRCUU.js → create-prompt-E67LXIYT.js} +5 -7
- package/dist/create-prompt-PKJ7EDRR.js +37 -0
- package/dist/create-prompt-tag-4YO3FSJ3.js +17 -0
- package/dist/{create-prompt-tag-FCQ5ELSQ.js → create-prompt-tag-OPQUEXWB.js} +3 -3
- package/dist/create-scenario-5PJBMAXO.js +33 -0
- package/dist/{create-scenario-DRPTPXU3.js → create-scenario-UEM77OE7.js} +5 -5
- package/dist/{create-test-suite-ZIZCCFJ4.js → create-test-suite-4IPXVSFQ.js} +6 -6
- package/dist/create-test-suite-SZEPVXSE.js +36 -0
- package/dist/create-trigger-5HZSCRAN.js +49 -0
- package/dist/create-trigger-PRELMT6J.js +48 -0
- package/dist/delete-agent-JUIZWAXG.js +18 -0
- package/dist/{delete-agent-SA4JMUZF.js → delete-agent-QMEK3XHK.js} +4 -4
- package/dist/delete-annotation-HY3O2OGR.js +17 -0
- package/dist/{delete-annotation-X3KKK7QY.js → delete-annotation-VKIQWUYW.js} +4 -4
- package/dist/delete-dashboard-76N66XXL.js +18 -0
- package/dist/{delete-dashboard-LYMRPF27.js → delete-dashboard-JVIVHNJM.js} +4 -4
- package/dist/delete-dataset-HQCR66MG.js +18 -0
- package/dist/{delete-dataset-W6EZ44HY.js → delete-dataset-WKRUW4FP.js} +5 -7
- package/dist/{delete-dataset-records-7CNOTALB.js → delete-dataset-records-C2IQFFVQ.js} +5 -7
- package/dist/delete-dataset-records-SDUHQLLM.js +19 -0
- package/dist/delete-evaluator-4SNSCLEE.js +16 -0
- package/dist/delete-evaluator-QP3QHTLN.js +15 -0
- package/dist/delete-prompt-tag-NZ4JQMYG.js +17 -0
- package/dist/{delete-prompt-tag-QB3OCZUV.js → delete-prompt-tag-YYQ4VMAD.js} +3 -3
- package/dist/{delete-workflow-NG2VXYYM.js → delete-workflow-5J46T73T.js} +4 -4
- package/dist/delete-workflow-JSWABL5F.js +17 -0
- package/dist/discover-evaluator-schema-UHWA5HVL.js +120 -0
- package/dist/discover-evaluator-schema-XKCLLCB3.js +118 -0
- package/dist/discover-scenario-schema-NOJY6S7E.js +137 -0
- package/dist/{discover-scenario-schema-W7KBXA4J.js → discover-scenario-schema-OOFIQKOG.js} +37 -17
- package/dist/{discover-schema-L6QDPON3.js → discover-schema-55YJBFGQ.js} +181 -186
- package/dist/discover-schema-A33SLMXW.js +442 -0
- package/dist/get-agent-LJQX7OF4.js +69 -0
- package/dist/{get-agent-7THF7HCU.js → get-agent-OTIYUFZA.js} +15 -11
- package/dist/get-analytics-DCS72353.js +80 -0
- package/dist/get-analytics-IQZKJHLW.js +79 -0
- package/dist/get-dashboard-5NYJEIX2.js +29 -0
- package/dist/{get-dashboard-P4WWVHFU.js → get-dashboard-QMTYDQAZ.js} +4 -4
- package/dist/get-dataset-ALSP7RTX.js +64 -0
- package/dist/get-dataset-X4B5JDG2.js +63 -0
- package/dist/{get-evaluator-RZ44UIN6.js → get-evaluator-ISMC4LLI.js} +4 -4
- package/dist/get-evaluator-XEUZGZCH.js +47 -0
- package/dist/{get-project-QSQEAB33.js → get-project-5VKROSDH.js} +4 -4
- package/dist/get-project-RM6FRCBK.js +26 -0
- package/dist/{get-prompt-GVKXF5NL.js → get-prompt-OWXJZHQQ.js} +53 -58
- package/dist/get-prompt-W52DY36E.js +94 -0
- package/dist/{get-run-plan-NY7J5GRE.js → get-run-plan-BE3M2AUX.js} +7 -9
- package/dist/get-run-plan-RUXQ6PAX.js +58 -0
- package/dist/get-scenario-RNM7BAX2.js +37 -0
- package/dist/{get-scenario-Q3LLQE4T.js → get-scenario-YM4ODWW6.js} +5 -5
- package/dist/get-simulation-run-6GIATQE5.js +69 -0
- package/dist/{get-simulation-run-WINEYDMK.js → get-simulation-run-LCFSMPGQ.js} +26 -22
- package/dist/{get-test-suite-4HKA7OKS.js → get-test-suite-GC2O7YH6.js} +5 -5
- package/dist/get-test-suite-P5LJ6VLF.js +48 -0
- package/dist/get-trace-KBRVV4NN.js +45 -0
- package/dist/{get-trace-RCUV7N4O.js → get-trace-SEF3FMR5.js} +11 -13
- package/dist/get-workflow-7PVED7JE.js +25 -0
- package/dist/{get-workflow-EEOC7Y45.js → get-workflow-YXULW4GC.js} +4 -4
- package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
- package/dist/{http-server-WCDUARTH.js → http-server-IR4QOS43.js} +4071 -347
- package/dist/index.js +58671 -37983
- package/dist/langwatch-api-annotations-6SA4OB4C.js +17 -0
- package/dist/{langwatch-api-annotations-6DHVZWUK.js → langwatch-api-annotations-TBHLCQ5R.js} +4 -4
- package/dist/langwatch-api-dashboards-6EO2VVZW.js +17 -0
- package/dist/{langwatch-api-dashboards-2KJL2M42.js → langwatch-api-dashboards-NHU5BZD7.js} +4 -4
- package/dist/langwatch-api-monitors-CBF3FGIM.js +47 -0
- package/dist/{langwatch-api-monitors-6ISFJ7WX.js → langwatch-api-monitors-YNWA2M5Y.js} +11 -16
- package/dist/langwatch-api-secrets-ADTOJELP.js +56 -0
- package/dist/langwatch-api-secrets-RNFO4LF2.js +55 -0
- package/dist/langwatch-api-triggers-KQDQC6L5.js +22 -0
- package/dist/langwatch-api-triggers-QS7HDIVW.js +23 -0
- package/dist/{langwatch-api-workflows-6UJL5U4Z.js → langwatch-api-workflows-OKC4FXIF.js} +4 -4
- package/dist/langwatch-api-workflows-XGJE6SR5.js +15 -0
- package/dist/{list-agents-AMVDQPQL.js → list-agents-HVYWEQMI.js} +4 -4
- package/dist/list-agents-RBAOCF53.js +42 -0
- package/dist/list-annotations-HJH4NBLD.js +38 -0
- package/dist/{list-annotations-6PR5NLIC.js → list-annotations-J4UAHSUN.js} +10 -5
- package/dist/{list-api-keys-GVPNBIHQ.js → list-api-keys-7UTJRZDG.js} +10 -5
- package/dist/list-api-keys-A2PMV435.js +42 -0
- package/dist/list-dashboard-boards-OPWROHMG.js +33 -0
- package/dist/list-dashboard-boards-U2GJ7GC5.js +34 -0
- package/dist/{list-dashboards-Z3BZKDGF.js → list-dashboards-ROSYFLDQ.js} +4 -4
- package/dist/list-dashboards-RQ635ZU7.js +32 -0
- package/dist/{list-dataset-records-O67HZ35Y.js → list-dataset-records-M5TKA6LK.js} +14 -10
- package/dist/list-dataset-records-WFM7F33C.js +43 -0
- package/dist/{list-datasets-WXZL6UMP.js → list-datasets-B5X4P7BQ.js} +9 -13
- package/dist/list-datasets-THUKQHPX.js +56 -0
- package/dist/{list-evaluators-PAX72WCN.js → list-evaluators-MYH2OVCI.js} +5 -7
- package/dist/list-evaluators-NLVWF6K7.js +32 -0
- package/dist/{list-model-providers-VVLZMLCX.js → list-model-providers-3JUGP4YI.js} +4 -4
- package/dist/list-model-providers-H3XKORFO.js +35 -0
- package/dist/{list-projects-AQVI6SUK.js → list-projects-6EJ5YYEW.js} +5 -7
- package/dist/list-projects-YNNSRMLC.js +40 -0
- package/dist/{list-prompt-tags-WZFBJOHG.js → list-prompt-tags-NVFQO6WX.js} +3 -3
- package/dist/list-prompt-tags-XUQTTAH4.js +23 -0
- package/dist/{list-prompts-BQOHRHYT.js → list-prompts-HSIMMHTF.js} +4 -6
- package/dist/list-prompts-IRI6AIXO.js +30 -0
- package/dist/{list-run-plans-UBAU2DGH.js → list-run-plans-PX2XI6EK.js} +5 -5
- package/dist/list-run-plans-QALLCN2K.js +45 -0
- package/dist/{list-scenarios-MS4IUIVM.js → list-scenarios-QZRPVHS4.js} +13 -11
- package/dist/list-scenarios-SSJQEMJP.js +45 -0
- package/dist/list-simulation-runs-KNOLGMDV.js +53 -0
- package/dist/{list-simulation-runs-D6YF4ZOU.js → list-simulation-runs-OEADLLQR.js} +12 -8
- package/dist/list-test-suites-ANAQBLDG.js +34 -0
- package/dist/{list-test-suites-L7R2O6DR.js → list-test-suites-N4WVLBKK.js} +4 -4
- package/dist/list-trigger-fires-JV3WFYYG.js +19 -0
- package/dist/list-trigger-fires-WTW4DVIW.js +20 -0
- package/dist/list-triggers-SQNIG35Q.js +45 -0
- package/dist/list-triggers-V4Y356AK.js +46 -0
- package/dist/{list-workflows-6MV4XJHF.js → list-workflows-IMSX7SXU.js} +5 -7
- package/dist/list-workflows-ZHTX5LCL.js +33 -0
- package/dist/{rename-prompt-tag-K5LQ4CY6.js → rename-prompt-tag-IQI7MHOI.js} +3 -3
- package/dist/rename-prompt-tag-PA2BRIE6.js +18 -0
- package/dist/{rename-test-suite-NTYHAO5X.js → rename-test-suite-4J7UX5S2.js} +4 -4
- package/dist/rename-test-suite-NNVLMLKY.js +20 -0
- package/dist/report-issue-AS34ZMJF.js +898 -0
- package/dist/{report-issue-RHZZ33IS.js → report-issue-DCZFLGDO.js} +81 -67
- package/dist/{rerun-run-plan-MUDWJBE4.js → rerun-run-plan-TG2V4WM4.js} +5 -5
- package/dist/rerun-run-plan-ZI5OY3VA.js +21 -0
- package/dist/revoke-api-key-3J3ZA4UB.js +15 -0
- package/dist/{revoke-api-key-6LAZ3QZZ.js → revoke-api-key-SFMEFWJC.js} +4 -4
- package/dist/run-agent-W4VJP72Z.js +75 -0
- package/dist/run-agent-YNV6ZHW4.js +74 -0
- package/dist/run-plan-6C77GWG4.js +38 -0
- package/dist/{run-plan-T4ZYOZGA.js → run-plan-PAARQSI4.js} +7 -7
- package/dist/run-query-KJDH544C.js +47 -0
- package/dist/run-query-T4QW2Z5O.js +46 -0
- package/dist/{run-test-suite-L4MZ7G4D.js → run-test-suite-SQJELEZX.js} +6 -6
- package/dist/run-test-suite-STB6NUJM.js +25 -0
- package/dist/{run-workflow-DFIS23AP.js → run-workflow-D6PQNBI6.js} +4 -4
- package/dist/run-workflow-SP32SO5M.js +36 -0
- package/dist/search-traces-HCBGOG6R.js +170 -0
- package/dist/search-traces-HSTQ6WTQ.js +171 -0
- package/dist/{set-model-provider-XRNMFOVR.js → set-model-provider-GF7NXUJA.js} +4 -4
- package/dist/set-model-provider-KDQ7C4EZ.js +33 -0
- package/dist/{update-agent-DUWNYBNA.js → update-agent-DWG43T2P.js} +4 -4
- package/dist/update-agent-MXNOBS4H.js +20 -0
- package/dist/update-dashboard-widget-CJKJLCDY.js +71 -0
- package/dist/update-dashboard-widget-CYQDS2NR.js +70 -0
- package/dist/update-dataset-DQH3OHOU.js +22 -0
- package/dist/{update-dataset-YSOMDCOB.js → update-dataset-SQZ6T4WX.js} +6 -6
- package/dist/{update-dataset-record-DEA2ITYR.js → update-dataset-record-3AT4IPBC.js} +4 -4
- package/dist/update-dataset-record-7PLDGTMR.js +19 -0
- package/dist/update-evaluator-4LFTKFPT.js +24 -0
- package/dist/{update-evaluator-NH7Q5GWV.js → update-evaluator-IGTX6PX4.js} +4 -4
- package/dist/{update-project-Q26FBSYH.js → update-project-PLJIOZS6.js} +4 -4
- package/dist/update-project-QVHSJRUP.js +24 -0
- package/dist/update-prompt-GDKRYJI3.js +140 -0
- package/dist/{update-prompt-ZQQ2C3KU.js → update-prompt-MY263DYF.js} +27 -29
- package/dist/update-scenario-7KA3JDXA.js +34 -0
- package/dist/{update-scenario-WUX34JAR.js → update-scenario-MOHRQKAQ.js} +5 -5
- package/package.json +35 -39
- package/pyproject.toml +8 -8
- package/src/config.d.ts +4 -0
- package/src/config.ts +20 -29
- package/src/create-mcp-server.ts +755 -609
- package/src/documentation-fetch.ts +21 -20
- package/src/http-security.ts +166 -135
- package/src/http-server.ts +189 -224
- package/src/index.ts +14 -16
- package/src/langwatch-api-agents.ts +18 -21
- package/src/langwatch-api-annotations.ts +11 -12
- package/src/langwatch-api-api-keys.ts +8 -9
- package/src/langwatch-api-boards.ts +46 -0
- package/src/langwatch-api-dashboard-widgets.ts +112 -0
- package/src/langwatch-api-dashboards.ts +13 -10
- package/src/langwatch-api-datasets.ts +98 -32
- package/src/langwatch-api-evaluators.ts +13 -19
- package/src/langwatch-api-model-providers.ts +4 -4
- package/src/langwatch-api-monitors.ts +14 -18
- package/src/langwatch-api-projects.ts +27 -9
- package/src/langwatch-api-query.ts +114 -0
- package/src/langwatch-api-run-plans.ts +12 -29
- package/src/langwatch-api-scenarios.ts +9 -11
- package/src/langwatch-api-secrets.ts +31 -24
- package/src/langwatch-api-simulation-runs.ts +6 -8
- package/src/langwatch-api-test-suites.ts +14 -33
- package/src/langwatch-api-triggers.ts +96 -34
- package/src/langwatch-api-workflows.ts +9 -9
- package/src/langwatch-api.ts +108 -124
- package/src/public-http-request.ts +21 -12
- package/src/schemas/analytics-metrics.ts +3 -15
- package/src/schemas/create-dataset.ts +3 -4
- package/src/schemas/run-plan.ts +13 -29
- package/src/schemas/suite-fields.ts +6 -23
- package/src/schemas/triggers.ts +365 -0
- package/src/tools/add-dashboard-widget.ts +63 -0
- package/src/tools/archive-project.ts +2 -4
- package/src/tools/archive-run-plan.ts +2 -4
- package/src/tools/archive-scenario.ts +2 -4
- package/src/tools/archive-test-suite.ts +2 -4
- package/src/tools/assign-prompt-tag.ts +6 -2
- package/src/tools/create-agent.ts +1 -1
- package/src/tools/create-annotation.ts +7 -2
- package/src/tools/create-api-key.ts +4 -6
- package/src/tools/create-dashboard.ts +1 -1
- package/src/tools/create-dataset-records.ts +4 -8
- package/src/tools/create-dataset.ts +5 -7
- package/src/tools/create-evaluator.ts +3 -5
- package/src/tools/create-project.ts +2 -2
- package/src/tools/create-prompt-tag.ts +2 -4
- package/src/tools/create-prompt.ts +9 -18
- package/src/tools/create-scenario.ts +5 -7
- package/src/tools/create-test-suite.ts +4 -9
- package/src/tools/create-trigger.ts +55 -0
- package/src/tools/dashboard-exists.ts +25 -0
- package/src/tools/dashboard-widget-queries.ts +32 -0
- package/src/tools/delete-agent.ts +1 -1
- package/src/tools/delete-annotation.ts +1 -1
- package/src/tools/delete-dashboard.ts +1 -1
- package/src/tools/delete-dataset-records.ts +4 -8
- package/src/tools/delete-dataset.ts +3 -7
- package/src/tools/delete-evaluator.ts +4 -6
- package/src/tools/delete-prompt-tag.ts +2 -4
- package/src/tools/delete-workflow.ts +1 -1
- package/src/tools/discover-evaluator-schema.ts +34 -25
- package/src/tools/discover-scenario-schema.ts +41 -21
- package/src/tools/discover-schema.ts +149 -27
- package/src/tools/experiment-run-status.ts +2 -8
- package/src/tools/format-dataset-mutation.ts +5 -10
- package/src/tools/format-run-plan.ts +7 -21
- package/src/tools/format-scenario.ts +2 -4
- package/src/tools/format-suite-details.ts +6 -12
- package/src/tools/get-agent.ts +15 -6
- package/src/tools/get-analytics.ts +52 -46
- package/src/tools/get-dashboard.ts +1 -1
- package/src/tools/get-dataset.ts +34 -16
- package/src/tools/get-evaluator.ts +4 -11
- package/src/tools/get-experiment-results.ts +219 -186
- package/src/tools/get-project.ts +2 -4
- package/src/tools/get-prompt.ts +63 -84
- package/src/tools/get-run-plan.ts +4 -6
- package/src/tools/get-scenario.ts +4 -6
- package/src/tools/get-simulation-run.ts +27 -24
- package/src/tools/get-test-suite.ts +2 -5
- package/src/tools/get-trace.ts +16 -17
- package/src/tools/get-workflow.ts +1 -1
- package/src/tools/list-agents.ts +1 -1
- package/src/tools/list-annotations.ts +8 -5
- package/src/tools/list-api-keys.ts +7 -2
- package/src/tools/list-dashboard-boards.ts +28 -0
- package/src/tools/list-dashboards.ts +1 -1
- package/src/tools/list-dataset-records.ts +8 -6
- package/src/tools/list-datasets.ts +12 -23
- package/src/tools/list-evaluators.ts +4 -8
- package/src/tools/list-experiment-runs.ts +5 -9
- package/src/tools/list-experiments.ts +5 -11
- package/src/tools/list-model-providers.ts +3 -5
- package/src/tools/list-projects.ts +2 -4
- package/src/tools/list-prompt-tags.ts +3 -3
- package/src/tools/list-prompts.ts +4 -8
- package/src/tools/list-run-plans.ts +2 -2
- package/src/tools/list-scenarios.ts +14 -15
- package/src/tools/list-simulation-runs.ts +8 -4
- package/src/tools/list-test-suites.ts +1 -1
- package/src/tools/list-trigger-fires.ts +17 -0
- package/src/tools/list-triggers.ts +39 -0
- package/src/tools/list-workflows.ts +2 -4
- package/src/tools/rename-prompt-tag.ts +1 -1
- package/src/tools/rename-test-suite.ts +2 -5
- package/src/tools/report-issue.ts +5 -9
- package/src/tools/rerun-run-plan.ts +2 -5
- package/src/tools/revoke-api-key.ts +2 -4
- package/src/tools/run-agent.ts +29 -26
- package/src/tools/run-experiment.ts +36 -37
- package/src/tools/run-plan.ts +4 -7
- package/src/tools/run-query.ts +47 -0
- package/src/tools/run-test-suite.ts +4 -7
- package/src/tools/run-workflow.ts +2 -5
- package/src/tools/search-traces.ts +161 -47
- package/src/tools/set-model-provider.ts +4 -6
- package/src/tools/test-agent.ts +2 -2
- package/src/tools/update-agent.ts +1 -1
- package/src/tools/update-dashboard-widget.ts +97 -0
- package/src/tools/update-dataset-record.ts +1 -1
- package/src/tools/update-dataset.ts +5 -7
- package/src/tools/update-evaluator.ts +3 -5
- package/src/tools/update-project.ts +1 -1
- package/src/tools/update-prompt.ts +44 -59
- package/src/tools/update-scenario.ts +5 -7
- package/src/tools/update-test-suite.ts +6 -11
- package/src/utils/date-parsing.ts +1 -1
- package/src/utils/escape-markdown.ts +3 -8
- package/src/utils/format-evaluations.ts +6 -6
- package/src/utils/markdown-table.ts +58 -0
- package/src/utils/trace-id-shape.ts +20 -0
- package/tsconfig.app.json +24 -0
- package/tsconfig.json +14 -12
- package/vitest.integration.config.js +10 -0
- package/vitest.scenario.config.js +9 -0
- package/.eslintrc.cjs +0 -36
- package/dist/chunk-AN4OUA4D.js +0 -86
- package/dist/chunk-GELJ2MQR.js +0 -226
- package/dist/chunk-K37ZNPXK.js +0 -24
- package/dist/config.d.ts +0 -17
- package/dist/create-mcp-server.d.ts +0 -10
- package/dist/delete-evaluator-RKYC4TNB.js +0 -16
- package/dist/discover-evaluator-schema-ESSHQGPY.js +0 -1912
- package/dist/get-analytics-R6AZD3AW.js +0 -73
- package/dist/get-dataset-AKTYSQDI.js +0 -49
- package/dist/index.d.ts +0 -2
- package/dist/langwatch-api-secrets-OEBD6GBU.js +0 -41
- package/dist/langwatch-api-triggers-5E6DDGX6.js +0 -31
- package/dist/run-agent-CAGWGTYT.js +0 -72
- package/dist/search-traces-4XTJYXIK.js +0 -79
- package/src/__tests__/agent-tools.unit.test.ts +0 -257
- package/src/__tests__/all-tools.integration.test.ts +0 -1872
- package/src/__tests__/config.unit.test.ts +0 -202
- package/src/__tests__/datasets.integration.test.ts +0 -620
- package/src/__tests__/datasets.unit.test.ts +0 -244
- package/src/__tests__/date-parsing.unit.test.ts +0 -78
- package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
- package/src/__tests__/discover-schema.unit.test.ts +0 -118
- package/src/__tests__/docker.integration.test.ts +0 -318
- package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
- package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
- package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
- package/src/__tests__/experiment-status.unit.test.ts +0 -194
- package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
- package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
- package/src/__tests__/http-security-origin.unit.test.ts +0 -97
- package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
- package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
- package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
- package/src/__tests__/http-server-origin.integration.test.ts +0 -169
- package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
- package/src/__tests__/http-transport.integration.test.ts +0 -395
- package/src/__tests__/integration.integration.test.ts +0 -284
- package/src/__tests__/langwatch-api.unit.test.ts +0 -661
- package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
- package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
- package/src/__tests__/prompt-response-types.unit.test.ts +0 -51
- package/src/__tests__/prompts.integration.test.ts +0 -736
- package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
- package/src/__tests__/report-issue.integration.test.ts +0 -147
- package/src/__tests__/run-plan-tools.unit.test.ts +0 -565
- package/src/__tests__/scenario-tools.integration.test.ts +0 -286
- package/src/__tests__/scenario-tools.unit.test.ts +0 -207
- package/src/__tests__/schemas.unit.test.ts +0 -85
- package/src/__tests__/simulation-run-tools.unit.test.ts +0 -116
- package/src/__tests__/support/http-server-harness.ts +0 -138
- package/src/__tests__/test-suite-tools.unit.test.ts +0 -615
- package/src/__tests__/tools.integration.test.ts +0 -896
- package/src/schemas/filter-fields.ts +0 -119
- package/src/schemas/index.ts +0 -9
|
@@ -1,35 +1,29 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UWLE5T2F.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-annotations.ts
|
|
6
6
|
async function listAnnotations() {
|
|
7
|
-
return makeRequest("GET", "/api/annotations");
|
|
7
|
+
return makeRequest("GET", "/api/v1/annotations");
|
|
8
8
|
}
|
|
9
9
|
async function getAnnotation(id) {
|
|
10
10
|
return makeRequest(
|
|
11
11
|
"GET",
|
|
12
|
-
`/api/annotations/${encodeURIComponent(id)}`
|
|
12
|
+
`/api/v1/annotations/${encodeURIComponent(id)}`
|
|
13
13
|
);
|
|
14
14
|
}
|
|
15
15
|
async function getAnnotationsByTrace(traceId) {
|
|
16
|
-
return makeRequest(
|
|
17
|
-
"GET",
|
|
18
|
-
`/api/annotations/trace/${encodeURIComponent(traceId)}`
|
|
19
|
-
);
|
|
16
|
+
return makeRequest("GET", `/api/v1/annotations/trace/${encodeURIComponent(traceId)}`);
|
|
20
17
|
}
|
|
21
18
|
async function createAnnotation(traceId, data) {
|
|
22
19
|
return makeRequest(
|
|
23
20
|
"POST",
|
|
24
|
-
`/api/annotations/trace/${encodeURIComponent(traceId)}`,
|
|
21
|
+
`/api/v1/annotations/trace/${encodeURIComponent(traceId)}`,
|
|
25
22
|
data
|
|
26
23
|
);
|
|
27
24
|
}
|
|
28
25
|
async function deleteAnnotation(id) {
|
|
29
|
-
return makeRequest(
|
|
30
|
-
"DELETE",
|
|
31
|
-
`/api/annotations/${encodeURIComponent(id)}`
|
|
32
|
-
);
|
|
26
|
+
return makeRequest("DELETE", `/api/v1/annotations/${encodeURIComponent(id)}`);
|
|
33
27
|
}
|
|
34
28
|
|
|
35
29
|
export {
|
|
@@ -39,4 +33,4 @@ export {
|
|
|
39
33
|
createAnnotation,
|
|
40
34
|
deleteAnnotation
|
|
41
35
|
};
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
36
|
+
//# sourceMappingURL=chunk-JRJPH75H.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
makeRequest
|
|
3
|
+
} from "./chunk-UWLE5T2F.js";
|
|
4
|
+
|
|
5
|
+
// src/langwatch-api-boards.ts
|
|
6
|
+
async function listBoards({
|
|
7
|
+
projectId
|
|
8
|
+
}) {
|
|
9
|
+
return makeRequest(
|
|
10
|
+
"GET",
|
|
11
|
+
`/api/v1/projects/${encodeURIComponent(projectId)}/analytics/boards`
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
async function getBoard({
|
|
15
|
+
projectId,
|
|
16
|
+
boardId
|
|
17
|
+
}) {
|
|
18
|
+
return makeRequest(
|
|
19
|
+
"GET",
|
|
20
|
+
`/api/v1/projects/${encodeURIComponent(projectId)}/analytics/boards/${encodeURIComponent(boardId)}`
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export {
|
|
25
|
+
listBoards,
|
|
26
|
+
getBoard
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=chunk-K2I7Z3LZ.js.map
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UWLE5T2F.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-workflows.ts
|
|
6
6
|
async function listWorkflows() {
|
|
7
|
-
return makeRequest("GET", "/api/workflows");
|
|
7
|
+
return makeRequest("GET", "/api/v1/workflows");
|
|
8
8
|
}
|
|
9
9
|
async function getWorkflow(id) {
|
|
10
10
|
return makeRequest(
|
|
11
11
|
"GET",
|
|
12
|
-
`/api/workflows/${encodeURIComponent(id)}`
|
|
12
|
+
`/api/v1/workflows/${encodeURIComponent(id)}`
|
|
13
13
|
);
|
|
14
14
|
}
|
|
15
15
|
async function runWorkflow(id, input) {
|
|
16
16
|
return makeRequest(
|
|
17
17
|
"POST",
|
|
18
|
-
`/api/workflows/${encodeURIComponent(id)}/run`,
|
|
18
|
+
`/api/v1/workflows/${encodeURIComponent(id)}/run`,
|
|
19
19
|
input ?? {}
|
|
20
20
|
);
|
|
21
21
|
}
|
|
22
22
|
async function deleteWorkflow(id) {
|
|
23
|
-
return makeRequest(
|
|
24
|
-
"DELETE",
|
|
25
|
-
`/api/workflows/${encodeURIComponent(id)}`
|
|
26
|
-
);
|
|
23
|
+
return makeRequest("DELETE", `/api/v1/workflows/${encodeURIComponent(id)}`);
|
|
27
24
|
}
|
|
28
25
|
|
|
29
26
|
export {
|
|
@@ -32,4 +29,4 @@ export {
|
|
|
32
29
|
runWorkflow,
|
|
33
30
|
deleteWorkflow
|
|
34
31
|
};
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
32
|
+
//# sourceMappingURL=chunk-NKMTIHIJ.js.map
|
|
@@ -9,9 +9,7 @@ var runPlanScopeSchema = z.discriminatedUnion("mode", [
|
|
|
9
9
|
z.object({
|
|
10
10
|
mode: z.literal("labels"),
|
|
11
11
|
labels: z.array(z.string()).describe("The labels to select scenarios by")
|
|
12
|
-
}).describe(
|
|
13
|
-
"The non-archived scenarios carrying at least one of the given labels"
|
|
14
|
-
),
|
|
12
|
+
}).describe("The non-archived scenarios carrying at least one of the given labels"),
|
|
15
13
|
z.object({ mode: z.literal("scenarios") }).describe("The scenarios named in scenarioIds, picked by hand")
|
|
16
14
|
]);
|
|
17
15
|
var runParametersSchema = z.record(
|
|
@@ -43,4 +41,4 @@ export {
|
|
|
43
41
|
runPlanTargetSchema,
|
|
44
42
|
toWireTargets
|
|
45
43
|
};
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
44
|
+
//# sourceMappingURL=chunk-O7EMWEVJ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UWLE5T2F.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-run-plans.ts
|
|
6
6
|
async function listRunPlans(params) {
|
|
@@ -8,17 +8,10 @@ async function listRunPlans(params) {
|
|
|
8
8
|
return makeRequest("GET", `/api/v1/run-plans${query}`);
|
|
9
9
|
}
|
|
10
10
|
async function getRunPlan(id) {
|
|
11
|
-
return makeRequest(
|
|
12
|
-
"GET",
|
|
13
|
-
`/api/v1/run-plans/${encodeURIComponent(id)}`
|
|
14
|
-
);
|
|
11
|
+
return makeRequest("GET", `/api/v1/run-plans/${encodeURIComponent(id)}`);
|
|
15
12
|
}
|
|
16
13
|
async function runRunPlan(data) {
|
|
17
|
-
return makeRequest(
|
|
18
|
-
"POST",
|
|
19
|
-
"/api/v1/run-plans/run",
|
|
20
|
-
data
|
|
21
|
-
);
|
|
14
|
+
return makeRequest("POST", "/api/v1/run-plans/run", data);
|
|
22
15
|
}
|
|
23
16
|
async function rerunRunPlan(id, data) {
|
|
24
17
|
return makeRequest(
|
|
@@ -41,4 +34,4 @@ export {
|
|
|
41
34
|
rerunRunPlan,
|
|
42
35
|
archiveRunPlan
|
|
43
36
|
};
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
37
|
+
//# sourceMappingURL=chunk-PTDR56Z3.js.map
|
|
@@ -10,20 +10,14 @@ function formatRunPlanRun(result) {
|
|
|
10
10
|
lines.push(`**Set ID**: ${result.setId}`);
|
|
11
11
|
lines.push(`**Jobs**: ${result.jobCount}`);
|
|
12
12
|
if (result.skippedArchived.scenarios.length > 0) {
|
|
13
|
-
lines.push(
|
|
14
|
-
`**Skipped archived scenarios**: ${result.skippedArchived.scenarios.join(", ")}`
|
|
15
|
-
);
|
|
13
|
+
lines.push(`**Skipped archived scenarios**: ${result.skippedArchived.scenarios.join(", ")}`);
|
|
16
14
|
}
|
|
17
15
|
if (result.skippedArchived.targets.length > 0) {
|
|
18
|
-
lines.push(
|
|
19
|
-
`**Skipped archived targets**: ${result.skippedArchived.targets.join(", ")}`
|
|
20
|
-
);
|
|
16
|
+
lines.push(`**Skipped archived targets**: ${result.skippedArchived.targets.join(", ")}`);
|
|
21
17
|
}
|
|
22
18
|
lines.push(`**View**: ${result.platformUrl}`);
|
|
23
19
|
lines.push("");
|
|
24
|
-
lines.push(
|
|
25
|
-
"> Use `platform_list_simulation_runs` with the batch run ID to read the results."
|
|
26
|
-
);
|
|
20
|
+
lines.push("> Use `platform_list_simulation_runs` with the batch run ID to read the results.");
|
|
27
21
|
return lines.join("\n");
|
|
28
22
|
}
|
|
29
23
|
function describeRunPlanScope(scope, scenarioIds) {
|
|
@@ -46,4 +40,4 @@ export {
|
|
|
46
40
|
formatRunPlanRun,
|
|
47
41
|
describeRunPlanScope
|
|
48
42
|
};
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
43
|
+
//# sourceMappingURL=chunk-RABYBFX5.js.map
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import {
|
|
2
|
+
escapeMarkdown
|
|
3
|
+
} from "./chunk-FOKVY3BK.js";
|
|
4
|
+
import {
|
|
5
|
+
makeRequest
|
|
6
|
+
} from "./chunk-UWLE5T2F.js";
|
|
7
|
+
|
|
8
|
+
// src/langwatch-api-query.ts
|
|
9
|
+
async function runQuery(params) {
|
|
10
|
+
return makeRequest("POST", "/api/v1/query", {
|
|
11
|
+
sql: params.sql,
|
|
12
|
+
...params.parameters ? { parameters: params.parameters } : {}
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
async function getQueryReference() {
|
|
16
|
+
return makeRequest("GET", "/api/v1/query/reference");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// src/utils/markdown-table.ts
|
|
20
|
+
var MAX_CELL_LENGTH = 200;
|
|
21
|
+
function markdownCell(value) {
|
|
22
|
+
if (value === null || value === void 0) return "";
|
|
23
|
+
const text = cellText(value);
|
|
24
|
+
const escaped = escapeMarkdown(text);
|
|
25
|
+
return escaped.length > MAX_CELL_LENGTH ? `${escaped.slice(0, MAX_CELL_LENGTH - 1)}\u2026` : escaped;
|
|
26
|
+
}
|
|
27
|
+
function markdownTable({
|
|
28
|
+
headers,
|
|
29
|
+
rows,
|
|
30
|
+
emptyMessage = "No rows."
|
|
31
|
+
}) {
|
|
32
|
+
if (headers.length === 0 || rows.length === 0) return emptyMessage;
|
|
33
|
+
const lines = [
|
|
34
|
+
`| ${headers.map(markdownCell).join(" | ")} |`,
|
|
35
|
+
`| ${headers.map(() => "---").join(" | ")} |`
|
|
36
|
+
];
|
|
37
|
+
for (const row of rows) {
|
|
38
|
+
lines.push(`| ${headers.map((header) => markdownCell(row[header])).join(" | ")} |`);
|
|
39
|
+
}
|
|
40
|
+
return lines.join("\n");
|
|
41
|
+
}
|
|
42
|
+
function cellText(value) {
|
|
43
|
+
switch (typeof value) {
|
|
44
|
+
case "string":
|
|
45
|
+
return value;
|
|
46
|
+
case "number":
|
|
47
|
+
case "boolean":
|
|
48
|
+
case "bigint":
|
|
49
|
+
return String(value);
|
|
50
|
+
case "symbol":
|
|
51
|
+
return value.toString();
|
|
52
|
+
case "function":
|
|
53
|
+
return value.name;
|
|
54
|
+
default:
|
|
55
|
+
return JSON.stringify(value);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export {
|
|
60
|
+
runQuery,
|
|
61
|
+
getQueryReference,
|
|
62
|
+
markdownTable
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=chunk-SUPUUC4W.js.map
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UWLE5T2F.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-model-providers.ts
|
|
6
6
|
async function listModelProviders() {
|
|
7
|
-
return makeRequest("GET", "/api/model-providers");
|
|
7
|
+
return makeRequest("GET", "/api/v1/model-providers");
|
|
8
8
|
}
|
|
9
9
|
async function setModelProvider(params) {
|
|
10
10
|
const { provider, ...data } = params;
|
|
11
11
|
return makeRequest(
|
|
12
12
|
"PUT",
|
|
13
|
-
`/api/model-providers/${encodeURIComponent(provider)}`,
|
|
13
|
+
`/api/v1/model-providers/${encodeURIComponent(provider)}`,
|
|
14
14
|
data
|
|
15
15
|
);
|
|
16
16
|
}
|
|
@@ -19,4 +19,4 @@ export {
|
|
|
19
19
|
listModelProviders,
|
|
20
20
|
setModelProvider
|
|
21
21
|
};
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-SXFC3FNH.js.map
|
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
var SUITE_FIELD_TYPES = ["text", "number", "boolean"];
|
|
4
4
|
var suiteFieldSchema = z.object({
|
|
5
|
-
identifier: z.string().min(1).max(64).regex(
|
|
6
|
-
/^[a-z][a-z0-9_]*$/,
|
|
7
|
-
"Lowercase letters, digits and underscores, starting with a letter"
|
|
8
|
-
).describe(
|
|
5
|
+
identifier: z.string().min(1).max(64).regex(/^[a-z][a-z0-9_]*$/, "Lowercase letters, digits and underscores, starting with a letter").describe(
|
|
9
6
|
"The field name, as scenarios and evaluator mappings address it, for example golden_sql. Lowercase letters, digits and underscores, starting with a letter. situation, criteria, name, input and output are reserved."
|
|
10
7
|
),
|
|
11
8
|
type: z.enum(SUITE_FIELD_TYPES).describe("The value type every scenario carries for this field.")
|
|
@@ -13,11 +10,7 @@ var suiteFieldSchema = z.object({
|
|
|
13
10
|
var suiteFieldsSchema = z.array(suiteFieldSchema).max(30).describe(
|
|
14
11
|
"The fields the test suite declares, in order. Up to 30. Every scenario filed in the suite carries one value per field, and an evaluator attached to the suite reads them through its mappings."
|
|
15
12
|
);
|
|
16
|
-
var SCENARIO_MAPPING_SOURCE_IDS = [
|
|
17
|
-
"conversation",
|
|
18
|
-
"scenario",
|
|
19
|
-
"trace"
|
|
20
|
-
];
|
|
13
|
+
var SCENARIO_MAPPING_SOURCE_IDS = ["conversation", "scenario", "trace"];
|
|
21
14
|
var scenarioMappingSchema = z.discriminatedUnion("type", [
|
|
22
15
|
z.object({
|
|
23
16
|
type: z.literal("source"),
|
|
@@ -71,4 +64,4 @@ export {
|
|
|
71
64
|
scenarioFieldValuesSchema,
|
|
72
65
|
toWireAttachments
|
|
73
66
|
};
|
|
74
|
-
//# sourceMappingURL=chunk-
|
|
67
|
+
//# sourceMappingURL=chunk-U24EACC4.js.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
makeRequest
|
|
3
|
+
} from "./chunk-UWLE5T2F.js";
|
|
4
|
+
|
|
5
|
+
// src/langwatch-api-api-keys.ts
|
|
6
|
+
async function listApiKeys() {
|
|
7
|
+
return makeRequest("GET", "/api/v1/api-keys");
|
|
8
|
+
}
|
|
9
|
+
async function createApiKey(data) {
|
|
10
|
+
return makeRequest("POST", "/api/v1/api-keys", data);
|
|
11
|
+
}
|
|
12
|
+
async function revokeApiKey(id) {
|
|
13
|
+
return makeRequest("DELETE", `/api/v1/api-keys/${encodeURIComponent(id)}`);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
listApiKeys,
|
|
18
|
+
createApiKey,
|
|
19
|
+
revokeApiKey
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=chunk-UNJM3BIL.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UWLE5T2F.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-simulation-runs.ts
|
|
6
6
|
async function listSimulationRuns(params) {
|
|
@@ -9,12 +9,12 @@ async function listSimulationRuns(params) {
|
|
|
9
9
|
if (params?.batchRunId) query.set("batchRunId", params.batchRunId);
|
|
10
10
|
if (params?.limit) query.set("limit", String(params.limit));
|
|
11
11
|
const qs = query.toString() ? `?${query}` : "";
|
|
12
|
-
return makeRequest("GET", `/api/simulation-runs${qs}`);
|
|
12
|
+
return makeRequest("GET", `/api/v1/simulation-runs${qs}`);
|
|
13
13
|
}
|
|
14
14
|
async function getSimulationRun(scenarioRunId) {
|
|
15
15
|
return makeRequest(
|
|
16
16
|
"GET",
|
|
17
|
-
`/api/simulation-runs/${encodeURIComponent(scenarioRunId)}`
|
|
17
|
+
`/api/v1/simulation-runs/${encodeURIComponent(scenarioRunId)}`
|
|
18
18
|
);
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -22,4 +22,4 @@ export {
|
|
|
22
22
|
listSimulationRuns,
|
|
23
23
|
getSimulationRun
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
//# sourceMappingURL=chunk-UTJCWXPZ.js.map
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getConfig,
|
|
3
|
+
requireApiKey
|
|
4
|
+
} from "./chunk-H6WGMG2T.js";
|
|
5
|
+
|
|
6
|
+
// package.json
|
|
7
|
+
var package_default = {
|
|
8
|
+
name: "@langwatch/mcp-server",
|
|
9
|
+
version: "2.2.0",
|
|
10
|
+
description: "An MCP server for Langwatch.",
|
|
11
|
+
license: "MIT",
|
|
12
|
+
author: "",
|
|
13
|
+
repository: {
|
|
14
|
+
type: "git",
|
|
15
|
+
url: "https://github.com/langwatch/langwatch.git",
|
|
16
|
+
directory: "mcp-server"
|
|
17
|
+
},
|
|
18
|
+
bin: {
|
|
19
|
+
"langwatch-mcp-server": "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
type: "module",
|
|
22
|
+
main: "./dist/index.js",
|
|
23
|
+
module: "./dist/index.js",
|
|
24
|
+
types: "./dist/index.d.ts",
|
|
25
|
+
exports: {
|
|
26
|
+
".": {
|
|
27
|
+
import: "./dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./create-mcp-server": {
|
|
30
|
+
types: "./src/create-mcp-server.d.ts",
|
|
31
|
+
import: "./dist/create-mcp-server.js",
|
|
32
|
+
require: "./dist/create-mcp-server.cjs",
|
|
33
|
+
default: "./dist/create-mcp-server.js"
|
|
34
|
+
},
|
|
35
|
+
"./config": {
|
|
36
|
+
types: "./src/config.d.ts",
|
|
37
|
+
import: "./dist/config.js",
|
|
38
|
+
require: "./dist/config.cjs",
|
|
39
|
+
default: "./dist/config.js"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
scripts: {
|
|
43
|
+
start: "node --experimental-transform-types src/index.ts",
|
|
44
|
+
build: "tsup && node build.js",
|
|
45
|
+
typecheck: "GOMAXPROCS=2 GOMEMLIMIT=2GiB pnpm -w exec tsc -b mcp/typescript",
|
|
46
|
+
prepublish: "pnpm run build",
|
|
47
|
+
test: "vitest run",
|
|
48
|
+
"test:integration": "vitest run --config vitest.integration.config.js",
|
|
49
|
+
"test:scenario": "vitest run --config vitest.scenario.config.js"
|
|
50
|
+
},
|
|
51
|
+
dependencies: {
|
|
52
|
+
"@langwatch/evaluator-contract": "workspace:*",
|
|
53
|
+
"@modelcontextprotocol/sdk": "catalog:",
|
|
54
|
+
zod: "catalog:"
|
|
55
|
+
},
|
|
56
|
+
devDependencies: {
|
|
57
|
+
"@ai-sdk/anthropic": "catalog:",
|
|
58
|
+
"@anthropic-ai/claude-code": "2.1.228",
|
|
59
|
+
"@langwatch/egress": "workspace:*",
|
|
60
|
+
"@langwatch/handled-error": "workspace:*",
|
|
61
|
+
"@langwatch/redaction": "workspace:*",
|
|
62
|
+
"@langwatch/scenario": "catalog:",
|
|
63
|
+
"@types/debug": "catalog:",
|
|
64
|
+
"@types/express": "^5.0.6",
|
|
65
|
+
"@types/node": "catalog:",
|
|
66
|
+
"@types/yargs": "^17.0.33",
|
|
67
|
+
ai: "catalog:",
|
|
68
|
+
chalk: "catalog:",
|
|
69
|
+
dotenv: "catalog:",
|
|
70
|
+
esbuild: "catalog:",
|
|
71
|
+
express: "^5.2.1",
|
|
72
|
+
"node-pty": "catalog:",
|
|
73
|
+
tsup: "catalog:",
|
|
74
|
+
typescript: "catalog:sdk-toolchain",
|
|
75
|
+
vitest: "catalog:",
|
|
76
|
+
yargs: "^18.0.0",
|
|
77
|
+
"zod-validation-error": "catalog:"
|
|
78
|
+
},
|
|
79
|
+
engines: {
|
|
80
|
+
node: "^22.23.4 || ^24.22.1 || >=26.12.1"
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// src/langwatch-api.ts
|
|
85
|
+
var MCP_IDENTITY_HEADERS = {
|
|
86
|
+
"User-Agent": `langwatch-mcp/${package_default.version}`,
|
|
87
|
+
"X-LangWatch-SDK-Name": "langwatch-mcp",
|
|
88
|
+
"X-LangWatch-SDK-Language": "typescript",
|
|
89
|
+
"X-LangWatch-SDK-Version": package_default.version
|
|
90
|
+
};
|
|
91
|
+
var LangWatchApiError = class extends Error {
|
|
92
|
+
constructor(message, status, responseBody, options = {}) {
|
|
93
|
+
super(message);
|
|
94
|
+
this.status = status;
|
|
95
|
+
this.responseBody = responseBody;
|
|
96
|
+
this.name = "LangWatchApiError";
|
|
97
|
+
this.code = options.code;
|
|
98
|
+
this.tips = options.tips;
|
|
99
|
+
this.docsUrl = options.docsUrl;
|
|
100
|
+
this.fault = options.fault;
|
|
101
|
+
this.reasons = options.reasons;
|
|
102
|
+
}
|
|
103
|
+
status;
|
|
104
|
+
responseBody;
|
|
105
|
+
code;
|
|
106
|
+
tips;
|
|
107
|
+
docsUrl;
|
|
108
|
+
fault;
|
|
109
|
+
/**
|
|
110
|
+
* The per-field failures behind this error, verbatim from the envelope. A validation failure
|
|
111
|
+
* carries the offending field and the values it would have accepted here — the difference
|
|
112
|
+
* between an agent correcting its own request and an agent guessing again.
|
|
113
|
+
*/
|
|
114
|
+
reasons;
|
|
115
|
+
};
|
|
116
|
+
var VALID_FAULTS = [
|
|
117
|
+
"customer",
|
|
118
|
+
"platform",
|
|
119
|
+
"provider",
|
|
120
|
+
"presumed_platform"
|
|
121
|
+
];
|
|
122
|
+
function parseErrorBody(responseBody) {
|
|
123
|
+
try {
|
|
124
|
+
const parsed = JSON.parse(responseBody);
|
|
125
|
+
if (!isRecord(parsed)) return {};
|
|
126
|
+
const envelope = parsed;
|
|
127
|
+
const nestedValue = envelope.error;
|
|
128
|
+
const nested = isRecord(nestedValue) ? nestedValue : null;
|
|
129
|
+
const body = nested ?? envelope;
|
|
130
|
+
const code = readErrorCode(body);
|
|
131
|
+
const message = typeof body.message === "string" ? body.message : void 0;
|
|
132
|
+
if (code === void 0 && message === void 0) {
|
|
133
|
+
return {};
|
|
134
|
+
}
|
|
135
|
+
const tips = readStringArray(body.tips);
|
|
136
|
+
const docsUrl = typeof body.docsUrl === "string" ? body.docsUrl : void 0;
|
|
137
|
+
const fault = VALID_FAULTS.includes(body.fault) ? body.fault : void 0;
|
|
138
|
+
const reasons = Array.isArray(body.reasons) && body.reasons.every((r) => !!r && typeof r === "object") ? body.reasons : void 0;
|
|
139
|
+
return { code, message, tips, docsUrl, fault, reasons };
|
|
140
|
+
} catch {
|
|
141
|
+
return {};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function isRecord(value) {
|
|
145
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
146
|
+
}
|
|
147
|
+
function readErrorCode(body) {
|
|
148
|
+
if (typeof body.code === "string") return body.code;
|
|
149
|
+
if (typeof body.error === "string") return body.error;
|
|
150
|
+
return void 0;
|
|
151
|
+
}
|
|
152
|
+
function readStringArray(value) {
|
|
153
|
+
if (!Array.isArray(value) || !value.every(isString)) return void 0;
|
|
154
|
+
return value;
|
|
155
|
+
}
|
|
156
|
+
function isString(value) {
|
|
157
|
+
return typeof value === "string";
|
|
158
|
+
}
|
|
159
|
+
function describeReason(reason) {
|
|
160
|
+
const meta = reason.meta;
|
|
161
|
+
if (!meta || typeof meta !== "object") return null;
|
|
162
|
+
const field = typeof meta.field === "string" ? meta.field : null;
|
|
163
|
+
if (!field) return null;
|
|
164
|
+
const parts = [`- ${field}`];
|
|
165
|
+
if (meta.received !== void 0) {
|
|
166
|
+
parts.push(`received ${JSON.stringify(meta.received)}`);
|
|
167
|
+
}
|
|
168
|
+
if (Array.isArray(meta.expected) && meta.expected.length > 0) {
|
|
169
|
+
parts.push(`expected one of: ${meta.expected.join(", ")}`);
|
|
170
|
+
}
|
|
171
|
+
return parts.join(" \u2014 ");
|
|
172
|
+
}
|
|
173
|
+
async function makeRequest(method, path, body) {
|
|
174
|
+
const config = getConfig();
|
|
175
|
+
const url = config.endpoint + path;
|
|
176
|
+
const headers = {
|
|
177
|
+
...MCP_IDENTITY_HEADERS,
|
|
178
|
+
"X-Auth-Token": requireApiKey()
|
|
179
|
+
};
|
|
180
|
+
if (config.projectId) {
|
|
181
|
+
headers["X-Project-Id"] = config.projectId;
|
|
182
|
+
}
|
|
183
|
+
if (body !== void 0) {
|
|
184
|
+
headers["Content-Type"] = "application/json";
|
|
185
|
+
}
|
|
186
|
+
const response = await fetch(url, {
|
|
187
|
+
method,
|
|
188
|
+
headers,
|
|
189
|
+
...body !== void 0 ? { body: JSON.stringify(body) } : {}
|
|
190
|
+
});
|
|
191
|
+
if (!response.ok) {
|
|
192
|
+
const responseBody = await response.text();
|
|
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
|
+
}
|
|
213
|
+
if (response.status === 204 || response.headers?.get("content-length") === "0") {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
return response.json();
|
|
217
|
+
}
|
|
218
|
+
async function searchTraces(params) {
|
|
219
|
+
const { format = "digest", ...rest } = params;
|
|
220
|
+
return makeRequest("POST", "/api/v1/traces/search", {
|
|
221
|
+
...rest,
|
|
222
|
+
format
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
async function getTraceById(traceId, format = "digest") {
|
|
226
|
+
return makeRequest(
|
|
227
|
+
"GET",
|
|
228
|
+
`/api/v1/traces/${encodeURIComponent(traceId)}?format=${format}`
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
async function getAnalyticsTimeseries(params) {
|
|
232
|
+
return makeRequest(
|
|
233
|
+
"POST",
|
|
234
|
+
"/api/v1/analytics/timeseries",
|
|
235
|
+
params
|
|
236
|
+
);
|
|
237
|
+
}
|
|
238
|
+
async function listPrompts() {
|
|
239
|
+
return makeRequest("GET", "/api/v1/prompts");
|
|
240
|
+
}
|
|
241
|
+
async function getPrompt(idOrHandle, options) {
|
|
242
|
+
const params = new URLSearchParams();
|
|
243
|
+
if (options?.version != null) params.set("version", String(options.version));
|
|
244
|
+
if (options?.tag) params.set("tag", options.tag);
|
|
245
|
+
const query = params.toString() ? `?${params}` : "";
|
|
246
|
+
return makeRequest(
|
|
247
|
+
"GET",
|
|
248
|
+
`/api/v1/prompts/${encodeURIComponent(idOrHandle)}${query}`
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
async function getPromptVersions(idOrHandle) {
|
|
252
|
+
return makeRequest(
|
|
253
|
+
"GET",
|
|
254
|
+
`/api/v1/prompts/${encodeURIComponent(idOrHandle)}/versions`
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
async function createPrompt(data) {
|
|
258
|
+
return makeRequest("POST", "/api/v1/prompts", data);
|
|
259
|
+
}
|
|
260
|
+
async function updatePrompt(idOrHandle, data) {
|
|
261
|
+
return makeRequest(
|
|
262
|
+
"PUT",
|
|
263
|
+
`/api/v1/prompts/${encodeURIComponent(idOrHandle)}`,
|
|
264
|
+
data
|
|
265
|
+
);
|
|
266
|
+
}
|
|
267
|
+
async function assignPromptTag({
|
|
268
|
+
idOrHandle,
|
|
269
|
+
tag,
|
|
270
|
+
versionId
|
|
271
|
+
}) {
|
|
272
|
+
return makeRequest(
|
|
273
|
+
"PUT",
|
|
274
|
+
`/api/v1/prompts/${encodeURIComponent(idOrHandle)}/tags/${encodeURIComponent(tag)}`,
|
|
275
|
+
{ versionId }
|
|
276
|
+
);
|
|
277
|
+
}
|
|
278
|
+
async function listPromptTags() {
|
|
279
|
+
return makeRequest("GET", "/api/v1/prompts/tags");
|
|
280
|
+
}
|
|
281
|
+
async function createPromptTag(name) {
|
|
282
|
+
return makeRequest("POST", "/api/v1/prompts/tags", { name });
|
|
283
|
+
}
|
|
284
|
+
async function renamePromptTag({
|
|
285
|
+
tag,
|
|
286
|
+
name
|
|
287
|
+
}) {
|
|
288
|
+
return makeRequest("PUT", `/api/v1/prompts/tags/${encodeURIComponent(tag)}`, { name });
|
|
289
|
+
}
|
|
290
|
+
async function deletePromptTag(tag) {
|
|
291
|
+
return makeRequest("DELETE", `/api/v1/prompts/tags/${encodeURIComponent(tag)}`);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export {
|
|
295
|
+
package_default,
|
|
296
|
+
LangWatchApiError,
|
|
297
|
+
makeRequest,
|
|
298
|
+
searchTraces,
|
|
299
|
+
getTraceById,
|
|
300
|
+
getAnalyticsTimeseries,
|
|
301
|
+
listPrompts,
|
|
302
|
+
getPrompt,
|
|
303
|
+
getPromptVersions,
|
|
304
|
+
createPrompt,
|
|
305
|
+
updatePrompt,
|
|
306
|
+
assignPromptTag,
|
|
307
|
+
listPromptTags,
|
|
308
|
+
createPromptTag,
|
|
309
|
+
renamePromptTag,
|
|
310
|
+
deletePromptTag
|
|
311
|
+
};
|
|
312
|
+
//# sourceMappingURL=chunk-UWLE5T2F.js.map
|