@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
|
@@ -28,7 +28,9 @@ function formatScenarioSchema() {
|
|
|
28
28
|
"A test suite reads like a dataset: it declares typed fields beyond the situation and the criteria, and every scenario filed in it carries one value per field. Declare them with `platform_create_test_suite` or `platform_update_test_suite`:"
|
|
29
29
|
);
|
|
30
30
|
lines.push("```json");
|
|
31
|
-
lines.push(
|
|
31
|
+
lines.push(
|
|
32
|
+
'{ "fields": [{ "identifier": "golden_sql", "type": "text" }, { "identifier": "row_limit", "type": "number" }] }'
|
|
33
|
+
);
|
|
32
34
|
lines.push("```");
|
|
33
35
|
lines.push(
|
|
34
36
|
"- **identifier**: lowercase letters, digits and underscores, starting with a letter. situation, criteria, name, input and output are reserved."
|
|
@@ -46,8 +48,12 @@ function formatScenarioSchema() {
|
|
|
46
48
|
lines.push(' "evaluatorId": "<id from platform_list_evaluators>",');
|
|
47
49
|
lines.push(' "required": true,');
|
|
48
50
|
lines.push(' "mappings": {');
|
|
49
|
-
lines.push(
|
|
50
|
-
|
|
51
|
+
lines.push(
|
|
52
|
+
' "output": { "type": "source", "sourceId": "trace", "path": ["tool_calls", "run_sql", "input"] },'
|
|
53
|
+
);
|
|
54
|
+
lines.push(
|
|
55
|
+
' "expected_output": { "type": "source", "sourceId": "scenario", "path": ["fields", "golden_sql"] }'
|
|
56
|
+
);
|
|
51
57
|
lines.push(" }");
|
|
52
58
|
lines.push("}] }");
|
|
53
59
|
lines.push("```");
|
|
@@ -63,21 +69,21 @@ function formatScenarioSchema() {
|
|
|
63
69
|
lines.push(
|
|
64
70
|
'- **trace**: `["contexts"]` (the retrieved contexts of the run\'s traces) or `["tool_calls", "<toolName>", "input" | "output"]` (the last matching tool call)'
|
|
65
71
|
);
|
|
66
|
-
lines.push(
|
|
67
|
-
'- a literal: `{ "type": "value", "value": "..." }`'
|
|
68
|
-
);
|
|
72
|
+
lines.push('- a literal: `{ "type": "value", "value": "..." }`');
|
|
69
73
|
lines.push(
|
|
70
74
|
"A scenario whose field is blank skips the evaluators that read it, with a reason. A trace with no such tool call or no contexts fails them, with a reason. The results come back under `results.evaluations` on `platform_get_simulation_run`."
|
|
71
75
|
);
|
|
72
76
|
lines.push("\n## Writing a Good Situation\n");
|
|
77
|
+
lines.push("The situation drives the user simulator. Include these elements:");
|
|
73
78
|
lines.push(
|
|
74
|
-
"
|
|
79
|
+
"- **Persona**: Who is the user? (e.g., a stressed small business owner, a confused teenager)"
|
|
75
80
|
);
|
|
76
|
-
lines.push("- **Persona**: Who is the user? (e.g., a stressed small business owner, a confused teenager)");
|
|
77
81
|
lines.push("- **Emotional state**: How are they feeling? (e.g., frustrated, anxious, impatient)");
|
|
78
82
|
lines.push("- **Background/Context**: What happened before this conversation?");
|
|
79
83
|
lines.push("- **Intent**: What do they want to accomplish?");
|
|
80
|
-
lines.push(
|
|
84
|
+
lines.push(
|
|
85
|
+
"- **Constraints**: What limitations do they have? (e.g., no phone for 2FA, unfamiliar with technical terms)"
|
|
86
|
+
);
|
|
81
87
|
lines.push("\nExample:");
|
|
82
88
|
lines.push("```");
|
|
83
89
|
lines.push("User is a small business owner stressed about tax deadline.");
|
|
@@ -87,17 +93,31 @@ function formatScenarioSchema() {
|
|
|
87
93
|
lines.push("categories apply to their consulting business.");
|
|
88
94
|
lines.push("```");
|
|
89
95
|
lines.push("\n## Writing Good Criteria\n");
|
|
90
|
-
lines.push(
|
|
96
|
+
lines.push(
|
|
97
|
+
"Criteria are what the judge uses to pass or fail the agent. Each criterion should be:"
|
|
98
|
+
);
|
|
91
99
|
lines.push('- **Specific and testable** \u2014 not vague like "responds helpfully"');
|
|
92
|
-
lines.push(
|
|
100
|
+
lines.push(
|
|
101
|
+
"- **Behavioral** \u2014 describes what the agent should *do*, not how it works internally"
|
|
102
|
+
);
|
|
93
103
|
lines.push("- **Independent** \u2014 each criterion checks one thing");
|
|
94
104
|
lines.push("\nGood criteria patterns:");
|
|
95
|
-
lines.push(
|
|
96
|
-
|
|
97
|
-
|
|
105
|
+
lines.push(
|
|
106
|
+
`- **Information gathering**: "Agent asks for the user's account number before proceeding"`
|
|
107
|
+
);
|
|
108
|
+
lines.push(
|
|
109
|
+
'- **Safety/guardrails**: "Agent does not reveal internal system details or error stack traces"'
|
|
110
|
+
);
|
|
111
|
+
lines.push(
|
|
112
|
+
'- **Clarification**: "Agent asks clarifying questions before taking irreversible action"'
|
|
113
|
+
);
|
|
98
114
|
lines.push('- **Tone**: "Agent maintains a professional and empathetic tone throughout"');
|
|
99
|
-
lines.push(
|
|
100
|
-
|
|
115
|
+
lines.push(
|
|
116
|
+
'- **Completeness**: "Agent confirms the user understands the solution before ending"'
|
|
117
|
+
);
|
|
118
|
+
lines.push(
|
|
119
|
+
'- **Domain-specific**: "Agent recommends releasing a wild frog rather than keeping it as a pet"'
|
|
120
|
+
);
|
|
101
121
|
lines.push("\nAvoid vague criteria like:");
|
|
102
122
|
lines.push('- "Responds correctly" \u2014 correct how?');
|
|
103
123
|
lines.push('- "Is helpful" \u2014 helpful in what way?');
|
|
@@ -116,4 +136,4 @@ function formatScenarioSchema() {
|
|
|
116
136
|
export {
|
|
117
137
|
formatScenarioSchema
|
|
118
138
|
};
|
|
119
|
-
//# sourceMappingURL=discover-scenario-schema-
|
|
139
|
+
//# sourceMappingURL=discover-scenario-schema-OOFIQKOG.js.map
|
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getQueryReference,
|
|
3
|
+
markdownTable
|
|
4
|
+
} from "./chunk-GA5JUSPT.js";
|
|
5
|
+
import "./chunk-FOKVY3BK.js";
|
|
6
|
+
import "./chunk-7CZQDZ2K.js";
|
|
7
|
+
import "./chunk-DULFP3MK.js";
|
|
8
|
+
|
|
9
|
+
// src/schemas/analytics-groups.ts
|
|
10
|
+
var analyticsGroups = [
|
|
11
|
+
{
|
|
12
|
+
name: "topics.topics",
|
|
13
|
+
label: "Topic",
|
|
14
|
+
description: "Group by topic classification"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "metadata.user_id",
|
|
18
|
+
label: "User",
|
|
19
|
+
description: "Group by user ID"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "metadata.thread_id",
|
|
23
|
+
label: "Thread",
|
|
24
|
+
description: "Group by conversation thread"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: "metadata.customer_id",
|
|
28
|
+
label: "Customer ID",
|
|
29
|
+
description: "Group by customer/organization"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "metadata.labels",
|
|
33
|
+
label: "Label",
|
|
34
|
+
description: "Group by custom labels"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "metadata.model",
|
|
38
|
+
label: "Model",
|
|
39
|
+
description: "Group by LLM model name"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "metadata.span_type",
|
|
43
|
+
label: "Span Type",
|
|
44
|
+
description: "Group by span type (llm, tool, agent, etc.)"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "sentiment.input_sentiment",
|
|
48
|
+
label: "Input Sentiment",
|
|
49
|
+
description: "Group by detected input sentiment (positive, negative, neutral)"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "sentiment.thumbs_up_down",
|
|
53
|
+
label: "Thumbs Up/Down",
|
|
54
|
+
description: "Group by user feedback (positive, negative, neutral)"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "events.event_type",
|
|
58
|
+
label: "Event Type",
|
|
59
|
+
description: "Group by event type"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: "evaluations.evaluation_passed",
|
|
63
|
+
label: "Evaluation Passed",
|
|
64
|
+
description: "Group by evaluation pass/fail status"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: "evaluations.evaluation_label",
|
|
68
|
+
label: "Evaluation Label",
|
|
69
|
+
description: "Group by evaluation label result"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "evaluations.evaluation_processing_state",
|
|
73
|
+
label: "Evaluation Processing State",
|
|
74
|
+
description: "Group by evaluation processing state"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "error.has_error",
|
|
78
|
+
label: "Contains Error",
|
|
79
|
+
description: "Group by whether the trace contains an error"
|
|
80
|
+
}
|
|
81
|
+
];
|
|
82
|
+
|
|
83
|
+
// src/schemas/analytics-metrics.ts
|
|
84
|
+
var analyticsMetrics = [
|
|
85
|
+
// metadata
|
|
86
|
+
{
|
|
87
|
+
category: "metadata",
|
|
88
|
+
name: "trace_id",
|
|
89
|
+
label: "Traces",
|
|
90
|
+
allowedAggregations: ["cardinality"],
|
|
91
|
+
description: "Count of unique traces"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
category: "metadata",
|
|
95
|
+
name: "user_id",
|
|
96
|
+
label: "Users",
|
|
97
|
+
allowedAggregations: ["cardinality"],
|
|
98
|
+
description: "Count of unique users"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
category: "metadata",
|
|
102
|
+
name: "thread_id",
|
|
103
|
+
label: "Threads",
|
|
104
|
+
allowedAggregations: ["cardinality"],
|
|
105
|
+
description: "Count of unique conversation threads"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
category: "metadata",
|
|
109
|
+
name: "span_type",
|
|
110
|
+
label: "Span Type",
|
|
111
|
+
allowedAggregations: ["cardinality"],
|
|
112
|
+
description: "Count of spans, optionally filtered by span type"
|
|
113
|
+
},
|
|
114
|
+
// sentiment
|
|
115
|
+
{
|
|
116
|
+
category: "sentiment",
|
|
117
|
+
name: "input_sentiment",
|
|
118
|
+
label: "Input Sentiment Score",
|
|
119
|
+
allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
120
|
+
description: "Sentiment analysis score of inputs"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
category: "sentiment",
|
|
124
|
+
name: "thumbs_up_down",
|
|
125
|
+
label: "Thumbs Up/Down Score",
|
|
126
|
+
allowedAggregations: [
|
|
127
|
+
"terms",
|
|
128
|
+
"cardinality",
|
|
129
|
+
"avg",
|
|
130
|
+
"sum",
|
|
131
|
+
"min",
|
|
132
|
+
"max",
|
|
133
|
+
"median",
|
|
134
|
+
"p99",
|
|
135
|
+
"p95",
|
|
136
|
+
"p90"
|
|
137
|
+
],
|
|
138
|
+
description: "User feedback score (-1 to 1)"
|
|
139
|
+
},
|
|
140
|
+
// performance
|
|
141
|
+
{
|
|
142
|
+
category: "performance",
|
|
143
|
+
name: "completion_time",
|
|
144
|
+
label: "Completion Time",
|
|
145
|
+
allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
146
|
+
description: "Time to complete the trace (ms)"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
category: "performance",
|
|
150
|
+
name: "first_token",
|
|
151
|
+
label: "Time to First Token",
|
|
152
|
+
allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
153
|
+
description: "Time to first token (ms)"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
category: "performance",
|
|
157
|
+
name: "total_cost",
|
|
158
|
+
label: "Total Cost",
|
|
159
|
+
allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
160
|
+
description: "Cost per trace in USD"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
category: "performance",
|
|
164
|
+
name: "prompt_tokens",
|
|
165
|
+
label: "Prompt Tokens",
|
|
166
|
+
allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
167
|
+
description: "Input token count"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
category: "performance",
|
|
171
|
+
name: "completion_tokens",
|
|
172
|
+
label: "Completion Tokens",
|
|
173
|
+
allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
174
|
+
description: "Output token count"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
category: "performance",
|
|
178
|
+
name: "total_tokens",
|
|
179
|
+
label: "Total Tokens",
|
|
180
|
+
allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
181
|
+
description: "Total token count (input + output)"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
category: "performance",
|
|
185
|
+
name: "tokens_per_second",
|
|
186
|
+
label: "Tokens per Second",
|
|
187
|
+
allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
188
|
+
description: "Token generation speed"
|
|
189
|
+
},
|
|
190
|
+
// events
|
|
191
|
+
{
|
|
192
|
+
category: "events",
|
|
193
|
+
name: "event_type",
|
|
194
|
+
label: "Event Type",
|
|
195
|
+
allowedAggregations: ["cardinality"],
|
|
196
|
+
description: "Count of events, optionally filtered by event type"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
category: "events",
|
|
200
|
+
name: "event_score",
|
|
201
|
+
label: "Event Score",
|
|
202
|
+
allowedAggregations: ["terms", "avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
203
|
+
description: "Numeric score from events (requires event_type key and metrics key)"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
category: "events",
|
|
207
|
+
name: "event_details",
|
|
208
|
+
label: "Event Details",
|
|
209
|
+
allowedAggregations: ["cardinality"],
|
|
210
|
+
description: "Event detail key/value distribution (requires event_type key and details key)"
|
|
211
|
+
},
|
|
212
|
+
// evaluations
|
|
213
|
+
{
|
|
214
|
+
category: "evaluations",
|
|
215
|
+
name: "evaluation_score",
|
|
216
|
+
label: "Evaluation Score",
|
|
217
|
+
allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
218
|
+
description: "Numeric evaluation score (requires evaluator_id key)"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
category: "evaluations",
|
|
222
|
+
name: "evaluation_pass_rate",
|
|
223
|
+
label: "Evaluation Pass Rate",
|
|
224
|
+
allowedAggregations: ["avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
225
|
+
description: "Percentage of traces passing evaluation (requires evaluator_id key)"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
category: "evaluations",
|
|
229
|
+
name: "evaluation_runs",
|
|
230
|
+
label: "Evaluation Runs",
|
|
231
|
+
allowedAggregations: ["cardinality"],
|
|
232
|
+
description: "Count of evaluation executions"
|
|
233
|
+
},
|
|
234
|
+
// threads
|
|
235
|
+
{
|
|
236
|
+
category: "threads",
|
|
237
|
+
name: "average_duration_per_thread",
|
|
238
|
+
label: "Thread Duration",
|
|
239
|
+
allowedAggregations: ["avg"],
|
|
240
|
+
description: "Average duration of conversation threads (ms)"
|
|
241
|
+
}
|
|
242
|
+
];
|
|
243
|
+
|
|
244
|
+
// src/tools/discover-schema.ts
|
|
245
|
+
var PLATFORM_BACKED = /* @__PURE__ */ new Set(["filters", "lwql", "all"]);
|
|
246
|
+
function needsQueryReference(category) {
|
|
247
|
+
return PLATFORM_BACKED.has(category);
|
|
248
|
+
}
|
|
249
|
+
async function formatSchema(category, reference) {
|
|
250
|
+
const sections = [];
|
|
251
|
+
const resolved = needsQueryReference(category) && !reference ? await getQueryReference() : reference;
|
|
252
|
+
if (category === "filters" || category === "all") {
|
|
253
|
+
sections.push(formatFilters(resolved));
|
|
254
|
+
}
|
|
255
|
+
if (category === "lwql" || category === "all") {
|
|
256
|
+
sections.push(formatLangWatchQL(resolved));
|
|
257
|
+
}
|
|
258
|
+
if (category === "metrics" || category === "all") {
|
|
259
|
+
sections.push(formatMetrics());
|
|
260
|
+
}
|
|
261
|
+
if (category === "aggregations" || category === "all") {
|
|
262
|
+
sections.push(formatAggregations());
|
|
263
|
+
}
|
|
264
|
+
if (category === "groups" || category === "all") {
|
|
265
|
+
sections.push(formatGroups());
|
|
266
|
+
}
|
|
267
|
+
if (category === "all" && resolved) {
|
|
268
|
+
sections.push(formatDecisionTable(resolved));
|
|
269
|
+
}
|
|
270
|
+
return sections.join("\n\n");
|
|
271
|
+
}
|
|
272
|
+
var knownValuesCell = (field) => {
|
|
273
|
+
if (field.knownValues.length > 0) return field.knownValues.join(", ");
|
|
274
|
+
return field.facetable ? "open set, read them from GET /api/v1/traces/facets" : "";
|
|
275
|
+
};
|
|
276
|
+
function formatFilters(reference) {
|
|
277
|
+
if (!reference) {
|
|
278
|
+
return "## Trace Filter Fields\n\nUnavailable: the platform could not be reached.";
|
|
279
|
+
}
|
|
280
|
+
const lines = ["## Trace Filter Fields", ""];
|
|
281
|
+
lines.push(
|
|
282
|
+
"Send one of these as the `filter` parameter of `search_traces`, in the language the Trace Explorer's search bar speaks: `status:error AND model:gpt-*`."
|
|
283
|
+
);
|
|
284
|
+
lines.push(
|
|
285
|
+
"The `filters` parameter is the older per-field map and still works; both are combined when you send both."
|
|
286
|
+
);
|
|
287
|
+
lines.push("");
|
|
288
|
+
lines.push(
|
|
289
|
+
markdownTable({
|
|
290
|
+
headers: ["Field", "Type", "Group", "Known values"],
|
|
291
|
+
rows: reference.traceFilter.fields.map((field) => ({
|
|
292
|
+
Field: field.name,
|
|
293
|
+
Type: field.valueType,
|
|
294
|
+
Group: field.group ?? "",
|
|
295
|
+
"Known values": knownValuesCell(field)
|
|
296
|
+
}))
|
|
297
|
+
})
|
|
298
|
+
);
|
|
299
|
+
lines.push("");
|
|
300
|
+
lines.push("### Attribute namespaces", "");
|
|
301
|
+
lines.push(
|
|
302
|
+
markdownTable({
|
|
303
|
+
headers: ["Prefix", "Matches", "Older spellings"],
|
|
304
|
+
rows: reference.traceFilter.dynamicPrefixes.map((prefix) => ({
|
|
305
|
+
Prefix: `${prefix.prefix}<key>`,
|
|
306
|
+
Matches: prefix.description,
|
|
307
|
+
"Older spellings": prefix.aliases.join(", ")
|
|
308
|
+
}))
|
|
309
|
+
})
|
|
310
|
+
);
|
|
311
|
+
lines.push("");
|
|
312
|
+
lines.push("### Syntax", "");
|
|
313
|
+
lines.push(reference.traceFilter.syntax);
|
|
314
|
+
lines.push("");
|
|
315
|
+
lines.push("### Worked filters", "");
|
|
316
|
+
for (const example of reference.examples.filter(
|
|
317
|
+
(candidate) => candidate.language === "trace-filter"
|
|
318
|
+
)) {
|
|
319
|
+
lines.push(`- \`${example.text}\` \u2014 ${example.title}`);
|
|
320
|
+
}
|
|
321
|
+
return lines.join("\n");
|
|
322
|
+
}
|
|
323
|
+
function formatLangWatchQL(reference) {
|
|
324
|
+
if (!reference) {
|
|
325
|
+
return "## Analytics SQL\n\nUnavailable: the platform could not be reached.";
|
|
326
|
+
}
|
|
327
|
+
if (!reference.lwql.enabled) {
|
|
328
|
+
return [
|
|
329
|
+
"## Analytics SQL",
|
|
330
|
+
"",
|
|
331
|
+
"Not enabled for this project, so `run_query` will refuse. Use `search_traces` and `get_analytics` instead."
|
|
332
|
+
].join("\n");
|
|
333
|
+
}
|
|
334
|
+
const lines = ["## Analytics SQL", ""];
|
|
335
|
+
lines.push(
|
|
336
|
+
"Run one read-only SELECT with `run_query`. The statement is executed as written: nothing rewrites it."
|
|
337
|
+
);
|
|
338
|
+
lines.push(
|
|
339
|
+
`Ceilings: ${reference.lwql.limits.maxRowsReturned} rows, ${reference.lwql.limits.maxExecutionTimeSeconds} seconds. ${reference.lwql.limits.pagination}`
|
|
340
|
+
);
|
|
341
|
+
lines.push("");
|
|
342
|
+
for (const view of reference.lwql.schema.views) {
|
|
343
|
+
lines.push(`### ${view.name}`);
|
|
344
|
+
lines.push(`${view.description} One row is: ${view.grain}`);
|
|
345
|
+
lines.push(
|
|
346
|
+
`Filter on \`${view.timeColumn}\` to prune partitions. Join keys: ${view.joinKeys.join(", ") || "none"}.`
|
|
347
|
+
);
|
|
348
|
+
lines.push("");
|
|
349
|
+
lines.push(
|
|
350
|
+
markdownTable({
|
|
351
|
+
headers: ["Column", "Type", "Available", "Description"],
|
|
352
|
+
rows: view.columns.map((column) => ({
|
|
353
|
+
Column: column.name,
|
|
354
|
+
Type: column.type,
|
|
355
|
+
Available: column.available ? "yes" : `needs ${column.gates.join(", ")}`,
|
|
356
|
+
Description: column.description
|
|
357
|
+
}))
|
|
358
|
+
})
|
|
359
|
+
);
|
|
360
|
+
lines.push("");
|
|
361
|
+
}
|
|
362
|
+
lines.push("### Worked statements", "");
|
|
363
|
+
for (const example of reference.examples.filter((candidate) => candidate.language === "lwql")) {
|
|
364
|
+
lines.push(
|
|
365
|
+
`**${example.title}**${example.available ? "" : ` (needs ${example.requires.gates.join(", ")})`}`
|
|
366
|
+
);
|
|
367
|
+
lines.push("```sql");
|
|
368
|
+
lines.push(example.text);
|
|
369
|
+
lines.push("```");
|
|
370
|
+
for (const parameter of example.parameters) {
|
|
371
|
+
lines.push(`- \`{${parameter.name}:${parameter.type}}\` \u2014 ${parameter.description}`);
|
|
372
|
+
}
|
|
373
|
+
lines.push("");
|
|
374
|
+
}
|
|
375
|
+
return lines.join("\n");
|
|
376
|
+
}
|
|
377
|
+
function formatDecisionTable(reference) {
|
|
378
|
+
const lines = ["## Which one to reach for", ""];
|
|
379
|
+
lines.push(
|
|
380
|
+
markdownTable({
|
|
381
|
+
headers: ["When you want", "Use", "Why"],
|
|
382
|
+
rows: reference.decisionTable.map((row) => ({
|
|
383
|
+
"When you want": row.when,
|
|
384
|
+
Use: row.use,
|
|
385
|
+
Why: row.why
|
|
386
|
+
}))
|
|
387
|
+
})
|
|
388
|
+
);
|
|
389
|
+
return lines.join("\n");
|
|
390
|
+
}
|
|
391
|
+
function formatMetrics() {
|
|
392
|
+
const lines = ["## Available Metrics", ""];
|
|
393
|
+
lines.push("Use these in `get_analytics` as `metric` parameter in `category.name` format.");
|
|
394
|
+
lines.push("");
|
|
395
|
+
const byCategory = /* @__PURE__ */ new Map();
|
|
396
|
+
for (const m of analyticsMetrics) {
|
|
397
|
+
const list = byCategory.get(m.category) || [];
|
|
398
|
+
list.push(m);
|
|
399
|
+
byCategory.set(m.category, list);
|
|
400
|
+
}
|
|
401
|
+
for (const [cat, metrics] of byCategory) {
|
|
402
|
+
lines.push(`### ${cat}`);
|
|
403
|
+
for (const m of metrics) {
|
|
404
|
+
lines.push(`- **${cat}.${m.name}** (${m.label}): ${m.description}`);
|
|
405
|
+
lines.push(` Aggregations: ${m.allowedAggregations.join(", ")}`);
|
|
406
|
+
}
|
|
407
|
+
lines.push("");
|
|
408
|
+
}
|
|
409
|
+
return lines.join("\n");
|
|
410
|
+
}
|
|
411
|
+
function formatAggregations() {
|
|
412
|
+
return [
|
|
413
|
+
"## Available Aggregation Types",
|
|
414
|
+
"",
|
|
415
|
+
"- **cardinality**: Count unique values",
|
|
416
|
+
"- **terms**: Distribution/breakdown of values",
|
|
417
|
+
"- **avg**: Average",
|
|
418
|
+
"- **sum**: Sum total",
|
|
419
|
+
"- **min**: Minimum",
|
|
420
|
+
"- **max**: Maximum",
|
|
421
|
+
"- **median**: 50th percentile",
|
|
422
|
+
"- **p90**: 90th percentile",
|
|
423
|
+
"- **p95**: 95th percentile",
|
|
424
|
+
"- **p99**: 99th percentile",
|
|
425
|
+
"",
|
|
426
|
+
"Note: Not all aggregations are available for all metrics. Check the metric's allowed aggregations."
|
|
427
|
+
].join("\n");
|
|
428
|
+
}
|
|
429
|
+
function formatGroups() {
|
|
430
|
+
const lines = ["## Available Group-By Options", ""];
|
|
431
|
+
lines.push("Use these in the `groupBy` parameter of `get_analytics`.");
|
|
432
|
+
lines.push("");
|
|
433
|
+
for (const g of analyticsGroups) {
|
|
434
|
+
lines.push(`- **${g.name}** (${g.label}): ${g.description}`);
|
|
435
|
+
}
|
|
436
|
+
return lines.join("\n");
|
|
437
|
+
}
|
|
438
|
+
export {
|
|
439
|
+
formatSchema,
|
|
440
|
+
needsQueryReference
|
|
441
|
+
};
|
|
442
|
+
//# sourceMappingURL=discover-schema-7WHIIATI.js.map
|