From d45776bd3baef43302acdd8a1455355a0fc5a3cc Mon Sep 17 00:00:00 2001 From: ShawnWang Date: Fri, 30 Jan 2026 00:14:39 +0800 Subject: [PATCH 1/2] feat: vue3 renderer and some vue3 samples --- renderers/vue/README.md | 68 + renderers/vue/package-lock.json | 2548 +++++++++++++++++ renderers/vue/package.json | 44 + renderers/vue/src/catalog/A2UIAudio.vue | 55 + renderers/vue/src/catalog/A2UIButton.vue | 59 + renderers/vue/src/catalog/A2UICard.vue | 69 + renderers/vue/src/catalog/A2UICheckbox.vue | 82 + renderers/vue/src/catalog/A2UIColumn.vue | 111 + .../vue/src/catalog/A2UIDateTimeInput.vue | 135 + renderers/vue/src/catalog/A2UIDivider.vue | 48 + renderers/vue/src/catalog/A2UIIcon.vue | 50 + renderers/vue/src/catalog/A2UIImage.vue | 68 + renderers/vue/src/catalog/A2UIList.vue | 71 + renderers/vue/src/catalog/A2UIModal.vue | 106 + .../vue/src/catalog/A2UIMultipleChoice.vue | 90 + renderers/vue/src/catalog/A2UIRow.vue | 114 + renderers/vue/src/catalog/A2UISlider.vue | 82 + renderers/vue/src/catalog/A2UISurface.vue | 87 + renderers/vue/src/catalog/A2UITabs.vue | 77 + renderers/vue/src/catalog/A2UIText.vue | 147 + renderers/vue/src/catalog/A2UITextField.vue | 95 + renderers/vue/src/catalog/A2UIVideo.vue | 56 + renderers/vue/src/catalog/default.ts | 185 ++ renderers/vue/src/config.ts | 38 + renderers/vue/src/data/markdown.ts | 125 + renderers/vue/src/data/processor.ts | 67 + renderers/vue/src/data/types.ts | 29 + renderers/vue/src/examples/App.vue | 88 + renderers/vue/src/examples/README.md | 77 + .../src/examples/components/ButtonExample.vue | 89 + .../src/examples/components/CardExample.vue | 80 + .../src/examples/components/ColumnExample.vue | 71 + .../examples/components/DividerExample.vue | 52 + .../src/examples/components/ListExample.vue | 82 + .../src/examples/components/RowExample.vue | 96 + .../src/examples/components/TextExample.vue | 95 + renderers/vue/src/examples/index.html | 12 + renderers/vue/src/examples/main.ts | 22 + renderers/vue/src/examples/style.css | 106 + renderers/vue/src/examples/theme.ts | 443 +++ renderers/vue/src/index.ts | 35 + renderers/vue/src/rendering/A2UIRenderer.vue | 88 + renderers/vue/src/rendering/catalog.ts | 34 + .../vue/src/rendering/useDynamicComponent.ts | 113 + renderers/vue/src/shims-vue.d.ts | 6 + renderers/vue/test.html | 176 ++ renderers/vue/tsconfig.json | 28 + renderers/vue/tsconfig.node.json | 11 + renderers/vue/vite.config.ts | 77 + samples/client/vue/README.md | 41 + samples/client/vue/package.json | 16 + samples/client/vue/pnpm-lock.yaml | 2495 ++++++++++++++++ samples/client/vue/pnpm-workspace.yaml | 2 + samples/client/vue/projects/gallery/README.md | 34 + .../client/vue/projects/gallery/index.html | 22 + .../client/vue/projects/gallery/package.json | 23 + .../client/vue/projects/gallery/src/App.vue | 107 + .../gallery/src/components/GalleryView.vue | 343 +++ .../gallery/src/components/LibraryView.vue | 438 +++ .../client/vue/projects/gallery/src/main.ts | 22 + .../vue/projects/gallery/src/shims-vue.d.ts | 6 + .../vue/projects/gallery/src/styles.css | 76 + .../client/vue/projects/gallery/src/theme.ts | 464 +++ .../vue/projects/gallery/src/utils/surface.ts | 52 + .../client/vue/projects/gallery/tsconfig.json | 26 + .../vue/projects/gallery/vite.config.ts | 31 + .../client/vue/projects/restaurant/README.md | 51 + .../client/vue/projects/restaurant/index.html | 36 + .../vue/projects/restaurant/package.json | 29 + .../projects/restaurant/public/favicon.ico | Bin 0 -> 15086 bytes .../vue/projects/restaurant/public/hero.png | Bin 0 -> 303595 bytes .../client/vue/projects/restaurant/server.ts | 121 + .../vue/projects/restaurant/src/App.vue | 312 ++ .../vue/projects/restaurant/src/client.ts | 88 + .../vue/projects/restaurant/src/main.ts | 22 + .../projects/restaurant/src/shims-vue.d.ts | 6 + .../vue/projects/restaurant/src/styles.css | 227 ++ .../vue/projects/restaurant/src/theme.ts | 443 +++ .../vue/projects/restaurant/tsconfig.json | 25 + .../projects/restaurant/tsconfig.node.json | 11 + .../restaurant/tsconfig.node.tsbuildinfo | 1 + .../vue/projects/restaurant/vite.config.ts | 40 + samples/client/vue/tsconfig.json | 23 + samples/client/vue/tsconfig.node.json | 11 + 84 files changed, 12231 insertions(+) create mode 100644 renderers/vue/README.md create mode 100644 renderers/vue/package-lock.json create mode 100644 renderers/vue/package.json create mode 100644 renderers/vue/src/catalog/A2UIAudio.vue create mode 100644 renderers/vue/src/catalog/A2UIButton.vue create mode 100644 renderers/vue/src/catalog/A2UICard.vue create mode 100644 renderers/vue/src/catalog/A2UICheckbox.vue create mode 100644 renderers/vue/src/catalog/A2UIColumn.vue create mode 100644 renderers/vue/src/catalog/A2UIDateTimeInput.vue create mode 100644 renderers/vue/src/catalog/A2UIDivider.vue create mode 100644 renderers/vue/src/catalog/A2UIIcon.vue create mode 100644 renderers/vue/src/catalog/A2UIImage.vue create mode 100644 renderers/vue/src/catalog/A2UIList.vue create mode 100644 renderers/vue/src/catalog/A2UIModal.vue create mode 100644 renderers/vue/src/catalog/A2UIMultipleChoice.vue create mode 100644 renderers/vue/src/catalog/A2UIRow.vue create mode 100644 renderers/vue/src/catalog/A2UISlider.vue create mode 100644 renderers/vue/src/catalog/A2UISurface.vue create mode 100644 renderers/vue/src/catalog/A2UITabs.vue create mode 100644 renderers/vue/src/catalog/A2UIText.vue create mode 100644 renderers/vue/src/catalog/A2UITextField.vue create mode 100644 renderers/vue/src/catalog/A2UIVideo.vue create mode 100644 renderers/vue/src/catalog/default.ts create mode 100644 renderers/vue/src/config.ts create mode 100644 renderers/vue/src/data/markdown.ts create mode 100644 renderers/vue/src/data/processor.ts create mode 100644 renderers/vue/src/data/types.ts create mode 100644 renderers/vue/src/examples/App.vue create mode 100644 renderers/vue/src/examples/README.md create mode 100644 renderers/vue/src/examples/components/ButtonExample.vue create mode 100644 renderers/vue/src/examples/components/CardExample.vue create mode 100644 renderers/vue/src/examples/components/ColumnExample.vue create mode 100644 renderers/vue/src/examples/components/DividerExample.vue create mode 100644 renderers/vue/src/examples/components/ListExample.vue create mode 100644 renderers/vue/src/examples/components/RowExample.vue create mode 100644 renderers/vue/src/examples/components/TextExample.vue create mode 100644 renderers/vue/src/examples/index.html create mode 100644 renderers/vue/src/examples/main.ts create mode 100644 renderers/vue/src/examples/style.css create mode 100644 renderers/vue/src/examples/theme.ts create mode 100644 renderers/vue/src/index.ts create mode 100644 renderers/vue/src/rendering/A2UIRenderer.vue create mode 100644 renderers/vue/src/rendering/catalog.ts create mode 100644 renderers/vue/src/rendering/useDynamicComponent.ts create mode 100644 renderers/vue/src/shims-vue.d.ts create mode 100644 renderers/vue/test.html create mode 100644 renderers/vue/tsconfig.json create mode 100644 renderers/vue/tsconfig.node.json create mode 100644 renderers/vue/vite.config.ts create mode 100644 samples/client/vue/README.md create mode 100644 samples/client/vue/package.json create mode 100644 samples/client/vue/pnpm-lock.yaml create mode 100644 samples/client/vue/pnpm-workspace.yaml create mode 100644 samples/client/vue/projects/gallery/README.md create mode 100644 samples/client/vue/projects/gallery/index.html create mode 100644 samples/client/vue/projects/gallery/package.json create mode 100644 samples/client/vue/projects/gallery/src/App.vue create mode 100644 samples/client/vue/projects/gallery/src/components/GalleryView.vue create mode 100644 samples/client/vue/projects/gallery/src/components/LibraryView.vue create mode 100644 samples/client/vue/projects/gallery/src/main.ts create mode 100644 samples/client/vue/projects/gallery/src/shims-vue.d.ts create mode 100644 samples/client/vue/projects/gallery/src/styles.css create mode 100644 samples/client/vue/projects/gallery/src/theme.ts create mode 100644 samples/client/vue/projects/gallery/src/utils/surface.ts create mode 100644 samples/client/vue/projects/gallery/tsconfig.json create mode 100644 samples/client/vue/projects/gallery/vite.config.ts create mode 100644 samples/client/vue/projects/restaurant/README.md create mode 100644 samples/client/vue/projects/restaurant/index.html create mode 100644 samples/client/vue/projects/restaurant/package.json create mode 100644 samples/client/vue/projects/restaurant/public/favicon.ico create mode 100644 samples/client/vue/projects/restaurant/public/hero.png create mode 100644 samples/client/vue/projects/restaurant/server.ts create mode 100644 samples/client/vue/projects/restaurant/src/App.vue create mode 100644 samples/client/vue/projects/restaurant/src/client.ts create mode 100644 samples/client/vue/projects/restaurant/src/main.ts create mode 100644 samples/client/vue/projects/restaurant/src/shims-vue.d.ts create mode 100644 samples/client/vue/projects/restaurant/src/styles.css create mode 100644 samples/client/vue/projects/restaurant/src/theme.ts create mode 100644 samples/client/vue/projects/restaurant/tsconfig.json create mode 100644 samples/client/vue/projects/restaurant/tsconfig.node.json create mode 100644 samples/client/vue/projects/restaurant/tsconfig.node.tsbuildinfo create mode 100644 samples/client/vue/projects/restaurant/vite.config.ts create mode 100644 samples/client/vue/tsconfig.json create mode 100644 samples/client/vue/tsconfig.node.json diff --git a/renderers/vue/README.md b/renderers/vue/README.md new file mode 100644 index 000000000..2f0867479 --- /dev/null +++ b/renderers/vue/README.md @@ -0,0 +1,68 @@ +# @a2ui/vue + +A Vue 3 renderer for A2UI (Agent-to-UI) protocol. + +## Usage + +```vue + + + +``` + +## Components + +The library provides the following components: + +- `A2UISurface` - The main surface component +- `A2UIRenderer` - Dynamic component renderer +- Layout: `A2UIRow`, `A2UIColumn`, `A2UICard`, `A2UIList` +- Content: `A2UIText`, `A2UIImage`, `A2UIIcon`, `A2UIVideo`, `A2UIAudio` +- Input: `A2UIButton`, `A2UITextField`, `A2UICheckbox`, `A2UISlider`, `A2UIMultipleChoice`, `A2UIDateTimeInput` +- Navigation: `A2UITabs`, `A2UIModal` +- Utility: `A2UIDivider` + +## Development & Examples + +To view interactive examples of all components: + +```bash +# Install dependencies +npm install + +# Start development server with examples +npm run dev + +``` + +The examples will be available at http://localhost:5173 + +### Building + +```bash +# Build the library +npm run build +``` diff --git a/renderers/vue/package-lock.json b/renderers/vue/package-lock.json new file mode 100644 index 000000000..44cabae60 --- /dev/null +++ b/renderers/vue/package-lock.json @@ -0,0 +1,2548 @@ +{ + "name": "@a2ui/vue", + "version": "0.8.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@a2ui/vue", + "version": "0.8.1", + "dependencies": { + "@a2ui/web_core": "file:../web_core", + "dompurify": "^3.3.1", + "markdown-it": "^14.1.0" + }, + "devDependencies": { + "@types/markdown-it": "^14.1.2", + "@types/node": "^20.17.19", + "@vitejs/plugin-vue": "^6.0.3", + "typescript": "~5.9.3", + "vite": "^7.3.1", + "vite-plugin-dts": "^4.5.4", + "vue": "^3.5.27", + "vue-tsc": "^2.2.0" + }, + "peerDependencies": { + "vue": "^3.4.0" + } + }, + "../web_core": { + "name": "@a2ui/web_core", + "version": "0.8.0", + "license": "Apache-2.0", + "devDependencies": { + "typescript": "^5.8.3", + "wireit": "^0.15.0-pre.2" + } + }, + "node_modules/@a2ui/web_core": { + "resolved": "../web_core", + "link": true + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.6", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.6", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@microsoft/api-extractor": { + "version": "7.56.0", + "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor/-/api-extractor-7.56.0.tgz", + "integrity": "sha512-H0V69QG5jIb9Ayx35NVBv2lOgFSS3q+Eab2oyGEy0POL3ovYPST+rCNPbwYoczOZXNG8IKjWUmmAMxmDTsXlQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor-model": "7.32.2", + "@microsoft/tsdoc": "~0.16.0", + "@microsoft/tsdoc-config": "~0.18.0", + "@rushstack/node-core-library": "5.19.1", + "@rushstack/rig-package": "0.6.0", + "@rushstack/terminal": "0.21.0", + "@rushstack/ts-command-line": "5.1.7", + "diff": "~8.0.2", + "lodash": "~4.17.15", + "minimatch": "10.0.3", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "source-map": "~0.6.1", + "typescript": "5.8.2" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "node_modules/@microsoft/api-extractor-model": { + "version": "7.32.2", + "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor-model/-/api-extractor-model-7.32.2.tgz", + "integrity": "sha512-Ussc25rAalc+4JJs9HNQE7TuO9y6jpYQX9nWD1DhqUzYPBr3Lr7O9intf+ZY8kD5HnIqeIRJX7ccCT0QyBy2Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "~0.16.0", + "@microsoft/tsdoc-config": "~0.18.0", + "@rushstack/node-core-library": "5.19.1" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@microsoft/tsdoc": { + "version": "0.16.0", + "resolved": "https://registry.npmmirror.com/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", + "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/@microsoft/tsdoc-config/-/tsdoc-config-0.18.0.tgz", + "integrity": "sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "0.16.0", + "ajv": "~8.12.0", + "jju": "~1.4.0", + "resolve": "~1.22.2" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.53", + "resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz", + "integrity": "sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.0.tgz", + "integrity": "sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.0.tgz", + "integrity": "sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.0.tgz", + "integrity": "sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.0.tgz", + "integrity": "sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.0.tgz", + "integrity": "sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.0.tgz", + "integrity": "sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.0.tgz", + "integrity": "sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.0.tgz", + "integrity": "sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.0.tgz", + "integrity": "sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.0.tgz", + "integrity": "sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.0.tgz", + "integrity": "sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.0.tgz", + "integrity": "sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.0.tgz", + "integrity": "sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.0.tgz", + "integrity": "sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.0.tgz", + "integrity": "sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.0.tgz", + "integrity": "sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.0.tgz", + "integrity": "sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.0.tgz", + "integrity": "sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.0.tgz", + "integrity": "sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.0.tgz", + "integrity": "sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.0.tgz", + "integrity": "sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.0.tgz", + "integrity": "sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.0.tgz", + "integrity": "sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.0.tgz", + "integrity": "sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.0.tgz", + "integrity": "sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rushstack/node-core-library": { + "version": "5.19.1", + "resolved": "https://registry.npmmirror.com/@rushstack/node-core-library/-/node-core-library-5.19.1.tgz", + "integrity": "sha512-ESpb2Tajlatgbmzzukg6zyAhH+sICqJR2CNXNhXcEbz6UGCQfrKCtkxOpJTftWc8RGouroHG0Nud1SJAszvpmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "~8.13.0", + "ajv-draft-04": "~1.0.0", + "ajv-formats": "~3.0.1", + "fs-extra": "~11.3.0", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@rushstack/problem-matcher": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/@rushstack/problem-matcher/-/problem-matcher-0.1.1.tgz", + "integrity": "sha512-Fm5XtS7+G8HLcJHCWpES5VmeMyjAKaWeyZU5qPzZC+22mPlJzAsOxymHiWIfuirtPckX3aptWws+K2d0BzniJA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/rig-package": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/@rushstack/rig-package/-/rig-package-0.6.0.tgz", + "integrity": "sha512-ZQmfzsLE2+Y91GF15c65L/slMRVhF6Hycq04D4TwtdGaUAbIXXg9c5pKA5KFU7M4QMaihoobp9JJYpYcaY3zOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "~1.22.1", + "strip-json-comments": "~3.1.1" + } + }, + "node_modules/@rushstack/terminal": { + "version": "0.21.0", + "resolved": "https://registry.npmmirror.com/@rushstack/terminal/-/terminal-0.21.0.tgz", + "integrity": "sha512-cLaI4HwCNYmknM5ns4G+drqdEB6q3dCPV423+d3TZeBusYSSm09+nR7CnhzJMjJqeRcdMAaLnrA4M/3xDz4R3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/node-core-library": "5.19.1", + "@rushstack/problem-matcher": "0.1.1", + "supports-color": "~8.1.1" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "5.1.7", + "resolved": "https://registry.npmmirror.com/@rushstack/ts-command-line/-/ts-command-line-5.1.7.tgz", + "integrity": "sha512-Ugwl6flarZcL2nqH5IXFYk3UR3mBVDsVFlCQW/Oaqidvdb/5Ota6b/Z3JXWIdqV3rOR2/JrYoAHanWF5rgenXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/terminal": "0.21.0", + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "string-argv": "~0.3.1" + } + }, + "node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmmirror.com/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmmirror.com/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.30", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.19.30.tgz", + "integrity": "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-6.0.3.tgz", + "integrity": "sha512-TlGPkLFLVOY3T7fZrwdvKpjprR3s4fxRln0ORDo1VQ7HHyxJwTlrjKU3kpVWTlaAjIEuCTokmjkZnr8Tpc925w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-beta.53" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.27", + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.27.tgz", + "integrity": "sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.27" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.27", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.27.tgz", + "integrity": "sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@volar/typescript": { + "version": "2.4.27", + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.27.tgz", + "integrity": "sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.27", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.27", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.27.tgz", + "integrity": "sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@vue/shared": "3.5.27", + "entities": "^7.0.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-core/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.27", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.27.tgz", + "integrity": "sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.27", + "@vue/shared": "3.5.27" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.27", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.27.tgz", + "integrity": "sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@vue/compiler-core": "3.5.27", + "@vue/compiler-dom": "3.5.27", + "@vue/compiler-ssr": "3.5.27", + "@vue/shared": "3.5.27", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.27", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.27.tgz", + "integrity": "sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.27", + "@vue/shared": "3.5.27" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/language-core": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.2.0.tgz", + "integrity": "sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "~2.4.11", + "@vue/compiler-dom": "^3.5.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.5.0", + "alien-signals": "^0.4.9", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.27", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.27.tgz", + "integrity": "sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.27" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.27", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.27.tgz", + "integrity": "sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.27", + "@vue/shared": "3.5.27" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.27", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.27.tgz", + "integrity": "sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.27", + "@vue/runtime-core": "3.5.27", + "@vue/shared": "3.5.27", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.27", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.27.tgz", + "integrity": "sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.27", + "@vue/shared": "3.5.27" + }, + "peerDependencies": { + "vue": "3.5.27" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.27", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.27.tgz", + "integrity": "sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/alien-signals": { + "version": "0.4.14", + "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-0.4.14.tgz", + "integrity": "sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/compare-versions": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/compare-versions/-/compare-versions-6.1.1.tgz", + "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/diff": { + "version": "8.0.3", + "resolved": "https://registry.npmmirror.com/diff/-/diff-8.0.3.tgz", + "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dompurify": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fs-extra": { + "version": "11.3.3", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmmirror.com/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.57.0.tgz", + "integrity": "sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.57.0", + "@rollup/rollup-android-arm64": "4.57.0", + "@rollup/rollup-darwin-arm64": "4.57.0", + "@rollup/rollup-darwin-x64": "4.57.0", + "@rollup/rollup-freebsd-arm64": "4.57.0", + "@rollup/rollup-freebsd-x64": "4.57.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.0", + "@rollup/rollup-linux-arm-musleabihf": "4.57.0", + "@rollup/rollup-linux-arm64-gnu": "4.57.0", + "@rollup/rollup-linux-arm64-musl": "4.57.0", + "@rollup/rollup-linux-loong64-gnu": "4.57.0", + "@rollup/rollup-linux-loong64-musl": "4.57.0", + "@rollup/rollup-linux-ppc64-gnu": "4.57.0", + "@rollup/rollup-linux-ppc64-musl": "4.57.0", + "@rollup/rollup-linux-riscv64-gnu": "4.57.0", + "@rollup/rollup-linux-riscv64-musl": "4.57.0", + "@rollup/rollup-linux-s390x-gnu": "4.57.0", + "@rollup/rollup-linux-x64-gnu": "4.57.0", + "@rollup/rollup-linux-x64-musl": "4.57.0", + "@rollup/rollup-openbsd-x64": "4.57.0", + "@rollup/rollup-openharmony-arm64": "4.57.0", + "@rollup/rollup-win32-arm64-msvc": "4.57.0", + "@rollup/rollup-win32-ia32-msvc": "4.57.0", + "@rollup/rollup-win32-x64-gnu": "4.57.0", + "@rollup/rollup-win32-x64-msvc": "4.57.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-plugin-dts": { + "version": "4.5.4", + "resolved": "https://registry.npmmirror.com/vite-plugin-dts/-/vite-plugin-dts-4.5.4.tgz", + "integrity": "sha512-d4sOM8M/8z7vRXHHq/ebbblfaxENjogAAekcfcDCCwAyvGqnPrc7f4NZbvItS+g4WTgerW0xDwSz5qz11JT3vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor": "^7.50.1", + "@rollup/pluginutils": "^5.1.4", + "@volar/typescript": "^2.4.11", + "@vue/language-core": "2.2.0", + "compare-versions": "^6.1.1", + "debug": "^4.4.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.0.0", + "magic-string": "^0.30.17" + }, + "peerDependencies": { + "typescript": "*", + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.27", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.27.tgz", + "integrity": "sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.27", + "@vue/compiler-sfc": "3.5.27", + "@vue/runtime-dom": "3.5.27", + "@vue/server-renderer": "3.5.27", + "@vue/shared": "3.5.27" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-tsc": { + "version": "2.2.12", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.2.12.tgz", + "integrity": "sha512-P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/typescript": "2.4.15", + "@vue/language-core": "2.2.12" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + }, + "node_modules/vue-tsc/node_modules/@volar/language-core": { + "version": "2.4.15", + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.15.tgz", + "integrity": "sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.15" + } + }, + "node_modules/vue-tsc/node_modules/@volar/source-map": { + "version": "2.4.15", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.15.tgz", + "integrity": "sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-tsc/node_modules/@volar/typescript": { + "version": "2.4.15", + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.15.tgz", + "integrity": "sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.15", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/vue-tsc/node_modules/@vue/language-core": { + "version": "2.2.12", + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.2.12.tgz", + "integrity": "sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.15", + "@vue/compiler-dom": "^3.5.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.5.0", + "alien-signals": "^1.0.3", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-tsc/node_modules/alien-signals": { + "version": "1.0.13", + "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-1.0.13.tgz", + "integrity": "sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-tsc/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/renderers/vue/package.json b/renderers/vue/package.json new file mode 100644 index 000000000..7afb189e0 --- /dev/null +++ b/renderers/vue/package.json @@ -0,0 +1,44 @@ +{ + "name": "@a2ui/vue", + "version": "0.8.1", + "type": "module", + "description": "A2UI Vue3 Renderer", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + }, + "./dist/*": "./dist/*" + }, + "scripts": { + "dev": "vite", + "build": "vite build --mode lib", + "typecheck": "vue-tsc --noEmit" + }, + "files": [ + "dist" + ], + "dependencies": { + "@a2ui/web_core": "file:../web_core", + "dompurify": "^3.3.1", + "markdown-it": "^14.1.0" + }, + "peerDependencies": { + "vue": "^3.4.0" + }, + "devDependencies": { + "@types/markdown-it": "^14.1.2", + "@types/node": "^20.17.19", + "@vitejs/plugin-vue": "^6.0.3", + "typescript": "~5.9.3", + "vite": "^7.3.1", + "vite-plugin-dts": "^4.5.4", + "vue": "^3.5.27", + "vue-tsc": "^2.2.0" + }, + "sideEffects": false +} diff --git a/renderers/vue/src/catalog/A2UIAudio.vue b/renderers/vue/src/catalog/A2UIAudio.vue new file mode 100644 index 000000000..03bc66541 --- /dev/null +++ b/renderers/vue/src/catalog/A2UIAudio.vue @@ -0,0 +1,55 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIButton.vue b/renderers/vue/src/catalog/A2UIButton.vue new file mode 100644 index 000000000..cf0cb1a47 --- /dev/null +++ b/renderers/vue/src/catalog/A2UIButton.vue @@ -0,0 +1,59 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UICard.vue b/renderers/vue/src/catalog/A2UICard.vue new file mode 100644 index 000000000..e014cf37b --- /dev/null +++ b/renderers/vue/src/catalog/A2UICard.vue @@ -0,0 +1,69 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UICheckbox.vue b/renderers/vue/src/catalog/A2UICheckbox.vue new file mode 100644 index 000000000..ab95f3ff9 --- /dev/null +++ b/renderers/vue/src/catalog/A2UICheckbox.vue @@ -0,0 +1,82 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIColumn.vue b/renderers/vue/src/catalog/A2UIColumn.vue new file mode 100644 index 000000000..caa204dd8 --- /dev/null +++ b/renderers/vue/src/catalog/A2UIColumn.vue @@ -0,0 +1,111 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIDateTimeInput.vue b/renderers/vue/src/catalog/A2UIDateTimeInput.vue new file mode 100644 index 000000000..a30cd48c8 --- /dev/null +++ b/renderers/vue/src/catalog/A2UIDateTimeInput.vue @@ -0,0 +1,135 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIDivider.vue b/renderers/vue/src/catalog/A2UIDivider.vue new file mode 100644 index 000000000..32e5b1c7b --- /dev/null +++ b/renderers/vue/src/catalog/A2UIDivider.vue @@ -0,0 +1,48 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIIcon.vue b/renderers/vue/src/catalog/A2UIIcon.vue new file mode 100644 index 000000000..f1ac569a3 --- /dev/null +++ b/renderers/vue/src/catalog/A2UIIcon.vue @@ -0,0 +1,50 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIImage.vue b/renderers/vue/src/catalog/A2UIImage.vue new file mode 100644 index 000000000..9299134e4 --- /dev/null +++ b/renderers/vue/src/catalog/A2UIImage.vue @@ -0,0 +1,68 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIList.vue b/renderers/vue/src/catalog/A2UIList.vue new file mode 100644 index 000000000..f32003a96 --- /dev/null +++ b/renderers/vue/src/catalog/A2UIList.vue @@ -0,0 +1,71 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIModal.vue b/renderers/vue/src/catalog/A2UIModal.vue new file mode 100644 index 000000000..837a7de61 --- /dev/null +++ b/renderers/vue/src/catalog/A2UIModal.vue @@ -0,0 +1,106 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIMultipleChoice.vue b/renderers/vue/src/catalog/A2UIMultipleChoice.vue new file mode 100644 index 000000000..f24184b82 --- /dev/null +++ b/renderers/vue/src/catalog/A2UIMultipleChoice.vue @@ -0,0 +1,90 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIRow.vue b/renderers/vue/src/catalog/A2UIRow.vue new file mode 100644 index 000000000..d8ce2a26f --- /dev/null +++ b/renderers/vue/src/catalog/A2UIRow.vue @@ -0,0 +1,114 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UISlider.vue b/renderers/vue/src/catalog/A2UISlider.vue new file mode 100644 index 000000000..977027750 --- /dev/null +++ b/renderers/vue/src/catalog/A2UISlider.vue @@ -0,0 +1,82 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UISurface.vue b/renderers/vue/src/catalog/A2UISurface.vue new file mode 100644 index 000000000..df762646e --- /dev/null +++ b/renderers/vue/src/catalog/A2UISurface.vue @@ -0,0 +1,87 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UITabs.vue b/renderers/vue/src/catalog/A2UITabs.vue new file mode 100644 index 000000000..32d5d57e0 --- /dev/null +++ b/renderers/vue/src/catalog/A2UITabs.vue @@ -0,0 +1,77 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIText.vue b/renderers/vue/src/catalog/A2UIText.vue new file mode 100644 index 000000000..33a71f37d --- /dev/null +++ b/renderers/vue/src/catalog/A2UIText.vue @@ -0,0 +1,147 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UITextField.vue b/renderers/vue/src/catalog/A2UITextField.vue new file mode 100644 index 000000000..b5d9b63e3 --- /dev/null +++ b/renderers/vue/src/catalog/A2UITextField.vue @@ -0,0 +1,95 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/A2UIVideo.vue b/renderers/vue/src/catalog/A2UIVideo.vue new file mode 100644 index 000000000..ff1161c7e --- /dev/null +++ b/renderers/vue/src/catalog/A2UIVideo.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/renderers/vue/src/catalog/default.ts b/renderers/vue/src/catalog/default.ts new file mode 100644 index 000000000..52c1bf10b --- /dev/null +++ b/renderers/vue/src/catalog/default.ts @@ -0,0 +1,185 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import * as Types from '@a2ui/web_core/types/types'; +import type { Catalog } from '@/rendering/catalog'; + +import Row from './A2UIRow.vue'; +import Column from './A2UIColumn.vue'; +import Text from './A2UIText.vue'; + +export const DEFAULT_CATALOG: Catalog = { + Row: { + type: () => Row, + props: (node) => { + const properties = (node as Types.RowNode).properties; + return { + alignment: properties.alignment ?? 'stretch', + distribution: properties.distribution ?? 'start', + }; + }, + }, + + Column: { + type: () => Column, + props: (node) => { + const properties = (node as Types.ColumnNode).properties; + return { + alignment: properties.alignment ?? 'stretch', + distribution: properties.distribution ?? 'start', + }; + }, + }, + + List: { + type: () => import('./A2UIList.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.ListNode).properties; + return { direction: properties.direction ?? 'vertical' }; + }, + }, + + Card: () => import('./A2UICard.vue').then((m) => m.default), + + Image: { + type: () => import('./A2UIImage.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.ImageNode).properties; + return { + url: properties.url, + usageHint: properties.usageHint, + }; + }, + }, + + Icon: { + type: () => import('./A2UIIcon.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.IconNode).properties; + return { name: properties.name }; + }, + }, + + Video: { + type: () => import('./A2UIVideo.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.VideoNode).properties; + return { url: properties.url }; + }, + }, + + AudioPlayer: { + type: () => import('./A2UIAudio.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.AudioPlayerNode).properties; + return { url: properties.url }; + }, + }, + + Text: { + type: () => Text, + props: (node) => { + const properties = (node as Types.TextNode).properties; + return { + text: properties.text, + usageHint: properties.usageHint || null, + }; + }, + }, + + Button: { + type: () => import('./A2UIButton.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.ButtonNode).properties; + return { action: properties.action }; + }, + }, + + Divider: () => import('./A2UIDivider.vue').then((m) => m.default), + + MultipleChoice: { + type: () => import('./A2UIMultipleChoice.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.MultipleChoiceNode).properties; + return { + options: properties.options || [], + value: properties.selections, + description: 'Select an item', + }; + }, + }, + + TextField: { + type: () => import('./A2UITextField.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.TextFieldNode).properties; + return { + text: properties.text ?? null, + label: properties.label, + inputType: properties.type, + }; + }, + }, + + DateTimeInput: { + type: () => import('./A2UIDateTimeInput.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.DateTimeInputNode).properties; + return { + enableDate: properties.enableDate, + enableTime: properties.enableTime, + value: properties.value, + }; + }, + }, + + CheckBox: { + type: () => import('./A2UICheckbox.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.CheckboxNode).properties; + return { + label: properties.label, + value: properties.value, + }; + }, + }, + + Slider: { + type: () => import('./A2UISlider.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.SliderNode).properties; + return { + value: properties.value, + minValue: properties.minValue, + maxValue: properties.maxValue, + label: '', + }; + }, + }, + + Tabs: { + type: () => import('./A2UITabs.vue').then((m) => m.default), + props: (node) => { + const properties = (node as Types.TabsNode).properties; + return { tabs: properties.tabItems }; + }, + }, + + Modal: { + type: () => import('./A2UIModal.vue').then((m) => m.default), + props: () => ({}), + }, +}; diff --git a/renderers/vue/src/config.ts b/renderers/vue/src/config.ts new file mode 100644 index 000000000..6416b1fbe --- /dev/null +++ b/renderers/vue/src/config.ts @@ -0,0 +1,38 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import { inject, provide, type InjectionKey } from 'vue'; +import type { Catalog } from './rendering/catalog'; +import * as Types from '@a2ui/web_core/types/types'; + +export interface A2UIConfig { + catalog: Catalog; + theme: Types.Theme; +} + +export const A2UI_CONFIG_KEY: InjectionKey = Symbol('a2ui-config'); + +export function provideA2UI(config: A2UIConfig): void { + provide(A2UI_CONFIG_KEY, config); +} + +export function useA2UIConfig(): A2UIConfig { + const config = inject(A2UI_CONFIG_KEY); + if (!config) { + throw new Error('A2UI config not provided. Please call provideA2UI() in a parent component.'); + } + return config; +} diff --git a/renderers/vue/src/data/markdown.ts b/renderers/vue/src/data/markdown.ts new file mode 100644 index 000000000..471abcfe3 --- /dev/null +++ b/renderers/vue/src/data/markdown.ts @@ -0,0 +1,125 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import MarkdownIt from 'markdown-it'; + +class MarkdownRenderer { + private originalClassMap = new Map(); + + private markdownIt = new MarkdownIt({ + highlight: (str, lang) => { + if (lang === 'html') { + const iframe = document.createElement('iframe'); + iframe.classList.add('html-view'); + iframe.srcdoc = str; + iframe.sandbox.add(''); + return iframe.outerHTML; + } + return str; + }, + }); + + render(value: string, tagClassMap?: Record): string { + if (tagClassMap) { + this.applyTagClassMap(tagClassMap); + } + const htmlString = this.markdownIt.render(value); + this.unapplyTagClassMap(); + return htmlString; + } + + private applyTagClassMap(tagClassMap: Record) { + Object.entries(tagClassMap).forEach(([tag, classes]) => { + let tokenName: string | undefined; + switch (tag) { + case 'p': + tokenName = 'paragraph'; + break; + case 'h1': + case 'h2': + case 'h3': + case 'h4': + case 'h5': + case 'h6': + tokenName = 'heading'; + break; + case 'ul': + tokenName = 'bullet_list'; + break; + case 'ol': + tokenName = 'ordered_list'; + break; + case 'li': + tokenName = 'list_item'; + break; + case 'a': + tokenName = 'link'; + break; + case 'strong': + tokenName = 'strong'; + break; + case 'em': + tokenName = 'em'; + break; + } + + if (!tokenName) { + return; + } + + const key = `${tokenName}_open`; + if(this.originalClassMap.has(key)){ + return; + } + + const original = this.markdownIt.renderer.rules[key]; + this.originalClassMap.set(key, original); + + this.markdownIt.renderer.rules[key] = (tokens, idx, options, env, self) => { + const token = tokens[idx]; + for (const clazz of classes) { + token.attrJoin('class', clazz); + } + + if (original) { + return original.call(this, tokens, idx, options, env, self); + } else { + return self.renderToken(tokens, idx, options); + } + }; + }); + } + + private unapplyTagClassMap() { + this.originalClassMap.forEach((original, key) => { + if (original) { + this.markdownIt.renderer.rules[key] = original; + } else { + delete this.markdownIt.renderer.rules[key]; + } + }); + this.originalClassMap.clear(); + } +} + +let markdownRenderer: MarkdownRenderer | null = null; + +export function useMarkdownRenderer(): MarkdownRenderer { + if (!markdownRenderer) { + markdownRenderer = new MarkdownRenderer(); + } + return markdownRenderer; +} diff --git a/renderers/vue/src/data/processor.ts b/renderers/vue/src/data/processor.ts new file mode 100644 index 000000000..003de5052 --- /dev/null +++ b/renderers/vue/src/data/processor.ts @@ -0,0 +1,67 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import { A2uiMessageProcessor } from '@a2ui/web_core/data/model-processor'; +import * as Types from '@a2ui/web_core/types/types'; +import { inject, provide, reactive, type InjectionKey } from 'vue'; + +export interface DispatchedEvent { + message: Types.A2UIClientEventMessage; + resolve: (messages: Types.ServerToClientMessage[]) => void; + reject: (error: Error) => void; +} + +export class MessageProcessor extends A2uiMessageProcessor { + private eventHandlers: Set<(event: DispatchedEvent) => void> = new Set(); + + constructor() { + super(); + } + + override setData( + node: Types.AnyComponentNode, + relativePath: string, + value: Types.DataValue, + surfaceId?: Types.SurfaceID | null, + ) { + return super.setData(node, relativePath, value, surfaceId ?? undefined); + } + + dispatch(message: Types.A2UIClientEventMessage): Promise { + return new Promise((resolve, reject) => { + const event: DispatchedEvent = { message, resolve, reject }; + this.eventHandlers.forEach((handler) => handler(event)); + }); + } + + onEvent(handler: (event: DispatchedEvent) => void): () => void { + this.eventHandlers.add(handler); + return () => this.eventHandlers.delete(handler); + } +} + +export const MESSAGE_PROCESSOR_KEY: InjectionKey = Symbol('message-processor'); + +export function useMessageProcessor(): MessageProcessor { + let processor = inject(MESSAGE_PROCESSOR_KEY, null); + + if (!processor) { + processor = reactive(new MessageProcessor()) as MessageProcessor; + provide(MESSAGE_PROCESSOR_KEY, processor); + } + + return processor; +} diff --git a/renderers/vue/src/data/types.ts b/renderers/vue/src/data/types.ts new file mode 100644 index 000000000..40f3c8f09 --- /dev/null +++ b/renderers/vue/src/data/types.ts @@ -0,0 +1,29 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import * as Types from '@a2ui/web_core/types/types'; + +export interface A2TextPayload { + kind: 'text'; + text: string; +} + +export interface A2DataPayload { + kind: 'data'; + data: Types.ServerToClientMessage; +} + +export type A2AServerPayload = Array | { error: string }; diff --git a/renderers/vue/src/examples/App.vue b/renderers/vue/src/examples/App.vue new file mode 100644 index 000000000..799242950 --- /dev/null +++ b/renderers/vue/src/examples/App.vue @@ -0,0 +1,88 @@ + + + + + + + diff --git a/renderers/vue/src/examples/README.md b/renderers/vue/src/examples/README.md new file mode 100644 index 000000000..041b492a3 --- /dev/null +++ b/renderers/vue/src/examples/README.md @@ -0,0 +1,77 @@ +# A2UI Vue Components Examples + +这个目录包含了 A2UI Vue 核心组件的交互式示例。 + +## 快速开始 + +在 `renderers/vue` 目录下运行: + +```bash +# 安装依赖(如果还没安装) +npm install + +# 启动开发服务器 +npm run dev +``` + +这将启动 Vite 开发服务器,自动在浏览器中打开示例页面(默认地址:http://localhost:5173)。 + +## 构建示例 + +如果需要构建examples用于部署: + +```bash +npm run build:examples +``` + +构建后的文件将输出到 `dist-examples` 目录。 + +## 预览构建后的示例 + +```bash +npm run preview:examples +``` + +## 可用的组件示例 + +示例页面包含以下 A2UI 组件的交互式演示: + +- **Text** - 文本显示组件,支持不同样式和Markdown +- **Button** - 可点击的按钮组件 +- **Card** - 卡片容器组件 +- **Row** - 水平布局容器 +- **Column** - 垂直布局容器 +- **List** - 列表组件 +- **Divider** - 分割线 + +## 项目结构 + +``` +src/examples/ +├── index.html # HTML入口文件 +├── main.ts # TypeScript入口 +├── App.vue # 主应用组件(包含导航) +├── style.css # 全局样式 +└── components/ # 各组件示例 + ├── TextExample.vue + ├── ButtonExample.vue + ├── CardExample.vue + └── ... +``` + +## 开发说明 + +- 每个组件示例都是独立的 Vue 组件 +- 可以通过顶部导航切换查看不同组件的示例 +- 选择 "All Examples" 可以查看所有组件的示例 +- 所有交互式组件(如输入框、滑块等)都是实时响应的 + +## 构建库文件 + +如果需要构建 A2UI Vue 库本身(而不是示例): + +```bash +npm run build +``` + +这将在 `dist` 目录中生成库文件。 diff --git a/renderers/vue/src/examples/components/ButtonExample.vue b/renderers/vue/src/examples/components/ButtonExample.vue new file mode 100644 index 000000000..9d0a08bde --- /dev/null +++ b/renderers/vue/src/examples/components/ButtonExample.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/renderers/vue/src/examples/components/CardExample.vue b/renderers/vue/src/examples/components/CardExample.vue new file mode 100644 index 000000000..f5a163774 --- /dev/null +++ b/renderers/vue/src/examples/components/CardExample.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/renderers/vue/src/examples/components/ColumnExample.vue b/renderers/vue/src/examples/components/ColumnExample.vue new file mode 100644 index 000000000..b77400358 --- /dev/null +++ b/renderers/vue/src/examples/components/ColumnExample.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/renderers/vue/src/examples/components/DividerExample.vue b/renderers/vue/src/examples/components/DividerExample.vue new file mode 100644 index 000000000..8ae60ef66 --- /dev/null +++ b/renderers/vue/src/examples/components/DividerExample.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/renderers/vue/src/examples/components/ListExample.vue b/renderers/vue/src/examples/components/ListExample.vue new file mode 100644 index 000000000..06349e1a6 --- /dev/null +++ b/renderers/vue/src/examples/components/ListExample.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/renderers/vue/src/examples/components/RowExample.vue b/renderers/vue/src/examples/components/RowExample.vue new file mode 100644 index 000000000..aae1e18b8 --- /dev/null +++ b/renderers/vue/src/examples/components/RowExample.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/renderers/vue/src/examples/components/TextExample.vue b/renderers/vue/src/examples/components/TextExample.vue new file mode 100644 index 000000000..e0df01b3f --- /dev/null +++ b/renderers/vue/src/examples/components/TextExample.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/renderers/vue/src/examples/index.html b/renderers/vue/src/examples/index.html new file mode 100644 index 000000000..bd4ecb4e5 --- /dev/null +++ b/renderers/vue/src/examples/index.html @@ -0,0 +1,12 @@ + + + + + + A2UI Vue Components Examples + + +
+ + + diff --git a/renderers/vue/src/examples/main.ts b/renderers/vue/src/examples/main.ts new file mode 100644 index 000000000..f37b547d9 --- /dev/null +++ b/renderers/vue/src/examples/main.ts @@ -0,0 +1,22 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import { createApp } from 'vue'; +import App from './App.vue'; +import './style.css'; + +const app = createApp(App); +app.mount('#app'); diff --git a/renderers/vue/src/examples/style.css b/renderers/vue/src/examples/style.css new file mode 100644 index 000000000..f8376a729 --- /dev/null +++ b/renderers/vue/src/examples/style.css @@ -0,0 +1,106 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; + background-color: #f5f5f5; + padding: 20px; +} + +#app { + max-width: 1200px; + margin: 0 auto; +} + +.examples-container { + background: white; + border-radius: 8px; + padding: 20px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); +} + +.examples-header { + margin-bottom: 30px; + padding-bottom: 20px; + border-bottom: 2px solid #e0e0e0; +} + +.examples-header h1 { + color: #333; + margin-bottom: 10px; +} + +.examples-header p { + color: #666; +} + +.examples-nav { + display: flex; + flex-wrap: wrap; + gap: 10px; + margin-bottom: 30px; + padding: 20px; + background: #f8f9fa; + border-radius: 6px; +} + +.examples-nav button { + padding: 10px 20px; + border: 1px solid #ddd; + background: white; + border-radius: 4px; + cursor: pointer; + transition: all 0.2s; + font-size: 14px; +} + +.examples-nav button:hover { + background: #e9ecef; + border-color: #adb5bd; +} + +.examples-nav button.active { + background: #007bff; + color: white; + border-color: #007bff; +} + +.example-section { + margin-bottom: 40px; + padding: 20px; + border: 1px solid #e0e0e0; + border-radius: 6px; +} + +.example-section h2 { + color: #333; + margin-bottom: 20px; + font-size: 24px; +} + +.example-section h3 { + color: #555; + margin-top: 20px; + margin-bottom: 10px; + font-size: 18px; +} + +.example-demo { + padding: 20px; + background: #fafafa; + border-radius: 4px; + margin-bottom: 15px; +} + +.example-description { + color: #666; + margin-bottom: 15px; + font-size: 14px; +} + +.a2ui-button button { + cursor: pointer; +} diff --git a/renderers/vue/src/examples/theme.ts b/renderers/vue/src/examples/theme.ts new file mode 100644 index 000000000..d64058eea --- /dev/null +++ b/renderers/vue/src/examples/theme.ts @@ -0,0 +1,443 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import * as Styles from '@a2ui/web_core/styles/index'; +import * as Types from '@a2ui/web_core/types/types'; + +/** Elements */ + +const a = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-500': true, + 'layout-as-n': true, + 'layout-dis-iflx': true, + 'layout-al-c': true, + 'typography-td-none': true, + 'color-c-p40': true, +}; + +const audio = { + 'layout-w-100': true, +}; + +const body = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-mt-0': true, + 'layout-mb-2': true, + 'typography-sz-bm': true, + 'color-c-n10': true, +}; + +const button = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-500': true, + 'layout-pt-3': true, + 'layout-pb-3': true, + 'layout-pl-5': true, + 'layout-pr-5': true, + 'layout-mb-1': true, + 'border-br-16': true, + 'border-bw-0': true, + 'border-c-n70': true, + 'border-bs-s': true, + 'color-bgc-s30': true, + 'behavior-ho-80': true, +}; + +const heading = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-500': true, + 'layout-mt-0': true, + 'layout-mb-2': true, +}; + +const iframe = { + 'behavior-sw-n': true, +}; + +const input = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-pl-4': true, + 'layout-pr-4': true, + 'layout-pt-2': true, + 'layout-pb-2': true, + 'border-br-6': true, + 'border-bw-1': true, + 'color-bc-s70': true, + 'border-bs-s': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const p = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const orderedList = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const unorderedList = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const listItem = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const pre = { + 'typography-f-c': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'typography-sz-bm': true, + 'typography-ws-p': true, + 'layout-as-n': true, +}; + +const textarea = { + ...input, + 'layout-r-none': true, + 'layout-fs-c': true, +}; + +const video = { + 'layout-el-cv': true, +}; + +const aLight = Styles.merge(a, {}); +const inputLight = Styles.merge(input, {}); +const textareaLight = Styles.merge(textarea, {}); +const buttonLight = Styles.merge(button, {}); +const bodyLight = Styles.merge(body, {}); +const pLight = Styles.merge(p, {}); +const preLight = Styles.merge(pre, {}); +const orderedListLight = Styles.merge(orderedList, {}); +const unorderedListLight = Styles.merge(unorderedList, {}); +const listItemLight = Styles.merge(listItem, {}); + +export const theme: Types.Theme = { + additionalStyles: { + Button: { + '--n-35': 'var(--n-100)', + '--n-10': 'var(--n-0)', + background: + 'linear-gradient(135deg, light-dark(#818cf8, #06b6d4) 0%, light-dark(#a78bfa, #3b82f6) 100%)', + boxShadow: '0 4px 15px rgba(102, 126, 234, 0.4)', + padding: '12px 28px', + textTransform: 'uppercase', + }, + Text: { + h1: { + color: 'transparent', + background: + 'linear-gradient(135deg, light-dark(#818cf8, #06b6d4) 0%, light-dark(#a78bfa, #3b82f6) 100%)', + '-webkit-background-clip': 'text', + 'background-clip': 'text', + '-webkit-text-fill-color': 'transparent', + }, + h2: { + color: 'transparent', + background: + 'linear-gradient(135deg, light-dark(#818cf8, #06b6d4) 0%, light-dark(#a78bfa, #3b82f6) 100%)', + '-webkit-background-clip': 'text', + 'background-clip': 'text', + '-webkit-text-fill-color': 'transparent', + }, + h3: { + color: 'transparent', + background: + 'linear-gradient(135deg, light-dark(#818cf8, #06b6d4) 0%, light-dark(#a78bfa, #3b82f6) 100%)', + '-webkit-background-clip': 'text', + 'background-clip': 'text', + '-webkit-text-fill-color': 'transparent', + }, + h4: {}, + h5: {}, + body: {}, + caption: {}, + }, + Card: { + background: + 'radial-gradient(circle at top left, light-dark(transparent, rgba(6, 182, 212, 0.15)), transparent 40%), radial-gradient(circle at bottom right, light-dark(transparent, rgba(139, 92, 246, 0.15)), transparent 40%), linear-gradient(135deg, light-dark(rgba(255, 255, 255, 0.7), rgba(30, 41, 59, 0.7)), light-dark(rgba(255, 255, 255, 0.7), rgba(15, 23, 42, 0.8)))', + }, + TextField: { + '--p-0': 'light-dark(var(--n-0), #1e293b)', + }, + }, + components: { + AudioPlayer: {}, + Button: { + 'layout-pt-2': true, + 'layout-pb-2': true, + 'layout-pl-3': true, + 'layout-pr-3': true, + 'border-br-12': true, + 'border-bw-0': true, + 'border-bs-s': true, + 'color-bgc-p30': true, + 'behavior-ho-70': true, + 'typography-w-400': true, + }, + Card: { 'border-br-9': true, 'layout-p-4': true, 'color-bgc-n100': true }, + CheckBox: { + element: { + 'layout-m-0': true, + 'layout-mr-2': true, + 'layout-p-2': true, + 'border-br-12': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bgc-p100': true, + 'color-bc-p60': true, + 'color-c-n30': true, + 'color-c-p30': true, + }, + label: { + 'color-c-p30': true, + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-flx-1': true, + 'typography-sz-ll': true, + }, + container: { + 'layout-dsp-iflex': true, + 'layout-al-c': true, + }, + }, + Column: { + 'layout-g-2': true, + }, + DateTimeInput: { + container: { + 'typography-sz-bm': true, + 'layout-w-100': true, + 'layout-g-2': true, + 'layout-dsp-flexhor': true, + 'layout-al-c': true, + 'typography-ws-nw': true, + }, + label: { + 'color-c-p30': true, + 'typography-sz-bm': true, + }, + element: { + 'layout-pt-2': true, + 'layout-pb-2': true, + 'layout-pl-3': true, + 'layout-pr-3': true, + 'border-br-2': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bgc-p100': true, + 'color-bc-p60': true, + 'color-c-n30': true, + 'color-c-p30': true, + }, + }, + Divider: {}, + Image: { + all: { + 'border-br-5': true, + 'layout-el-cv': true, + 'layout-w-100': true, + 'layout-h-100': true, + }, + avatar: { 'is-avatar': true }, + header: {}, + icon: {}, + largeFeature: {}, + mediumFeature: {}, + smallFeature: {}, + }, + Icon: {}, + List: { + 'layout-g-4': true, + 'layout-p-2': true, + }, + Modal: { + backdrop: { 'color-bbgc-p60_20': true }, + element: { + 'border-br-2': true, + 'color-bgc-p100': true, + 'layout-p-4': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bc-p80': true, + }, + }, + MultipleChoice: { + container: {}, + label: {}, + element: {}, + }, + Row: { + 'layout-g-4': true, + }, + Slider: { + container: {}, + label: {}, + element: {}, + }, + Tabs: { + container: {}, + controls: { all: {}, selected: {} }, + element: {}, + }, + Text: { + all: { + 'layout-w-100': true, + 'layout-g-2': true, + }, + h1: { + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'layout-p-0': true, + 'typography-sz-hs': true, + }, + h2: { + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'layout-p-0': true, + 'typography-sz-tl': true, + }, + h3: { + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'layout-p-0': true, + 'typography-sz-tl': true, + }, + h4: { + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'layout-p-0': true, + 'typography-sz-bl': true, + }, + h5: { + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'layout-p-0': true, + 'typography-sz-bm': true, + }, + body: {}, + caption: {}, + }, + TextField: { + container: { + 'typography-sz-bm': true, + 'layout-w-100': true, + 'layout-g-2': true, + 'layout-dsp-flexhor': true, + 'layout-al-c': true, + 'typography-ws-nw': true, + }, + label: { + 'layout-flx-0': true, + 'color-c-p30': true, + }, + element: { + 'typography-sz-bm': true, + 'layout-pt-2': true, + 'layout-pb-2': true, + 'layout-pl-3': true, + 'layout-pr-3': true, + 'border-br-2': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bgc-p100': true, + 'color-bc-p60': true, + 'color-c-n30': true, + 'color-c-p30': true, + }, + }, + Video: { + 'border-br-5': true, + 'layout-el-cv': true, + }, + }, + elements: { + a: aLight, + audio, + body: bodyLight, + button: buttonLight, + h1: heading, + h2: heading, + h3: heading, + h4: heading, + h5: heading, + iframe, + input: inputLight, + p: pLight, + pre: preLight, + textarea: textareaLight, + video, + }, + markdown: { + p: [...Object.keys(pLight)], + h1: [...Object.keys(heading)], + h2: [...Object.keys(heading)], + h3: [...Object.keys(heading)], + h4: [...Object.keys(heading)], + h5: [...Object.keys(heading)], + ul: [...Object.keys(unorderedListLight)], + ol: [...Object.keys(orderedListLight)], + li: [...Object.keys(listItemLight)], + a: [...Object.keys(aLight)], + strong: [], + em: [], + }, +}; diff --git a/renderers/vue/src/index.ts b/renderers/vue/src/index.ts new file mode 100644 index 000000000..b95f3e5ec --- /dev/null +++ b/renderers/vue/src/index.ts @@ -0,0 +1,35 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +// Core exports +export { provideA2UI, useA2UIConfig } from './config'; +export { useMessageProcessor, MessageProcessor } from './data/processor'; +export { useMarkdownRenderer } from './data/markdown'; +export type { A2AServerPayload, A2TextPayload, A2DataPayload } from './data/types'; + +// Rendering exports +export { default as A2UiRenderer } from './rendering/A2UIRenderer.vue'; +export { useDynamicComponent } from './rendering/useDynamicComponent'; +export type { Catalog, CatalogEntry } from './rendering/catalog'; +export { DEFAULT_CATALOG } from './catalog/default'; + +// Component exports +export { default as A2UISurface } from './catalog/A2UISurface.vue'; + +// Re-export types from @a2ui/web_core +// export type * as Types from '@a2ui/web_core/types/types'; +// export type * as Primitives from '@a2ui/web_core/types/primitives'; +// export * as Styles from '@a2ui/web_core/styles/index'; diff --git a/renderers/vue/src/rendering/A2UIRenderer.vue b/renderers/vue/src/rendering/A2UIRenderer.vue new file mode 100644 index 000000000..0b2db9fcf --- /dev/null +++ b/renderers/vue/src/rendering/A2UIRenderer.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/renderers/vue/src/rendering/catalog.ts b/renderers/vue/src/rendering/catalog.ts new file mode 100644 index 000000000..325c875d9 --- /dev/null +++ b/renderers/vue/src/rendering/catalog.ts @@ -0,0 +1,34 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import type { Component, DefineComponent } from 'vue'; +import * as Types from '@a2ui/web_core/types/types'; + +export type CatalogLoader = () => + | Promise> + | Component + | DefineComponent; + +export type CatalogEntry = + | CatalogLoader + | { + type: CatalogLoader; + props: (data: T) => Record; + }; + +export interface Catalog { + [key: string]: CatalogEntry; +} diff --git a/renderers/vue/src/rendering/useDynamicComponent.ts b/renderers/vue/src/rendering/useDynamicComponent.ts new file mode 100644 index 000000000..73af7be7c --- /dev/null +++ b/renderers/vue/src/rendering/useDynamicComponent.ts @@ -0,0 +1,113 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import * as Primitives from '@a2ui/web_core/types/primitives'; +import * as Types from '@a2ui/web_core/types/types'; +import { useA2UIConfig } from '../config'; +import { useMessageProcessor } from '../data/processor'; + +let idCounter = 0; + +export function useDynamicComponent(props: { + surfaceId: Types.SurfaceID | null; + component: T; + weight: string | number; +}) { + const { theme } = useA2UIConfig(); + const processor = useMessageProcessor(); + + function sendAction(action: Types.Action): Promise { + const component = props.component; + const surfaceId = props.surfaceId ?? undefined; + const context: Record = {}; + + if (action.context) { + for (const item of action.context) { + if (item.value.literalBoolean !== undefined) { + context[item.key] = item.value.literalBoolean; + } else if (item.value.literalNumber !== undefined) { + context[item.key] = item.value.literalNumber; + } else if (item.value.literalString !== undefined) { + context[item.key] = item.value.literalString; + } else if (item.value.path) { + const path = processor.resolvePath(item.value.path, component.dataContextPath); + const value = processor.getData(component, path, surfaceId); + context[item.key] = value; + } + } + } + + const message: Types.A2UIClientEventMessage = { + userAction: { + name: action.name, + sourceComponentId: component.id, + surfaceId: surfaceId!, + timestamp: new Date().toISOString(), + context, + }, + }; + + return processor.dispatch(message); + } + + function resolvePrimitive(value: Primitives.StringValue | null): string | null; + function resolvePrimitive(value: Primitives.BooleanValue | null): boolean | null; + function resolvePrimitive(value: Primitives.NumberValue | null): number | null; + function resolvePrimitive( + value: Primitives.StringValue | Primitives.BooleanValue | Primitives.NumberValue | null, + ): string | boolean | number | null { + const component = props.component; + const surfaceId = props.surfaceId; + + if (!value || typeof value !== 'object') { + return null; + } else if ((value as any).literal != null) { + return (value as any).literal; + } else if ((value as any).path) { + return processor.getData(component, (value as any).path, surfaceId ?? undefined) as any; + } else if ('literalString' in value) { + return value.literalString ?? null; + } else if ('literalNumber' in value) { + return value.literalNumber ?? null; + } else if ('literalBoolean' in value) { + return value.literalBoolean ?? null; + } + + return null; + } + + function getUniqueId(prefix: string): string { + return `${prefix}-${idCounter++}`; + } + + function setData( + node: Types.AnyComponentNode, + relativePath: string, + value: Types.DataValue, + surfaceId?: Types.SurfaceID | null, + ) { + processor.setData(node, relativePath, value, surfaceId); + } + + return { + theme, + processor, + sendAction, + resolvePrimitive, + getUniqueId, + setData, + }; +} diff --git a/renderers/vue/src/shims-vue.d.ts b/renderers/vue/src/shims-vue.d.ts new file mode 100644 index 000000000..3804a43e2 --- /dev/null +++ b/renderers/vue/src/shims-vue.d.ts @@ -0,0 +1,6 @@ +/* eslint-disable */ +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/renderers/vue/test.html b/renderers/vue/test.html new file mode 100644 index 000000000..56a71c916 --- /dev/null +++ b/renderers/vue/test.html @@ -0,0 +1,176 @@ + + + + + CSS :host Selector Examples + + + +
+

CSS :host Selector Examples

+ +
+

Example 1: Basic :host

+

The :host selector styles the shadow host (the custom element itself).

+ +
+ +
+

Example 2: :host with class selector

+

The :host(.featured) applies styles when the host has the "featured" class.

+ +
+ +
+

Example 3: :host-context

+

The :host-context(.dark-theme) applies styles when the host is inside a dark-theme ancestor.

+ +
+ +
+
+
+ + + + + + diff --git a/renderers/vue/tsconfig.json b/renderers/vue/tsconfig.json new file mode 100644 index 000000000..5de7f1372 --- /dev/null +++ b/renderers/vue/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "declaration": true, + "declarationDir": "./dist", + "outDir": "./dist", + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + } + }, + "include": ["src/**/*.ts", "src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/renderers/vue/tsconfig.node.json b/renderers/vue/tsconfig.node.json new file mode 100644 index 000000000..97ede7ee6 --- /dev/null +++ b/renderers/vue/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/renderers/vue/vite.config.ts b/renderers/vue/vite.config.ts new file mode 100644 index 000000000..a485021ea --- /dev/null +++ b/renderers/vue/vite.config.ts @@ -0,0 +1,77 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import dts from 'vite-plugin-dts'; +import { resolve } from 'path'; + +export default defineConfig(({ mode }) => { + const isLib = mode === 'lib'; + const projectRoot = __dirname; + + return { + plugins: [ + vue( + { + template: { + compilerOptions: { + // 将所有带短横线的标签名都视为自定义元素 + isCustomElement: (tag) => tag.includes('a2ui-') + } + } + } + ), + ...(isLib + ? [dts({ + rollupTypes: true, + exclude: ['src/examples/**', 'node_modules/**'] + })] + : []), + ], + root: isLib ? '.' : resolve(projectRoot, 'src/examples'), + build: isLib + ? { + lib: { + entry: resolve(__dirname, 'src/index.ts'), + name: 'A2UIVue', + formats: ['es', 'cjs'], + fileName: (format) => `index.${format === 'es' ? 'mjs' : 'js'}`, + }, + rollupOptions: { + external: ['vue', '@a2ui/web_core'], + output: { + globals: { + vue: 'Vue', + '@a2ui/web_core': 'A2UIWebCore' + }, + }, + } + } + : { + outDir: resolve(__dirname, 'dist-examples'), + }, + resolve: { + alias: { + '@': resolve(projectRoot, 'src') + }, + }, + server: { + port: 5173, + open: true, + }, + }; +}); diff --git a/samples/client/vue/README.md b/samples/client/vue/README.md new file mode 100644 index 000000000..fad64bd8b --- /dev/null +++ b/samples/client/vue/README.md @@ -0,0 +1,41 @@ +# Vue A2UI + +These are sample implementations of A2UI in Vue 3. + +## Prerequisites + +1. [nodejs](https://nodejs.org/en) +2. [pnpm](https://pnpm.io/installation) (recommended package manager) + +## Running + +Here is the quickstart for the restaurant app: + +```bash +# Set up your Gemini API key +cp ../../agent/adk/restaurant_finder/.env.example ../../agent/adk/restaurant_finder/.env +# Edit the .env file with your actual API key (do not commit .env) + +# Start the restaurant app frontend +pnpm install +pnpm demo:restaurant +``` + +Here are the instructions if you want to do each step manually. + +1. Build the shared dependencies by running `pnpm install && pnpm run build` in the `renderers/web_core` and `renderers/vue` directories +2. Install the dependencies: `pnpm install` +3. Run the relevant A2A server: + * [For the restaurant app](../../agent/adk/restaurant_finder/) +4. Run the relevant app (frontend only): + * `pnpm run start:restaurant` + * `pnpm run start:gallery` (Client-only, no server required) +5. Open the URL shown in the terminal (typically http://localhost:4000/) + +Important: The sample code provided is for demonstration purposes and illustrates the mechanics of A2UI and the Agent-to-Agent (A2A) protocol. When building production applications, it is critical to treat any agent operating outside of your direct control as a potentially untrusted entity. + +All operational data received from an external agent—including its AgentCard, messages, artifacts, and task statuses—should be handled as untrusted input. For example, a malicious agent could provide crafted data in its fields (e.g., name, skills.description) that, if used without sanitization to construct prompts for a Large Language Model (LLM), could expose your application to prompt injection attacks. + +Similarly, any UI definition or data stream received must be treated as untrusted. Malicious agents could attempt to spoof legitimate interfaces to deceive users (phishing), inject malicious scripts via property values (XSS), or generate excessive layout complexity to degrade client performance (DoS). If your application supports optional embedded content (such as iframes or web views), additional care must be taken to prevent exposure to malicious external sites. + +Developer Responsibility: Failure to properly validate data and strictly sandbox rendered content can introduce severe vulnerabilities. Developers are responsible for implementing appropriate security measures—such as input sanitization, Content Security Policies (CSP), strict isolation for optional embedded content, and secure credential handling—to protect their systems and users. diff --git a/samples/client/vue/package.json b/samples/client/vue/package.json new file mode 100644 index 000000000..4a584648f --- /dev/null +++ b/samples/client/vue/package.json @@ -0,0 +1,16 @@ +{ + "name": "@a2ui/vue3-samples", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "start:restaurant": "pnpm --filter vue-restaurant dev", + "start:gallery": "pnpm --filter vue-gallery dev", + "serve:agent:restaurant": "cd ../../agent/adk/restaurant_finder && uv run .", + "build:renderer": "cd ../../../renderers/web_core && npm install && npm run build && cd ../vue && npm install && npm run build", + "demo:restaurant": "pnpm run build:renderer && pnpm install && concurrently -k -n \"AGENT,WEB\" -c \"magenta,blue\" \"pnpm run serve:agent:restaurant\" \"pnpm run start:restaurant\"" + }, + "devDependencies": { + "concurrently": "9.2.1" + } +} diff --git a/samples/client/vue/pnpm-lock.yaml b/samples/client/vue/pnpm-lock.yaml new file mode 100644 index 000000000..fe76fb921 --- /dev/null +++ b/samples/client/vue/pnpm-lock.yaml @@ -0,0 +1,2495 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + concurrently: + specifier: 9.2.1 + version: 9.2.1 + + projects/a2a-chat-canvas: + dependencies: + '@a2a-js/sdk': + specifier: ^0.3.4 + version: 0.3.9(express@4.22.1) + '@a2ui/vue': + specifier: file:../../../../../renderers/vue + version: file:../../../renderers/vue(vue@3.5.27(typescript@5.9.3)) + '@a2ui/web_core': + specifier: file:../../../../../renderers/web_core + version: file:../../../renderers/web_core + uuid: + specifier: ^13.0.0 + version: 13.0.0 + vue: + specifier: ^3.4.0 + version: 3.5.27(typescript@5.9.3) + devDependencies: + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + typescript: + specifier: ~5.9.2 + version: 5.9.3 + vue-tsc: + specifier: ^2.2.0 + version: 2.2.12(typescript@5.9.3) + + projects/contact: + dependencies: + '@a2a-js/sdk': + specifier: ^0.3.4 + version: 0.3.9(express@4.22.1) + '@a2ui/vue': + specifier: file:../../../../../renderers/vue + version: file:../../../renderers/vue(vue@3.5.27(typescript@5.9.3)) + '@a2ui/web_core': + specifier: file:../../../../../renderers/web_core + version: file:../../../renderers/web_core + uuid: + specifier: ^13.0.0 + version: 13.0.0 + vue: + specifier: ^3.4.0 + version: 3.5.27(typescript@5.9.3) + devDependencies: + '@types/node': + specifier: ^20.17.19 + version: 20.19.30 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + '@vitejs/plugin-vue': + specifier: ^5.2.1 + version: 5.2.4(vite@6.4.1(@types/node@20.19.30))(vue@3.5.27(typescript@5.9.3)) + concurrently: + specifier: ^9.2.1 + version: 9.2.1 + typescript: + specifier: ~5.9.2 + version: 5.9.3 + vite: + specifier: ^6.0.0 + version: 6.4.1(@types/node@20.19.30) + vue-tsc: + specifier: ^2.2.0 + version: 2.2.12(typescript@5.9.3) + + projects/gallery: + dependencies: + '@a2ui/vue': + specifier: file:../../../../../renderers/vue + version: file:../../../renderers/vue(vue@3.5.27(typescript@5.9.3)) + '@a2ui/web_core': + specifier: file:../../../../../renderers/web_core + version: file:../../../renderers/web_core + vue: + specifier: ^3.5.27 + version: 3.5.27(typescript@5.9.3) + devDependencies: + '@types/node': + specifier: ^20.17.19 + version: 20.19.30 + '@vitejs/plugin-vue': + specifier: ^5.2.1 + version: 5.2.4(vite@7.3.1(@types/node@20.19.30))(vue@3.5.27(typescript@5.9.3)) + typescript: + specifier: ~5.9.2 + version: 5.9.3 + vite: + specifier: ^7.3.1 + version: 7.3.1(@types/node@20.19.30) + vue-tsc: + specifier: ^2.2.0 + version: 2.2.12(typescript@5.9.3) + + projects/orchestrator: + dependencies: + '@a2a-js/sdk': + specifier: ^0.3.4 + version: 0.3.9(express@4.22.1) + '@a2ui/vue': + specifier: file:../../../../../renderers/vue + version: file:../../../renderers/vue(vue@3.5.27(typescript@5.9.3)) + '@a2ui/web_core': + specifier: file:../../../../../renderers/web_core + version: file:../../../renderers/web_core + chart.js: + specifier: ^4.5.1 + version: 4.5.1 + chartjs-plugin-datalabels: + specifier: ^2.2.0 + version: 2.2.0(chart.js@4.5.1) + uuid: + specifier: ^13.0.0 + version: 13.0.0 + vue: + specifier: ^3.4.0 + version: 3.5.27(typescript@5.9.3) + vue-chartjs: + specifier: ^5.3.2 + version: 5.3.3(chart.js@4.5.1)(vue@3.5.27(typescript@5.9.3)) + devDependencies: + '@types/google.maps': + specifier: ^3.58.1 + version: 3.58.1 + '@types/node': + specifier: ^20.17.19 + version: 20.19.30 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + '@vitejs/plugin-vue': + specifier: ^5.2.1 + version: 5.2.4(vite@6.4.1(@types/node@20.19.30))(vue@3.5.27(typescript@5.9.3)) + concurrently: + specifier: ^9.2.1 + version: 9.2.1 + typescript: + specifier: ~5.9.2 + version: 5.9.3 + vite: + specifier: ^6.0.0 + version: 6.4.1(@types/node@20.19.30) + vue-tsc: + specifier: ^2.2.0 + version: 2.2.12(typescript@5.9.3) + + projects/restaurant: + dependencies: + '@a2a-js/sdk': + specifier: ^0.3.4 + version: 0.3.9(express@4.22.1) + '@a2ui/vue': + specifier: file:../../../../../renderers/vue + version: file:../../../renderers/vue(vue@3.5.27(typescript@5.9.3)) + '@a2ui/web_core': + specifier: file:../../../../../renderers/web_core + version: file:../../../renderers/web_core + uuid: + specifier: ^13.0.0 + version: 13.0.0 + vue: + specifier: ^3.5.27 + version: 3.5.27(typescript@5.9.3) + devDependencies: + '@types/node': + specifier: ^20.17.19 + version: 20.19.30 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + '@vitejs/plugin-vue': + specifier: ^5.2.1 + version: 5.2.4(vite@7.3.1(@types/node@20.19.30))(vue@3.5.27(typescript@5.9.3)) + concurrently: + specifier: ^9.2.1 + version: 9.2.1 + typescript: + specifier: ~5.9.2 + version: 5.9.3 + vite: + specifier: ^7.3.1 + version: 7.3.1(@types/node@20.19.30) + vue-tsc: + specifier: ^2.2.0 + version: 2.2.12(typescript@5.9.3) + + projects/rizzcharts: + dependencies: + '@a2a-js/sdk': + specifier: ^0.3.4 + version: 0.3.9(express@4.22.1) + '@a2ui/vue': + specifier: file:../../../../../renderers/vue + version: file:../../../renderers/vue(vue@3.5.27(typescript@5.9.3)) + '@a2ui/web_core': + specifier: file:../../../../../renderers/web_core + version: file:../../../renderers/web_core + chart.js: + specifier: ^4.5.1 + version: 4.5.1 + chartjs-plugin-datalabels: + specifier: ^2.2.0 + version: 2.2.0(chart.js@4.5.1) + uuid: + specifier: ^13.0.0 + version: 13.0.0 + vue: + specifier: ^3.4.0 + version: 3.5.27(typescript@5.9.3) + vue-chartjs: + specifier: ^5.3.2 + version: 5.3.3(chart.js@4.5.1)(vue@3.5.27(typescript@5.9.3)) + devDependencies: + '@types/google.maps': + specifier: ^3.58.1 + version: 3.58.1 + '@types/node': + specifier: ^20.17.19 + version: 20.19.30 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + '@vitejs/plugin-vue': + specifier: ^5.2.1 + version: 5.2.4(vite@6.4.1(@types/node@20.19.30))(vue@3.5.27(typescript@5.9.3)) + concurrently: + specifier: ^9.2.1 + version: 9.2.1 + typescript: + specifier: ~5.9.2 + version: 5.9.3 + vite: + specifier: ^6.0.0 + version: 6.4.1(@types/node@20.19.30) + vue-tsc: + specifier: ^2.2.0 + version: 2.2.12(typescript@5.9.3) + +packages: + + '@a2a-js/sdk@0.3.9': + resolution: {integrity: sha512-GWOSjL/dbkNRETfmLIKqtVV/fm+chPPp0uL5DUDKJlFmVjPCxRS75I6oiIkJeGo3/AM7QjaZTMb003Ia09ibtQ==} + engines: {node: '>=18'} + peerDependencies: + '@bufbuild/protobuf': ^2.10.2 + '@grpc/grpc-js': ^1.11.0 + express: ^4.21.2 || ^5.1.0 + peerDependenciesMeta: + '@bufbuild/protobuf': + optional: true + '@grpc/grpc-js': + optional: true + express: + optional: true + + '@a2ui/vue@file:../../../renderers/vue': + resolution: {directory: ../../../renderers/vue, type: directory} + peerDependencies: + vue: ^3.4.0 + + '@a2ui/web_core@file:../../../renderers/web_core': + resolution: {directory: ../../../renderers/web_core, type: directory} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + engines: {node: '>=6.9.0'} + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@kurkle/color@0.3.4': + resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} + + '@rollup/rollup-android-arm-eabi@4.57.0': + resolution: {integrity: sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.57.0': + resolution: {integrity: sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.57.0': + resolution: {integrity: sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.57.0': + resolution: {integrity: sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.57.0': + resolution: {integrity: sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.57.0': + resolution: {integrity: sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.57.0': + resolution: {integrity: sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.57.0': + resolution: {integrity: sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.57.0': + resolution: {integrity: sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.57.0': + resolution: {integrity: sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.57.0': + resolution: {integrity: sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.57.0': + resolution: {integrity: sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.57.0': + resolution: {integrity: sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.57.0': + resolution: {integrity: sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.57.0': + resolution: {integrity: sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.57.0': + resolution: {integrity: sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.57.0': + resolution: {integrity: sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.57.0': + resolution: {integrity: sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.57.0': + resolution: {integrity: sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.57.0': + resolution: {integrity: sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.57.0': + resolution: {integrity: sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.57.0': + resolution: {integrity: sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.57.0': + resolution: {integrity: sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.57.0': + resolution: {integrity: sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.57.0': + resolution: {integrity: sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==} + cpu: [x64] + os: [win32] + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/google.maps@3.58.1': + resolution: {integrity: sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==} + + '@types/node@20.19.30': + resolution: {integrity: sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@vitejs/plugin-vue@5.2.4': + resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + vue: ^3.2.25 + + '@volar/language-core@2.4.15': + resolution: {integrity: sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==} + + '@volar/source-map@2.4.15': + resolution: {integrity: sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==} + + '@volar/typescript@2.4.15': + resolution: {integrity: sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==} + + '@vue/compiler-core@3.5.27': + resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==} + + '@vue/compiler-dom@3.5.27': + resolution: {integrity: sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==} + + '@vue/compiler-sfc@3.5.27': + resolution: {integrity: sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==} + + '@vue/compiler-ssr@3.5.27': + resolution: {integrity: sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + + '@vue/language-core@2.2.12': + resolution: {integrity: sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.5.27': + resolution: {integrity: sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==} + + '@vue/runtime-core@3.5.27': + resolution: {integrity: sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==} + + '@vue/runtime-dom@3.5.27': + resolution: {integrity: sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==} + + '@vue/server-renderer@3.5.27': + resolution: {integrity: sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==} + peerDependencies: + vue: 3.5.27 + + '@vue/shared@3.5.27': + resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + alien-signals@1.0.13: + resolution: {integrity: sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chart.js@4.5.1: + resolution: {integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==} + engines: {pnpm: '>=8'} + + chartjs-plugin-datalabels@2.2.0: + resolution: {integrity: sha512-14ZU30lH7n89oq+A4bWaJPnAG8a7ZTk7dKf48YAzMvJjQtjrgg5Dpk9f+LbjCF6bpx3RAGTeL13IXpKQYyRvlw==} + peerDependencies: + chart.js: '>=3.0.0' + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + concurrently@9.2.1: + resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==} + engines: {node: '>=18'} + hasBin: true + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + dompurify@3.3.1: + resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + express@4.22.1: + resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} + engines: {node: '>= 0.10.0'} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} + engines: {node: '>= 0.8'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} + engines: {node: '>=0.6'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} + engines: {node: '>= 0.8'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + rollup@4.57.0: + resolution: {integrity: sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + + uuid@13.0.0: + resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} + hasBin: true + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite@6.4.1: + resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + vue-chartjs@5.3.3: + resolution: {integrity: sha512-jqxtL8KZ6YJ5NTv6XzrzLS7osyegOi28UGNZW0h9OkDL7Sh1396ht4Dorh04aKrl2LiSalQ84WtqiG0RIJb0tA==} + peerDependencies: + chart.js: ^4.1.1 + vue: ^3.0.0-0 || ^2.7.0 + + vue-tsc@2.2.12: + resolution: {integrity: sha512-P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.27: + resolution: {integrity: sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + +snapshots: + + '@a2a-js/sdk@0.3.9(express@4.22.1)': + dependencies: + uuid: 11.1.0 + optionalDependencies: + express: 4.22.1 + + '@a2ui/vue@file:../../../renderers/vue(vue@3.5.27(typescript@5.9.3))': + dependencies: + '@a2ui/web_core': file:../../../renderers/web_core + dompurify: 3.3.1 + markdown-it: 14.1.0 + vue: 3.5.27(typescript@5.9.3) + + '@a2ui/web_core@file:../../../renderers/web_core': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/parser@7.28.6': + dependencies: + '@babel/types': 7.28.6 + + '@babel/types@7.28.6': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.2': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.2': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.27.2': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.27.2': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.27.2': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.27.2': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.27.2': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.27.2': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.27.2': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.27.2': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.27.2': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.27.2': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.27.2': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.27.2': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.27.2': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.2': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.27.2': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.27.2': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.2': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.2': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.2': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.2': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.2': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.2': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.2': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.2': + optional: true + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@kurkle/color@0.3.4': {} + + '@rollup/rollup-android-arm-eabi@4.57.0': + optional: true + + '@rollup/rollup-android-arm64@4.57.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.57.0': + optional: true + + '@rollup/rollup-darwin-x64@4.57.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.57.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.57.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.57.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.57.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.57.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.57.0': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.57.0': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.57.0': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.57.0': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.57.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.57.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.57.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.57.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.57.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.57.0': + optional: true + + '@rollup/rollup-openbsd-x64@4.57.0': + optional: true + + '@rollup/rollup-openharmony-arm64@4.57.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.57.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.57.0': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.57.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.57.0': + optional: true + + '@types/estree@1.0.8': {} + + '@types/google.maps@3.58.1': {} + + '@types/node@20.19.30': + dependencies: + undici-types: 6.21.0 + + '@types/trusted-types@2.0.7': + optional: true + + '@types/uuid@10.0.0': {} + + '@vitejs/plugin-vue@5.2.4(vite@6.4.1(@types/node@20.19.30))(vue@3.5.27(typescript@5.9.3))': + dependencies: + vite: 6.4.1(@types/node@20.19.30) + vue: 3.5.27(typescript@5.9.3) + + '@vitejs/plugin-vue@5.2.4(vite@7.3.1(@types/node@20.19.30))(vue@3.5.27(typescript@5.9.3))': + dependencies: + vite: 7.3.1(@types/node@20.19.30) + vue: 3.5.27(typescript@5.9.3) + + '@volar/language-core@2.4.15': + dependencies: + '@volar/source-map': 2.4.15 + + '@volar/source-map@2.4.15': {} + + '@volar/typescript@2.4.15': + dependencies: + '@volar/language-core': 2.4.15 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vue/compiler-core@3.5.27': + dependencies: + '@babel/parser': 7.28.6 + '@vue/shared': 3.5.27 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.27': + dependencies: + '@vue/compiler-core': 3.5.27 + '@vue/shared': 3.5.27 + + '@vue/compiler-sfc@3.5.27': + dependencies: + '@babel/parser': 7.28.6 + '@vue/compiler-core': 3.5.27 + '@vue/compiler-dom': 3.5.27 + '@vue/compiler-ssr': 3.5.27 + '@vue/shared': 3.5.27 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.27': + dependencies: + '@vue/compiler-dom': 3.5.27 + '@vue/shared': 3.5.27 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/language-core@2.2.12(typescript@5.9.3)': + dependencies: + '@volar/language-core': 2.4.15 + '@vue/compiler-dom': 3.5.27 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.27 + alien-signals: 1.0.13 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.9.3 + + '@vue/reactivity@3.5.27': + dependencies: + '@vue/shared': 3.5.27 + + '@vue/runtime-core@3.5.27': + dependencies: + '@vue/reactivity': 3.5.27 + '@vue/shared': 3.5.27 + + '@vue/runtime-dom@3.5.27': + dependencies: + '@vue/reactivity': 3.5.27 + '@vue/runtime-core': 3.5.27 + '@vue/shared': 3.5.27 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.27(vue@3.5.27(typescript@5.9.3))': + dependencies: + '@vue/compiler-ssr': 3.5.27 + '@vue/shared': 3.5.27 + vue: 3.5.27(typescript@5.9.3) + + '@vue/shared@3.5.27': {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + optional: true + + alien-signals@1.0.13: {} + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + array-flatten@1.1.1: + optional: true + + balanced-match@1.0.2: {} + + body-parser@1.20.4: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.14.1 + raw-body: 2.5.3 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + optional: true + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + bytes@3.1.2: + optional: true + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + optional: true + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + optional: true + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chart.js@4.5.1: + dependencies: + '@kurkle/color': 0.3.4 + + chartjs-plugin-datalabels@2.2.0(chart.js@4.5.1): + dependencies: + chart.js: 4.5.1 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + concurrently@9.2.1: + dependencies: + chalk: 4.1.2 + rxjs: 7.8.2 + shell-quote: 1.8.3 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + optional: true + + content-type@1.0.5: + optional: true + + cookie-signature@1.0.7: + optional: true + + cookie@0.7.2: + optional: true + + csstype@3.2.3: {} + + de-indent@1.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + optional: true + + depd@2.0.0: + optional: true + + destroy@1.2.0: + optional: true + + dompurify@3.3.1: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + optional: true + + ee-first@1.1.1: + optional: true + + emoji-regex@8.0.0: {} + + encodeurl@2.0.0: + optional: true + + entities@4.5.0: {} + + entities@7.0.1: {} + + es-define-property@1.0.1: + optional: true + + es-errors@1.3.0: + optional: true + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + optional: true + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esbuild@0.27.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 + + escalade@3.2.0: {} + + escape-html@1.0.3: + optional: true + + estree-walker@2.0.2: {} + + etag@1.8.1: + optional: true + + express@4.22.1: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.4 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.2 + fresh: 0.5.2 + http-errors: 2.0.1 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.14.1 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.2 + serve-static: 1.16.3 + setprototypeof: 1.2.0 + statuses: 2.0.2 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + optional: true + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + finalhandler@1.3.2: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + optional: true + + forwarded@0.2.0: + optional: true + + fresh@0.5.2: + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: + optional: true + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + optional: true + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + optional: true + + gopd@1.2.0: + optional: true + + has-flag@4.0.0: {} + + has-symbols@1.1.0: + optional: true + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + optional: true + + he@1.2.0: {} + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + optional: true + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + optional: true + + inherits@2.0.4: + optional: true + + ipaddr.js@1.9.1: + optional: true + + is-fullwidth-code-point@3.0.0: {} + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + math-intrinsics@1.1.0: + optional: true + + mdurl@2.0.0: {} + + media-typer@0.3.0: + optional: true + + merge-descriptors@1.0.3: + optional: true + + methods@1.1.2: + optional: true + + mime-db@1.52.0: + optional: true + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + optional: true + + mime@1.6.0: + optional: true + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + ms@2.0.0: + optional: true + + ms@2.1.3: + optional: true + + muggle-string@0.4.1: {} + + nanoid@3.3.11: {} + + negotiator@0.6.3: + optional: true + + object-inspect@1.13.4: + optional: true + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + optional: true + + parseurl@1.3.3: + optional: true + + path-browserify@1.0.1: {} + + path-to-regexp@0.1.12: + optional: true + + picocolors@1.1.1: {} + + picomatch@4.0.3: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + optional: true + + punycode.js@2.3.1: {} + + qs@6.14.1: + dependencies: + side-channel: 1.1.0 + optional: true + + range-parser@1.2.1: + optional: true + + raw-body@2.5.3: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + optional: true + + require-directory@2.1.1: {} + + rollup@4.57.0: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.57.0 + '@rollup/rollup-android-arm64': 4.57.0 + '@rollup/rollup-darwin-arm64': 4.57.0 + '@rollup/rollup-darwin-x64': 4.57.0 + '@rollup/rollup-freebsd-arm64': 4.57.0 + '@rollup/rollup-freebsd-x64': 4.57.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.0 + '@rollup/rollup-linux-arm-musleabihf': 4.57.0 + '@rollup/rollup-linux-arm64-gnu': 4.57.0 + '@rollup/rollup-linux-arm64-musl': 4.57.0 + '@rollup/rollup-linux-loong64-gnu': 4.57.0 + '@rollup/rollup-linux-loong64-musl': 4.57.0 + '@rollup/rollup-linux-ppc64-gnu': 4.57.0 + '@rollup/rollup-linux-ppc64-musl': 4.57.0 + '@rollup/rollup-linux-riscv64-gnu': 4.57.0 + '@rollup/rollup-linux-riscv64-musl': 4.57.0 + '@rollup/rollup-linux-s390x-gnu': 4.57.0 + '@rollup/rollup-linux-x64-gnu': 4.57.0 + '@rollup/rollup-linux-x64-musl': 4.57.0 + '@rollup/rollup-openbsd-x64': 4.57.0 + '@rollup/rollup-openharmony-arm64': 4.57.0 + '@rollup/rollup-win32-arm64-msvc': 4.57.0 + '@rollup/rollup-win32-ia32-msvc': 4.57.0 + '@rollup/rollup-win32-x64-gnu': 4.57.0 + '@rollup/rollup-win32-x64-msvc': 4.57.0 + fsevents: 2.3.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.2.1: + optional: true + + safer-buffer@2.1.2: + optional: true + + send@0.19.2: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.1 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + optional: true + + serve-static@1.16.3: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.2 + transitivePeerDependencies: + - supports-color + optional: true + + setprototypeof@1.2.0: + optional: true + + shell-quote@1.8.3: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + optional: true + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + optional: true + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + optional: true + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + optional: true + + source-map-js@1.2.1: {} + + statuses@2.0.2: + optional: true + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + toidentifier@1.0.1: + optional: true + + tree-kill@1.2.2: {} + + tslib@2.8.1: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + optional: true + + typescript@5.9.3: {} + + uc.micro@2.1.0: {} + + undici-types@6.21.0: {} + + unpipe@1.0.0: + optional: true + + utils-merge@1.0.1: + optional: true + + uuid@11.1.0: {} + + uuid@13.0.0: {} + + vary@1.1.2: + optional: true + + vite@6.4.1(@types/node@20.19.30): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.57.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 20.19.30 + fsevents: 2.3.3 + + vite@7.3.1(@types/node@20.19.30): + dependencies: + esbuild: 0.27.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.57.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 20.19.30 + fsevents: 2.3.3 + + vscode-uri@3.1.0: {} + + vue-chartjs@5.3.3(chart.js@4.5.1)(vue@3.5.27(typescript@5.9.3)): + dependencies: + chart.js: 4.5.1 + vue: 3.5.27(typescript@5.9.3) + + vue-tsc@2.2.12(typescript@5.9.3): + dependencies: + '@volar/typescript': 2.4.15 + '@vue/language-core': 2.2.12(typescript@5.9.3) + typescript: 5.9.3 + + vue@3.5.27(typescript@5.9.3): + dependencies: + '@vue/compiler-dom': 3.5.27 + '@vue/compiler-sfc': 3.5.27 + '@vue/runtime-dom': 3.5.27 + '@vue/server-renderer': 3.5.27(vue@3.5.27(typescript@5.9.3)) + '@vue/shared': 3.5.27 + optionalDependencies: + typescript: 5.9.3 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 diff --git a/samples/client/vue/pnpm-workspace.yaml b/samples/client/vue/pnpm-workspace.yaml new file mode 100644 index 000000000..96784dee3 --- /dev/null +++ b/samples/client/vue/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - projects/* \ No newline at end of file diff --git a/samples/client/vue/projects/gallery/README.md b/samples/client/vue/projects/gallery/README.md new file mode 100644 index 000000000..1829b9a97 --- /dev/null +++ b/samples/client/vue/projects/gallery/README.md @@ -0,0 +1,34 @@ +# Vue A2UI Gallery + +Vue 3 implementation of the A2UI Component Gallery. + +## Features + +- **Library View**: Browse all available A2UI components organized by category (Layout, Media, Inputs) +- **Gallery View**: See combined examples of components working together +- **Interactive Preview**: Click any component to view its JSON configuration + +## Getting Started + +1. Install dependencies: +```bash +npm install +``` + +2. Start the development server: +```bash +npm run dev +``` + +3. Open http://localhost:4000 in your browser + +## Components Showcased + +### Layout +- Card, Column, Divider, List, Modal, Row, Tabs, Text + +### Media +- AudioPlayer, Icon, Image, Video + +### Inputs +- Button, CheckBox, DateTimeInput, MultipleChoice, Slider, TextField diff --git a/samples/client/vue/projects/gallery/index.html b/samples/client/vue/projects/gallery/index.html new file mode 100644 index 000000000..75275c8a9 --- /dev/null +++ b/samples/client/vue/projects/gallery/index.html @@ -0,0 +1,22 @@ + + + + + + A2UI Gallery + + + + + + +
+ + + diff --git a/samples/client/vue/projects/gallery/package.json b/samples/client/vue/projects/gallery/package.json new file mode 100644 index 000000000..6720d19bc --- /dev/null +++ b/samples/client/vue/projects/gallery/package.json @@ -0,0 +1,23 @@ +{ + "name": "vue-gallery", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --force", + "build": "vue-tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@a2ui/vue": "file:../../../../../renderers/vue", + "@a2ui/web_core": "file:../../../../../renderers/web_core", + "vue": "^3.5.27" + }, + "devDependencies": { + "@types/node": "^20.17.19", + "@vitejs/plugin-vue": "^5.2.1", + "typescript": "~5.9.2", + "vite": "^7.3.1", + "vue-tsc": "^2.2.0" + } +} diff --git a/samples/client/vue/projects/gallery/src/App.vue b/samples/client/vue/projects/gallery/src/App.vue new file mode 100644 index 000000000..49dd2f784 --- /dev/null +++ b/samples/client/vue/projects/gallery/src/App.vue @@ -0,0 +1,107 @@ + + + + + + + diff --git a/samples/client/vue/projects/gallery/src/components/GalleryView.vue b/samples/client/vue/projects/gallery/src/components/GalleryView.vue new file mode 100644 index 000000000..6f6bc45b3 --- /dev/null +++ b/samples/client/vue/projects/gallery/src/components/GalleryView.vue @@ -0,0 +1,343 @@ + + + + + + + diff --git a/samples/client/vue/projects/gallery/src/components/LibraryView.vue b/samples/client/vue/projects/gallery/src/components/LibraryView.vue new file mode 100644 index 000000000..5963688e0 --- /dev/null +++ b/samples/client/vue/projects/gallery/src/components/LibraryView.vue @@ -0,0 +1,438 @@ + + + + + + + diff --git a/samples/client/vue/projects/gallery/src/main.ts b/samples/client/vue/projects/gallery/src/main.ts new file mode 100644 index 000000000..dcd81e18b --- /dev/null +++ b/samples/client/vue/projects/gallery/src/main.ts @@ -0,0 +1,22 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import { createApp } from 'vue'; +import App from './App.vue'; +import '@a2ui/vue/dist/vue.css'; +import './styles.css'; + +createApp(App).mount('#app'); diff --git a/samples/client/vue/projects/gallery/src/shims-vue.d.ts b/samples/client/vue/projects/gallery/src/shims-vue.d.ts new file mode 100644 index 000000000..3804a43e2 --- /dev/null +++ b/samples/client/vue/projects/gallery/src/shims-vue.d.ts @@ -0,0 +1,6 @@ +/* eslint-disable */ +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/samples/client/vue/projects/gallery/src/styles.css b/samples/client/vue/projects/gallery/src/styles.css new file mode 100644 index 000000000..01efe63aa --- /dev/null +++ b/samples/client/vue/projects/gallery/src/styles.css @@ -0,0 +1,76 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +:root { + --n-100: #ffffff; + --n-99: #fcfcfc; + --n-98: #f9f9f9; + --n-95: #f1f1f1; + --n-90: #e2e2e2; + --n-80: #c6c6c6; + --n-70: #ababab; + --n-60: #919191; + --n-50: #777777; + --n-40: #5e5e5e; + --n-35: #525252; + --n-30: #474747; + --n-25: #3b3b3b; + --n-20: #303030; + --n-15: #262626; + --n-10: #1b1b1b; + --n-5: #111111; + --n-0: #000000; + + --p-100: #ffffff; + --p-99: #fffbff; + --p-98: #fcf8ff; + --p-95: #f2efff; + --p-90: #e1e0ff; + --p-80: #c0c1ff; + --p-70: #a0a3ff; + --p-60: #8487ea; + --p-50: #6a6dcd; + --p-40: #5154b3; + --p-35: #4447a6; + --p-30: #383b99; + --p-25: #2c2e8d; + --p-20: #202182; + --p-15: #131178; + --p-10: #06006c; + --p-5: #03004d; + --p-0: #000000; + + --font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +* { + box-sizing: border-box; +} + +html, +body { + background: var(--n-98); + font-family: var(--font-family); + margin: 0; + padding: 0; + width: 100svw; + height: 100svh; + overflow: auto; +} + +#app { + min-height: 100%; +} diff --git a/samples/client/vue/projects/gallery/src/theme.ts b/samples/client/vue/projects/gallery/src/theme.ts new file mode 100644 index 000000000..b2cbf764a --- /dev/null +++ b/samples/client/vue/projects/gallery/src/theme.ts @@ -0,0 +1,464 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import * as Styles from '@a2ui/web_core/styles/index'; +import * as Types from '@a2ui/web_core/types/types'; + +/** Elements */ + +const a = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-500': true, + 'layout-as-n': true, + 'layout-dis-iflx': true, + 'layout-al-c': true, +}; + +const audio = { + 'layout-w-100': true, +}; + +const body = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-mt-0': true, + 'layout-mb-2': true, + 'typography-sz-bm': true, + 'color-c-n10': true, +}; + +const button = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-500': true, + 'layout-pt-3': true, + 'layout-pb-3': true, + 'layout-pl-5': true, + 'layout-pr-5': true, + 'layout-mb-1': true, + 'border-br-16': true, + 'border-bw-0': true, + 'border-c-n70': true, + 'border-bs-s': true, + 'color-bgc-s30': true, + 'color-c-n100': true, + 'behavior-ho-80': true, +}; + +const heading = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-500': true, + 'layout-mt-0': true, + 'layout-mb-2': true, + 'color-c-n10': true, +}; + +const h1 = { + ...heading, + 'typography-sz-tl': true, +}; + +const h2 = { + ...heading, + 'typography-sz-tm': true, +}; + +const h3 = { + ...heading, + 'typography-sz-ts': true, +}; + +const iframe = { + 'behavior-sw-n': true, +}; + +const input = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-pl-4': true, + 'layout-pr-4': true, + 'layout-pt-2': true, + 'layout-pb-2': true, + 'border-br-6': true, + 'border-bw-1': true, + 'color-bc-s70': true, + 'border-bs-s': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const p = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const orderedList = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, +}; + +const unorderedList = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, +}; + +const listItem = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, +}; + +const pre = { + 'typography-f-c': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'typography-sz-bm': true, + 'typography-ws-p': true, + 'layout-as-n': true, +}; + +const textarea = { + ...input, + 'layout-r-none': true, + 'layout-fs-c': true, +}; + +const video = { + 'layout-el-cv': true, +}; + +const aLight = Styles.merge(a, { 'color-c-p30': true }); +const inputLight = Styles.merge(input, { 'color-c-n5': true }); +const textareaLight = Styles.merge(textarea, { 'color-c-n5': true }); +const buttonLight = Styles.merge(button, { 'color-c-n100': true }); +const h1Light = Styles.merge(h1, { 'color-c-n5': true }); +const h2Light = Styles.merge(h2, { 'color-c-n5': true }); +const h3Light = Styles.merge(h3, { 'color-c-n5': true }); +const bodyLight = Styles.merge(body, { 'color-c-n5': true }); +const pLight = Styles.merge(p, { 'color-c-n60': true }); +const preLight = Styles.merge(pre, { 'color-c-n35': true }); +const orderedListLight = Styles.merge(orderedList, { + 'color-c-n35': true, +}); +const unorderedListLight = Styles.merge(unorderedList, { + 'color-c-n35': true, +}); +const listItemLight = Styles.merge(listItem, { + 'color-c-n35': true, +}); + +export const theme: Types.Theme = { + additionalStyles: { + Card: { + 'min-width': '320px', + }, + Button: { + '--n-60': 'var(--n-100)', + }, + Image: { + 'max-width': '120px', + 'max-height': '120px', + marginLeft: 'auto', + marginRight: 'auto', + }, + }, + components: { + AudioPlayer: {}, + Button: { + 'layout-pt-2': true, + 'layout-pb-2': true, + 'layout-pl-5': true, + 'layout-pr-5': true, + 'border-br-2': true, + 'border-bw-0': true, + 'border-bs-s': true, + 'color-bgc-p30': true, + 'color-c-n100': true, + 'behavior-ho-70': true, + }, + Card: { + 'border-br-4': true, + 'color-bgc-p100': true, + 'color-bc-n90': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'layout-pt-10': true, + 'layout-pb-10': true, + 'layout-pl-4': true, + 'layout-pr-4': true, + }, + CheckBox: { + element: { + 'layout-m-0': true, + 'layout-mr-2': true, + 'layout-p-2': true, + 'border-br-12': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bgc-p100': true, + 'color-bc-p60': true, + 'color-c-n30': true, + 'color-c-p30': true, + }, + label: { + 'color-c-p30': true, + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-flx-1': true, + 'typography-sz-ll': true, + }, + container: { + 'layout-dsp-iflex': true, + 'layout-al-c': true, + }, + }, + Column: {}, + DateTimeInput: { + container: {}, + label: {}, + element: { + 'layout-pt-2': true, + 'layout-pb-2': true, + 'layout-pl-3': true, + 'layout-pr-3': true, + 'border-br-12': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bgc-p100': true, + 'color-bc-p60': true, + 'color-c-n30': true, + }, + }, + Divider: { + 'color-bgc-n90': true, + 'layout-mt-6': true, + 'layout-mb-6': true, + }, + Image: { + all: { + 'border-br-50pc': true, + 'layout-el-cv': true, + 'layout-w-100': true, + 'layout-h-100': true, + 'layout-dsp-flexhor': true, + 'layout-al-c': true, + 'layout-sp-c': true, + 'layout-mb-3': true, + }, + avatar: {}, + header: {}, + icon: {}, + largeFeature: {}, + mediumFeature: {}, + smallFeature: {}, + }, + Icon: { + 'border-br-1': true, + 'layout-p-2': true, + 'color-bgc-n98': true, + 'layout-dsp-flexhor': true, + 'layout-al-c': true, + 'layout-sp-c': true, + }, + List: { + 'layout-g-4': true, + 'layout-p-2': true, + }, + Modal: { + backdrop: { 'color-bbgc-p60_20': true }, + element: { + 'border-br-2': true, + 'color-bgc-p100': true, + 'layout-p-4': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bc-p80': true, + }, + }, + MultipleChoice: { + container: {}, + label: {}, + element: {}, + }, + Row: { + 'layout-g-4': true, + 'layout-mb-3': true, + }, + Slider: { + container: {}, + label: {}, + element: {}, + }, + Tabs: { + container: {}, + controls: { all: {}, selected: {} }, + element: {}, + }, + Text: { + all: { + 'layout-w-100': true, + 'layout-g-2': true, + 'color-c-p30': true, + }, + h1: { + 'typography-f-sf': true, + 'typography-ta-c': true, + 'typography-v-r': true, + 'typography-w-500': true, + 'layout-mt-0': true, + 'layout-mr-0': true, + 'layout-ml-0': true, + 'layout-mb-2': true, + 'layout-p-0': true, + 'typography-sz-tl': true, + }, + h2: { + 'typography-f-sf': true, + 'typography-ta-c': true, + 'typography-v-r': true, + 'typography-w-500': true, + 'layout-mt-0': true, + 'layout-mr-0': true, + 'layout-ml-0': true, + 'layout-mb-2': true, + 'layout-p-0': true, + 'typography-sz-tl': true, + }, + h3: { + 'typography-f-sf': true, + 'typography-ta-c': true, + 'typography-v-r': true, + 'typography-w-500': true, + 'layout-mt-0': true, + 'layout-mr-0': true, + 'layout-ml-0': true, + 'layout-mb-0': true, + 'layout-p-0': true, + 'typography-sz-ts': true, + }, + h4: { + 'typography-f-sf': true, + 'typography-ta-c': true, + 'typography-v-r': true, + 'typography-w-500': true, + 'layout-mt-0': true, + 'layout-mr-0': true, + 'layout-ml-0': true, + 'layout-mb-0': true, + 'layout-p-0': true, + 'typography-sz-bl': true, + }, + h5: { + 'typography-f-sf': true, + 'typography-ta-c': true, + 'typography-v-r': true, + 'typography-w-500': true, + 'layout-mt-0': true, + 'layout-mr-0': true, + 'layout-ml-0': true, + 'layout-mb-0': true, + 'layout-p-0': true, + 'color-c-n30': true, + 'typography-sz-bm': true, + 'layout-mb-1': true, + }, + body: {}, + caption: {}, + }, + TextField: { + container: { + 'typography-sz-bm': true, + 'layout-w-100': true, + 'layout-g-2': true, + 'layout-dsp-flexhor': true, + 'layout-al-c': true, + }, + label: { + 'layout-flx-0': true, + }, + element: { + 'typography-sz-bm': true, + 'layout-pt-2': true, + 'layout-pb-2': true, + 'layout-pl-3': true, + 'layout-pr-3': true, + 'border-br-12': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bgc-p100': true, + 'color-bc-p60': true, + 'color-c-n30': true, + 'color-c-p30': true, + }, + }, + Video: { + 'border-br-5': true, + 'layout-el-cv': true, + }, + }, + elements: { + a: aLight, + audio, + body: bodyLight, + button: buttonLight, + h1: h1Light, + h2: h2Light, + h3: h3Light, + h4: {}, + h5: {}, + iframe, + input: inputLight, + p: pLight, + pre: preLight, + textarea: textareaLight, + video, + }, + markdown: { + p: [...Object.keys(pLight)], + h1: [...Object.keys(h1Light)], + h2: [...Object.keys(h2Light)], + h3: [...Object.keys(h3Light)], + h4: [], + h5: [], + ul: [...Object.keys(unorderedListLight)], + ol: [...Object.keys(orderedListLight)], + li: [...Object.keys(listItemLight)], + a: [...Object.keys(aLight)], + strong: [], + em: [], + }, +}; diff --git a/samples/client/vue/projects/gallery/src/utils/surface.ts b/samples/client/vue/projects/gallery/src/utils/surface.ts new file mode 100644 index 000000000..9cfc1c900 --- /dev/null +++ b/samples/client/vue/projects/gallery/src/utils/surface.ts @@ -0,0 +1,52 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import * as Types from '@a2ui/web_core/types/types'; + +export function createSingleComponentSurface(type: string, properties: Record): Types.Surface { + const rootId = 'root'; + return { + rootComponentId: rootId, + dataModel: new Map(), + styles: {}, + componentTree: { + id: rootId, + type: type, + properties: properties, + } as Types.AnyComponentNode, + components: new Map(), + }; +} + +export function createComponent(type: string, properties: Record): Types.AnyComponentNode { + return { + id: 'generated-' + Math.random().toString(36).substr(2, 9), + type: type, + properties: properties, + } as Types.AnyComponentNode; +} + +export function getJson(surface: Types.Surface): string { + return JSON.stringify( + surface, + (key, value) => { + if (key === 'rootComponentId' || key === 'dataModel' || key === 'styles') return undefined; + if (value instanceof Map) return Object.fromEntries(value.entries()); + return value; + }, + 2, + ); +} diff --git a/samples/client/vue/projects/gallery/tsconfig.json b/samples/client/vue/projects/gallery/tsconfig.json new file mode 100644 index 000000000..1e98ef361 --- /dev/null +++ b/samples/client/vue/projects/gallery/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ESNext", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "preserve", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "paths": { + "@/*": ["./src/*"] + }, + "types": ["node"] + }, + "include": ["src/**/*.ts", "src/**/*.vue", "vite.config.ts"], + "exclude": ["node_modules"] +} diff --git a/samples/client/vue/projects/gallery/vite.config.ts b/samples/client/vue/projects/gallery/vite.config.ts new file mode 100644 index 000000000..579b3081f --- /dev/null +++ b/samples/client/vue/projects/gallery/vite.config.ts @@ -0,0 +1,31 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import { resolve } from 'path'; + +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + '@': resolve(__dirname, 'src'), + }, + }, + server: { + port: 4000, + }, +}); diff --git a/samples/client/vue/projects/restaurant/README.md b/samples/client/vue/projects/restaurant/README.md new file mode 100644 index 000000000..1caf78ada --- /dev/null +++ b/samples/client/vue/projects/restaurant/README.md @@ -0,0 +1,51 @@ +# Vue Restaurant Demo + +A Vue 3 implementation of the Restaurant Finder demo using @a2ui/vue renderer. + +## Prerequisites + +- Node.js 18+ +- Python 3.10+ with `uv` installed (for the agent) + +## Setup + +1. Install dependencies: +```bash +npm install +``` + +2. Build the @a2ui/web_core and @a2ui/vue dependencies: +```bash +cd ../../../renderers/web_core && npm install && npm run build +cd ../../../renderers/vue && npm install && npm run build +``` + +## Running + +### Development Mode + +Run both the agent and the web app: +```bash +npm run demo +``` + +Or run them separately: + +1. Start the agent: +```bash +npm run serve:agent +``` + +2. Start the development server: +```bash +npm run dev +``` + +Then open http://localhost:4000 in your browser. + +## Architecture + +- `/src/App.vue` - Main application component +- `/src/client.ts` - A2A client for communicating with the agent +- `/src/theme.ts` - Theme configuration for A2UI components +- `/src/styles.css` - Global styles diff --git a/samples/client/vue/projects/restaurant/index.html b/samples/client/vue/projects/restaurant/index.html new file mode 100644 index 000000000..af8ae0eff --- /dev/null +++ b/samples/client/vue/projects/restaurant/index.html @@ -0,0 +1,36 @@ + + + + + + + + Vue Restaurant Demo + + + + +
+ + + diff --git a/samples/client/vue/projects/restaurant/package.json b/samples/client/vue/projects/restaurant/package.json new file mode 100644 index 000000000..e25f40606 --- /dev/null +++ b/samples/client/vue/projects/restaurant/package.json @@ -0,0 +1,29 @@ +{ + "name": "vue-restaurant", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --force", + "build": "vue-tsc -b && vite build", + "preview": "vite preview", + "serve:agent": "cd ../../../agent/adk/restaurant_finder && uv run .", + "demo": "concurrently -k -n \"AGENT,WEB\" -c \"magenta,blue\" \"npm run serve:agent\" \"npm run dev\"" + }, + "dependencies": { + "@a2ui/vue": "file:../../../../../renderers/vue", + "@a2ui/web_core": "file:../../../../../renderers/web_core", + "@a2a-js/sdk": "^0.3.4", + "uuid": "^13.0.0", + "vue": "^3.5.27" + }, + "devDependencies": { + "@types/node": "^20.17.19", + "@types/uuid": "^10.0.0", + "@vitejs/plugin-vue": "^5.2.1", + "concurrently": "^9.2.1", + "typescript": "~5.9.2", + "vite": "^7.3.1", + "vue-tsc": "^2.2.0" + } +} diff --git a/samples/client/vue/projects/restaurant/public/favicon.ico b/samples/client/vue/projects/restaurant/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..57614f9c967596fad0a3989bec2b1deff33034f6 GIT binary patch literal 15086 zcmd^G33O9Omi+`8$@{|M-I6TH3wzF-p5CV8o}7f~KxR60LK+ApEFB<$bcciv%@SmA zV{n>g85YMFFeU*Uvl=i4v)C*qgnb;$GQ=3XTe9{Y%c`mO%su)noNCCQ*@t1WXn|B(hQ7i~ zrUK8|pUkD6#lNo!bt$6)jR!&C?`P5G(`e((P($RaLeq+o0Vd~f11;qB05kdbAOm?r zXv~GYr_sibQO9NGTCdT;+G(!{4Xs@4fPak8#L8PjgJwcs-Mm#nR_Z0s&u?nDX5^~@ z+A6?}g0|=4e_LoE69pPFO`yCD@BCjgKpzMH0O4Xs{Ahc?K3HC5;l=f zg>}alhBXX&);z$E-wai+9TTRtBX-bWYY@cl$@YN#gMd~tM_5lj6W%8ah4;uZ;jP@Q zVbuel1rPA?2@x9Y+u?e`l{Z4ngfG5q5BLH5QsEu4GVpt{KIp1?U)=3+KQ;%7ec8l* zdV=zZgN5>O3G(3L2fqj3;oBbZZw$Ij@`Juz@?+yy#OPw)>#wsTewVgTK9BGt5AbZ&?K&B3GVF&yu?@(Xj3fR3n+ZP0%+wo)D9_xp>Z$`A4 zfV>}NWjO#3lqumR0`gvnffd9Ka}JJMuHS&|55-*mCD#8e^anA<+sFZVaJe7{=p*oX zE_Uv?1>e~ga=seYzh{9P+n5<+7&9}&(kwqSaz;1aD|YM3HBiy<))4~QJSIryyqp| z8nGc(8>3(_nEI4n)n7j(&d4idW1tVLjZ7QbNLXg;LB ziHsS5pXHEjGJZb59KcvS~wv;uZR-+4qEqow`;JCfB*+b^UL^3!?;-^F%yt=VjU|v z39SSqKcRu_NVvz!zJzL0CceJaS6%!(eMshPv_0U5G`~!a#I$qI5Ic(>IONej@aH=f z)($TAT#1I{iCS4f{D2+ApS=$3E7}5=+y(rA9mM#;Cky%b*Gi0KfFA`ofKTzu`AV-9 znW|y@19rrZ*!N2AvDi<_ZeR3O2R{#dh1#3-d%$k${Rx42h+i&GZo5!C^dSL34*AKp z27mTd>k>?V&X;Nl%GZ(>0s`1UN~Hfyj>KPjtnc|)xM@{H_B9rNr~LuH`Gr5_am&Ep zTjZA8hljNj5H1Ipm-uD9rC}U{-vR!eay5&6x6FkfupdpT*84MVwGpdd(}ib)zZ3Ky z7C$pnjc82(W_y_F{PhYj?o!@3__UUvpX)v69aBSzYj3 zdi}YQkKs^SyXyFG2LTRz9{(w}y~!`{EuAaUr6G1M{*%c+kP1olW9z23dSH!G4_HSK zzae-DF$OGR{ofP*!$a(r^5Go>I3SObVI6FLY)N@o<*gl0&kLo-OT{Tl*7nCz>Iq=? zcigIDHtj|H;6sR?or8Wd_a4996GI*CXGU}o;D9`^FM!AT1pBY~?|4h^61BY#_yIfO zKO?E0 zJ{Pc`9rVEI&$xxXu`<5E)&+m(7zX^v0rqofLs&bnQT(1baQkAr^kEsk)15vlzAZ-l z@OO9RF<+IiJ*O@HE256gCt!bF=NM*vh|WVWmjVawcNoksRTMvR03H{p@cjwKh(CL4 z7_PB(dM=kO)!s4fW!1p0f93YN@?ZSG` z$B!JaAJCtW$B97}HNO9(x-t30&E}Mo1UPi@Av%uHj~?T|!4JLwV;KCx8xO#b9IlUW zI6+{a@Wj|<2Y=U;a@vXbxqZNngH8^}LleE_4*0&O7#3iGxfJ%Id>+sb;7{L=aIic8 z|EW|{{S)J-wr@;3PmlxRXU8!e2gm_%s|ReH!reFcY8%$Hl4M5>;6^UDUUae?kOy#h zk~6Ee_@ZAn48Bab__^bNmQ~+k=02jz)e0d9Z3>G?RGG!65?d1>9}7iG17?P*=GUV-#SbLRw)Hu{zx*azHxWkGNTWl@HeWjA?39Ia|sCi{e;!^`1Oec zb>Z|b65OM*;eC=ZLSy?_fg$&^2xI>qSLA2G*$nA3GEnp3$N-)46`|36m*sc#4%C|h zBN<2U;7k>&G_wL4=Ve5z`ubVD&*Hxi)r@{4RCDw7U_D`lbC(9&pG5C*z#W>8>HU)h z!h3g?2UL&sS!oY5$3?VlA0Me9W5e~V;2jds*fz^updz#AJ%G8w2V}AEE?E^=MK%Xt z__Bx1cr7+DQmuHmzn*|hh%~eEc9@m05@clWfpEFcr+06%0&dZJH&@8^&@*$qR@}o3 z@Tuuh2FsLz^zH+dN&T&?0G3I?MpmYJ;GP$J!EzjeM#YLJ!W$}MVNb0^HfOA>5Fe~UNn%Zk(PT@~9}1dt)1UQ zU*B5K?Dl#G74qmg|2>^>0WtLX#Jz{lO4NT`NYB*(L#D|5IpXr9v&7a@YsGp3vLR7L zHYGHZg7{ie6n~2p$6Yz>=^cEg7tEgk-1YRl%-s7^cbqFb(U7&Dp78+&ut5!Tn(hER z|Gp4Ed@CnOPeAe|N>U(dB;SZ?NU^AzoD^UAH_vamp6Ws}{|mSq`^+VP1g~2B{%N-!mWz<`)G)>V-<`9`L4?3dM%Qh6<@kba+m`JS{Ya@9Fq*m6$$ zA1%Ogc~VRH33|S9l%CNb4zM%k^EIpqY}@h{w(aBcJ9c05oiZx#SK9t->5lSI`=&l~ z+-Ic)a{FbBhXV$Xt!WRd`R#Jk-$+_Z52rS>?Vpt2IK<84|E-SBEoIw>cs=a{BlQ7O z-?{Fy_M&84&9|KM5wt~)*!~i~E=(6m8(uCO)I=)M?)&sRbzH$9Rovzd?ZEY}GqX+~ zFbEbLz`BZ49=2Yh-|<`waK-_4!7`ro@zlC|r&I4fc4oyb+m=|c8)8%tZ-z5FwhzDt zL5kB@u53`d@%nHl0Sp)Dw`(QU&>vujEn?GPEXUW!Wi<+4e%BORl&BIH+SwRcbS}X@ z01Pk|vA%OdJKAs17zSXtO55k!;%m9>1eW9LnyAX4uj7@${O6cfii`49qTNItzny5J zH&Gj`e}o}?xjQ}r?LrI%FjUd@xflT3|7LA|ka%Q3i}a8gVm<`HIWoJGH=$EGClX^C0lysQJ>UO(q&;`T#8txuoQ_{l^kEV9CAdXuU1Ghg8 zN_6hHFuy&1x24q5-(Z7;!poYdt*`UTdrQOIQ!2O7_+AHV2hgXaEz7)>$LEdG z<8vE^Tw$|YwZHZDPM!SNOAWG$?J)MdmEk{U!!$M#fp7*Wo}jJ$Q(=8>R`Ats?e|VU?Zt7Cdh%AdnfyN3MBWw{ z$OnREvPf7%z6`#2##_7id|H%Y{vV^vWXb?5d5?a_y&t3@p9t$ncHj-NBdo&X{wrfJ zamN)VMYROYh_SvjJ=Xd!Ga?PY_$;*L=SxFte!4O6%0HEh%iZ4=gvns7IWIyJHa|hT z2;1+e)`TvbNb3-0z&DD_)Jomsg-7p_Uh`wjGnU1urmv1_oVqRg#=C?e?!7DgtqojU zWoAB($&53;TsXu^@2;8M`#z{=rPy?JqgYM0CDf4v@z=ZD|ItJ&8%_7A#K?S{wjxgd z?xA6JdJojrWpB7fr2p_MSsU4(R7=XGS0+Eg#xR=j>`H@R9{XjwBmqAiOxOL` zt?XK-iTEOWV}f>Pz3H-s*>W z4~8C&Xq25UQ^xH6H9kY_RM1$ch+%YLF72AA7^b{~VNTG}Tj#qZltz5Q=qxR`&oIlW Nr__JTFzvMr^FKp4S3v*( literal 0 HcmV?d00001 diff --git a/samples/client/vue/projects/restaurant/public/hero.png b/samples/client/vue/projects/restaurant/public/hero.png new file mode 100644 index 0000000000000000000000000000000000000000..419414c99ce7640e2b9678447edc5f19152e7491 GIT binary patch literal 303595 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
  • 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
    Dq-V2}FZtlU@pc8dpoeJ@ewRb{6p@NX? zRI^CM!p;!e8f=2U*@bhrUjdNPE@YX!%by=TH+L-#KA4JJxHNme5N?Mw0XqqQX_$Wc zN8WyQhB**wGCz_`7M#}@l+KmR&Xzl0-2Vk?^go8p>KZ3kKXv#U!9*V2ElZ;!{>-_b zJ#=7LyOemo{Gk#WY(Y!{6+GIO^zEocxz+)^O#77M>60lqiGbh&rhuhKGbp zK>#0KOp&>AkegxlbIBk=I7o9&A6t1z3Ji4EmQ^NGFu4$qKedDCt($QOZagjX#`2Tt zP3hAm5;zTjHmJpF4CY5aVmM1wBOah21aDXC!(tpXAm83EVGcKby+*2LRkZ_rzXVn3^qg zYI3H6N6n`x(2{k+bf69_X;rEHuImE@U5|czUejr;sIA0DsB%dyM5QZ#;;Y^d>j zG989suwP~XBr>15pF~_N0wCyl{FWabqbOTIfZNnrGEH0-q}$2`27-cr2&-(!HB$#q z)oyAw3jkUm0a*`=5^!o2MnFB3E6p%0fAS1N`H2z`|0O;LB4V7g%e`N>Ix zq|*ri8NhUBlI5v<4*@~-Dr%+c7cc+F$gXc)zqcBl$3+0Q&42_^uQSpGa+!?4;L42| zvNSBf%`9LRG>^H|k5)pA0?a(mmCPC9J198y5yQ5Tr2%TUZJSPTR-;oJE;6sl7|oWR zbz)*HP^)brbO37rT!h%D4l(vX`??upUY;vOdt~XtYyfm~;MVOAJ)%c1EdGdv8kubh zP+0k7Irb1Qm*w z0E1#Ht;MXO#-ywHGRy2(Pqa~^IUN+c>J;5z@_yfC60^}>^xeaUcd*P8*Mj_8j-OI~ zE0dwR3<)-@JWC=x`{8fyPf#X&)Fv*H3!gc99_R9$)ut36Yc{^{oiD>dDh%1&%95|# z`a=9$x+N1ziQCHe1NJ`u!t)LS7l^$?J@>d3>o7+ObP9wr0=5Ko8hCWzb!@c|^6{+W z^Oj){wGNIMsx7b7SkYVM*S_`FQAoAxSOA9al)B^s5RyjteFcC+ERZJZS}TieKzUaO zoTRzdkySi^;2Q4uS-R2cHR{#Ol;Q0d?BtB@eC{z04&()%FyF79%ycUcJnzN*Oou~k z6S@Jc_zZx+ZxaT>DCw)-xZIA+7r}fQ5d8H5XaYNz^~K$4(Rb8!fs#Hqq_@4g<1FtS zCxmVCjsO)<7NQ2oopyZPNHPpP0c!9lgP=l0FY%#=b)9nmP-6K^cza*zG7Uy%(+?$Q z7WJJ@R%7XkDQa6sp|)vaKp$^UHp}D92of|yQ0gZwjaoQ_*xYlt%nEp$7e8`onq{}X zby$o>7V=`VGzLtYApohwhe5B15`OSF1&y$eLClX$ixkLOmBj>fSlo5YGlQ8uvPc)` zbkssnFF*4*kO0VM8@WIo2Z>wan}y{@RBUJx08z10E`?E8DdfEE}uy zpewBYYKr{U8$;f)<1EWLHF}*+{ijZq- z{;!{9xpX0fqH0VKuJS6)n*?z9_}lRXcU-9wopzC^0|z*G_($)*`X$3dtk@XS^7wgQeK-CG_Hf>lc%)$4ia2HVTJhPOww_ zfGNoLL0203kg8li5)Nvl)PgwdNzrF-I55^B>xQRsDO(FOshW^Xa1*(xPAg4?01U)N z0Mvv0Y8Wzx@>QG@$3%DndU7GjPlLO!XQe92T(SuT0=Ye%6s?+~^aLla$tiXOaOVo~PNLkCt3`o@ywKb9yxH3czK^YTmhP&l9Vrnibs~*geRkv3zUd7>!S5_L( zB<9Yw$FR7Qmql7Jke3Eor(p%>;$QHXwz~JN)qzotN>_k}qpxNEt(=m-EXpb!-WhHZ zA0`N?>m`6=#0X)n5GMwxR?LD=ELjPHawBich9!H-pev!APW5&Wk!YcS&Ipy3h!<#7 zg-ixeaA+VvgXV3vL^+LNz7>AVe+O5|ge=8v^}L2Ak0Iq0Eo< ze^!#8S05fGKrlsDZ9-5(5KTiTdM6lNt3l$RLM9uZri_EF-b3La>)r=H zD6cLb@#$MdKhf00e>n>PqE@*8uBxd30@=!PyNW4JkU_w!U2H z7&;n`3_d8L#ke+)0E? zVU+TPgA|J{0>Vhjp~x3l8=Ib-iantvjZUsr>%OS$H}x08;jMe&h>N)GvMG5RGQ&Mk|TW zgj<$bKy4-Lsh}A*$ppMj#~!V2Lc$*c9Glol5dt%y0;>98j-2dhAG!gH|1}n-u_v+9 z)@Q<`YIy=3G_4SQy13@Uq-@N-Yl?1xV~6xK2Kw1@CZ{SK2( z>;udEiy!^!E1SKVjl@Gwi5~y4Z+@9LIx#dmv!0w85_B~k#66Iht`?^lwC*iw(C}b{ zQ(ANq+PWcpB_Aq%yN^cW1u9&uB>1sit`SCR|LCui!XVm~vcH1>Alf8n1?UdHPXUmJ zI_M-o1#88ChEUtJDYz~h<{3v@2q1^#2;-#D(E33;p|=6obt8;nYA$tuhN~8 zQyDb?5|!p`1zc<9dGYOe1Ob$72^ux3{@rYuH3p|>BS4nRO%@Rc?Q#g8t%Nh9a)V|T z$*t15I_~+0stERGJJKLb_sb{@x#t2hp7T4@)SnYpKtZC4~R$;C)7sUSGIj)et6@}!?-d`6h&d8hA23SXHz9jeg1=+ub;NI zX+7jlmN7h;tj4`C!u=KCATMiJs$aDz4K+8A!_i^o1b7nvHaDufbA(_c5O4tUk0I}r zq|XqaQmL~ElLA^J00x*t$gikD$beKEEx$X5 zj-boI!`=aaY{)K9riq4(4)X#)fmvuuUsGv8(N&E~0GldLYp~vghknFB+)@r@T%hRp=}SW6R%aaK_5DKn`HmSdEgF>)z#JJQ z{9^^c-`@bJ49q}U&~!p9mJMXXn9D>4v#{-P5cEXbGosfJsBuP^Ru1Yh>%r@Etg%o} zX%QIOS@BbzE_!666o@ZbE*FA(_vWYU52y7R6Q)Klw?L6IK{0C5`Mc~L9G}$dL^DLc zkg{&I6_CClrGZ^b<{k<@`$aCX&62?D8(uumabjmR^KG;S%n}uV2n`4ynbv5AO!&$a zGulzr=7g)L5gyvx@|3)jcBat$GvQS#Ah9-fz43MwzA<0KMNjQ%P#1731%;tVnVGVV ztF)J1uECm2FLVvM zMi9`UYAVTk&ru8Mgfa}as+G#m^~$!JU25jq zRGkvz$AVu;T%=4j0U|*E3H@i&ZSoFMNd`MWlYjgR-}-ZxfF$zeR)>xcxIcONOOhPj zA(23}_X#C6NV2HW^a_elpd*YKulq1?Si#$x7|K9M=Xtlr5t6h=uUFB6N2P+-F>{b~ zasRFtxB(o;{?PSAbSeNL2N=K40dQ>w%6l(~1?XozM9}kz))YatU%+}BL-hg-A1?&Ld!Q?qeVE;={%3VHj*sGu>3nD@8yEZDft;r1k*BVF7@>xy{S;6&Suk zu056;ZO+I_A>-xtz0Xg};{yzI?IIr1!*R)|bKVR>?ASNwC^Htu2SqsnobI#Y|zv3wtUh`m!|qb$s}37V6QljV53_nWgKz_Rcx z=v2^pVp11jz#~{~PJZ!rQVYb=qy`#&@6p+gt^b(**bel%X<@)w``rsE%`8$hDuQy}e>zkd4j$D2qZ0OKY~JJ-k6kA3r7@Li^= zBzW>_1Eh|JCIf7ZJm6;0tc_OUe^zq@GtaXW^Untla$(7MX%v1>X|X7^*5e?*lhzZR z{_}qqT8*xis~P{+1t66F_=5p}P}YVZKUNjph7PfgWh)(M%Fu_ks6HK(3fqCbfWiX; zGCT$(BxUG9b#dKxPA8)ebyZZvDPauH7c9*umTZ~kOFrW$#gLOwRv6X^zLw2 z2tUjK-NAYc$zbl*1c4rv{cHoJRJu2Wpq7~cl66u>2K7M0)&uff^OHe1awsw&4GqJf zUc_v+qBJcPWk_a+yjwLysS+jzNG)Sy^TK%f#;s*R6mpCDx0h#)maJO9&f--eOg;7< zdG-Tl^vaFnRh?TlvRn#DTas`H(eJ!c_1$)Rip>xx;t&XCJL&Pgf~5V)UTI5<>}_f1 z0RcR+<+6hv8*C1S+{n(K^}Mk0ZzHG2ocRiM7F+XQQVl&x7?G zsJBp^)metPg+o_DVde5qUM)}pF2@H#B*=5*$O-@8!pam2XZV-6_|yvtT(EvM^#zHZ zbze^+nfsY`N(S3Of}OwSlcA zk~kiMGgi)m5D4jVwqx&Tmc~9Dt0c&Hpwh>*__Eaw4lmC!XvH_G+Ws4Vx>7jpD>3jPU7jps8>oAnfnxj*qA-E&x z>t7kQ6re0nPj(&))aB{@{gYK`!sM235VRSU^9}7c7jZKZmo8qNnfJbWeU)){VfqVZ zllI0))S`qV0PaYZ)q<1(z1{{mMsAfpBNn36g2~o0+a+?n$F>}tO}Tlx4$Ov_p{g>y zDx^)g`Bd|jdj)C0cID8GO*lSa(0(PKOIQdd!OYV7nvy!peWO)-QRoK9n=vX10-i&a zXrPkde1D8_{bw(JR6^p3*JNX{Z+X34j^6SH)s;l2Q!C#uADT3apSzLQ$f*fnY#8d! zhj(lbfXBYupydu8C5+VRU0~3l{>_YZR_sYMnl&;y~y^2$}5W$cSM zg0|{iPE&$#XBmL4A_>DJ&sOwYA8vD@P(&oAj7-Ac0X^{KsxfPT8379iQZarkRe4lC~?w-3qYCo zmVGeW2^`2BSh6g_v50;TYVezcBmMS}+4~8NHA>g{acW5s+ln++~ZDb7A z0#1E|et06-un;0F(WXQov^F*;SV+^a7%t|TZ&)C_D=|d<*eK%<#niAMJInd#M@BkZ zIb)6q^>% zLjFLdB2y5JSB^#>at`JQEmB`bU+~g$V9rp{a+;W-kg_Czck#0IK9~CZCYa2wDrkg>=n$7o{6k73`qQ(0yviMOf6RBf?Z z0`9?(^3r?QC#RUwB8e#ojv)Is#U3oV7L{)TE1-%{8Oz^T#7@yvrGXkPwjaCf*uX9t zAWI#Goe0zi{Lx zhrl+lT%og_^dq19Z*FeT51Gl%Nauc30|1-8mCORyorROMVgM`v&VhKRMoCCd;b6;FD&ia4+w_}Z30JrS_4*VCaTLAxo0>GXb&9osx zK!t+C#u>4{hr$P$(reSOPmHMF4}$$nV-K2#TppUQH>fd4Ypqqa)>R|lpBXXFmKhN( z*ro*)Wrfl;a1z!rK()Qx)x)$6f`+iCtoS-YPKsCnH(T%RM@BJh_R3iZLel;#1A4n) zcPGA|pEMPOfT^}Ca#Iz}cKb$kBGV1Y6FgJq%4A$IPcp6HBISIQTeV?b@Qpd(k8$+9 z{kz9?ZNcQ|d;|7zX8!CQkpkuT(uW=~%(uRLE2CY=MZ`q_wMBstFauWF_oxjhhq<

    u%;#g=)sOorn@ycg5CU*( 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�vXz}kK@)jGYX)mdQ~y@F)%h@fa41d8nENb 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 hg7DD)_jYIhfTbR-^PJ24OBlxEf~jaj8 { + // Only handle POST requests to /a2a + if (req.method !== 'POST' || req.url !== '/a2a') { + return next(); + } + + let originalBody = ''; + + req.on('data', (chunk) => { + originalBody += chunk.toString(); + }); + + req.on('end', async () => { + let sendParams: MessageSendParams; + + if (isJson(originalBody)) { + console.log('[a2a-middleware] Received JSON UI event:', originalBody); + + const clientEvent = JSON.parse(originalBody); + sendParams = { + message: { + messageId: uuidv4(), + role: 'user', + parts: [ + { + kind: 'data', + data: clientEvent, + metadata: { 'mimeType': 'application/json+a2ui' }, + } as Part, + ], + kind: 'message', + }, + }; + } else { + console.log('[a2a-middleware] Received text query:', originalBody); + sendParams = { + message: { + messageId: uuidv4(), + role: 'user', + parts: [{ kind: 'text', text: originalBody }], + kind: 'message', + }, + }; + } + + try { + const client = await createOrGetClient(); + const response = await client.sendMessage(sendParams); + + res.setHeader('Cache-Control', 'no-store'); + res.setHeader('Content-Type', 'application/json'); + + if ('error' in response) { + console.error('Error:', response.error.message); + res.statusCode = 500; + res.end(JSON.stringify({ error: response.error.message })); + return; + } + + const result = (response as SendMessageSuccessResponse).result as Task; + res.end(JSON.stringify(result.kind === 'task' ? result.status.message?.parts || [] : [])); + } catch (error) { + console.error('Error handling request:', error); + res.statusCode = 500; + res.setHeader('Content-Type', 'application/json'); + res.end(JSON.stringify({ error: String(error) })); + } + }); + }; +} + +async function fetchWithCustomHeader(url: RequestInfo | URL, init?: RequestInit) { + const headers = new Headers(init?.headers); + headers.set('X-A2A-Extensions', 'https://a2ui.org/a2a-extension/a2ui/v0.8'); + const newInit = { ...init, headers }; + return fetch(url, newInit); +} + +async function createOrGetClient() { + // Create a client pointing to the agent's Agent Card URL. + client ??= await A2AClient.fromCardUrl('http://localhost:10002/.well-known/agent-card.json', { + fetchImpl: fetchWithCustomHeader, + }); + + return client; +} + +function isJson(str: string): boolean { + try { + const parsed = JSON.parse(str); + return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed); + } catch (err) { + console.warn(err); + return false; + } +} + diff --git a/samples/client/vue/projects/restaurant/src/App.vue b/samples/client/vue/projects/restaurant/src/App.vue new file mode 100644 index 000000000..92c6a8273 --- /dev/null +++ b/samples/client/vue/projects/restaurant/src/App.vue @@ -0,0 +1,312 @@ + + + + + + + diff --git a/samples/client/vue/projects/restaurant/src/client.ts b/samples/client/vue/projects/restaurant/src/client.ts new file mode 100644 index 000000000..97d024601 --- /dev/null +++ b/samples/client/vue/projects/restaurant/src/client.ts @@ -0,0 +1,88 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import * as Types from '@a2ui/web_core/types/types'; +import type { A2AServerPayload } from '@a2ui/vue'; +import { ref } from 'vue'; +import { useMessageProcessor } from '@a2ui/vue'; + +const isLoading = ref(false); + +export function useClient() { + const processor = useMessageProcessor(); + + // Subscribe to events from the processor + processor.onEvent(async (event) => { + try { + const messages = await makeRequest(event.message); + event.resolve(messages); + } catch (err) { + event.reject(err as Error); + } + }); + + async function makeRequest(request: Types.A2UIClientEventMessage | string) { + let messages: Types.ServerToClientMessage[]; + + try { + isLoading.value = true; + const response = await send(request as Types.A2UIClientEventMessage); + messages = response; + } catch (err) { + console.error(err); + throw err; + } finally { + isLoading.value = false; + } + + processor.clearSurfaces(); + processor.processMessages(messages); + return messages; + } + + async function send( + message: Types.A2UIClientEventMessage, + ): Promise { + const response = await fetch('/a2a', { + body: JSON.stringify(message), + method: 'POST', + }); + + if (response.ok) { + const data = (await response.json()) as A2AServerPayload; + const messages: Types.ServerToClientMessage[] = []; + + if ('error' in data) { + throw new Error(data.error); + } else { + for (const item of data) { + if (item.kind === 'text') continue; + messages.push(item.data); + } + } + return messages; + } + + const error = (await response.json()) as { error: string }; + throw new Error(error.error); + } + + return { + isLoading, + makeRequest, + processor, + }; +} diff --git a/samples/client/vue/projects/restaurant/src/main.ts b/samples/client/vue/projects/restaurant/src/main.ts new file mode 100644 index 000000000..dcd81e18b --- /dev/null +++ b/samples/client/vue/projects/restaurant/src/main.ts @@ -0,0 +1,22 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import { createApp } from 'vue'; +import App from './App.vue'; +import '@a2ui/vue/dist/vue.css'; +import './styles.css'; + +createApp(App).mount('#app'); diff --git a/samples/client/vue/projects/restaurant/src/shims-vue.d.ts b/samples/client/vue/projects/restaurant/src/shims-vue.d.ts new file mode 100644 index 000000000..3804a43e2 --- /dev/null +++ b/samples/client/vue/projects/restaurant/src/shims-vue.d.ts @@ -0,0 +1,6 @@ +/* eslint-disable */ +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/samples/client/vue/projects/restaurant/src/styles.css b/samples/client/vue/projects/restaurant/src/styles.css new file mode 100644 index 000000000..e86a5b739 --- /dev/null +++ b/samples/client/vue/projects/restaurant/src/styles.css @@ -0,0 +1,227 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +:root { + --n-100: #ffffff; + --n-99: #fcfcfc; + --n-98: #f9f9f9; + --n-95: #f1f1f1; + --n-90: #e2e2e2; + --n-80: #c6c6c6; + --n-70: #ababab; + --n-60: #919191; + --n-50: #777777; + --n-40: #5e5e5e; + --n-35: #525252; + --n-30: #474747; + --n-25: #3b3b3b; + --n-20: #303030; + --n-15: #262626; + --n-10: #1b1b1b; + --n-5: #111111; + --n-0: #000000; + + --p-100: #ffffff; + --p-99: #fffbff; + --p-98: #fcf8ff; + --p-95: #f2efff; + --p-90: #e1e0ff; + --p-80: #c0c1ff; + --p-70: #a0a3ff; + --p-60: #8487ea; + --p-50: #6a6dcd; + --p-40: #5154b3; + --p-35: #4447a6; + --p-30: #383b99; + --p-25: #2c2e8d; + --p-20: #202182; + --p-15: #131178; + --p-10: #06006c; + --p-5: #03004d; + --p-0: #000000; + + --s-100: #ffffff; + --s-99: #fffbff; + --s-98: #fcf8ff; + --s-95: #f2efff; + --s-90: #e2e0f9; + --s-80: #c6c4dd; + --s-70: #aaa9c1; + --s-60: #8f8fa5; + --s-50: #75758b; + --s-40: #5d5c72; + --s-35: #515165; + --s-30: #454559; + --s-25: #393a4d; + --s-20: #2e2f42; + --s-15: #242437; + --s-10: #191a2c; + --s-5: #0f0f21; + --s-0: #000000; + + --t-100: #ffffff; + --t-99: #fffbff; + --t-98: #fff8f9; + --t-95: #ffecf4; + --t-90: #ffd8ec; + --t-80: #e9b9d3; + --t-70: #cc9eb8; + --t-60: #af849d; + --t-50: #946b83; + --t-40: #79536a; + --t-35: #6c475d; + --t-30: #5f3c51; + --t-25: #523146; + --t-20: #46263a; + --t-15: #3a1b2f; + --t-10: #2e1125; + --t-5: #22071a; + --t-0: #000000; + + --nv-100: #ffffff; + --nv-99: #fffbff; + --nv-98: #fcf8ff; + --nv-95: #f2effa; + --nv-90: #e4e1ec; + --nv-80: #c8c5d0; + --nv-70: #acaab4; + --nv-60: #918f9a; + --nv-50: #777680; + --nv-40: #5e5d67; + --nv-35: #52515b; + --nv-30: #46464f; + --nv-25: #3b3b43; + --nv-20: #303038; + --nv-15: #25252d; + --nv-10: #1b1b23; + --nv-5: #101018; + --nv-0: #000000; + + --e-100: #ffffff; + --e-99: #fffbff; + --e-98: #fff8f7; + --e-95: #ffedea; + --e-90: #ffdad6; + --e-80: #ffb4ab; + --e-70: #ff897d; + --e-60: #ff5449; + --e-50: #de3730; + --e-40: #ba1a1a; + --e-35: #a80710; + --e-30: #93000a; + --e-25: #7e0007; + --e-20: #690005; + --e-15: #540003; + --e-10: #410002; + --e-5: #2d0001; + --e-0: #000000; + + --primary: #137fec; + --text-color: #fff; + --background: light-dark(#f6f7f8, #101922); + --border-color: oklch( + from var(--background-light) l c h / calc(alpha * 0.15) + ); + --elevated-background-light: oklch( + from var(--background-light) l c h / calc(alpha * 0.05) + ); + --bb-grid-size: 4px; + --bb-grid-size-2: calc(var(--bb-grid-size) * 2); + --bb-grid-size-3: calc(var(--bb-grid-size) * 3); + --bb-grid-size-4: calc(var(--bb-grid-size) * 4); + --bb-grid-size-5: calc(var(--bb-grid-size) * 5); + --bb-grid-size-6: calc(var(--bb-grid-size) * 6); + --bb-grid-size-7: calc(var(--bb-grid-size) * 7); + --bb-grid-size-8: calc(var(--bb-grid-size) * 8); + --bb-grid-size-9: calc(var(--bb-grid-size) * 9); + --bb-grid-size-10: calc(var(--bb-grid-size) * 10); + --bb-grid-size-11: calc(var(--bb-grid-size) * 11); + --bb-grid-size-12: calc(var(--bb-grid-size) * 12); + --bb-grid-size-13: calc(var(--bb-grid-size) * 13); + --bb-grid-size-14: calc(var(--bb-grid-size) * 14); + --bb-grid-size-15: calc(var(--bb-grid-size) * 15); + --bb-grid-size-16: calc(var(--bb-grid-size) * 16); + + --background: radial-gradient( + at 0% 0%, + light-dark(rgba(161, 196, 253, 0.3), rgba(6, 182, 212, 0.15)) 0px, + transparent 50% + ), + radial-gradient( + at 100% 0%, + light-dark(rgba(255, 226, 226, 0.3), rgba(59, 130, 246, 0.15)) 0px, + transparent 50% + ), + radial-gradient( + at 100% 100%, + light-dark(rgba(162, 210, 255, 0.3), rgba(20, 184, 166, 0.15)) 0px, + transparent 50% + ), + radial-gradient( + at 0% 100%, + light-dark(rgba(255, 200, 221, 0.3), rgba(99, 102, 241, 0.15)) 0px, + transparent 50% + ), + linear-gradient( + 120deg, + light-dark(#f0f4f8, #0f172a) 0%, + light-dark(#e2e8f0, #1e293b) 100% + ); +} + +* { + box-sizing: border-box; +} + +html, +body { + --font-family: "Outfit", "Helvetica Neue", Helvetica, Arial, sans-serif; + --font-family-flex: "Outfit", "Helvetica Neue", Helvetica, Arial, + sans-serif; + --font-family-mono: monospace; + + background: var(--background); + font-family: var(--font-family); + margin: 0; + padding: 0; + width: 100svw; + height: 100svh; + overflow: auto; + + --color-scheme: light; + color-scheme: var(--color-scheme); +} + +html.light, +body.light { + --color-scheme: light; +} + +html.dark, +body.dark { + --color-scheme: dark; +} + +@media (prefers-color-scheme: dark) { + html, + body { + --color-scheme: dark; + } +} + +#app { + min-height: 100%; +} diff --git a/samples/client/vue/projects/restaurant/src/theme.ts b/samples/client/vue/projects/restaurant/src/theme.ts new file mode 100644 index 000000000..d64058eea --- /dev/null +++ b/samples/client/vue/projects/restaurant/src/theme.ts @@ -0,0 +1,443 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import * as Styles from '@a2ui/web_core/styles/index'; +import * as Types from '@a2ui/web_core/types/types'; + +/** Elements */ + +const a = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-500': true, + 'layout-as-n': true, + 'layout-dis-iflx': true, + 'layout-al-c': true, + 'typography-td-none': true, + 'color-c-p40': true, +}; + +const audio = { + 'layout-w-100': true, +}; + +const body = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-mt-0': true, + 'layout-mb-2': true, + 'typography-sz-bm': true, + 'color-c-n10': true, +}; + +const button = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-500': true, + 'layout-pt-3': true, + 'layout-pb-3': true, + 'layout-pl-5': true, + 'layout-pr-5': true, + 'layout-mb-1': true, + 'border-br-16': true, + 'border-bw-0': true, + 'border-c-n70': true, + 'border-bs-s': true, + 'color-bgc-s30': true, + 'behavior-ho-80': true, +}; + +const heading = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-500': true, + 'layout-mt-0': true, + 'layout-mb-2': true, +}; + +const iframe = { + 'behavior-sw-n': true, +}; + +const input = { + 'typography-f-sf': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-pl-4': true, + 'layout-pr-4': true, + 'layout-pt-2': true, + 'layout-pb-2': true, + 'border-br-6': true, + 'border-bw-1': true, + 'color-bc-s70': true, + 'border-bs-s': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const p = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const orderedList = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const unorderedList = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const listItem = { + 'typography-f-s': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'typography-sz-bm': true, + 'layout-as-n': true, + 'color-c-n10': true, +}; + +const pre = { + 'typography-f-c': true, + 'typography-fs-n': true, + 'typography-w-400': true, + 'typography-sz-bm': true, + 'typography-ws-p': true, + 'layout-as-n': true, +}; + +const textarea = { + ...input, + 'layout-r-none': true, + 'layout-fs-c': true, +}; + +const video = { + 'layout-el-cv': true, +}; + +const aLight = Styles.merge(a, {}); +const inputLight = Styles.merge(input, {}); +const textareaLight = Styles.merge(textarea, {}); +const buttonLight = Styles.merge(button, {}); +const bodyLight = Styles.merge(body, {}); +const pLight = Styles.merge(p, {}); +const preLight = Styles.merge(pre, {}); +const orderedListLight = Styles.merge(orderedList, {}); +const unorderedListLight = Styles.merge(unorderedList, {}); +const listItemLight = Styles.merge(listItem, {}); + +export const theme: Types.Theme = { + additionalStyles: { + Button: { + '--n-35': 'var(--n-100)', + '--n-10': 'var(--n-0)', + background: + 'linear-gradient(135deg, light-dark(#818cf8, #06b6d4) 0%, light-dark(#a78bfa, #3b82f6) 100%)', + boxShadow: '0 4px 15px rgba(102, 126, 234, 0.4)', + padding: '12px 28px', + textTransform: 'uppercase', + }, + Text: { + h1: { + color: 'transparent', + background: + 'linear-gradient(135deg, light-dark(#818cf8, #06b6d4) 0%, light-dark(#a78bfa, #3b82f6) 100%)', + '-webkit-background-clip': 'text', + 'background-clip': 'text', + '-webkit-text-fill-color': 'transparent', + }, + h2: { + color: 'transparent', + background: + 'linear-gradient(135deg, light-dark(#818cf8, #06b6d4) 0%, light-dark(#a78bfa, #3b82f6) 100%)', + '-webkit-background-clip': 'text', + 'background-clip': 'text', + '-webkit-text-fill-color': 'transparent', + }, + h3: { + color: 'transparent', + background: + 'linear-gradient(135deg, light-dark(#818cf8, #06b6d4) 0%, light-dark(#a78bfa, #3b82f6) 100%)', + '-webkit-background-clip': 'text', + 'background-clip': 'text', + '-webkit-text-fill-color': 'transparent', + }, + h4: {}, + h5: {}, + body: {}, + caption: {}, + }, + Card: { + background: + 'radial-gradient(circle at top left, light-dark(transparent, rgba(6, 182, 212, 0.15)), transparent 40%), radial-gradient(circle at bottom right, light-dark(transparent, rgba(139, 92, 246, 0.15)), transparent 40%), linear-gradient(135deg, light-dark(rgba(255, 255, 255, 0.7), rgba(30, 41, 59, 0.7)), light-dark(rgba(255, 255, 255, 0.7), rgba(15, 23, 42, 0.8)))', + }, + TextField: { + '--p-0': 'light-dark(var(--n-0), #1e293b)', + }, + }, + components: { + AudioPlayer: {}, + Button: { + 'layout-pt-2': true, + 'layout-pb-2': true, + 'layout-pl-3': true, + 'layout-pr-3': true, + 'border-br-12': true, + 'border-bw-0': true, + 'border-bs-s': true, + 'color-bgc-p30': true, + 'behavior-ho-70': true, + 'typography-w-400': true, + }, + Card: { 'border-br-9': true, 'layout-p-4': true, 'color-bgc-n100': true }, + CheckBox: { + element: { + 'layout-m-0': true, + 'layout-mr-2': true, + 'layout-p-2': true, + 'border-br-12': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bgc-p100': true, + 'color-bc-p60': true, + 'color-c-n30': true, + 'color-c-p30': true, + }, + label: { + 'color-c-p30': true, + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-flx-1': true, + 'typography-sz-ll': true, + }, + container: { + 'layout-dsp-iflex': true, + 'layout-al-c': true, + }, + }, + Column: { + 'layout-g-2': true, + }, + DateTimeInput: { + container: { + 'typography-sz-bm': true, + 'layout-w-100': true, + 'layout-g-2': true, + 'layout-dsp-flexhor': true, + 'layout-al-c': true, + 'typography-ws-nw': true, + }, + label: { + 'color-c-p30': true, + 'typography-sz-bm': true, + }, + element: { + 'layout-pt-2': true, + 'layout-pb-2': true, + 'layout-pl-3': true, + 'layout-pr-3': true, + 'border-br-2': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bgc-p100': true, + 'color-bc-p60': true, + 'color-c-n30': true, + 'color-c-p30': true, + }, + }, + Divider: {}, + Image: { + all: { + 'border-br-5': true, + 'layout-el-cv': true, + 'layout-w-100': true, + 'layout-h-100': true, + }, + avatar: { 'is-avatar': true }, + header: {}, + icon: {}, + largeFeature: {}, + mediumFeature: {}, + smallFeature: {}, + }, + Icon: {}, + List: { + 'layout-g-4': true, + 'layout-p-2': true, + }, + Modal: { + backdrop: { 'color-bbgc-p60_20': true }, + element: { + 'border-br-2': true, + 'color-bgc-p100': true, + 'layout-p-4': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bc-p80': true, + }, + }, + MultipleChoice: { + container: {}, + label: {}, + element: {}, + }, + Row: { + 'layout-g-4': true, + }, + Slider: { + container: {}, + label: {}, + element: {}, + }, + Tabs: { + container: {}, + controls: { all: {}, selected: {} }, + element: {}, + }, + Text: { + all: { + 'layout-w-100': true, + 'layout-g-2': true, + }, + h1: { + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'layout-p-0': true, + 'typography-sz-hs': true, + }, + h2: { + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'layout-p-0': true, + 'typography-sz-tl': true, + }, + h3: { + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'layout-p-0': true, + 'typography-sz-tl': true, + }, + h4: { + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'layout-p-0': true, + 'typography-sz-bl': true, + }, + h5: { + 'typography-f-sf': true, + 'typography-v-r': true, + 'typography-w-400': true, + 'layout-m-0': true, + 'layout-p-0': true, + 'typography-sz-bm': true, + }, + body: {}, + caption: {}, + }, + TextField: { + container: { + 'typography-sz-bm': true, + 'layout-w-100': true, + 'layout-g-2': true, + 'layout-dsp-flexhor': true, + 'layout-al-c': true, + 'typography-ws-nw': true, + }, + label: { + 'layout-flx-0': true, + 'color-c-p30': true, + }, + element: { + 'typography-sz-bm': true, + 'layout-pt-2': true, + 'layout-pb-2': true, + 'layout-pl-3': true, + 'layout-pr-3': true, + 'border-br-2': true, + 'border-bw-1': true, + 'border-bs-s': true, + 'color-bgc-p100': true, + 'color-bc-p60': true, + 'color-c-n30': true, + 'color-c-p30': true, + }, + }, + Video: { + 'border-br-5': true, + 'layout-el-cv': true, + }, + }, + elements: { + a: aLight, + audio, + body: bodyLight, + button: buttonLight, + h1: heading, + h2: heading, + h3: heading, + h4: heading, + h5: heading, + iframe, + input: inputLight, + p: pLight, + pre: preLight, + textarea: textareaLight, + video, + }, + markdown: { + p: [...Object.keys(pLight)], + h1: [...Object.keys(heading)], + h2: [...Object.keys(heading)], + h3: [...Object.keys(heading)], + h4: [...Object.keys(heading)], + h5: [...Object.keys(heading)], + ul: [...Object.keys(unorderedListLight)], + ol: [...Object.keys(orderedListLight)], + li: [...Object.keys(listItemLight)], + a: [...Object.keys(aLight)], + strong: [], + em: [], + }, +}; diff --git a/samples/client/vue/projects/restaurant/tsconfig.json b/samples/client/vue/projects/restaurant/tsconfig.json new file mode 100644 index 000000000..50103e24a --- /dev/null +++ b/samples/client/vue/projects/restaurant/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + } + }, + "include": ["src/**/*.ts", "src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/samples/client/vue/projects/restaurant/tsconfig.node.json b/samples/client/vue/projects/restaurant/tsconfig.node.json new file mode 100644 index 000000000..6357cc60a --- /dev/null +++ b/samples/client/vue/projects/restaurant/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts", "server.ts"] +} diff --git a/samples/client/vue/projects/restaurant/tsconfig.node.tsbuildinfo b/samples/client/vue/projects/restaurant/tsconfig.node.tsbuildinfo new file mode 100644 index 000000000..2d645ed3f --- /dev/null +++ b/samples/client/vue/projects/restaurant/tsconfig.node.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/compatibility/disposable.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/compatibility/index.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/web-globals/events.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/inspector.generated.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@20.19.30/node_modules/@types/node/index.d.ts","../../node_modules/.pnpm/@types+estree@1.0.8/node_modules/@types/estree/index.d.ts","../../node_modules/.pnpm/rollup@4.57.0/node_modules/rollup/dist/rollup.d.ts","../../node_modules/.pnpm/rollup@4.57.0/node_modules/rollup/dist/parseast.d.ts","../../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.30/node_modules/vite/types/hmrpayload.d.ts","../../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.30/node_modules/vite/types/customevent.d.ts","../../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.30/node_modules/vite/types/hot.d.ts","../../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.30/node_modules/vite/dist/node/modulerunnertransport.d-dj_me5sf.d.ts","../../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.30/node_modules/vite/dist/node/module-runner.d.ts","../../node_modules/.pnpm/esbuild@0.25.12/node_modules/esbuild/lib/main.d.ts","../../node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/source-map.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/previous-map.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/input.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/css-syntax-error.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/declaration.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/root.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/warning.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/lazy-result.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/no-work-result.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/processor.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/result.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/document.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/rule.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/node.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/comment.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/container.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/at-rule.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/list.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/postcss.d.ts","../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/postcss.d.mts","../../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.30/node_modules/vite/types/internal/lightningcssoptions.d.ts","../../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.30/node_modules/vite/types/internal/csspreprocessoroptions.d.ts","../../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.30/node_modules/vite/types/importglob.d.ts","../../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.30/node_modules/vite/types/metadata.d.ts","../../node_modules/.pnpm/vite@6.4.1_@types+node@20.19.30/node_modules/vite/dist/node/index.d.ts","../../node_modules/.pnpm/@babel+types@7.28.6/node_modules/@babel/types/lib/index.d.ts","../../node_modules/.pnpm/@vue+shared@3.5.27/node_modules/@vue/shared/dist/shared.d.ts","../../node_modules/.pnpm/@babel+parser@7.28.6/node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/.pnpm/@vue+compiler-core@3.5.27/node_modules/@vue/compiler-core/dist/compiler-core.d.ts","../../node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.d.mts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/typescript.d.ts","../../node_modules/.pnpm/@vue+compiler-sfc@3.5.27/node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts","../../node_modules/.pnpm/vue@3.5.27_typescript@5.9.3/node_modules/vue/compiler-sfc/index.d.mts","../../node_modules/.pnpm/@vitejs+plugin-vue@5.2.4_vite@6.4.1_@types+node@20.19.30__vue@3.5.27_typescript@5.9.3_/node_modules/@vitejs/plugin-vue/dist/index.d.mts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/types.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/max.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/nil.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/parse.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/stringify.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v1.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v1tov6.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v35.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v3.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v5.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v6.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v6tov1.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v7.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/validate.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/version.d.ts","../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/index.d.ts","../../node_modules/.pnpm/@a2a-js+sdk@0.3.9_express@4.22.1/node_modules/@a2a-js/sdk/dist/extensions-dvrucizw.d.ts","../../node_modules/.pnpm/@a2a-js+sdk@0.3.9_express@4.22.1/node_modules/@a2a-js/sdk/dist/core-bazqjfa2.d.ts","../../node_modules/.pnpm/@a2a-js+sdk@0.3.9_express@4.22.1/node_modules/@a2a-js/sdk/dist/client/index.d.ts","../../node_modules/.pnpm/@a2a-js+sdk@0.3.9_express@4.22.1/node_modules/@a2a-js/sdk/dist/index.d.ts","./server.ts","./vite.config.ts","../../node_modules/.pnpm/@types+uuid@10.0.0/node_modules/@types/uuid/index.d.ts"],"fileIdsList":[[55,101,210,211],[55,101,210],[55,101],[55,101,184],[55,98,101],[55,100,101],[101],[55,101,106,134],[55,101,102,107,112,120,131,142],[55,101,102,103,112,120],[50,51,52,55,101],[55,101,104,143],[55,101,105,106,113,121],[55,101,106,131,139],[55,101,107,109,112,120],[55,100,101,108],[55,101,109,110],[55,101,111,112],[55,100,101,112],[55,101,112,113,114,131,142],[55,101,112,113,114,127,131,134],[55,101,109,112,115,120,131,142],[55,101,112,113,115,116,120,131,139,142],[55,101,115,117,131,139,142],[53,54,55,56,57,58,59,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148],[55,101,112,118],[55,101,119,142,147],[55,101,109,112,120,131],[55,101,121],[55,101,122],[55,100,101,123],[55,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148],[55,101,125],[55,101,126],[55,101,112,127,128],[55,101,127,129,143,145],[55,101,112,131,132,134],[55,101,133,134],[55,101,131,132],[55,101,134],[55,101,135],[55,98,101,131,136],[55,101,112,137,138],[55,101,137,138],[55,101,106,120,131,139],[55,101,140],[55,101,120,141],[55,101,115,126,142],[55,101,106,143],[55,101,131,144],[55,101,119,145],[55,101,146],[55,96,101],[55,96,101,112,114,123,131,134,142,145,147],[55,101,131,148],[55,101,183,191],[55,101,184,185,186],[55,101,178,184,186,187,188,189],[55,101,174],[55,101,172,174],[55,101,163,171,172,173,175,177],[55,101,161],[55,101,164,169,174,177],[55,101,160,177],[55,101,164,165,168,169,170,177],[55,101,164,165,166,168,169,177],[55,101,161,162,163,164,165,169,170,171,173,174,175,177],[55,101,177],[55,101,159,161,162,163,164,165,166,168,169,170,171,172,173,174,175,176],[55,101,159,177],[55,101,164,166,167,169,170,177],[55,101,168,177],[55,101,169,170,174,177],[55,101,162,172],[55,101,151,182,183],[55,101,150,151],[55,68,72,101,142],[55,68,101,131,142],[55,63,101],[55,65,68,101,139,142],[55,101,120,139],[55,101,149],[55,63,101,149],[55,65,68,101,120,142],[55,60,61,64,67,101,112,131,142],[55,68,75,101],[55,60,66,101],[55,68,89,90,101],[55,64,68,101,134,142,149],[55,89,101,149],[55,62,63,101,149],[55,68,101],[55,62,63,64,65,66,67,68,69,70,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,90,91,92,93,94,95,101],[55,68,83,101],[55,68,75,76,101],[55,66,68,76,77,101],[55,67,101],[55,60,63,68,101],[55,68,72,76,77,101],[55,72,101],[55,66,68,71,101,142],[55,60,65,68,75,101],[55,101,131],[55,63,68,89,101,147,149],[55,101,193,194,195,196,197,198,199,201,202,203,204,205,206,207,208],[55,101,193],[55,101,193,200],[55,101,112,113,115,116,117,120,131,139,142,148,149,151,152,153,154,156,157,158,178,179,180,181,182,183],[55,101,153,154,155,156],[55,101,153],[55,101,154],[55,101,151,183],[55,101,190],[55,101,183,209,212,213],[55,101,122,183,192,214]],"fileInfos":[{"version":"a7297ff837fcdf174a9524925966429eb8e5feecc2cc55cc06574e6b092c1eaa","impliedFormat":1},{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"2fd4c143eff88dabb57701e6a40e02a4dbc36d5eb1362e7964d32028056a782b","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e456fd5b101271183d99a9087875a282323e3a3ff0d7bcf1881537eaa8b8e63","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"0225ecb9ed86bdb7a2c7fd01f1556906902929377b44483dc4b83e03b3ef227d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"ddc734b4fae82a01d247e9e342d020976640b5e93b4e9b3a1e30e5518883a060","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"05db535df8bdc30d9116fe754a3473d1b6479afbc14ae8eb18b605c62677d518","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"ee70b8037ecdf0de6c04f35277f253663a536d7e38f1539d270e4e916d225a3f","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"035d0934d304483f07148427a5bd5b98ac265dae914a6b49749fe23fbd893ec7","impliedFormat":99},{"version":"e2ed5b81cbed3a511b21a18ab2539e79ac1f4bc1d1d28f8d35d8104caa3b429f","impliedFormat":99},{"version":"161c8e0690c46021506e32fda85956d785b70f309ae97011fd27374c065cac9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"333caa2bfff7f06017f114de738050dd99a765c7eb16571c6d25a38c0d5365dc","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1251d53755b03cde02466064260bb88fd83c30006a46395b7d9167340bc59b73","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"4cdf27e29feae6c7826cdd5c91751cc35559125e8304f9e7aed8faef97dcf572","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"7870becb94cbc11d2d01b77c4422589adcba4d8e59f726246d40cd0d129784d8","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"f70b8328a15ca1d10b1436b691e134a49bc30dcf3183a69bfaa7ba77e1b78ecd","impliedFormat":1},{"version":"683b035f752e318d02e303894e767a1ac16ac4493baa2b593195d7976e6b7310","impliedFormat":99},{"version":"511a5f4f77165dc1b73ceae1e28b4a8f78f3443d8e18a1fd43bfafd2b0133bbe","impliedFormat":1},{"version":"f468b74459f1ad4473b36a36d49f2b255f3c6b5d536c81239c2b2971df089eaf","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"e63d565526fcb1a4cdd35e4c3d6dedc0a967933623bf2316ddab29ad2f62203a","impliedFormat":1},{"version":"2be2227c3810dfd84e46674fd33b8d09a4a28ad9cb633ed536effd411665ea1e","impliedFormat":99},{"version":"e134052a6b1ded61693b4037f615dc72f14e2881e79c1ddbff6c514c8a516b05","impliedFormat":1},{"version":"957a44f864ab3c182edc747428e8eec1765257deee7fac86c1147eeac897d832","impliedFormat":1},{"version":"3feec212c0aeb91e5a6e62caaf9f128954590210f8c302910ea377c088f6b61a","impliedFormat":99},{"version":"bbdfaf7d9b20534c5df1e1b937a20f17ca049d603a2afe072983bf7aff2279f5","impliedFormat":99},{"version":"cff399d99c68e4fafdd5835d443a980622267a39ac6f3f59b9e3d60d60c4f133","impliedFormat":99},{"version":"6ada175c0c585e89569e8feb8ff6fc9fc443d7f9ca6340b456e0f94cbef559bf","impliedFormat":99},{"version":"e56e4d95fad615c97eb0ae39c329a4cda9c0af178273a9173676cc9b14b58520","impliedFormat":99},{"version":"73e8dfd5e7d2abc18bdb5c5873e64dbdd1082408dd1921cad6ff7130d8339334","impliedFormat":99},{"version":"fc820b2f0c21501f51f79b58a21d3fa7ae5659fc1812784dbfbb72af147659ee","impliedFormat":99},{"version":"4f041ef66167b5f9c73101e5fd8468774b09429932067926f9b2960cc3e4f99d","impliedFormat":99},{"version":"31501b8fc4279e78f6a05ca35e365e73c0b0c57d06dbe8faecb10c7254ce7714","impliedFormat":99},{"version":"7bc76e7d4bbe3764abaf054aed3a622c5cdbac694e474050d71ce9d4ab93ea4b","impliedFormat":99},{"version":"ff4e9db3eb1e95d7ba4b5765e4dc7f512b90fb3b588adfd5ca9b0d9d7a56a1ae","impliedFormat":99},{"version":"f205fd03cd15ea054f7006b7ef8378ef29c315149da0726f4928d291e7dce7b9","impliedFormat":99},{"version":"d683908557d53abeb1b94747e764b3bd6b6226273514b96a942340e9ce4b7be7","impliedFormat":99},{"version":"7c6d5704e2f236fddaf8dbe9131d998a4f5132609ef795b78c3b63f46317f88a","impliedFormat":99},{"version":"d05bd4d28c12545827349b0ac3a79c50658d68147dad38d13e97e22353544496","impliedFormat":99},{"version":"b6436d90a5487d9b3c3916b939f68e43f7eaca4b0bb305d897d5124180a122b9","impliedFormat":99},{"version":"04ace6bedd6f59c30ea6df1f0f8d432c728c8bc5c5fd0c5c1c80242d3ab51977","impliedFormat":99},{"version":"57a8a7772769c35ba7b4b1ba125f0812deec5c7102a0d04d9e15b1d22880c9e8","impliedFormat":99},{"version":"badcc9d59770b91987e962f8e3ddfa1e06671b0e4c5e2738bbd002255cad3f38","impliedFormat":99},{"version":"f4a28231909cf1e9cd5ca1e4f4421837e29ab28a585d2df228c437f91f1f7c1f","impliedFormat":99},{"version":"7bf04aa69cf791b876738229cf54baffac85d7c46cf862508be21db054d76193","impliedFormat":99},{"version":"6108db6afa52c8c55129c571c1c26a464e33c83e57d9c315543fa80184eeffe8","impliedFormat":99},{"version":"7454582ef786c6e575fb33a1d0c355e428a0acf6f309f18862ca1a35eaca645e","impliedFormat":99},"cb001f65ff6623c3f39f51fb6744a9d3257d7e54d1cc4697802c1d763e467a3f","fbb5597de80db5300e26b57ad7c04e2044646c3d369d77eb28e48f19a2739996",{"version":"f874ea4d0091b0a44362a5f74d26caab2e66dec306c2bf7e8965f5106e784c3b","impliedFormat":1}],"root":[214,215],"options":{"allowSyntheticDefaultImports":true,"composite":true,"module":99,"skipLibCheck":true,"strict":true},"referencedMap":[[212,1],[211,2],[210,3],[213,2],[186,4],[184,3],[150,3],[98,5],[99,5],[100,6],[55,7],[101,8],[102,9],[103,10],[50,3],[53,11],[51,3],[52,3],[104,12],[105,13],[106,14],[107,15],[108,16],[109,17],[110,17],[111,18],[112,19],[113,20],[114,21],[56,3],[54,3],[115,22],[116,23],[117,24],[149,25],[118,26],[119,27],[120,28],[121,29],[122,30],[123,31],[124,32],[125,33],[126,34],[127,35],[128,35],[129,36],[130,3],[131,37],[133,38],[132,39],[134,40],[135,41],[136,42],[137,43],[138,44],[139,45],[140,46],[141,47],[142,48],[143,49],[144,50],[145,51],[146,52],[57,3],[58,3],[59,3],[97,53],[147,54],[148,55],[216,3],[192,56],[187,57],[190,58],[185,3],[158,3],[188,3],[175,59],[173,60],[174,61],[162,62],[163,60],[170,63],[161,64],[166,65],[176,3],[167,66],[172,67],[178,68],[177,69],[160,70],[168,71],[169,72],[164,73],[171,59],[165,74],[152,75],[151,76],[159,3],[1,3],[48,3],[49,3],[9,3],[13,3],[12,3],[3,3],[14,3],[15,3],[16,3],[17,3],[18,3],[19,3],[20,3],[21,3],[4,3],[22,3],[23,3],[5,3],[24,3],[28,3],[25,3],[26,3],[27,3],[29,3],[30,3],[31,3],[6,3],[32,3],[33,3],[34,3],[35,3],[7,3],[39,3],[36,3],[37,3],[38,3],[40,3],[8,3],[41,3],[46,3],[47,3],[42,3],[43,3],[44,3],[45,3],[2,3],[11,3],[10,3],[189,3],[75,77],[85,78],[74,77],[95,79],[66,80],[65,81],[94,82],[88,83],[93,84],[68,85],[82,86],[67,87],[91,88],[63,89],[62,82],[92,90],[64,91],[69,92],[70,3],[73,92],[60,3],[96,93],[86,94],[77,95],[78,96],[80,97],[76,98],[79,99],[89,82],[71,100],[72,101],[81,102],[61,103],[84,94],[83,92],[87,3],[90,104],[209,105],[194,3],[195,3],[196,3],[197,3],[193,3],[198,106],[199,3],[201,107],[200,106],[202,106],[203,107],[204,106],[205,3],[206,106],[207,3],[208,3],[183,108],[157,109],[156,110],[154,110],[153,3],[155,111],[181,3],[180,3],[179,3],[182,112],[191,113],[214,114],[215,115]],"affectedFilesPendingEmit":[[214,17],[215,17]],"emitSignatures":[214,215],"version":"5.9.3"} \ No newline at end of file diff --git a/samples/client/vue/projects/restaurant/vite.config.ts b/samples/client/vue/projects/restaurant/vite.config.ts new file mode 100644 index 000000000..2e095fbf0 --- /dev/null +++ b/samples/client/vue/projects/restaurant/vite.config.ts @@ -0,0 +1,40 @@ +/* + Copyright 2025 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import { resolve } from 'path'; +import { createA2AMiddleware } from './server'; + +export default defineConfig({ + plugins: [ + vue(), + { + name: 'configure-server', + configureServer(server) { + server.middlewares.use(createA2AMiddleware()); + }, + }, + ], + resolve: { + alias: { + '@': resolve(__dirname, 'src'), + }, + }, + server: { + port: 4000, + }, +}); diff --git a/samples/client/vue/tsconfig.json b/samples/client/vue/tsconfig.json new file mode 100644 index 000000000..a8ccbff1d --- /dev/null +++ b/samples/client/vue/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "references": [ + { "path": "./projects/restaurant" } + ] +} + diff --git a/samples/client/vue/tsconfig.node.json b/samples/client/vue/tsconfig.node.json new file mode 100644 index 000000000..97ede7ee6 --- /dev/null +++ b/samples/client/vue/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} From d5b1f7030918b58069b502633fe198e9d2ee6153 Mon Sep 17 00:00:00 2001 From: ShawnWang Date: Mon, 2 Feb 2026 22:29:55 +0800 Subject: [PATCH 2/2] Update renderers/vue/vite.config.ts thanks Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- renderers/vue/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renderers/vue/vite.config.ts b/renderers/vue/vite.config.ts index a485021ea..4d57429d3 100644 --- a/renderers/vue/vite.config.ts +++ b/renderers/vue/vite.config.ts @@ -29,7 +29,7 @@ export default defineConfig(({ mode }) => { { template: { compilerOptions: { - // 将所有带短横线的标签名都视为自定义元素 + // Treat all tags with a dash as custom elements isCustomElement: (tag) => tag.includes('a2ui-') } }