@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
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runWorkflow
|
|
3
|
+
} from "./chunk-NKMTIHIJ.js";
|
|
4
|
+
import "./chunk-UWLE5T2F.js";
|
|
5
|
+
import "./chunk-H6WGMG2T.js";
|
|
6
|
+
|
|
7
|
+
// src/tools/run-workflow.ts
|
|
8
|
+
async function handleRunWorkflow(params) {
|
|
9
|
+
let parsedInput = {};
|
|
10
|
+
if (params.input) {
|
|
11
|
+
try {
|
|
12
|
+
parsedInput = JSON.parse(params.input);
|
|
13
|
+
} catch {
|
|
14
|
+
return "Error: `input` must be a valid JSON object.";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const result = await runWorkflow(params.id, parsedInput);
|
|
18
|
+
const lines = [];
|
|
19
|
+
lines.push(`Workflow "${params.id}" executed successfully.
|
|
20
|
+
`);
|
|
21
|
+
if (typeof result === "object" && result !== null) {
|
|
22
|
+
const output = result.output;
|
|
23
|
+
if (output !== void 0) {
|
|
24
|
+
lines.push("**Output:**");
|
|
25
|
+
lines.push(typeof output === "string" ? output : JSON.stringify(output, null, 2));
|
|
26
|
+
} else {
|
|
27
|
+
lines.push("**Result:**");
|
|
28
|
+
lines.push(JSON.stringify(result, null, 2));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return lines.join("\n");
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
handleRunWorkflow
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=run-workflow-SP32SO5M.js.map
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatEvaluationLines
|
|
3
|
+
} from "./chunk-DMM3JQ42.js";
|
|
4
|
+
import {
|
|
5
|
+
parseRelativeDate
|
|
6
|
+
} from "./chunk-BIIKE3EI.js";
|
|
7
|
+
import {
|
|
8
|
+
searchTraces
|
|
9
|
+
} from "./chunk-UWLE5T2F.js";
|
|
10
|
+
import "./chunk-H6WGMG2T.js";
|
|
11
|
+
|
|
12
|
+
// src/utils/trace-id-shape.ts
|
|
13
|
+
var HEX_ONLY = /^[0-9a-f]+$/i;
|
|
14
|
+
var MIN_TRACE_ID_LENGTH = 8;
|
|
15
|
+
var PREFIXED_TRACE_ID = /^trace_[A-Za-z0-9_-]{8,}$/;
|
|
16
|
+
function looksLikeTraceId(query) {
|
|
17
|
+
const candidate = query.trim();
|
|
18
|
+
if (candidate.includes(" ")) return false;
|
|
19
|
+
if (PREFIXED_TRACE_ID.test(candidate)) return true;
|
|
20
|
+
return HEX_ONLY.test(candidate) && candidate.length >= MIN_TRACE_ID_LENGTH;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// src/tools/search-traces.ts
|
|
24
|
+
var HOUR_MS = 36e5;
|
|
25
|
+
var DAY_MS = 864e5;
|
|
26
|
+
var TEXT_SEARCH_WINDOW_MS = DAY_MS;
|
|
27
|
+
var ID_LOOKUP_WINDOW_MS = 90 * DAY_MS;
|
|
28
|
+
function previewLine({
|
|
29
|
+
label,
|
|
30
|
+
text
|
|
31
|
+
}) {
|
|
32
|
+
const value = text?.value ? String(text.value) : "N/A";
|
|
33
|
+
return `- **${label}**: ${value.slice(0, 100)}${value.length > 100 ? "..." : ""}`;
|
|
34
|
+
}
|
|
35
|
+
function traceLines(trace) {
|
|
36
|
+
const lines = [`### Trace: ${trace.trace_id}`];
|
|
37
|
+
if (trace.formatted_trace) {
|
|
38
|
+
lines.push(trace.formatted_trace);
|
|
39
|
+
} else {
|
|
40
|
+
lines.push(previewLine({ label: "Input", text: trace.input }));
|
|
41
|
+
lines.push(previewLine({ label: "Output", text: trace.output }));
|
|
42
|
+
}
|
|
43
|
+
if (trace.timestamps) {
|
|
44
|
+
lines.push(`- **Time**: ${trace.timestamps.started_at || "N/A"}`);
|
|
45
|
+
}
|
|
46
|
+
if (trace.error) {
|
|
47
|
+
lines.push(`- **Error**: ${JSON.stringify(trace.error)}`);
|
|
48
|
+
}
|
|
49
|
+
if (trace.evaluations && trace.evaluations.length > 0) {
|
|
50
|
+
lines.push(...formatEvaluationLines(trace.evaluations));
|
|
51
|
+
}
|
|
52
|
+
lines.push("");
|
|
53
|
+
return lines;
|
|
54
|
+
}
|
|
55
|
+
function describeSpan({ ms }) {
|
|
56
|
+
if (ms % DAY_MS === 0) {
|
|
57
|
+
const days = ms / DAY_MS;
|
|
58
|
+
return days === 1 ? "24 hours" : `${days} days`;
|
|
59
|
+
}
|
|
60
|
+
const hours = Math.round(ms / HOUR_MS);
|
|
61
|
+
return hours === 1 ? "1 hour" : `${hours} hours`;
|
|
62
|
+
}
|
|
63
|
+
function suggestWiderWindow({ spanMs }) {
|
|
64
|
+
if (spanMs < 7 * DAY_MS) return "7d";
|
|
65
|
+
if (spanMs < 30 * DAY_MS) return "30d";
|
|
66
|
+
if (spanMs < 90 * DAY_MS) return "90d";
|
|
67
|
+
return void 0;
|
|
68
|
+
}
|
|
69
|
+
function buildEmptyResult({
|
|
70
|
+
query,
|
|
71
|
+
traceIds,
|
|
72
|
+
spanMs,
|
|
73
|
+
windowWasDefaulted,
|
|
74
|
+
startDate,
|
|
75
|
+
endDate
|
|
76
|
+
}) {
|
|
77
|
+
const hasTraceIds = (traceIds?.length ?? 0) > 0;
|
|
78
|
+
const lines = [
|
|
79
|
+
hasTraceIds ? "No traces matched the requested trace ids in the searched window." : "No traces found matching your query.",
|
|
80
|
+
""
|
|
81
|
+
];
|
|
82
|
+
const range = `${new Date(startDate).toISOString()} to ${new Date(endDate).toISOString()}`;
|
|
83
|
+
lines.push(
|
|
84
|
+
windowWasDefaulted ? `Searched the last ${describeSpan({ ms: spanMs })} (the default): ${range}.` : `Searched ${range}.`
|
|
85
|
+
);
|
|
86
|
+
lines.push("", "Tips:");
|
|
87
|
+
if (query && looksLikeTraceId(query)) {
|
|
88
|
+
lines.push(
|
|
89
|
+
`- "${query}" looks like a trace id. Free text never matches trace ids \u2014 use \`get_trace\` with traceId: "${query}".`
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
const wider = suggestWiderWindow({ spanMs });
|
|
93
|
+
if (wider) {
|
|
94
|
+
lines.push(
|
|
95
|
+
`- Widen the window with startDate, e.g. startDate: "${wider}". Accepts h (hours), d (days), w (weeks), m (30-day months), or an ISO date.`
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
if (hasTraceIds) {
|
|
99
|
+
lines.push(
|
|
100
|
+
"- Retry with an earlier startDate, or relax the query and filters if you supplied them.",
|
|
101
|
+
"- Looking up one full id? `get_trace` has no time window. A unique 8\u201331 character hex prefix searches the last 90 days."
|
|
102
|
+
);
|
|
103
|
+
} else {
|
|
104
|
+
lines.push(
|
|
105
|
+
"- Looking up a known trace id? `get_trace` takes a traceId. A full id has no time window; a unique 8\u201331 character hex prefix searches the last 90 days.",
|
|
106
|
+
"- To fetch several known trace ids at once, pass `traceIds` instead of `query`."
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
return lines.join("\n");
|
|
110
|
+
}
|
|
111
|
+
async function handleSearchTraces(params) {
|
|
112
|
+
const now = Date.now();
|
|
113
|
+
const hasTraceIds = (params.traceIds?.length ?? 0) > 0;
|
|
114
|
+
const defaultSpanMs = hasTraceIds ? ID_LOOKUP_WINDOW_MS : TEXT_SEARCH_WINDOW_MS;
|
|
115
|
+
const endDate = params.endDate !== void 0 ? parseRelativeDate(params.endDate) : now;
|
|
116
|
+
const startDate = params.startDate !== void 0 ? parseRelativeDate(params.startDate) : endDate - defaultSpanMs;
|
|
117
|
+
if (startDate >= endDate) {
|
|
118
|
+
throw new Error(
|
|
119
|
+
`Invalid trace search window: startDate (${new Date(startDate).toISOString()}) must be before endDate (${new Date(endDate).toISOString()}).`
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
const format = params.format ?? "digest";
|
|
123
|
+
const result = await searchTraces({
|
|
124
|
+
query: params.query,
|
|
125
|
+
traceIds: params.traceIds,
|
|
126
|
+
filters: params.filters,
|
|
127
|
+
// Forwarded as itself: the filter language and the free-text query are two
|
|
128
|
+
// different searches, and the server combines them.
|
|
129
|
+
...params.filter ? { filter: params.filter } : {},
|
|
130
|
+
startDate,
|
|
131
|
+
endDate,
|
|
132
|
+
pageSize: params.pageSize ?? 25,
|
|
133
|
+
scrollId: params.scrollId,
|
|
134
|
+
format
|
|
135
|
+
});
|
|
136
|
+
const traces = result.traces ?? [];
|
|
137
|
+
if (traces.length === 0) {
|
|
138
|
+
return buildEmptyResult({
|
|
139
|
+
query: params.query,
|
|
140
|
+
traceIds: params.traceIds,
|
|
141
|
+
spanMs: endDate - startDate,
|
|
142
|
+
windowWasDefaulted: params.startDate === void 0,
|
|
143
|
+
startDate,
|
|
144
|
+
endDate
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
if (format === "json") {
|
|
148
|
+
return JSON.stringify(result, null, 2);
|
|
149
|
+
}
|
|
150
|
+
const lines = [];
|
|
151
|
+
lines.push(`Found ${result.pagination?.totalHits ?? traces.length} traces:
|
|
152
|
+
`);
|
|
153
|
+
for (const trace of traces) {
|
|
154
|
+
lines.push(...traceLines(trace));
|
|
155
|
+
}
|
|
156
|
+
if (result.pagination?.scrollId) {
|
|
157
|
+
lines.push(
|
|
158
|
+
`
|
|
159
|
+
**More results available.** Use scrollId: "${result.pagination.scrollId}" to get next page.`
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
lines.push(
|
|
163
|
+
'\n> Tip: Use `get_trace` with a traceId for full details. Use `search_traces` with `format: "json"` for raw data. Use `discover_schema` to see available filter fields.'
|
|
164
|
+
);
|
|
165
|
+
return lines.join("\n");
|
|
166
|
+
}
|
|
167
|
+
export {
|
|
168
|
+
handleSearchTraces
|
|
169
|
+
};
|
|
170
|
+
//# sourceMappingURL=search-traces-HCBGOG6R.js.map
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatEvaluationLines
|
|
3
|
+
} from "./chunk-DMM3JQ42.js";
|
|
4
|
+
import {
|
|
5
|
+
parseRelativeDate
|
|
6
|
+
} from "./chunk-BIIKE3EI.js";
|
|
7
|
+
import {
|
|
8
|
+
searchTraces
|
|
9
|
+
} from "./chunk-UWLE5T2F.js";
|
|
10
|
+
import "./chunk-H6WGMG2T.js";
|
|
11
|
+
import "./chunk-SAS5OB7F.js";
|
|
12
|
+
|
|
13
|
+
// src/utils/trace-id-shape.ts
|
|
14
|
+
var HEX_ONLY = /^[0-9a-f]+$/i;
|
|
15
|
+
var MIN_TRACE_ID_LENGTH = 8;
|
|
16
|
+
var PREFIXED_TRACE_ID = /^trace_[A-Za-z0-9_-]{8,}$/;
|
|
17
|
+
function looksLikeTraceId(query) {
|
|
18
|
+
const candidate = query.trim();
|
|
19
|
+
if (candidate.includes(" ")) return false;
|
|
20
|
+
if (PREFIXED_TRACE_ID.test(candidate)) return true;
|
|
21
|
+
return HEX_ONLY.test(candidate) && candidate.length >= MIN_TRACE_ID_LENGTH;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// src/tools/search-traces.ts
|
|
25
|
+
var HOUR_MS = 36e5;
|
|
26
|
+
var DAY_MS = 864e5;
|
|
27
|
+
var TEXT_SEARCH_WINDOW_MS = DAY_MS;
|
|
28
|
+
var ID_LOOKUP_WINDOW_MS = 90 * DAY_MS;
|
|
29
|
+
function previewLine({
|
|
30
|
+
label,
|
|
31
|
+
text
|
|
32
|
+
}) {
|
|
33
|
+
const value = text?.value ? String(text.value) : "N/A";
|
|
34
|
+
return `- **${label}**: ${value.slice(0, 100)}${value.length > 100 ? "..." : ""}`;
|
|
35
|
+
}
|
|
36
|
+
function traceLines(trace) {
|
|
37
|
+
const lines = [`### Trace: ${trace.trace_id}`];
|
|
38
|
+
if (trace.formatted_trace) {
|
|
39
|
+
lines.push(trace.formatted_trace);
|
|
40
|
+
} else {
|
|
41
|
+
lines.push(previewLine({ label: "Input", text: trace.input }));
|
|
42
|
+
lines.push(previewLine({ label: "Output", text: trace.output }));
|
|
43
|
+
}
|
|
44
|
+
if (trace.timestamps) {
|
|
45
|
+
lines.push(`- **Time**: ${trace.timestamps.started_at || "N/A"}`);
|
|
46
|
+
}
|
|
47
|
+
if (trace.error) {
|
|
48
|
+
lines.push(`- **Error**: ${JSON.stringify(trace.error)}`);
|
|
49
|
+
}
|
|
50
|
+
if (trace.evaluations && trace.evaluations.length > 0) {
|
|
51
|
+
lines.push(...formatEvaluationLines(trace.evaluations));
|
|
52
|
+
}
|
|
53
|
+
lines.push("");
|
|
54
|
+
return lines;
|
|
55
|
+
}
|
|
56
|
+
function describeSpan({ ms }) {
|
|
57
|
+
if (ms % DAY_MS === 0) {
|
|
58
|
+
const days = ms / DAY_MS;
|
|
59
|
+
return days === 1 ? "24 hours" : `${days} days`;
|
|
60
|
+
}
|
|
61
|
+
const hours = Math.round(ms / HOUR_MS);
|
|
62
|
+
return hours === 1 ? "1 hour" : `${hours} hours`;
|
|
63
|
+
}
|
|
64
|
+
function suggestWiderWindow({ spanMs }) {
|
|
65
|
+
if (spanMs < 7 * DAY_MS) return "7d";
|
|
66
|
+
if (spanMs < 30 * DAY_MS) return "30d";
|
|
67
|
+
if (spanMs < 90 * DAY_MS) return "90d";
|
|
68
|
+
return void 0;
|
|
69
|
+
}
|
|
70
|
+
function buildEmptyResult({
|
|
71
|
+
query,
|
|
72
|
+
traceIds,
|
|
73
|
+
spanMs,
|
|
74
|
+
windowWasDefaulted,
|
|
75
|
+
startDate,
|
|
76
|
+
endDate
|
|
77
|
+
}) {
|
|
78
|
+
const hasTraceIds = (traceIds?.length ?? 0) > 0;
|
|
79
|
+
const lines = [
|
|
80
|
+
hasTraceIds ? "No traces matched the requested trace ids in the searched window." : "No traces found matching your query.",
|
|
81
|
+
""
|
|
82
|
+
];
|
|
83
|
+
const range = `${new Date(startDate).toISOString()} to ${new Date(endDate).toISOString()}`;
|
|
84
|
+
lines.push(
|
|
85
|
+
windowWasDefaulted ? `Searched the last ${describeSpan({ ms: spanMs })} (the default): ${range}.` : `Searched ${range}.`
|
|
86
|
+
);
|
|
87
|
+
lines.push("", "Tips:");
|
|
88
|
+
if (query && looksLikeTraceId(query)) {
|
|
89
|
+
lines.push(
|
|
90
|
+
`- "${query}" looks like a trace id. Free text never matches trace ids \u2014 use \`get_trace\` with traceId: "${query}".`
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
const wider = suggestWiderWindow({ spanMs });
|
|
94
|
+
if (wider) {
|
|
95
|
+
lines.push(
|
|
96
|
+
`- Widen the window with startDate, e.g. startDate: "${wider}". Accepts h (hours), d (days), w (weeks), m (30-day months), or an ISO date.`
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
if (hasTraceIds) {
|
|
100
|
+
lines.push(
|
|
101
|
+
"- Retry with an earlier startDate, or relax the query and filters if you supplied them.",
|
|
102
|
+
"- Looking up one full id? `get_trace` has no time window. A unique 8\u201331 character hex prefix searches the last 90 days."
|
|
103
|
+
);
|
|
104
|
+
} else {
|
|
105
|
+
lines.push(
|
|
106
|
+
"- Looking up a known trace id? `get_trace` takes a traceId. A full id has no time window; a unique 8\u201331 character hex prefix searches the last 90 days.",
|
|
107
|
+
"- To fetch several known trace ids at once, pass `traceIds` instead of `query`."
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
return lines.join("\n");
|
|
111
|
+
}
|
|
112
|
+
async function handleSearchTraces(params) {
|
|
113
|
+
const now = Date.now();
|
|
114
|
+
const hasTraceIds = (params.traceIds?.length ?? 0) > 0;
|
|
115
|
+
const defaultSpanMs = hasTraceIds ? ID_LOOKUP_WINDOW_MS : TEXT_SEARCH_WINDOW_MS;
|
|
116
|
+
const endDate = params.endDate !== void 0 ? parseRelativeDate(params.endDate) : now;
|
|
117
|
+
const startDate = params.startDate !== void 0 ? parseRelativeDate(params.startDate) : endDate - defaultSpanMs;
|
|
118
|
+
if (startDate >= endDate) {
|
|
119
|
+
throw new Error(
|
|
120
|
+
`Invalid trace search window: startDate (${new Date(startDate).toISOString()}) must be before endDate (${new Date(endDate).toISOString()}).`
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
const format = params.format ?? "digest";
|
|
124
|
+
const result = await searchTraces({
|
|
125
|
+
query: params.query,
|
|
126
|
+
traceIds: params.traceIds,
|
|
127
|
+
filters: params.filters,
|
|
128
|
+
// Forwarded as itself: the filter language and the free-text query are two
|
|
129
|
+
// different searches, and the server combines them.
|
|
130
|
+
...params.filter ? { filter: params.filter } : {},
|
|
131
|
+
startDate,
|
|
132
|
+
endDate,
|
|
133
|
+
pageSize: params.pageSize ?? 25,
|
|
134
|
+
scrollId: params.scrollId,
|
|
135
|
+
format
|
|
136
|
+
});
|
|
137
|
+
const traces = result.traces ?? [];
|
|
138
|
+
if (traces.length === 0) {
|
|
139
|
+
return buildEmptyResult({
|
|
140
|
+
query: params.query,
|
|
141
|
+
traceIds: params.traceIds,
|
|
142
|
+
spanMs: endDate - startDate,
|
|
143
|
+
windowWasDefaulted: params.startDate === void 0,
|
|
144
|
+
startDate,
|
|
145
|
+
endDate
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
if (format === "json") {
|
|
149
|
+
return JSON.stringify(result, null, 2);
|
|
150
|
+
}
|
|
151
|
+
const lines = [];
|
|
152
|
+
lines.push(`Found ${result.pagination?.totalHits ?? traces.length} traces:
|
|
153
|
+
`);
|
|
154
|
+
for (const trace of traces) {
|
|
155
|
+
lines.push(...traceLines(trace));
|
|
156
|
+
}
|
|
157
|
+
if (result.pagination?.scrollId) {
|
|
158
|
+
lines.push(
|
|
159
|
+
`
|
|
160
|
+
**More results available.** Use scrollId: "${result.pagination.scrollId}" to get next page.`
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
lines.push(
|
|
164
|
+
'\n> Tip: Use `get_trace` with a traceId for full details. Use `search_traces` with `format: "json"` for raw data. Use `discover_schema` to see available filter fields.'
|
|
165
|
+
);
|
|
166
|
+
return lines.join("\n");
|
|
167
|
+
}
|
|
168
|
+
export {
|
|
169
|
+
handleSearchTraces
|
|
170
|
+
};
|
|
171
|
+
//# sourceMappingURL=search-traces-HSTQ6WTQ.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
setModelProvider
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-SXFC3FNH.js";
|
|
4
|
+
import "./chunk-UWLE5T2F.js";
|
|
5
|
+
import "./chunk-H6WGMG2T.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/set-model-provider.ts
|
|
@@ -31,4 +31,4 @@ async function handleSetModelProvider(params) {
|
|
|
31
31
|
export {
|
|
32
32
|
handleSetModelProvider
|
|
33
33
|
};
|
|
34
|
-
//# sourceMappingURL=set-model-provider-
|
|
34
|
+
//# sourceMappingURL=set-model-provider-GF7NXUJA.js.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {
|
|
2
|
+
setModelProvider
|
|
3
|
+
} from "./chunk-SXFC3FNH.js";
|
|
4
|
+
import "./chunk-UWLE5T2F.js";
|
|
5
|
+
import "./chunk-H6WGMG2T.js";
|
|
6
|
+
|
|
7
|
+
// src/tools/set-model-provider.ts
|
|
8
|
+
async function handleSetModelProvider(params) {
|
|
9
|
+
const providers = await setModelProvider(params);
|
|
10
|
+
const updated = providers[params.provider];
|
|
11
|
+
if (!updated) {
|
|
12
|
+
throw new Error(
|
|
13
|
+
`Model provider "${params.provider}" was not found in the response. The provider name may be invalid.`
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
const lines = [];
|
|
17
|
+
lines.push("Model provider updated successfully!\n");
|
|
18
|
+
lines.push(`**Provider**: ${params.provider}`);
|
|
19
|
+
lines.push(`**Status**: ${updated?.enabled ? "enabled" : "disabled"}`);
|
|
20
|
+
if (updated?.customKeys) {
|
|
21
|
+
const keyFields = Object.entries(updated.customKeys).map(([k, v]) => `${k}: ${v ? "set" : "not set"}`).join(", ");
|
|
22
|
+
lines.push(`**Keys**: ${keyFields}`);
|
|
23
|
+
}
|
|
24
|
+
if (params.defaultModel) {
|
|
25
|
+
const normalizedModel = params.defaultModel.includes("/") ? params.defaultModel : `${params.provider}/${params.defaultModel}`;
|
|
26
|
+
lines.push(`**Default Model**: ${normalizedModel}`);
|
|
27
|
+
}
|
|
28
|
+
return lines.join("\n");
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
handleSetModelProvider
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=set-model-provider-KDQ7C4EZ.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
updateAgent
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-HGELNIVY.js";
|
|
4
|
+
import "./chunk-UWLE5T2F.js";
|
|
5
|
+
import "./chunk-H6WGMG2T.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/update-agent.ts
|
|
@@ -18,4 +18,4 @@ async function handleUpdateAgent(params) {
|
|
|
18
18
|
export {
|
|
19
19
|
handleUpdateAgent
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=update-agent-
|
|
21
|
+
//# sourceMappingURL=update-agent-DWG43T2P.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
updateAgent
|
|
3
|
+
} from "./chunk-YCARO42Z.js";
|
|
4
|
+
import "./chunk-UWLE5T2F.js";
|
|
5
|
+
import "./chunk-H6WGMG2T.js";
|
|
6
|
+
|
|
7
|
+
// src/tools/update-agent.ts
|
|
8
|
+
async function handleUpdateAgent(params) {
|
|
9
|
+
const { id, ...data } = params;
|
|
10
|
+
const agent = await updateAgent({ id, ...data });
|
|
11
|
+
return `Agent updated successfully!
|
|
12
|
+
|
|
13
|
+
**Name**: ${agent.name}
|
|
14
|
+
**ID**: ${agent.id}
|
|
15
|
+
**Type**: ${agent.type}`;
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
handleUpdateAgent
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=update-agent-MXNOBS4H.js.map
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assertDashboardExists,
|
|
3
|
+
getDashboardWidget,
|
|
4
|
+
normalizeDashboardWidgetQueries,
|
|
5
|
+
updateDashboardWidget
|
|
6
|
+
} from "./chunk-5FNCQRCX.js";
|
|
7
|
+
import "./chunk-K2I7Z3LZ.js";
|
|
8
|
+
import {
|
|
9
|
+
getCurrentProject
|
|
10
|
+
} from "./chunk-B4J3PJLX.js";
|
|
11
|
+
import {
|
|
12
|
+
LangWatchApiError
|
|
13
|
+
} from "./chunk-UWLE5T2F.js";
|
|
14
|
+
import "./chunk-H6WGMG2T.js";
|
|
15
|
+
import "./chunk-SAS5OB7F.js";
|
|
16
|
+
|
|
17
|
+
// src/tools/update-dashboard-widget.ts
|
|
18
|
+
async function handleUpdateDashboardWidget(params) {
|
|
19
|
+
const { dashboardId, widgetId, name, code, description } = params;
|
|
20
|
+
if (name === void 0 && code === void 0 && params.queries === void 0 && description === void 0) {
|
|
21
|
+
throw new Error("Provide at least one of name, code, queries or description to change.");
|
|
22
|
+
}
|
|
23
|
+
const queries = params.queries === void 0 ? void 0 : normalizeDashboardWidgetQueries({ queries: params.queries });
|
|
24
|
+
const project = await getCurrentProject();
|
|
25
|
+
await assertDashboardExists({ projectId: project.id, dashboardId });
|
|
26
|
+
const current = await getWidgetOnDashboard({ projectId: project.id, widgetId, dashboardId });
|
|
27
|
+
const widget = await updateDashboardWidget({
|
|
28
|
+
projectId: project.id,
|
|
29
|
+
widgetId: current.id,
|
|
30
|
+
...name === void 0 ? {} : { name },
|
|
31
|
+
...code === void 0 ? {} : { code },
|
|
32
|
+
...queries === void 0 ? {} : { queries },
|
|
33
|
+
...description === void 0 ? {} : { description }
|
|
34
|
+
});
|
|
35
|
+
return [
|
|
36
|
+
`Widget "${widget.name}" updated on dashboard "${dashboardId}".`,
|
|
37
|
+
`**Widget ID**: ${widget.id}`,
|
|
38
|
+
`**Queries**: ${widget.definition.queries.map((query) => query.name).join(", ") || "(none)"}`,
|
|
39
|
+
"",
|
|
40
|
+
"```json",
|
|
41
|
+
JSON.stringify(widget, null, 2),
|
|
42
|
+
"```"
|
|
43
|
+
].join("\n");
|
|
44
|
+
}
|
|
45
|
+
async function getWidgetOnDashboard({
|
|
46
|
+
projectId,
|
|
47
|
+
widgetId,
|
|
48
|
+
dashboardId
|
|
49
|
+
}) {
|
|
50
|
+
let widget;
|
|
51
|
+
try {
|
|
52
|
+
widget = await getDashboardWidget({ projectId, widgetId });
|
|
53
|
+
} catch (error) {
|
|
54
|
+
if (error instanceof LangWatchApiError && error.status === 404) {
|
|
55
|
+
throw new Error(
|
|
56
|
+
`No widget with ID "${widgetId}" was found in this project. Use the widget ID add_dashboard_widget returned.`
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
if (widget.dashboardId !== dashboardId) {
|
|
62
|
+
throw new Error(
|
|
63
|
+
`Widget "${widgetId}" is not on dashboard "${dashboardId}". Pass the dashboard the widget was added to.`
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
return widget;
|
|
67
|
+
}
|
|
68
|
+
export {
|
|
69
|
+
handleUpdateDashboardWidget
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=update-dashboard-widget-CJKJLCDY.js.map
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assertDashboardExists,
|
|
3
|
+
getDashboardWidget,
|
|
4
|
+
normalizeDashboardWidgetQueries,
|
|
5
|
+
updateDashboardWidget
|
|
6
|
+
} from "./chunk-5FNCQRCX.js";
|
|
7
|
+
import "./chunk-K2I7Z3LZ.js";
|
|
8
|
+
import {
|
|
9
|
+
getCurrentProject
|
|
10
|
+
} from "./chunk-B4J3PJLX.js";
|
|
11
|
+
import {
|
|
12
|
+
LangWatchApiError
|
|
13
|
+
} from "./chunk-UWLE5T2F.js";
|
|
14
|
+
import "./chunk-H6WGMG2T.js";
|
|
15
|
+
|
|
16
|
+
// src/tools/update-dashboard-widget.ts
|
|
17
|
+
async function handleUpdateDashboardWidget(params) {
|
|
18
|
+
const { dashboardId, widgetId, name, code, description } = params;
|
|
19
|
+
if (name === void 0 && code === void 0 && params.queries === void 0 && description === void 0) {
|
|
20
|
+
throw new Error("Provide at least one of name, code, queries or description to change.");
|
|
21
|
+
}
|
|
22
|
+
const queries = params.queries === void 0 ? void 0 : normalizeDashboardWidgetQueries({ queries: params.queries });
|
|
23
|
+
const project = await getCurrentProject();
|
|
24
|
+
await assertDashboardExists({ projectId: project.id, dashboardId });
|
|
25
|
+
const current = await getWidgetOnDashboard({ projectId: project.id, widgetId, dashboardId });
|
|
26
|
+
const widget = await updateDashboardWidget({
|
|
27
|
+
projectId: project.id,
|
|
28
|
+
widgetId: current.id,
|
|
29
|
+
...name === void 0 ? {} : { name },
|
|
30
|
+
...code === void 0 ? {} : { code },
|
|
31
|
+
...queries === void 0 ? {} : { queries },
|
|
32
|
+
...description === void 0 ? {} : { description }
|
|
33
|
+
});
|
|
34
|
+
return [
|
|
35
|
+
`Widget "${widget.name}" updated on dashboard "${dashboardId}".`,
|
|
36
|
+
`**Widget ID**: ${widget.id}`,
|
|
37
|
+
`**Queries**: ${widget.definition.queries.map((query) => query.name).join(", ") || "(none)"}`,
|
|
38
|
+
"",
|
|
39
|
+
"```json",
|
|
40
|
+
JSON.stringify(widget, null, 2),
|
|
41
|
+
"```"
|
|
42
|
+
].join("\n");
|
|
43
|
+
}
|
|
44
|
+
async function getWidgetOnDashboard({
|
|
45
|
+
projectId,
|
|
46
|
+
widgetId,
|
|
47
|
+
dashboardId
|
|
48
|
+
}) {
|
|
49
|
+
let widget;
|
|
50
|
+
try {
|
|
51
|
+
widget = await getDashboardWidget({ projectId, widgetId });
|
|
52
|
+
} catch (error) {
|
|
53
|
+
if (error instanceof LangWatchApiError && error.status === 404) {
|
|
54
|
+
throw new Error(
|
|
55
|
+
`No widget with ID "${widgetId}" was found in this project. Use the widget ID add_dashboard_widget returned.`
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
if (widget.dashboardId !== dashboardId) {
|
|
61
|
+
throw new Error(
|
|
62
|
+
`Widget "${widgetId}" is not on dashboard "${dashboardId}". Pass the dashboard the widget was added to.`
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
return widget;
|
|
66
|
+
}
|
|
67
|
+
export {
|
|
68
|
+
handleUpdateDashboardWidget
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=update-dashboard-widget-CYQDS2NR.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatDatasetMutationDetails
|
|
3
|
+
} from "./chunk-7AQLPVFL.js";
|
|
4
|
+
import {
|
|
5
|
+
updateDataset
|
|
6
|
+
} from "./chunk-7VNSRCXO.js";
|
|
7
|
+
import "./chunk-FOKVY3BK.js";
|
|
8
|
+
import "./chunk-UWLE5T2F.js";
|
|
9
|
+
import "./chunk-H6WGMG2T.js";
|
|
10
|
+
|
|
11
|
+
// src/tools/update-dataset.ts
|
|
12
|
+
async function handleUpdateDataset(params) {
|
|
13
|
+
const result = await updateDataset(params);
|
|
14
|
+
const lines = [];
|
|
15
|
+
lines.push("Dataset updated successfully!\n");
|
|
16
|
+
lines.push(...formatDatasetMutationDetails(result));
|
|
17
|
+
return lines.join("\n");
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
handleUpdateDataset
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=update-dataset-DQH3OHOU.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
formatDatasetMutationDetails
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-NUFPTHKU.js";
|
|
3
|
+
} from "./chunk-7AQLPVFL.js";
|
|
5
4
|
import {
|
|
6
5
|
updateDataset
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-7VNSRCXO.js";
|
|
7
|
+
import "./chunk-FOKVY3BK.js";
|
|
8
|
+
import "./chunk-UWLE5T2F.js";
|
|
9
|
+
import "./chunk-H6WGMG2T.js";
|
|
10
10
|
import "./chunk-SAS5OB7F.js";
|
|
11
11
|
|
|
12
12
|
// src/tools/update-dataset.ts
|
|
@@ -20,4 +20,4 @@ async function handleUpdateDataset(params) {
|
|
|
20
20
|
export {
|
|
21
21
|
handleUpdateDataset
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=update-dataset-
|
|
23
|
+
//# sourceMappingURL=update-dataset-SQZ6T4WX.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
updateDatasetRecord
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-7VNSRCXO.js";
|
|
4
|
+
import "./chunk-UWLE5T2F.js";
|
|
5
|
+
import "./chunk-H6WGMG2T.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/update-dataset-record.ts
|
|
@@ -17,4 +17,4 @@ async function handleUpdateDatasetRecord(params) {
|
|
|
17
17
|
export {
|
|
18
18
|
handleUpdateDatasetRecord
|
|
19
19
|
};
|
|
20
|
-
//# sourceMappingURL=update-dataset-record-
|
|
20
|
+
//# sourceMappingURL=update-dataset-record-3AT4IPBC.js.map
|