From 2bf750c003ed8660cf34fca5663c0371750b1935 Mon Sep 17 00:00:00 2001 From: Gabriel Bernal Date: Wed, 8 Jul 2026 16:30:49 +0200 Subject: [PATCH] feat: update perses dependecies to allow to tag the OLS contributed panels Signed-off-by: Gabriel Bernal --- web/package-lock.json | 483 +++++++----------- web/package.json | 11 +- .../perses/ExternalPanelAddition.tsx | 10 + .../dashboards/perses/PersesWrapper.tsx | 50 +- .../components/ols-tool-ui/ShowTimeseries.tsx | 9 +- 5 files changed, 245 insertions(+), 318 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 137899bad..90e7026c4 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -31,11 +31,12 @@ "@patternfly/react-icons": "^6.4.0", "@patternfly/react-table": "^6.4.1", "@patternfly/react-templates": "^6.4.1", - "@perses-dev/components": "0.54.0-beta.1", - "@perses-dev/core": "0.53.0", - "@perses-dev/dashboards": "0.54.0-beta.1", - "@perses-dev/explore": "0.54.0-beta.1", - "@perses-dev/plugin-system": "0.54.0-beta.1", + "@perses-dev/client": "0.54.0-beta.11", + "@perses-dev/components": "0.54.0-beta.11", + "@perses-dev/dashboards": "0.54.0-beta.11", + "@perses-dev/explore": "0.54.0-beta.11", + "@perses-dev/plugin-system": "0.54.0-beta.11", + "@perses-dev/spec": "v0.2.0-beta.6", "@prometheus-io/codemirror-promql": "^0.37.0", "@tanstack/react-query": "^4.36.1", "ajv": "^8.18.0", @@ -4515,12 +4516,12 @@ "license": "MIT" }, "node_modules/@module-federation/bridge-react-webpack-plugin": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-2.6.0.tgz", - "integrity": "sha512-V+4+1PUmDgAozXPJA8evIa2G+dPJGYn1JzDoHS9wMFch2blko/DO2sMq6FGuZFnT1oyjxiWeiaWXluRElOU9rQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-2.7.0.tgz", + "integrity": "sha512-+7eYeJnIaofQHha8CK+FxPAXMIigd2xwONHi9rlYpdGqpCBIggRKMqL0b1owyDDNiAPF2lWUbxeNm0oUfF7GbA==", "license": "MIT", "dependencies": { - "@module-federation/sdk": "2.6.0", + "@module-federation/sdk": "2.7.0", "@types/semver": "7.5.8", "semver": "7.6.3" } @@ -4538,13 +4539,13 @@ } }, "node_modules/@module-federation/cli": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-2.6.0.tgz", - "integrity": "sha512-CHBsi5f8Oe9sCN6rY4R0+P/oFApvuutnqfoYNtuORdMn6FHittFDkuLFCSYlrZN2QYw/Sqir2xgLcwmY77Z7PA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-2.7.0.tgz", + "integrity": "sha512-Nx5PQFmYqiiiIaU8uyzFcm9j8bNGb0SEo1GvbjI4ehfRJ5a92sUjNE++Q3o6zmVDI4wDXIhpGxioYdXi5QF40w==", "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "2.6.0", - "@module-federation/sdk": "2.6.0", + "@module-federation/dts-plugin": "2.7.0", + "@module-federation/sdk": "2.7.0", "commander": "11.1.0", "jiti": "2.4.2" }, @@ -4556,24 +4557,23 @@ } }, "node_modules/@module-federation/dts-plugin": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-2.6.0.tgz", - "integrity": "sha512-0dMjLhU+2HNPyX5Txu6JqA2CAYxVLRv3c/bpRk58aNVwhDO/jqp66IdFztdMZ1XiHqOW9jB3pkOSuIpcl/yXpQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-2.7.0.tgz", + "integrity": "sha512-mVKeGUf/7iqRMAFfikhsr2zXtA70WuzJdS1bPqqoeLQNRGXBLDjedcDG26RpIlsvuZcmIOqgN5Z6qw7Bh/HZUg==", "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.6.0", - "@module-federation/managers": "2.6.0", - "@module-federation/sdk": "2.6.0", - "@module-federation/third-party-dts-extractor": "2.6.0", + "@module-federation/error-codes": "2.7.0", + "@module-federation/managers": "2.7.0", + "@module-federation/sdk": "2.7.0", + "@module-federation/third-party-dts-extractor": "2.7.0", "adm-zip": "0.5.10", - "ansi-colors": "4.1.3", "isomorphic-ws": "5.0.0", "node-schedule": "2.1.1", "undici": "7.28.0", "ws": "8.21.0" }, "peerDependencies": { - "typescript": "^4.9.0 || ^5.0.0", + "typescript": "^4.9.0 || ^5.0.0 || ^6.0.0", "vue-tsc": ">=1.0.24" }, "peerDependenciesMeta": { @@ -4583,22 +4583,22 @@ } }, "node_modules/@module-federation/enhanced": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-2.6.0.tgz", - "integrity": "sha512-pQ0V93FfeHtr67Nusr6ySTQO1qeOGs1x9MMjbeZ4ObOPbXdHNX1tH19xVP8mo5k3e8iIV2teMoSayTmHT+nD0g==", - "license": "MIT", - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "2.6.0", - "@module-federation/cli": "2.6.0", - "@module-federation/dts-plugin": "2.6.0", - "@module-federation/error-codes": "2.6.0", - "@module-federation/inject-external-runtime-core-plugin": "2.6.0", - "@module-federation/managers": "2.6.0", - "@module-federation/manifest": "2.6.0", - "@module-federation/rspack": "2.6.0", - "@module-federation/runtime-tools": "2.6.0", - "@module-federation/sdk": "2.6.0", - "@module-federation/webpack-bundler-runtime": "2.6.0", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-2.7.0.tgz", + "integrity": "sha512-1ZaiFIsFdH68MLoU7jrYxwhDt4WbDqmuTcnVsRqp9QZhZsex9h2zkeNpZdctL2Q1BtGsuNJ4ngJCOmO84O+6CQ==", + "license": "MIT", + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "2.7.0", + "@module-federation/cli": "2.7.0", + "@module-federation/dts-plugin": "2.7.0", + "@module-federation/error-codes": "2.7.0", + "@module-federation/inject-external-runtime-core-plugin": "2.7.0", + "@module-federation/managers": "2.7.0", + "@module-federation/manifest": "2.7.0", + "@module-federation/rspack": "2.7.0", + "@module-federation/runtime-tools": "2.7.0", + "@module-federation/sdk": "2.7.0", + "@module-federation/webpack-bundler-runtime": "2.7.0", "schema-utils": "4.3.0", "tapable": "2.3.0", "upath": "2.0.1" @@ -4607,7 +4607,7 @@ "mf": "bin/mf.js" }, "peerDependencies": { - "typescript": "^4.9.0 || ^5.0.0", + "typescript": "^4.9.0 || ^5.0.0 || ^6.0.0", "vue-tsc": ">=1.0.24", "webpack": "^5.0.0" }, @@ -4643,59 +4643,58 @@ } }, "node_modules/@module-federation/error-codes": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-2.6.0.tgz", - "integrity": "sha512-J9opjWJJZ1JI/9EvNZF8Ps1VMHS9EsH/i0UjCkQQxFVYZxSDBX1CFunvc7awac4cY//LqJUfqBbfoQPhCfKKKw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-2.7.0.tgz", + "integrity": "sha512-syToF3H77IbBhJ7auGMCIb5ZDmJ5tvaqSeEvncJrOCq7JBT96F4UDlQDyNh6kCVznvYqqHsPeEMrfI9b5/Omlg==", "license": "MIT" }, "node_modules/@module-federation/inject-external-runtime-core-plugin": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-2.6.0.tgz", - "integrity": "sha512-x5SmH33U1nSEcBXG6YzvkwIQLoKcd/CNfrAx4IJ4qBzlQKI0NvY7U4JE83LpBnwahNTQLvp27ZVX+1f7kt4Vww==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-2.7.0.tgz", + "integrity": "sha512-8xHVUWsnlYd1vQPUjVEO+OPBhBjbdur+jp33QwqwkJkSUW/WOgnybCevVyfiA05aaiSyPo1PluQPT6uhImVb7A==", "license": "MIT", "peerDependencies": { - "@module-federation/runtime-tools": "2.6.0" + "@module-federation/runtime-tools": "2.7.0" } }, "node_modules/@module-federation/managers": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-2.6.0.tgz", - "integrity": "sha512-7Y4Ri6Lh10dCHoEJvNGFmK2Gg1JKy7oJ1TEZhuU3n3mgIpZ519fDNRvU4+tiO9C49p1xyK+mQ8ewxth83waKUA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-2.7.0.tgz", + "integrity": "sha512-cWohiUvSrY6dIfhwsRABmEWfvJiAD5u/gxU7XRk7bx5nYPj7qn5gvYWJtvLNWzenluHZR6sib+03QMlyo+MYKQ==", "license": "MIT", "dependencies": { - "@module-federation/sdk": "2.6.0", - "find-pkg": "2.0.0" + "@module-federation/sdk": "2.7.0", + "empathic": "2.0.0" } }, "node_modules/@module-federation/manifest": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-2.6.0.tgz", - "integrity": "sha512-wIjI4wgFKBoq4l/iBOT2lva+i5sPv1+Ci1gOLOfjMAkygyGo97csUG5TaCWgLJpZzbYrpbFObCB2wZhqaLrQIw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-2.7.0.tgz", + "integrity": "sha512-phK5/pK/e0JyjMh7a2tvRXUFE0WCG9lxu4BtBQllZXNO0zjrroOHl2s/0sSUCdOq6NIL1HF9wTAudYiCKmNFjA==", "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "2.6.0", - "@module-federation/managers": "2.6.0", - "@module-federation/sdk": "2.6.0", - "find-pkg": "2.0.0" + "@module-federation/dts-plugin": "2.7.0", + "@module-federation/managers": "2.7.0", + "@module-federation/sdk": "2.7.0" } }, "node_modules/@module-federation/rspack": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-2.6.0.tgz", - "integrity": "sha512-Ayh7WLxhLRMyfBfajDwEytR5StFfnqf8p4tPHq5ds+HzJMlGz/M+NIYEzdOpfOFdE5IqN9bY/mj2AFI5lCureQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-2.7.0.tgz", + "integrity": "sha512-VbYc/5cpIze16ysBZJvmeXU7NN8tAs6Q/MdDsllIwO+Ir7JIEXgGrs5Bs+K7BuAu3HpxyRC8KanJTD+JB91+WA==", "license": "MIT", "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "2.6.0", - "@module-federation/dts-plugin": "2.6.0", - "@module-federation/inject-external-runtime-core-plugin": "2.6.0", - "@module-federation/managers": "2.6.0", - "@module-federation/manifest": "2.6.0", - "@module-federation/runtime-tools": "2.6.0", - "@module-federation/sdk": "2.6.0" + "@module-federation/bridge-react-webpack-plugin": "2.7.0", + "@module-federation/dts-plugin": "2.7.0", + "@module-federation/inject-external-runtime-core-plugin": "2.7.0", + "@module-federation/managers": "2.7.0", + "@module-federation/manifest": "2.7.0", + "@module-federation/runtime-tools": "2.7.0", + "@module-federation/sdk": "2.7.0" }, "peerDependencies": { "@rspack/core": "^0.7.0 || ^1.0.0 || ^2.0.0-0", - "typescript": "^4.9.0 || ^5.0.0", + "typescript": "^4.9.0 || ^5.0.0 || ^6.0.0", "vue-tsc": ">=1.0.24" }, "peerDependenciesMeta": { @@ -4708,69 +4707,61 @@ } }, "node_modules/@module-federation/runtime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-2.6.0.tgz", - "integrity": "sha512-Y8KgL70RDxD8cCtGWGlGkt+TSDleIjdGmS27gnllibQAIgG/vHhPD11r8kd92x44k4dqtMIntzreOphGICl92g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-2.7.0.tgz", + "integrity": "sha512-UtLozKKNvhT0D1+F0MEWsAmddJ39ItKW15E22LVMAwXmYZRSnzIvJQ2Y6kQ4LwhWABsw/GRSpUDex5OfhpSQPw==", "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.6.0", - "@module-federation/runtime-core": "2.6.0", - "@module-federation/sdk": "2.6.0" + "@module-federation/error-codes": "2.7.0", + "@module-federation/runtime-core": "2.7.0", + "@module-federation/sdk": "2.7.0" } }, "node_modules/@module-federation/runtime-core": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-2.6.0.tgz", - "integrity": "sha512-9sL7Yj3H3COZI9JpK/J4hmJUBkIJdmowkj6phHuFiy5Hm5bHiE5U+9WBbR9KqTdyNhAVSL9FeprBW5/Io6i59A==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-2.7.0.tgz", + "integrity": "sha512-5ROZLVIeV9YnWO2RwCwSHcy6sh48yclErO/2GZ2Xe8lFubPrFirgU8pbwBjZw+All0ZzN44BGS4ECRMVFzVcpg==", "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.6.0", - "@module-federation/sdk": "2.6.0" + "@module-federation/error-codes": "2.7.0", + "@module-federation/sdk": "2.7.0" } }, "node_modules/@module-federation/runtime-tools": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-2.6.0.tgz", - "integrity": "sha512-LfvihAhAWWNWlAL9zM+UDVDSSuLE2ZU0ATJ6dcbJuLstYbHYfUqq2e6IyU8TKLPXIib0VAWqPrT44TPam1VJ7g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-2.7.0.tgz", + "integrity": "sha512-AY61QeZ0jV0GywgR9j3Yd37KiXoY6gaSYABhjDF3q7XL9PNtb2Ezm1F/985wqaKJYX+qJvYv+PMH6hTvyHdPYQ==", "license": "MIT", "dependencies": { - "@module-federation/runtime": "2.6.0", - "@module-federation/webpack-bundler-runtime": "2.6.0" + "@module-federation/runtime": "2.7.0", + "@module-federation/webpack-bundler-runtime": "2.7.0" } }, "node_modules/@module-federation/sdk": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-2.6.0.tgz", - "integrity": "sha512-Z3HT1uDciMrvz2at3sw6TJbAK9Fl7RmoC/8iqO35HDtQMQJ1qSsMIAjnsiCpAC0D4nAm6PIqgSqPWRO/WYgo0Q==", - "license": "MIT", - "peerDependencies": { - "node-fetch": "^2.7.0 || ^3.3.2" - }, - "peerDependenciesMeta": { - "node-fetch": { - "optional": true - } - } + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-2.7.0.tgz", + "integrity": "sha512-piiLEjaIdjbNq8E11Di6vsfryhcdN/+sBCH6NjG7gSU2VHHoHEayZQWWL7VVdS6rVjexF9McLhPTSrl0adUU+A==", + "license": "MIT" }, "node_modules/@module-federation/third-party-dts-extractor": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-2.6.0.tgz", - "integrity": "sha512-rEC1YRC3gTafoOcFm1Htz6cAwHRoWEMQNCm1LXR1HiuayJzUkViVpK/1Pp37UZfytOyQ0qIaP6Ag81PdGvDbmw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-2.7.0.tgz", + "integrity": "sha512-hZJKkngQ4hwe0U+vrT3KOsU11qoHCQK0wB4x1bXoTgpTfV9j5NSuddOyRmwbvXpir9bDWh3xy7ghqsx3mFf3kA==", "license": "MIT", "dependencies": { - "find-pkg": "2.0.0", - "resolve": "1.22.8" + "empathic": "2.0.0", + "exsolve": "1.0.8" } }, "node_modules/@module-federation/webpack-bundler-runtime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-2.6.0.tgz", - "integrity": "sha512-JjuWOU3ktwDjBWhM4WCoeiErcUxcB5YwUnVjyTMfNJHC3+DMhG4m6ziCl5EJrCv+KaEQdcvXmxLliNZidBZGQg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-2.7.0.tgz", + "integrity": "sha512-3qLRIqcZVBNgJrZpiEzcTP8a6+mCdUV1QGk/XljawsQHyNieMVdLQtdLvkoF5Z5kRXNMovq+wv3vchKOMWyA8w==", "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.6.0", - "@module-federation/runtime": "2.6.0", - "@module-federation/sdk": "2.6.0" + "@module-federation/error-codes": "2.7.0", + "@module-federation/runtime": "2.7.0", + "@module-federation/sdk": "2.7.0" } }, "node_modules/@monaco-editor/loader": { @@ -6072,10 +6063,20 @@ "node": ">=20.0.0" } }, + "node_modules/@perses-dev/client": { + "version": "0.54.0-beta.11", + "resolved": "https://registry.npmjs.org/@perses-dev/client/-/client-0.54.0-beta.11.tgz", + "integrity": "sha512-+V4O4DdWMyd5Xih3DOg+Qt95aqee2onJYp302gidnMloK40gCWgl/MmpnOms5FLxX39K133vPZ3xjDcRqrFIeg==", + "license": "Apache-2.0", + "dependencies": { + "@perses-dev/spec": "0.2.0-beta.6", + "zod": "^3.21.4" + } + }, "node_modules/@perses-dev/components": { - "version": "0.54.0-beta.1", - "resolved": "https://registry.npmjs.org/@perses-dev/components/-/components-0.54.0-beta.1.tgz", - "integrity": "sha512-xssaITVuj6ay/4FaT3HsTeIPwqKZ9P81TejAJbiXr0tH4eSh9p2BAYp7LkbHgAtLecLr3TsLo4C4iGc3iJhnqw==", + "version": "0.54.0-beta.11", + "resolved": "https://registry.npmjs.org/@perses-dev/components/-/components-0.54.0-beta.11.tgz", + "integrity": "sha512-FG3fiipOeoZHX6P1lgFIA/en0eKab6G8+0EqooJFXoGqQ5iSLaUw0hjtHdvEJARqv2R5ML/6A8+M7rtgJpEHsw==", "license": "Apache-2.0", "dependencies": { "@atlaskit/pragmatic-drag-and-drop": "^1.4.0", @@ -6084,8 +6085,8 @@ "@date-fns/tz": "^1.4.1", "@fontsource/inter": "^5.0.0", "@mui/x-date-pickers": "^7.23.1", - "@perses-dev/core": "0.53.0", - "@perses-dev/spec": "0.2.0-beta.0", + "@perses-dev/client": "0.54.0-beta.11", + "@perses-dev/spec": "0.2.0-beta.6", "@tanstack/match-sorter-utils": "^8.19.4", "@tanstack/react-table": "^8.20.5", "@uiw/react-codemirror": "^4.19.1", @@ -6096,6 +6097,7 @@ "mathjs": "^10.6.4", "mdi-material-ui": "^7.9.2", "notistack": "^3.0.2", + "numbro": "^2.3.6", "react-colorful": "^5.6.1", "react-error-boundary": "^3.1.4", "react-hook-form": "^7.51.3", @@ -6124,18 +6126,17 @@ } }, "node_modules/@perses-dev/dashboards": { - "version": "0.54.0-beta.1", - "resolved": "https://registry.npmjs.org/@perses-dev/dashboards/-/dashboards-0.54.0-beta.1.tgz", - "integrity": "sha512-PizFiH50yj+iQtKr8wJb7KRKElXwlgKQPP/Q85Z/GNHGCVj/iVM1+K4us7jzgs0+M4oD4SH7KdwwhunrmT+1Og==", + "version": "0.54.0-beta.11", + "resolved": "https://registry.npmjs.org/@perses-dev/dashboards/-/dashboards-0.54.0-beta.11.tgz", + "integrity": "sha512-Zh8gQYTZ8Aez4VF21M1YKjRV9rCM1+VW77IlnuPcBLsdo3Uu0pFAXGqZmuXDyknq9mbmY0TanNhpZia7b8pEfg==", "license": "Apache-2.0", "dependencies": { - "@perses-dev/components": "0.54.0-beta.1", - "@perses-dev/core": "0.53.0", - "@perses-dev/plugin-system": "0.54.0-beta.1", - "@perses-dev/spec": "0.2.0-beta.0", + "@perses-dev/client": "0.54.0-beta.11", + "@perses-dev/components": "0.54.0-beta.11", + "@perses-dev/plugin-system": "0.54.0-beta.11", + "@perses-dev/spec": "0.2.0-beta.6", + "@tanstack/hotkeys": "^0.8.0", "@tanstack/react-hotkeys": "^0.9.1", - "@types/react-grid-layout": "^1.3.2", - "date-fns": "^4.1.0", "immer": "^10.1.1", "mdi-material-ui": "^7.9.2", "react-grid-layout": "^1.3.4", @@ -6154,31 +6155,47 @@ "react-dom": "^17.0.2 || ^18.0.0" } }, + "node_modules/@perses-dev/dashboards/node_modules/@tanstack/hotkeys": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@tanstack/hotkeys/-/hotkeys-0.8.0.tgz", + "integrity": "sha512-vqH7X9nb0MTJ/O08++dB5bP9jgj4+BIPOUu/U+6myG86lDsirZSVSobpq5UQpE7nBuk62i8eIYeOhd+OMl/UrA==", + "license": "MIT", + "dependencies": { + "@tanstack/store": "^0.11.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@perses-dev/dashboards/node_modules/@tanstack/store": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@tanstack/store/-/store-0.11.0.tgz", + "integrity": "sha512-WlzzCt3xi0G6pCAJu1U+2jiECwabETDpQDi3hfkFZvJii9AuZqEKbOiVarX1/bWhTNjU486yQtJCCasi/0q+Cw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, "node_modules/@perses-dev/explore": { - "version": "0.54.0-beta.1", - "resolved": "https://registry.npmjs.org/@perses-dev/explore/-/explore-0.54.0-beta.1.tgz", - "integrity": "sha512-aPHAbTzrIgIv9w1LUOmzi7DZRB/aXiZQNaml7FeQztCViqekpTKDnfe8fA9xI+PGhZz0j/3f1SAS9Uxkos4gTA==", + "version": "0.54.0-beta.11", + "resolved": "https://registry.npmjs.org/@perses-dev/explore/-/explore-0.54.0-beta.11.tgz", + "integrity": "sha512-BBGzZ0aQgdnO9jaBfOrtjFaJ5L8t0pXlQvgHPmogt8M7fziYvT7QFPnQvwihRW1Vm12px4wjpEMVlHBDJS7ZWg==", "license": "Apache-2.0", "dependencies": { "@nexucis/fuzzy": "^0.5.1", - "@perses-dev/components": "0.54.0-beta.1", - "@perses-dev/core": "0.53.0", - "@perses-dev/dashboards": "0.54.0-beta.1", - "@perses-dev/plugin-system": "0.54.0-beta.1", - "@types/react-grid-layout": "^1.3.2", - "date-fns": "^4.1.0", - "immer": "^10.1.1", + "@perses-dev/components": "0.54.0-beta.11", + "@perses-dev/dashboards": "0.54.0-beta.11", + "@perses-dev/plugin-system": "0.54.0-beta.11", "mdi-material-ui": "^7.9.2", "qs": "^6.14.0", - "react-grid-layout": "^1.3.4", - "react-hook-form": "^7.46.1", - "react-intersection-observer": "^9.4.0", "react-virtuoso": "^4.12.2", - "use-immer": "^0.11.0", "use-query-params": "^2.2.1", - "use-resize-observer": "^9.0.0", - "zod": "^3.25.76", - "zustand": "^4.3.3" + "use-resize-observer": "^9.0.0" }, "peerDependencies": { "@mui/material": "^6.1.10", @@ -6188,20 +6205,21 @@ } }, "node_modules/@perses-dev/plugin-system": { - "version": "0.54.0-beta.1", - "resolved": "https://registry.npmjs.org/@perses-dev/plugin-system/-/plugin-system-0.54.0-beta.1.tgz", - "integrity": "sha512-7l2yjvlyWn0a4LsxntefqoRM9VlZRx4qfH/uN7XNIbI3ycsMnjSlSvshknXcUr3/ukwMPv2jbah3Z1M9hYEEBQ==", + "version": "0.54.0-beta.11", + "resolved": "https://registry.npmjs.org/@perses-dev/plugin-system/-/plugin-system-0.54.0-beta.11.tgz", + "integrity": "sha512-cFf2MRwuulEwSnxeF/H47IVEwvfdJLCK5fdPsnJr0j4FJ1/90h6nhC9+0ksK3l1WvuIbZeXrR+JxdrA0D7aZmA==", "license": "Apache-2.0", "dependencies": { - "@module-federation/enhanced": "^2.3.3", - "@perses-dev/components": "0.54.0-beta.1", + "@module-federation/enhanced": "^2.6.0", + "@perses-dev/client": "0.54.0-beta.11", + "@perses-dev/components": "0.54.0-beta.11", "@perses-dev/core": "0.53.0", - "@perses-dev/spec": "0.2.0-beta.0", + "@perses-dev/spec": "0.2.0-beta.6", "date-fns": "^4.1.0", "date-fns-tz": "^3.2.0", "immer": "^10.1.1", "react-hook-form": "^7.46.1", - "use-immer": "^0.11.0", + "semver": "^7.8.0", "use-query-params": "^2.2.1", "zod": "^3.25.76" }, @@ -6215,10 +6233,22 @@ "react-dom": "^17.0.2 || ^18.0.0" } }, + "node_modules/@perses-dev/plugin-system/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@perses-dev/spec": { - "version": "0.2.0-beta.0", - "resolved": "https://registry.npmjs.org/@perses-dev/spec/-/spec-0.2.0-beta.0.tgz", - "integrity": "sha512-9qT3ofOjBcO7okudC9Rz8t8ugNcTscYincvvmyFtZ/9oHrkDTiJPcRHLZYoCPE6r70OEj27JpvCqWCCil5yA1Q==", + "version": "0.2.0-beta.6", + "resolved": "https://registry.npmjs.org/@perses-dev/spec/-/spec-0.2.0-beta.6.tgz", + "integrity": "sha512-J8oWuZgc/0nlT8PDlEIahA7XZ/tKITC9C0FG7e+FFhYGRzZ5oyMz2keuPkAzl3KPYB9yeczit9TFQWsoY/ot5Q==", "license": "Apache-2.0", "dependencies": { "date-fns": "^4.1.0", @@ -7421,15 +7451,6 @@ "csstype": "^3.2.2" } }, - "node_modules/@types/react-grid-layout": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/react-grid-layout/-/react-grid-layout-1.3.5.tgz", - "integrity": "sha512-WH/po1gcEcoR6y857yAnPGug+ZhkF4PaTUxgAbwfeSH/QOgVSakKHBXoPGad/sEznmkiaK3pqHk+etdWisoeBQ==", - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/react-transition-group": { "version": "4.4.12", "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", @@ -8746,6 +8767,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -11830,6 +11852,15 @@ "node": ">= 4" } }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -13316,18 +13347,6 @@ "node": ">= 0.8.0" } }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "license": "MIT", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/expect": { "version": "30.4.1", "resolved": "https://registry.npmjs.org/expect/-/expect-30.4.1.tgz", @@ -13434,6 +13453,12 @@ "node": ">= 0.6" } }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "license": "MIT" + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -13720,30 +13745,6 @@ "node": ">= 0.8" } }, - "node_modules/find-file-up": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz", - "integrity": "sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==", - "license": "MIT", - "dependencies": { - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", - "integrity": "sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==", - "license": "MIT", - "dependencies": { - "find-file-up": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", @@ -14468,54 +14469,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "license": "MIT", - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "license": "MIT", - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/globals": { "version": "17.5.0", "resolved": "https://registry.npmjs.org/globals/-/globals-17.5.0.tgz", @@ -14858,18 +14811,6 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "license": "MIT", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -16117,15 +16058,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-wsl": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", @@ -16153,6 +16085,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, "license": "ISC" }, "node_modules/isobject": { @@ -20573,15 +20506,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", @@ -22383,19 +22307,6 @@ "node": ">=8" } }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "license": "MIT", - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", diff --git a/web/package.json b/web/package.json index 9a0aa4981..0867d3dad 100644 --- a/web/package.json +++ b/web/package.json @@ -74,11 +74,12 @@ "@patternfly/react-icons": "^6.4.0", "@patternfly/react-table": "^6.4.1", "@patternfly/react-templates": "^6.4.1", - "@perses-dev/components": "0.54.0-beta.1", - "@perses-dev/core": "0.53.0", - "@perses-dev/dashboards": "0.54.0-beta.1", - "@perses-dev/explore": "0.54.0-beta.1", - "@perses-dev/plugin-system": "0.54.0-beta.1", + "@perses-dev/components": "0.54.0-beta.11", + "@perses-dev/spec": "v0.2.0-beta.6", + "@perses-dev/dashboards": "0.54.0-beta.11", + "@perses-dev/explore": "0.54.0-beta.11", + "@perses-dev/plugin-system": "0.54.0-beta.11", + "@perses-dev/client": "0.54.0-beta.11", "@prometheus-io/codemirror-promql": "^0.37.0", "@tanstack/react-query": "^4.36.1", "ajv": "^8.18.0", diff --git a/web/src/components/dashboards/perses/ExternalPanelAddition.tsx b/web/src/components/dashboards/perses/ExternalPanelAddition.tsx index 476c1860e..4e8d66a94 100644 --- a/web/src/components/dashboards/perses/ExternalPanelAddition.tsx +++ b/web/src/components/dashboards/perses/ExternalPanelAddition.tsx @@ -67,6 +67,13 @@ export function ExternalPanelAddition({ try { const panelEditor = dashboardStore.panelEditor; const groupId = dashboardStore.panelGroupOrder[0]; + const tags = dashboardStore.metadata?.tags || []; + if (!tags.includes('ai-assisted')) { + dashboardStore.setMetadata((prev) => ({ + ...prev, + tags: [...(prev?.tags || []), 'ai-assisted'], + })); + } panelEditor.applyChanges({ ...queuedPanel, groupId }); panelEditor.close(); } finally { @@ -75,6 +82,9 @@ export function ExternalPanelAddition({ dispatch(dashboardsPersesPanelExternallyAdded()); } } + // dashboardStore is excluded purposely to avoid re-running this effect when the store changes. + // dashboardStore.setMetadata is stable and does not change between renders. + // eslint-disable-next-line react-hooks/exhaustive-deps }, [dispatch, dashboardStore.panelGroupOrder, dashboardStore.panelEditor, queuedPanel]); // Advertise when a dashboard is opened/closed diff --git a/web/src/components/dashboards/perses/PersesWrapper.tsx b/web/src/components/dashboards/perses/PersesWrapper.tsx index b51ac13c2..7f0723d41 100644 --- a/web/src/components/dashboards/perses/PersesWrapper.tsx +++ b/web/src/components/dashboards/perses/PersesWrapper.tsx @@ -1,4 +1,3 @@ -import '../../../perses-config'; import { ThemeOptions, ThemeProvider } from '@mui/material'; import { ChartThemeColor, getThemeColors } from '@patternfly/react-charts/victory'; import { @@ -9,23 +8,29 @@ import { SnackbarProvider, typography, } from '@perses-dev/components'; +import '../../../perses-config'; import { - BuiltinVariableDefinition, - DashboardResource, - Definition, - DurationString, - UnknownSpec, -} from '@perses-dev/core'; + chart_color_blue_100, + chart_color_blue_300, + chart_color_blue_400, + chart_color_blue_500, + t_color_gray_95, + t_color_white, + t_global_background_color_100, + t_global_background_color_400, +} from '@patternfly/react-tokens'; +import { DashboardResource, Kind } from '@perses-dev/client'; import { DashboardProvider, DatasourceStoreProvider, - VariableProviderWithQueryParams, PanelFocusProvider, + VariableProviderWithQueryParams, } from '@perses-dev/dashboards'; import { DataQueriesProvider, PluginLoader, PluginRegistry, + remotePluginLoader, RouterProvider, TimeRangeProviderWithQueryParams, useInitialRefreshInterval, @@ -33,27 +38,22 @@ import { usePluginBuiltinVariableDefinitions, ValidationProvider, } from '@perses-dev/plugin-system'; +import { + BuiltinVariableDefinition, + DurationString, + QueryDefinition, + UnknownSpec, +} from '@perses-dev/spec'; import { ReactNode, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { Link, useNavigate } from 'react-router'; +import { StringParam, useQueryParam } from 'use-query-params'; +import { LoadingBox } from '../../../components/console/console-shared/src/components/loading/LoadingBox'; import { usePatternFlyTheme } from '../../hooks/usePatternflyTheme'; +import { QueryParams } from '../../query-params'; import { OcpDatasourceApi } from './datasource-api'; import { PERSES_PROXY_BASE_PATH, useFetchPersesDashboard } from './perses-client'; import { CachedDatasourceAPI } from './perses/datasource-cache-api'; -import { - chart_color_blue_100, - chart_color_blue_300, - chart_color_blue_400, - chart_color_blue_500, - t_color_gray_95, - t_color_white, - t_global_background_color_100, - t_global_background_color_400, -} from '@patternfly/react-tokens'; -import { QueryParams } from '../../query-params'; -import { StringParam, useQueryParam } from 'use-query-params'; -import { useTranslation } from 'react-i18next'; -import { LoadingBox } from '../../../components/console/console-shared/src/components/loading/LoadingBox'; -import { remotePluginLoader } from '@perses-dev/plugin-system'; -import { Link, useNavigate } from 'react-router'; // Override eChart defaults with PatternFly colors. const patternflyBlue100 = chart_color_blue_100.value; @@ -503,7 +503,7 @@ function InnerWrapper({ children, project }: InnerWrapperProps) { } interface PersesPrometheusDatasourceWrapperProps { - queries: Definition[]; + queries: Array>; dashboardResource?: DashboardResource; duration?: DurationString; children?: ReactNode; diff --git a/web/src/components/ols-tool-ui/ShowTimeseries.tsx b/web/src/components/ols-tool-ui/ShowTimeseries.tsx index 0c22ed458..bed3ad8fa 100644 --- a/web/src/components/ols-tool-ui/ShowTimeseries.tsx +++ b/web/src/components/ols-tool-ui/ShowTimeseries.tsx @@ -26,9 +26,14 @@ export const ShowTimeseries: FC<{ tool: ShowTimeseriesTool }> = ({ tool }) => { const queryDescription = t('Query: {{query}}', { query: query }); const definitions = [ { - kind: 'PrometheusTimeSeriesQuery', + kind: 'TimeSeriesQuery', spec: { - query: query, + plugin: { + kind: 'PrometheusTimeSeriesQuery', + spec: { + query: query, + }, + }, }, }, ];