feat(dashboard) - Resizable and repositionable widgets.
This commit is contained in:
parent
7253cbc89c
commit
7b372e75da
11 changed files with 744 additions and 391 deletions
18
README.md
18
README.md
|
|
@ -217,10 +217,6 @@ This fork adds several enhancements to the original Perplexica project:
|
|||
- ✅ OpenSearch support with dynamic XML generation
|
||||
- Added BASE_URL config to support reverse proxy deployments
|
||||
- Added autocomplete functionality proxied to SearxNG
|
||||
- ✅ Enhanced Reddit focus mode to work around SearxNG limitations
|
||||
- ✅ Enhanced Balance mode that uses a headless web browser to retrieve web content and use relevant excerpts to enhance responses
|
||||
- ✅ Adds Agent mode that uses the full content of web pages to answer queries and an agentic flow to intelligently answer complex queries with accuracy
|
||||
- See the [README.md](docs/architecture/README.md) in the docs architecture directory for more info
|
||||
- ✅ Query-based settings override for browser search engine integration
|
||||
- Automatically applies user's saved optimization mode and AI model preferences when accessing via URL with `q` parameter
|
||||
- Enables seamless browser search bar integration with personalized settings
|
||||
|
|
@ -240,6 +236,20 @@ This fork adds several enhancements to the original Perplexica project:
|
|||
- Configurable via settings UI with collapsible provider interface for better organization
|
||||
- API support with `include_hidden` parameter for administrative access
|
||||
|
||||
### Unique Features
|
||||
|
||||
- ✅ **Agent Mode**: A new mode that uses a headless web browser to retrieve web content and use relevant excerpts to enhance responses.
|
||||
- Automatically extracts relevant information from web pages
|
||||
- Provides more accurate and contextually rich answers
|
||||
- Ideal for complex queries requiring detailed information
|
||||
|
||||
- ✅ **Dashboard Widgets**: Create customizable AI-powered widgets for personalized information displays.
|
||||
- Build widgets that combine web content with AI processing using custom prompts
|
||||
- Support for multiple data sources (web pages, HTTP endpoints) with automatic content extraction
|
||||
- Configurable refresh intervals (minutes/hours) for keeping information current
|
||||
- Real-time preview system to test widget output before saving
|
||||
- Automatic refresh of stale widgets when navigating to dashboard
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- ✅ Improved history rewriting
|
||||
|
|
|
|||
404
package-lock.json
generated
404
package-lock.json
generated
|
|
@ -46,6 +46,7 @@
|
|||
"playwright": "^1.52.0",
|
||||
"react": "^19",
|
||||
"react-dom": "^19",
|
||||
"react-grid-layout": "^1.5.2",
|
||||
"react-syntax-highlighter": "^15.6.1",
|
||||
"react-text-to-speech": "^2.1.2",
|
||||
"react-textarea-autosize": "^8.5.3",
|
||||
|
|
@ -65,6 +66,7 @@
|
|||
"@types/pdf-parse": "^1.1.4",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"@types/react-grid-layout": "^1.3.5",
|
||||
"autoprefixer": "^10.0.1",
|
||||
"drizzle-kit": "^0.30.5",
|
||||
"eslint": "^8",
|
||||
|
|
@ -104,9 +106,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@anthropic-ai/sdk/node_modules/@types/node": {
|
||||
"version": "18.19.119",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.119.tgz",
|
||||
"integrity": "sha512-d0F6m9itIPaKnrvEMlzE48UjwZaAnFW7Jwibacw9MNdqadjKNpUm9tfJYDwmShJmgqcoqYUX3EMKO1+RWiuuNg==",
|
||||
"version": "18.19.120",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.120.tgz",
|
||||
"integrity": "sha512-WtCGHFXnVI8WHLxDAt5TbnCM4eSE+nI0QN2NJtwzcgMhht2eNz6V9evJrk+lwC8bCY8OWV5Ym8Jz7ZEyGnKnMA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
|
|
@ -159,9 +161,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@browserbasehq/sdk/node_modules/@types/node": {
|
||||
"version": "18.19.119",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.119.tgz",
|
||||
"integrity": "sha512-d0F6m9itIPaKnrvEMlzE48UjwZaAnFW7Jwibacw9MNdqadjKNpUm9tfJYDwmShJmgqcoqYUX3EMKO1+RWiuuNg==",
|
||||
"version": "18.19.120",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.120.tgz",
|
||||
"integrity": "sha512-WtCGHFXnVI8WHLxDAt5TbnCM4eSE+nI0QN2NJtwzcgMhht2eNz6V9evJrk+lwC8bCY8OWV5Ym8Jz7ZEyGnKnMA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
|
|
@ -339,21 +341,21 @@
|
|||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/@emnapi/core": {
|
||||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.4.tgz",
|
||||
"integrity": "sha512-A9CnAbC6ARNMKcIcrQwq6HeHCjpcBZ5wSx4U01WXCqEKlrzB9F9315WDNHkrs2xbx7YjjSxbUYxuN6EQzpcY2g==",
|
||||
"version": "1.4.5",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz",
|
||||
"integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@emnapi/wasi-threads": "1.0.3",
|
||||
"@emnapi/wasi-threads": "1.0.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@emnapi/runtime": {
|
||||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.4.tgz",
|
||||
"integrity": "sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==",
|
||||
"version": "1.4.5",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz",
|
||||
"integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
|
|
@ -361,9 +363,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@emnapi/wasi-threads": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.3.tgz",
|
||||
"integrity": "sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz",
|
||||
"integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
|
|
@ -1394,9 +1396,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@headlessui/react": {
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.4.tgz",
|
||||
"integrity": "sha512-lz+OGcAH1dK93rgSMzXmm1qKOJkBUqZf1L4M8TWLNplftQD3IkoEDdUFNfAn4ylsN6WOTVtWaLmvmaHOUk1dTA==",
|
||||
"version": "2.2.5",
|
||||
"resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.5.tgz",
|
||||
"integrity": "sha512-h1+2Vu1yR5pp/fBcTnwVEW8Kb94Hbxp7MXZLORfDzvSrbmGgiTyaTZ4LI/tPNZnK8eDrYD9s9cMbjm5HS5otIQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@floating-ui/react": "^0.26.16",
|
||||
|
|
@ -1467,9 +1469,9 @@
|
|||
"license": "ISC"
|
||||
},
|
||||
"node_modules/@ibm-cloud/watsonx-ai": {
|
||||
"version": "1.6.8",
|
||||
"resolved": "https://registry.npmjs.org/@ibm-cloud/watsonx-ai/-/watsonx-ai-1.6.8.tgz",
|
||||
"integrity": "sha512-Ip5bLDM40rQRYauRmmIIpxLO57wI3+F59Njmp0hexnVr+uKroV+O9+eAGQkdE2c9d17R16Q77ueAGheZrzqgWA==",
|
||||
"version": "1.6.9",
|
||||
"resolved": "https://registry.npmjs.org/@ibm-cloud/watsonx-ai/-/watsonx-ai-1.6.9.tgz",
|
||||
"integrity": "sha512-aW4jUVgxjdDa8IDSM+KPeR42pxeR5AUvSXxvj+iid1DdrmRd/SRR9o/FdWEjpZLgcs5RXQFIT56goWkJv7s8oQ==",
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
|
|
@ -1482,9 +1484,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@ibm-cloud/watsonx-ai/node_modules/@types/node": {
|
||||
"version": "18.19.119",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.119.tgz",
|
||||
"integrity": "sha512-d0F6m9itIPaKnrvEMlzE48UjwZaAnFW7Jwibacw9MNdqadjKNpUm9tfJYDwmShJmgqcoqYUX3EMKO1+RWiuuNg==",
|
||||
"version": "18.19.120",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.120.tgz",
|
||||
"integrity": "sha512-WtCGHFXnVI8WHLxDAt5TbnCM4eSE+nI0QN2NJtwzcgMhht2eNz6V9evJrk+lwC8bCY8OWV5Ym8Jz7ZEyGnKnMA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
|
|
@ -2565,9 +2567,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@langchain/core": {
|
||||
"version": "0.3.64",
|
||||
"resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.64.tgz",
|
||||
"integrity": "sha512-KOHTnmycOPfuffLAm3wwv1rThQ47iG5a3HuWMt2qYhwwImFi6HLeYqKgmxVS5qcJjc6t0IPwR7jOvv9IKxfrAw==",
|
||||
"version": "0.3.66",
|
||||
"resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.66.tgz",
|
||||
"integrity": "sha512-d3SgSDOlgOjdIbReIXVQl9HaQzKqO/5+E+o3kJwoKXLGP9dxi7+lMyaII7yv7G8/aUxMWLwFES9zc1jFoeJEZw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@cfworker/json-schema": "^4.0.2",
|
||||
|
|
@ -2633,13 +2635,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@langchain/langgraph": {
|
||||
"version": "0.3.9",
|
||||
"resolved": "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-0.3.9.tgz",
|
||||
"integrity": "sha512-eV0Qfpj45pn3A43v3JJygE1pGI8QAd+esb4iifIFWPlkjwFdVbZjqNz556Ojf2IjMLCSBpSEfZqQsRlju8fM0A==",
|
||||
"version": "0.3.11",
|
||||
"resolved": "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-0.3.11.tgz",
|
||||
"integrity": "sha512-Lh8oga4ismQyw1NGZKoHPdeGke1g5HMF7V0nBlc5R7GnV8tfC6pdsXjiEH6sYsHsRDInfy8uQeob/BwEmMSSbQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@langchain/langgraph-checkpoint": "~0.0.18",
|
||||
"@langchain/langgraph-sdk": "~0.0.96",
|
||||
"@langchain/langgraph-sdk": "~0.0.100",
|
||||
"uuid": "^10.0.0",
|
||||
"zod": "^3.25.32"
|
||||
},
|
||||
|
|
@ -2672,9 +2674,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@langchain/langgraph-sdk": {
|
||||
"version": "0.0.97",
|
||||
"resolved": "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.97.tgz",
|
||||
"integrity": "sha512-MrkCFKA/Ei/haJ1bN/lQyAjEJ1ezV9Djv2BYH2L3oqxOf3COT1LoRn3P6TD0M+j1RD5VjkowUwQ3T8Uidzq9mA==",
|
||||
"version": "0.0.100",
|
||||
"resolved": "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.100.tgz",
|
||||
"integrity": "sha512-mQuj0KgjD31Me+/W658OtdlOACOjgipWp/hF80OY4w4LqWCNIQWJBWMZ3f1/E8jpog/XBCROR37auFc7Fj+4Dw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/json-schema": "^7.0.15",
|
||||
|
|
@ -2746,9 +2748,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@langchain/openai/node_modules/openai": {
|
||||
"version": "5.10.1",
|
||||
"resolved": "https://registry.npmjs.org/openai/-/openai-5.10.1.tgz",
|
||||
"integrity": "sha512-fq6xVfv1/gpLbsj8fArEt3b6B9jBxdhAK+VJ+bDvbUvNd+KTLlA3bnDeYZaBsGH9LUhJ1M1yXfp9sEyBLMx6eA==",
|
||||
"version": "5.10.2",
|
||||
"resolved": "https://registry.npmjs.org/openai/-/openai-5.10.2.tgz",
|
||||
"integrity": "sha512-n+vi74LzHtvlKcDPn9aApgELGiu5CwhaLG40zxLTlFQdoSJCLACORIPC2uVQ3JEYAbqapM+XyRKFy2Thej7bIw==",
|
||||
"license": "Apache-2.0",
|
||||
"bin": {
|
||||
"openai": "bin/cli"
|
||||
|
|
@ -2820,9 +2822,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/env": {
|
||||
"version": "15.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-15.4.1.tgz",
|
||||
"integrity": "sha512-DXQwFGAE2VH+f2TJsKepRXpODPU+scf5fDbKOME8MMyeyswe4XwgRdiiIYmBfkXU+2ssliLYznajTrOQdnLR5A==",
|
||||
"version": "15.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-15.4.3.tgz",
|
||||
"integrity": "sha512-lKJ9KJAvaWzqurIsz6NWdQOLj96mdhuDMusLSYHw9HBe2On7BjUwU1WeRvq19x7NrEK3iOgMeSBV5qEhVH1cMw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@next/eslint-plugin-next": {
|
||||
|
|
@ -2836,9 +2838,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-darwin-arm64": {
|
||||
"version": "15.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.4.1.tgz",
|
||||
"integrity": "sha512-L+81yMsiHq82VRXS2RVq6OgDwjvA4kDksGU8hfiDHEXP+ncKIUhUsadAVB+MRIp2FErs/5hpXR0u2eluWPAhig==",
|
||||
"version": "15.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.4.3.tgz",
|
||||
"integrity": "sha512-YAhZWKeEYY7LHQJiQ8fe3Y6ymfcDcTn7rDC8PDu/pdeIl1Z2LHD4uyPNuQUGCEQT//MSNv6oZCeQzZfTCKZv+A==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
|
@ -2852,9 +2854,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-darwin-x64": {
|
||||
"version": "15.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.4.1.tgz",
|
||||
"integrity": "sha512-jfz1RXu6SzL14lFl05/MNkcN35lTLMJWPbqt7Xaj35+ZWAX342aePIJrN6xBdGeKl6jPXJm0Yqo3Xvh3Gpo3Uw==",
|
||||
"version": "15.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.4.3.tgz",
|
||||
"integrity": "sha512-ZPHRdd51xaxCMpT4viQ6h8TgYM1zPW1JIeksPY9wKlyvBVUQqrWqw8kEh1sa7/x0Ied+U7pYHkAkutrUwxbMcg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
|
@ -2868,9 +2870,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-arm64-gnu": {
|
||||
"version": "15.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.4.1.tgz",
|
||||
"integrity": "sha512-k0tOFn3dsnkaGfs6iQz8Ms6f1CyQe4GacXF979sL8PNQxjYS1swx9VsOyUQYaPoGV8nAZ7OX8cYaeiXGq9ahPQ==",
|
||||
"version": "15.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.4.3.tgz",
|
||||
"integrity": "sha512-QUdqftCXC5vw5cowucqi9FeOPQ0vdMxoOHLY0J5jPdercwSJFjdi9CkEO4Xkq1eG4t1TB/BG81n6rmTsWoILnw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
|
@ -2884,9 +2886,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-arm64-musl": {
|
||||
"version": "15.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.4.1.tgz",
|
||||
"integrity": "sha512-4ogGQ/3qDzbbK3IwV88ltihHFbQVq6Qr+uEapzXHXBH1KsVBZOB50sn6BWHPcFjwSoMX2Tj9eH/fZvQnSIgc3g==",
|
||||
"version": "15.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.4.3.tgz",
|
||||
"integrity": "sha512-HTL31NsmoafX+r5g91Yj3+q34nrn1xKmCWVuNA+fUWO4X0pr+n83uGzLyEOn0kUqbMZ40KmWx+4wsbMoUChkiQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
|
@ -2900,9 +2902,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-x64-gnu": {
|
||||
"version": "15.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.4.1.tgz",
|
||||
"integrity": "sha512-Jj0Rfw3wIgp+eahMz/tOGwlcYYEFjlBPKU7NqoOkTX0LY45i5W0WcDpgiDWSLrN8KFQq/LW7fZq46gxGCiOYlQ==",
|
||||
"version": "15.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.4.3.tgz",
|
||||
"integrity": "sha512-HRQLWoeFkKXd2YCEEy9GhfwOijRm37x4w5r0MMVHxBKSA6ms3JoPUXvGhfHT6srnGRcEUWNrQ2vzkHir5ZWTSw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
|
@ -2916,9 +2918,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-x64-musl": {
|
||||
"version": "15.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.4.1.tgz",
|
||||
"integrity": "sha512-9WlEZfnw1vFqkWsTMzZDgNL7AUI1aiBHi0S2m8jvycPyCq/fbZjtE/nDkhJRYbSjXbtRHYLDBlmP95kpjEmJbw==",
|
||||
"version": "15.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.4.3.tgz",
|
||||
"integrity": "sha512-NyXUx6G7AayaRGUsVPenuwhyAoyxjQuQPaK50AXoaAHPwRuif4WmSrXUs8/Y0HJIZh8E/YXRm9H7uuGfiacpuQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
|
@ -2932,9 +2934,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-win32-arm64-msvc": {
|
||||
"version": "15.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.4.1.tgz",
|
||||
"integrity": "sha512-WodRbZ9g6CQLRZsG3gtrA9w7Qfa9BwDzhFVdlI6sV0OCPq9JrOrJSp9/ioLsezbV8w9RCJ8v55uzJuJ5RgWLZg==",
|
||||
"version": "15.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.4.3.tgz",
|
||||
"integrity": "sha512-2CUTmpzN/7cL1a7GjdLkDFlfH3nwMwW8a6JiaAUsL9MtKmNNO3fnXqnY0Zk30fii3hVEl4dr7ztrpYt0t2CcGQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
|
@ -2948,9 +2950,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@next/swc-win32-x64-msvc": {
|
||||
"version": "15.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.4.1.tgz",
|
||||
"integrity": "sha512-y+wTBxelk2xiNofmDOVU7O5WxTHcvOoL3srOM0kxTzKDjQ57kPU0tpnPJ/BWrRnsOwXEv0+3QSbGR7hY4n9LkQ==",
|
||||
"version": "15.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.4.3.tgz",
|
||||
"integrity": "sha512-i54YgUhvrUQxQD84SjAbkfWhYkOdm/DNRAVekCHLWxVg3aUbyC6NFQn9TwgCkX5QAS2pXCJo3kFboSFvrsd7dA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
|
@ -3106,14 +3108,14 @@
|
|||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/@react-aria/focus": {
|
||||
"version": "3.20.5",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.5.tgz",
|
||||
"integrity": "sha512-JpFtXmWQ0Oca7FcvkqgjSyo6xEP7v3oQOLUId6o0xTvm4AD5W0mU2r3lYrbhsJ+XxdUUX4AVR5473sZZ85kU4A==",
|
||||
"version": "3.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.0.tgz",
|
||||
"integrity": "sha512-7NEGtTPsBy52EZ/ToVKCu0HSelE3kq9qeis+2eEq90XSuJOMaDHUQrA7RC2Y89tlEwQB31bud/kKRi9Qme1dkA==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@react-aria/interactions": "^3.25.3",
|
||||
"@react-aria/utils": "^3.29.1",
|
||||
"@react-types/shared": "^3.30.0",
|
||||
"@react-aria/interactions": "^3.25.4",
|
||||
"@react-aria/utils": "^3.30.0",
|
||||
"@react-types/shared": "^3.31.0",
|
||||
"@swc/helpers": "^0.5.0",
|
||||
"clsx": "^2.0.0"
|
||||
},
|
||||
|
|
@ -3123,15 +3125,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-aria/interactions": {
|
||||
"version": "3.25.3",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.3.tgz",
|
||||
"integrity": "sha512-J1bhlrNtjPS/fe5uJQ+0c7/jiXniwa4RQlP+Emjfc/iuqpW2RhbF9ou5vROcLzWIyaW8tVMZ468J68rAs/aZ5A==",
|
||||
"version": "3.25.4",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.4.tgz",
|
||||
"integrity": "sha512-HBQMxgUPHrW8V63u9uGgBymkMfj6vdWbB0GgUJY49K9mBKMsypcHeWkWM6+bF7kxRO728/IK8bWDV6whDbqjHg==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@react-aria/ssr": "^3.9.9",
|
||||
"@react-aria/utils": "^3.29.1",
|
||||
"@react-aria/ssr": "^3.9.10",
|
||||
"@react-aria/utils": "^3.30.0",
|
||||
"@react-stately/flags": "^3.1.2",
|
||||
"@react-types/shared": "^3.30.0",
|
||||
"@react-types/shared": "^3.31.0",
|
||||
"@swc/helpers": "^0.5.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
|
@ -3140,9 +3142,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-aria/ssr": {
|
||||
"version": "3.9.9",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.9.tgz",
|
||||
"integrity": "sha512-2P5thfjfPy/np18e5wD4WPt8ydNXhij1jwA8oehxZTFqlgVMGXzcWKxTb4RtJrLFsqPO7RUQTiY8QJk0M4Vy2g==",
|
||||
"version": "3.9.10",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.10.tgz",
|
||||
"integrity": "sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@swc/helpers": "^0.5.0"
|
||||
|
|
@ -3155,15 +3157,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-aria/utils": {
|
||||
"version": "3.29.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.29.1.tgz",
|
||||
"integrity": "sha512-yXMFVJ73rbQ/yYE/49n5Uidjw7kh192WNN9PNQGV0Xoc7EJUlSOxqhnpHmYTyO0EotJ8fdM1fMH8durHjUSI8g==",
|
||||
"version": "3.30.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.30.0.tgz",
|
||||
"integrity": "sha512-ydA6y5G1+gbem3Va2nczj/0G0W7/jUVo/cbN10WA5IizzWIwMP5qhFr7macgbKfHMkZ+YZC3oXnt2NNre5odKw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@react-aria/ssr": "^3.9.9",
|
||||
"@react-aria/ssr": "^3.9.10",
|
||||
"@react-stately/flags": "^3.1.2",
|
||||
"@react-stately/utils": "^3.10.7",
|
||||
"@react-types/shared": "^3.30.0",
|
||||
"@react-stately/utils": "^3.10.8",
|
||||
"@react-types/shared": "^3.31.0",
|
||||
"@swc/helpers": "^0.5.0",
|
||||
"clsx": "^2.0.0"
|
||||
},
|
||||
|
|
@ -3182,9 +3184,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-stately/utils": {
|
||||
"version": "3.10.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.7.tgz",
|
||||
"integrity": "sha512-cWvjGAocvy4abO9zbr6PW6taHgF24Mwy/LbQ4TC4Aq3tKdKDntxyD+sh7AkSRfJRT2ccMVaHVv2+FfHThd3PKQ==",
|
||||
"version": "3.10.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.8.tgz",
|
||||
"integrity": "sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@swc/helpers": "^0.5.0"
|
||||
|
|
@ -3194,9 +3196,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-types/shared": {
|
||||
"version": "3.30.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.30.0.tgz",
|
||||
"integrity": "sha512-COIazDAx1ncDg046cTJ8SFYsX8aS3lB/08LDnbkH/SkdYrFPWDlXMrO/sUam8j1WWM+PJ+4d1mj7tODIKNiFog==",
|
||||
"version": "3.31.0",
|
||||
"resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.31.0.tgz",
|
||||
"integrity": "sha512-ua5U6V66gDcbLZe4P2QeyNgPp4YWD1ymGA6j3n+s8CGExtrCPe64v+g4mvpT8Bnb985R96e4zFT61+m0YCwqMg==",
|
||||
"license": "Apache-2.0",
|
||||
"peerDependencies": {
|
||||
"react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
|
||||
|
|
@ -3391,9 +3393,9 @@
|
|||
"peer": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.8.tgz",
|
||||
"integrity": "sha512-HzbgCY53T6bfu4tT7Aq3TvViJyHjLjPNaAS3HOuMc9pw97KHsUtXNX4L+wu59g1WnjsZSko35MbEqnO58rihhw==",
|
||||
"version": "20.19.9",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.9.tgz",
|
||||
"integrity": "sha512-cuVNgarYWZqxRJDQHEB58GEONhOK79QVR/qYx4S7kcUObQvUwvFnYxJuuHUKm2aieN9X3yZB4LZsuYNU1Qphsw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~6.21.0"
|
||||
|
|
@ -3445,6 +3447,16 @@
|
|||
"@types/react": "^19.0.0"
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/react": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/react-syntax-highlighter": {
|
||||
"version": "15.5.13",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.13.tgz",
|
||||
|
|
@ -4341,13 +4353,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/axios": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz",
|
||||
"integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==",
|
||||
"version": "1.11.0",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz",
|
||||
"integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.6",
|
||||
"form-data": "^4.0.0",
|
||||
"form-data": "^4.0.4",
|
||||
"proxy-from-env": "^1.1.0"
|
||||
}
|
||||
},
|
||||
|
|
@ -4832,25 +4844,25 @@
|
|||
}
|
||||
},
|
||||
"node_modules/cheerio": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.0.tgz",
|
||||
"integrity": "sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==",
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz",
|
||||
"integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cheerio-select": "^2.1.0",
|
||||
"dom-serializer": "^2.0.0",
|
||||
"domhandler": "^5.0.3",
|
||||
"domutils": "^3.2.2",
|
||||
"encoding-sniffer": "^0.2.0",
|
||||
"encoding-sniffer": "^0.2.1",
|
||||
"htmlparser2": "^10.0.0",
|
||||
"parse5": "^7.3.0",
|
||||
"parse5-htmlparser2-tree-adapter": "^7.1.0",
|
||||
"parse5-parser-stream": "^7.1.2",
|
||||
"undici": "^7.10.0",
|
||||
"undici": "^7.12.0",
|
||||
"whatwg-mimetype": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.17"
|
||||
"node": ">=20.18.1"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/cheeriojs/cheerio?sponsor=1"
|
||||
|
|
@ -5758,9 +5770,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.5.186",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.186.tgz",
|
||||
"integrity": "sha512-lur7L4BFklgepaJxj4DqPk7vKbTEl0pajNlg2QjE5shefmlmBLm2HvQ7PMf1R/GvlevT/581cop33/quQcfX3A==",
|
||||
"version": "1.5.190",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.190.tgz",
|
||||
"integrity": "sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
|
|
@ -6571,6 +6583,12 @@
|
|||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fast-equals": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz",
|
||||
"integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fast-fifo": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
|
||||
|
|
@ -6833,9 +6851,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/form-data": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
|
||||
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
|
||||
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"asynckit": "^0.4.0",
|
||||
|
|
@ -7255,9 +7273,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/groq-sdk/node_modules/@types/node": {
|
||||
"version": "18.19.119",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.119.tgz",
|
||||
"integrity": "sha512-d0F6m9itIPaKnrvEMlzE48UjwZaAnFW7Jwibacw9MNdqadjKNpUm9tfJYDwmShJmgqcoqYUX3EMKO1+RWiuuNg==",
|
||||
"version": "18.19.120",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.120.tgz",
|
||||
"integrity": "sha512-WtCGHFXnVI8WHLxDAt5TbnCM4eSE+nI0QN2NJtwzcgMhht2eNz6V9evJrk+lwC8bCY8OWV5Ym8Jz7ZEyGnKnMA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~5.26.4"
|
||||
|
|
@ -7535,9 +7553,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/ibm-cloud-sdk-core": {
|
||||
"version": "5.4.0",
|
||||
"resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-5.4.0.tgz",
|
||||
"integrity": "sha512-c4cwOuUDbMiFROYM/Ti1aC+Umi1v3TdvC2DO5zR7w44FYY/3xrs79+3DVPXt/nRhJeaMHN2L9XwlXsPSoVDHJA==",
|
||||
"version": "5.4.1",
|
||||
"resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-5.4.1.tgz",
|
||||
"integrity": "sha512-kGh1KlkFHFsJANWiGTJZ5PNoL4bZHAGprAa/uSFvLpJdKUEOH+xUAUYcLMTH71jtgy9Wl2ePDjaLWiWe80uGiA==",
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
|
|
@ -7550,7 +7568,7 @@
|
|||
"dotenv": "^16.4.5",
|
||||
"extend": "3.0.2",
|
||||
"file-type": "16.5.4",
|
||||
"form-data": "4.0.0",
|
||||
"form-data": "^4.0.4",
|
||||
"isstream": "0.1.2",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"mime-types": "2.1.35",
|
||||
|
|
@ -7562,30 +7580,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/ibm-cloud-sdk-core/node_modules/@types/node": {
|
||||
"version": "18.19.119",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.119.tgz",
|
||||
"integrity": "sha512-d0F6m9itIPaKnrvEMlzE48UjwZaAnFW7Jwibacw9MNdqadjKNpUm9tfJYDwmShJmgqcoqYUX3EMKO1+RWiuuNg==",
|
||||
"version": "18.19.120",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.120.tgz",
|
||||
"integrity": "sha512-WtCGHFXnVI8WHLxDAt5TbnCM4eSE+nI0QN2NJtwzcgMhht2eNz6V9evJrk+lwC8bCY8OWV5Ym8Jz7ZEyGnKnMA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"undici-types": "~5.26.4"
|
||||
}
|
||||
},
|
||||
"node_modules/ibm-cloud-sdk-core/node_modules/form-data": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
||||
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.8",
|
||||
"mime-types": "^2.1.12"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/ibm-cloud-sdk-core/node_modules/undici-types": {
|
||||
"version": "5.26.5",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
|
||||
|
|
@ -8280,7 +8283,6 @@
|
|||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/js-yaml": {
|
||||
|
|
@ -8593,9 +8595,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/langsmith": {
|
||||
"version": "0.3.46",
|
||||
"resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.3.46.tgz",
|
||||
"integrity": "sha512-Hhi4/cMjhWIGpu0DW5eQrXBbeeKQWPYYQyJCYzhFjod+xinMry4i8QR0gxrrgjGOgfMuU6nyK79YqjGTEPVbDA==",
|
||||
"version": "0.3.48",
|
||||
"resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.3.48.tgz",
|
||||
"integrity": "sha512-oEsj0Z8S2Chgb3vJzRX2vplLu4RWR1cpraIaVwv2PsNZ57VbHgZEdXdeh5kh16iP8PAv04JkBncP+KLRoKBFEw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/uuid": "^10.0.0",
|
||||
|
|
@ -8806,7 +8808,6 @@
|
|||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
||||
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"js-tokens": "^3.0.0 || ^4.0.0"
|
||||
|
|
@ -8898,9 +8899,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/markdown-to-jsx": {
|
||||
"version": "7.7.10",
|
||||
"resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.10.tgz",
|
||||
"integrity": "sha512-au62yyLyJukhC2P1TYi3uBi/RScGYai69uT72D8a048QH8rRj+yhND3C21GdZHE+6emtsf6Yqemcf//K+EIWDg==",
|
||||
"version": "7.7.12",
|
||||
"resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.12.tgz",
|
||||
"integrity": "sha512-Y5xNBqoaTooSLkmlg2P0fdbh53gp4MqW7zhvcweGCPUWvWI5BecWRYI8vPlzT8D7OULxsQg2qoRW9EsJlBWasQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
|
|
@ -9061,9 +9062,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/napi-postinstall": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.0.tgz",
|
||||
"integrity": "sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==",
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.2.tgz",
|
||||
"integrity": "sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
|
|
@ -9084,12 +9085,12 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/next": {
|
||||
"version": "15.4.1",
|
||||
"resolved": "https://registry.npmjs.org/next/-/next-15.4.1.tgz",
|
||||
"integrity": "sha512-eNKB1q8C7o9zXF8+jgJs2CzSLIU3T6bQtX6DcTnCq1sIR1CJ0GlSyRs1BubQi3/JgCnr9Vr+rS5mOMI38FFyQw==",
|
||||
"version": "15.4.3",
|
||||
"resolved": "https://registry.npmjs.org/next/-/next-15.4.3.tgz",
|
||||
"integrity": "sha512-uW7Qe6poVasNIE1X382nI29oxSdFJzjQzTgJFLD43MxyPfGKKxCMySllhBpvqr48f58Om+tLMivzRwBpXEytvA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@next/env": "15.4.1",
|
||||
"@next/env": "15.4.3",
|
||||
"@swc/helpers": "0.5.15",
|
||||
"caniuse-lite": "^1.0.30001579",
|
||||
"postcss": "8.4.31",
|
||||
|
|
@ -9102,14 +9103,14 @@
|
|||
"node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@next/swc-darwin-arm64": "15.4.1",
|
||||
"@next/swc-darwin-x64": "15.4.1",
|
||||
"@next/swc-linux-arm64-gnu": "15.4.1",
|
||||
"@next/swc-linux-arm64-musl": "15.4.1",
|
||||
"@next/swc-linux-x64-gnu": "15.4.1",
|
||||
"@next/swc-linux-x64-musl": "15.4.1",
|
||||
"@next/swc-win32-arm64-msvc": "15.4.1",
|
||||
"@next/swc-win32-x64-msvc": "15.4.1",
|
||||
"@next/swc-darwin-arm64": "15.4.3",
|
||||
"@next/swc-darwin-x64": "15.4.3",
|
||||
"@next/swc-linux-arm64-gnu": "15.4.3",
|
||||
"@next/swc-linux-arm64-musl": "15.4.3",
|
||||
"@next/swc-linux-x64-gnu": "15.4.3",
|
||||
"@next/swc-linux-x64-musl": "15.4.3",
|
||||
"@next/swc-win32-arm64-msvc": "15.4.3",
|
||||
"@next/swc-win32-x64-msvc": "15.4.3",
|
||||
"sharp": "^0.34.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
|
@ -9619,9 +9620,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/openai/node_modules/@types/node": {
|
||||
"version": "18.19.119",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.119.tgz",
|
||||
"integrity": "sha512-d0F6m9itIPaKnrvEMlzE48UjwZaAnFW7Jwibacw9MNdqadjKNpUm9tfJYDwmShJmgqcoqYUX3EMKO1+RWiuuNg==",
|
||||
"version": "18.19.120",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.120.tgz",
|
||||
"integrity": "sha512-WtCGHFXnVI8WHLxDAt5TbnCM4eSE+nI0QN2NJtwzcgMhht2eNz6V9evJrk+lwC8bCY8OWV5Ym8Jz7ZEyGnKnMA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
|
|
@ -10295,7 +10296,6 @@
|
|||
"version": "15.8.1",
|
||||
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
|
||||
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.4.0",
|
||||
|
|
@ -10462,13 +10462,57 @@
|
|||
"react": "^19.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-draggable": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.5.0.tgz",
|
||||
"integrity": "sha512-VC+HBLEZ0XJxnOxVAZsdRi8rD04Iz3SiiKOoYzamjylUcju/hP9np/aZdLHf/7WOD268WMoNJMvYfB5yAK45cw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"clsx": "^2.1.1",
|
||||
"prop-types": "^15.8.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">= 16.3.0",
|
||||
"react-dom": ">= 16.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-grid-layout": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/react-grid-layout/-/react-grid-layout-1.5.2.tgz",
|
||||
"integrity": "sha512-vT7xmQqszTT+sQw/LfisrEO4le1EPNnSEMVHy6sBZyzS3yGkMywdOd+5iEFFwQwt0NSaGkxuRmYwa1JsP6OJdw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"clsx": "^2.1.1",
|
||||
"fast-equals": "^4.0.3",
|
||||
"prop-types": "^15.8.1",
|
||||
"react-draggable": "^4.4.6",
|
||||
"react-resizable": "^3.0.5",
|
||||
"resize-observer-polyfill": "^1.5.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">= 16.3.0",
|
||||
"react-dom": ">= 16.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-is": {
|
||||
"version": "16.13.1",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
||||
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/react-resizable": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/react-resizable/-/react-resizable-3.0.5.tgz",
|
||||
"integrity": "sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"prop-types": "15.x",
|
||||
"react-draggable": "^4.0.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">= 16.3"
|
||||
}
|
||||
},
|
||||
"node_modules/react-syntax-highlighter": {
|
||||
"version": "15.6.1",
|
||||
"resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz",
|
||||
|
|
@ -10715,6 +10759,12 @@
|
|||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/resize-observer-polyfill": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
|
||||
"integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/resolve": {
|
||||
"version": "1.22.10",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
|
||||
|
|
@ -12262,9 +12312,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/undici": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-7.11.0.tgz",
|
||||
"integrity": "sha512-heTSIac3iLhsmZhUCjyS3JQEkZELateufzZuBaVM5RHXdSBMb1LPMQf5x+FH7qjsZYDP0ttAc3nnVpUB+wYbOg==",
|
||||
"version": "7.12.0",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-7.12.0.tgz",
|
||||
"integrity": "sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=20.18.1"
|
||||
|
|
@ -12480,17 +12530,17 @@
|
|||
}
|
||||
},
|
||||
"node_modules/weaviate-client": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmjs.org/weaviate-client/-/weaviate-client-3.6.2.tgz",
|
||||
"integrity": "sha512-6z+Du0Sp+nVp4Mhsn25sd+Qw6fr60vbyUS1e3gTZqtMrxLuNC1xgA0J/MHu5oHcm6moCBqT/2AQCt4ZV4fYSaw==",
|
||||
"version": "3.8.0",
|
||||
"resolved": "https://registry.npmjs.org/weaviate-client/-/weaviate-client-3.8.0.tgz",
|
||||
"integrity": "sha512-8yWNY3OIAh1H/W+414o17em/3CSDc5f4/sMjCrFksVppczHC1mB1f0fCFosg9fpQGegLT+Ll6un82sTGYxFhqw==",
|
||||
"license": "BSD 3-Clause",
|
||||
"dependencies": {
|
||||
"abort-controller-x": "^0.4.3",
|
||||
"graphql": "^16.10.0",
|
||||
"graphql": "^16.11.0",
|
||||
"graphql-request": "^6.1.0",
|
||||
"long": "^5.2.4",
|
||||
"nice-grpc": "^2.1.11",
|
||||
"nice-grpc-client-middleware-retry": "^3.1.10",
|
||||
"long": "^5.3.2",
|
||||
"nice-grpc": "^2.1.12",
|
||||
"nice-grpc-client-middleware-retry": "^3.1.11",
|
||||
"nice-grpc-common": "^2.0.2",
|
||||
"uuid": "^9.0.1"
|
||||
},
|
||||
|
|
@ -12998,9 +13048,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/yet-another-react-lightbox": {
|
||||
"version": "3.24.0",
|
||||
"resolved": "https://registry.npmjs.org/yet-another-react-lightbox/-/yet-another-react-lightbox-3.24.0.tgz",
|
||||
"integrity": "sha512-j3YtwDT+fdBBhxbaxfthHMehXkUj388rpn7knc934H86bJJDBEL/m9WFGdKq2ivT3GaUPF+41GplKFbAv8bOmg==",
|
||||
"version": "3.25.0",
|
||||
"resolved": "https://registry.npmjs.org/yet-another-react-lightbox/-/yet-another-react-lightbox-3.25.0.tgz",
|
||||
"integrity": "sha512-NaCeEXCpdwoTvoOpxNK9gdW8+oHs79yVH+D2YeVQWRjH5i32e5CoXndAAFP2p8awzVYfSonherrE9JMTpfD3EA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@
|
|||
"playwright": "^1.52.0",
|
||||
"react": "^19",
|
||||
"react-dom": "^19",
|
||||
"react-grid-layout": "^1.5.2",
|
||||
"react-syntax-highlighter": "^15.6.1",
|
||||
"react-text-to-speech": "^2.1.2",
|
||||
"react-textarea-autosize": "^8.5.3",
|
||||
|
|
@ -69,6 +70,7 @@
|
|||
"@types/pdf-parse": "^1.1.4",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"@types/react-grid-layout": "^1.3.5",
|
||||
"autoprefixer": "^10.0.1",
|
||||
"drizzle-kit": "^0.30.5",
|
||||
"eslint": "^8",
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@ import {
|
|||
Layers,
|
||||
List,
|
||||
} from 'lucide-react';
|
||||
import { useState, useEffect, useRef } from 'react';
|
||||
import { useState, useEffect, useRef, useMemo } from 'react';
|
||||
import { Responsive, WidthProvider } from 'react-grid-layout';
|
||||
import {
|
||||
Card,
|
||||
CardContent,
|
||||
|
|
@ -22,8 +23,11 @@ import WidgetConfigModal from '@/components/dashboard/WidgetConfigModal';
|
|||
import WidgetDisplay from '@/components/dashboard/WidgetDisplay';
|
||||
import { useDashboard } from '@/lib/hooks/useDashboard';
|
||||
import { Widget, WidgetConfig } from '@/lib/types/widget';
|
||||
import { DASHBOARD_CONSTRAINTS } from '@/lib/constants/dashboard';
|
||||
import { toast } from 'sonner';
|
||||
|
||||
const ResponsiveGridLayout = WidthProvider(Responsive);
|
||||
|
||||
const DashboardPage = () => {
|
||||
const {
|
||||
widgets,
|
||||
|
|
@ -37,17 +41,21 @@ const DashboardPage = () => {
|
|||
importDashboard,
|
||||
settings,
|
||||
updateSettings,
|
||||
getLayouts,
|
||||
updateLayouts,
|
||||
} = useDashboard();
|
||||
|
||||
const [showAddModal, setShowAddModal] = useState(false);
|
||||
const [editingWidget, setEditingWidget] = useState<Widget | null>(null);
|
||||
const hasAutoRefreshed = useRef(false);
|
||||
|
||||
// Memoize the ResponsiveGridLayout to prevent re-renders
|
||||
const ResponsiveGrid = useMemo(() => ResponsiveGridLayout, []);
|
||||
|
||||
// Auto-refresh stale widgets when dashboard loads (only once)
|
||||
useEffect(() => {
|
||||
if (!isLoading && widgets.length > 0 && !hasAutoRefreshed.current) {
|
||||
hasAutoRefreshed.current = true;
|
||||
|
||||
refreshAllWidgets();
|
||||
}
|
||||
}, [isLoading, widgets, refreshAllWidgets]);
|
||||
|
|
@ -119,6 +127,25 @@ const DashboardPage = () => {
|
|||
updateSettings({ parallelLoading: !settings.parallelLoading });
|
||||
};
|
||||
|
||||
// Handle layout changes from react-grid-layout
|
||||
const handleLayoutChange = (layout: any, layouts: any) => {
|
||||
updateLayouts(layouts);
|
||||
};
|
||||
|
||||
// Memoize grid children to prevent unnecessary re-renders
|
||||
const gridChildren = useMemo(() => {
|
||||
return widgets.map((widget) => (
|
||||
<div key={widget.id}>
|
||||
<WidgetDisplay
|
||||
widget={widget}
|
||||
onEdit={handleEditWidget}
|
||||
onDelete={handleDeleteWidget}
|
||||
onRefresh={handleRefreshWidget}
|
||||
/>
|
||||
</div>
|
||||
));
|
||||
}, [widgets]);
|
||||
|
||||
// Empty state component
|
||||
const EmptyDashboard = () => (
|
||||
<div className="col-span-2 flex justify-center items-center min-h-[400px]">
|
||||
|
|
@ -224,22 +251,23 @@ const DashboardPage = () => {
|
|||
) : widgets.length === 0 ? (
|
||||
<EmptyDashboard />
|
||||
) : (
|
||||
<div
|
||||
className="grid gap-6 auto-rows-min"
|
||||
style={{
|
||||
gridTemplateColumns: 'repeat(auto-fit, minmax(400px, 1fr))',
|
||||
}}
|
||||
<ResponsiveGrid
|
||||
className="layout"
|
||||
layouts={getLayouts()}
|
||||
breakpoints={DASHBOARD_CONSTRAINTS.GRID_BREAKPOINTS}
|
||||
cols={DASHBOARD_CONSTRAINTS.GRID_COLUMNS}
|
||||
rowHeight={DASHBOARD_CONSTRAINTS.GRID_ROW_HEIGHT}
|
||||
margin={DASHBOARD_CONSTRAINTS.GRID_MARGIN}
|
||||
containerPadding={DASHBOARD_CONSTRAINTS.GRID_CONTAINER_PADDING}
|
||||
onLayoutChange={handleLayoutChange}
|
||||
isDraggable={true}
|
||||
isResizable={true}
|
||||
compactType="vertical"
|
||||
preventCollision={false}
|
||||
draggableHandle=".widget-drag-handle"
|
||||
>
|
||||
{widgets.map((widget) => (
|
||||
<WidgetDisplay
|
||||
key={widget.id}
|
||||
widget={widget}
|
||||
onEdit={handleEditWidget}
|
||||
onDelete={handleDeleteWidget}
|
||||
onRefresh={handleRefreshWidget}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
{gridChildren}
|
||||
</ResponsiveGrid>
|
||||
)}
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,12 @@
|
|||
/* React Grid Layout styles */
|
||||
@import "react-grid-layout/css/styles.css";
|
||||
@import "react-resizable/css/styles.css";
|
||||
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
|
||||
@layer base {
|
||||
.overflow-hidden-scrollable {
|
||||
-ms-overflow-style: none;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import {
|
|||
AlertCircle,
|
||||
ChevronDown,
|
||||
ChevronUp,
|
||||
GripVertical,
|
||||
} from 'lucide-react';
|
||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||
import MarkdownRenderer from '@/components/MarkdownRenderer';
|
||||
|
|
@ -49,14 +50,24 @@ const WidgetDisplay = ({
|
|||
};
|
||||
|
||||
return (
|
||||
<Card className="flex flex-col h-fit">
|
||||
<CardHeader className="pb-3">
|
||||
<Card className="flex flex-col h-full w-full">
|
||||
<CardHeader className="pb-3 flex-shrink-0">
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="flex items-center space-x-2 flex-1 min-w-0">
|
||||
{/* Drag Handle */}
|
||||
<div
|
||||
className="widget-drag-handle flex-shrink-0 p-1 rounded hover:bg-light-secondary dark:hover:bg-dark-secondary cursor-move transition-colors"
|
||||
title="Drag to move widget"
|
||||
>
|
||||
<GripVertical size={16} className="text-gray-400 dark:text-gray-500" />
|
||||
</div>
|
||||
|
||||
<CardTitle className="text-lg font-medium truncate">
|
||||
{widget.title}
|
||||
</CardTitle>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex items-center space-x-2 flex-shrink-0">
|
||||
{/* Last updated date with refresh frequency tooltip */}
|
||||
<span
|
||||
className="text-xs text-gray-500 dark:text-gray-400"
|
||||
|
|
@ -81,7 +92,8 @@ const WidgetDisplay = ({
|
|||
</div>
|
||||
</CardHeader>
|
||||
|
||||
<CardContent className="flex-1 max-h-[50vh] overflow-y-auto">
|
||||
<CardContent className="flex-1 overflow-hidden">
|
||||
<div className="h-full overflow-y-auto">
|
||||
{widget.isLoading ? (
|
||||
<div className="flex items-center justify-center py-8 text-gray-500 dark:text-gray-400">
|
||||
<RefreshCw size={20} className="animate-spin mr-2" />
|
||||
|
|
@ -103,7 +115,7 @@ const WidgetDisplay = ({
|
|||
</div>
|
||||
</div>
|
||||
) : widget.content ? (
|
||||
<div className="prose prose-sm dark:prose-invert">
|
||||
<div className="prose prose-sm dark:prose-invert max-w-none">
|
||||
<MarkdownRenderer content={widget.content} thinkOverlay={true} />
|
||||
</div>
|
||||
) : (
|
||||
|
|
@ -114,10 +126,11 @@ const WidgetDisplay = ({
|
|||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</CardContent>
|
||||
|
||||
{/* Collapsible footer with sources and actions */}
|
||||
<div className="bg-light-secondary/30 dark:bg-dark-secondary/30">
|
||||
<div className="bg-light-secondary/30 dark:bg-dark-secondary/30 flex-shrink-0">
|
||||
<button
|
||||
onClick={() => setIsFooterExpanded(!isFooterExpanded)}
|
||||
className="w-full px-4 py-2 flex items-center space-x-2 text-xs text-gray-500 dark:text-gray-400 hover:bg-light-secondary dark:hover:bg-dark-secondary transition-colors"
|
||||
|
|
|
|||
44
src/lib/constants/dashboard.ts
Normal file
44
src/lib/constants/dashboard.ts
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
// Dashboard-wide constants and constraints
|
||||
export const DASHBOARD_CONSTRAINTS = {
|
||||
// Grid layout constraints
|
||||
WIDGET_MIN_WIDTH: 2, // Minimum columns
|
||||
WIDGET_MAX_WIDTH: 12, // Maximum columns (full width)
|
||||
WIDGET_MIN_HEIGHT: 2, // Minimum rows
|
||||
WIDGET_MAX_HEIGHT: 20, // Maximum rows
|
||||
|
||||
// Default widget sizing
|
||||
DEFAULT_WIDGET_WIDTH: 6, // Half width by default
|
||||
DEFAULT_WIDGET_HEIGHT: 4, // Standard height
|
||||
|
||||
// Grid configuration
|
||||
GRID_COLUMNS: {
|
||||
lg: 12,
|
||||
md: 10,
|
||||
sm: 6,
|
||||
xs: 4,
|
||||
xxs: 2,
|
||||
},
|
||||
|
||||
GRID_BREAKPOINTS: {
|
||||
lg: 1200,
|
||||
md: 996,
|
||||
sm: 768,
|
||||
xs: 480,
|
||||
xxs: 0,
|
||||
},
|
||||
|
||||
GRID_ROW_HEIGHT: 60,
|
||||
GRID_MARGIN: [16, 16] as [number, number],
|
||||
GRID_CONTAINER_PADDING: [0, 0] as [number, number],
|
||||
} as const;
|
||||
|
||||
// Responsive constraints - adjust max width based on breakpoint
|
||||
export const getResponsiveConstraints = (breakpoint: keyof typeof DASHBOARD_CONSTRAINTS.GRID_COLUMNS) => {
|
||||
const maxCols = DASHBOARD_CONSTRAINTS.GRID_COLUMNS[breakpoint];
|
||||
return {
|
||||
minW: DASHBOARD_CONSTRAINTS.WIDGET_MIN_WIDTH,
|
||||
maxW: Math.min(DASHBOARD_CONSTRAINTS.WIDGET_MAX_WIDTH, maxCols),
|
||||
minH: DASHBOARD_CONSTRAINTS.WIDGET_MIN_HEIGHT,
|
||||
maxH: DASHBOARD_CONSTRAINTS.WIDGET_MAX_HEIGHT,
|
||||
};
|
||||
};
|
||||
|
|
@ -1,11 +1,15 @@
|
|||
import { useState, useEffect, useCallback } from 'react';
|
||||
import { Widget, WidgetConfig } from '@/lib/types/widget';
|
||||
import { Layout } from 'react-grid-layout';
|
||||
import { Widget, WidgetConfig, WidgetLayout } from '@/lib/types/widget';
|
||||
import {
|
||||
DashboardState,
|
||||
DashboardConfig,
|
||||
DashboardLayouts,
|
||||
GridLayoutItem,
|
||||
DASHBOARD_STORAGE_KEYS,
|
||||
} from '@/lib/types/dashboard';
|
||||
import { WidgetCache } from '@/lib/types/cache';
|
||||
import { DASHBOARD_CONSTRAINTS, getResponsiveConstraints } from '@/lib/constants/dashboard';
|
||||
|
||||
// Helper function to request location permission and get user's location
|
||||
const requestLocationPermission = async (): Promise<string | undefined> => {
|
||||
|
|
@ -81,6 +85,10 @@ interface UseDashboardReturn {
|
|||
refreshWidget: (id: string, forceRefresh?: boolean) => Promise<void>;
|
||||
refreshAllWidgets: (forceRefresh?: boolean) => Promise<void>;
|
||||
|
||||
// Layout management
|
||||
updateLayouts: (layouts: DashboardLayouts) => void;
|
||||
getLayouts: () => DashboardLayouts;
|
||||
|
||||
// Storage management
|
||||
exportDashboard: () => Promise<string>;
|
||||
importDashboard: (configJson: string) => Promise<void>;
|
||||
|
|
@ -108,11 +116,24 @@ export const useDashboard = (): UseDashboardReturn => {
|
|||
const savedWidgets = localStorage.getItem(DASHBOARD_STORAGE_KEYS.WIDGETS);
|
||||
const widgets: Widget[] = savedWidgets ? JSON.parse(savedWidgets) : [];
|
||||
|
||||
// Convert date strings back to Date objects
|
||||
widgets.forEach((widget) => {
|
||||
// Convert date strings back to Date objects and ensure layout exists
|
||||
widgets.forEach((widget, index) => {
|
||||
if (widget.lastUpdated) {
|
||||
widget.lastUpdated = new Date(widget.lastUpdated);
|
||||
}
|
||||
|
||||
// Migration: Add default layout if missing
|
||||
if (!widget.layout) {
|
||||
const defaultLayout: WidgetLayout = {
|
||||
x: (index % 2) * 6, // Alternate between columns
|
||||
y: Math.floor(index / 2) * 4, // Stack rows
|
||||
w: DASHBOARD_CONSTRAINTS.DEFAULT_WIDGET_WIDTH,
|
||||
h: DASHBOARD_CONSTRAINTS.DEFAULT_WIDGET_HEIGHT,
|
||||
isDraggable: true,
|
||||
isResizable: true,
|
||||
};
|
||||
widget.layout = defaultLayout;
|
||||
}
|
||||
});
|
||||
|
||||
// Load settings
|
||||
|
|
@ -167,6 +188,44 @@ export const useDashboard = (): UseDashboardReturn => {
|
|||
}, [state.settings]);
|
||||
|
||||
const addWidget = useCallback((config: WidgetConfig) => {
|
||||
// Find the next available position in the grid
|
||||
const getNextPosition = () => {
|
||||
const existingWidgets = state.widgets;
|
||||
let x = 0;
|
||||
let y = 0;
|
||||
|
||||
// Simple algorithm: try to place in first available spot
|
||||
for (let row = 0; row < 20; row++) {
|
||||
for (let col = 0; col < 12; col += 6) { // Start with half-width widgets
|
||||
const position = { x: col, y: row };
|
||||
const hasCollision = existingWidgets.some(widget =>
|
||||
widget.layout.x < position.x + 6 &&
|
||||
widget.layout.x + widget.layout.w > position.x &&
|
||||
widget.layout.y < position.y + 3 &&
|
||||
widget.layout.y + widget.layout.h > position.y
|
||||
);
|
||||
|
||||
if (!hasCollision) {
|
||||
return { x: position.x, y: position.y };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback: place at bottom
|
||||
const maxY = Math.max(0, ...existingWidgets.map(w => w.layout.y + w.layout.h));
|
||||
return { x: 0, y: maxY };
|
||||
};
|
||||
|
||||
const position = getNextPosition();
|
||||
const defaultLayout: WidgetLayout = {
|
||||
x: position.x,
|
||||
y: position.y,
|
||||
w: DASHBOARD_CONSTRAINTS.DEFAULT_WIDGET_WIDTH,
|
||||
h: DASHBOARD_CONSTRAINTS.DEFAULT_WIDGET_HEIGHT,
|
||||
isDraggable: true,
|
||||
isResizable: true,
|
||||
};
|
||||
|
||||
const newWidget: Widget = {
|
||||
...config,
|
||||
id: Date.now().toString() + Math.random().toString(36).substr(2, 9),
|
||||
|
|
@ -174,20 +233,26 @@ export const useDashboard = (): UseDashboardReturn => {
|
|||
isLoading: false,
|
||||
content: null,
|
||||
error: null,
|
||||
layout: config.layout || defaultLayout,
|
||||
};
|
||||
|
||||
setState((prev) => ({
|
||||
...prev,
|
||||
widgets: [...prev.widgets, newWidget],
|
||||
}));
|
||||
}, []);
|
||||
}, [state.widgets]);
|
||||
|
||||
const updateWidget = useCallback((id: string, config: WidgetConfig) => {
|
||||
setState((prev) => ({
|
||||
...prev,
|
||||
widgets: prev.widgets.map((widget) =>
|
||||
widget.id === id
|
||||
? { ...widget, ...config, id } // Preserve the ID
|
||||
? {
|
||||
...widget,
|
||||
...config,
|
||||
id, // Preserve the ID
|
||||
layout: config.layout || widget.layout, // Preserve existing layout if not provided
|
||||
}
|
||||
: widget,
|
||||
),
|
||||
}));
|
||||
|
|
@ -436,6 +501,63 @@ export const useDashboard = (): UseDashboardReturn => {
|
|||
[],
|
||||
);
|
||||
|
||||
const getLayouts = useCallback((): DashboardLayouts => {
|
||||
const createBreakpointLayout = (breakpoint: keyof typeof DASHBOARD_CONSTRAINTS.GRID_COLUMNS) => {
|
||||
const constraints = getResponsiveConstraints(breakpoint);
|
||||
const maxCols = DASHBOARD_CONSTRAINTS.GRID_COLUMNS[breakpoint];
|
||||
|
||||
return state.widgets.map(widget => ({
|
||||
i: widget.id,
|
||||
x: widget.layout.x,
|
||||
y: widget.layout.y,
|
||||
w: Math.min(widget.layout.w, maxCols), // Constrain width to available columns
|
||||
h: widget.layout.h,
|
||||
minW: constraints.minW,
|
||||
maxW: constraints.maxW,
|
||||
minH: constraints.minH,
|
||||
maxH: constraints.maxH,
|
||||
static: widget.layout.static,
|
||||
isDraggable: widget.layout.isDraggable,
|
||||
isResizable: widget.layout.isResizable,
|
||||
}));
|
||||
};
|
||||
|
||||
return {
|
||||
lg: createBreakpointLayout('lg'),
|
||||
md: createBreakpointLayout('md'),
|
||||
sm: createBreakpointLayout('sm'),
|
||||
xs: createBreakpointLayout('xs'),
|
||||
xxs: createBreakpointLayout('xxs'),
|
||||
};
|
||||
}, [state.widgets]);
|
||||
|
||||
const updateLayouts = useCallback((layouts: DashboardLayouts) => {
|
||||
const updatedWidgets = state.widgets.map(widget => {
|
||||
// Use lg layout as the primary layout for position and size updates
|
||||
const newLayout = layouts.lg.find((layout: Layout) => layout.i === widget.id);
|
||||
if (newLayout) {
|
||||
return {
|
||||
...widget,
|
||||
layout: {
|
||||
x: newLayout.x,
|
||||
y: newLayout.y,
|
||||
w: newLayout.w,
|
||||
h: newLayout.h,
|
||||
static: newLayout.static || widget.layout.static,
|
||||
isDraggable: newLayout.isDraggable ?? widget.layout.isDraggable,
|
||||
isResizable: newLayout.isResizable ?? widget.layout.isResizable,
|
||||
},
|
||||
};
|
||||
}
|
||||
return widget;
|
||||
});
|
||||
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
widgets: updatedWidgets,
|
||||
}));
|
||||
}, [state.widgets]);
|
||||
|
||||
return {
|
||||
// State
|
||||
widgets: state.widgets,
|
||||
|
|
@ -450,6 +572,10 @@ export const useDashboard = (): UseDashboardReturn => {
|
|||
refreshWidget,
|
||||
refreshAllWidgets,
|
||||
|
||||
// Layout management
|
||||
updateLayouts,
|
||||
getLayouts,
|
||||
|
||||
// Storage management
|
||||
exportDashboard,
|
||||
importDashboard,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// Dashboard configuration and state types
|
||||
import { Widget } from './widget';
|
||||
import { Widget, WidgetLayout } from './widget';
|
||||
import { Layout } from 'react-grid-layout';
|
||||
|
||||
export interface DashboardConfig {
|
||||
widgets: Widget[];
|
||||
|
|
@ -19,9 +20,25 @@ export interface DashboardState {
|
|||
settings: DashboardConfig['settings'];
|
||||
}
|
||||
|
||||
// Layout item for react-grid-layout (extends WidgetLayout with required 'i' property)
|
||||
export interface GridLayoutItem extends WidgetLayout {
|
||||
i: string; // Widget ID
|
||||
}
|
||||
|
||||
// Layout configuration for responsive grid (compatible with react-grid-layout)
|
||||
export interface DashboardLayouts {
|
||||
lg: Layout[];
|
||||
md: Layout[];
|
||||
sm: Layout[];
|
||||
xs: Layout[];
|
||||
xxs: Layout[];
|
||||
[key: string]: Layout[]; // Index signature for react-grid-layout compatibility
|
||||
}
|
||||
|
||||
// Local storage keys
|
||||
export const DASHBOARD_STORAGE_KEYS = {
|
||||
WIDGETS: 'perplexica_dashboard_widgets',
|
||||
SETTINGS: 'perplexica_dashboard_settings',
|
||||
CACHE: 'perplexica_dashboard_cache',
|
||||
LAYOUTS: 'perplexica_dashboard_layouts',
|
||||
} as const;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,17 @@ export interface Source {
|
|||
type: 'Web Page' | 'HTTP Data';
|
||||
}
|
||||
|
||||
// Grid layout properties for widgets (only position and size data that should be persisted)
|
||||
export interface WidgetLayout {
|
||||
x: number;
|
||||
y: number;
|
||||
w: number;
|
||||
h: number;
|
||||
static?: boolean;
|
||||
isDraggable?: boolean;
|
||||
isResizable?: boolean;
|
||||
}
|
||||
|
||||
export interface WidgetConfig {
|
||||
id?: string;
|
||||
title: string;
|
||||
|
|
@ -14,6 +25,7 @@ export interface WidgetConfig {
|
|||
refreshFrequency: number;
|
||||
refreshUnit: 'minutes' | 'hours';
|
||||
tool_names?: string[];
|
||||
layout?: WidgetLayout;
|
||||
}
|
||||
|
||||
export interface Widget extends WidgetConfig {
|
||||
|
|
@ -22,4 +34,5 @@ export interface Widget extends WidgetConfig {
|
|||
isLoading: boolean;
|
||||
content: string | null;
|
||||
error: string | null;
|
||||
layout: WidgetLayout;
|
||||
}
|
||||
|
|
|
|||
343
yarn.lock
343
yarn.lock
|
|
@ -440,9 +440,9 @@
|
|||
yargs "^17.7.2"
|
||||
|
||||
"@headlessui/react@^2.2.0":
|
||||
version "2.2.4"
|
||||
resolved "https://registry.npmjs.org/@headlessui/react/-/react-2.2.4.tgz"
|
||||
integrity sha512-lz+OGcAH1dK93rgSMzXmm1qKOJkBUqZf1L4M8TWLNplftQD3IkoEDdUFNfAn4ylsN6WOTVtWaLmvmaHOUk1dTA==
|
||||
version "2.2.5"
|
||||
resolved "https://registry.npmjs.org/@headlessui/react/-/react-2.2.5.tgz"
|
||||
integrity sha512-h1+2Vu1yR5pp/fBcTnwVEW8Kb94Hbxp7MXZLORfDzvSrbmGgiTyaTZ4LI/tPNZnK8eDrYD9s9cMbjm5HS5otIQ==
|
||||
dependencies:
|
||||
"@floating-ui/react" "^0.26.16"
|
||||
"@react-aria/focus" "^3.20.2"
|
||||
|
|
@ -682,9 +682,9 @@
|
|||
zod "^3.25.32"
|
||||
|
||||
"@langchain/core@^0.3.57":
|
||||
version "0.3.64"
|
||||
resolved "https://registry.npmjs.org/@langchain/core/-/core-0.3.64.tgz"
|
||||
integrity sha512-KOHTnmycOPfuffLAm3wwv1rThQ47iG5a3HuWMt2qYhwwImFi6HLeYqKgmxVS5qcJjc6t0IPwR7jOvv9IKxfrAw==
|
||||
version "0.3.66"
|
||||
resolved "https://registry.npmjs.org/@langchain/core/-/core-0.3.66.tgz"
|
||||
integrity sha512-d3SgSDOlgOjdIbReIXVQl9HaQzKqO/5+E+o3kJwoKXLGP9dxi7+lMyaII7yv7G8/aUxMWLwFES9zc1jFoeJEZw==
|
||||
dependencies:
|
||||
"@cfworker/json-schema" "^4.0.2"
|
||||
ansi-styles "^5.0.0"
|
||||
|
|
@ -722,10 +722,10 @@
|
|||
dependencies:
|
||||
uuid "^10.0.0"
|
||||
|
||||
"@langchain/langgraph-sdk@~0.0.96":
|
||||
version "0.0.97"
|
||||
resolved "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.97.tgz"
|
||||
integrity sha512-MrkCFKA/Ei/haJ1bN/lQyAjEJ1ezV9Djv2BYH2L3oqxOf3COT1LoRn3P6TD0M+j1RD5VjkowUwQ3T8Uidzq9mA==
|
||||
"@langchain/langgraph-sdk@~0.0.100":
|
||||
version "0.0.100"
|
||||
resolved "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.100.tgz"
|
||||
integrity sha512-mQuj0KgjD31Me+/W658OtdlOACOjgipWp/hF80OY4w4LqWCNIQWJBWMZ3f1/E8jpog/XBCROR37auFc7Fj+4Dw==
|
||||
dependencies:
|
||||
"@types/json-schema" "^7.0.15"
|
||||
p-queue "^6.6.2"
|
||||
|
|
@ -733,12 +733,12 @@
|
|||
uuid "^9.0.0"
|
||||
|
||||
"@langchain/langgraph@^0.3.1":
|
||||
version "0.3.9"
|
||||
resolved "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-0.3.9.tgz"
|
||||
integrity sha512-eV0Qfpj45pn3A43v3JJygE1pGI8QAd+esb4iifIFWPlkjwFdVbZjqNz556Ojf2IjMLCSBpSEfZqQsRlju8fM0A==
|
||||
version "0.3.11"
|
||||
resolved "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-0.3.11.tgz"
|
||||
integrity sha512-Lh8oga4ismQyw1NGZKoHPdeGke1g5HMF7V0nBlc5R7GnV8tfC6pdsXjiEH6sYsHsRDInfy8uQeob/BwEmMSSbQ==
|
||||
dependencies:
|
||||
"@langchain/langgraph-checkpoint" "~0.0.18"
|
||||
"@langchain/langgraph-sdk" "~0.0.96"
|
||||
"@langchain/langgraph-sdk" "~0.0.100"
|
||||
uuid "^10.0.0"
|
||||
zod "^3.25.32"
|
||||
|
||||
|
|
@ -788,10 +788,10 @@
|
|||
"@emnapi/runtime" "^1.4.3"
|
||||
"@tybys/wasm-util" "^0.10.0"
|
||||
|
||||
"@next/env@15.4.1":
|
||||
version "15.4.1"
|
||||
resolved "https://registry.npmjs.org/@next/env/-/env-15.4.1.tgz"
|
||||
integrity sha512-DXQwFGAE2VH+f2TJsKepRXpODPU+scf5fDbKOME8MMyeyswe4XwgRdiiIYmBfkXU+2ssliLYznajTrOQdnLR5A==
|
||||
"@next/env@15.4.3":
|
||||
version "15.4.3"
|
||||
resolved "https://registry.npmjs.org/@next/env/-/env-15.4.3.tgz"
|
||||
integrity sha512-lKJ9KJAvaWzqurIsz6NWdQOLj96mdhuDMusLSYHw9HBe2On7BjUwU1WeRvq19x7NrEK3iOgMeSBV5qEhVH1cMw==
|
||||
|
||||
"@next/eslint-plugin-next@14.1.4":
|
||||
version "14.1.4"
|
||||
|
|
@ -800,45 +800,45 @@
|
|||
dependencies:
|
||||
glob "10.3.10"
|
||||
|
||||
"@next/swc-darwin-arm64@15.4.1":
|
||||
version "15.4.1"
|
||||
resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.4.1.tgz"
|
||||
integrity sha512-L+81yMsiHq82VRXS2RVq6OgDwjvA4kDksGU8hfiDHEXP+ncKIUhUsadAVB+MRIp2FErs/5hpXR0u2eluWPAhig==
|
||||
"@next/swc-darwin-arm64@15.4.3":
|
||||
version "15.4.3"
|
||||
resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.4.3.tgz"
|
||||
integrity sha512-YAhZWKeEYY7LHQJiQ8fe3Y6ymfcDcTn7rDC8PDu/pdeIl1Z2LHD4uyPNuQUGCEQT//MSNv6oZCeQzZfTCKZv+A==
|
||||
|
||||
"@next/swc-darwin-x64@15.4.1":
|
||||
version "15.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.4.1.tgz#8eac522eca30f20dedc93c8dccfb7efd91226d16"
|
||||
integrity sha512-jfz1RXu6SzL14lFl05/MNkcN35lTLMJWPbqt7Xaj35+ZWAX342aePIJrN6xBdGeKl6jPXJm0Yqo3Xvh3Gpo3Uw==
|
||||
"@next/swc-darwin-x64@15.4.3":
|
||||
version "15.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.4.3.tgz#8d557976013aa45b8484bdaddd625aa156ccf28a"
|
||||
integrity sha512-ZPHRdd51xaxCMpT4viQ6h8TgYM1zPW1JIeksPY9wKlyvBVUQqrWqw8kEh1sa7/x0Ied+U7pYHkAkutrUwxbMcg==
|
||||
|
||||
"@next/swc-linux-arm64-gnu@15.4.1":
|
||||
version "15.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.4.1.tgz#7e62ddf0e09d4d5198562242e0def3a43b9ee333"
|
||||
integrity sha512-k0tOFn3dsnkaGfs6iQz8Ms6f1CyQe4GacXF979sL8PNQxjYS1swx9VsOyUQYaPoGV8nAZ7OX8cYaeiXGq9ahPQ==
|
||||
"@next/swc-linux-arm64-gnu@15.4.3":
|
||||
version "15.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.4.3.tgz#48884ad1cde87f8918d12fe2c6646528485fea93"
|
||||
integrity sha512-QUdqftCXC5vw5cowucqi9FeOPQ0vdMxoOHLY0J5jPdercwSJFjdi9CkEO4Xkq1eG4t1TB/BG81n6rmTsWoILnw==
|
||||
|
||||
"@next/swc-linux-arm64-musl@15.4.1":
|
||||
version "15.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.4.1.tgz#6ea7cf91e898e3bae079e4ccc56fc8ef69130489"
|
||||
integrity sha512-4ogGQ/3qDzbbK3IwV88ltihHFbQVq6Qr+uEapzXHXBH1KsVBZOB50sn6BWHPcFjwSoMX2Tj9eH/fZvQnSIgc3g==
|
||||
"@next/swc-linux-arm64-musl@15.4.3":
|
||||
version "15.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.4.3.tgz#d00092a1f73771295740086f1885f05253fc4d2b"
|
||||
integrity sha512-HTL31NsmoafX+r5g91Yj3+q34nrn1xKmCWVuNA+fUWO4X0pr+n83uGzLyEOn0kUqbMZ40KmWx+4wsbMoUChkiQ==
|
||||
|
||||
"@next/swc-linux-x64-gnu@15.4.1":
|
||||
version "15.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.4.1.tgz#a879a19ccbb5a12f218a543adf0d9312f5ce70f9"
|
||||
integrity sha512-Jj0Rfw3wIgp+eahMz/tOGwlcYYEFjlBPKU7NqoOkTX0LY45i5W0WcDpgiDWSLrN8KFQq/LW7fZq46gxGCiOYlQ==
|
||||
"@next/swc-linux-x64-gnu@15.4.3":
|
||||
version "15.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.4.3.tgz#9456bc05c8048714dcf2bea5383816599606098a"
|
||||
integrity sha512-HRQLWoeFkKXd2YCEEy9GhfwOijRm37x4w5r0MMVHxBKSA6ms3JoPUXvGhfHT6srnGRcEUWNrQ2vzkHir5ZWTSw==
|
||||
|
||||
"@next/swc-linux-x64-musl@15.4.1":
|
||||
version "15.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.4.1.tgz#025a2798d0beb242d878afedfc4968f0f1a02cf1"
|
||||
integrity sha512-9WlEZfnw1vFqkWsTMzZDgNL7AUI1aiBHi0S2m8jvycPyCq/fbZjtE/nDkhJRYbSjXbtRHYLDBlmP95kpjEmJbw==
|
||||
"@next/swc-linux-x64-musl@15.4.3":
|
||||
version "15.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.4.3.tgz#13aed5961ce94543fe21f1c2dfefb6f0ce3a8cf9"
|
||||
integrity sha512-NyXUx6G7AayaRGUsVPenuwhyAoyxjQuQPaK50AXoaAHPwRuif4WmSrXUs8/Y0HJIZh8E/YXRm9H7uuGfiacpuQ==
|
||||
|
||||
"@next/swc-win32-arm64-msvc@15.4.1":
|
||||
version "15.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.4.1.tgz#27928627e2c2d04075846c1e5a47d23760ce444e"
|
||||
integrity sha512-WodRbZ9g6CQLRZsG3gtrA9w7Qfa9BwDzhFVdlI6sV0OCPq9JrOrJSp9/ioLsezbV8w9RCJ8v55uzJuJ5RgWLZg==
|
||||
"@next/swc-win32-arm64-msvc@15.4.3":
|
||||
version "15.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.4.3.tgz#bc69ec012de3c2cf66fa14e234f9ae523b9a8349"
|
||||
integrity sha512-2CUTmpzN/7cL1a7GjdLkDFlfH3nwMwW8a6JiaAUsL9MtKmNNO3fnXqnY0Zk30fii3hVEl4dr7ztrpYt0t2CcGQ==
|
||||
|
||||
"@next/swc-win32-x64-msvc@15.4.1":
|
||||
version "15.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.4.1.tgz#7eb5ac6ffd8c945863f14a5d32ded6859d4ebe17"
|
||||
integrity sha512-y+wTBxelk2xiNofmDOVU7O5WxTHcvOoL3srOM0kxTzKDjQ57kPU0tpnPJ/BWrRnsOwXEv0+3QSbGR7hY4n9LkQ==
|
||||
"@next/swc-win32-x64-msvc@15.4.3":
|
||||
version "15.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.4.3.tgz#3f3e3d1fd2a22e3efae263f9699499dc52e70612"
|
||||
integrity sha512-i54YgUhvrUQxQD84SjAbkfWhYkOdm/DNRAVekCHLWxVg3aUbyC6NFQn9TwgCkX5QAS2pXCJo3kFboSFvrsd7dA==
|
||||
|
||||
"@nodelib/fs.scandir@2.1.5":
|
||||
version "2.1.5"
|
||||
|
|
@ -930,43 +930,43 @@
|
|||
integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
|
||||
|
||||
"@react-aria/focus@^3.20.2":
|
||||
version "3.20.5"
|
||||
resolved "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.5.tgz"
|
||||
integrity sha512-JpFtXmWQ0Oca7FcvkqgjSyo6xEP7v3oQOLUId6o0xTvm4AD5W0mU2r3lYrbhsJ+XxdUUX4AVR5473sZZ85kU4A==
|
||||
version "3.21.0"
|
||||
resolved "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.0.tgz"
|
||||
integrity sha512-7NEGtTPsBy52EZ/ToVKCu0HSelE3kq9qeis+2eEq90XSuJOMaDHUQrA7RC2Y89tlEwQB31bud/kKRi9Qme1dkA==
|
||||
dependencies:
|
||||
"@react-aria/interactions" "^3.25.3"
|
||||
"@react-aria/utils" "^3.29.1"
|
||||
"@react-types/shared" "^3.30.0"
|
||||
"@react-aria/interactions" "^3.25.4"
|
||||
"@react-aria/utils" "^3.30.0"
|
||||
"@react-types/shared" "^3.31.0"
|
||||
"@swc/helpers" "^0.5.0"
|
||||
clsx "^2.0.0"
|
||||
|
||||
"@react-aria/interactions@^3.25.0", "@react-aria/interactions@^3.25.3":
|
||||
version "3.25.3"
|
||||
resolved "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.3.tgz"
|
||||
integrity sha512-J1bhlrNtjPS/fe5uJQ+0c7/jiXniwa4RQlP+Emjfc/iuqpW2RhbF9ou5vROcLzWIyaW8tVMZ468J68rAs/aZ5A==
|
||||
"@react-aria/interactions@^3.25.0", "@react-aria/interactions@^3.25.4":
|
||||
version "3.25.4"
|
||||
resolved "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.4.tgz"
|
||||
integrity sha512-HBQMxgUPHrW8V63u9uGgBymkMfj6vdWbB0GgUJY49K9mBKMsypcHeWkWM6+bF7kxRO728/IK8bWDV6whDbqjHg==
|
||||
dependencies:
|
||||
"@react-aria/ssr" "^3.9.9"
|
||||
"@react-aria/utils" "^3.29.1"
|
||||
"@react-aria/ssr" "^3.9.10"
|
||||
"@react-aria/utils" "^3.30.0"
|
||||
"@react-stately/flags" "^3.1.2"
|
||||
"@react-types/shared" "^3.30.0"
|
||||
"@react-types/shared" "^3.31.0"
|
||||
"@swc/helpers" "^0.5.0"
|
||||
|
||||
"@react-aria/ssr@^3.9.9":
|
||||
version "3.9.9"
|
||||
resolved "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.9.tgz"
|
||||
integrity sha512-2P5thfjfPy/np18e5wD4WPt8ydNXhij1jwA8oehxZTFqlgVMGXzcWKxTb4RtJrLFsqPO7RUQTiY8QJk0M4Vy2g==
|
||||
"@react-aria/ssr@^3.9.10":
|
||||
version "3.9.10"
|
||||
resolved "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.10.tgz"
|
||||
integrity sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==
|
||||
dependencies:
|
||||
"@swc/helpers" "^0.5.0"
|
||||
|
||||
"@react-aria/utils@^3.29.1":
|
||||
version "3.29.1"
|
||||
resolved "https://registry.npmjs.org/@react-aria/utils/-/utils-3.29.1.tgz"
|
||||
integrity sha512-yXMFVJ73rbQ/yYE/49n5Uidjw7kh192WNN9PNQGV0Xoc7EJUlSOxqhnpHmYTyO0EotJ8fdM1fMH8durHjUSI8g==
|
||||
"@react-aria/utils@^3.30.0":
|
||||
version "3.30.0"
|
||||
resolved "https://registry.npmjs.org/@react-aria/utils/-/utils-3.30.0.tgz"
|
||||
integrity sha512-ydA6y5G1+gbem3Va2nczj/0G0W7/jUVo/cbN10WA5IizzWIwMP5qhFr7macgbKfHMkZ+YZC3oXnt2NNre5odKw==
|
||||
dependencies:
|
||||
"@react-aria/ssr" "^3.9.9"
|
||||
"@react-aria/ssr" "^3.9.10"
|
||||
"@react-stately/flags" "^3.1.2"
|
||||
"@react-stately/utils" "^3.10.7"
|
||||
"@react-types/shared" "^3.30.0"
|
||||
"@react-stately/utils" "^3.10.8"
|
||||
"@react-types/shared" "^3.31.0"
|
||||
"@swc/helpers" "^0.5.0"
|
||||
clsx "^2.0.0"
|
||||
|
||||
|
|
@ -977,17 +977,17 @@
|
|||
dependencies:
|
||||
"@swc/helpers" "^0.5.0"
|
||||
|
||||
"@react-stately/utils@^3.10.7":
|
||||
version "3.10.7"
|
||||
resolved "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.7.tgz"
|
||||
integrity sha512-cWvjGAocvy4abO9zbr6PW6taHgF24Mwy/LbQ4TC4Aq3tKdKDntxyD+sh7AkSRfJRT2ccMVaHVv2+FfHThd3PKQ==
|
||||
"@react-stately/utils@^3.10.8":
|
||||
version "3.10.8"
|
||||
resolved "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.8.tgz"
|
||||
integrity sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==
|
||||
dependencies:
|
||||
"@swc/helpers" "^0.5.0"
|
||||
|
||||
"@react-types/shared@^3.30.0":
|
||||
version "3.30.0"
|
||||
resolved "https://registry.npmjs.org/@react-types/shared/-/shared-3.30.0.tgz"
|
||||
integrity sha512-COIazDAx1ncDg046cTJ8SFYsX8aS3lB/08LDnbkH/SkdYrFPWDlXMrO/sUam8j1WWM+PJ+4d1mj7tODIKNiFog==
|
||||
"@react-types/shared@^3.31.0":
|
||||
version "3.31.0"
|
||||
resolved "https://registry.npmjs.org/@react-types/shared/-/shared-3.31.0.tgz"
|
||||
integrity sha512-ua5U6V66gDcbLZe4P2QeyNgPp4YWD1ymGA6j3n+s8CGExtrCPe64v+g4mvpT8Bnb985R96e4zFT61+m0YCwqMg==
|
||||
|
||||
"@rtsao/scc@^1.1.0":
|
||||
version "1.1.0"
|
||||
|
|
@ -1114,16 +1114,16 @@
|
|||
form-data "^4.0.0"
|
||||
|
||||
"@types/node@*", "@types/node@>=13.7.0", "@types/node@^20":
|
||||
version "20.19.8"
|
||||
resolved "https://registry.npmjs.org/@types/node/-/node-20.19.8.tgz"
|
||||
integrity sha512-HzbgCY53T6bfu4tT7Aq3TvViJyHjLjPNaAS3HOuMc9pw97KHsUtXNX4L+wu59g1WnjsZSko35MbEqnO58rihhw==
|
||||
version "20.19.9"
|
||||
resolved "https://registry.npmjs.org/@types/node/-/node-20.19.9.tgz"
|
||||
integrity sha512-cuVNgarYWZqxRJDQHEB58GEONhOK79QVR/qYx4S7kcUObQvUwvFnYxJuuHUKm2aieN9X3yZB4LZsuYNU1Qphsw==
|
||||
dependencies:
|
||||
undici-types "~6.21.0"
|
||||
|
||||
"@types/node@^18.11.18":
|
||||
version "18.19.119"
|
||||
resolved "https://registry.npmjs.org/@types/node/-/node-18.19.119.tgz"
|
||||
integrity sha512-d0F6m9itIPaKnrvEMlzE48UjwZaAnFW7Jwibacw9MNdqadjKNpUm9tfJYDwmShJmgqcoqYUX3EMKO1+RWiuuNg==
|
||||
version "18.19.120"
|
||||
resolved "https://registry.npmjs.org/@types/node/-/node-18.19.120.tgz"
|
||||
integrity sha512-WtCGHFXnVI8WHLxDAt5TbnCM4eSE+nI0QN2NJtwzcgMhht2eNz6V9evJrk+lwC8bCY8OWV5Ym8Jz7ZEyGnKnMA==
|
||||
dependencies:
|
||||
undici-types "~5.26.4"
|
||||
|
||||
|
|
@ -1144,6 +1144,13 @@
|
|||
resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz"
|
||||
integrity sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==
|
||||
|
||||
"@types/react-grid-layout@^1.3.5":
|
||||
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==
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react-syntax-highlighter@^15.5.13":
|
||||
version "15.5.13"
|
||||
resolved "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.13.tgz"
|
||||
|
|
@ -1604,12 +1611,12 @@ axe-core@^4.10.0:
|
|||
integrity sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==
|
||||
|
||||
axios@^1.8.3:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz"
|
||||
integrity sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==
|
||||
version "1.11.0"
|
||||
resolved "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz"
|
||||
integrity sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==
|
||||
dependencies:
|
||||
follow-redirects "^1.15.6"
|
||||
form-data "^4.0.0"
|
||||
form-data "^4.0.4"
|
||||
proxy-from-env "^1.1.0"
|
||||
|
||||
axobject-query@^4.1.0:
|
||||
|
|
@ -1855,20 +1862,20 @@ cheerio-select@^2.1.0:
|
|||
domutils "^3.0.1"
|
||||
|
||||
cheerio@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.1.0.tgz"
|
||||
integrity sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz"
|
||||
integrity sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==
|
||||
dependencies:
|
||||
cheerio-select "^2.1.0"
|
||||
dom-serializer "^2.0.0"
|
||||
domhandler "^5.0.3"
|
||||
domutils "^3.2.2"
|
||||
encoding-sniffer "^0.2.0"
|
||||
encoding-sniffer "^0.2.1"
|
||||
htmlparser2 "^10.0.0"
|
||||
parse5 "^7.3.0"
|
||||
parse5-htmlparser2-tree-adapter "^7.1.0"
|
||||
parse5-parser-stream "^7.1.2"
|
||||
undici "^7.10.0"
|
||||
undici "^7.12.0"
|
||||
whatwg-mimetype "^4.0.0"
|
||||
|
||||
chokidar@^3.6.0:
|
||||
|
|
@ -1905,7 +1912,7 @@ cliui@^8.0.1:
|
|||
strip-ansi "^6.0.1"
|
||||
wrap-ansi "^7.0.0"
|
||||
|
||||
clsx@^2.0.0, clsx@^2.1.0:
|
||||
clsx@^2.0.0, clsx@^2.1.0, clsx@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz"
|
||||
integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==
|
||||
|
|
@ -2313,9 +2320,9 @@ eastasianwidth@^0.2.0:
|
|||
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
|
||||
|
||||
electron-to-chromium@^1.5.173:
|
||||
version "1.5.186"
|
||||
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.186.tgz"
|
||||
integrity sha512-lur7L4BFklgepaJxj4DqPk7vKbTEl0pajNlg2QjE5shefmlmBLm2HvQ7PMf1R/GvlevT/581cop33/quQcfX3A==
|
||||
version "1.5.190"
|
||||
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.190.tgz"
|
||||
integrity sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw==
|
||||
|
||||
emoji-regex@^8.0.0:
|
||||
version "8.0.0"
|
||||
|
|
@ -2332,7 +2339,7 @@ enabled@2.0.x:
|
|||
resolved "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz"
|
||||
integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
|
||||
|
||||
encoding-sniffer@^0.2.0:
|
||||
encoding-sniffer@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz"
|
||||
integrity sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==
|
||||
|
|
@ -2795,6 +2802,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
|||
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
|
||||
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
||||
|
||||
fast-equals@^4.0.3:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz"
|
||||
integrity sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==
|
||||
|
||||
fast-fifo@^1.2.0, fast-fifo@^1.3.2:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz"
|
||||
|
|
@ -2938,10 +2950,10 @@ form-data-encoder@1.7.2:
|
|||
resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz"
|
||||
integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==
|
||||
|
||||
form-data@^4.0.0:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz"
|
||||
integrity sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==
|
||||
form-data@^4.0.0, form-data@^4.0.4:
|
||||
version "4.0.4"
|
||||
resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz"
|
||||
integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==
|
||||
dependencies:
|
||||
asynckit "^0.4.0"
|
||||
combined-stream "^1.0.8"
|
||||
|
|
@ -3148,7 +3160,7 @@ graphql-request@^6.1.0:
|
|||
"@graphql-typed-document-node/core" "^3.2.0"
|
||||
cross-fetch "^3.1.5"
|
||||
|
||||
graphql@^16.10.0:
|
||||
graphql@^16.11.0:
|
||||
version "16.11.0"
|
||||
resolved "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz"
|
||||
integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==
|
||||
|
|
@ -3798,9 +3810,9 @@ kuler@^2.0.0:
|
|||
zod "^3.25.32"
|
||||
|
||||
langsmith@^0.3.33, langsmith@^0.3.46:
|
||||
version "0.3.46"
|
||||
resolved "https://registry.npmjs.org/langsmith/-/langsmith-0.3.46.tgz"
|
||||
integrity sha512-Hhi4/cMjhWIGpu0DW5eQrXBbeeKQWPYYQyJCYzhFjod+xinMry4i8QR0gxrrgjGOgfMuU6nyK79YqjGTEPVbDA==
|
||||
version "0.3.48"
|
||||
resolved "https://registry.npmjs.org/langsmith/-/langsmith-0.3.48.tgz"
|
||||
integrity sha512-oEsj0Z8S2Chgb3vJzRX2vplLu4RWR1cpraIaVwv2PsNZ57VbHgZEdXdeh5kh16iP8PAv04JkBncP+KLRoKBFEw==
|
||||
dependencies:
|
||||
"@types/uuid" "^10.0.0"
|
||||
chalk "^4.1.2"
|
||||
|
|
@ -3896,7 +3908,7 @@ long@^4.0.0:
|
|||
resolved "https://registry.npmjs.org/long/-/long-4.0.0.tgz"
|
||||
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
|
||||
|
||||
long@^5.0.0, long@^5.2.4:
|
||||
long@^5.0.0, long@^5.3.2:
|
||||
version "5.3.2"
|
||||
resolved "https://registry.npmjs.org/long/-/long-5.3.2.tgz"
|
||||
integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==
|
||||
|
|
@ -3957,9 +3969,9 @@ mammoth@^1.9.1:
|
|||
xmlbuilder "^10.0.0"
|
||||
|
||||
markdown-to-jsx@^7.7.2:
|
||||
version "7.7.10"
|
||||
resolved "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.10.tgz"
|
||||
integrity sha512-au62yyLyJukhC2P1TYi3uBi/RScGYai69uT72D8a048QH8rRj+yhND3C21GdZHE+6emtsf6Yqemcf//K+EIWDg==
|
||||
version "7.7.12"
|
||||
resolved "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.12.tgz"
|
||||
integrity sha512-Y5xNBqoaTooSLkmlg2P0fdbh53gp4MqW7zhvcweGCPUWvWI5BecWRYI8vPlzT8D7OULxsQg2qoRW9EsJlBWasQ==
|
||||
|
||||
math-intrinsics@^1.1.0:
|
||||
version "1.1.0"
|
||||
|
|
@ -4062,9 +4074,9 @@ napi-build-utils@^2.0.0:
|
|||
integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==
|
||||
|
||||
napi-postinstall@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.0.tgz"
|
||||
integrity sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==
|
||||
version "0.3.2"
|
||||
resolved "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.2.tgz"
|
||||
integrity sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==
|
||||
|
||||
natural-compare@^1.4.0:
|
||||
version "1.4.0"
|
||||
|
|
@ -4077,27 +4089,27 @@ next-themes@^0.4.6:
|
|||
integrity sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==
|
||||
|
||||
next@^15.2.2:
|
||||
version "15.4.1"
|
||||
resolved "https://registry.npmjs.org/next/-/next-15.4.1.tgz"
|
||||
integrity sha512-eNKB1q8C7o9zXF8+jgJs2CzSLIU3T6bQtX6DcTnCq1sIR1CJ0GlSyRs1BubQi3/JgCnr9Vr+rS5mOMI38FFyQw==
|
||||
version "15.4.3"
|
||||
resolved "https://registry.npmjs.org/next/-/next-15.4.3.tgz"
|
||||
integrity sha512-uW7Qe6poVasNIE1X382nI29oxSdFJzjQzTgJFLD43MxyPfGKKxCMySllhBpvqr48f58Om+tLMivzRwBpXEytvA==
|
||||
dependencies:
|
||||
"@next/env" "15.4.1"
|
||||
"@next/env" "15.4.3"
|
||||
"@swc/helpers" "0.5.15"
|
||||
caniuse-lite "^1.0.30001579"
|
||||
postcss "8.4.31"
|
||||
styled-jsx "5.1.6"
|
||||
optionalDependencies:
|
||||
"@next/swc-darwin-arm64" "15.4.1"
|
||||
"@next/swc-darwin-x64" "15.4.1"
|
||||
"@next/swc-linux-arm64-gnu" "15.4.1"
|
||||
"@next/swc-linux-arm64-musl" "15.4.1"
|
||||
"@next/swc-linux-x64-gnu" "15.4.1"
|
||||
"@next/swc-linux-x64-musl" "15.4.1"
|
||||
"@next/swc-win32-arm64-msvc" "15.4.1"
|
||||
"@next/swc-win32-x64-msvc" "15.4.1"
|
||||
"@next/swc-darwin-arm64" "15.4.3"
|
||||
"@next/swc-darwin-x64" "15.4.3"
|
||||
"@next/swc-linux-arm64-gnu" "15.4.3"
|
||||
"@next/swc-linux-arm64-musl" "15.4.3"
|
||||
"@next/swc-linux-x64-gnu" "15.4.3"
|
||||
"@next/swc-linux-x64-musl" "15.4.3"
|
||||
"@next/swc-win32-arm64-msvc" "15.4.3"
|
||||
"@next/swc-win32-x64-msvc" "15.4.3"
|
||||
sharp "^0.34.3"
|
||||
|
||||
nice-grpc-client-middleware-retry@^3.1.10:
|
||||
nice-grpc-client-middleware-retry@^3.1.11:
|
||||
version "3.1.11"
|
||||
resolved "https://registry.npmjs.org/nice-grpc-client-middleware-retry/-/nice-grpc-client-middleware-retry-3.1.11.tgz"
|
||||
integrity sha512-xW/imz/kNG2g0DwTfH2eYEGrg1chSLrXtvGp9fg2qkhTgGFfAS/Pq3+t+9G8KThcC4hK/xlEyKvZWKk++33S6A==
|
||||
|
|
@ -4112,7 +4124,7 @@ nice-grpc-common@^2.0.2:
|
|||
dependencies:
|
||||
ts-error "^1.0.6"
|
||||
|
||||
nice-grpc@^2.1.11:
|
||||
nice-grpc@^2.1.12:
|
||||
version "2.1.12"
|
||||
resolved "https://registry.npmjs.org/nice-grpc/-/nice-grpc-2.1.12.tgz"
|
||||
integrity sha512-J1n4Wg+D3IhRhGQb+iqh2OpiM0GzTve/kf2lnlW4S+xczmIEd0aHUDV1OsJ5a3q8GSTqJf+s4Rgg1M8uJltarw==
|
||||
|
|
@ -4301,9 +4313,9 @@ onnxruntime-web@1.14.0:
|
|||
platform "^1.3.6"
|
||||
|
||||
openai@^5.3.0:
|
||||
version "5.10.1"
|
||||
resolved "https://registry.npmjs.org/openai/-/openai-5.10.1.tgz"
|
||||
integrity sha512-fq6xVfv1/gpLbsj8fArEt3b6B9jBxdhAK+VJ+bDvbUvNd+KTLlA3bnDeYZaBsGH9LUhJ1M1yXfp9sEyBLMx6eA==
|
||||
version "5.10.2"
|
||||
resolved "https://registry.npmjs.org/openai/-/openai-5.10.2.tgz"
|
||||
integrity sha512-n+vi74LzHtvlKcDPn9aApgELGiu5CwhaLG40zxLTlFQdoSJCLACORIPC2uVQ3JEYAbqapM+XyRKFy2Thej7bIw==
|
||||
|
||||
openapi-types@^12.1.3:
|
||||
version "12.1.3"
|
||||
|
|
@ -4645,7 +4657,7 @@ process-nextick-args@~2.0.0:
|
|||
resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
|
||||
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
|
||||
|
||||
prop-types@^15.8.1:
|
||||
prop-types@15.x, prop-types@^15.8.1:
|
||||
version "15.8.1"
|
||||
resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
|
||||
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
|
||||
|
|
@ -4745,11 +4757,39 @@ react-dom@^19:
|
|||
dependencies:
|
||||
scheduler "^0.26.0"
|
||||
|
||||
react-draggable@^4.0.3, react-draggable@^4.4.6:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.npmjs.org/react-draggable/-/react-draggable-4.5.0.tgz"
|
||||
integrity sha512-VC+HBLEZ0XJxnOxVAZsdRi8rD04Iz3SiiKOoYzamjylUcju/hP9np/aZdLHf/7WOD268WMoNJMvYfB5yAK45cw==
|
||||
dependencies:
|
||||
clsx "^2.1.1"
|
||||
prop-types "^15.8.1"
|
||||
|
||||
react-grid-layout@^1.5.2:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.npmjs.org/react-grid-layout/-/react-grid-layout-1.5.2.tgz"
|
||||
integrity sha512-vT7xmQqszTT+sQw/LfisrEO4le1EPNnSEMVHy6sBZyzS3yGkMywdOd+5iEFFwQwt0NSaGkxuRmYwa1JsP6OJdw==
|
||||
dependencies:
|
||||
clsx "^2.1.1"
|
||||
fast-equals "^4.0.3"
|
||||
prop-types "^15.8.1"
|
||||
react-draggable "^4.4.6"
|
||||
react-resizable "^3.0.5"
|
||||
resize-observer-polyfill "^1.5.1"
|
||||
|
||||
react-is@^16.13.1:
|
||||
version "16.13.1"
|
||||
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
|
||||
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
||||
|
||||
react-resizable@^3.0.5:
|
||||
version "3.0.5"
|
||||
resolved "https://registry.npmjs.org/react-resizable/-/react-resizable-3.0.5.tgz"
|
||||
integrity sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w==
|
||||
dependencies:
|
||||
prop-types "15.x"
|
||||
react-draggable "^4.0.3"
|
||||
|
||||
react-syntax-highlighter@^15.6.1:
|
||||
version "15.6.1"
|
||||
resolved "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz"
|
||||
|
|
@ -4862,6 +4902,11 @@ require-directory@^2.1.1:
|
|||
resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
|
||||
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
|
||||
|
||||
resize-observer-polyfill@^1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz"
|
||||
integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
|
||||
|
||||
resolve-from@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
|
||||
|
|
@ -5719,10 +5764,10 @@ undici-types@~6.21.0:
|
|||
resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz"
|
||||
integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
|
||||
|
||||
undici@^7.10.0:
|
||||
version "7.11.0"
|
||||
resolved "https://registry.npmjs.org/undici/-/undici-7.11.0.tgz"
|
||||
integrity sha512-heTSIac3iLhsmZhUCjyS3JQEkZELateufzZuBaVM5RHXdSBMb1LPMQf5x+FH7qjsZYDP0ttAc3nnVpUB+wYbOg==
|
||||
undici@^7.12.0:
|
||||
version "7.12.0"
|
||||
resolved "https://registry.npmjs.org/undici/-/undici-7.12.0.tgz"
|
||||
integrity sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==
|
||||
|
||||
unrs-resolver@^1.6.2:
|
||||
version "1.11.1"
|
||||
|
|
@ -5833,16 +5878,16 @@ w3c-xmlserializer@^5.0.0:
|
|||
xml-name-validator "^5.0.0"
|
||||
|
||||
weaviate-client@^3.5.2:
|
||||
version "3.6.2"
|
||||
resolved "https://registry.npmjs.org/weaviate-client/-/weaviate-client-3.6.2.tgz"
|
||||
integrity sha512-6z+Du0Sp+nVp4Mhsn25sd+Qw6fr60vbyUS1e3gTZqtMrxLuNC1xgA0J/MHu5oHcm6moCBqT/2AQCt4ZV4fYSaw==
|
||||
version "3.8.0"
|
||||
resolved "https://registry.npmjs.org/weaviate-client/-/weaviate-client-3.8.0.tgz"
|
||||
integrity sha512-8yWNY3OIAh1H/W+414o17em/3CSDc5f4/sMjCrFksVppczHC1mB1f0fCFosg9fpQGegLT+Ll6un82sTGYxFhqw==
|
||||
dependencies:
|
||||
abort-controller-x "^0.4.3"
|
||||
graphql "^16.10.0"
|
||||
graphql "^16.11.0"
|
||||
graphql-request "^6.1.0"
|
||||
long "^5.2.4"
|
||||
nice-grpc "^2.1.11"
|
||||
nice-grpc-client-middleware-retry "^3.1.10"
|
||||
long "^5.3.2"
|
||||
nice-grpc "^2.1.12"
|
||||
nice-grpc-client-middleware-retry "^3.1.11"
|
||||
nice-grpc-common "^2.0.2"
|
||||
uuid "^9.0.1"
|
||||
|
||||
|
|
@ -6078,9 +6123,9 @@ yargs@^17.7.2:
|
|||
yargs-parser "^21.1.1"
|
||||
|
||||
yet-another-react-lightbox@^3.17.2:
|
||||
version "3.24.0"
|
||||
resolved "https://registry.npmjs.org/yet-another-react-lightbox/-/yet-another-react-lightbox-3.24.0.tgz"
|
||||
integrity sha512-j3YtwDT+fdBBhxbaxfthHMehXkUj388rpn7knc934H86bJJDBEL/m9WFGdKq2ivT3GaUPF+41GplKFbAv8bOmg==
|
||||
version "3.25.0"
|
||||
resolved "https://registry.npmjs.org/yet-another-react-lightbox/-/yet-another-react-lightbox-3.25.0.tgz"
|
||||
integrity sha512-NaCeEXCpdwoTvoOpxNK9gdW8+oHs79yVH+D2YeVQWRjH5i32e5CoXndAAFP2p8awzVYfSonherrE9JMTpfD3EA==
|
||||
|
||||
yocto-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue