@langwatch/mcp-server 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitignore +7 -0
- package/.npmignore +41 -0
- package/CHANGELOG.md +192 -201
- package/CONTRIBUTING.md +10 -0
- package/README.md +70 -68
- package/dist/add-dashboard-widget-4ZC5UN73.js +50 -0
- package/dist/add-dashboard-widget-ACC6QYBG.js +49 -0
- package/dist/archive-project-KWFM3I5Z.js +19 -0
- package/dist/{archive-project-W3IKI7UL.js → archive-project-SPVHXK6A.js} +4 -4
- package/dist/{archive-run-plan-474OKHHU.js → archive-run-plan-65QN3XRX.js} +4 -4
- package/dist/archive-run-plan-Z4SYE6BP.js +15 -0
- package/dist/{archive-scenario-V5UNYK26.js → archive-scenario-A6QV5LOW.js} +4 -4
- package/dist/archive-scenario-FXEYQNEH.js +19 -0
- package/dist/archive-test-suite-5ADQ3KPQ.js +15 -0
- package/dist/{archive-test-suite-O7FLDMXK.js → archive-test-suite-NKZDZY3D.js} +4 -4
- package/dist/assign-prompt-tag-5IUZXJ2T.js +23 -0
- package/dist/{assign-prompt-tag-Q46WRB6P.js → assign-prompt-tag-HBZLBIFD.js} +8 -4
- package/dist/{chunk-OJLYYJWI.js → chunk-3OCG3QPU.js} +7 -10
- package/dist/chunk-3YLN3ATJ.js +241 -0
- package/dist/chunk-5FNCQRCX.js +91 -0
- package/dist/{chunk-UF6XIGYR.js → chunk-6YZUOD34.js} +2 -5
- package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
- package/dist/chunk-7VNSRCXO.js +129 -0
- package/dist/{chunk-G4ZAZTZW.js → chunk-B4J3PJLX.js} +11 -10
- package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
- package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
- package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
- package/dist/{chunk-WT4PO4A3.js → chunk-H6WGMG2T.js} +10 -7
- package/dist/{chunk-EYXMLE5X.js → chunk-HGELNIVY.js} +56 -47
- package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
- package/dist/{chunk-RVAE2MEA.js → chunk-I7ATIZED.js} +7 -7
- package/dist/{chunk-S4GVX36W.js → chunk-ILZDO25L.js} +7 -10
- package/dist/{chunk-QRO35SOM.js → chunk-J7PQKBLD.js} +652 -528
- package/dist/{chunk-SR6QPRIE.js → chunk-JRJPH75H.js} +7 -13
- package/dist/chunk-K2I7Z3LZ.js +28 -0
- package/dist/{chunk-UFOYFYI7.js → chunk-NKMTIHIJ.js} +6 -9
- package/dist/{chunk-HV4DWKBI.js → chunk-O7EMWEVJ.js} +2 -4
- package/dist/{chunk-56OGTS24.js → chunk-PTDR56Z3.js} +4 -11
- package/dist/{chunk-JR6DJZOU.js → chunk-RABYBFX5.js} +4 -10
- package/dist/chunk-SUPUUC4W.js +64 -0
- package/dist/{chunk-JTQJRNFJ.js → chunk-SXFC3FNH.js} +4 -4
- package/dist/{chunk-CKNAH5TG.js → chunk-U24EACC4.js} +3 -10
- package/dist/chunk-UNJM3BIL.js +21 -0
- package/dist/{chunk-QAMP3CGR.js → chunk-UTJCWXPZ.js} +4 -4
- package/dist/chunk-UWLE5T2F.js +312 -0
- package/dist/{chunk-6DJDEXET.js → chunk-VMWJD732.js} +6 -12
- package/dist/{chunk-7E4FZIYJ.js → chunk-XUIJYNRJ.js} +1 -1
- package/dist/chunk-Y34DHR5K.js +67 -0
- package/dist/chunk-YCARO42Z.js +516 -0
- package/dist/config-EAKW6F26.js +16 -0
- package/dist/config.cjs +109 -0
- package/dist/config.js +5 -4
- package/dist/{create-agent-JFJ2K6X3.js → create-agent-AYZ3LB3V.js} +4 -4
- package/dist/create-agent-S5ZBCEFT.js +23 -0
- package/dist/create-annotation-LHNCLHYP.js +29 -0
- package/dist/{create-annotation-EUXXQ6NS.js → create-annotation-VUSXULQK.js} +10 -5
- package/dist/{create-api-key-BGBB76JX.js → create-api-key-NNYKARMG.js} +5 -7
- package/dist/create-api-key-T4KSNPKB.js +24 -0
- package/dist/create-dashboard-DHVFMEU4.js +18 -0
- package/dist/{create-dashboard-Z76AIPLS.js → create-dashboard-WTKKS5Z6.js} +4 -4
- package/dist/{create-dataset-FD5VAXU4.js → create-dataset-2MC4SD4O.js} +6 -6
- package/dist/create-dataset-LUP5PVDM.js +22 -0
- package/dist/create-dataset-records-NSKBZP3G.js +20 -0
- package/dist/{create-dataset-records-WQUXXOHI.js → create-dataset-records-W4GLN2FV.js} +5 -7
- package/dist/{create-evaluator-6NV33Z52.js → create-evaluator-643G6LXL.js} +4 -4
- package/dist/create-evaluator-HMTYO5SS.js +27 -0
- package/dist/create-mcp-server.cjs +9513 -0
- package/dist/create-mcp-server.js +2647 -10
- package/dist/create-project-6N7PIYRY.js +44 -0
- package/dist/{create-project-ZQ7TFIO2.js → create-project-KAIC46UY.js} +4 -4
- package/dist/{create-prompt-BS6QRCUU.js → create-prompt-E67LXIYT.js} +5 -7
- package/dist/create-prompt-PKJ7EDRR.js +37 -0
- package/dist/create-prompt-tag-4YO3FSJ3.js +17 -0
- package/dist/{create-prompt-tag-FCQ5ELSQ.js → create-prompt-tag-OPQUEXWB.js} +3 -3
- package/dist/create-scenario-5PJBMAXO.js +33 -0
- package/dist/{create-scenario-DRPTPXU3.js → create-scenario-UEM77OE7.js} +5 -5
- package/dist/{create-test-suite-ZIZCCFJ4.js → create-test-suite-4IPXVSFQ.js} +6 -6
- package/dist/create-test-suite-SZEPVXSE.js +36 -0
- package/dist/create-trigger-5HZSCRAN.js +49 -0
- package/dist/create-trigger-PRELMT6J.js +48 -0
- package/dist/delete-agent-JUIZWAXG.js +18 -0
- package/dist/{delete-agent-SA4JMUZF.js → delete-agent-QMEK3XHK.js} +4 -4
- package/dist/delete-annotation-HY3O2OGR.js +17 -0
- package/dist/{delete-annotation-X3KKK7QY.js → delete-annotation-VKIQWUYW.js} +4 -4
- package/dist/delete-dashboard-76N66XXL.js +18 -0
- package/dist/{delete-dashboard-LYMRPF27.js → delete-dashboard-JVIVHNJM.js} +4 -4
- package/dist/delete-dataset-HQCR66MG.js +18 -0
- package/dist/{delete-dataset-W6EZ44HY.js → delete-dataset-WKRUW4FP.js} +5 -7
- package/dist/{delete-dataset-records-7CNOTALB.js → delete-dataset-records-C2IQFFVQ.js} +5 -7
- package/dist/delete-dataset-records-SDUHQLLM.js +19 -0
- package/dist/delete-evaluator-4SNSCLEE.js +16 -0
- package/dist/delete-evaluator-QP3QHTLN.js +15 -0
- package/dist/delete-prompt-tag-NZ4JQMYG.js +17 -0
- package/dist/{delete-prompt-tag-QB3OCZUV.js → delete-prompt-tag-YYQ4VMAD.js} +3 -3
- package/dist/{delete-workflow-NG2VXYYM.js → delete-workflow-5J46T73T.js} +4 -4
- package/dist/delete-workflow-JSWABL5F.js +17 -0
- package/dist/discover-evaluator-schema-UHWA5HVL.js +120 -0
- package/dist/discover-evaluator-schema-XKCLLCB3.js +118 -0
- package/dist/discover-scenario-schema-NOJY6S7E.js +137 -0
- package/dist/{discover-scenario-schema-W7KBXA4J.js → discover-scenario-schema-OOFIQKOG.js} +37 -17
- package/dist/{discover-schema-L6QDPON3.js → discover-schema-55YJBFGQ.js} +181 -186
- package/dist/discover-schema-A33SLMXW.js +442 -0
- package/dist/get-agent-LJQX7OF4.js +69 -0
- package/dist/{get-agent-7THF7HCU.js → get-agent-OTIYUFZA.js} +15 -11
- package/dist/get-analytics-DCS72353.js +80 -0
- package/dist/get-analytics-IQZKJHLW.js +79 -0
- package/dist/get-dashboard-5NYJEIX2.js +29 -0
- package/dist/{get-dashboard-P4WWVHFU.js → get-dashboard-QMTYDQAZ.js} +4 -4
- package/dist/get-dataset-ALSP7RTX.js +64 -0
- package/dist/get-dataset-X4B5JDG2.js +63 -0
- package/dist/{get-evaluator-RZ44UIN6.js → get-evaluator-ISMC4LLI.js} +4 -4
- package/dist/get-evaluator-XEUZGZCH.js +47 -0
- package/dist/{get-project-QSQEAB33.js → get-project-5VKROSDH.js} +4 -4
- package/dist/get-project-RM6FRCBK.js +26 -0
- package/dist/{get-prompt-GVKXF5NL.js → get-prompt-OWXJZHQQ.js} +53 -58
- package/dist/get-prompt-W52DY36E.js +94 -0
- package/dist/{get-run-plan-NY7J5GRE.js → get-run-plan-BE3M2AUX.js} +7 -9
- package/dist/get-run-plan-RUXQ6PAX.js +58 -0
- package/dist/get-scenario-RNM7BAX2.js +37 -0
- package/dist/{get-scenario-Q3LLQE4T.js → get-scenario-YM4ODWW6.js} +5 -5
- package/dist/get-simulation-run-6GIATQE5.js +69 -0
- package/dist/{get-simulation-run-WINEYDMK.js → get-simulation-run-LCFSMPGQ.js} +26 -22
- package/dist/{get-test-suite-4HKA7OKS.js → get-test-suite-GC2O7YH6.js} +5 -5
- package/dist/get-test-suite-P5LJ6VLF.js +48 -0
- package/dist/get-trace-KBRVV4NN.js +45 -0
- package/dist/{get-trace-RCUV7N4O.js → get-trace-SEF3FMR5.js} +11 -13
- package/dist/get-workflow-7PVED7JE.js +25 -0
- package/dist/{get-workflow-EEOC7Y45.js → get-workflow-YXULW4GC.js} +4 -4
- package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
- package/dist/{http-server-WCDUARTH.js → http-server-IR4QOS43.js} +4071 -347
- package/dist/index.js +58671 -37983
- package/dist/langwatch-api-annotations-6SA4OB4C.js +17 -0
- package/dist/{langwatch-api-annotations-6DHVZWUK.js → langwatch-api-annotations-TBHLCQ5R.js} +4 -4
- package/dist/langwatch-api-dashboards-6EO2VVZW.js +17 -0
- package/dist/{langwatch-api-dashboards-2KJL2M42.js → langwatch-api-dashboards-NHU5BZD7.js} +4 -4
- package/dist/langwatch-api-monitors-CBF3FGIM.js +47 -0
- package/dist/{langwatch-api-monitors-6ISFJ7WX.js → langwatch-api-monitors-YNWA2M5Y.js} +11 -16
- package/dist/langwatch-api-secrets-ADTOJELP.js +56 -0
- package/dist/langwatch-api-secrets-RNFO4LF2.js +55 -0
- package/dist/langwatch-api-triggers-KQDQC6L5.js +22 -0
- package/dist/langwatch-api-triggers-QS7HDIVW.js +23 -0
- package/dist/{langwatch-api-workflows-6UJL5U4Z.js → langwatch-api-workflows-OKC4FXIF.js} +4 -4
- package/dist/langwatch-api-workflows-XGJE6SR5.js +15 -0
- package/dist/{list-agents-AMVDQPQL.js → list-agents-HVYWEQMI.js} +4 -4
- package/dist/list-agents-RBAOCF53.js +42 -0
- package/dist/list-annotations-HJH4NBLD.js +38 -0
- package/dist/{list-annotations-6PR5NLIC.js → list-annotations-J4UAHSUN.js} +10 -5
- package/dist/{list-api-keys-GVPNBIHQ.js → list-api-keys-7UTJRZDG.js} +10 -5
- package/dist/list-api-keys-A2PMV435.js +42 -0
- package/dist/list-dashboard-boards-OPWROHMG.js +33 -0
- package/dist/list-dashboard-boards-U2GJ7GC5.js +34 -0
- package/dist/{list-dashboards-Z3BZKDGF.js → list-dashboards-ROSYFLDQ.js} +4 -4
- package/dist/list-dashboards-RQ635ZU7.js +32 -0
- package/dist/{list-dataset-records-O67HZ35Y.js → list-dataset-records-M5TKA6LK.js} +14 -10
- package/dist/list-dataset-records-WFM7F33C.js +43 -0
- package/dist/{list-datasets-WXZL6UMP.js → list-datasets-B5X4P7BQ.js} +9 -13
- package/dist/list-datasets-THUKQHPX.js +56 -0
- package/dist/{list-evaluators-PAX72WCN.js → list-evaluators-MYH2OVCI.js} +5 -7
- package/dist/list-evaluators-NLVWF6K7.js +32 -0
- package/dist/{list-model-providers-VVLZMLCX.js → list-model-providers-3JUGP4YI.js} +4 -4
- package/dist/list-model-providers-H3XKORFO.js +35 -0
- package/dist/{list-projects-AQVI6SUK.js → list-projects-6EJ5YYEW.js} +5 -7
- package/dist/list-projects-YNNSRMLC.js +40 -0
- package/dist/{list-prompt-tags-WZFBJOHG.js → list-prompt-tags-NVFQO6WX.js} +3 -3
- package/dist/list-prompt-tags-XUQTTAH4.js +23 -0
- package/dist/{list-prompts-BQOHRHYT.js → list-prompts-HSIMMHTF.js} +4 -6
- package/dist/list-prompts-IRI6AIXO.js +30 -0
- package/dist/{list-run-plans-UBAU2DGH.js → list-run-plans-PX2XI6EK.js} +5 -5
- package/dist/list-run-plans-QALLCN2K.js +45 -0
- package/dist/{list-scenarios-MS4IUIVM.js → list-scenarios-QZRPVHS4.js} +13 -11
- package/dist/list-scenarios-SSJQEMJP.js +45 -0
- package/dist/list-simulation-runs-KNOLGMDV.js +53 -0
- package/dist/{list-simulation-runs-D6YF4ZOU.js → list-simulation-runs-OEADLLQR.js} +12 -8
- package/dist/list-test-suites-ANAQBLDG.js +34 -0
- package/dist/{list-test-suites-L7R2O6DR.js → list-test-suites-N4WVLBKK.js} +4 -4
- package/dist/list-trigger-fires-JV3WFYYG.js +19 -0
- package/dist/list-trigger-fires-WTW4DVIW.js +20 -0
- package/dist/list-triggers-SQNIG35Q.js +45 -0
- package/dist/list-triggers-V4Y356AK.js +46 -0
- package/dist/{list-workflows-6MV4XJHF.js → list-workflows-IMSX7SXU.js} +5 -7
- package/dist/list-workflows-ZHTX5LCL.js +33 -0
- package/dist/{rename-prompt-tag-K5LQ4CY6.js → rename-prompt-tag-IQI7MHOI.js} +3 -3
- package/dist/rename-prompt-tag-PA2BRIE6.js +18 -0
- package/dist/{rename-test-suite-NTYHAO5X.js → rename-test-suite-4J7UX5S2.js} +4 -4
- package/dist/rename-test-suite-NNVLMLKY.js +20 -0
- package/dist/report-issue-AS34ZMJF.js +898 -0
- package/dist/{report-issue-RHZZ33IS.js → report-issue-DCZFLGDO.js} +81 -67
- package/dist/{rerun-run-plan-MUDWJBE4.js → rerun-run-plan-TG2V4WM4.js} +5 -5
- package/dist/rerun-run-plan-ZI5OY3VA.js +21 -0
- package/dist/revoke-api-key-3J3ZA4UB.js +15 -0
- package/dist/{revoke-api-key-6LAZ3QZZ.js → revoke-api-key-SFMEFWJC.js} +4 -4
- package/dist/run-agent-W4VJP72Z.js +75 -0
- package/dist/run-agent-YNV6ZHW4.js +74 -0
- package/dist/run-plan-6C77GWG4.js +38 -0
- package/dist/{run-plan-T4ZYOZGA.js → run-plan-PAARQSI4.js} +7 -7
- package/dist/run-query-KJDH544C.js +47 -0
- package/dist/run-query-T4QW2Z5O.js +46 -0
- package/dist/{run-test-suite-L4MZ7G4D.js → run-test-suite-SQJELEZX.js} +6 -6
- package/dist/run-test-suite-STB6NUJM.js +25 -0
- package/dist/{run-workflow-DFIS23AP.js → run-workflow-D6PQNBI6.js} +4 -4
- package/dist/run-workflow-SP32SO5M.js +36 -0
- package/dist/search-traces-HCBGOG6R.js +170 -0
- package/dist/search-traces-HSTQ6WTQ.js +171 -0
- package/dist/{set-model-provider-XRNMFOVR.js → set-model-provider-GF7NXUJA.js} +4 -4
- package/dist/set-model-provider-KDQ7C4EZ.js +33 -0
- package/dist/{update-agent-DUWNYBNA.js → update-agent-DWG43T2P.js} +4 -4
- package/dist/update-agent-MXNOBS4H.js +20 -0
- package/dist/update-dashboard-widget-CJKJLCDY.js +71 -0
- package/dist/update-dashboard-widget-CYQDS2NR.js +70 -0
- package/dist/update-dataset-DQH3OHOU.js +22 -0
- package/dist/{update-dataset-YSOMDCOB.js → update-dataset-SQZ6T4WX.js} +6 -6
- package/dist/{update-dataset-record-DEA2ITYR.js → update-dataset-record-3AT4IPBC.js} +4 -4
- package/dist/update-dataset-record-7PLDGTMR.js +19 -0
- package/dist/update-evaluator-4LFTKFPT.js +24 -0
- package/dist/{update-evaluator-NH7Q5GWV.js → update-evaluator-IGTX6PX4.js} +4 -4
- package/dist/{update-project-Q26FBSYH.js → update-project-PLJIOZS6.js} +4 -4
- package/dist/update-project-QVHSJRUP.js +24 -0
- package/dist/update-prompt-GDKRYJI3.js +140 -0
- package/dist/{update-prompt-ZQQ2C3KU.js → update-prompt-MY263DYF.js} +27 -29
- package/dist/update-scenario-7KA3JDXA.js +34 -0
- package/dist/{update-scenario-WUX34JAR.js → update-scenario-MOHRQKAQ.js} +5 -5
- package/package.json +35 -39
- package/pyproject.toml +8 -8
- package/src/config.d.ts +4 -0
- package/src/config.ts +20 -29
- package/src/create-mcp-server.ts +755 -609
- package/src/documentation-fetch.ts +21 -20
- package/src/http-security.ts +166 -135
- package/src/http-server.ts +189 -224
- package/src/index.ts +14 -16
- package/src/langwatch-api-agents.ts +18 -21
- package/src/langwatch-api-annotations.ts +11 -12
- package/src/langwatch-api-api-keys.ts +8 -9
- package/src/langwatch-api-boards.ts +46 -0
- package/src/langwatch-api-dashboard-widgets.ts +112 -0
- package/src/langwatch-api-dashboards.ts +13 -10
- package/src/langwatch-api-datasets.ts +98 -32
- package/src/langwatch-api-evaluators.ts +13 -19
- package/src/langwatch-api-model-providers.ts +4 -4
- package/src/langwatch-api-monitors.ts +14 -18
- package/src/langwatch-api-projects.ts +27 -9
- package/src/langwatch-api-query.ts +114 -0
- package/src/langwatch-api-run-plans.ts +12 -29
- package/src/langwatch-api-scenarios.ts +9 -11
- package/src/langwatch-api-secrets.ts +31 -24
- package/src/langwatch-api-simulation-runs.ts +6 -8
- package/src/langwatch-api-test-suites.ts +14 -33
- package/src/langwatch-api-triggers.ts +96 -34
- package/src/langwatch-api-workflows.ts +9 -9
- package/src/langwatch-api.ts +108 -124
- package/src/public-http-request.ts +21 -12
- package/src/schemas/analytics-metrics.ts +3 -15
- package/src/schemas/create-dataset.ts +3 -4
- package/src/schemas/run-plan.ts +13 -29
- package/src/schemas/suite-fields.ts +6 -23
- package/src/schemas/triggers.ts +365 -0
- package/src/tools/add-dashboard-widget.ts +63 -0
- package/src/tools/archive-project.ts +2 -4
- package/src/tools/archive-run-plan.ts +2 -4
- package/src/tools/archive-scenario.ts +2 -4
- package/src/tools/archive-test-suite.ts +2 -4
- package/src/tools/assign-prompt-tag.ts +6 -2
- package/src/tools/create-agent.ts +1 -1
- package/src/tools/create-annotation.ts +7 -2
- package/src/tools/create-api-key.ts +4 -6
- package/src/tools/create-dashboard.ts +1 -1
- package/src/tools/create-dataset-records.ts +4 -8
- package/src/tools/create-dataset.ts +5 -7
- package/src/tools/create-evaluator.ts +3 -5
- package/src/tools/create-project.ts +2 -2
- package/src/tools/create-prompt-tag.ts +2 -4
- package/src/tools/create-prompt.ts +9 -18
- package/src/tools/create-scenario.ts +5 -7
- package/src/tools/create-test-suite.ts +4 -9
- package/src/tools/create-trigger.ts +55 -0
- package/src/tools/dashboard-exists.ts +25 -0
- package/src/tools/dashboard-widget-queries.ts +32 -0
- package/src/tools/delete-agent.ts +1 -1
- package/src/tools/delete-annotation.ts +1 -1
- package/src/tools/delete-dashboard.ts +1 -1
- package/src/tools/delete-dataset-records.ts +4 -8
- package/src/tools/delete-dataset.ts +3 -7
- package/src/tools/delete-evaluator.ts +4 -6
- package/src/tools/delete-prompt-tag.ts +2 -4
- package/src/tools/delete-workflow.ts +1 -1
- package/src/tools/discover-evaluator-schema.ts +34 -25
- package/src/tools/discover-scenario-schema.ts +41 -21
- package/src/tools/discover-schema.ts +149 -27
- package/src/tools/experiment-run-status.ts +2 -8
- package/src/tools/format-dataset-mutation.ts +5 -10
- package/src/tools/format-run-plan.ts +7 -21
- package/src/tools/format-scenario.ts +2 -4
- package/src/tools/format-suite-details.ts +6 -12
- package/src/tools/get-agent.ts +15 -6
- package/src/tools/get-analytics.ts +52 -46
- package/src/tools/get-dashboard.ts +1 -1
- package/src/tools/get-dataset.ts +34 -16
- package/src/tools/get-evaluator.ts +4 -11
- package/src/tools/get-experiment-results.ts +219 -186
- package/src/tools/get-project.ts +2 -4
- package/src/tools/get-prompt.ts +63 -84
- package/src/tools/get-run-plan.ts +4 -6
- package/src/tools/get-scenario.ts +4 -6
- package/src/tools/get-simulation-run.ts +27 -24
- package/src/tools/get-test-suite.ts +2 -5
- package/src/tools/get-trace.ts +16 -17
- package/src/tools/get-workflow.ts +1 -1
- package/src/tools/list-agents.ts +1 -1
- package/src/tools/list-annotations.ts +8 -5
- package/src/tools/list-api-keys.ts +7 -2
- package/src/tools/list-dashboard-boards.ts +28 -0
- package/src/tools/list-dashboards.ts +1 -1
- package/src/tools/list-dataset-records.ts +8 -6
- package/src/tools/list-datasets.ts +12 -23
- package/src/tools/list-evaluators.ts +4 -8
- package/src/tools/list-experiment-runs.ts +5 -9
- package/src/tools/list-experiments.ts +5 -11
- package/src/tools/list-model-providers.ts +3 -5
- package/src/tools/list-projects.ts +2 -4
- package/src/tools/list-prompt-tags.ts +3 -3
- package/src/tools/list-prompts.ts +4 -8
- package/src/tools/list-run-plans.ts +2 -2
- package/src/tools/list-scenarios.ts +14 -15
- package/src/tools/list-simulation-runs.ts +8 -4
- package/src/tools/list-test-suites.ts +1 -1
- package/src/tools/list-trigger-fires.ts +17 -0
- package/src/tools/list-triggers.ts +39 -0
- package/src/tools/list-workflows.ts +2 -4
- package/src/tools/rename-prompt-tag.ts +1 -1
- package/src/tools/rename-test-suite.ts +2 -5
- package/src/tools/report-issue.ts +5 -9
- package/src/tools/rerun-run-plan.ts +2 -5
- package/src/tools/revoke-api-key.ts +2 -4
- package/src/tools/run-agent.ts +29 -26
- package/src/tools/run-experiment.ts +36 -37
- package/src/tools/run-plan.ts +4 -7
- package/src/tools/run-query.ts +47 -0
- package/src/tools/run-test-suite.ts +4 -7
- package/src/tools/run-workflow.ts +2 -5
- package/src/tools/search-traces.ts +161 -47
- package/src/tools/set-model-provider.ts +4 -6
- package/src/tools/test-agent.ts +2 -2
- package/src/tools/update-agent.ts +1 -1
- package/src/tools/update-dashboard-widget.ts +97 -0
- package/src/tools/update-dataset-record.ts +1 -1
- package/src/tools/update-dataset.ts +5 -7
- package/src/tools/update-evaluator.ts +3 -5
- package/src/tools/update-project.ts +1 -1
- package/src/tools/update-prompt.ts +44 -59
- package/src/tools/update-scenario.ts +5 -7
- package/src/tools/update-test-suite.ts +6 -11
- package/src/utils/date-parsing.ts +1 -1
- package/src/utils/escape-markdown.ts +3 -8
- package/src/utils/format-evaluations.ts +6 -6
- package/src/utils/markdown-table.ts +58 -0
- package/src/utils/trace-id-shape.ts +20 -0
- package/tsconfig.app.json +24 -0
- package/tsconfig.json +14 -12
- package/vitest.integration.config.js +10 -0
- package/vitest.scenario.config.js +9 -0
- package/.eslintrc.cjs +0 -36
- package/dist/chunk-AN4OUA4D.js +0 -86
- package/dist/chunk-GELJ2MQR.js +0 -226
- package/dist/chunk-K37ZNPXK.js +0 -24
- package/dist/config.d.ts +0 -17
- package/dist/create-mcp-server.d.ts +0 -10
- package/dist/delete-evaluator-RKYC4TNB.js +0 -16
- package/dist/discover-evaluator-schema-ESSHQGPY.js +0 -1912
- package/dist/get-analytics-R6AZD3AW.js +0 -73
- package/dist/get-dataset-AKTYSQDI.js +0 -49
- package/dist/index.d.ts +0 -2
- package/dist/langwatch-api-secrets-OEBD6GBU.js +0 -41
- package/dist/langwatch-api-triggers-5E6DDGX6.js +0 -31
- package/dist/run-agent-CAGWGTYT.js +0 -72
- package/dist/search-traces-4XTJYXIK.js +0 -79
- package/src/__tests__/agent-tools.unit.test.ts +0 -257
- package/src/__tests__/all-tools.integration.test.ts +0 -1872
- package/src/__tests__/config.unit.test.ts +0 -202
- package/src/__tests__/datasets.integration.test.ts +0 -620
- package/src/__tests__/datasets.unit.test.ts +0 -244
- package/src/__tests__/date-parsing.unit.test.ts +0 -78
- package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
- package/src/__tests__/discover-schema.unit.test.ts +0 -118
- package/src/__tests__/docker.integration.test.ts +0 -318
- package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
- package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
- package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
- package/src/__tests__/experiment-status.unit.test.ts +0 -194
- package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
- package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
- package/src/__tests__/http-security-origin.unit.test.ts +0 -97
- package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
- package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
- package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
- package/src/__tests__/http-server-origin.integration.test.ts +0 -169
- package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
- package/src/__tests__/http-transport.integration.test.ts +0 -395
- package/src/__tests__/integration.integration.test.ts +0 -284
- package/src/__tests__/langwatch-api.unit.test.ts +0 -661
- package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
- package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
- package/src/__tests__/prompt-response-types.unit.test.ts +0 -51
- package/src/__tests__/prompts.integration.test.ts +0 -736
- package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
- package/src/__tests__/report-issue.integration.test.ts +0 -147
- package/src/__tests__/run-plan-tools.unit.test.ts +0 -565
- package/src/__tests__/scenario-tools.integration.test.ts +0 -286
- package/src/__tests__/scenario-tools.unit.test.ts +0 -207
- package/src/__tests__/schemas.unit.test.ts +0 -85
- package/src/__tests__/simulation-run-tools.unit.test.ts +0 -116
- package/src/__tests__/support/http-server-harness.ts +0 -138
- package/src/__tests__/test-suite-tools.unit.test.ts +0 -615
- package/src/__tests__/tools.integration.test.ts +0 -896
- package/src/schemas/filter-fields.ts +0 -119
- package/src/schemas/index.ts +0 -9
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Escapes characters that would break markdown table formatting
|
|
3
|
-
*
|
|
4
|
-
* Replaces pipe characters (`|`) with `\|` and newlines with spaces
|
|
5
|
-
* so that values can be safely embedded in markdown tables and headers.
|
|
2
|
+
* Escapes characters that would break markdown table formatting:
|
|
3
|
+
* replaces `|` with `\|` and newlines with spaces.
|
|
6
4
|
*/
|
|
7
5
|
export function escapeMarkdown(value: string): string {
|
|
8
|
-
return value
|
|
9
|
-
.replace(/\\/g, "\\\\")
|
|
10
|
-
.replace(/\|/g, "\\|")
|
|
11
|
-
.replace(/\n/g, " ");
|
|
6
|
+
return value.replace(/\\/g, "\\\\").replace(/\|/g, "\\|").replace(/\n/g, " ");
|
|
12
7
|
}
|
|
@@ -9,12 +9,12 @@ export interface EvaluationSummary {
|
|
|
9
9
|
/** Formats a trace's evaluation results as markdown bullet lines, one per evaluation. */
|
|
10
10
|
export function formatEvaluationLines(evaluations: EvaluationSummary[]): string[] {
|
|
11
11
|
return evaluations.map((evaluation) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
let status = "N/A";
|
|
13
|
+
if (evaluation.passed === true) {
|
|
14
|
+
status = "PASSED";
|
|
15
|
+
} else if (evaluation.passed === false) {
|
|
16
|
+
status = "FAILED";
|
|
17
|
+
}
|
|
18
18
|
return `- **${evaluation.name || evaluation.evaluator_id}**: ${status}${evaluation.score != null ? ` (score: ${evaluation.score})` : ""}${evaluation.label ? ` [${evaluation.label}]` : ""}`;
|
|
19
19
|
});
|
|
20
20
|
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One markdown table renderer for caller-chosen columns. Cells are captured content, so they are
|
|
3
|
+
* escaped: one pipe in a cell would split the row for every reader.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { escapeMarkdown } from "./escape-markdown.ts";
|
|
7
|
+
|
|
8
|
+
/** Longest a single cell is rendered before it is cut. */
|
|
9
|
+
const MAX_CELL_LENGTH = 200;
|
|
10
|
+
|
|
11
|
+
/** One cell: escaped, flattened to a line, and bounded. */
|
|
12
|
+
export function markdownCell(value: unknown): string {
|
|
13
|
+
if (value === null || value === undefined) return "";
|
|
14
|
+
const text = cellText(value);
|
|
15
|
+
const escaped = escapeMarkdown(text);
|
|
16
|
+
return escaped.length > MAX_CELL_LENGTH ? `${escaped.slice(0, MAX_CELL_LENGTH - 1)}…` : escaped;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* A markdown table, or a line saying there is nothing to show. `rows` are read by header, so a row
|
|
21
|
+
* missing a key renders an empty cell rather than shifting every cell after it one column left.
|
|
22
|
+
*/
|
|
23
|
+
export function markdownTable({
|
|
24
|
+
headers,
|
|
25
|
+
rows,
|
|
26
|
+
emptyMessage = "No rows.",
|
|
27
|
+
}: {
|
|
28
|
+
headers: readonly string[];
|
|
29
|
+
rows: readonly Record<string, unknown>[];
|
|
30
|
+
emptyMessage?: string;
|
|
31
|
+
}): string {
|
|
32
|
+
if (headers.length === 0 || rows.length === 0) return emptyMessage;
|
|
33
|
+
const lines = [
|
|
34
|
+
`| ${headers.map(markdownCell).join(" | ")} |`,
|
|
35
|
+
`| ${headers.map(() => "---").join(" | ")} |`,
|
|
36
|
+
];
|
|
37
|
+
for (const row of rows) {
|
|
38
|
+
lines.push(`| ${headers.map((header) => markdownCell(row[header])).join(" | ")} |`);
|
|
39
|
+
}
|
|
40
|
+
return lines.join("\n");
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function cellText(value: {}): string {
|
|
44
|
+
switch (typeof value) {
|
|
45
|
+
case "string":
|
|
46
|
+
return value;
|
|
47
|
+
case "number":
|
|
48
|
+
case "boolean":
|
|
49
|
+
case "bigint":
|
|
50
|
+
return String(value);
|
|
51
|
+
case "symbol":
|
|
52
|
+
return value.toString();
|
|
53
|
+
case "function":
|
|
54
|
+
return value.name;
|
|
55
|
+
default:
|
|
56
|
+
return JSON.stringify(value);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a free-text query looks like a trace id. Advisory only: it adds a sentence to an
|
|
3
|
+
* empty result (ADR-164). Restates the platform's trace-id constants; no server code is shared.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/** Hex-only, matching the server's prefix resolver. */
|
|
7
|
+
const HEX_ONLY = /^[0-9a-f]+$/i;
|
|
8
|
+
|
|
9
|
+
/** Shortest hex string worth calling an id; no upper bound (CLI truncates to 20, OTel is 32). */
|
|
10
|
+
const MIN_TRACE_ID_LENGTH = 8;
|
|
11
|
+
|
|
12
|
+
/** The `trace_`-prefixed form the collector accepts (`trace_` + nanoid). */
|
|
13
|
+
const PREFIXED_TRACE_ID = /^trace_[A-Za-z0-9_-]{8,}$/;
|
|
14
|
+
|
|
15
|
+
export function looksLikeTraceId(query: string): boolean {
|
|
16
|
+
const candidate = query.trim();
|
|
17
|
+
if (candidate.includes(" ")) return false;
|
|
18
|
+
if (PREFIXED_TRACE_ID.test(candidate)) return true;
|
|
19
|
+
return HEX_ONLY.test(candidate) && candidate.length >= MIN_TRACE_ID_LENGTH;
|
|
20
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"composite": false,
|
|
5
|
+
"noEmit": true,
|
|
6
|
+
"tsBuildInfoFile": "dist/tsconfig.app.tsbuildinfo"
|
|
7
|
+
},
|
|
8
|
+
"include": ["**/*.ts"],
|
|
9
|
+
"exclude": ["node_modules", "./dist/**/*", "./example/**/*"],
|
|
10
|
+
"references": [
|
|
11
|
+
{
|
|
12
|
+
"path": "../../modules/evaluator/contract/tsconfig.build.json"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"path": "../../packages/redaction/tsconfig.build.json"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"path": "../../packages/handled-error/tsconfig.build.json"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "../../packages/egress/tsconfig.build.json"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
|
+
"extends": "../../tsconfig.shared.json",
|
|
2
3
|
"compilerOptions": {
|
|
3
|
-
|
|
4
|
+
// This package emits declarations only (tsup writes the JavaScript), so
|
|
5
|
+
// `noEmit` from the shared base is turned back off for them.
|
|
6
|
+
"noEmit": false,
|
|
7
|
+
"emitDeclarationOnly": true,
|
|
4
8
|
"module": "ESNext",
|
|
5
9
|
"declaration": true,
|
|
6
10
|
"declarationMap": true,
|
|
7
11
|
"outDir": "./dist",
|
|
8
|
-
"strict": true,
|
|
9
12
|
"esModuleInterop": true,
|
|
10
13
|
"resolveJsonModule": true,
|
|
11
14
|
"allowJs": true,
|
|
12
15
|
"checkJs": true,
|
|
13
|
-
"skipLibCheck": true,
|
|
14
|
-
"forceConsistentCasingInFileNames": true,
|
|
15
|
-
"moduleResolution": "bundler",
|
|
16
16
|
"rootDir": "../..",
|
|
17
17
|
// The evaluator catalog we import (services/langevals/ts-integration/evaluators.generated.ts)
|
|
18
18
|
// is Zod-first and imports `zod`, but lives outside this package's
|
|
@@ -27,13 +27,15 @@
|
|
|
27
27
|
"ignoreDeprecations": "6.0",
|
|
28
28
|
"isolatedModules": true,
|
|
29
29
|
"jsx": "preserve",
|
|
30
|
-
"incremental": true,
|
|
31
30
|
"noUncheckedIndexedAccess": true,
|
|
32
|
-
"tsBuildInfoFile": "
|
|
31
|
+
"tsBuildInfoFile": "dist/tsconfig.typecheck.tsbuildinfo",
|
|
32
|
+
"composite": true
|
|
33
33
|
},
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
"files": [],
|
|
35
|
+
"include": [],
|
|
36
|
+
"references": [
|
|
37
|
+
{
|
|
38
|
+
"path": "./tsconfig.app.json"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
39
41
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineConfig } from "vitest/config";
|
|
2
|
+
|
|
3
|
+
// In-process HTTP servers, plus a Docker image built in `beforeAll`.
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
test: {
|
|
6
|
+
include: ["src/**/*.integration.test.ts"],
|
|
7
|
+
testTimeout: 60_000,
|
|
8
|
+
hookTimeout: 10 * 60_000,
|
|
9
|
+
},
|
|
10
|
+
});
|
package/.eslintrc.cjs
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
const config = {
|
|
2
|
-
parser: "@typescript-eslint/parser",
|
|
3
|
-
parserOptions: {
|
|
4
|
-
project: true,
|
|
5
|
-
},
|
|
6
|
-
plugins: ["@typescript-eslint"],
|
|
7
|
-
extends: [
|
|
8
|
-
"plugin:@typescript-eslint/recommended-type-checked",
|
|
9
|
-
"plugin:@typescript-eslint/stylistic-type-checked",
|
|
10
|
-
],
|
|
11
|
-
rules: {
|
|
12
|
-
// These opinionated rules are enabled in stylistic-type-checked above.
|
|
13
|
-
// Feel free to reconfigure them to your own preference.
|
|
14
|
-
"@typescript-eslint/array-type": "off",
|
|
15
|
-
"@typescript-eslint/consistent-type-definitions": "off",
|
|
16
|
-
"@typescript-eslint/no-explicit-any": "off",
|
|
17
|
-
"@typescript-eslint/no-unsafe-assignment": "off",
|
|
18
|
-
"@typescript-eslint/ban-ts-comment": "off",
|
|
19
|
-
"@typescript-eslint/require-await": "off",
|
|
20
|
-
"@typescript-eslint/no-unsafe-member-access": "off",
|
|
21
|
-
"@typescript-eslint/no-unsafe-call": "off",
|
|
22
|
-
"@typescript-eslint/no-unsafe-argument": "off",
|
|
23
|
-
"@typescript-eslint/no-unsafe-return": "off",
|
|
24
|
-
|
|
25
|
-
"@typescript-eslint/consistent-type-imports": [
|
|
26
|
-
"warn",
|
|
27
|
-
{
|
|
28
|
-
prefer: "type-imports",
|
|
29
|
-
fixStyle: "inline-type-imports",
|
|
30
|
-
},
|
|
31
|
-
],
|
|
32
|
-
"@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
module.exports = config;
|
package/dist/chunk-AN4OUA4D.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
makeRequest
|
|
3
|
-
} from "./chunk-GELJ2MQR.js";
|
|
4
|
-
|
|
5
|
-
// src/langwatch-api-datasets.ts
|
|
6
|
-
async function listDatasets(params) {
|
|
7
|
-
const query = new URLSearchParams();
|
|
8
|
-
if (params?.page != null) query.set("page", String(params.page));
|
|
9
|
-
if (params?.limit != null) query.set("limit", String(params.limit));
|
|
10
|
-
const qs = query.toString();
|
|
11
|
-
const path = qs ? `/api/dataset?${qs}` : "/api/dataset";
|
|
12
|
-
return makeRequest("GET", path);
|
|
13
|
-
}
|
|
14
|
-
async function getDataset(slugOrId) {
|
|
15
|
-
return makeRequest(
|
|
16
|
-
"GET",
|
|
17
|
-
`/api/dataset/${encodeURIComponent(slugOrId)}`
|
|
18
|
-
);
|
|
19
|
-
}
|
|
20
|
-
async function createDataset(data) {
|
|
21
|
-
return makeRequest(
|
|
22
|
-
"POST",
|
|
23
|
-
"/api/dataset",
|
|
24
|
-
data
|
|
25
|
-
);
|
|
26
|
-
}
|
|
27
|
-
async function updateDataset(params) {
|
|
28
|
-
const { slugOrId, ...data } = params;
|
|
29
|
-
return makeRequest(
|
|
30
|
-
"PATCH",
|
|
31
|
-
`/api/dataset/${encodeURIComponent(slugOrId)}`,
|
|
32
|
-
data
|
|
33
|
-
);
|
|
34
|
-
}
|
|
35
|
-
async function deleteDataset(slugOrId) {
|
|
36
|
-
return makeRequest(
|
|
37
|
-
"DELETE",
|
|
38
|
-
`/api/dataset/${encodeURIComponent(slugOrId)}`
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
async function createDatasetRecords(params) {
|
|
42
|
-
const { slugOrId, entries } = params;
|
|
43
|
-
return makeRequest(
|
|
44
|
-
"POST",
|
|
45
|
-
`/api/dataset/${encodeURIComponent(slugOrId)}/records`,
|
|
46
|
-
{ entries }
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
async function updateDatasetRecord(params) {
|
|
50
|
-
const { slugOrId, recordId, entry } = params;
|
|
51
|
-
return makeRequest(
|
|
52
|
-
"PATCH",
|
|
53
|
-
`/api/dataset/${encodeURIComponent(slugOrId)}/records/${encodeURIComponent(recordId)}`,
|
|
54
|
-
{ entry }
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
async function deleteDatasetRecords(params) {
|
|
58
|
-
const { slugOrId, recordIds } = params;
|
|
59
|
-
return makeRequest(
|
|
60
|
-
"DELETE",
|
|
61
|
-
`/api/dataset/${encodeURIComponent(slugOrId)}/records`,
|
|
62
|
-
{ recordIds }
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
async function listDatasetRecords(params) {
|
|
66
|
-
const { slugOrId } = params;
|
|
67
|
-
const query = new URLSearchParams();
|
|
68
|
-
if (params.page != null) query.set("page", String(params.page));
|
|
69
|
-
if (params.limit != null) query.set("limit", String(params.limit));
|
|
70
|
-
const qs = query.toString();
|
|
71
|
-
const path = `/api/dataset/${encodeURIComponent(slugOrId)}/records${qs ? `?${qs}` : ""}`;
|
|
72
|
-
return makeRequest("GET", path);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export {
|
|
76
|
-
listDatasets,
|
|
77
|
-
getDataset,
|
|
78
|
-
createDataset,
|
|
79
|
-
updateDataset,
|
|
80
|
-
deleteDataset,
|
|
81
|
-
createDatasetRecords,
|
|
82
|
-
updateDatasetRecord,
|
|
83
|
-
deleteDatasetRecords,
|
|
84
|
-
listDatasetRecords
|
|
85
|
-
};
|
|
86
|
-
//# sourceMappingURL=chunk-AN4OUA4D.js.map
|
package/dist/chunk-GELJ2MQR.js
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getConfig,
|
|
3
|
-
requireApiKey
|
|
4
|
-
} from "./chunk-WT4PO4A3.js";
|
|
5
|
-
|
|
6
|
-
// src/langwatch-api.ts
|
|
7
|
-
var LangWatchApiError = class extends Error {
|
|
8
|
-
constructor(message, status, responseBody, options = {}) {
|
|
9
|
-
super(message);
|
|
10
|
-
this.status = status;
|
|
11
|
-
this.responseBody = responseBody;
|
|
12
|
-
this.name = "LangWatchApiError";
|
|
13
|
-
this.code = options.code;
|
|
14
|
-
this.tips = options.tips;
|
|
15
|
-
this.docsUrl = options.docsUrl;
|
|
16
|
-
this.fault = options.fault;
|
|
17
|
-
this.reasons = options.reasons;
|
|
18
|
-
}
|
|
19
|
-
status;
|
|
20
|
-
responseBody;
|
|
21
|
-
code;
|
|
22
|
-
tips;
|
|
23
|
-
docsUrl;
|
|
24
|
-
fault;
|
|
25
|
-
/**
|
|
26
|
-
* The per-field failures behind this error, verbatim from the envelope.
|
|
27
|
-
* A validation failure carries the offending field and the values it would
|
|
28
|
-
* have accepted here — the difference between an agent correcting its own
|
|
29
|
-
* request and an agent guessing again.
|
|
30
|
-
*/
|
|
31
|
-
reasons;
|
|
32
|
-
};
|
|
33
|
-
var VALID_FAULTS = ["customer", "platform", "provider"];
|
|
34
|
-
function parseErrorBody(responseBody) {
|
|
35
|
-
try {
|
|
36
|
-
const parsed = JSON.parse(responseBody);
|
|
37
|
-
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
38
|
-
return {};
|
|
39
|
-
}
|
|
40
|
-
const envelope = parsed;
|
|
41
|
-
const nested = typeof envelope.error === "object" && envelope.error !== null && !Array.isArray(envelope.error) ? envelope.error : null;
|
|
42
|
-
const body = nested ?? envelope;
|
|
43
|
-
const code = typeof body.code === "string" ? body.code : typeof body.error === "string" ? body.error : void 0;
|
|
44
|
-
const message = typeof body.message === "string" ? body.message : void 0;
|
|
45
|
-
if (code === void 0 && message === void 0) {
|
|
46
|
-
return {};
|
|
47
|
-
}
|
|
48
|
-
const tips = Array.isArray(body.tips) && body.tips.every((t) => typeof t === "string") ? body.tips : void 0;
|
|
49
|
-
const docsUrl = typeof body.docsUrl === "string" ? body.docsUrl : void 0;
|
|
50
|
-
const fault = VALID_FAULTS.includes(body.fault) ? body.fault : void 0;
|
|
51
|
-
const reasons = Array.isArray(body.reasons) && body.reasons.every((r) => !!r && typeof r === "object") ? body.reasons : void 0;
|
|
52
|
-
return { code, message, tips, docsUrl, fault, reasons };
|
|
53
|
-
} catch {
|
|
54
|
-
return {};
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
function describeReason(reason) {
|
|
58
|
-
const meta = reason.meta;
|
|
59
|
-
if (!meta || typeof meta !== "object") return null;
|
|
60
|
-
const field = typeof meta.field === "string" ? meta.field : null;
|
|
61
|
-
if (!field) return null;
|
|
62
|
-
const parts = [`- ${field}`];
|
|
63
|
-
if (meta.received !== void 0) {
|
|
64
|
-
parts.push(`received ${JSON.stringify(meta.received)}`);
|
|
65
|
-
}
|
|
66
|
-
if (Array.isArray(meta.expected) && meta.expected.length > 0) {
|
|
67
|
-
parts.push(`expected one of: ${meta.expected.join(", ")}`);
|
|
68
|
-
}
|
|
69
|
-
return parts.join(" \u2014 ");
|
|
70
|
-
}
|
|
71
|
-
async function makeRequest(method, path, body) {
|
|
72
|
-
const config = getConfig();
|
|
73
|
-
const url = config.endpoint + path;
|
|
74
|
-
const headers = {
|
|
75
|
-
"X-Auth-Token": requireApiKey()
|
|
76
|
-
};
|
|
77
|
-
if (config.projectId) {
|
|
78
|
-
headers["X-Project-Id"] = config.projectId;
|
|
79
|
-
}
|
|
80
|
-
if (body !== void 0) {
|
|
81
|
-
headers["Content-Type"] = "application/json";
|
|
82
|
-
}
|
|
83
|
-
const response = await fetch(url, {
|
|
84
|
-
method,
|
|
85
|
-
headers,
|
|
86
|
-
...body !== void 0 ? { body: JSON.stringify(body) } : {}
|
|
87
|
-
});
|
|
88
|
-
if (!response.ok) {
|
|
89
|
-
const responseBody = await response.text();
|
|
90
|
-
const parsed = parseErrorBody(responseBody);
|
|
91
|
-
const lines = [
|
|
92
|
-
`LangWatch API error ${response.status}: ${parsed.message ?? responseBody}`
|
|
93
|
-
];
|
|
94
|
-
const reasonLines = (parsed.reasons ?? []).map(describeReason).filter((line) => line !== null);
|
|
95
|
-
if (reasonLines.length > 0) {
|
|
96
|
-
lines.push("Rejected fields:", ...reasonLines);
|
|
97
|
-
}
|
|
98
|
-
if (parsed.tips && parsed.tips.length > 0) {
|
|
99
|
-
lines.push("Tips:", ...parsed.tips.map((tip) => `- ${tip}`));
|
|
100
|
-
}
|
|
101
|
-
if (parsed.docsUrl) {
|
|
102
|
-
lines.push(`Docs: ${parsed.docsUrl}`);
|
|
103
|
-
}
|
|
104
|
-
throw new LangWatchApiError(
|
|
105
|
-
lines.join("\n"),
|
|
106
|
-
response.status,
|
|
107
|
-
responseBody,
|
|
108
|
-
{
|
|
109
|
-
code: parsed.code,
|
|
110
|
-
tips: parsed.tips,
|
|
111
|
-
docsUrl: parsed.docsUrl,
|
|
112
|
-
fault: parsed.fault,
|
|
113
|
-
reasons: parsed.reasons
|
|
114
|
-
}
|
|
115
|
-
);
|
|
116
|
-
}
|
|
117
|
-
if (response.status === 204 || response.headers?.get("content-length") === "0") {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
return response.json();
|
|
121
|
-
}
|
|
122
|
-
async function searchTraces(params) {
|
|
123
|
-
const { format = "digest", ...rest } = params;
|
|
124
|
-
return makeRequest("POST", "/api/traces/search", {
|
|
125
|
-
...rest,
|
|
126
|
-
format
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
async function getTraceById(traceId, format = "digest") {
|
|
130
|
-
return makeRequest(
|
|
131
|
-
"GET",
|
|
132
|
-
`/api/traces/${encodeURIComponent(traceId)}?format=${format}`
|
|
133
|
-
);
|
|
134
|
-
}
|
|
135
|
-
async function getAnalyticsTimeseries(params) {
|
|
136
|
-
return makeRequest(
|
|
137
|
-
"POST",
|
|
138
|
-
"/api/analytics/timeseries",
|
|
139
|
-
params
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
async function listPrompts() {
|
|
143
|
-
return makeRequest("GET", "/api/prompts");
|
|
144
|
-
}
|
|
145
|
-
async function getPrompt(idOrHandle, options) {
|
|
146
|
-
const params = new URLSearchParams();
|
|
147
|
-
if (options?.version != null) params.set("version", String(options.version));
|
|
148
|
-
if (options?.tag) params.set("tag", options.tag);
|
|
149
|
-
const query = params.toString() ? `?${params}` : "";
|
|
150
|
-
return makeRequest(
|
|
151
|
-
"GET",
|
|
152
|
-
`/api/prompts/${encodeURIComponent(idOrHandle)}${query}`
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
async function getPromptVersions(idOrHandle) {
|
|
156
|
-
return makeRequest(
|
|
157
|
-
"GET",
|
|
158
|
-
`/api/prompts/${encodeURIComponent(idOrHandle)}/versions`
|
|
159
|
-
);
|
|
160
|
-
}
|
|
161
|
-
async function createPrompt(data) {
|
|
162
|
-
return makeRequest(
|
|
163
|
-
"POST",
|
|
164
|
-
"/api/prompts",
|
|
165
|
-
data
|
|
166
|
-
);
|
|
167
|
-
}
|
|
168
|
-
async function updatePrompt(idOrHandle, data) {
|
|
169
|
-
return makeRequest(
|
|
170
|
-
"PUT",
|
|
171
|
-
`/api/prompts/${encodeURIComponent(idOrHandle)}`,
|
|
172
|
-
data
|
|
173
|
-
);
|
|
174
|
-
}
|
|
175
|
-
async function assignPromptTag({
|
|
176
|
-
idOrHandle,
|
|
177
|
-
tag,
|
|
178
|
-
versionId
|
|
179
|
-
}) {
|
|
180
|
-
return makeRequest(
|
|
181
|
-
"PUT",
|
|
182
|
-
`/api/prompts/${encodeURIComponent(idOrHandle)}/tags/${encodeURIComponent(tag)}`,
|
|
183
|
-
{ versionId }
|
|
184
|
-
);
|
|
185
|
-
}
|
|
186
|
-
async function listPromptTags() {
|
|
187
|
-
return makeRequest("GET", "/api/prompts/tags");
|
|
188
|
-
}
|
|
189
|
-
async function createPromptTag(name) {
|
|
190
|
-
return makeRequest("POST", "/api/prompts/tags", { name });
|
|
191
|
-
}
|
|
192
|
-
async function renamePromptTag({
|
|
193
|
-
tag,
|
|
194
|
-
name
|
|
195
|
-
}) {
|
|
196
|
-
return makeRequest(
|
|
197
|
-
"PUT",
|
|
198
|
-
`/api/prompts/tags/${encodeURIComponent(tag)}`,
|
|
199
|
-
{ name }
|
|
200
|
-
);
|
|
201
|
-
}
|
|
202
|
-
async function deletePromptTag(tag) {
|
|
203
|
-
return makeRequest(
|
|
204
|
-
"DELETE",
|
|
205
|
-
`/api/prompts/tags/${encodeURIComponent(tag)}`
|
|
206
|
-
);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
export {
|
|
210
|
-
LangWatchApiError,
|
|
211
|
-
makeRequest,
|
|
212
|
-
searchTraces,
|
|
213
|
-
getTraceById,
|
|
214
|
-
getAnalyticsTimeseries,
|
|
215
|
-
listPrompts,
|
|
216
|
-
getPrompt,
|
|
217
|
-
getPromptVersions,
|
|
218
|
-
createPrompt,
|
|
219
|
-
updatePrompt,
|
|
220
|
-
assignPromptTag,
|
|
221
|
-
listPromptTags,
|
|
222
|
-
createPromptTag,
|
|
223
|
-
renamePromptTag,
|
|
224
|
-
deletePromptTag
|
|
225
|
-
};
|
|
226
|
-
//# sourceMappingURL=chunk-GELJ2MQR.js.map
|
package/dist/chunk-K37ZNPXK.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
makeRequest
|
|
3
|
-
} from "./chunk-GELJ2MQR.js";
|
|
4
|
-
|
|
5
|
-
// src/langwatch-api-api-keys.ts
|
|
6
|
-
async function listApiKeys() {
|
|
7
|
-
return makeRequest("GET", "/api/api-keys");
|
|
8
|
-
}
|
|
9
|
-
async function createApiKey(data) {
|
|
10
|
-
return makeRequest("POST", "/api/api-keys", data);
|
|
11
|
-
}
|
|
12
|
-
async function revokeApiKey(id) {
|
|
13
|
-
return makeRequest(
|
|
14
|
-
"DELETE",
|
|
15
|
-
`/api/api-keys/${encodeURIComponent(id)}`
|
|
16
|
-
);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export {
|
|
20
|
-
listApiKeys,
|
|
21
|
-
createApiKey,
|
|
22
|
-
revokeApiKey
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=chunk-K37ZNPXK.js.map
|
package/dist/config.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
interface McpConfig {
|
|
2
|
-
apiKey: string | undefined;
|
|
3
|
-
endpoint: string;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
declare function initConfig(args: {
|
|
7
|
-
apiKey?: string;
|
|
8
|
-
endpoint?: string;
|
|
9
|
-
}): void;
|
|
10
|
-
|
|
11
|
-
declare function getConfig(): McpConfig;
|
|
12
|
-
|
|
13
|
-
declare function requireApiKey(): string;
|
|
14
|
-
|
|
15
|
-
declare function runWithConfig<T>(config: McpConfig, fn: () => T): T;
|
|
16
|
-
|
|
17
|
-
export { type McpConfig, getConfig, initConfig, requireApiKey, runWithConfig };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// Minimal type declaration — avoids pulling mcp-server's full dependency tree
|
|
2
|
-
// into the langwatch app's typecheck scope. The actual return type is McpServer,
|
|
3
|
-
// but we only expose the connect() and tool() methods that handler.ts +
|
|
4
|
-
// in-app tool registrations (e.g. registerGovernanceMcpTools) use.
|
|
5
|
-
declare function createMcpServer(): {
|
|
6
|
-
connect(transport: unknown): Promise<void>;
|
|
7
|
-
tool(...args: unknown[]): unknown;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export { createMcpServer };
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
deleteEvaluator
|
|
3
|
-
} from "./chunk-OJLYYJWI.js";
|
|
4
|
-
import "./chunk-GELJ2MQR.js";
|
|
5
|
-
import "./chunk-WT4PO4A3.js";
|
|
6
|
-
import "./chunk-SAS5OB7F.js";
|
|
7
|
-
|
|
8
|
-
// src/tools/delete-evaluator.ts
|
|
9
|
-
async function handleDeleteEvaluator(params) {
|
|
10
|
-
const result = await deleteEvaluator(params.idOrSlug);
|
|
11
|
-
return `Evaluator ${result.id} has been archived (soft-deleted).`;
|
|
12
|
-
}
|
|
13
|
-
export {
|
|
14
|
-
handleDeleteEvaluator
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=delete-evaluator-RKYC4TNB.js.map
|