@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,8 +1,64 @@
|
|
|
1
|
+
import {
|
|
2
|
+
LANGWATCH_API_VERSION
|
|
3
|
+
} from "./chunk-7CZQDZ2K.js";
|
|
1
4
|
import {
|
|
2
5
|
getConfig
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DULFP3MK.js";
|
|
4
7
|
import "./chunk-SAS5OB7F.js";
|
|
5
8
|
|
|
9
|
+
// ../../packages/redaction/src/piiEntities.ts
|
|
10
|
+
var ESSENTIAL_PII_ENTITIES = [
|
|
11
|
+
"EMAIL_ADDRESS",
|
|
12
|
+
"IP_ADDRESS",
|
|
13
|
+
"CREDIT_CARD",
|
|
14
|
+
"IBAN_CODE",
|
|
15
|
+
"CRYPTO",
|
|
16
|
+
"PHONE_NUMBER",
|
|
17
|
+
"US_SSN",
|
|
18
|
+
"US_ITIN",
|
|
19
|
+
"US_PASSPORT",
|
|
20
|
+
"US_BANK_NUMBER",
|
|
21
|
+
"US_DRIVER_LICENSE",
|
|
22
|
+
"MEDICAL_LICENSE",
|
|
23
|
+
"UK_NHS",
|
|
24
|
+
"SG_NRIC_FIN",
|
|
25
|
+
"AU_ABN",
|
|
26
|
+
"AU_TFN",
|
|
27
|
+
"IN_PAN",
|
|
28
|
+
"IN_AADHAAR",
|
|
29
|
+
"BR_CPF"
|
|
30
|
+
];
|
|
31
|
+
var PRESIDIO_STRICT_ENTITIES = [
|
|
32
|
+
"CREDIT_CARD",
|
|
33
|
+
"CRYPTO",
|
|
34
|
+
"EMAIL_ADDRESS",
|
|
35
|
+
"IBAN_CODE",
|
|
36
|
+
"IP_ADDRESS",
|
|
37
|
+
"LOCATION",
|
|
38
|
+
"PERSON",
|
|
39
|
+
"PHONE_NUMBER",
|
|
40
|
+
"MEDICAL_LICENSE",
|
|
41
|
+
"US_BANK_NUMBER",
|
|
42
|
+
"US_DRIVER_LICENSE",
|
|
43
|
+
"US_ITIN",
|
|
44
|
+
"US_PASSPORT",
|
|
45
|
+
"US_SSN",
|
|
46
|
+
"UK_NHS",
|
|
47
|
+
"SG_NRIC_FIN",
|
|
48
|
+
"AU_ABN",
|
|
49
|
+
"AU_ACN",
|
|
50
|
+
"AU_TFN",
|
|
51
|
+
"AU_MEDICARE",
|
|
52
|
+
"IN_PAN",
|
|
53
|
+
"IN_AADHAAR",
|
|
54
|
+
"IN_VEHICLE_REGISTRATION",
|
|
55
|
+
"IN_VOTER",
|
|
56
|
+
"IN_PASSPORT"
|
|
57
|
+
];
|
|
58
|
+
var STRICT_ONLY_PII_ENTITIES = PRESIDIO_STRICT_ENTITIES.filter(
|
|
59
|
+
(entity) => !new Set(ESSENTIAL_PII_ENTITIES).has(entity)
|
|
60
|
+
);
|
|
61
|
+
|
|
6
62
|
// ../../packages/redaction/src/markers.ts
|
|
7
63
|
var SECRET_MARKER = "[SECRET]";
|
|
8
64
|
function formatPiiMarker(entity) {
|
|
@@ -42,18 +98,10 @@ function countCharClasses(value) {
|
|
|
42
98
|
var TOKEN_START = String.raw`(?<![A-Za-z0-9_-])`;
|
|
43
99
|
var TOKEN_END = String.raw`(?![A-Za-z0-9_-])`;
|
|
44
100
|
var VENDOR_KEY_PATTERNS = [
|
|
45
|
-
// LangWatch's own
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
// truncated or short-bodied one still redacts: `sk-lw-` would otherwise reach
|
|
50
|
-
// only the generic `sk-` rule and its 20-character floor, and `ik-lw-`
|
|
51
|
-
// nothing at all. The three-character floor is what keeps the bare prefix,
|
|
52
|
-
// which documentation and error messages print on its own, from reading as a
|
|
53
|
-
// key.
|
|
54
|
-
// The prefixes are duplicated rather than imported because this package is
|
|
55
|
-
// shared with the SDK and stays dependency-free; a test pins them to the
|
|
56
|
-
// constants so the two cannot drift.
|
|
101
|
+
// LangWatch's own token prefixes, minted by modules/api-key/contract/src/api-key.tokens.ts.
|
|
102
|
+
// The 3-body-char floor keeps a bare prefix (printed alone in docs/errors) from matching as a
|
|
103
|
+
// key. Duplicated here rather than imported so this package stays dependency-free; a test pins
|
|
104
|
+
// them to the constants so the two cannot drift.
|
|
57
105
|
String.raw`(?:sk|ik|pat|vk)-lw-[A-Za-z0-9_-]{3,}`,
|
|
58
106
|
// GitLab personal, project, deploy, runner and agent tokens.
|
|
59
107
|
String.raw`gl(?:pat|rt|dt|soat|ptt|cbt|imt|agent|ffct)-[A-Za-z0-9_-]{20,}`,
|
|
@@ -110,8 +158,30 @@ function isKeyShapedBody(body) {
|
|
|
110
158
|
}
|
|
111
159
|
const { lower, upper, digit } = countCharClasses(body);
|
|
112
160
|
if (lower < 2 || upper < 2 || digit < 2) return false;
|
|
161
|
+
if (isWordSlug(body)) return false;
|
|
113
162
|
return shannonEntropyBits(body) >= SHAPED_TOKEN_MIN_ENTROPY;
|
|
114
163
|
}
|
|
164
|
+
var SLUG_MIN_SEGMENTS = 4;
|
|
165
|
+
var SLUG_LETTERS_SEGMENT = /^[A-Za-z]{1,12}$/;
|
|
166
|
+
var SLUG_TAG_SEGMENT = /^[A-Za-z0-9]{1,6}$/;
|
|
167
|
+
var SLUG_WORD_SEGMENT = /^(?:[a-z]{4,}|[A-Z]{4,}|[A-Z][a-z]{3,})$/;
|
|
168
|
+
var SLUG_RANDOM_SEGMENT = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])/;
|
|
169
|
+
var SLUG_MAX_RANDOM_SEGMENTS = 1;
|
|
170
|
+
var SLUG_MIN_WORDS = 2;
|
|
171
|
+
function isWordSlug(body) {
|
|
172
|
+
const segments = body.split(/[-_]/);
|
|
173
|
+
if (segments.length < SLUG_MIN_SEGMENTS) return false;
|
|
174
|
+
let words = 0;
|
|
175
|
+
let randomLooking = 0;
|
|
176
|
+
for (const segment of segments) {
|
|
177
|
+
if (!SLUG_LETTERS_SEGMENT.test(segment) && !SLUG_TAG_SEGMENT.test(segment)) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
if (SLUG_WORD_SEGMENT.test(segment)) words += 1;
|
|
181
|
+
if (SLUG_RANDOM_SEGMENT.test(segment)) randomLooking += 1;
|
|
182
|
+
}
|
|
183
|
+
return words >= SLUG_MIN_WORDS && randomLooking <= SLUG_MAX_RANDOM_SEGMENTS;
|
|
184
|
+
}
|
|
115
185
|
var DIGEST_PREFIXES = /* @__PURE__ */ new Set([
|
|
116
186
|
"sha1",
|
|
117
187
|
"sha224",
|
|
@@ -339,24 +409,15 @@ var VALUE_RULES = [
|
|
|
339
409
|
{
|
|
340
410
|
id: "url_credentials",
|
|
341
411
|
description: "Password embedded in a connection URL",
|
|
342
|
-
// scheme://user:password@host -> keep everything but the password. The
|
|
343
|
-
//
|
|
344
|
-
//
|
|
345
|
-
//
|
|
346
|
-
//
|
|
347
|
-
// The scheme sits in a lookbehind so that the first character the engine
|
|
348
|
-
// must find is the literal `:`. With the scheme inside the match the
|
|
349
|
-
// pattern starts with a character class, every lowercase letter in the
|
|
350
|
-
// text is a candidate start, and each one costs up to 30 characters of
|
|
351
|
-
// scheme scan before it fails: 6.2 ms on a 200 KB payload, more than every
|
|
352
|
-
// other rule together. Anchored on `:` the same payload costs 0.09 ms.
|
|
353
|
-
// The scheme stays outside the match and therefore untouched, which is
|
|
354
|
-
// what the rule already did with it.
|
|
412
|
+
// scheme://user:password@host -> keep everything but the password. The scheme sits in a
|
|
413
|
+
// lookbehind so the engine anchors on the literal `:` instead of scanning from every
|
|
414
|
+
// lowercase letter: unanchored this cost 6.2ms on a 200KB payload (more than every other
|
|
415
|
+
// rule combined); anchored, 0.09ms. The scheme stays outside the match and untouched.
|
|
355
416
|
regex: /(?<=[a-z][a-z0-9+.-]{0,30})(:\/\/[^\s:@/]+:)([^\s:@/]+)(@)/gi,
|
|
356
417
|
// The same scheme the lookbehind reads, so a reported match still spans the
|
|
357
418
|
// whole URL rather than starting at the colon.
|
|
358
419
|
precededBy: /[a-z][a-z0-9+.-]{0,30}$/i,
|
|
359
|
-
render: (
|
|
420
|
+
render: (...[, prefix = "", , at = ""]) => `${prefix}${REPLACEMENT}${at}`
|
|
360
421
|
},
|
|
361
422
|
{
|
|
362
423
|
id: "bearer_token",
|
|
@@ -397,23 +458,13 @@ var VALUE_RULES = [
|
|
|
397
458
|
precondition: (text) => text.includes("_")
|
|
398
459
|
},
|
|
399
460
|
{
|
|
400
|
-
// The layer that catches a vendor nobody has heard of
|
|
401
|
-
//
|
|
402
|
-
//
|
|
403
|
-
//
|
|
404
|
-
//
|
|
405
|
-
//
|
|
406
|
-
//
|
|
407
|
-
// NAME, which must survive as a bare name, and does: `AWS_SECRET_ACCESS_KEY`
|
|
408
|
-
// and `DATABASE_URL_PRODUCTION` are dictionary words with no digits and no
|
|
409
|
-
// lowercase, so the length floor and the character-mix gate turn them both
|
|
410
|
-
// away. The digest check lowercases the prefix so `SHA512-…` is still
|
|
411
|
-
// recognised as a digest.
|
|
412
|
-
//
|
|
413
|
-
// A declined match consumes the text it spanned, so in principle a benign
|
|
414
|
-
// outer match could hide a secret further inside the same unbroken token.
|
|
415
|
-
// It cannot in practice: a body containing key material inherits that
|
|
416
|
-
// material's entropy and character mix, so the outer match is accepted and
|
|
461
|
+
// The layer that catches a vendor nobody has heard of: a short prefix, a separator and a
|
|
462
|
+
// high-entropy body, needing no vendor knowledge. The prefix may be upper, lower or mixed
|
|
463
|
+
// case since plenty of vendors mint `LW_…` or `Xy_…`; that also makes it the shape of a
|
|
464
|
+
// screaming-snake env var NAME, but the length floor and character-mix gate turn those away.
|
|
465
|
+
// A declined match consumes the text it spanned, so in principle an outer match could hide
|
|
466
|
+
// secret material further inside the same token. It cannot in practice: a body containing
|
|
467
|
+
// key material inherits that material's entropy and mix, so the outer match is accepted and
|
|
417
468
|
// the secret is redacted along with its prefix.
|
|
418
469
|
id: "shaped_api_key",
|
|
419
470
|
description: "High-entropy API key with a vendor-style prefix",
|
|
@@ -431,26 +482,14 @@ var VALUE_RULES = [
|
|
|
431
482
|
// they write "key:".
|
|
432
483
|
id: "sensitive_assignment",
|
|
433
484
|
description: "Value assigned to a credential-named field",
|
|
434
|
-
//
|
|
435
|
-
//
|
|
436
|
-
//
|
|
437
|
-
//
|
|
438
|
-
//
|
|
439
|
-
//
|
|
440
|
-
//
|
|
441
|
-
//
|
|
442
|
-
//
|
|
443
|
-
// A whitespace separator is accepted on a HIGHER bar instead of not at
|
|
444
|
-
// all, because `Authorization <token>` and `key <token>` do carry real
|
|
445
|
-
// credentials. Ungated it matched 5,816 further spans over 309 shapes,
|
|
446
|
-
// mostly prose; gated on the value looking like key material in its own
|
|
447
|
-
// right it matches 338 over 19 at roughly 87% precision.
|
|
448
|
-
//
|
|
449
|
-
// The value class excludes backslash. Span content arrives JSON-encoded,
|
|
450
|
-
// so a literal two-character `\n` sits inside the text; letting a value run
|
|
451
|
-
// through one carried it across logical lines and past the `$VAR` and
|
|
452
|
-
// code-expression guards, which is why `api_key = $OPENAI_API_KEY` was kept
|
|
453
|
-
// with a real newline and redacted with an escaped one.
|
|
485
|
+
// `key is <value>` was rejected as a strict separator: on real traces it caught zero
|
|
486
|
+
// credentials while being the sole source of prose false-positives. Whitespace is accepted
|
|
487
|
+
// instead on a higher bar — the value must look like key material (see `isKeyMaterial`) —
|
|
488
|
+
// which is what keeps `Authorization <token>` and `key <token>` while rejecting prose.
|
|
489
|
+
// The value class excludes backslash: span content arrives JSON-encoded, so a literal `\n`
|
|
490
|
+
// is two characters, and letting a value run through one carried it across logical lines and
|
|
491
|
+
// past the `$VAR`/code-expression guards — `api_key = $OPENAI_API_KEY` was kept with a real
|
|
492
|
+
// newline and redacted with an escaped one.
|
|
454
493
|
regex: new RegExp(
|
|
455
494
|
`((?:^|[\\W_])(?:${CREDENTIAL_KEYWORD})(?:\\s+[A-Za-z]{1,8}){0,2}["'\`]?(?:\\s*[:=]{1,2}\\s*|[ \\t?-]+)["'\`]?)([^\\s"'\`,;<>(){}\\[\\]\\\\]{${CONTEXT_VALUE_MIN_LENGTH},})`,
|
|
456
495
|
"gi"
|
|
@@ -609,7 +648,7 @@ function collectSensitiveEnvValues(env) {
|
|
|
609
648
|
if (!ENV_SECRET_NAME_REGEX.test(name)) continue;
|
|
610
649
|
values.add(trimmed);
|
|
611
650
|
}
|
|
612
|
-
return [...values].
|
|
651
|
+
return [...values].toSorted((a, b) => b.length - a.length);
|
|
613
652
|
}
|
|
614
653
|
var EMAIL_REGEX = /[A-Za-z0-9._%+-]{1,64}@[A-Za-z0-9.-]{1,253}\.[A-Za-z]{2,24}/g;
|
|
615
654
|
var INTL_PHONE_REGEX = /(?<![\w.+-])\+[1-9]\d{0,2}(?:[\s.-]?(?:\(\d{1,4}\)[\s.-]?)?\d{1,4}){1,5}(?!\d)/g;
|
|
@@ -829,10 +868,11 @@ function redactReport(params) {
|
|
|
829
868
|
async function deliverReport(report, params) {
|
|
830
869
|
const config = getConfig();
|
|
831
870
|
const endpoint = config.endpoint.replace(/\/+$/, "");
|
|
832
|
-
const response = await fetch(`${endpoint}/api/bug-reports`, {
|
|
871
|
+
const response = await fetch(`${endpoint}/api/v1/bug-reports`, {
|
|
833
872
|
method: "POST",
|
|
834
873
|
headers: {
|
|
835
874
|
"content-type": "application/json",
|
|
875
|
+
"x-api-version": LANGWATCH_API_VERSION,
|
|
836
876
|
...config.apiKey ? { authorization: `Bearer ${config.apiKey}` } : {}
|
|
837
877
|
},
|
|
838
878
|
body: JSON.stringify({
|
|
@@ -882,4 +922,4 @@ async function handleReportIssue(params) {
|
|
|
882
922
|
export {
|
|
883
923
|
handleReportIssue
|
|
884
924
|
};
|
|
885
|
-
//# sourceMappingURL=report-issue-
|
|
925
|
+
//# sourceMappingURL=report-issue-N7ND5TM6.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
formatRunPlanRun
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RABYBFX5.js";
|
|
4
4
|
import {
|
|
5
5
|
rerunRunPlan
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-VOUGDY2O.js";
|
|
7
|
+
import "./chunk-7CZQDZ2K.js";
|
|
8
|
+
import "./chunk-DULFP3MK.js";
|
|
9
9
|
import "./chunk-SAS5OB7F.js";
|
|
10
10
|
|
|
11
11
|
// src/tools/rerun-run-plan.ts
|
|
@@ -19,4 +19,4 @@ async function handleRerunRunPlan(params) {
|
|
|
19
19
|
export {
|
|
20
20
|
handleRerunRunPlan
|
|
21
21
|
};
|
|
22
|
-
//# sourceMappingURL=rerun-run-plan-
|
|
22
|
+
//# sourceMappingURL=rerun-run-plan-O3VUZ6CG.js.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatRunPlanRun
|
|
3
|
+
} from "./chunk-RABYBFX5.js";
|
|
4
|
+
import {
|
|
5
|
+
rerunRunPlan
|
|
6
|
+
} from "./chunk-VOUGDY2O.js";
|
|
7
|
+
import "./chunk-7CZQDZ2K.js";
|
|
8
|
+
import "./chunk-DULFP3MK.js";
|
|
9
|
+
|
|
10
|
+
// src/tools/rerun-run-plan.ts
|
|
11
|
+
async function handleRerunRunPlan(params) {
|
|
12
|
+
const result = await rerunRunPlan(params.id, {
|
|
13
|
+
parameters: params.parameters,
|
|
14
|
+
note: params.note
|
|
15
|
+
});
|
|
16
|
+
return formatRunPlanRun(result);
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
handleRerunRunPlan
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=rerun-run-plan-OJTVVGJI.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
revokeApiKey
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-SHSVN3SE.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/revoke-api-key.ts
|
|
@@ -13,4 +13,4 @@ async function handleRevokeApiKey(params) {
|
|
|
13
13
|
export {
|
|
14
14
|
handleRevokeApiKey
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=revoke-api-key-
|
|
16
|
+
//# sourceMappingURL=revoke-api-key-BU6BKGCG.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
revokeApiKey
|
|
3
|
+
} from "./chunk-SHSVN3SE.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
|
+
|
|
7
|
+
// src/tools/revoke-api-key.ts
|
|
8
|
+
async function handleRevokeApiKey(params) {
|
|
9
|
+
await revokeApiKey(params.id);
|
|
10
|
+
return `API key ${params.id} revoked successfully.`;
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
handleRevokeApiKey
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=revoke-api-key-NZNCFOIR.js.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runAgent
|
|
3
|
+
} from "./chunk-4RX3G62A.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
|
+
import "./chunk-SAS5OB7F.js";
|
|
7
|
+
|
|
8
|
+
// src/tools/run-agent.ts
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
var jsonObjectSchema = z.looseObject({});
|
|
11
|
+
function outputLines(result) {
|
|
12
|
+
const output = result.output;
|
|
13
|
+
if (output !== void 0) {
|
|
14
|
+
return ["**Output:**", typeof output === "string" ? output : JSON.stringify(output, null, 2)];
|
|
15
|
+
}
|
|
16
|
+
return ["**Result:**", JSON.stringify(result, null, 2)];
|
|
17
|
+
}
|
|
18
|
+
function connectedLines(result) {
|
|
19
|
+
const lines = [];
|
|
20
|
+
const instance = result.instance;
|
|
21
|
+
const durationMs = result.durationMs;
|
|
22
|
+
if (instance?.hostname) {
|
|
23
|
+
const label = instance.label ? ` (${instance.label})` : "";
|
|
24
|
+
lines.push(`
|
|
25
|
+
**Instance:** ${instance.hostname}${label}`);
|
|
26
|
+
}
|
|
27
|
+
if (typeof durationMs === "number") lines.push(`**Duration:** ${durationMs} ms`);
|
|
28
|
+
const session = result.session;
|
|
29
|
+
if (session !== void 0 && session !== null) {
|
|
30
|
+
lines.push("**Session:**");
|
|
31
|
+
lines.push(JSON.stringify(session, null, 2));
|
|
32
|
+
}
|
|
33
|
+
return lines;
|
|
34
|
+
}
|
|
35
|
+
async function handleRunAgent({
|
|
36
|
+
id,
|
|
37
|
+
input,
|
|
38
|
+
message,
|
|
39
|
+
parameters,
|
|
40
|
+
threadId
|
|
41
|
+
}) {
|
|
42
|
+
let parsedInput = {};
|
|
43
|
+
if (input) {
|
|
44
|
+
let decoded;
|
|
45
|
+
try {
|
|
46
|
+
decoded = JSON.parse(input);
|
|
47
|
+
} catch {
|
|
48
|
+
return "Error: `input` must be a valid JSON object.";
|
|
49
|
+
}
|
|
50
|
+
const result2 = jsonObjectSchema.safeParse(decoded);
|
|
51
|
+
if (!result2.success) {
|
|
52
|
+
return "Error: `input` must be a valid JSON object.";
|
|
53
|
+
}
|
|
54
|
+
parsedInput = result2.data;
|
|
55
|
+
}
|
|
56
|
+
const { agentType, result } = await runAgent({
|
|
57
|
+
id,
|
|
58
|
+
input: parsedInput,
|
|
59
|
+
message,
|
|
60
|
+
parameters,
|
|
61
|
+
threadId
|
|
62
|
+
});
|
|
63
|
+
const lines = [];
|
|
64
|
+
lines.push(`Agent executed successfully (type: ${agentType}).
|
|
65
|
+
`);
|
|
66
|
+
if (typeof result === "object" && result !== null) {
|
|
67
|
+
lines.push(...outputLines(result));
|
|
68
|
+
if (agentType === "connected") lines.push(...connectedLines(result));
|
|
69
|
+
}
|
|
70
|
+
return lines.join("\n");
|
|
71
|
+
}
|
|
72
|
+
export {
|
|
73
|
+
handleRunAgent
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=run-agent-244O4Y5M.js.map
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runAgent
|
|
3
|
+
} from "./chunk-EYPJBL7P.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
|
+
|
|
7
|
+
// src/tools/run-agent.ts
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
var jsonObjectSchema = z.looseObject({});
|
|
10
|
+
function outputLines(result) {
|
|
11
|
+
const output = result.output;
|
|
12
|
+
if (output !== void 0) {
|
|
13
|
+
return ["**Output:**", typeof output === "string" ? output : JSON.stringify(output, null, 2)];
|
|
14
|
+
}
|
|
15
|
+
return ["**Result:**", JSON.stringify(result, null, 2)];
|
|
16
|
+
}
|
|
17
|
+
function connectedLines(result) {
|
|
18
|
+
const lines = [];
|
|
19
|
+
const instance = result.instance;
|
|
20
|
+
const durationMs = result.durationMs;
|
|
21
|
+
if (instance?.hostname) {
|
|
22
|
+
const label = instance.label ? ` (${instance.label})` : "";
|
|
23
|
+
lines.push(`
|
|
24
|
+
**Instance:** ${instance.hostname}${label}`);
|
|
25
|
+
}
|
|
26
|
+
if (typeof durationMs === "number") lines.push(`**Duration:** ${durationMs} ms`);
|
|
27
|
+
const session = result.session;
|
|
28
|
+
if (session !== void 0 && session !== null) {
|
|
29
|
+
lines.push("**Session:**");
|
|
30
|
+
lines.push(JSON.stringify(session, null, 2));
|
|
31
|
+
}
|
|
32
|
+
return lines;
|
|
33
|
+
}
|
|
34
|
+
async function handleRunAgent({
|
|
35
|
+
id,
|
|
36
|
+
input,
|
|
37
|
+
message,
|
|
38
|
+
parameters,
|
|
39
|
+
threadId
|
|
40
|
+
}) {
|
|
41
|
+
let parsedInput = {};
|
|
42
|
+
if (input) {
|
|
43
|
+
let decoded;
|
|
44
|
+
try {
|
|
45
|
+
decoded = JSON.parse(input);
|
|
46
|
+
} catch {
|
|
47
|
+
return "Error: `input` must be a valid JSON object.";
|
|
48
|
+
}
|
|
49
|
+
const result2 = jsonObjectSchema.safeParse(decoded);
|
|
50
|
+
if (!result2.success) {
|
|
51
|
+
return "Error: `input` must be a valid JSON object.";
|
|
52
|
+
}
|
|
53
|
+
parsedInput = result2.data;
|
|
54
|
+
}
|
|
55
|
+
const { agentType, result } = await runAgent({
|
|
56
|
+
id,
|
|
57
|
+
input: parsedInput,
|
|
58
|
+
message,
|
|
59
|
+
parameters,
|
|
60
|
+
threadId
|
|
61
|
+
});
|
|
62
|
+
const lines = [];
|
|
63
|
+
lines.push(`Agent executed successfully (type: ${agentType}).
|
|
64
|
+
`);
|
|
65
|
+
if (typeof result === "object" && result !== null) {
|
|
66
|
+
lines.push(...outputLines(result));
|
|
67
|
+
if (agentType === "connected") lines.push(...connectedLines(result));
|
|
68
|
+
}
|
|
69
|
+
return lines.join("\n");
|
|
70
|
+
}
|
|
71
|
+
export {
|
|
72
|
+
handleRunAgent
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=run-agent-HPCGZGYW.js.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatRunPlanRun
|
|
3
|
+
} from "./chunk-RABYBFX5.js";
|
|
4
|
+
import {
|
|
5
|
+
runRunPlan
|
|
6
|
+
} from "./chunk-VOUGDY2O.js";
|
|
7
|
+
import {
|
|
8
|
+
toWireTargets
|
|
9
|
+
} from "./chunk-O7EMWEVJ.js";
|
|
10
|
+
import {
|
|
11
|
+
toWireAttachments
|
|
12
|
+
} from "./chunk-U24EACC4.js";
|
|
13
|
+
import "./chunk-7CZQDZ2K.js";
|
|
14
|
+
import "./chunk-DULFP3MK.js";
|
|
15
|
+
|
|
16
|
+
// src/tools/run-plan.ts
|
|
17
|
+
async function handleRunPlan(params) {
|
|
18
|
+
const result = await runRunPlan({
|
|
19
|
+
name: params.name,
|
|
20
|
+
config: {
|
|
21
|
+
scope: params.scope,
|
|
22
|
+
targets: toWireTargets(params.targets),
|
|
23
|
+
repeatCount: params.repeatCount,
|
|
24
|
+
simulatorModel: params.simulatorModel,
|
|
25
|
+
judgeModel: params.judgeModel,
|
|
26
|
+
scenarioIds: params.scenarioIds,
|
|
27
|
+
...params.evaluators !== void 0 ? { evaluators: toWireAttachments(params.evaluators) } : {}
|
|
28
|
+
},
|
|
29
|
+
idempotencyKey: params.idempotencyKey,
|
|
30
|
+
parameters: params.parameters,
|
|
31
|
+
note: params.note
|
|
32
|
+
});
|
|
33
|
+
return formatRunPlanRun(result);
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
handleRunPlan
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=run-plan-2ZPGGZ4H.js.map
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
formatRunPlanRun
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RABYBFX5.js";
|
|
4
4
|
import {
|
|
5
5
|
runRunPlan
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VOUGDY2O.js";
|
|
7
7
|
import {
|
|
8
8
|
toWireTargets
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-O7EMWEVJ.js";
|
|
10
10
|
import {
|
|
11
11
|
toWireAttachments
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-U24EACC4.js";
|
|
13
|
+
import "./chunk-7CZQDZ2K.js";
|
|
14
|
+
import "./chunk-DULFP3MK.js";
|
|
15
15
|
import "./chunk-SAS5OB7F.js";
|
|
16
16
|
|
|
17
17
|
// src/tools/run-plan.ts
|
|
@@ -36,4 +36,4 @@ async function handleRunPlan(params) {
|
|
|
36
36
|
export {
|
|
37
37
|
handleRunPlan
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=run-plan-
|
|
39
|
+
//# sourceMappingURL=run-plan-KSXUYQT3.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {
|
|
2
|
+
markdownTable,
|
|
3
|
+
runQuery
|
|
4
|
+
} from "./chunk-GA5JUSPT.js";
|
|
5
|
+
import "./chunk-FOKVY3BK.js";
|
|
6
|
+
import "./chunk-7CZQDZ2K.js";
|
|
7
|
+
import "./chunk-DULFP3MK.js";
|
|
8
|
+
import "./chunk-SAS5OB7F.js";
|
|
9
|
+
|
|
10
|
+
// src/tools/run-query.ts
|
|
11
|
+
var RUN_QUERY_ROW_CAP = 50;
|
|
12
|
+
async function handleRunQuery(params) {
|
|
13
|
+
const result = await runQuery(params);
|
|
14
|
+
const headers = result.columns.map((column) => column.name);
|
|
15
|
+
const shown = result.rows.slice(0, RUN_QUERY_ROW_CAP);
|
|
16
|
+
const lines = [];
|
|
17
|
+
lines.push(
|
|
18
|
+
markdownTable({
|
|
19
|
+
headers,
|
|
20
|
+
rows: shown,
|
|
21
|
+
emptyMessage: "The statement ran and returned no rows."
|
|
22
|
+
})
|
|
23
|
+
);
|
|
24
|
+
lines.push("");
|
|
25
|
+
lines.push(
|
|
26
|
+
`Returned ${result.rows.length} row${result.rows.length === 1 ? "" : "s"} in ${result.statistics.elapsedMs}ms.`
|
|
27
|
+
);
|
|
28
|
+
if (result.rows.length > shown.length) {
|
|
29
|
+
lines.push(
|
|
30
|
+
`Showing the first ${shown.length}. Aggregate further, or export every row with \`langwatch query "<statement>" --format jsonl\`.`
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
if (result.truncated) {
|
|
34
|
+
lines.push(
|
|
35
|
+
"The result hit a response ceiling and was cut short, so this is not the whole answer."
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
for (const diagnostic of result.diagnostics) {
|
|
39
|
+
lines.push(`${diagnostic.code}: ${diagnostic.message}`);
|
|
40
|
+
}
|
|
41
|
+
return lines.join("\n");
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
RUN_QUERY_ROW_CAP,
|
|
45
|
+
handleRunQuery
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=run-query-4LMOQ5UW.js.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import {
|
|
2
|
+
markdownTable,
|
|
3
|
+
runQuery
|
|
4
|
+
} from "./chunk-GA5JUSPT.js";
|
|
5
|
+
import "./chunk-FOKVY3BK.js";
|
|
6
|
+
import "./chunk-7CZQDZ2K.js";
|
|
7
|
+
import "./chunk-DULFP3MK.js";
|
|
8
|
+
|
|
9
|
+
// src/tools/run-query.ts
|
|
10
|
+
var RUN_QUERY_ROW_CAP = 50;
|
|
11
|
+
async function handleRunQuery(params) {
|
|
12
|
+
const result = await runQuery(params);
|
|
13
|
+
const headers = result.columns.map((column) => column.name);
|
|
14
|
+
const shown = result.rows.slice(0, RUN_QUERY_ROW_CAP);
|
|
15
|
+
const lines = [];
|
|
16
|
+
lines.push(
|
|
17
|
+
markdownTable({
|
|
18
|
+
headers,
|
|
19
|
+
rows: shown,
|
|
20
|
+
emptyMessage: "The statement ran and returned no rows."
|
|
21
|
+
})
|
|
22
|
+
);
|
|
23
|
+
lines.push("");
|
|
24
|
+
lines.push(
|
|
25
|
+
`Returned ${result.rows.length} row${result.rows.length === 1 ? "" : "s"} in ${result.statistics.elapsedMs}ms.`
|
|
26
|
+
);
|
|
27
|
+
if (result.rows.length > shown.length) {
|
|
28
|
+
lines.push(
|
|
29
|
+
`Showing the first ${shown.length}. Aggregate further, or export every row with \`langwatch query "<statement>" --format jsonl\`.`
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
if (result.truncated) {
|
|
33
|
+
lines.push(
|
|
34
|
+
"The result hit a response ceiling and was cut short, so this is not the whole answer."
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
for (const diagnostic of result.diagnostics) {
|
|
38
|
+
lines.push(`${diagnostic.code}: ${diagnostic.message}`);
|
|
39
|
+
}
|
|
40
|
+
return lines.join("\n");
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
RUN_QUERY_ROW_CAP,
|
|
44
|
+
handleRunQuery
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=run-query-BQUHIUC2.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
formatRunPlanRun
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RABYBFX5.js";
|
|
4
4
|
import {
|
|
5
5
|
toWireTargets
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-O7EMWEVJ.js";
|
|
7
7
|
import {
|
|
8
8
|
runTestSuite
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-YCIUEZVK.js";
|
|
10
|
+
import "./chunk-7CZQDZ2K.js";
|
|
11
|
+
import "./chunk-DULFP3MK.js";
|
|
12
12
|
import "./chunk-SAS5OB7F.js";
|
|
13
13
|
|
|
14
14
|
// src/tools/run-test-suite.ts
|
|
@@ -23,4 +23,4 @@ async function handleRunTestSuite(params) {
|
|
|
23
23
|
export {
|
|
24
24
|
handleRunTestSuite
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=run-test-suite-
|
|
26
|
+
//# sourceMappingURL=run-test-suite-P3WLVPXC.js.map
|