@langwatch/mcp-server 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitignore +7 -0
- package/.npmignore +41 -0
- package/CHANGELOG.md +192 -201
- package/CONTRIBUTING.md +10 -0
- package/README.md +70 -68
- package/dist/add-dashboard-widget-4ZC5UN73.js +50 -0
- package/dist/add-dashboard-widget-ACC6QYBG.js +49 -0
- package/dist/archive-project-KWFM3I5Z.js +19 -0
- package/dist/{archive-project-W3IKI7UL.js → archive-project-SPVHXK6A.js} +4 -4
- package/dist/{archive-run-plan-474OKHHU.js → archive-run-plan-65QN3XRX.js} +4 -4
- package/dist/archive-run-plan-Z4SYE6BP.js +15 -0
- package/dist/{archive-scenario-V5UNYK26.js → archive-scenario-A6QV5LOW.js} +4 -4
- package/dist/archive-scenario-FXEYQNEH.js +19 -0
- package/dist/archive-test-suite-5ADQ3KPQ.js +15 -0
- package/dist/{archive-test-suite-O7FLDMXK.js → archive-test-suite-NKZDZY3D.js} +4 -4
- package/dist/assign-prompt-tag-5IUZXJ2T.js +23 -0
- package/dist/{assign-prompt-tag-Q46WRB6P.js → assign-prompt-tag-HBZLBIFD.js} +8 -4
- package/dist/{chunk-OJLYYJWI.js → chunk-3OCG3QPU.js} +7 -10
- package/dist/chunk-3YLN3ATJ.js +241 -0
- package/dist/chunk-5FNCQRCX.js +91 -0
- package/dist/{chunk-UF6XIGYR.js → chunk-6YZUOD34.js} +2 -5
- package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
- package/dist/chunk-7VNSRCXO.js +129 -0
- package/dist/{chunk-G4ZAZTZW.js → chunk-B4J3PJLX.js} +11 -10
- package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
- package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
- package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
- package/dist/{chunk-WT4PO4A3.js → chunk-H6WGMG2T.js} +10 -7
- package/dist/{chunk-EYXMLE5X.js → chunk-HGELNIVY.js} +56 -47
- package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
- package/dist/{chunk-RVAE2MEA.js → chunk-I7ATIZED.js} +7 -7
- package/dist/{chunk-S4GVX36W.js → chunk-ILZDO25L.js} +7 -10
- package/dist/{chunk-QRO35SOM.js → chunk-J7PQKBLD.js} +652 -528
- package/dist/{chunk-SR6QPRIE.js → chunk-JRJPH75H.js} +7 -13
- package/dist/chunk-K2I7Z3LZ.js +28 -0
- package/dist/{chunk-UFOYFYI7.js → chunk-NKMTIHIJ.js} +6 -9
- package/dist/{chunk-HV4DWKBI.js → chunk-O7EMWEVJ.js} +2 -4
- package/dist/{chunk-56OGTS24.js → chunk-PTDR56Z3.js} +4 -11
- package/dist/{chunk-JR6DJZOU.js → chunk-RABYBFX5.js} +4 -10
- package/dist/chunk-SUPUUC4W.js +64 -0
- package/dist/{chunk-JTQJRNFJ.js → chunk-SXFC3FNH.js} +4 -4
- package/dist/{chunk-CKNAH5TG.js → chunk-U24EACC4.js} +3 -10
- package/dist/chunk-UNJM3BIL.js +21 -0
- package/dist/{chunk-QAMP3CGR.js → chunk-UTJCWXPZ.js} +4 -4
- package/dist/chunk-UWLE5T2F.js +312 -0
- package/dist/{chunk-6DJDEXET.js → chunk-VMWJD732.js} +6 -12
- package/dist/{chunk-7E4FZIYJ.js → chunk-XUIJYNRJ.js} +1 -1
- package/dist/chunk-Y34DHR5K.js +67 -0
- package/dist/chunk-YCARO42Z.js +516 -0
- package/dist/config-EAKW6F26.js +16 -0
- package/dist/config.cjs +109 -0
- package/dist/config.js +5 -4
- package/dist/{create-agent-JFJ2K6X3.js → create-agent-AYZ3LB3V.js} +4 -4
- package/dist/create-agent-S5ZBCEFT.js +23 -0
- package/dist/create-annotation-LHNCLHYP.js +29 -0
- package/dist/{create-annotation-EUXXQ6NS.js → create-annotation-VUSXULQK.js} +10 -5
- package/dist/{create-api-key-BGBB76JX.js → create-api-key-NNYKARMG.js} +5 -7
- package/dist/create-api-key-T4KSNPKB.js +24 -0
- package/dist/create-dashboard-DHVFMEU4.js +18 -0
- package/dist/{create-dashboard-Z76AIPLS.js → create-dashboard-WTKKS5Z6.js} +4 -4
- package/dist/{create-dataset-FD5VAXU4.js → create-dataset-2MC4SD4O.js} +6 -6
- package/dist/create-dataset-LUP5PVDM.js +22 -0
- package/dist/create-dataset-records-NSKBZP3G.js +20 -0
- package/dist/{create-dataset-records-WQUXXOHI.js → create-dataset-records-W4GLN2FV.js} +5 -7
- package/dist/{create-evaluator-6NV33Z52.js → create-evaluator-643G6LXL.js} +4 -4
- package/dist/create-evaluator-HMTYO5SS.js +27 -0
- package/dist/create-mcp-server.cjs +9513 -0
- package/dist/create-mcp-server.js +2647 -10
- package/dist/create-project-6N7PIYRY.js +44 -0
- package/dist/{create-project-ZQ7TFIO2.js → create-project-KAIC46UY.js} +4 -4
- package/dist/{create-prompt-BS6QRCUU.js → create-prompt-E67LXIYT.js} +5 -7
- package/dist/create-prompt-PKJ7EDRR.js +37 -0
- package/dist/create-prompt-tag-4YO3FSJ3.js +17 -0
- package/dist/{create-prompt-tag-FCQ5ELSQ.js → create-prompt-tag-OPQUEXWB.js} +3 -3
- package/dist/create-scenario-5PJBMAXO.js +33 -0
- package/dist/{create-scenario-DRPTPXU3.js → create-scenario-UEM77OE7.js} +5 -5
- package/dist/{create-test-suite-ZIZCCFJ4.js → create-test-suite-4IPXVSFQ.js} +6 -6
- package/dist/create-test-suite-SZEPVXSE.js +36 -0
- package/dist/create-trigger-5HZSCRAN.js +49 -0
- package/dist/create-trigger-PRELMT6J.js +48 -0
- package/dist/delete-agent-JUIZWAXG.js +18 -0
- package/dist/{delete-agent-SA4JMUZF.js → delete-agent-QMEK3XHK.js} +4 -4
- package/dist/delete-annotation-HY3O2OGR.js +17 -0
- package/dist/{delete-annotation-X3KKK7QY.js → delete-annotation-VKIQWUYW.js} +4 -4
- package/dist/delete-dashboard-76N66XXL.js +18 -0
- package/dist/{delete-dashboard-LYMRPF27.js → delete-dashboard-JVIVHNJM.js} +4 -4
- package/dist/delete-dataset-HQCR66MG.js +18 -0
- package/dist/{delete-dataset-W6EZ44HY.js → delete-dataset-WKRUW4FP.js} +5 -7
- package/dist/{delete-dataset-records-7CNOTALB.js → delete-dataset-records-C2IQFFVQ.js} +5 -7
- package/dist/delete-dataset-records-SDUHQLLM.js +19 -0
- package/dist/delete-evaluator-4SNSCLEE.js +16 -0
- package/dist/delete-evaluator-QP3QHTLN.js +15 -0
- package/dist/delete-prompt-tag-NZ4JQMYG.js +17 -0
- package/dist/{delete-prompt-tag-QB3OCZUV.js → delete-prompt-tag-YYQ4VMAD.js} +3 -3
- package/dist/{delete-workflow-NG2VXYYM.js → delete-workflow-5J46T73T.js} +4 -4
- package/dist/delete-workflow-JSWABL5F.js +17 -0
- package/dist/discover-evaluator-schema-UHWA5HVL.js +120 -0
- package/dist/discover-evaluator-schema-XKCLLCB3.js +118 -0
- package/dist/discover-scenario-schema-NOJY6S7E.js +137 -0
- package/dist/{discover-scenario-schema-W7KBXA4J.js → discover-scenario-schema-OOFIQKOG.js} +37 -17
- package/dist/{discover-schema-L6QDPON3.js → discover-schema-55YJBFGQ.js} +181 -186
- package/dist/discover-schema-A33SLMXW.js +442 -0
- package/dist/get-agent-LJQX7OF4.js +69 -0
- package/dist/{get-agent-7THF7HCU.js → get-agent-OTIYUFZA.js} +15 -11
- package/dist/get-analytics-DCS72353.js +80 -0
- package/dist/get-analytics-IQZKJHLW.js +79 -0
- package/dist/get-dashboard-5NYJEIX2.js +29 -0
- package/dist/{get-dashboard-P4WWVHFU.js → get-dashboard-QMTYDQAZ.js} +4 -4
- package/dist/get-dataset-ALSP7RTX.js +64 -0
- package/dist/get-dataset-X4B5JDG2.js +63 -0
- package/dist/{get-evaluator-RZ44UIN6.js → get-evaluator-ISMC4LLI.js} +4 -4
- package/dist/get-evaluator-XEUZGZCH.js +47 -0
- package/dist/{get-project-QSQEAB33.js → get-project-5VKROSDH.js} +4 -4
- package/dist/get-project-RM6FRCBK.js +26 -0
- package/dist/{get-prompt-GVKXF5NL.js → get-prompt-OWXJZHQQ.js} +53 -58
- package/dist/get-prompt-W52DY36E.js +94 -0
- package/dist/{get-run-plan-NY7J5GRE.js → get-run-plan-BE3M2AUX.js} +7 -9
- package/dist/get-run-plan-RUXQ6PAX.js +58 -0
- package/dist/get-scenario-RNM7BAX2.js +37 -0
- package/dist/{get-scenario-Q3LLQE4T.js → get-scenario-YM4ODWW6.js} +5 -5
- package/dist/get-simulation-run-6GIATQE5.js +69 -0
- package/dist/{get-simulation-run-WINEYDMK.js → get-simulation-run-LCFSMPGQ.js} +26 -22
- package/dist/{get-test-suite-4HKA7OKS.js → get-test-suite-GC2O7YH6.js} +5 -5
- package/dist/get-test-suite-P5LJ6VLF.js +48 -0
- package/dist/get-trace-KBRVV4NN.js +45 -0
- package/dist/{get-trace-RCUV7N4O.js → get-trace-SEF3FMR5.js} +11 -13
- package/dist/get-workflow-7PVED7JE.js +25 -0
- package/dist/{get-workflow-EEOC7Y45.js → get-workflow-YXULW4GC.js} +4 -4
- package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
- package/dist/{http-server-WCDUARTH.js → http-server-IR4QOS43.js} +4071 -347
- package/dist/index.js +58671 -37983
- package/dist/langwatch-api-annotations-6SA4OB4C.js +17 -0
- package/dist/{langwatch-api-annotations-6DHVZWUK.js → langwatch-api-annotations-TBHLCQ5R.js} +4 -4
- package/dist/langwatch-api-dashboards-6EO2VVZW.js +17 -0
- package/dist/{langwatch-api-dashboards-2KJL2M42.js → langwatch-api-dashboards-NHU5BZD7.js} +4 -4
- package/dist/langwatch-api-monitors-CBF3FGIM.js +47 -0
- package/dist/{langwatch-api-monitors-6ISFJ7WX.js → langwatch-api-monitors-YNWA2M5Y.js} +11 -16
- package/dist/langwatch-api-secrets-ADTOJELP.js +56 -0
- package/dist/langwatch-api-secrets-RNFO4LF2.js +55 -0
- package/dist/langwatch-api-triggers-KQDQC6L5.js +22 -0
- package/dist/langwatch-api-triggers-QS7HDIVW.js +23 -0
- package/dist/{langwatch-api-workflows-6UJL5U4Z.js → langwatch-api-workflows-OKC4FXIF.js} +4 -4
- package/dist/langwatch-api-workflows-XGJE6SR5.js +15 -0
- package/dist/{list-agents-AMVDQPQL.js → list-agents-HVYWEQMI.js} +4 -4
- package/dist/list-agents-RBAOCF53.js +42 -0
- package/dist/list-annotations-HJH4NBLD.js +38 -0
- package/dist/{list-annotations-6PR5NLIC.js → list-annotations-J4UAHSUN.js} +10 -5
- package/dist/{list-api-keys-GVPNBIHQ.js → list-api-keys-7UTJRZDG.js} +10 -5
- package/dist/list-api-keys-A2PMV435.js +42 -0
- package/dist/list-dashboard-boards-OPWROHMG.js +33 -0
- package/dist/list-dashboard-boards-U2GJ7GC5.js +34 -0
- package/dist/{list-dashboards-Z3BZKDGF.js → list-dashboards-ROSYFLDQ.js} +4 -4
- package/dist/list-dashboards-RQ635ZU7.js +32 -0
- package/dist/{list-dataset-records-O67HZ35Y.js → list-dataset-records-M5TKA6LK.js} +14 -10
- package/dist/list-dataset-records-WFM7F33C.js +43 -0
- package/dist/{list-datasets-WXZL6UMP.js → list-datasets-B5X4P7BQ.js} +9 -13
- package/dist/list-datasets-THUKQHPX.js +56 -0
- package/dist/{list-evaluators-PAX72WCN.js → list-evaluators-MYH2OVCI.js} +5 -7
- package/dist/list-evaluators-NLVWF6K7.js +32 -0
- package/dist/{list-model-providers-VVLZMLCX.js → list-model-providers-3JUGP4YI.js} +4 -4
- package/dist/list-model-providers-H3XKORFO.js +35 -0
- package/dist/{list-projects-AQVI6SUK.js → list-projects-6EJ5YYEW.js} +5 -7
- package/dist/list-projects-YNNSRMLC.js +40 -0
- package/dist/{list-prompt-tags-WZFBJOHG.js → list-prompt-tags-NVFQO6WX.js} +3 -3
- package/dist/list-prompt-tags-XUQTTAH4.js +23 -0
- package/dist/{list-prompts-BQOHRHYT.js → list-prompts-HSIMMHTF.js} +4 -6
- package/dist/list-prompts-IRI6AIXO.js +30 -0
- package/dist/{list-run-plans-UBAU2DGH.js → list-run-plans-PX2XI6EK.js} +5 -5
- package/dist/list-run-plans-QALLCN2K.js +45 -0
- package/dist/{list-scenarios-MS4IUIVM.js → list-scenarios-QZRPVHS4.js} +13 -11
- package/dist/list-scenarios-SSJQEMJP.js +45 -0
- package/dist/list-simulation-runs-KNOLGMDV.js +53 -0
- package/dist/{list-simulation-runs-D6YF4ZOU.js → list-simulation-runs-OEADLLQR.js} +12 -8
- package/dist/list-test-suites-ANAQBLDG.js +34 -0
- package/dist/{list-test-suites-L7R2O6DR.js → list-test-suites-N4WVLBKK.js} +4 -4
- package/dist/list-trigger-fires-JV3WFYYG.js +19 -0
- package/dist/list-trigger-fires-WTW4DVIW.js +20 -0
- package/dist/list-triggers-SQNIG35Q.js +45 -0
- package/dist/list-triggers-V4Y356AK.js +46 -0
- package/dist/{list-workflows-6MV4XJHF.js → list-workflows-IMSX7SXU.js} +5 -7
- package/dist/list-workflows-ZHTX5LCL.js +33 -0
- package/dist/{rename-prompt-tag-K5LQ4CY6.js → rename-prompt-tag-IQI7MHOI.js} +3 -3
- package/dist/rename-prompt-tag-PA2BRIE6.js +18 -0
- package/dist/{rename-test-suite-NTYHAO5X.js → rename-test-suite-4J7UX5S2.js} +4 -4
- package/dist/rename-test-suite-NNVLMLKY.js +20 -0
- package/dist/report-issue-AS34ZMJF.js +898 -0
- package/dist/{report-issue-RHZZ33IS.js → report-issue-DCZFLGDO.js} +81 -67
- package/dist/{rerun-run-plan-MUDWJBE4.js → rerun-run-plan-TG2V4WM4.js} +5 -5
- package/dist/rerun-run-plan-ZI5OY3VA.js +21 -0
- package/dist/revoke-api-key-3J3ZA4UB.js +15 -0
- package/dist/{revoke-api-key-6LAZ3QZZ.js → revoke-api-key-SFMEFWJC.js} +4 -4
- package/dist/run-agent-W4VJP72Z.js +75 -0
- package/dist/run-agent-YNV6ZHW4.js +74 -0
- package/dist/run-plan-6C77GWG4.js +38 -0
- package/dist/{run-plan-T4ZYOZGA.js → run-plan-PAARQSI4.js} +7 -7
- package/dist/run-query-KJDH544C.js +47 -0
- package/dist/run-query-T4QW2Z5O.js +46 -0
- package/dist/{run-test-suite-L4MZ7G4D.js → run-test-suite-SQJELEZX.js} +6 -6
- package/dist/run-test-suite-STB6NUJM.js +25 -0
- package/dist/{run-workflow-DFIS23AP.js → run-workflow-D6PQNBI6.js} +4 -4
- package/dist/run-workflow-SP32SO5M.js +36 -0
- package/dist/search-traces-HCBGOG6R.js +170 -0
- package/dist/search-traces-HSTQ6WTQ.js +171 -0
- package/dist/{set-model-provider-XRNMFOVR.js → set-model-provider-GF7NXUJA.js} +4 -4
- package/dist/set-model-provider-KDQ7C4EZ.js +33 -0
- package/dist/{update-agent-DUWNYBNA.js → update-agent-DWG43T2P.js} +4 -4
- package/dist/update-agent-MXNOBS4H.js +20 -0
- package/dist/update-dashboard-widget-CJKJLCDY.js +71 -0
- package/dist/update-dashboard-widget-CYQDS2NR.js +70 -0
- package/dist/update-dataset-DQH3OHOU.js +22 -0
- package/dist/{update-dataset-YSOMDCOB.js → update-dataset-SQZ6T4WX.js} +6 -6
- package/dist/{update-dataset-record-DEA2ITYR.js → update-dataset-record-3AT4IPBC.js} +4 -4
- package/dist/update-dataset-record-7PLDGTMR.js +19 -0
- package/dist/update-evaluator-4LFTKFPT.js +24 -0
- package/dist/{update-evaluator-NH7Q5GWV.js → update-evaluator-IGTX6PX4.js} +4 -4
- package/dist/{update-project-Q26FBSYH.js → update-project-PLJIOZS6.js} +4 -4
- package/dist/update-project-QVHSJRUP.js +24 -0
- package/dist/update-prompt-GDKRYJI3.js +140 -0
- package/dist/{update-prompt-ZQQ2C3KU.js → update-prompt-MY263DYF.js} +27 -29
- package/dist/update-scenario-7KA3JDXA.js +34 -0
- package/dist/{update-scenario-WUX34JAR.js → update-scenario-MOHRQKAQ.js} +5 -5
- package/package.json +35 -39
- package/pyproject.toml +8 -8
- package/src/config.d.ts +4 -0
- package/src/config.ts +20 -29
- package/src/create-mcp-server.ts +755 -609
- package/src/documentation-fetch.ts +21 -20
- package/src/http-security.ts +166 -135
- package/src/http-server.ts +189 -224
- package/src/index.ts +14 -16
- package/src/langwatch-api-agents.ts +18 -21
- package/src/langwatch-api-annotations.ts +11 -12
- package/src/langwatch-api-api-keys.ts +8 -9
- package/src/langwatch-api-boards.ts +46 -0
- package/src/langwatch-api-dashboard-widgets.ts +112 -0
- package/src/langwatch-api-dashboards.ts +13 -10
- package/src/langwatch-api-datasets.ts +98 -32
- package/src/langwatch-api-evaluators.ts +13 -19
- package/src/langwatch-api-model-providers.ts +4 -4
- package/src/langwatch-api-monitors.ts +14 -18
- package/src/langwatch-api-projects.ts +27 -9
- package/src/langwatch-api-query.ts +114 -0
- package/src/langwatch-api-run-plans.ts +12 -29
- package/src/langwatch-api-scenarios.ts +9 -11
- package/src/langwatch-api-secrets.ts +31 -24
- package/src/langwatch-api-simulation-runs.ts +6 -8
- package/src/langwatch-api-test-suites.ts +14 -33
- package/src/langwatch-api-triggers.ts +96 -34
- package/src/langwatch-api-workflows.ts +9 -9
- package/src/langwatch-api.ts +108 -124
- package/src/public-http-request.ts +21 -12
- package/src/schemas/analytics-metrics.ts +3 -15
- package/src/schemas/create-dataset.ts +3 -4
- package/src/schemas/run-plan.ts +13 -29
- package/src/schemas/suite-fields.ts +6 -23
- package/src/schemas/triggers.ts +365 -0
- package/src/tools/add-dashboard-widget.ts +63 -0
- package/src/tools/archive-project.ts +2 -4
- package/src/tools/archive-run-plan.ts +2 -4
- package/src/tools/archive-scenario.ts +2 -4
- package/src/tools/archive-test-suite.ts +2 -4
- package/src/tools/assign-prompt-tag.ts +6 -2
- package/src/tools/create-agent.ts +1 -1
- package/src/tools/create-annotation.ts +7 -2
- package/src/tools/create-api-key.ts +4 -6
- package/src/tools/create-dashboard.ts +1 -1
- package/src/tools/create-dataset-records.ts +4 -8
- package/src/tools/create-dataset.ts +5 -7
- package/src/tools/create-evaluator.ts +3 -5
- package/src/tools/create-project.ts +2 -2
- package/src/tools/create-prompt-tag.ts +2 -4
- package/src/tools/create-prompt.ts +9 -18
- package/src/tools/create-scenario.ts +5 -7
- package/src/tools/create-test-suite.ts +4 -9
- package/src/tools/create-trigger.ts +55 -0
- package/src/tools/dashboard-exists.ts +25 -0
- package/src/tools/dashboard-widget-queries.ts +32 -0
- package/src/tools/delete-agent.ts +1 -1
- package/src/tools/delete-annotation.ts +1 -1
- package/src/tools/delete-dashboard.ts +1 -1
- package/src/tools/delete-dataset-records.ts +4 -8
- package/src/tools/delete-dataset.ts +3 -7
- package/src/tools/delete-evaluator.ts +4 -6
- package/src/tools/delete-prompt-tag.ts +2 -4
- package/src/tools/delete-workflow.ts +1 -1
- package/src/tools/discover-evaluator-schema.ts +34 -25
- package/src/tools/discover-scenario-schema.ts +41 -21
- package/src/tools/discover-schema.ts +149 -27
- package/src/tools/experiment-run-status.ts +2 -8
- package/src/tools/format-dataset-mutation.ts +5 -10
- package/src/tools/format-run-plan.ts +7 -21
- package/src/tools/format-scenario.ts +2 -4
- package/src/tools/format-suite-details.ts +6 -12
- package/src/tools/get-agent.ts +15 -6
- package/src/tools/get-analytics.ts +52 -46
- package/src/tools/get-dashboard.ts +1 -1
- package/src/tools/get-dataset.ts +34 -16
- package/src/tools/get-evaluator.ts +4 -11
- package/src/tools/get-experiment-results.ts +219 -186
- package/src/tools/get-project.ts +2 -4
- package/src/tools/get-prompt.ts +63 -84
- package/src/tools/get-run-plan.ts +4 -6
- package/src/tools/get-scenario.ts +4 -6
- package/src/tools/get-simulation-run.ts +27 -24
- package/src/tools/get-test-suite.ts +2 -5
- package/src/tools/get-trace.ts +16 -17
- package/src/tools/get-workflow.ts +1 -1
- package/src/tools/list-agents.ts +1 -1
- package/src/tools/list-annotations.ts +8 -5
- package/src/tools/list-api-keys.ts +7 -2
- package/src/tools/list-dashboard-boards.ts +28 -0
- package/src/tools/list-dashboards.ts +1 -1
- package/src/tools/list-dataset-records.ts +8 -6
- package/src/tools/list-datasets.ts +12 -23
- package/src/tools/list-evaluators.ts +4 -8
- package/src/tools/list-experiment-runs.ts +5 -9
- package/src/tools/list-experiments.ts +5 -11
- package/src/tools/list-model-providers.ts +3 -5
- package/src/tools/list-projects.ts +2 -4
- package/src/tools/list-prompt-tags.ts +3 -3
- package/src/tools/list-prompts.ts +4 -8
- package/src/tools/list-run-plans.ts +2 -2
- package/src/tools/list-scenarios.ts +14 -15
- package/src/tools/list-simulation-runs.ts +8 -4
- package/src/tools/list-test-suites.ts +1 -1
- package/src/tools/list-trigger-fires.ts +17 -0
- package/src/tools/list-triggers.ts +39 -0
- package/src/tools/list-workflows.ts +2 -4
- package/src/tools/rename-prompt-tag.ts +1 -1
- package/src/tools/rename-test-suite.ts +2 -5
- package/src/tools/report-issue.ts +5 -9
- package/src/tools/rerun-run-plan.ts +2 -5
- package/src/tools/revoke-api-key.ts +2 -4
- package/src/tools/run-agent.ts +29 -26
- package/src/tools/run-experiment.ts +36 -37
- package/src/tools/run-plan.ts +4 -7
- package/src/tools/run-query.ts +47 -0
- package/src/tools/run-test-suite.ts +4 -7
- package/src/tools/run-workflow.ts +2 -5
- package/src/tools/search-traces.ts +161 -47
- package/src/tools/set-model-provider.ts +4 -6
- package/src/tools/test-agent.ts +2 -2
- package/src/tools/update-agent.ts +1 -1
- package/src/tools/update-dashboard-widget.ts +97 -0
- package/src/tools/update-dataset-record.ts +1 -1
- package/src/tools/update-dataset.ts +5 -7
- package/src/tools/update-evaluator.ts +3 -5
- package/src/tools/update-project.ts +1 -1
- package/src/tools/update-prompt.ts +44 -59
- package/src/tools/update-scenario.ts +5 -7
- package/src/tools/update-test-suite.ts +6 -11
- package/src/utils/date-parsing.ts +1 -1
- package/src/utils/escape-markdown.ts +3 -8
- package/src/utils/format-evaluations.ts +6 -6
- package/src/utils/markdown-table.ts +58 -0
- package/src/utils/trace-id-shape.ts +20 -0
- package/tsconfig.app.json +24 -0
- package/tsconfig.json +14 -12
- package/vitest.integration.config.js +10 -0
- package/vitest.scenario.config.js +9 -0
- package/.eslintrc.cjs +0 -36
- package/dist/chunk-AN4OUA4D.js +0 -86
- package/dist/chunk-GELJ2MQR.js +0 -226
- package/dist/chunk-K37ZNPXK.js +0 -24
- package/dist/config.d.ts +0 -17
- package/dist/create-mcp-server.d.ts +0 -10
- package/dist/delete-evaluator-RKYC4TNB.js +0 -16
- package/dist/discover-evaluator-schema-ESSHQGPY.js +0 -1912
- package/dist/get-analytics-R6AZD3AW.js +0 -73
- package/dist/get-dataset-AKTYSQDI.js +0 -49
- package/dist/index.d.ts +0 -2
- package/dist/langwatch-api-secrets-OEBD6GBU.js +0 -41
- package/dist/langwatch-api-triggers-5E6DDGX6.js +0 -31
- package/dist/run-agent-CAGWGTYT.js +0 -72
- package/dist/search-traces-4XTJYXIK.js +0 -79
- package/src/__tests__/agent-tools.unit.test.ts +0 -257
- package/src/__tests__/all-tools.integration.test.ts +0 -1872
- package/src/__tests__/config.unit.test.ts +0 -202
- package/src/__tests__/datasets.integration.test.ts +0 -620
- package/src/__tests__/datasets.unit.test.ts +0 -244
- package/src/__tests__/date-parsing.unit.test.ts +0 -78
- package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
- package/src/__tests__/discover-schema.unit.test.ts +0 -118
- package/src/__tests__/docker.integration.test.ts +0 -318
- package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
- package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
- package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
- package/src/__tests__/experiment-status.unit.test.ts +0 -194
- package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
- package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
- package/src/__tests__/http-security-origin.unit.test.ts +0 -97
- package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
- package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
- package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
- package/src/__tests__/http-server-origin.integration.test.ts +0 -169
- package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
- package/src/__tests__/http-transport.integration.test.ts +0 -395
- package/src/__tests__/integration.integration.test.ts +0 -284
- package/src/__tests__/langwatch-api.unit.test.ts +0 -661
- package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
- package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
- package/src/__tests__/prompt-response-types.unit.test.ts +0 -51
- package/src/__tests__/prompts.integration.test.ts +0 -736
- package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
- package/src/__tests__/report-issue.integration.test.ts +0 -147
- package/src/__tests__/run-plan-tools.unit.test.ts +0 -565
- package/src/__tests__/scenario-tools.integration.test.ts +0 -286
- package/src/__tests__/scenario-tools.unit.test.ts +0 -207
- package/src/__tests__/schemas.unit.test.ts +0 -85
- package/src/__tests__/simulation-run-tools.unit.test.ts +0 -116
- package/src/__tests__/support/http-server-harness.ts +0 -138
- package/src/__tests__/test-suite-tools.unit.test.ts +0 -615
- package/src/__tests__/tools.integration.test.ts +0 -896
- package/src/schemas/filter-fields.ts +0 -119
- package/src/schemas/index.ts +0 -9
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
deleteWorkflow
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-NKMTIHIJ.js";
|
|
4
|
+
import "./chunk-UWLE5T2F.js";
|
|
5
|
+
import "./chunk-H6WGMG2T.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/delete-workflow.ts
|
|
@@ -15,4 +15,4 @@ async function handleDeleteWorkflow(params) {
|
|
|
15
15
|
export {
|
|
16
16
|
handleDeleteWorkflow
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=delete-workflow-
|
|
18
|
+
//# sourceMappingURL=delete-workflow-5J46T73T.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
deleteWorkflow
|
|
3
|
+
} from "./chunk-NKMTIHIJ.js";
|
|
4
|
+
import "./chunk-UWLE5T2F.js";
|
|
5
|
+
import "./chunk-H6WGMG2T.js";
|
|
6
|
+
|
|
7
|
+
// src/tools/delete-workflow.ts
|
|
8
|
+
async function handleDeleteWorkflow(params) {
|
|
9
|
+
const result = await deleteWorkflow(params.id);
|
|
10
|
+
return `Workflow archived successfully!
|
|
11
|
+
|
|
12
|
+
**ID**: ${result.id}`;
|
|
13
|
+
}
|
|
14
|
+
export {
|
|
15
|
+
handleDeleteWorkflow
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=delete-workflow-JSWABL5F.js.map
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import "./chunk-SAS5OB7F.js";
|
|
2
|
+
|
|
3
|
+
// src/tools/discover-evaluator-schema.ts
|
|
4
|
+
import {
|
|
5
|
+
AVAILABLE_EVALUATORS
|
|
6
|
+
} from "@langwatch/evaluator-contract";
|
|
7
|
+
function formatEvaluatorSchema(evaluatorType) {
|
|
8
|
+
if (evaluatorType) {
|
|
9
|
+
return formatEvaluatorDetail(evaluatorType);
|
|
10
|
+
}
|
|
11
|
+
return formatEvaluatorOverview();
|
|
12
|
+
}
|
|
13
|
+
function formatEvaluatorOverview() {
|
|
14
|
+
const lines = [];
|
|
15
|
+
lines.push("# Available Evaluator Types\n");
|
|
16
|
+
const byCategory = /* @__PURE__ */ new Map();
|
|
17
|
+
for (const [type, def] of Object.entries(AVAILABLE_EVALUATORS)) {
|
|
18
|
+
const evalDef = def;
|
|
19
|
+
const oneLine = extractFirstLine(evalDef.description);
|
|
20
|
+
const entry = { type, name: evalDef.name, description: oneLine };
|
|
21
|
+
const list = byCategory.get(evalDef.category) ?? [];
|
|
22
|
+
list.push(entry);
|
|
23
|
+
byCategory.set(evalDef.category, list);
|
|
24
|
+
}
|
|
25
|
+
for (const [category, entries] of byCategory) {
|
|
26
|
+
lines.push(`## ${category}
|
|
27
|
+
`);
|
|
28
|
+
for (const entry of entries) {
|
|
29
|
+
lines.push(`- **${entry.type}** (${entry.name}): ${entry.description}`);
|
|
30
|
+
}
|
|
31
|
+
lines.push("");
|
|
32
|
+
}
|
|
33
|
+
lines.push(
|
|
34
|
+
"> Use `discover_schema({ category: 'evaluators', evaluatorType: '<type>' })` for full details on a specific evaluator type."
|
|
35
|
+
);
|
|
36
|
+
return lines.join("\n");
|
|
37
|
+
}
|
|
38
|
+
function settingsSection(settingsEntries) {
|
|
39
|
+
if (settingsEntries.length === 0) return [];
|
|
40
|
+
const lines = ["\n## Settings\n"];
|
|
41
|
+
for (const [key, setting] of settingsEntries) {
|
|
42
|
+
const s = setting;
|
|
43
|
+
const defaultStr = JSON.stringify(s.default);
|
|
44
|
+
const desc = s.description ? ` - ${s.description}` : "";
|
|
45
|
+
lines.push(`- **${key}**${desc}`);
|
|
46
|
+
lines.push(` Default: \`${defaultStr}\``);
|
|
47
|
+
}
|
|
48
|
+
return lines;
|
|
49
|
+
}
|
|
50
|
+
function formatEvaluatorDetail(evaluatorType) {
|
|
51
|
+
const def = AVAILABLE_EVALUATORS[evaluatorType];
|
|
52
|
+
if (!def) {
|
|
53
|
+
return `Unknown evaluator type: "${evaluatorType}". Use \`discover_schema({ category: 'evaluators' })\` to see all available types.`;
|
|
54
|
+
}
|
|
55
|
+
const lines = [];
|
|
56
|
+
lines.push(`# ${def.name} (\`${evaluatorType}\`)
|
|
57
|
+
`);
|
|
58
|
+
lines.push(`**Category**: ${def.category}`);
|
|
59
|
+
lines.push(`**Is Guardrail**: ${def.isGuardrail ? "Yes" : "No"}`);
|
|
60
|
+
if (def.docsUrl) {
|
|
61
|
+
lines.push(`**Docs**: ${def.docsUrl}`);
|
|
62
|
+
}
|
|
63
|
+
lines.push("");
|
|
64
|
+
lines.push(`## Description
|
|
65
|
+
`);
|
|
66
|
+
lines.push(def.description.trim());
|
|
67
|
+
lines.push("\n## Fields\n");
|
|
68
|
+
if (def.requiredFields.length > 0) {
|
|
69
|
+
lines.push(`**Required**: ${def.requiredFields.join(", ")}`);
|
|
70
|
+
} else {
|
|
71
|
+
lines.push("**Required**: none");
|
|
72
|
+
}
|
|
73
|
+
if (def.optionalFields.length > 0) {
|
|
74
|
+
lines.push(`**Optional**: ${def.optionalFields.join(", ")}`);
|
|
75
|
+
}
|
|
76
|
+
const settingsEntries = Object.entries(def.settings);
|
|
77
|
+
lines.push(...settingsSection(settingsEntries));
|
|
78
|
+
if (def.envVars.length > 0) {
|
|
79
|
+
lines.push("\n## Required Environment Variables\n");
|
|
80
|
+
for (const envVar of def.envVars) {
|
|
81
|
+
lines.push(`- \`${envVar}\``);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const resultEntries = Object.entries(def.result);
|
|
85
|
+
if (resultEntries.length > 0) {
|
|
86
|
+
lines.push("\n## Result Fields\n");
|
|
87
|
+
for (const [key, value] of resultEntries) {
|
|
88
|
+
const v = value;
|
|
89
|
+
lines.push(`- **${key}**: ${v.description}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
lines.push("\n## Usage Example\n");
|
|
93
|
+
lines.push("```json");
|
|
94
|
+
lines.push(
|
|
95
|
+
JSON.stringify(
|
|
96
|
+
{
|
|
97
|
+
evaluatorType,
|
|
98
|
+
settings: Object.fromEntries(
|
|
99
|
+
settingsEntries.map(([key, setting]) => [key, setting.default])
|
|
100
|
+
)
|
|
101
|
+
},
|
|
102
|
+
null,
|
|
103
|
+
2
|
|
104
|
+
)
|
|
105
|
+
);
|
|
106
|
+
lines.push("```");
|
|
107
|
+
return lines.join("\n");
|
|
108
|
+
}
|
|
109
|
+
function extractFirstLine(description) {
|
|
110
|
+
const trimmed = description.trim();
|
|
111
|
+
const firstLine = trimmed.split("\n")[0]?.trim() ?? trimmed;
|
|
112
|
+
if (firstLine.length > 120) {
|
|
113
|
+
return firstLine.slice(0, 117) + "...";
|
|
114
|
+
}
|
|
115
|
+
return firstLine;
|
|
116
|
+
}
|
|
117
|
+
export {
|
|
118
|
+
formatEvaluatorSchema
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=discover-evaluator-schema-UHWA5HVL.js.map
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// src/tools/discover-evaluator-schema.ts
|
|
2
|
+
import {
|
|
3
|
+
AVAILABLE_EVALUATORS
|
|
4
|
+
} from "@langwatch/evaluator-contract";
|
|
5
|
+
function formatEvaluatorSchema(evaluatorType) {
|
|
6
|
+
if (evaluatorType) {
|
|
7
|
+
return formatEvaluatorDetail(evaluatorType);
|
|
8
|
+
}
|
|
9
|
+
return formatEvaluatorOverview();
|
|
10
|
+
}
|
|
11
|
+
function formatEvaluatorOverview() {
|
|
12
|
+
const lines = [];
|
|
13
|
+
lines.push("# Available Evaluator Types\n");
|
|
14
|
+
const byCategory = /* @__PURE__ */ new Map();
|
|
15
|
+
for (const [type, def] of Object.entries(AVAILABLE_EVALUATORS)) {
|
|
16
|
+
const evalDef = def;
|
|
17
|
+
const oneLine = extractFirstLine(evalDef.description);
|
|
18
|
+
const entry = { type, name: evalDef.name, description: oneLine };
|
|
19
|
+
const list = byCategory.get(evalDef.category) ?? [];
|
|
20
|
+
list.push(entry);
|
|
21
|
+
byCategory.set(evalDef.category, list);
|
|
22
|
+
}
|
|
23
|
+
for (const [category, entries] of byCategory) {
|
|
24
|
+
lines.push(`## ${category}
|
|
25
|
+
`);
|
|
26
|
+
for (const entry of entries) {
|
|
27
|
+
lines.push(`- **${entry.type}** (${entry.name}): ${entry.description}`);
|
|
28
|
+
}
|
|
29
|
+
lines.push("");
|
|
30
|
+
}
|
|
31
|
+
lines.push(
|
|
32
|
+
"> Use `discover_schema({ category: 'evaluators', evaluatorType: '<type>' })` for full details on a specific evaluator type."
|
|
33
|
+
);
|
|
34
|
+
return lines.join("\n");
|
|
35
|
+
}
|
|
36
|
+
function settingsSection(settingsEntries) {
|
|
37
|
+
if (settingsEntries.length === 0) return [];
|
|
38
|
+
const lines = ["\n## Settings\n"];
|
|
39
|
+
for (const [key, setting] of settingsEntries) {
|
|
40
|
+
const s = setting;
|
|
41
|
+
const defaultStr = JSON.stringify(s.default);
|
|
42
|
+
const desc = s.description ? ` - ${s.description}` : "";
|
|
43
|
+
lines.push(`- **${key}**${desc}`);
|
|
44
|
+
lines.push(` Default: \`${defaultStr}\``);
|
|
45
|
+
}
|
|
46
|
+
return lines;
|
|
47
|
+
}
|
|
48
|
+
function formatEvaluatorDetail(evaluatorType) {
|
|
49
|
+
const def = AVAILABLE_EVALUATORS[evaluatorType];
|
|
50
|
+
if (!def) {
|
|
51
|
+
return `Unknown evaluator type: "${evaluatorType}". Use \`discover_schema({ category: 'evaluators' })\` to see all available types.`;
|
|
52
|
+
}
|
|
53
|
+
const lines = [];
|
|
54
|
+
lines.push(`# ${def.name} (\`${evaluatorType}\`)
|
|
55
|
+
`);
|
|
56
|
+
lines.push(`**Category**: ${def.category}`);
|
|
57
|
+
lines.push(`**Is Guardrail**: ${def.isGuardrail ? "Yes" : "No"}`);
|
|
58
|
+
if (def.docsUrl) {
|
|
59
|
+
lines.push(`**Docs**: ${def.docsUrl}`);
|
|
60
|
+
}
|
|
61
|
+
lines.push("");
|
|
62
|
+
lines.push(`## Description
|
|
63
|
+
`);
|
|
64
|
+
lines.push(def.description.trim());
|
|
65
|
+
lines.push("\n## Fields\n");
|
|
66
|
+
if (def.requiredFields.length > 0) {
|
|
67
|
+
lines.push(`**Required**: ${def.requiredFields.join(", ")}`);
|
|
68
|
+
} else {
|
|
69
|
+
lines.push("**Required**: none");
|
|
70
|
+
}
|
|
71
|
+
if (def.optionalFields.length > 0) {
|
|
72
|
+
lines.push(`**Optional**: ${def.optionalFields.join(", ")}`);
|
|
73
|
+
}
|
|
74
|
+
const settingsEntries = Object.entries(def.settings);
|
|
75
|
+
lines.push(...settingsSection(settingsEntries));
|
|
76
|
+
if (def.envVars.length > 0) {
|
|
77
|
+
lines.push("\n## Required Environment Variables\n");
|
|
78
|
+
for (const envVar of def.envVars) {
|
|
79
|
+
lines.push(`- \`${envVar}\``);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const resultEntries = Object.entries(def.result);
|
|
83
|
+
if (resultEntries.length > 0) {
|
|
84
|
+
lines.push("\n## Result Fields\n");
|
|
85
|
+
for (const [key, value] of resultEntries) {
|
|
86
|
+
const v = value;
|
|
87
|
+
lines.push(`- **${key}**: ${v.description}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
lines.push("\n## Usage Example\n");
|
|
91
|
+
lines.push("```json");
|
|
92
|
+
lines.push(
|
|
93
|
+
JSON.stringify(
|
|
94
|
+
{
|
|
95
|
+
evaluatorType,
|
|
96
|
+
settings: Object.fromEntries(
|
|
97
|
+
settingsEntries.map(([key, setting]) => [key, setting.default])
|
|
98
|
+
)
|
|
99
|
+
},
|
|
100
|
+
null,
|
|
101
|
+
2
|
|
102
|
+
)
|
|
103
|
+
);
|
|
104
|
+
lines.push("```");
|
|
105
|
+
return lines.join("\n");
|
|
106
|
+
}
|
|
107
|
+
function extractFirstLine(description) {
|
|
108
|
+
const trimmed = description.trim();
|
|
109
|
+
const firstLine = trimmed.split("\n")[0]?.trim() ?? trimmed;
|
|
110
|
+
if (firstLine.length > 120) {
|
|
111
|
+
return firstLine.slice(0, 117) + "...";
|
|
112
|
+
}
|
|
113
|
+
return firstLine;
|
|
114
|
+
}
|
|
115
|
+
export {
|
|
116
|
+
formatEvaluatorSchema
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=discover-evaluator-schema-XKCLLCB3.js.map
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// src/tools/discover-scenario-schema.ts
|
|
2
|
+
function formatScenarioSchema() {
|
|
3
|
+
const lines = [];
|
|
4
|
+
lines.push("# Scenario Schema\n");
|
|
5
|
+
lines.push("## Fields\n");
|
|
6
|
+
lines.push(
|
|
7
|
+
'- **name** (required): A short, descriptive name (e.g., "billing dispute resolution", "password reset with 2FA unavailable")'
|
|
8
|
+
);
|
|
9
|
+
lines.push(
|
|
10
|
+
"- **situation** (required): The context that guides the user simulator \u2014 who the user is, what they want, and any constraints (see Writing a Good Situation below)"
|
|
11
|
+
);
|
|
12
|
+
lines.push(
|
|
13
|
+
"- **criteria** (array of strings): Pass/fail conditions a judge evaluates the agent against (see Writing Good Criteria below)"
|
|
14
|
+
);
|
|
15
|
+
lines.push(
|
|
16
|
+
'- **labels** (array of strings): Tags for organizing scenarios (e.g., "auth", "happy-path", "edge-case")'
|
|
17
|
+
);
|
|
18
|
+
lines.push(
|
|
19
|
+
"- **testSuiteId** (string): The test suite the scenario is filed in. Every project has a Default suite."
|
|
20
|
+
);
|
|
21
|
+
lines.push(
|
|
22
|
+
`- **fields** (object): The scenario's value for each field its test suite declares, by identifier (e.g. { "golden_sql": "SELECT ..." }). A text field takes a string, a number field a number, a boolean field true or false. A field the suite does not declare is refused. A blank value skips the evaluators that read it.`
|
|
23
|
+
);
|
|
24
|
+
lines.push("\n## Test Suite Fields\n");
|
|
25
|
+
lines.push(
|
|
26
|
+
"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`:"
|
|
27
|
+
);
|
|
28
|
+
lines.push("```json");
|
|
29
|
+
lines.push(
|
|
30
|
+
'{ "fields": [{ "identifier": "golden_sql", "type": "text" }, { "identifier": "row_limit", "type": "number" }] }'
|
|
31
|
+
);
|
|
32
|
+
lines.push("```");
|
|
33
|
+
lines.push(
|
|
34
|
+
"- **identifier**: lowercase letters, digits and underscores, starting with a letter. situation, criteria, name, input and output are reserved."
|
|
35
|
+
);
|
|
36
|
+
lines.push("- **type**: text, number or boolean.");
|
|
37
|
+
lines.push(
|
|
38
|
+
"- On update, the list replaces the one the suite holds. A field an attached evaluator still reads cannot be removed."
|
|
39
|
+
);
|
|
40
|
+
lines.push("\n## Evaluator Attachments\n");
|
|
41
|
+
lines.push(
|
|
42
|
+
"A saved evaluator attaches to a test suite (and, for checks that read only the conversation or the trace, to a run plan). After every scenario run the platform runs it and stores one result per evaluator on the run. A **required** pass/fail evaluator that fails fails the scenario; a score-only evaluator reports beside the verdict and never gates."
|
|
43
|
+
);
|
|
44
|
+
lines.push("```json");
|
|
45
|
+
lines.push('{ "evaluators": [{');
|
|
46
|
+
lines.push(' "evaluatorId": "<id from platform_list_evaluators>",');
|
|
47
|
+
lines.push(' "required": true,');
|
|
48
|
+
lines.push(' "mappings": {');
|
|
49
|
+
lines.push(
|
|
50
|
+
' "output": { "type": "source", "sourceId": "trace", "path": ["tool_calls", "run_sql", "input"] },'
|
|
51
|
+
);
|
|
52
|
+
lines.push(
|
|
53
|
+
' "expected_output": { "type": "source", "sourceId": "scenario", "path": ["fields", "golden_sql"] }'
|
|
54
|
+
);
|
|
55
|
+
lines.push(" }");
|
|
56
|
+
lines.push("}] }");
|
|
57
|
+
lines.push("```");
|
|
58
|
+
lines.push(
|
|
59
|
+
"Each mapping names where one evaluator input reads its value. Read the evaluator's inputs from `platform_get_evaluator`; every required input needs a mapping before a run. The paths:"
|
|
60
|
+
);
|
|
61
|
+
lines.push(
|
|
62
|
+
'- **conversation**: `["first_user_message"]`, `["last_agent_message"]`, `["transcript"]` (role: content lines) or `["messages"]` (JSON)'
|
|
63
|
+
);
|
|
64
|
+
lines.push(
|
|
65
|
+
'- **scenario**: `["situation"]`, `["criteria"]` or `["fields", "<identifier>"]` (a field the suite declares; not on a run plan)'
|
|
66
|
+
);
|
|
67
|
+
lines.push(
|
|
68
|
+
'- **trace**: `["contexts"]` (the retrieved contexts of the run\'s traces) or `["tool_calls", "<toolName>", "input" | "output"]` (the last matching tool call)'
|
|
69
|
+
);
|
|
70
|
+
lines.push('- a literal: `{ "type": "value", "value": "..." }`');
|
|
71
|
+
lines.push(
|
|
72
|
+
"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`."
|
|
73
|
+
);
|
|
74
|
+
lines.push("\n## Writing a Good Situation\n");
|
|
75
|
+
lines.push("The situation drives the user simulator. Include these elements:");
|
|
76
|
+
lines.push(
|
|
77
|
+
"- **Persona**: Who is the user? (e.g., a stressed small business owner, a confused teenager)"
|
|
78
|
+
);
|
|
79
|
+
lines.push("- **Emotional state**: How are they feeling? (e.g., frustrated, anxious, impatient)");
|
|
80
|
+
lines.push("- **Background/Context**: What happened before this conversation?");
|
|
81
|
+
lines.push("- **Intent**: What do they want to accomplish?");
|
|
82
|
+
lines.push(
|
|
83
|
+
"- **Constraints**: What limitations do they have? (e.g., no phone for 2FA, unfamiliar with technical terms)"
|
|
84
|
+
);
|
|
85
|
+
lines.push("\nExample:");
|
|
86
|
+
lines.push("```");
|
|
87
|
+
lines.push("User is a small business owner stressed about tax deadline.");
|
|
88
|
+
lines.push("They need help categorizing expenses but aren't familiar with");
|
|
89
|
+
lines.push("accounting terms. They appreciate patient explanations and examples.");
|
|
90
|
+
lines.push("They have a spreadsheet of transactions but aren't sure which");
|
|
91
|
+
lines.push("categories apply to their consulting business.");
|
|
92
|
+
lines.push("```");
|
|
93
|
+
lines.push("\n## Writing Good Criteria\n");
|
|
94
|
+
lines.push(
|
|
95
|
+
"Criteria are what the judge uses to pass or fail the agent. Each criterion should be:"
|
|
96
|
+
);
|
|
97
|
+
lines.push('- **Specific and testable** \u2014 not vague like "responds helpfully"');
|
|
98
|
+
lines.push(
|
|
99
|
+
"- **Behavioral** \u2014 describes what the agent should *do*, not how it works internally"
|
|
100
|
+
);
|
|
101
|
+
lines.push("- **Independent** \u2014 each criterion checks one thing");
|
|
102
|
+
lines.push("\nGood criteria patterns:");
|
|
103
|
+
lines.push(
|
|
104
|
+
`- **Information gathering**: "Agent asks for the user's account number before proceeding"`
|
|
105
|
+
);
|
|
106
|
+
lines.push(
|
|
107
|
+
'- **Safety/guardrails**: "Agent does not reveal internal system details or error stack traces"'
|
|
108
|
+
);
|
|
109
|
+
lines.push(
|
|
110
|
+
'- **Clarification**: "Agent asks clarifying questions before taking irreversible action"'
|
|
111
|
+
);
|
|
112
|
+
lines.push('- **Tone**: "Agent maintains a professional and empathetic tone throughout"');
|
|
113
|
+
lines.push(
|
|
114
|
+
'- **Completeness**: "Agent confirms the user understands the solution before ending"'
|
|
115
|
+
);
|
|
116
|
+
lines.push(
|
|
117
|
+
'- **Domain-specific**: "Agent recommends releasing a wild frog rather than keeping it as a pet"'
|
|
118
|
+
);
|
|
119
|
+
lines.push("\nAvoid vague criteria like:");
|
|
120
|
+
lines.push('- "Responds correctly" \u2014 correct how?');
|
|
121
|
+
lines.push('- "Is helpful" \u2014 helpful in what way?');
|
|
122
|
+
lines.push('- "Works well" \u2014 not testable');
|
|
123
|
+
lines.push("\n## Target Types\n");
|
|
124
|
+
lines.push("Scenarios can target different execution backends:");
|
|
125
|
+
lines.push("- **prompt**: Test a prompt template with variable substitution");
|
|
126
|
+
lines.push("- **http**: Test an HTTP endpoint (e.g., a deployed agent API)");
|
|
127
|
+
lines.push("- **code**: Test a code function directly");
|
|
128
|
+
lines.push("\n## Tips\n");
|
|
129
|
+
lines.push("- Start simple, then layer complexity (add constraints, edge cases)");
|
|
130
|
+
lines.push("- Test edge cases: user changes their mind, gives ambiguous input, makes mistakes");
|
|
131
|
+
lines.push("- Use `fetch_scenario_docs` for the full authoring guide and advanced patterns");
|
|
132
|
+
return lines.join("\n");
|
|
133
|
+
}
|
|
134
|
+
export {
|
|
135
|
+
formatScenarioSchema
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=discover-scenario-schema-NOJY6S7E.js.map
|
|
@@ -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
|