@langwatch/mcp-server 2.1.0 → 3.0.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 +218 -201
- package/CONTRIBUTING.md +10 -0
- package/README.md +70 -68
- package/dist/add-dashboard-widget-55UI6H22.js +44 -0
- package/dist/add-dashboard-widget-MJHIC3CC.js +45 -0
- package/dist/{archive-project-W3IKI7UL.js → archive-project-K5UD7A6X.js} +4 -4
- package/dist/archive-project-L4PAKT34.js +19 -0
- package/dist/{archive-run-plan-474OKHHU.js → archive-run-plan-5HSQG2HX.js} +4 -4
- package/dist/archive-run-plan-AOKNYQIO.js +15 -0
- package/dist/archive-scenario-2CWJW2VD.js +19 -0
- package/dist/{archive-scenario-V5UNYK26.js → archive-scenario-5IJQESHH.js} +4 -4
- package/dist/{archive-test-suite-O7FLDMXK.js → archive-test-suite-OPB7NFI7.js} +4 -4
- package/dist/archive-test-suite-ZC3TN6VH.js +15 -0
- package/dist/assign-prompt-tag-6DDE6ZZ5.js +23 -0
- package/dist/{assign-prompt-tag-Q46WRB6P.js → assign-prompt-tag-D7O23MJM.js} +8 -4
- package/dist/chunk-3YLN3ATJ.js +241 -0
- package/dist/{chunk-EYXMLE5X.js → chunk-4RX3G62A.js} +56 -47
- package/dist/{chunk-UF6XIGYR.js → chunk-6YZUOD34.js} +2 -5
- package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
- package/dist/chunk-7CZQDZ2K.js +319 -0
- package/dist/{chunk-RVAE2MEA.js → chunk-7GETGE6B.js} +7 -7
- package/dist/{chunk-OJLYYJWI.js → chunk-AASW2TO2.js} +7 -10
- package/dist/{chunk-QAMP3CGR.js → chunk-B4RFWIUP.js} +4 -4
- package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
- package/dist/{chunk-G4ZAZTZW.js → chunk-D2HS73VI.js} +7 -10
- package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
- package/dist/{chunk-WT4PO4A3.js → chunk-DULFP3MK.js} +10 -7
- package/dist/chunk-EYPJBL7P.js +516 -0
- package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
- package/dist/chunk-GA5JUSPT.js +64 -0
- package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
- package/dist/chunk-HLQJXUR6.js +67 -0
- package/dist/{chunk-JTQJRNFJ.js → chunk-KILVK3FS.js} +4 -4
- package/dist/chunk-MOCU5XWF.js +79 -0
- package/dist/chunk-O2WGVCED.js +41 -0
- package/dist/{chunk-HV4DWKBI.js → chunk-O7EMWEVJ.js} +2 -4
- package/dist/{chunk-UFOYFYI7.js → chunk-QXLMHLRC.js} +6 -9
- package/dist/{chunk-QRO35SOM.js → chunk-R5YJIYPF.js} +981 -747
- package/dist/{chunk-JR6DJZOU.js → chunk-RABYBFX5.js} +4 -10
- package/dist/{chunk-SR6QPRIE.js → chunk-RFC2SBEX.js} +7 -13
- package/dist/chunk-SHSVN3SE.js +21 -0
- package/dist/{chunk-CKNAH5TG.js → chunk-U24EACC4.js} +3 -10
- package/dist/{chunk-56OGTS24.js → chunk-VOUGDY2O.js} +4 -11
- package/dist/chunk-WCKZDOGF.js +31 -0
- package/dist/chunk-XQYH52SI.js +129 -0
- package/dist/{chunk-7E4FZIYJ.js → chunk-XUIJYNRJ.js} +1 -1
- package/dist/{chunk-6DJDEXET.js → chunk-YCIUEZVK.js} +6 -12
- package/dist/config-2WQGMAEN.js +16 -0
- package/dist/config.cjs +109 -0
- package/dist/config.js +5 -4
- package/dist/{create-agent-JFJ2K6X3.js → create-agent-6JNLMYQD.js} +4 -4
- package/dist/create-agent-IRZOU4R5.js +23 -0
- package/dist/create-analytics-report-N4L4V5QL.js +19 -0
- package/dist/create-analytics-report-QEHXG7FU.js +18 -0
- package/dist/{create-annotation-EUXXQ6NS.js → create-annotation-CCEGIZ67.js} +10 -5
- package/dist/create-annotation-DTHCMWHB.js +29 -0
- package/dist/{create-api-key-BGBB76JX.js → create-api-key-JKM2DSZO.js} +5 -7
- package/dist/create-api-key-JPEUIXGM.js +24 -0
- package/dist/create-dataset-DJNXYJ5B.js +22 -0
- package/dist/{create-dataset-FD5VAXU4.js → create-dataset-WON4SOTC.js} +6 -6
- package/dist/create-dataset-records-TMEOTLTO.js +20 -0
- package/dist/{create-dataset-records-WQUXXOHI.js → create-dataset-records-UJBW3C7C.js} +5 -7
- package/dist/create-evaluator-N5AEHI4K.js +27 -0
- package/dist/{create-evaluator-6NV33Z52.js → create-evaluator-XYNY2YFY.js} +4 -4
- package/dist/create-mcp-server.cjs +9712 -0
- package/dist/create-mcp-server.js +2757 -10
- package/dist/{create-project-ZQ7TFIO2.js → create-project-EY4XZ7TH.js} +4 -4
- package/dist/create-project-YL345T5L.js +44 -0
- package/dist/{create-prompt-BS6QRCUU.js → create-prompt-JZQNQ7I3.js} +5 -7
- package/dist/create-prompt-ZUMQHHX7.js +37 -0
- package/dist/create-prompt-tag-CJ5FZ436.js +17 -0
- package/dist/{create-prompt-tag-FCQ5ELSQ.js → create-prompt-tag-JFP2Q3PO.js} +3 -3
- package/dist/create-scenario-CQU2SSFB.js +33 -0
- package/dist/{create-scenario-DRPTPXU3.js → create-scenario-S6OWWKJO.js} +5 -5
- package/dist/create-test-suite-OLGCAGJA.js +36 -0
- package/dist/{create-test-suite-ZIZCCFJ4.js → create-test-suite-Y7P2RI4L.js} +6 -6
- package/dist/create-trigger-4CNBTISJ.js +48 -0
- package/dist/create-trigger-RQ653WYF.js +49 -0
- package/dist/dashboards-BA7M6CMO.js +90 -0
- package/dist/dashboards-U663GUIB.js +91 -0
- package/dist/{delete-agent-SA4JMUZF.js → delete-agent-J2Q4DRZ2.js} +4 -4
- package/dist/delete-agent-ZAU4LTXB.js +18 -0
- package/dist/delete-analytics-report-QK6X7P4S.js +19 -0
- package/dist/delete-analytics-report-YUYLDHLL.js +18 -0
- package/dist/delete-annotation-7X4NYXXM.js +17 -0
- package/dist/{delete-annotation-X3KKK7QY.js → delete-annotation-KJOCDLV3.js} +4 -4
- package/dist/{delete-dataset-W6EZ44HY.js → delete-dataset-NXP7ZPPV.js} +5 -7
- package/dist/delete-dataset-RUTZBBVD.js +18 -0
- package/dist/{delete-dataset-records-7CNOTALB.js → delete-dataset-records-4Z7DZCDW.js} +5 -7
- package/dist/delete-dataset-records-75UAR5IS.js +19 -0
- package/dist/delete-evaluator-E3CUNGTQ.js +16 -0
- package/dist/delete-evaluator-RI4GALGX.js +15 -0
- package/dist/delete-prompt-tag-LE3WJPKS.js +17 -0
- package/dist/{delete-prompt-tag-QB3OCZUV.js → delete-prompt-tag-S4KBZTNG.js} +3 -3
- package/dist/delete-workflow-4CZFIQCQ.js +17 -0
- package/dist/{delete-workflow-NG2VXYYM.js → delete-workflow-PWQPDW6H.js} +4 -4
- 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-7WHIIATI.js +442 -0
- package/dist/{discover-schema-L6QDPON3.js → discover-schema-J2ANOBKO.js} +181 -186
- package/dist/get-agent-5T3CXQOR.js +69 -0
- package/dist/{get-agent-7THF7HCU.js → get-agent-ZKYQJUQ7.js} +15 -11
- package/dist/get-analytics-4MPEK4KV.js +79 -0
- package/dist/get-analytics-ZLI3A4F5.js +80 -0
- package/dist/get-analytics-report-JCKYMA2S.js +29 -0
- package/dist/get-analytics-report-SKIP2JWH.js +30 -0
- package/dist/get-dataset-APGZBYMH.js +64 -0
- package/dist/get-dataset-LWXDVMVE.js +63 -0
- package/dist/get-evaluator-3A7BJBAB.js +47 -0
- package/dist/{get-evaluator-RZ44UIN6.js → get-evaluator-IWNJINRY.js} +4 -4
- package/dist/get-project-EQVB4LEL.js +26 -0
- package/dist/{get-project-QSQEAB33.js → get-project-RK6AJTEP.js} +4 -4
- package/dist/{get-prompt-GVKXF5NL.js → get-prompt-TLG2T2DS.js} +53 -58
- package/dist/get-prompt-ZER557X3.js +94 -0
- package/dist/get-run-plan-5X7DDJRN.js +58 -0
- package/dist/{get-run-plan-NY7J5GRE.js → get-run-plan-PEHRO5M3.js} +7 -9
- package/dist/{get-scenario-Q3LLQE4T.js → get-scenario-375W5D6I.js} +5 -5
- package/dist/get-scenario-UQX45ZZO.js +37 -0
- package/dist/{get-simulation-run-WINEYDMK.js → get-simulation-run-2NBXJADG.js} +26 -22
- package/dist/get-simulation-run-QZTLGL7W.js +69 -0
- package/dist/{get-test-suite-4HKA7OKS.js → get-test-suite-GVIBDG7K.js} +5 -5
- package/dist/get-test-suite-OODIR3RI.js +48 -0
- package/dist/{get-trace-RCUV7N4O.js → get-trace-AGCHVPJK.js} +11 -13
- package/dist/get-trace-KJLYAZRC.js +45 -0
- package/dist/get-workflow-3TV2YYC5.js +25 -0
- package/dist/{get-workflow-EEOC7Y45.js → get-workflow-7LZSVPP2.js} +4 -4
- package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
- package/dist/{http-server-WCDUARTH.js → http-server-7CCN3EHJ.js} +4249 -325
- package/dist/index.js +59595 -38027
- package/dist/langwatch-api-analytics-reports-6CF6KUET.js +17 -0
- package/dist/langwatch-api-analytics-reports-RPFB5AO5.js +18 -0
- package/dist/{langwatch-api-annotations-6DHVZWUK.js → langwatch-api-annotations-H4AI4TKG.js} +4 -4
- package/dist/langwatch-api-annotations-QSJNUQQS.js +17 -0
- package/dist/langwatch-api-monitors-ENHLOL3S.js +47 -0
- package/dist/{langwatch-api-monitors-6ISFJ7WX.js → langwatch-api-monitors-OHSGADTH.js} +11 -16
- package/dist/langwatch-api-secrets-AGW6UUMD.js +55 -0
- package/dist/langwatch-api-secrets-CLTS766Q.js +56 -0
- package/dist/langwatch-api-triggers-G5UWFNN2.js +22 -0
- package/dist/langwatch-api-triggers-QMR7KEXW.js +23 -0
- package/dist/langwatch-api-workflows-HKTBIKKY.js +15 -0
- package/dist/{langwatch-api-workflows-6UJL5U4Z.js → langwatch-api-workflows-OMROZH2O.js} +4 -4
- package/dist/{list-agents-AMVDQPQL.js → list-agents-BYWDNAHT.js} +4 -4
- package/dist/list-agents-MG24MHZE.js +42 -0
- package/dist/list-analytics-reports-G3EPWGSQ.js +32 -0
- package/dist/list-analytics-reports-PPWIFRES.js +33 -0
- package/dist/list-annotations-QCLGEK5A.js +38 -0
- package/dist/{list-annotations-6PR5NLIC.js → list-annotations-Y4EUBJHG.js} +10 -5
- package/dist/list-api-keys-DAVOBPFK.js +42 -0
- package/dist/{list-api-keys-GVPNBIHQ.js → list-api-keys-JMW5WRXX.js} +10 -5
- package/dist/list-dashboards-2P3VJFRS.js +29 -0
- package/dist/list-dashboards-MW5O3MKH.js +30 -0
- package/dist/list-dataset-records-KEHT7G6Q.js +43 -0
- package/dist/{list-dataset-records-O67HZ35Y.js → list-dataset-records-KMLLMZAZ.js} +14 -10
- package/dist/{list-datasets-WXZL6UMP.js → list-datasets-P3JK2ZHS.js} +9 -13
- package/dist/list-datasets-Z7OOE4KI.js +56 -0
- package/dist/{list-evaluators-PAX72WCN.js → list-evaluators-7RRESBOU.js} +5 -7
- package/dist/list-evaluators-VATJVOHR.js +32 -0
- package/dist/{list-model-providers-VVLZMLCX.js → list-model-providers-OXDRPUCJ.js} +4 -4
- package/dist/list-model-providers-VXQJWDXU.js +35 -0
- package/dist/{list-projects-AQVI6SUK.js → list-projects-HUVK7L3W.js} +5 -7
- package/dist/list-projects-X72ZXVY5.js +40 -0
- package/dist/{list-prompt-tags-WZFBJOHG.js → list-prompt-tags-3I3LWFIR.js} +3 -3
- package/dist/list-prompt-tags-DRHUH2ND.js +23 -0
- package/dist/list-prompts-6DX3QECJ.js +30 -0
- package/dist/{list-prompts-BQOHRHYT.js → list-prompts-PS423RU3.js} +4 -6
- package/dist/list-run-plans-5SXPOV3X.js +45 -0
- package/dist/{list-run-plans-UBAU2DGH.js → list-run-plans-6VNHINPY.js} +5 -5
- package/dist/list-scenarios-EQWCW7Q4.js +45 -0
- package/dist/{list-scenarios-MS4IUIVM.js → list-scenarios-GKNH3YND.js} +13 -11
- package/dist/{list-simulation-runs-D6YF4ZOU.js → list-simulation-runs-KHY7KALI.js} +12 -8
- package/dist/list-simulation-runs-PUDK32C2.js +53 -0
- package/dist/list-test-suites-7H2DRILK.js +34 -0
- package/dist/{list-test-suites-L7R2O6DR.js → list-test-suites-GY56LGLY.js} +4 -4
- package/dist/list-trigger-fires-7RZUP54Y.js +19 -0
- package/dist/list-trigger-fires-OZUF65LI.js +20 -0
- package/dist/list-triggers-BGUCUXTJ.js +45 -0
- package/dist/list-triggers-XC5KMX4C.js +46 -0
- package/dist/list-workflows-55NYC3PC.js +33 -0
- package/dist/{list-workflows-6MV4XJHF.js → list-workflows-HV7FUWZA.js} +5 -7
- package/dist/{rename-prompt-tag-K5LQ4CY6.js → rename-prompt-tag-2I7Z5FCY.js} +3 -3
- package/dist/rename-prompt-tag-SZYTOWDX.js +18 -0
- package/dist/{rename-test-suite-NTYHAO5X.js → rename-test-suite-27AYY33K.js} +4 -4
- package/dist/rename-test-suite-CLIEPZDO.js +20 -0
- package/dist/report-issue-5HSL7CNB.js +924 -0
- package/dist/{report-issue-RHZZ33IS.js → report-issue-N7ND5TM6.js} +107 -67
- package/dist/{rerun-run-plan-MUDWJBE4.js → rerun-run-plan-O3VUZ6CG.js} +5 -5
- package/dist/rerun-run-plan-OJTVVGJI.js +21 -0
- package/dist/{revoke-api-key-6LAZ3QZZ.js → revoke-api-key-BU6BKGCG.js} +4 -4
- package/dist/revoke-api-key-NZNCFOIR.js +15 -0
- package/dist/run-agent-244O4Y5M.js +75 -0
- package/dist/run-agent-HPCGZGYW.js +74 -0
- package/dist/run-plan-2ZPGGZ4H.js +38 -0
- package/dist/{run-plan-T4ZYOZGA.js → run-plan-KSXUYQT3.js} +7 -7
- package/dist/run-query-4LMOQ5UW.js +47 -0
- package/dist/run-query-BQUHIUC2.js +46 -0
- package/dist/{run-test-suite-L4MZ7G4D.js → run-test-suite-P3WLVPXC.js} +6 -6
- package/dist/run-test-suite-UEOMCON6.js +25 -0
- package/dist/run-workflow-EFZ6HG5B.js +36 -0
- package/dist/{run-workflow-DFIS23AP.js → run-workflow-I4IHEN54.js} +4 -4
- package/dist/search-traces-6IR7PR4L.js +170 -0
- package/dist/search-traces-BYML2NQ4.js +171 -0
- package/dist/set-model-provider-RBNGWFVI.js +33 -0
- package/dist/{set-model-provider-XRNMFOVR.js → set-model-provider-SHEVKWRC.js} +4 -4
- package/dist/{update-agent-DUWNYBNA.js → update-agent-PTKTM2B5.js} +4 -4
- package/dist/update-agent-ZPXWRMS2.js +20 -0
- package/dist/update-dashboard-widget-HKCBXH7X.js +62 -0
- package/dist/update-dashboard-widget-IP2TTQ5G.js +63 -0
- package/dist/update-dataset-GHIN6JR3.js +22 -0
- package/dist/{update-dataset-YSOMDCOB.js → update-dataset-IRVMY5PF.js} +6 -6
- package/dist/update-dataset-record-6VI7K2CL.js +19 -0
- package/dist/{update-dataset-record-DEA2ITYR.js → update-dataset-record-Z3L7ACNF.js} +4 -4
- package/dist/update-evaluator-5NLNE6VY.js +24 -0
- package/dist/{update-evaluator-NH7Q5GWV.js → update-evaluator-FEH7H6NS.js} +4 -4
- package/dist/update-project-75H3LDQT.js +24 -0
- package/dist/{update-project-Q26FBSYH.js → update-project-QPR3QX55.js} +4 -4
- package/dist/update-prompt-BCDFTNLK.js +140 -0
- package/dist/{update-prompt-ZQQ2C3KU.js → update-prompt-NPRXYSWA.js} +27 -29
- package/dist/update-scenario-BNOMDCMV.js +34 -0
- package/dist/{update-scenario-WUX34JAR.js → update-scenario-EM5XGMB7.js} +5 -5
- package/package.json +35 -39
- package/pyproject.toml +23 -8
- package/src/config.d.ts +6 -0
- package/src/config.ts +22 -29
- package/src/create-mcp-server.ts +887 -634
- 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-analytics-reports.ts +62 -0
- package/src/langwatch-api-annotations.ts +11 -12
- package/src/langwatch-api-api-keys.ts +8 -9
- package/src/langwatch-api-dashboard-widgets.ts +47 -0
- package/src/langwatch-api-dashboards.ts +109 -24
- 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 +10 -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 +118 -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/schemas/widget-sources.ts +33 -0
- package/src/tools/add-dashboard-widget.ts +51 -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-analytics-report.ts +7 -0
- package/src/tools/create-annotation.ts +7 -2
- package/src/tools/create-api-key.ts +4 -6
- 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-widget-queries.ts +45 -0
- package/src/tools/dashboards.ts +104 -0
- package/src/tools/delete-agent.ts +1 -1
- package/src/tools/delete-analytics-report.ts +7 -0
- package/src/tools/delete-annotation.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-report.ts +23 -0
- package/src/tools/get-analytics.ts +52 -46
- 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-analytics-reports.ts +27 -0
- package/src/tools/list-annotations.ts +8 -5
- package/src/tools/list-api-keys.ts +7 -2
- package/src/tools/list-dashboards.ts +20 -21
- 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 +7 -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 +37 -34
- 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 +86 -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/uv.lock +667 -341
- 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/chunk-S4GVX36W.js +0 -39
- package/dist/config.d.ts +0 -17
- package/dist/create-dashboard-Z76AIPLS.js +0 -19
- package/dist/create-mcp-server.d.ts +0 -10
- package/dist/delete-dashboard-LYMRPF27.js +0 -19
- 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-dashboard-P4WWVHFU.js +0 -30
- package/dist/get-dataset-AKTYSQDI.js +0 -49
- package/dist/index.d.ts +0 -2
- package/dist/langwatch-api-dashboards-2KJL2M42.js +0 -18
- package/dist/langwatch-api-secrets-OEBD6GBU.js +0 -41
- package/dist/langwatch-api-triggers-5E6DDGX6.js +0 -31
- package/dist/list-dashboards-Z3BZKDGF.js +0 -33
- 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
- package/src/tools/create-dashboard.ts +0 -7
- package/src/tools/delete-dashboard.ts +0 -7
- package/src/tools/get-dashboard.ts +0 -22
|
@@ -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
|
|
@@ -1,35 +1,29 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7CZQDZ2K.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-RFC2SBEX.js.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
makeRequest
|
|
3
|
+
} from "./chunk-7CZQDZ2K.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-SHSVN3SE.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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7CZQDZ2K.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-VOUGDY2O.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// src/tools/dashboard-widget-queries.ts
|
|
2
|
+
function withSources({
|
|
3
|
+
queries,
|
|
4
|
+
sources
|
|
5
|
+
}) {
|
|
6
|
+
if (sources === void 0) return [...queries];
|
|
7
|
+
return queries.map((query) => ({ ...query, sources }));
|
|
8
|
+
}
|
|
9
|
+
var MAX_DASHBOARD_WIDGET_QUERIES = 8;
|
|
10
|
+
function normalizeDashboardWidgetQueries({
|
|
11
|
+
queries
|
|
12
|
+
}) {
|
|
13
|
+
const normalized = Array.isArray(queries) ? queries : Object.entries(queries).map(([name, sql]) => ({ name, sql }));
|
|
14
|
+
if (normalized.length === 0) {
|
|
15
|
+
throw new Error(
|
|
16
|
+
"Provide at least one named LWQL query in `queries`. Validate each query's SQL first with run_query."
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
if (normalized.length > MAX_DASHBOARD_WIDGET_QUERIES) {
|
|
20
|
+
throw new Error(
|
|
21
|
+
`A widget may declare at most ${MAX_DASHBOARD_WIDGET_QUERIES} queries, got ${normalized.length}.`
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
return normalized;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
withSources,
|
|
29
|
+
normalizeDashboardWidgetQueries
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=chunk-WCKZDOGF.js.map
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import {
|
|
2
|
+
LangWatchApiError,
|
|
3
|
+
makeRequest
|
|
4
|
+
} from "./chunk-7CZQDZ2K.js";
|
|
5
|
+
|
|
6
|
+
// src/langwatch-api-datasets.ts
|
|
7
|
+
var DATASET_PREVIEW_MAX_RECORDS = 100;
|
|
8
|
+
var DATASET_PREVIEW_MAX_BYTES = 1024 * 1024;
|
|
9
|
+
async function listDatasets(params) {
|
|
10
|
+
const query = new URLSearchParams();
|
|
11
|
+
if (params?.page != null) query.set("page", String(params.page));
|
|
12
|
+
if (params?.limit != null) query.set("limit", String(params.limit));
|
|
13
|
+
const qs = query.toString();
|
|
14
|
+
const path = qs ? `/api/v1/dataset?${qs}` : "/api/v1/dataset";
|
|
15
|
+
return makeRequest("GET", path);
|
|
16
|
+
}
|
|
17
|
+
async function getDataset(slugOrId) {
|
|
18
|
+
const page = await readPreviewPage(slugOrId);
|
|
19
|
+
if (!page?.dataset) {
|
|
20
|
+
return makeRequest(
|
|
21
|
+
"GET",
|
|
22
|
+
`/api/v1/dataset/${encodeURIComponent(slugOrId)}`
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
const data = [];
|
|
26
|
+
let bytes = 0;
|
|
27
|
+
for (const record of page.data) {
|
|
28
|
+
bytes += JSON.stringify(record).length;
|
|
29
|
+
if (bytes > DATASET_PREVIEW_MAX_BYTES) break;
|
|
30
|
+
data.push(record);
|
|
31
|
+
}
|
|
32
|
+
const { id, name, slug, columnTypes, createdAt, updatedAt } = page.dataset;
|
|
33
|
+
const totalRecords = page.pagination.total;
|
|
34
|
+
return {
|
|
35
|
+
id,
|
|
36
|
+
name,
|
|
37
|
+
slug,
|
|
38
|
+
columnTypes,
|
|
39
|
+
createdAt,
|
|
40
|
+
updatedAt,
|
|
41
|
+
data,
|
|
42
|
+
totalRecords,
|
|
43
|
+
omittedRecords: Math.max(0, totalRecords - data.length)
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
async function readPreviewPage(slugOrId) {
|
|
47
|
+
let limit = DATASET_PREVIEW_MAX_RECORDS;
|
|
48
|
+
for (; ; ) {
|
|
49
|
+
try {
|
|
50
|
+
return await listDatasetRecords({ slugOrId, page: 1, limit });
|
|
51
|
+
} catch (error) {
|
|
52
|
+
if (!(error instanceof LangWatchApiError)) throw error;
|
|
53
|
+
if (error.status === 404) return null;
|
|
54
|
+
if (error.status !== 413 || limit <= 1) throw error;
|
|
55
|
+
limit = smallerLimit(limit, error.responseBody);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function smallerLimit(limit, responseBody) {
|
|
60
|
+
const half = Math.max(1, Math.floor(limit / 2));
|
|
61
|
+
try {
|
|
62
|
+
const suggested = JSON.parse(responseBody).meta?.suggestedLimit;
|
|
63
|
+
const usable = typeof suggested === "number" && Number.isInteger(suggested) && suggested >= 1 && suggested < limit;
|
|
64
|
+
return usable ? suggested : half;
|
|
65
|
+
} catch {
|
|
66
|
+
return half;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function createDataset(data) {
|
|
70
|
+
return makeRequest("POST", "/api/v1/dataset", data);
|
|
71
|
+
}
|
|
72
|
+
async function updateDataset(params) {
|
|
73
|
+
const { slugOrId, ...data } = params;
|
|
74
|
+
return makeRequest(
|
|
75
|
+
"PATCH",
|
|
76
|
+
`/api/v1/dataset/${encodeURIComponent(slugOrId)}`,
|
|
77
|
+
data
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
async function deleteDataset(slugOrId) {
|
|
81
|
+
return makeRequest(
|
|
82
|
+
"DELETE",
|
|
83
|
+
`/api/v1/dataset/${encodeURIComponent(slugOrId)}`
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
async function createDatasetRecords(params) {
|
|
87
|
+
const { slugOrId, entries } = params;
|
|
88
|
+
return makeRequest("POST", `/api/v1/dataset/${encodeURIComponent(slugOrId)}/records`, {
|
|
89
|
+
entries
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
async function updateDatasetRecord(params) {
|
|
93
|
+
const { slugOrId, recordId, entry } = params;
|
|
94
|
+
return makeRequest(
|
|
95
|
+
"PATCH",
|
|
96
|
+
`/api/v1/dataset/${encodeURIComponent(slugOrId)}/records/${encodeURIComponent(recordId)}`,
|
|
97
|
+
{ entry }
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
async function deleteDatasetRecords(params) {
|
|
101
|
+
const { slugOrId, recordIds } = params;
|
|
102
|
+
return makeRequest("DELETE", `/api/v1/dataset/${encodeURIComponent(slugOrId)}/records`, {
|
|
103
|
+
recordIds
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
async function listDatasetRecords(params) {
|
|
107
|
+
const { slugOrId } = params;
|
|
108
|
+
const query = new URLSearchParams();
|
|
109
|
+
if (params.page != null) query.set("page", String(params.page));
|
|
110
|
+
if (params.limit != null) query.set("limit", String(params.limit));
|
|
111
|
+
const qs = query.toString();
|
|
112
|
+
const path = `/api/v1/dataset/${encodeURIComponent(slugOrId)}/records${qs ? `?${qs}` : ""}`;
|
|
113
|
+
return makeRequest("GET", path);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export {
|
|
117
|
+
DATASET_PREVIEW_MAX_RECORDS,
|
|
118
|
+
DATASET_PREVIEW_MAX_BYTES,
|
|
119
|
+
listDatasets,
|
|
120
|
+
getDataset,
|
|
121
|
+
createDataset,
|
|
122
|
+
updateDataset,
|
|
123
|
+
deleteDataset,
|
|
124
|
+
createDatasetRecords,
|
|
125
|
+
updateDatasetRecord,
|
|
126
|
+
deleteDatasetRecords,
|
|
127
|
+
listDatasetRecords
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=chunk-XQYH52SI.js.map
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7CZQDZ2K.js";
|
|
4
4
|
|
|
5
5
|
// src/langwatch-api-test-suites.ts
|
|
6
6
|
async function listTestSuites() {
|
|
7
7
|
return makeRequest("GET", "/api/v1/test-suites");
|
|
8
8
|
}
|
|
9
9
|
async function createTestSuite(data) {
|
|
10
|
-
return makeRequest(
|
|
11
|
-
"POST",
|
|
12
|
-
"/api/v1/test-suites",
|
|
13
|
-
data
|
|
14
|
-
);
|
|
10
|
+
return makeRequest("POST", "/api/v1/test-suites", data);
|
|
15
11
|
}
|
|
16
12
|
async function getTestSuite(id) {
|
|
17
13
|
return makeRequest(
|
|
@@ -28,11 +24,9 @@ async function updateTestSuite(params) {
|
|
|
28
24
|
);
|
|
29
25
|
}
|
|
30
26
|
async function renameTestSuite(params) {
|
|
31
|
-
return makeRequest(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
{ name: params.name }
|
|
35
|
-
);
|
|
27
|
+
return makeRequest("PATCH", `/api/v1/test-suites/${encodeURIComponent(params.id)}`, {
|
|
28
|
+
name: params.name
|
|
29
|
+
});
|
|
36
30
|
}
|
|
37
31
|
async function archiveTestSuite(id) {
|
|
38
32
|
return makeRequest(
|
|
@@ -60,4 +54,4 @@ export {
|
|
|
60
54
|
archiveTestSuite,
|
|
61
55
|
runTestSuite
|
|
62
56
|
};
|
|
63
|
-
//# sourceMappingURL=chunk-
|
|
57
|
+
//# sourceMappingURL=chunk-YCIUEZVK.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getConfig,
|
|
3
|
+
initConfig,
|
|
4
|
+
requireApiKey,
|
|
5
|
+
runWithConfig,
|
|
6
|
+
tryGetConfig
|
|
7
|
+
} from "./chunk-DULFP3MK.js";
|
|
8
|
+
import "./chunk-SAS5OB7F.js";
|
|
9
|
+
export {
|
|
10
|
+
getConfig,
|
|
11
|
+
initConfig,
|
|
12
|
+
requireApiKey,
|
|
13
|
+
runWithConfig,
|
|
14
|
+
tryGetConfig
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=config-2WQGMAEN.js.map
|
package/dist/config.cjs
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/config.ts
|
|
21
|
+
var config_exports = {};
|
|
22
|
+
__export(config_exports, {
|
|
23
|
+
getConfig: () => getConfig,
|
|
24
|
+
initConfig: () => initConfig,
|
|
25
|
+
requireApiKey: () => requireApiKey,
|
|
26
|
+
runWithConfig: () => runWithConfig,
|
|
27
|
+
tryGetConfig: () => tryGetConfig
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(config_exports);
|
|
30
|
+
var import_node_async_hooks = require("async_hooks");
|
|
31
|
+
var GLOBAL_KEY = "__langwatch_mcp_config";
|
|
32
|
+
var STORAGE_KEY = "__langwatch_mcp_config_storage";
|
|
33
|
+
function getGlobalState() {
|
|
34
|
+
const g = globalThis;
|
|
35
|
+
if (!g[GLOBAL_KEY]) {
|
|
36
|
+
g[GLOBAL_KEY] = void 0;
|
|
37
|
+
}
|
|
38
|
+
if (!g[STORAGE_KEY]) {
|
|
39
|
+
g[STORAGE_KEY] = new import_node_async_hooks.AsyncLocalStorage();
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
get globalConfig() {
|
|
43
|
+
return g[GLOBAL_KEY];
|
|
44
|
+
},
|
|
45
|
+
set globalConfig(val) {
|
|
46
|
+
g[GLOBAL_KEY] = val;
|
|
47
|
+
},
|
|
48
|
+
get configStorage() {
|
|
49
|
+
return g[STORAGE_KEY];
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function normalizeEndpoint(endpoint) {
|
|
54
|
+
const trimmed = endpoint.trim();
|
|
55
|
+
let end = trimmed.length;
|
|
56
|
+
while (end > 0 && trimmed[end - 1] === "/") end--;
|
|
57
|
+
return trimmed.slice(0, end);
|
|
58
|
+
}
|
|
59
|
+
function initConfig(args) {
|
|
60
|
+
const state = getGlobalState();
|
|
61
|
+
state.globalConfig = {
|
|
62
|
+
apiKey: args.apiKey || process.env.LANGWATCH_API_KEY,
|
|
63
|
+
endpoint: normalizeEndpoint(args.endpoint ?? "") || normalizeEndpoint(process.env.LANGWATCH_ENDPOINT ?? "") || "https://app.langwatch.ai",
|
|
64
|
+
projectId: args.projectId ?? process.env.LANGWATCH_PROJECT_ID
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function tryGetConfig() {
|
|
68
|
+
const state = getGlobalState();
|
|
69
|
+
return state.configStorage.getStore() ?? state.globalConfig;
|
|
70
|
+
}
|
|
71
|
+
function getConfig() {
|
|
72
|
+
const config = tryGetConfig();
|
|
73
|
+
if (!config) {
|
|
74
|
+
console.error(
|
|
75
|
+
"[MCP config] getConfig() failed: globalConfig is null, no scoped config active. Was initConfig() called? Stack:",
|
|
76
|
+
new Error().stack
|
|
77
|
+
);
|
|
78
|
+
throw new Error("Config not initialized");
|
|
79
|
+
}
|
|
80
|
+
return config;
|
|
81
|
+
}
|
|
82
|
+
function requireApiKey() {
|
|
83
|
+
const config = getConfig();
|
|
84
|
+
if (!config.apiKey) {
|
|
85
|
+
const state = getGlobalState();
|
|
86
|
+
const hasScoped = !!state.configStorage.getStore();
|
|
87
|
+
console.error(
|
|
88
|
+
`[MCP config] requireApiKey() failed: apiKey is undefined. scopedConfig=${hasScoped}, endpoint=${config.endpoint}. In HTTP mode, the API key should be set per-session via runWithConfig(). Stack:`,
|
|
89
|
+
new Error().stack
|
|
90
|
+
);
|
|
91
|
+
throw new Error(
|
|
92
|
+
"LANGWATCH_API_KEY is required. Set it via --apiKey flag or LANGWATCH_API_KEY environment variable."
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
return config.apiKey;
|
|
96
|
+
}
|
|
97
|
+
function runWithConfig(config, fn) {
|
|
98
|
+
const state = getGlobalState();
|
|
99
|
+
return state.configStorage.run(config, fn);
|
|
100
|
+
}
|
|
101
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
102
|
+
0 && (module.exports = {
|
|
103
|
+
getConfig,
|
|
104
|
+
initConfig,
|
|
105
|
+
requireApiKey,
|
|
106
|
+
runWithConfig,
|
|
107
|
+
tryGetConfig
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=config.cjs.map
|
package/dist/config.js
CHANGED
|
@@ -2,13 +2,14 @@ import {
|
|
|
2
2
|
getConfig,
|
|
3
3
|
initConfig,
|
|
4
4
|
requireApiKey,
|
|
5
|
-
runWithConfig
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
runWithConfig,
|
|
6
|
+
tryGetConfig
|
|
7
|
+
} from "./chunk-DULFP3MK.js";
|
|
8
8
|
export {
|
|
9
9
|
getConfig,
|
|
10
10
|
initConfig,
|
|
11
11
|
requireApiKey,
|
|
12
|
-
runWithConfig
|
|
12
|
+
runWithConfig,
|
|
13
|
+
tryGetConfig
|
|
13
14
|
};
|
|
14
15
|
//# sourceMappingURL=config.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAgent
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-4RX3G62A.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/create-agent.ts
|
|
@@ -21,4 +21,4 @@ async function handleCreateAgent(params) {
|
|
|
21
21
|
export {
|
|
22
22
|
handleCreateAgent
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=create-agent-
|
|
24
|
+
//# sourceMappingURL=create-agent-6JNLMYQD.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createAgent
|
|
3
|
+
} from "./chunk-EYPJBL7P.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
|
+
|
|
7
|
+
// src/tools/create-agent.ts
|
|
8
|
+
async function handleCreateAgent(params) {
|
|
9
|
+
const agent = await createAgent({
|
|
10
|
+
name: params.name,
|
|
11
|
+
type: params.type,
|
|
12
|
+
config: params.config ?? {}
|
|
13
|
+
});
|
|
14
|
+
return `Agent created successfully!
|
|
15
|
+
|
|
16
|
+
**Name**: ${agent.name}
|
|
17
|
+
**ID**: ${agent.id}
|
|
18
|
+
**Type**: ${agent.type}`;
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
handleCreateAgent
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=create-agent-IRZOU4R5.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createAnalyticsReport
|
|
3
|
+
} from "./chunk-O2WGVCED.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
|
+
import "./chunk-SAS5OB7F.js";
|
|
7
|
+
|
|
8
|
+
// src/tools/create-analytics-report.ts
|
|
9
|
+
async function handleCreateAnalyticsReport(params) {
|
|
10
|
+
const report = await createAnalyticsReport({ name: params.name });
|
|
11
|
+
return `Analytics Report created successfully!
|
|
12
|
+
|
|
13
|
+
**Name**: ${report.name}
|
|
14
|
+
**ID**: ${report.id}`;
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
handleCreateAnalyticsReport
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=create-analytics-report-N4L4V5QL.js.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createAnalyticsReport
|
|
3
|
+
} from "./chunk-O2WGVCED.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
|
+
|
|
7
|
+
// src/tools/create-analytics-report.ts
|
|
8
|
+
async function handleCreateAnalyticsReport(params) {
|
|
9
|
+
const report = await createAnalyticsReport({ name: params.name });
|
|
10
|
+
return `Analytics Report created successfully!
|
|
11
|
+
|
|
12
|
+
**Name**: ${report.name}
|
|
13
|
+
**ID**: ${report.id}`;
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
handleCreateAnalyticsReport
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=create-analytics-report-QEHXG7FU.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAnnotation
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-RFC2SBEX.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/create-annotation.ts
|
|
@@ -12,7 +12,12 @@ async function handleCreateAnnotation(params) {
|
|
|
12
12
|
isThumbsUp: params.isThumbsUp,
|
|
13
13
|
email: params.email
|
|
14
14
|
});
|
|
15
|
-
|
|
15
|
+
let rating = "";
|
|
16
|
+
if (params.isThumbsUp === true) {
|
|
17
|
+
rating = " \u{1F44D}";
|
|
18
|
+
} else if (params.isThumbsUp === false) {
|
|
19
|
+
rating = " \u{1F44E}";
|
|
20
|
+
}
|
|
16
21
|
return `Annotation created successfully!${rating}
|
|
17
22
|
|
|
18
23
|
**ID**: ${annotation.id ?? "\u2014"}
|
|
@@ -22,4 +27,4 @@ async function handleCreateAnnotation(params) {
|
|
|
22
27
|
export {
|
|
23
28
|
handleCreateAnnotation
|
|
24
29
|
};
|
|
25
|
-
//# sourceMappingURL=create-annotation-
|
|
30
|
+
//# sourceMappingURL=create-annotation-CCEGIZ67.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createAnnotation
|
|
3
|
+
} from "./chunk-RFC2SBEX.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
|
+
|
|
7
|
+
// src/tools/create-annotation.ts
|
|
8
|
+
async function handleCreateAnnotation(params) {
|
|
9
|
+
const annotation = await createAnnotation(params.traceId, {
|
|
10
|
+
comment: params.comment,
|
|
11
|
+
isThumbsUp: params.isThumbsUp,
|
|
12
|
+
email: params.email
|
|
13
|
+
});
|
|
14
|
+
let rating = "";
|
|
15
|
+
if (params.isThumbsUp === true) {
|
|
16
|
+
rating = " \u{1F44D}";
|
|
17
|
+
} else if (params.isThumbsUp === false) {
|
|
18
|
+
rating = " \u{1F44E}";
|
|
19
|
+
}
|
|
20
|
+
return `Annotation created successfully!${rating}
|
|
21
|
+
|
|
22
|
+
**ID**: ${annotation.id ?? "\u2014"}
|
|
23
|
+
**Trace ID**: ${params.traceId}${params.comment ? `
|
|
24
|
+
**Comment**: ${params.comment}` : ""}`;
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
handleCreateAnnotation
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=create-annotation-DTHCMWHB.js.map
|