@langwatch/mcp-server 2.1.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitignore +7 -0
- package/.npmignore +41 -0
- package/CHANGELOG.md +218 -201
- package/CONTRIBUTING.md +10 -0
- package/README.md +70 -68
- package/dist/add-dashboard-widget-55UI6H22.js +44 -0
- package/dist/add-dashboard-widget-MJHIC3CC.js +45 -0
- package/dist/{archive-project-W3IKI7UL.js → archive-project-K5UD7A6X.js} +4 -4
- package/dist/archive-project-L4PAKT34.js +19 -0
- package/dist/{archive-run-plan-474OKHHU.js → archive-run-plan-5HSQG2HX.js} +4 -4
- package/dist/archive-run-plan-AOKNYQIO.js +15 -0
- package/dist/archive-scenario-2CWJW2VD.js +19 -0
- package/dist/{archive-scenario-V5UNYK26.js → archive-scenario-5IJQESHH.js} +4 -4
- package/dist/{archive-test-suite-O7FLDMXK.js → archive-test-suite-OPB7NFI7.js} +4 -4
- package/dist/archive-test-suite-ZC3TN6VH.js +15 -0
- package/dist/assign-prompt-tag-6DDE6ZZ5.js +23 -0
- package/dist/{assign-prompt-tag-Q46WRB6P.js → assign-prompt-tag-D7O23MJM.js} +8 -4
- package/dist/chunk-3YLN3ATJ.js +241 -0
- package/dist/{chunk-EYXMLE5X.js → chunk-4RX3G62A.js} +56 -47
- package/dist/{chunk-UF6XIGYR.js → chunk-6YZUOD34.js} +2 -5
- package/dist/{chunk-WVI5CJ6S.js → chunk-7AQLPVFL.js} +2 -2
- package/dist/chunk-7CZQDZ2K.js +319 -0
- package/dist/{chunk-RVAE2MEA.js → chunk-7GETGE6B.js} +7 -7
- package/dist/{chunk-OJLYYJWI.js → chunk-AASW2TO2.js} +7 -10
- package/dist/{chunk-QAMP3CGR.js → chunk-B4RFWIUP.js} +4 -4
- package/dist/{chunk-ZXKLPC2E.js → chunk-BIIKE3EI.js} +1 -1
- package/dist/{chunk-G4ZAZTZW.js → chunk-D2HS73VI.js} +7 -10
- package/dist/{chunk-37SMPMQS.js → chunk-DMM3JQ42.js} +7 -2
- package/dist/{chunk-WT4PO4A3.js → chunk-DULFP3MK.js} +10 -7
- package/dist/chunk-EYPJBL7P.js +516 -0
- package/dist/{chunk-NUFPTHKU.js → chunk-FOKVY3BK.js} +1 -1
- package/dist/chunk-GA5JUSPT.js +64 -0
- package/dist/{chunk-UJPXFA26.js → chunk-HHMNZAPD.js} +101 -74
- package/dist/chunk-HLQJXUR6.js +67 -0
- package/dist/{chunk-JTQJRNFJ.js → chunk-KILVK3FS.js} +4 -4
- package/dist/chunk-MOCU5XWF.js +79 -0
- package/dist/chunk-O2WGVCED.js +41 -0
- package/dist/{chunk-HV4DWKBI.js → chunk-O7EMWEVJ.js} +2 -4
- package/dist/{chunk-UFOYFYI7.js → chunk-QXLMHLRC.js} +6 -9
- package/dist/{chunk-QRO35SOM.js → chunk-R5YJIYPF.js} +981 -747
- package/dist/{chunk-JR6DJZOU.js → chunk-RABYBFX5.js} +4 -10
- package/dist/{chunk-SR6QPRIE.js → chunk-RFC2SBEX.js} +7 -13
- package/dist/chunk-SHSVN3SE.js +21 -0
- package/dist/{chunk-CKNAH5TG.js → chunk-U24EACC4.js} +3 -10
- package/dist/{chunk-56OGTS24.js → chunk-VOUGDY2O.js} +4 -11
- package/dist/chunk-WCKZDOGF.js +31 -0
- package/dist/chunk-XQYH52SI.js +129 -0
- package/dist/{chunk-7E4FZIYJ.js → chunk-XUIJYNRJ.js} +1 -1
- package/dist/{chunk-6DJDEXET.js → chunk-YCIUEZVK.js} +6 -12
- package/dist/config-2WQGMAEN.js +16 -0
- package/dist/config.cjs +109 -0
- package/dist/config.js +5 -4
- package/dist/{create-agent-JFJ2K6X3.js → create-agent-6JNLMYQD.js} +4 -4
- package/dist/create-agent-IRZOU4R5.js +23 -0
- package/dist/create-analytics-report-N4L4V5QL.js +19 -0
- package/dist/create-analytics-report-QEHXG7FU.js +18 -0
- package/dist/{create-annotation-EUXXQ6NS.js → create-annotation-CCEGIZ67.js} +10 -5
- package/dist/create-annotation-DTHCMWHB.js +29 -0
- package/dist/{create-api-key-BGBB76JX.js → create-api-key-JKM2DSZO.js} +5 -7
- package/dist/create-api-key-JPEUIXGM.js +24 -0
- package/dist/create-dataset-DJNXYJ5B.js +22 -0
- package/dist/{create-dataset-FD5VAXU4.js → create-dataset-WON4SOTC.js} +6 -6
- package/dist/create-dataset-records-TMEOTLTO.js +20 -0
- package/dist/{create-dataset-records-WQUXXOHI.js → create-dataset-records-UJBW3C7C.js} +5 -7
- package/dist/create-evaluator-N5AEHI4K.js +27 -0
- package/dist/{create-evaluator-6NV33Z52.js → create-evaluator-XYNY2YFY.js} +4 -4
- package/dist/create-mcp-server.cjs +9712 -0
- package/dist/create-mcp-server.js +2757 -10
- package/dist/{create-project-ZQ7TFIO2.js → create-project-EY4XZ7TH.js} +4 -4
- package/dist/create-project-YL345T5L.js +44 -0
- package/dist/{create-prompt-BS6QRCUU.js → create-prompt-JZQNQ7I3.js} +5 -7
- package/dist/create-prompt-ZUMQHHX7.js +37 -0
- package/dist/create-prompt-tag-CJ5FZ436.js +17 -0
- package/dist/{create-prompt-tag-FCQ5ELSQ.js → create-prompt-tag-JFP2Q3PO.js} +3 -3
- package/dist/create-scenario-CQU2SSFB.js +33 -0
- package/dist/{create-scenario-DRPTPXU3.js → create-scenario-S6OWWKJO.js} +5 -5
- package/dist/create-test-suite-OLGCAGJA.js +36 -0
- package/dist/{create-test-suite-ZIZCCFJ4.js → create-test-suite-Y7P2RI4L.js} +6 -6
- package/dist/create-trigger-4CNBTISJ.js +48 -0
- package/dist/create-trigger-RQ653WYF.js +49 -0
- package/dist/dashboards-BA7M6CMO.js +90 -0
- package/dist/dashboards-U663GUIB.js +91 -0
- package/dist/{delete-agent-SA4JMUZF.js → delete-agent-J2Q4DRZ2.js} +4 -4
- package/dist/delete-agent-ZAU4LTXB.js +18 -0
- package/dist/delete-analytics-report-QK6X7P4S.js +19 -0
- package/dist/delete-analytics-report-YUYLDHLL.js +18 -0
- package/dist/delete-annotation-7X4NYXXM.js +17 -0
- package/dist/{delete-annotation-X3KKK7QY.js → delete-annotation-KJOCDLV3.js} +4 -4
- package/dist/{delete-dataset-W6EZ44HY.js → delete-dataset-NXP7ZPPV.js} +5 -7
- package/dist/delete-dataset-RUTZBBVD.js +18 -0
- package/dist/{delete-dataset-records-7CNOTALB.js → delete-dataset-records-4Z7DZCDW.js} +5 -7
- package/dist/delete-dataset-records-75UAR5IS.js +19 -0
- package/dist/delete-evaluator-E3CUNGTQ.js +16 -0
- package/dist/delete-evaluator-RI4GALGX.js +15 -0
- package/dist/delete-prompt-tag-LE3WJPKS.js +17 -0
- package/dist/{delete-prompt-tag-QB3OCZUV.js → delete-prompt-tag-S4KBZTNG.js} +3 -3
- package/dist/delete-workflow-4CZFIQCQ.js +17 -0
- package/dist/{delete-workflow-NG2VXYYM.js → delete-workflow-PWQPDW6H.js} +4 -4
- package/dist/discover-evaluator-schema-UHWA5HVL.js +120 -0
- package/dist/discover-evaluator-schema-XKCLLCB3.js +118 -0
- package/dist/discover-scenario-schema-NOJY6S7E.js +137 -0
- package/dist/{discover-scenario-schema-W7KBXA4J.js → discover-scenario-schema-OOFIQKOG.js} +37 -17
- package/dist/discover-schema-7WHIIATI.js +442 -0
- package/dist/{discover-schema-L6QDPON3.js → discover-schema-J2ANOBKO.js} +181 -186
- package/dist/get-agent-5T3CXQOR.js +69 -0
- package/dist/{get-agent-7THF7HCU.js → get-agent-ZKYQJUQ7.js} +15 -11
- package/dist/get-analytics-4MPEK4KV.js +79 -0
- package/dist/get-analytics-ZLI3A4F5.js +80 -0
- package/dist/get-analytics-report-JCKYMA2S.js +29 -0
- package/dist/get-analytics-report-SKIP2JWH.js +30 -0
- package/dist/get-dataset-APGZBYMH.js +64 -0
- package/dist/get-dataset-LWXDVMVE.js +63 -0
- package/dist/get-evaluator-3A7BJBAB.js +47 -0
- package/dist/{get-evaluator-RZ44UIN6.js → get-evaluator-IWNJINRY.js} +4 -4
- package/dist/get-project-EQVB4LEL.js +26 -0
- package/dist/{get-project-QSQEAB33.js → get-project-RK6AJTEP.js} +4 -4
- package/dist/{get-prompt-GVKXF5NL.js → get-prompt-TLG2T2DS.js} +53 -58
- package/dist/get-prompt-ZER557X3.js +94 -0
- package/dist/get-run-plan-5X7DDJRN.js +58 -0
- package/dist/{get-run-plan-NY7J5GRE.js → get-run-plan-PEHRO5M3.js} +7 -9
- package/dist/{get-scenario-Q3LLQE4T.js → get-scenario-375W5D6I.js} +5 -5
- package/dist/get-scenario-UQX45ZZO.js +37 -0
- package/dist/{get-simulation-run-WINEYDMK.js → get-simulation-run-2NBXJADG.js} +26 -22
- package/dist/get-simulation-run-QZTLGL7W.js +69 -0
- package/dist/{get-test-suite-4HKA7OKS.js → get-test-suite-GVIBDG7K.js} +5 -5
- package/dist/get-test-suite-OODIR3RI.js +48 -0
- package/dist/{get-trace-RCUV7N4O.js → get-trace-AGCHVPJK.js} +11 -13
- package/dist/get-trace-KJLYAZRC.js +45 -0
- package/dist/get-workflow-3TV2YYC5.js +25 -0
- package/dist/{get-workflow-EEOC7Y45.js → get-workflow-7LZSVPP2.js} +4 -4
- package/dist/{http-security-EU3CHTY7.js → http-security-DNLBNQZL.js} +2 -2
- package/dist/{http-server-WCDUARTH.js → http-server-7CCN3EHJ.js} +4249 -325
- package/dist/index.js +59595 -38027
- package/dist/langwatch-api-analytics-reports-6CF6KUET.js +17 -0
- package/dist/langwatch-api-analytics-reports-RPFB5AO5.js +18 -0
- package/dist/{langwatch-api-annotations-6DHVZWUK.js → langwatch-api-annotations-H4AI4TKG.js} +4 -4
- package/dist/langwatch-api-annotations-QSJNUQQS.js +17 -0
- package/dist/langwatch-api-monitors-ENHLOL3S.js +47 -0
- package/dist/{langwatch-api-monitors-6ISFJ7WX.js → langwatch-api-monitors-OHSGADTH.js} +11 -16
- package/dist/langwatch-api-secrets-AGW6UUMD.js +55 -0
- package/dist/langwatch-api-secrets-CLTS766Q.js +56 -0
- package/dist/langwatch-api-triggers-G5UWFNN2.js +22 -0
- package/dist/langwatch-api-triggers-QMR7KEXW.js +23 -0
- package/dist/langwatch-api-workflows-HKTBIKKY.js +15 -0
- package/dist/{langwatch-api-workflows-6UJL5U4Z.js → langwatch-api-workflows-OMROZH2O.js} +4 -4
- package/dist/{list-agents-AMVDQPQL.js → list-agents-BYWDNAHT.js} +4 -4
- package/dist/list-agents-MG24MHZE.js +42 -0
- package/dist/list-analytics-reports-G3EPWGSQ.js +32 -0
- package/dist/list-analytics-reports-PPWIFRES.js +33 -0
- package/dist/list-annotations-QCLGEK5A.js +38 -0
- package/dist/{list-annotations-6PR5NLIC.js → list-annotations-Y4EUBJHG.js} +10 -5
- package/dist/list-api-keys-DAVOBPFK.js +42 -0
- package/dist/{list-api-keys-GVPNBIHQ.js → list-api-keys-JMW5WRXX.js} +10 -5
- package/dist/list-dashboards-2P3VJFRS.js +29 -0
- package/dist/list-dashboards-MW5O3MKH.js +30 -0
- package/dist/list-dataset-records-KEHT7G6Q.js +43 -0
- package/dist/{list-dataset-records-O67HZ35Y.js → list-dataset-records-KMLLMZAZ.js} +14 -10
- package/dist/{list-datasets-WXZL6UMP.js → list-datasets-P3JK2ZHS.js} +9 -13
- package/dist/list-datasets-Z7OOE4KI.js +56 -0
- package/dist/{list-evaluators-PAX72WCN.js → list-evaluators-7RRESBOU.js} +5 -7
- package/dist/list-evaluators-VATJVOHR.js +32 -0
- package/dist/{list-model-providers-VVLZMLCX.js → list-model-providers-OXDRPUCJ.js} +4 -4
- package/dist/list-model-providers-VXQJWDXU.js +35 -0
- package/dist/{list-projects-AQVI6SUK.js → list-projects-HUVK7L3W.js} +5 -7
- package/dist/list-projects-X72ZXVY5.js +40 -0
- package/dist/{list-prompt-tags-WZFBJOHG.js → list-prompt-tags-3I3LWFIR.js} +3 -3
- package/dist/list-prompt-tags-DRHUH2ND.js +23 -0
- package/dist/list-prompts-6DX3QECJ.js +30 -0
- package/dist/{list-prompts-BQOHRHYT.js → list-prompts-PS423RU3.js} +4 -6
- package/dist/list-run-plans-5SXPOV3X.js +45 -0
- package/dist/{list-run-plans-UBAU2DGH.js → list-run-plans-6VNHINPY.js} +5 -5
- package/dist/list-scenarios-EQWCW7Q4.js +45 -0
- package/dist/{list-scenarios-MS4IUIVM.js → list-scenarios-GKNH3YND.js} +13 -11
- package/dist/{list-simulation-runs-D6YF4ZOU.js → list-simulation-runs-KHY7KALI.js} +12 -8
- package/dist/list-simulation-runs-PUDK32C2.js +53 -0
- package/dist/list-test-suites-7H2DRILK.js +34 -0
- package/dist/{list-test-suites-L7R2O6DR.js → list-test-suites-GY56LGLY.js} +4 -4
- package/dist/list-trigger-fires-7RZUP54Y.js +19 -0
- package/dist/list-trigger-fires-OZUF65LI.js +20 -0
- package/dist/list-triggers-BGUCUXTJ.js +45 -0
- package/dist/list-triggers-XC5KMX4C.js +46 -0
- package/dist/list-workflows-55NYC3PC.js +33 -0
- package/dist/{list-workflows-6MV4XJHF.js → list-workflows-HV7FUWZA.js} +5 -7
- package/dist/{rename-prompt-tag-K5LQ4CY6.js → rename-prompt-tag-2I7Z5FCY.js} +3 -3
- package/dist/rename-prompt-tag-SZYTOWDX.js +18 -0
- package/dist/{rename-test-suite-NTYHAO5X.js → rename-test-suite-27AYY33K.js} +4 -4
- package/dist/rename-test-suite-CLIEPZDO.js +20 -0
- package/dist/report-issue-5HSL7CNB.js +924 -0
- package/dist/{report-issue-RHZZ33IS.js → report-issue-N7ND5TM6.js} +107 -67
- package/dist/{rerun-run-plan-MUDWJBE4.js → rerun-run-plan-O3VUZ6CG.js} +5 -5
- package/dist/rerun-run-plan-OJTVVGJI.js +21 -0
- package/dist/{revoke-api-key-6LAZ3QZZ.js → revoke-api-key-BU6BKGCG.js} +4 -4
- package/dist/revoke-api-key-NZNCFOIR.js +15 -0
- package/dist/run-agent-244O4Y5M.js +75 -0
- package/dist/run-agent-HPCGZGYW.js +74 -0
- package/dist/run-plan-2ZPGGZ4H.js +38 -0
- package/dist/{run-plan-T4ZYOZGA.js → run-plan-KSXUYQT3.js} +7 -7
- package/dist/run-query-4LMOQ5UW.js +47 -0
- package/dist/run-query-BQUHIUC2.js +46 -0
- package/dist/{run-test-suite-L4MZ7G4D.js → run-test-suite-P3WLVPXC.js} +6 -6
- package/dist/run-test-suite-UEOMCON6.js +25 -0
- package/dist/run-workflow-EFZ6HG5B.js +36 -0
- package/dist/{run-workflow-DFIS23AP.js → run-workflow-I4IHEN54.js} +4 -4
- package/dist/search-traces-6IR7PR4L.js +170 -0
- package/dist/search-traces-BYML2NQ4.js +171 -0
- package/dist/set-model-provider-RBNGWFVI.js +33 -0
- package/dist/{set-model-provider-XRNMFOVR.js → set-model-provider-SHEVKWRC.js} +4 -4
- package/dist/{update-agent-DUWNYBNA.js → update-agent-PTKTM2B5.js} +4 -4
- package/dist/update-agent-ZPXWRMS2.js +20 -0
- package/dist/update-dashboard-widget-HKCBXH7X.js +62 -0
- package/dist/update-dashboard-widget-IP2TTQ5G.js +63 -0
- package/dist/update-dataset-GHIN6JR3.js +22 -0
- package/dist/{update-dataset-YSOMDCOB.js → update-dataset-IRVMY5PF.js} +6 -6
- package/dist/update-dataset-record-6VI7K2CL.js +19 -0
- package/dist/{update-dataset-record-DEA2ITYR.js → update-dataset-record-Z3L7ACNF.js} +4 -4
- package/dist/update-evaluator-5NLNE6VY.js +24 -0
- package/dist/{update-evaluator-NH7Q5GWV.js → update-evaluator-FEH7H6NS.js} +4 -4
- package/dist/update-project-75H3LDQT.js +24 -0
- package/dist/{update-project-Q26FBSYH.js → update-project-QPR3QX55.js} +4 -4
- package/dist/update-prompt-BCDFTNLK.js +140 -0
- package/dist/{update-prompt-ZQQ2C3KU.js → update-prompt-NPRXYSWA.js} +27 -29
- package/dist/update-scenario-BNOMDCMV.js +34 -0
- package/dist/{update-scenario-WUX34JAR.js → update-scenario-EM5XGMB7.js} +5 -5
- package/package.json +35 -39
- package/pyproject.toml +23 -8
- package/src/config.d.ts +6 -0
- package/src/config.ts +22 -29
- package/src/create-mcp-server.ts +887 -634
- package/src/documentation-fetch.ts +21 -20
- package/src/http-security.ts +166 -135
- package/src/http-server.ts +189 -224
- package/src/index.ts +14 -16
- package/src/langwatch-api-agents.ts +18 -21
- package/src/langwatch-api-analytics-reports.ts +62 -0
- package/src/langwatch-api-annotations.ts +11 -12
- package/src/langwatch-api-api-keys.ts +8 -9
- package/src/langwatch-api-dashboard-widgets.ts +47 -0
- package/src/langwatch-api-dashboards.ts +109 -24
- package/src/langwatch-api-datasets.ts +98 -32
- package/src/langwatch-api-evaluators.ts +13 -19
- package/src/langwatch-api-model-providers.ts +4 -4
- package/src/langwatch-api-monitors.ts +14 -18
- package/src/langwatch-api-projects.ts +10 -9
- package/src/langwatch-api-query.ts +114 -0
- package/src/langwatch-api-run-plans.ts +12 -29
- package/src/langwatch-api-scenarios.ts +9 -11
- package/src/langwatch-api-secrets.ts +31 -24
- package/src/langwatch-api-simulation-runs.ts +6 -8
- package/src/langwatch-api-test-suites.ts +14 -33
- package/src/langwatch-api-triggers.ts +96 -34
- package/src/langwatch-api-workflows.ts +9 -9
- package/src/langwatch-api.ts +118 -124
- package/src/public-http-request.ts +21 -12
- package/src/schemas/analytics-metrics.ts +3 -15
- package/src/schemas/create-dataset.ts +3 -4
- package/src/schemas/run-plan.ts +13 -29
- package/src/schemas/suite-fields.ts +6 -23
- package/src/schemas/triggers.ts +365 -0
- package/src/schemas/widget-sources.ts +33 -0
- package/src/tools/add-dashboard-widget.ts +51 -0
- package/src/tools/archive-project.ts +2 -4
- package/src/tools/archive-run-plan.ts +2 -4
- package/src/tools/archive-scenario.ts +2 -4
- package/src/tools/archive-test-suite.ts +2 -4
- package/src/tools/assign-prompt-tag.ts +6 -2
- package/src/tools/create-agent.ts +1 -1
- package/src/tools/create-analytics-report.ts +7 -0
- package/src/tools/create-annotation.ts +7 -2
- package/src/tools/create-api-key.ts +4 -6
- package/src/tools/create-dataset-records.ts +4 -8
- package/src/tools/create-dataset.ts +5 -7
- package/src/tools/create-evaluator.ts +3 -5
- package/src/tools/create-project.ts +2 -2
- package/src/tools/create-prompt-tag.ts +2 -4
- package/src/tools/create-prompt.ts +9 -18
- package/src/tools/create-scenario.ts +5 -7
- package/src/tools/create-test-suite.ts +4 -9
- package/src/tools/create-trigger.ts +55 -0
- package/src/tools/dashboard-widget-queries.ts +45 -0
- package/src/tools/dashboards.ts +104 -0
- package/src/tools/delete-agent.ts +1 -1
- package/src/tools/delete-analytics-report.ts +7 -0
- package/src/tools/delete-annotation.ts +1 -1
- package/src/tools/delete-dataset-records.ts +4 -8
- package/src/tools/delete-dataset.ts +3 -7
- package/src/tools/delete-evaluator.ts +4 -6
- package/src/tools/delete-prompt-tag.ts +2 -4
- package/src/tools/delete-workflow.ts +1 -1
- package/src/tools/discover-evaluator-schema.ts +34 -25
- package/src/tools/discover-scenario-schema.ts +41 -21
- package/src/tools/discover-schema.ts +149 -27
- package/src/tools/experiment-run-status.ts +2 -8
- package/src/tools/format-dataset-mutation.ts +5 -10
- package/src/tools/format-run-plan.ts +7 -21
- package/src/tools/format-scenario.ts +2 -4
- package/src/tools/format-suite-details.ts +6 -12
- package/src/tools/get-agent.ts +15 -6
- package/src/tools/get-analytics-report.ts +23 -0
- package/src/tools/get-analytics.ts +52 -46
- package/src/tools/get-dataset.ts +34 -16
- package/src/tools/get-evaluator.ts +4 -11
- package/src/tools/get-experiment-results.ts +219 -186
- package/src/tools/get-project.ts +2 -4
- package/src/tools/get-prompt.ts +63 -84
- package/src/tools/get-run-plan.ts +4 -6
- package/src/tools/get-scenario.ts +4 -6
- package/src/tools/get-simulation-run.ts +27 -24
- package/src/tools/get-test-suite.ts +2 -5
- package/src/tools/get-trace.ts +16 -17
- package/src/tools/get-workflow.ts +1 -1
- package/src/tools/list-agents.ts +1 -1
- package/src/tools/list-analytics-reports.ts +27 -0
- package/src/tools/list-annotations.ts +8 -5
- package/src/tools/list-api-keys.ts +7 -2
- package/src/tools/list-dashboards.ts +20 -21
- package/src/tools/list-dataset-records.ts +8 -6
- package/src/tools/list-datasets.ts +12 -23
- package/src/tools/list-evaluators.ts +4 -8
- package/src/tools/list-experiment-runs.ts +5 -9
- package/src/tools/list-experiments.ts +5 -11
- package/src/tools/list-model-providers.ts +3 -5
- package/src/tools/list-projects.ts +2 -4
- package/src/tools/list-prompt-tags.ts +3 -3
- package/src/tools/list-prompts.ts +4 -8
- package/src/tools/list-run-plans.ts +2 -2
- package/src/tools/list-scenarios.ts +14 -15
- package/src/tools/list-simulation-runs.ts +8 -4
- package/src/tools/list-test-suites.ts +1 -1
- package/src/tools/list-trigger-fires.ts +17 -0
- package/src/tools/list-triggers.ts +39 -0
- package/src/tools/list-workflows.ts +2 -4
- package/src/tools/rename-prompt-tag.ts +1 -1
- package/src/tools/rename-test-suite.ts +2 -5
- package/src/tools/report-issue.ts +7 -9
- package/src/tools/rerun-run-plan.ts +2 -5
- package/src/tools/revoke-api-key.ts +2 -4
- package/src/tools/run-agent.ts +29 -26
- package/src/tools/run-experiment.ts +37 -34
- package/src/tools/run-plan.ts +4 -7
- package/src/tools/run-query.ts +47 -0
- package/src/tools/run-test-suite.ts +4 -7
- package/src/tools/run-workflow.ts +2 -5
- package/src/tools/search-traces.ts +161 -47
- package/src/tools/set-model-provider.ts +4 -6
- package/src/tools/test-agent.ts +2 -2
- package/src/tools/update-agent.ts +1 -1
- package/src/tools/update-dashboard-widget.ts +86 -0
- package/src/tools/update-dataset-record.ts +1 -1
- package/src/tools/update-dataset.ts +5 -7
- package/src/tools/update-evaluator.ts +3 -5
- package/src/tools/update-project.ts +1 -1
- package/src/tools/update-prompt.ts +44 -59
- package/src/tools/update-scenario.ts +5 -7
- package/src/tools/update-test-suite.ts +6 -11
- package/src/utils/date-parsing.ts +1 -1
- package/src/utils/escape-markdown.ts +3 -8
- package/src/utils/format-evaluations.ts +6 -6
- package/src/utils/markdown-table.ts +58 -0
- package/src/utils/trace-id-shape.ts +20 -0
- package/tsconfig.app.json +24 -0
- package/tsconfig.json +14 -12
- package/uv.lock +667 -341
- package/vitest.integration.config.js +10 -0
- package/vitest.scenario.config.js +9 -0
- package/.eslintrc.cjs +0 -36
- package/dist/chunk-AN4OUA4D.js +0 -86
- package/dist/chunk-GELJ2MQR.js +0 -226
- package/dist/chunk-K37ZNPXK.js +0 -24
- package/dist/chunk-S4GVX36W.js +0 -39
- package/dist/config.d.ts +0 -17
- package/dist/create-dashboard-Z76AIPLS.js +0 -19
- package/dist/create-mcp-server.d.ts +0 -10
- package/dist/delete-dashboard-LYMRPF27.js +0 -19
- package/dist/delete-evaluator-RKYC4TNB.js +0 -16
- package/dist/discover-evaluator-schema-ESSHQGPY.js +0 -1912
- package/dist/get-analytics-R6AZD3AW.js +0 -73
- package/dist/get-dashboard-P4WWVHFU.js +0 -30
- package/dist/get-dataset-AKTYSQDI.js +0 -49
- package/dist/index.d.ts +0 -2
- package/dist/langwatch-api-dashboards-2KJL2M42.js +0 -18
- package/dist/langwatch-api-secrets-OEBD6GBU.js +0 -41
- package/dist/langwatch-api-triggers-5E6DDGX6.js +0 -31
- package/dist/list-dashboards-Z3BZKDGF.js +0 -33
- package/dist/run-agent-CAGWGTYT.js +0 -72
- package/dist/search-traces-4XTJYXIK.js +0 -79
- package/src/__tests__/agent-tools.unit.test.ts +0 -257
- package/src/__tests__/all-tools.integration.test.ts +0 -1872
- package/src/__tests__/config.unit.test.ts +0 -202
- package/src/__tests__/datasets.integration.test.ts +0 -620
- package/src/__tests__/datasets.unit.test.ts +0 -244
- package/src/__tests__/date-parsing.unit.test.ts +0 -78
- package/src/__tests__/discover-evaluator-schema.unit.test.ts +0 -89
- package/src/__tests__/discover-schema.unit.test.ts +0 -118
- package/src/__tests__/docker.integration.test.ts +0 -318
- package/src/__tests__/documentation-fetch-security.integration.test.ts +0 -182
- package/src/__tests__/evaluator-tools.unit.test.ts +0 -262
- package/src/__tests__/experiment-list-tools.unit.test.ts +0 -157
- package/src/__tests__/experiment-status.unit.test.ts +0 -194
- package/src/__tests__/feature-map-tool-drift.unit.test.ts +0 -93
- package/src/__tests__/get-experiment-results.unit.test.ts +0 -313
- package/src/__tests__/http-security-origin.unit.test.ts +0 -97
- package/src/__tests__/http-security-sessions.unit.test.ts +0 -209
- package/src/__tests__/http-security-verifier.unit.test.ts +0 -248
- package/src/__tests__/http-server-allocation.integration.test.ts +0 -279
- package/src/__tests__/http-server-origin.integration.test.ts +0 -169
- package/src/__tests__/http-server-session-auth.integration.test.ts +0 -341
- package/src/__tests__/http-transport.integration.test.ts +0 -395
- package/src/__tests__/integration.integration.test.ts +0 -284
- package/src/__tests__/langwatch-api.unit.test.ts +0 -661
- package/src/__tests__/model-provider-tools.unit.test.ts +0 -190
- package/src/__tests__/project-api-key-tools.unit.test.ts +0 -451
- package/src/__tests__/prompt-response-types.unit.test.ts +0 -51
- package/src/__tests__/prompts.integration.test.ts +0 -736
- package/src/__tests__/public-http-request-security.integration.test.ts +0 -118
- package/src/__tests__/report-issue.integration.test.ts +0 -147
- package/src/__tests__/run-plan-tools.unit.test.ts +0 -565
- package/src/__tests__/scenario-tools.integration.test.ts +0 -286
- package/src/__tests__/scenario-tools.unit.test.ts +0 -207
- package/src/__tests__/schemas.unit.test.ts +0 -85
- package/src/__tests__/simulation-run-tools.unit.test.ts +0 -116
- package/src/__tests__/support/http-server-harness.ts +0 -138
- package/src/__tests__/test-suite-tools.unit.test.ts +0 -615
- package/src/__tests__/tools.integration.test.ts +0 -896
- package/src/schemas/filter-fields.ts +0 -119
- package/src/schemas/index.ts +0 -9
- package/src/tools/create-dashboard.ts +0 -7
- package/src/tools/delete-dashboard.ts +0 -7
- package/src/tools/get-dashboard.ts +0 -22
|
@@ -1,117 +1,83 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getQueryReference,
|
|
3
|
+
markdownTable
|
|
4
|
+
} from "./chunk-GA5JUSPT.js";
|
|
5
|
+
import "./chunk-FOKVY3BK.js";
|
|
6
|
+
import "./chunk-7CZQDZ2K.js";
|
|
7
|
+
import "./chunk-DULFP3MK.js";
|
|
1
8
|
import "./chunk-SAS5OB7F.js";
|
|
2
9
|
|
|
3
|
-
// src/schemas/
|
|
4
|
-
var
|
|
5
|
-
{
|
|
6
|
-
field: "topics.topics",
|
|
7
|
-
description: "Main topic classification of the trace",
|
|
8
|
-
example: "billing"
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
field: "topics.subtopics",
|
|
12
|
-
description: "Subtopic classification",
|
|
13
|
-
example: "refund-request"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
field: "metadata.user_id",
|
|
17
|
-
description: "User ID from trace metadata",
|
|
18
|
-
example: "user-123"
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
field: "metadata.thread_id",
|
|
22
|
-
description: "Conversation thread ID",
|
|
23
|
-
example: "thread-456"
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
field: "metadata.customer_id",
|
|
27
|
-
description: "Customer/organization ID",
|
|
28
|
-
example: "customer-789"
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
field: "metadata.labels",
|
|
32
|
-
description: "Custom labels attached to traces",
|
|
33
|
-
example: "production"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
field: "metadata.key",
|
|
37
|
-
description: "Custom metadata key",
|
|
38
|
-
example: "environment"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
field: "metadata.value",
|
|
42
|
-
description: "Custom metadata value (used with metadata.key)",
|
|
43
|
-
example: "staging"
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
field: "metadata.prompt_ids",
|
|
47
|
-
description: "Prompt IDs used in the trace"
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
field: "traces.error",
|
|
51
|
-
description: "Whether the trace has errors",
|
|
52
|
-
example: "true"
|
|
53
|
-
},
|
|
10
|
+
// src/schemas/analytics-groups.ts
|
|
11
|
+
var analyticsGroups = [
|
|
54
12
|
{
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
13
|
+
name: "topics.topics",
|
|
14
|
+
label: "Topic",
|
|
15
|
+
description: "Group by topic classification"
|
|
58
16
|
},
|
|
59
17
|
{
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
18
|
+
name: "metadata.user_id",
|
|
19
|
+
label: "User",
|
|
20
|
+
description: "Group by user ID"
|
|
63
21
|
},
|
|
64
22
|
{
|
|
65
|
-
|
|
66
|
-
|
|
23
|
+
name: "metadata.thread_id",
|
|
24
|
+
label: "Thread",
|
|
25
|
+
description: "Group by conversation thread"
|
|
67
26
|
},
|
|
68
27
|
{
|
|
69
|
-
|
|
70
|
-
|
|
28
|
+
name: "metadata.customer_id",
|
|
29
|
+
label: "Customer ID",
|
|
30
|
+
description: "Group by customer/organization"
|
|
71
31
|
},
|
|
72
32
|
{
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
33
|
+
name: "metadata.labels",
|
|
34
|
+
label: "Label",
|
|
35
|
+
description: "Group by custom labels"
|
|
76
36
|
},
|
|
77
37
|
{
|
|
78
|
-
|
|
79
|
-
|
|
38
|
+
name: "metadata.model",
|
|
39
|
+
label: "Model",
|
|
40
|
+
description: "Group by LLM model name"
|
|
80
41
|
},
|
|
81
42
|
{
|
|
82
|
-
|
|
83
|
-
|
|
43
|
+
name: "metadata.span_type",
|
|
44
|
+
label: "Span Type",
|
|
45
|
+
description: "Group by span type (llm, tool, agent, etc.)"
|
|
84
46
|
},
|
|
85
47
|
{
|
|
86
|
-
|
|
87
|
-
|
|
48
|
+
name: "sentiment.input_sentiment",
|
|
49
|
+
label: "Input Sentiment",
|
|
50
|
+
description: "Group by detected input sentiment (positive, negative, neutral)"
|
|
88
51
|
},
|
|
89
52
|
{
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
53
|
+
name: "sentiment.thumbs_up_down",
|
|
54
|
+
label: "Thumbs Up/Down",
|
|
55
|
+
description: "Group by user feedback (positive, negative, neutral)"
|
|
93
56
|
},
|
|
94
57
|
{
|
|
95
|
-
|
|
96
|
-
|
|
58
|
+
name: "events.event_type",
|
|
59
|
+
label: "Event Type",
|
|
60
|
+
description: "Group by event type"
|
|
97
61
|
},
|
|
98
62
|
{
|
|
99
|
-
|
|
100
|
-
|
|
63
|
+
name: "evaluations.evaluation_passed",
|
|
64
|
+
label: "Evaluation Passed",
|
|
65
|
+
description: "Group by evaluation pass/fail status"
|
|
101
66
|
},
|
|
102
67
|
{
|
|
103
|
-
|
|
104
|
-
|
|
68
|
+
name: "evaluations.evaluation_label",
|
|
69
|
+
label: "Evaluation Label",
|
|
70
|
+
description: "Group by evaluation label result"
|
|
105
71
|
},
|
|
106
72
|
{
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
73
|
+
name: "evaluations.evaluation_processing_state",
|
|
74
|
+
label: "Evaluation Processing State",
|
|
75
|
+
description: "Group by evaluation processing state"
|
|
110
76
|
},
|
|
111
77
|
{
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
78
|
+
name: "error.has_error",
|
|
79
|
+
label: "Contains Error",
|
|
80
|
+
description: "Group by whether the trace contains an error"
|
|
115
81
|
}
|
|
116
82
|
];
|
|
117
83
|
|
|
@@ -234,17 +200,7 @@ var analyticsMetrics = [
|
|
|
234
200
|
category: "events",
|
|
235
201
|
name: "event_score",
|
|
236
202
|
label: "Event Score",
|
|
237
|
-
allowedAggregations: [
|
|
238
|
-
"terms",
|
|
239
|
-
"avg",
|
|
240
|
-
"sum",
|
|
241
|
-
"min",
|
|
242
|
-
"max",
|
|
243
|
-
"median",
|
|
244
|
-
"p99",
|
|
245
|
-
"p95",
|
|
246
|
-
"p90"
|
|
247
|
-
],
|
|
203
|
+
allowedAggregations: ["terms", "avg", "sum", "min", "max", "median", "p99", "p95", "p90"],
|
|
248
204
|
description: "Numeric score from events (requires event_type key and metrics key)"
|
|
249
205
|
},
|
|
250
206
|
{
|
|
@@ -286,85 +242,19 @@ var analyticsMetrics = [
|
|
|
286
242
|
}
|
|
287
243
|
];
|
|
288
244
|
|
|
289
|
-
// src/schemas/analytics-groups.ts
|
|
290
|
-
var analyticsGroups = [
|
|
291
|
-
{
|
|
292
|
-
name: "topics.topics",
|
|
293
|
-
label: "Topic",
|
|
294
|
-
description: "Group by topic classification"
|
|
295
|
-
},
|
|
296
|
-
{
|
|
297
|
-
name: "metadata.user_id",
|
|
298
|
-
label: "User",
|
|
299
|
-
description: "Group by user ID"
|
|
300
|
-
},
|
|
301
|
-
{
|
|
302
|
-
name: "metadata.thread_id",
|
|
303
|
-
label: "Thread",
|
|
304
|
-
description: "Group by conversation thread"
|
|
305
|
-
},
|
|
306
|
-
{
|
|
307
|
-
name: "metadata.customer_id",
|
|
308
|
-
label: "Customer ID",
|
|
309
|
-
description: "Group by customer/organization"
|
|
310
|
-
},
|
|
311
|
-
{
|
|
312
|
-
name: "metadata.labels",
|
|
313
|
-
label: "Label",
|
|
314
|
-
description: "Group by custom labels"
|
|
315
|
-
},
|
|
316
|
-
{
|
|
317
|
-
name: "metadata.model",
|
|
318
|
-
label: "Model",
|
|
319
|
-
description: "Group by LLM model name"
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
name: "metadata.span_type",
|
|
323
|
-
label: "Span Type",
|
|
324
|
-
description: "Group by span type (llm, tool, agent, etc.)"
|
|
325
|
-
},
|
|
326
|
-
{
|
|
327
|
-
name: "sentiment.input_sentiment",
|
|
328
|
-
label: "Input Sentiment",
|
|
329
|
-
description: "Group by detected input sentiment (positive, negative, neutral)"
|
|
330
|
-
},
|
|
331
|
-
{
|
|
332
|
-
name: "sentiment.thumbs_up_down",
|
|
333
|
-
label: "Thumbs Up/Down",
|
|
334
|
-
description: "Group by user feedback (positive, negative, neutral)"
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
name: "events.event_type",
|
|
338
|
-
label: "Event Type",
|
|
339
|
-
description: "Group by event type"
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
name: "evaluations.evaluation_passed",
|
|
343
|
-
label: "Evaluation Passed",
|
|
344
|
-
description: "Group by evaluation pass/fail status"
|
|
345
|
-
},
|
|
346
|
-
{
|
|
347
|
-
name: "evaluations.evaluation_label",
|
|
348
|
-
label: "Evaluation Label",
|
|
349
|
-
description: "Group by evaluation label result"
|
|
350
|
-
},
|
|
351
|
-
{
|
|
352
|
-
name: "evaluations.evaluation_processing_state",
|
|
353
|
-
label: "Evaluation Processing State",
|
|
354
|
-
description: "Group by evaluation processing state"
|
|
355
|
-
},
|
|
356
|
-
{
|
|
357
|
-
name: "error.has_error",
|
|
358
|
-
label: "Contains Error",
|
|
359
|
-
description: "Group by whether the trace contains an error"
|
|
360
|
-
}
|
|
361
|
-
];
|
|
362
|
-
|
|
363
245
|
// src/tools/discover-schema.ts
|
|
364
|
-
|
|
246
|
+
var PLATFORM_BACKED = /* @__PURE__ */ new Set(["filters", "lwql", "all"]);
|
|
247
|
+
function needsQueryReference(category) {
|
|
248
|
+
return PLATFORM_BACKED.has(category);
|
|
249
|
+
}
|
|
250
|
+
async function formatSchema(category, reference) {
|
|
365
251
|
const sections = [];
|
|
252
|
+
const resolved = needsQueryReference(category) && !reference ? await getQueryReference() : reference;
|
|
366
253
|
if (category === "filters" || category === "all") {
|
|
367
|
-
sections.push(formatFilters());
|
|
254
|
+
sections.push(formatFilters(resolved));
|
|
255
|
+
}
|
|
256
|
+
if (category === "lwql" || category === "all") {
|
|
257
|
+
sections.push(formatLangWatchQL(resolved));
|
|
368
258
|
}
|
|
369
259
|
if (category === "metrics" || category === "all") {
|
|
370
260
|
sections.push(formatMetrics());
|
|
@@ -375,27 +265,133 @@ function formatSchema(category) {
|
|
|
375
265
|
if (category === "groups" || category === "all") {
|
|
376
266
|
sections.push(formatGroups());
|
|
377
267
|
}
|
|
268
|
+
if (category === "all" && resolved) {
|
|
269
|
+
sections.push(formatDecisionTable(resolved));
|
|
270
|
+
}
|
|
378
271
|
return sections.join("\n\n");
|
|
379
272
|
}
|
|
380
|
-
|
|
381
|
-
|
|
273
|
+
var knownValuesCell = (field) => {
|
|
274
|
+
if (field.knownValues.length > 0) return field.knownValues.join(", ");
|
|
275
|
+
return field.facetable ? "open set, read them from GET /api/v1/traces/facets" : "";
|
|
276
|
+
};
|
|
277
|
+
function formatFilters(reference) {
|
|
278
|
+
if (!reference) {
|
|
279
|
+
return "## Trace Filter Fields\n\nUnavailable: the platform could not be reached.";
|
|
280
|
+
}
|
|
281
|
+
const lines = ["## Trace Filter Fields", ""];
|
|
282
|
+
lines.push(
|
|
283
|
+
"Send one of these as the `filter` parameter of `search_traces`, in the language the Trace Explorer's search bar speaks: `status:error AND model:gpt-*`."
|
|
284
|
+
);
|
|
285
|
+
lines.push(
|
|
286
|
+
"The `filters` parameter is the older per-field map and still works; both are combined when you send both."
|
|
287
|
+
);
|
|
288
|
+
lines.push("");
|
|
289
|
+
lines.push(
|
|
290
|
+
markdownTable({
|
|
291
|
+
headers: ["Field", "Type", "Group", "Known values"],
|
|
292
|
+
rows: reference.traceFilter.fields.map((field) => ({
|
|
293
|
+
Field: field.name,
|
|
294
|
+
Type: field.valueType,
|
|
295
|
+
Group: field.group ?? "",
|
|
296
|
+
"Known values": knownValuesCell(field)
|
|
297
|
+
}))
|
|
298
|
+
})
|
|
299
|
+
);
|
|
300
|
+
lines.push("");
|
|
301
|
+
lines.push("### Attribute namespaces", "");
|
|
382
302
|
lines.push(
|
|
383
|
-
|
|
303
|
+
markdownTable({
|
|
304
|
+
headers: ["Prefix", "Matches", "Older spellings"],
|
|
305
|
+
rows: reference.traceFilter.dynamicPrefixes.map((prefix) => ({
|
|
306
|
+
Prefix: `${prefix.prefix}<key>`,
|
|
307
|
+
Matches: prefix.description,
|
|
308
|
+
"Older spellings": prefix.aliases.join(", ")
|
|
309
|
+
}))
|
|
310
|
+
})
|
|
384
311
|
);
|
|
385
|
-
lines.push('Format: `{ "field_name": ["value1", "value2"] }`');
|
|
386
312
|
lines.push("");
|
|
387
|
-
|
|
313
|
+
lines.push("### Syntax", "");
|
|
314
|
+
lines.push(reference.traceFilter.syntax);
|
|
315
|
+
lines.push("");
|
|
316
|
+
lines.push("### Worked filters", "");
|
|
317
|
+
for (const example of reference.examples.filter(
|
|
318
|
+
(candidate) => candidate.language === "trace-filter"
|
|
319
|
+
)) {
|
|
320
|
+
lines.push(`- \`${example.text}\` \u2014 ${example.title}`);
|
|
321
|
+
}
|
|
322
|
+
return lines.join("\n");
|
|
323
|
+
}
|
|
324
|
+
function formatLangWatchQL(reference) {
|
|
325
|
+
if (!reference) {
|
|
326
|
+
return "## Analytics SQL\n\nUnavailable: the platform could not be reached.";
|
|
327
|
+
}
|
|
328
|
+
if (!reference.lwql.enabled) {
|
|
329
|
+
return [
|
|
330
|
+
"## Analytics SQL",
|
|
331
|
+
"",
|
|
332
|
+
"Not enabled for this project, so `run_query` will refuse. Use `search_traces` and `get_analytics` instead."
|
|
333
|
+
].join("\n");
|
|
334
|
+
}
|
|
335
|
+
const lines = ["## Analytics SQL", ""];
|
|
336
|
+
lines.push(
|
|
337
|
+
"Run one read-only SELECT with `run_query`. The statement is executed as written: nothing rewrites it."
|
|
338
|
+
);
|
|
339
|
+
lines.push(
|
|
340
|
+
`Ceilings: ${reference.lwql.limits.maxRowsReturned} rows, ${reference.lwql.limits.maxExecutionTimeSeconds} seconds. ${reference.lwql.limits.pagination}`
|
|
341
|
+
);
|
|
342
|
+
lines.push("");
|
|
343
|
+
for (const view of reference.lwql.schema.views) {
|
|
344
|
+
lines.push(`### ${view.name}`);
|
|
345
|
+
lines.push(`${view.description} One row is: ${view.grain}`);
|
|
388
346
|
lines.push(
|
|
389
|
-
|
|
347
|
+
`Filter on \`${view.timeColumn}\` to prune partitions. Join keys: ${view.joinKeys.join(", ") || "none"}.`
|
|
390
348
|
);
|
|
349
|
+
lines.push("");
|
|
350
|
+
lines.push(
|
|
351
|
+
markdownTable({
|
|
352
|
+
headers: ["Column", "Type", "Available", "Description"],
|
|
353
|
+
rows: view.columns.map((column) => ({
|
|
354
|
+
Column: column.name,
|
|
355
|
+
Type: column.type,
|
|
356
|
+
Available: column.available ? "yes" : `needs ${column.gates.join(", ")}`,
|
|
357
|
+
Description: column.description
|
|
358
|
+
}))
|
|
359
|
+
})
|
|
360
|
+
);
|
|
361
|
+
lines.push("");
|
|
362
|
+
}
|
|
363
|
+
lines.push("### Worked statements", "");
|
|
364
|
+
for (const example of reference.examples.filter((candidate) => candidate.language === "lwql")) {
|
|
365
|
+
lines.push(
|
|
366
|
+
`**${example.title}**${example.available ? "" : ` (needs ${example.requires.gates.join(", ")})`}`
|
|
367
|
+
);
|
|
368
|
+
lines.push("```sql");
|
|
369
|
+
lines.push(example.text);
|
|
370
|
+
lines.push("```");
|
|
371
|
+
for (const parameter of example.parameters) {
|
|
372
|
+
lines.push(`- \`{${parameter.name}:${parameter.type}}\` \u2014 ${parameter.description}`);
|
|
373
|
+
}
|
|
374
|
+
lines.push("");
|
|
391
375
|
}
|
|
392
376
|
return lines.join("\n");
|
|
393
377
|
}
|
|
394
|
-
function
|
|
395
|
-
const lines = ["##
|
|
378
|
+
function formatDecisionTable(reference) {
|
|
379
|
+
const lines = ["## Which one to reach for", ""];
|
|
396
380
|
lines.push(
|
|
397
|
-
|
|
381
|
+
markdownTable({
|
|
382
|
+
headers: ["When you want", "Use", "Why"],
|
|
383
|
+
rows: reference.decisionTable.map((row) => ({
|
|
384
|
+
"When you want": row.when,
|
|
385
|
+
Use: row.use,
|
|
386
|
+
Why: row.why
|
|
387
|
+
}))
|
|
388
|
+
})
|
|
398
389
|
);
|
|
390
|
+
return lines.join("\n");
|
|
391
|
+
}
|
|
392
|
+
function formatMetrics() {
|
|
393
|
+
const lines = ["## Available Metrics", ""];
|
|
394
|
+
lines.push("Use these in `get_analytics` as `metric` parameter in `category.name` format.");
|
|
399
395
|
lines.push("");
|
|
400
396
|
const byCategory = /* @__PURE__ */ new Map();
|
|
401
397
|
for (const m of analyticsMetrics) {
|
|
@@ -433,9 +429,7 @@ function formatAggregations() {
|
|
|
433
429
|
}
|
|
434
430
|
function formatGroups() {
|
|
435
431
|
const lines = ["## Available Group-By Options", ""];
|
|
436
|
-
lines.push(
|
|
437
|
-
"Use these in the `groupBy` parameter of `get_analytics`."
|
|
438
|
-
);
|
|
432
|
+
lines.push("Use these in the `groupBy` parameter of `get_analytics`.");
|
|
439
433
|
lines.push("");
|
|
440
434
|
for (const g of analyticsGroups) {
|
|
441
435
|
lines.push(`- **${g.name}** (${g.label}): ${g.description}`);
|
|
@@ -443,6 +437,7 @@ function formatGroups() {
|
|
|
443
437
|
return lines.join("\n");
|
|
444
438
|
}
|
|
445
439
|
export {
|
|
446
|
-
formatSchema
|
|
440
|
+
formatSchema,
|
|
441
|
+
needsQueryReference
|
|
447
442
|
};
|
|
448
|
-
//# sourceMappingURL=discover-schema-
|
|
443
|
+
//# sourceMappingURL=discover-schema-J2ANOBKO.js.map
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getAgent
|
|
3
|
+
} from "./chunk-EYPJBL7P.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
|
+
|
|
7
|
+
// src/tools/get-agent.ts
|
|
8
|
+
var describeParameter = ({
|
|
9
|
+
name,
|
|
10
|
+
type,
|
|
11
|
+
options,
|
|
12
|
+
default: defaultValue,
|
|
13
|
+
description,
|
|
14
|
+
required
|
|
15
|
+
}) => {
|
|
16
|
+
const parts = [type];
|
|
17
|
+
if (options?.length) parts.push(`one of ${options.join(", ")}`);
|
|
18
|
+
if (defaultValue !== void 0) parts.push(`default ${JSON.stringify(defaultValue)}`);
|
|
19
|
+
if (required) parts.push("required");
|
|
20
|
+
const suffix = description ? `: ${description}` : "";
|
|
21
|
+
return `- **${name}** (${parts.join(", ")})${suffix}`;
|
|
22
|
+
};
|
|
23
|
+
function instancesSection(instances) {
|
|
24
|
+
const lines = [`
|
|
25
|
+
## Instances (${instances.length})
|
|
26
|
+
`];
|
|
27
|
+
for (const instance of instances) {
|
|
28
|
+
const label = instance.label ? ` (${instance.label})` : "";
|
|
29
|
+
lines.push(`- ${instance.hostname || instance.id}${label}, connected ${instance.connectedAt}`);
|
|
30
|
+
}
|
|
31
|
+
return lines;
|
|
32
|
+
}
|
|
33
|
+
async function handleGetAgent({ id }) {
|
|
34
|
+
const agent = await getAgent(id);
|
|
35
|
+
const lines = [];
|
|
36
|
+
lines.push(`# ${agent.name}
|
|
37
|
+
`);
|
|
38
|
+
lines.push(`**ID**: ${agent.id}`);
|
|
39
|
+
lines.push(`**Type**: ${agent.type}`);
|
|
40
|
+
if (agent.environment) lines.push(`**Environment**: ${agent.environment}`);
|
|
41
|
+
if (agent.status) lines.push(`**Status**: ${agent.status}`);
|
|
42
|
+
if (agent.owner?.name) lines.push(`**Owner**: ${agent.owner.name}`);
|
|
43
|
+
else if (agent.hostLabel) lines.push(`**Host**: ${agent.hostLabel}`);
|
|
44
|
+
if (agent.selectable === false) {
|
|
45
|
+
lines.push("**Run**: only its owner can run this agent");
|
|
46
|
+
}
|
|
47
|
+
if (agent.lastSeenAt) lines.push(`**Last seen**: ${agent.lastSeenAt}`);
|
|
48
|
+
lines.push(`**Created**: ${agent.createdAt}`);
|
|
49
|
+
lines.push(`**Updated**: ${agent.updatedAt}`);
|
|
50
|
+
if (agent.parameters && agent.parameters.length > 0) {
|
|
51
|
+
lines.push("\n## Parameters\n");
|
|
52
|
+
for (const parameter of agent.parameters) lines.push(describeParameter(parameter));
|
|
53
|
+
}
|
|
54
|
+
if (agent.instances && agent.instances.length > 0) {
|
|
55
|
+
lines.push(...instancesSection(agent.instances));
|
|
56
|
+
}
|
|
57
|
+
if (agent.config && Object.keys(agent.config).length > 0) {
|
|
58
|
+
lines.push("\n## Config\n");
|
|
59
|
+
lines.push("```json");
|
|
60
|
+
lines.push(JSON.stringify(agent.config, null, 2));
|
|
61
|
+
lines.push("```");
|
|
62
|
+
}
|
|
63
|
+
return lines.join("\n");
|
|
64
|
+
}
|
|
65
|
+
export {
|
|
66
|
+
describeParameter,
|
|
67
|
+
handleGetAgent
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=get-agent-5T3CXQOR.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getAgent
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-4RX3G62A.js";
|
|
4
|
+
import "./chunk-7CZQDZ2K.js";
|
|
5
|
+
import "./chunk-DULFP3MK.js";
|
|
6
6
|
import "./chunk-SAS5OB7F.js";
|
|
7
7
|
|
|
8
8
|
// src/tools/get-agent.ts
|
|
@@ -21,6 +21,16 @@ var describeParameter = ({
|
|
|
21
21
|
const suffix = description ? `: ${description}` : "";
|
|
22
22
|
return `- **${name}** (${parts.join(", ")})${suffix}`;
|
|
23
23
|
};
|
|
24
|
+
function instancesSection(instances) {
|
|
25
|
+
const lines = [`
|
|
26
|
+
## Instances (${instances.length})
|
|
27
|
+
`];
|
|
28
|
+
for (const instance of instances) {
|
|
29
|
+
const label = instance.label ? ` (${instance.label})` : "";
|
|
30
|
+
lines.push(`- ${instance.hostname || instance.id}${label}, connected ${instance.connectedAt}`);
|
|
31
|
+
}
|
|
32
|
+
return lines;
|
|
33
|
+
}
|
|
24
34
|
async function handleGetAgent({ id }) {
|
|
25
35
|
const agent = await getAgent(id);
|
|
26
36
|
const lines = [];
|
|
@@ -43,13 +53,7 @@ async function handleGetAgent({ id }) {
|
|
|
43
53
|
for (const parameter of agent.parameters) lines.push(describeParameter(parameter));
|
|
44
54
|
}
|
|
45
55
|
if (agent.instances && agent.instances.length > 0) {
|
|
46
|
-
lines.push(
|
|
47
|
-
## Instances (${agent.instances.length})
|
|
48
|
-
`);
|
|
49
|
-
for (const instance of agent.instances) {
|
|
50
|
-
const label = instance.label ? ` (${instance.label})` : "";
|
|
51
|
-
lines.push(`- ${instance.hostname || instance.id}${label}, connected ${instance.connectedAt}`);
|
|
52
|
-
}
|
|
56
|
+
lines.push(...instancesSection(agent.instances));
|
|
53
57
|
}
|
|
54
58
|
if (agent.config && Object.keys(agent.config).length > 0) {
|
|
55
59
|
lines.push("\n## Config\n");
|
|
@@ -63,4 +67,4 @@ export {
|
|
|
63
67
|
describeParameter,
|
|
64
68
|
handleGetAgent
|
|
65
69
|
};
|
|
66
|
-
//# sourceMappingURL=get-agent-
|
|
70
|
+
//# sourceMappingURL=get-agent-ZKYQJUQ7.js.map
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseRelativeDate
|
|
3
|
+
} from "./chunk-BIIKE3EI.js";
|
|
4
|
+
import {
|
|
5
|
+
getAnalyticsTimeseries
|
|
6
|
+
} from "./chunk-7CZQDZ2K.js";
|
|
7
|
+
import "./chunk-DULFP3MK.js";
|
|
8
|
+
|
|
9
|
+
// src/tools/get-analytics.ts
|
|
10
|
+
function getGroupedData(bucket, groupBy) {
|
|
11
|
+
const data = bucket[groupBy];
|
|
12
|
+
if (typeof data === "object" && data !== null && !Array.isArray(data)) {
|
|
13
|
+
return data;
|
|
14
|
+
}
|
|
15
|
+
return void 0;
|
|
16
|
+
}
|
|
17
|
+
function groupedPeriodTable({
|
|
18
|
+
currentPeriod,
|
|
19
|
+
groupBy
|
|
20
|
+
}) {
|
|
21
|
+
const lines = ["| Date | Group | Value |", "|------|-------|-------|"];
|
|
22
|
+
for (const bucket of currentPeriod) {
|
|
23
|
+
const groups = getGroupedData(bucket, groupBy);
|
|
24
|
+
if (!groups) continue;
|
|
25
|
+
for (const [groupKey, metrics] of Object.entries(groups)) {
|
|
26
|
+
const value = Object.values(metrics).find((v) => typeof v === "number") ?? "N/A";
|
|
27
|
+
lines.push(`| ${bucket.date} | ${groupKey} | ${value} |`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return lines;
|
|
31
|
+
}
|
|
32
|
+
function periodTable({
|
|
33
|
+
currentPeriod,
|
|
34
|
+
groupBy
|
|
35
|
+
}) {
|
|
36
|
+
if (currentPeriod.length === 0) return ["No data available for this period."];
|
|
37
|
+
if (groupBy && currentPeriod.some((b) => getGroupedData(b, groupBy) !== void 0)) {
|
|
38
|
+
return groupedPeriodTable({ currentPeriod, groupBy });
|
|
39
|
+
}
|
|
40
|
+
const lines = ["| Date | Value |", "|------|-------|"];
|
|
41
|
+
for (const bucket of currentPeriod) {
|
|
42
|
+
const value = Object.entries(bucket).map(([k, v]) => k !== "date" && typeof v === "number" ? v : void 0).find((v) => v !== void 0) ?? "N/A";
|
|
43
|
+
lines.push(`| ${bucket.date} | ${value} |`);
|
|
44
|
+
}
|
|
45
|
+
return lines;
|
|
46
|
+
}
|
|
47
|
+
async function handleGetAnalytics(params) {
|
|
48
|
+
const now = Date.now();
|
|
49
|
+
const startDate = params.startDate ? parseRelativeDate(params.startDate) : now - 7 * 864e5;
|
|
50
|
+
const endDate = params.endDate ? parseRelativeDate(params.endDate) : now;
|
|
51
|
+
const [category, name] = params.metric.includes(".") ? params.metric.split(".", 2) : ["metadata", params.metric];
|
|
52
|
+
const metricKey = `${category}.${name}`;
|
|
53
|
+
const aggregation = params.aggregation ?? "avg";
|
|
54
|
+
const result = await getAnalyticsTimeseries({
|
|
55
|
+
series: [{ metric: metricKey, aggregation }],
|
|
56
|
+
startDate,
|
|
57
|
+
endDate,
|
|
58
|
+
timeZone: params.timeZone ?? "UTC",
|
|
59
|
+
groupBy: params.groupBy,
|
|
60
|
+
filters: params.filters
|
|
61
|
+
});
|
|
62
|
+
const lines = [];
|
|
63
|
+
lines.push(`# Analytics: ${metricKey} (${aggregation})
|
|
64
|
+
`);
|
|
65
|
+
lines.push(
|
|
66
|
+
`Period: ${new Date(startDate).toISOString().split("T")[0]} to ${new Date(endDate).toISOString().split("T")[0]}`
|
|
67
|
+
);
|
|
68
|
+
if (params.groupBy) lines.push(`Grouped by: ${params.groupBy}`);
|
|
69
|
+
lines.push("");
|
|
70
|
+
lines.push(
|
|
71
|
+
...periodTable({ currentPeriod: result.currentPeriod ?? [], groupBy: params.groupBy })
|
|
72
|
+
);
|
|
73
|
+
lines.push("\n> Tip: Use `discover_schema` to see all available metrics and aggregation types.");
|
|
74
|
+
return lines.join("\n");
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
handleGetAnalytics
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=get-analytics-4MPEK4KV.js.map
|