@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { makeRequest } from "./langwatch-api.
|
|
1
|
+
import { makeRequest } from "./langwatch-api.ts";
|
|
2
2
|
|
|
3
3
|
// --- Evaluator types ---
|
|
4
4
|
|
|
@@ -13,8 +13,8 @@ export interface EvaluatorSummary {
|
|
|
13
13
|
copiedFromEvaluatorId: string | null;
|
|
14
14
|
createdAt: string;
|
|
15
15
|
updatedAt: string;
|
|
16
|
-
fields:
|
|
17
|
-
outputFields:
|
|
16
|
+
fields: { identifier: string; type: string; optional?: boolean }[];
|
|
17
|
+
outputFields: { identifier: string; type: string; optional?: boolean }[];
|
|
18
18
|
workflowName?: string;
|
|
19
19
|
workflowIcon?: string;
|
|
20
20
|
}
|
|
@@ -25,25 +25,22 @@ export interface EvaluatorSummary {
|
|
|
25
25
|
* Extracts the evaluatorType from an evaluator's config.
|
|
26
26
|
* Centralises the cast so callers don't repeat it.
|
|
27
27
|
*/
|
|
28
|
-
export function getEvaluatorType(
|
|
29
|
-
evaluator
|
|
30
|
-
): string | undefined {
|
|
31
|
-
return (evaluator.config as Record<string, unknown> | null)
|
|
32
|
-
?.evaluatorType as string | undefined;
|
|
28
|
+
export function getEvaluatorType(evaluator: Pick<EvaluatorSummary, "config">): string | undefined {
|
|
29
|
+
return (evaluator.config as Record<string, unknown> | null)?.evaluatorType as string | undefined;
|
|
33
30
|
}
|
|
34
31
|
|
|
35
32
|
// --- Evaluator API functions ---
|
|
36
33
|
|
|
37
34
|
/** Lists all evaluators in the project. */
|
|
38
35
|
export async function listEvaluators(): Promise<EvaluatorSummary[]> {
|
|
39
|
-
return makeRequest("GET", "/api/evaluators") as Promise<EvaluatorSummary[]>;
|
|
36
|
+
return makeRequest("GET", "/api/v1/evaluators") as Promise<EvaluatorSummary[]>;
|
|
40
37
|
}
|
|
41
38
|
|
|
42
39
|
/** Retrieves a single evaluator by ID or slug. */
|
|
43
40
|
export async function getEvaluator(idOrSlug: string): Promise<EvaluatorSummary> {
|
|
44
41
|
return makeRequest(
|
|
45
42
|
"GET",
|
|
46
|
-
`/api/evaluators/${encodeURIComponent(idOrSlug)}`,
|
|
43
|
+
`/api/v1/evaluators/${encodeURIComponent(idOrSlug)}`,
|
|
47
44
|
) as Promise<EvaluatorSummary>;
|
|
48
45
|
}
|
|
49
46
|
|
|
@@ -52,7 +49,7 @@ export async function createEvaluator(data: {
|
|
|
52
49
|
name: string;
|
|
53
50
|
config: Record<string, unknown>;
|
|
54
51
|
}): Promise<EvaluatorSummary> {
|
|
55
|
-
return makeRequest("POST", "/api/evaluators", data) as Promise<EvaluatorSummary>;
|
|
52
|
+
return makeRequest("POST", "/api/v1/evaluators", data) as Promise<EvaluatorSummary>;
|
|
56
53
|
}
|
|
57
54
|
|
|
58
55
|
/** Updates an existing evaluator. */
|
|
@@ -64,17 +61,14 @@ export async function updateEvaluator(params: {
|
|
|
64
61
|
const { id, ...data } = params;
|
|
65
62
|
return makeRequest(
|
|
66
63
|
"PUT",
|
|
67
|
-
`/api/evaluators/${encodeURIComponent(id)}`,
|
|
64
|
+
`/api/v1/evaluators/${encodeURIComponent(id)}`,
|
|
68
65
|
data,
|
|
69
66
|
) as Promise<EvaluatorSummary>;
|
|
70
67
|
}
|
|
71
68
|
|
|
72
69
|
/** Archives (soft-deletes) an evaluator. */
|
|
73
|
-
export async function deleteEvaluator(
|
|
74
|
-
idOrSlug
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
"DELETE",
|
|
78
|
-
`/api/evaluators/${encodeURIComponent(idOrSlug)}`,
|
|
79
|
-
) as Promise<{ id: string; archived: boolean }>;
|
|
70
|
+
export async function deleteEvaluator(idOrSlug: string): Promise<{ success: boolean }> {
|
|
71
|
+
return makeRequest("DELETE", `/api/v1/evaluators/${encodeURIComponent(idOrSlug)}`) as Promise<{
|
|
72
|
+
success: boolean;
|
|
73
|
+
}>;
|
|
80
74
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { makeRequest } from "./langwatch-api.
|
|
1
|
+
import { makeRequest } from "./langwatch-api.ts";
|
|
2
2
|
|
|
3
3
|
// --- Model Provider types ---
|
|
4
4
|
|
|
@@ -13,14 +13,14 @@ export interface ModelProviderEntry {
|
|
|
13
13
|
customEmbeddingsModels?: unknown[] | null;
|
|
14
14
|
disabledByDefault?: boolean;
|
|
15
15
|
deploymentMapping?: unknown;
|
|
16
|
-
extraHeaders?:
|
|
16
|
+
extraHeaders?: { key: string; value: string }[] | null;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
// --- Model Provider API functions ---
|
|
20
20
|
|
|
21
21
|
/** Lists all model providers for the project, with masked API keys. */
|
|
22
22
|
export async function listModelProviders(): Promise<Record<string, ModelProviderEntry>> {
|
|
23
|
-
return makeRequest("GET", "/api/model-providers") as Promise<
|
|
23
|
+
return makeRequest("GET", "/api/v1/model-providers") as Promise<
|
|
24
24
|
Record<string, ModelProviderEntry>
|
|
25
25
|
>;
|
|
26
26
|
}
|
|
@@ -35,7 +35,7 @@ export async function setModelProvider(params: {
|
|
|
35
35
|
const { provider, ...data } = params;
|
|
36
36
|
return makeRequest(
|
|
37
37
|
"PUT",
|
|
38
|
-
`/api/model-providers/${encodeURIComponent(provider)}`,
|
|
38
|
+
`/api/v1/model-providers/${encodeURIComponent(provider)}`,
|
|
39
39
|
data,
|
|
40
40
|
) as Promise<Record<string, ModelProviderEntry>>;
|
|
41
41
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { makeRequest } from "./langwatch-api.
|
|
1
|
+
import { makeRequest } from "./langwatch-api.ts";
|
|
2
2
|
|
|
3
3
|
export interface MonitorSummary {
|
|
4
4
|
id: string;
|
|
@@ -19,13 +19,13 @@ export interface MonitorSummary {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export async function listMonitors(): Promise<MonitorSummary[]> {
|
|
22
|
-
return makeRequest("GET", "/api/monitors") as Promise<MonitorSummary[]>;
|
|
22
|
+
return makeRequest("GET", "/api/v1/monitors") as Promise<MonitorSummary[]>;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export async function getMonitor(id: string): Promise<MonitorSummary> {
|
|
26
26
|
return makeRequest(
|
|
27
27
|
"GET",
|
|
28
|
-
`/api/monitors/${encodeURIComponent(id)}
|
|
28
|
+
`/api/v1/monitors/${encodeURIComponent(id)}`,
|
|
29
29
|
) as Promise<MonitorSummary>;
|
|
30
30
|
}
|
|
31
31
|
|
|
@@ -38,7 +38,7 @@ export async function createMonitor(data: {
|
|
|
38
38
|
level?: string;
|
|
39
39
|
parameters?: Record<string, unknown>;
|
|
40
40
|
}): Promise<MonitorSummary> {
|
|
41
|
-
return makeRequest("POST", "/api/monitors", {
|
|
41
|
+
return makeRequest("POST", "/api/v1/monitors", {
|
|
42
42
|
...data,
|
|
43
43
|
preconditions: [],
|
|
44
44
|
parameters: data.parameters ?? {},
|
|
@@ -56,8 +56,8 @@ export async function updateMonitor(params: {
|
|
|
56
56
|
const { id, ...data } = params;
|
|
57
57
|
return makeRequest(
|
|
58
58
|
"PATCH",
|
|
59
|
-
`/api/monitors/${encodeURIComponent(id)}`,
|
|
60
|
-
data
|
|
59
|
+
`/api/v1/monitors/${encodeURIComponent(id)}`,
|
|
60
|
+
data,
|
|
61
61
|
) as Promise<MonitorSummary>;
|
|
62
62
|
}
|
|
63
63
|
|
|
@@ -65,18 +65,14 @@ export async function toggleMonitor(params: {
|
|
|
65
65
|
id: string;
|
|
66
66
|
enabled: boolean;
|
|
67
67
|
}): Promise<{ id: string; enabled: boolean }> {
|
|
68
|
-
return makeRequest(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
{ enabled: params.enabled }
|
|
72
|
-
) as Promise<{ id: string; enabled: boolean }>;
|
|
68
|
+
return makeRequest("POST", `/api/v1/monitors/${encodeURIComponent(params.id)}/toggle`, {
|
|
69
|
+
enabled: params.enabled,
|
|
70
|
+
}) as Promise<{ id: string; enabled: boolean }>;
|
|
73
71
|
}
|
|
74
72
|
|
|
75
|
-
export async function deleteMonitor(
|
|
76
|
-
id
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
`/api/monitors/${encodeURIComponent(id)}`
|
|
81
|
-
) as Promise<{ id: string; deleted: boolean }>;
|
|
73
|
+
export async function deleteMonitor(id: string): Promise<{ id: string; deleted: boolean }> {
|
|
74
|
+
return makeRequest("DELETE", `/api/v1/monitors/${encodeURIComponent(id)}`) as Promise<{
|
|
75
|
+
id: string;
|
|
76
|
+
deleted: boolean;
|
|
77
|
+
}>;
|
|
82
78
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { makeRequest } from "./langwatch-api.
|
|
1
|
+
import { makeRequest } from "./langwatch-api.ts";
|
|
2
2
|
|
|
3
3
|
export interface ProjectSummary {
|
|
4
4
|
id: string;
|
|
@@ -35,13 +35,13 @@ export async function listProjects(params?: {
|
|
|
35
35
|
if (params?.page) query.set("page", String(params.page));
|
|
36
36
|
if (params?.limit) query.set("limit", String(params.limit));
|
|
37
37
|
const qs = query.toString() ? `?${query}` : "";
|
|
38
|
-
return makeRequest("GET", `/api/projects${qs}`) as Promise<ProjectListResponse>;
|
|
38
|
+
return makeRequest("GET", `/api/v1/projects${qs}`) as Promise<ProjectListResponse>;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export async function getProject(id: string): Promise<ProjectSummary> {
|
|
42
42
|
return makeRequest(
|
|
43
43
|
"GET",
|
|
44
|
-
`/api/projects/${encodeURIComponent(id)}`,
|
|
44
|
+
`/api/v1/projects/${encodeURIComponent(id)}`,
|
|
45
45
|
) as Promise<ProjectSummary>;
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -52,7 +52,7 @@ export async function createProject(data: {
|
|
|
52
52
|
teamId?: string;
|
|
53
53
|
newTeamName?: string;
|
|
54
54
|
}): Promise<ProjectCreateResponse> {
|
|
55
|
-
return makeRequest("POST", "/api/projects", data) as Promise<ProjectCreateResponse>;
|
|
55
|
+
return makeRequest("POST", "/api/v1/projects", data) as Promise<ProjectCreateResponse>;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
export async function updateProject(params: {
|
|
@@ -65,7 +65,7 @@ export async function updateProject(params: {
|
|
|
65
65
|
const { id, ...data } = params;
|
|
66
66
|
return makeRequest(
|
|
67
67
|
"PATCH",
|
|
68
|
-
`/api/projects/${encodeURIComponent(id)}`,
|
|
68
|
+
`/api/v1/projects/${encodeURIComponent(id)}`,
|
|
69
69
|
data,
|
|
70
70
|
) as Promise<ProjectSummary>;
|
|
71
71
|
}
|
|
@@ -75,8 +75,9 @@ export async function archiveProject(id: string): Promise<{
|
|
|
75
75
|
name: string;
|
|
76
76
|
archivedAt: string;
|
|
77
77
|
}> {
|
|
78
|
-
return makeRequest(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
return makeRequest("DELETE", `/api/v1/projects/${encodeURIComponent(id)}`) as Promise<{
|
|
79
|
+
id: string;
|
|
80
|
+
name: string;
|
|
81
|
+
archivedAt: string;
|
|
82
|
+
}>;
|
|
82
83
|
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The query family: the analytics SQL door and the reference describing both query languages.
|
|
3
|
+
* Fetched, replacing a hand-copied field list that drifted, so this server cannot describe a
|
|
4
|
+
* missing field.
|
|
5
|
+
* @see specs/mcp-server/schema-discovery.feature
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { makeRequest } from "./langwatch-api.ts";
|
|
9
|
+
|
|
10
|
+
/** One column of a query result. */
|
|
11
|
+
export interface QueryResultColumn {
|
|
12
|
+
name: string;
|
|
13
|
+
type: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** What `POST /api/v1/query` answers with. */
|
|
17
|
+
export interface QueryRunResponse {
|
|
18
|
+
columns: QueryResultColumn[];
|
|
19
|
+
rows: Record<string, unknown>[];
|
|
20
|
+
statistics: {
|
|
21
|
+
elapsedMs: number;
|
|
22
|
+
rowsRead: number;
|
|
23
|
+
bytesRead: number;
|
|
24
|
+
rowsReturned: number;
|
|
25
|
+
};
|
|
26
|
+
truncated: boolean;
|
|
27
|
+
diagnostics: { code: string; message: string }[];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** One published dataset. */
|
|
31
|
+
export interface QueryReferenceView {
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
grain: string;
|
|
35
|
+
joinKeys: string[];
|
|
36
|
+
timeColumn: string;
|
|
37
|
+
freshness: string;
|
|
38
|
+
columns: {
|
|
39
|
+
name: string;
|
|
40
|
+
type: string;
|
|
41
|
+
description: string;
|
|
42
|
+
unit: string | null;
|
|
43
|
+
gates: string[];
|
|
44
|
+
available: boolean;
|
|
45
|
+
}[];
|
|
46
|
+
exampleSql: string;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** One worked query, in either language. */
|
|
50
|
+
export interface QueryReferenceExample {
|
|
51
|
+
id: string;
|
|
52
|
+
title: string;
|
|
53
|
+
intent: string;
|
|
54
|
+
language: "lwql" | "trace-filter";
|
|
55
|
+
tags: string[];
|
|
56
|
+
text: string;
|
|
57
|
+
parameters: { name: string; type: string; description: string }[];
|
|
58
|
+
requires: { gates: string[]; functions: string[] };
|
|
59
|
+
available: boolean;
|
|
60
|
+
notes?: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** What `GET /api/v1/query/reference` answers with. */
|
|
64
|
+
export interface QueryReferenceResponse {
|
|
65
|
+
version: string;
|
|
66
|
+
lwql: {
|
|
67
|
+
enabled: boolean;
|
|
68
|
+
schema: { database: string; views: QueryReferenceView[] };
|
|
69
|
+
limits: {
|
|
70
|
+
maxStatementLength: number;
|
|
71
|
+
maxRowsReturned: number;
|
|
72
|
+
maxResultBytes: number;
|
|
73
|
+
maxExecutionTimeSeconds: number;
|
|
74
|
+
pagination: string;
|
|
75
|
+
};
|
|
76
|
+
endpoints: { method: string; path: string; description: string }[];
|
|
77
|
+
};
|
|
78
|
+
traceFilter: {
|
|
79
|
+
syntax: string;
|
|
80
|
+
fields: {
|
|
81
|
+
name: string;
|
|
82
|
+
label: string;
|
|
83
|
+
valueType: string;
|
|
84
|
+
group: string | null;
|
|
85
|
+
facetable: boolean;
|
|
86
|
+
knownValues: string[];
|
|
87
|
+
}[];
|
|
88
|
+
dynamicPrefixes: {
|
|
89
|
+
prefix: string;
|
|
90
|
+
label: string;
|
|
91
|
+
description: string;
|
|
92
|
+
aliases: string[];
|
|
93
|
+
}[];
|
|
94
|
+
endpoints: { method: string; path: string; description: string }[];
|
|
95
|
+
};
|
|
96
|
+
examples: QueryReferenceExample[];
|
|
97
|
+
decisionTable: { when: string; use: string; why: string }[];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** Runs one read-only LangWatchQL statement, as written. */
|
|
101
|
+
export async function runQuery(params: {
|
|
102
|
+
sql: string;
|
|
103
|
+
parameters?: Record<string, string | number | boolean | null>;
|
|
104
|
+
}): Promise<QueryRunResponse> {
|
|
105
|
+
return makeRequest("POST", "/api/v1/query", {
|
|
106
|
+
sql: params.sql,
|
|
107
|
+
...(params.parameters ? { parameters: params.parameters } : {}),
|
|
108
|
+
}) as Promise<QueryRunResponse>;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/** Reads the query reference: both languages, their fields and worked examples. */
|
|
112
|
+
export async function getQueryReference(): Promise<QueryReferenceResponse> {
|
|
113
|
+
return makeRequest("GET", "/api/v1/query/reference") as Promise<QueryReferenceResponse>;
|
|
114
|
+
}
|
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
import type { z } from "zod";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import { makeRequest } from "./langwatch-api.ts";
|
|
3
4
|
import type {
|
|
4
5
|
runParametersSchema,
|
|
5
6
|
runPlanScopeSchema,
|
|
6
7
|
runPlanTargetSchema,
|
|
7
8
|
RunPlanTargetWire,
|
|
8
|
-
} from "./schemas/run-plan.
|
|
9
|
-
import type { EvaluatorAttachmentWire } from "./schemas/suite-fields.
|
|
9
|
+
} from "./schemas/run-plan.ts";
|
|
10
|
+
import type { EvaluatorAttachmentWire } from "./schemas/suite-fields.ts";
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*
|
|
14
|
-
* A run plan is what you run, and its NAME identifies it: running against a
|
|
15
|
-
* name that exists replaces that plan's configuration, running against a new
|
|
16
|
-
* name creates one. Configuration is the scope, the targets, the repeat count
|
|
17
|
-
* and the two models. Parameters, the note and the idempotency key belong to
|
|
18
|
-
* one run, not to the plan.
|
|
19
|
-
*/
|
|
12
|
+
// Client for /api/v1/run-plans. A run plan is identified by name; re-using the
|
|
13
|
+
// name replaces its config while parameters/notes belong to one run only.
|
|
20
14
|
|
|
21
15
|
/**
|
|
22
16
|
* The shapes the run plan tools accept, taken from the zod that validates
|
|
@@ -77,12 +71,12 @@ export interface RunPlanRunResult {
|
|
|
77
71
|
scenarios: string[];
|
|
78
72
|
targets: string[];
|
|
79
73
|
};
|
|
80
|
-
items:
|
|
74
|
+
items: {
|
|
81
75
|
scenarioRunId: string;
|
|
82
76
|
scenarioId: string;
|
|
83
77
|
target: RunPlanTargetWire;
|
|
84
78
|
name: string | null;
|
|
85
|
-
}
|
|
79
|
+
}[];
|
|
86
80
|
runPlanId: string;
|
|
87
81
|
planName: string;
|
|
88
82
|
/** True when this run created the plan, false when it joined an existing one. */
|
|
@@ -96,19 +90,14 @@ export interface RunPlanArchiveResponse {
|
|
|
96
90
|
}
|
|
97
91
|
|
|
98
92
|
/** Lists the run plans of the project. */
|
|
99
|
-
export async function listRunPlans(params?: {
|
|
100
|
-
includeArchived?: boolean;
|
|
101
|
-
}): Promise<RunPlan[]> {
|
|
93
|
+
export async function listRunPlans(params?: { includeArchived?: boolean }): Promise<RunPlan[]> {
|
|
102
94
|
const query = params?.includeArchived ? "?includeArchived=true" : "";
|
|
103
95
|
return makeRequest("GET", `/api/v1/run-plans${query}`) as Promise<RunPlan[]>;
|
|
104
96
|
}
|
|
105
97
|
|
|
106
98
|
/** Retrieves a single run plan by id. */
|
|
107
99
|
export async function getRunPlan(id: string): Promise<RunPlan> {
|
|
108
|
-
return makeRequest(
|
|
109
|
-
"GET",
|
|
110
|
-
`/api/v1/run-plans/${encodeURIComponent(id)}`,
|
|
111
|
-
) as Promise<RunPlan>;
|
|
100
|
+
return makeRequest("GET", `/api/v1/run-plans/${encodeURIComponent(id)}`) as Promise<RunPlan>;
|
|
112
101
|
}
|
|
113
102
|
|
|
114
103
|
/**
|
|
@@ -123,11 +112,7 @@ export async function runRunPlan(data: {
|
|
|
123
112
|
parameters?: RunParameters;
|
|
124
113
|
note?: string;
|
|
125
114
|
}): Promise<RunPlanRunResult> {
|
|
126
|
-
return makeRequest(
|
|
127
|
-
"POST",
|
|
128
|
-
"/api/v1/run-plans/run",
|
|
129
|
-
data,
|
|
130
|
-
) as Promise<RunPlanRunResult>;
|
|
115
|
+
return makeRequest("POST", "/api/v1/run-plans/run", data) as Promise<RunPlanRunResult>;
|
|
131
116
|
}
|
|
132
117
|
|
|
133
118
|
/** Runs a plan again with the configuration it already holds. */
|
|
@@ -147,9 +132,7 @@ export async function rerunRunPlan(
|
|
|
147
132
|
}
|
|
148
133
|
|
|
149
134
|
/** Archives a run plan. */
|
|
150
|
-
export async function archiveRunPlan(
|
|
151
|
-
id: string,
|
|
152
|
-
): Promise<RunPlanArchiveResponse> {
|
|
135
|
+
export async function archiveRunPlan(id: string): Promise<RunPlanArchiveResponse> {
|
|
153
136
|
return makeRequest(
|
|
154
137
|
"DELETE",
|
|
155
138
|
`/api/v1/run-plans/${encodeURIComponent(id)}`,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { makeRequest } from "./langwatch-api.
|
|
2
|
-
import type { ScenarioFieldValues } from "./schemas/suite-fields.
|
|
1
|
+
import { makeRequest } from "./langwatch-api.ts";
|
|
2
|
+
import type { ScenarioFieldValues } from "./schemas/suite-fields.ts";
|
|
3
3
|
|
|
4
4
|
// --- Scenario types ---
|
|
5
5
|
|
|
@@ -24,14 +24,14 @@ export interface ScenarioArchiveResponse {
|
|
|
24
24
|
|
|
25
25
|
/** Lists all scenarios in the project. */
|
|
26
26
|
export async function listScenarios(): Promise<ScenarioSummary[]> {
|
|
27
|
-
return makeRequest("GET", "/api/scenarios") as Promise<ScenarioSummary[]>;
|
|
27
|
+
return makeRequest("GET", "/api/v1/scenarios") as Promise<ScenarioSummary[]>;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/** Retrieves a single scenario by ID. */
|
|
31
31
|
export async function getScenario(id: string): Promise<ScenarioSummary> {
|
|
32
32
|
return makeRequest(
|
|
33
33
|
"GET",
|
|
34
|
-
`/api/scenarios/${encodeURIComponent(id)}
|
|
34
|
+
`/api/v1/scenarios/${encodeURIComponent(id)}`,
|
|
35
35
|
) as Promise<ScenarioSummary>;
|
|
36
36
|
}
|
|
37
37
|
|
|
@@ -44,7 +44,7 @@ export async function createScenario(data: {
|
|
|
44
44
|
testSuiteId?: string | null;
|
|
45
45
|
fields?: ScenarioFieldValues;
|
|
46
46
|
}): Promise<ScenarioSummary> {
|
|
47
|
-
return makeRequest("POST", "/api/scenarios", data) as Promise<ScenarioSummary>;
|
|
47
|
+
return makeRequest("POST", "/api/v1/scenarios", data) as Promise<ScenarioSummary>;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
/** Updates an existing scenario. */
|
|
@@ -60,17 +60,15 @@ export async function updateScenario(params: {
|
|
|
60
60
|
const { id, ...data } = params;
|
|
61
61
|
return makeRequest(
|
|
62
62
|
"PUT",
|
|
63
|
-
`/api/scenarios/${encodeURIComponent(id)}`,
|
|
64
|
-
data
|
|
63
|
+
`/api/v1/scenarios/${encodeURIComponent(id)}`,
|
|
64
|
+
data,
|
|
65
65
|
) as Promise<ScenarioSummary>;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
/** Archives (soft-deletes) a scenario. */
|
|
69
|
-
export async function archiveScenario(
|
|
70
|
-
id: string
|
|
71
|
-
): Promise<ScenarioArchiveResponse> {
|
|
69
|
+
export async function archiveScenario(id: string): Promise<ScenarioArchiveResponse> {
|
|
72
70
|
return makeRequest(
|
|
73
71
|
"DELETE",
|
|
74
|
-
`/api/scenarios/${encodeURIComponent(id)}
|
|
72
|
+
`/api/v1/scenarios/${encodeURIComponent(id)}`,
|
|
75
73
|
) as Promise<ScenarioArchiveResponse>;
|
|
76
74
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getConfig } from "./config.ts";
|
|
2
|
+
import { makeRequest } from "./langwatch-api.ts";
|
|
2
3
|
|
|
3
4
|
export interface SecretSummary {
|
|
4
5
|
id: string;
|
|
@@ -8,41 +9,47 @@ export interface SecretSummary {
|
|
|
8
9
|
updatedAt: string;
|
|
9
10
|
}
|
|
10
11
|
|
|
12
|
+
function projectId(): string {
|
|
13
|
+
const projectId = getConfig().projectId;
|
|
14
|
+
if (!projectId) {
|
|
15
|
+
throw new Error("LANGWATCH_PROJECT_ID is required for secret operations");
|
|
16
|
+
}
|
|
17
|
+
return projectId;
|
|
18
|
+
}
|
|
19
|
+
|
|
11
20
|
export async function listSecrets(): Promise<SecretSummary[]> {
|
|
12
|
-
|
|
21
|
+
const targetProjectId = projectId();
|
|
22
|
+
return makeRequest(
|
|
23
|
+
"GET",
|
|
24
|
+
`/api/v1/secrets?projectId=${encodeURIComponent(targetProjectId)}`,
|
|
25
|
+
) as Promise<SecretSummary[]>;
|
|
13
26
|
}
|
|
14
27
|
|
|
15
28
|
export async function getSecret(id: string): Promise<SecretSummary> {
|
|
29
|
+
const targetProjectId = projectId();
|
|
16
30
|
return makeRequest(
|
|
17
31
|
"GET",
|
|
18
|
-
`/api/secrets/${encodeURIComponent(id)}
|
|
32
|
+
`/api/v1/secrets/${encodeURIComponent(id)}?projectId=${encodeURIComponent(targetProjectId)}`,
|
|
19
33
|
) as Promise<SecretSummary>;
|
|
20
34
|
}
|
|
21
35
|
|
|
22
|
-
export async function createSecret(data: {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
36
|
+
export async function createSecret(data: { name: string; value: string }): Promise<SecretSummary> {
|
|
37
|
+
return makeRequest("POST", "/api/v1/secrets", {
|
|
38
|
+
projectId: projectId(),
|
|
39
|
+
...data,
|
|
40
|
+
}) as Promise<SecretSummary>;
|
|
27
41
|
}
|
|
28
42
|
|
|
29
|
-
export async function updateSecret(params: {
|
|
30
|
-
id: string;
|
|
31
|
-
value: string;
|
|
32
|
-
}): Promise<SecretSummary> {
|
|
43
|
+
export async function updateSecret(params: { id: string; value: string }): Promise<SecretSummary> {
|
|
33
44
|
const { id, value } = params;
|
|
34
|
-
return makeRequest(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
) as Promise<SecretSummary>;
|
|
45
|
+
return makeRequest("PUT", `/api/v1/secrets/${encodeURIComponent(id)}`, {
|
|
46
|
+
projectId: projectId(),
|
|
47
|
+
value,
|
|
48
|
+
}) as Promise<SecretSummary>;
|
|
39
49
|
}
|
|
40
50
|
|
|
41
|
-
export async function deleteSecret(
|
|
42
|
-
id
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"DELETE",
|
|
46
|
-
`/api/secrets/${encodeURIComponent(id)}`
|
|
47
|
-
) as Promise<{ id: string; deleted: boolean }>;
|
|
51
|
+
export async function deleteSecret(id: string): Promise<{ id: string; deleted: boolean }> {
|
|
52
|
+
return makeRequest("DELETE", `/api/v1/secrets/${encodeURIComponent(id)}`, {
|
|
53
|
+
projectId: projectId(),
|
|
54
|
+
}) as Promise<{ id: string; deleted: boolean }>;
|
|
48
55
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { makeRequest } from "./langwatch-api.
|
|
2
|
-
import type { SimulationRunEvaluation } from "./tools/format-suite-details.
|
|
1
|
+
import { makeRequest } from "./langwatch-api.ts";
|
|
2
|
+
import type { SimulationRunEvaluation } from "./tools/format-suite-details.ts";
|
|
3
3
|
|
|
4
4
|
export interface SimulationRunSummary {
|
|
5
5
|
scenarioRunId: string;
|
|
@@ -18,7 +18,7 @@ export interface SimulationRunSummary {
|
|
|
18
18
|
/** One result per evaluator that ran after the conversation. */
|
|
19
19
|
evaluations?: SimulationRunEvaluation[];
|
|
20
20
|
} | null;
|
|
21
|
-
messages?:
|
|
21
|
+
messages?: { role: string; content: string }[];
|
|
22
22
|
/** Why the run was started, as given when it was queued. Null without one. */
|
|
23
23
|
note?: string | null;
|
|
24
24
|
timestamp: number;
|
|
@@ -42,15 +42,13 @@ export async function listSimulationRuns(params?: {
|
|
|
42
42
|
if (params?.batchRunId) query.set("batchRunId", params.batchRunId);
|
|
43
43
|
if (params?.limit) query.set("limit", String(params.limit));
|
|
44
44
|
const qs = query.toString() ? `?${query}` : "";
|
|
45
|
-
return makeRequest("GET", `/api/simulation-runs${qs}`) as Promise<SimulationRunListResponse>;
|
|
45
|
+
return makeRequest("GET", `/api/v1/simulation-runs${qs}`) as Promise<SimulationRunListResponse>;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
/** Gets a single simulation run by its ID. */
|
|
49
|
-
export async function getSimulationRun(
|
|
50
|
-
scenarioRunId: string,
|
|
51
|
-
): Promise<SimulationRunSummary> {
|
|
49
|
+
export async function getSimulationRun(scenarioRunId: string): Promise<SimulationRunSummary> {
|
|
52
50
|
return makeRequest(
|
|
53
51
|
"GET",
|
|
54
|
-
`/api/simulation-runs/${encodeURIComponent(scenarioRunId)}`,
|
|
52
|
+
`/api/v1/simulation-runs/${encodeURIComponent(scenarioRunId)}`,
|
|
55
53
|
) as Promise<SimulationRunSummary>;
|
|
56
54
|
}
|