feat: add zod dependency and implement kevisual routes for CLI commands

- Added zod as a dependency in package.json.
- Enhanced assistant configuration to include skills and plugins directories.
- Implemented runCmd function to execute CLI commands in run.ts.
- Updated light-code module to use node:child_process.
- Created new kevisual routes for checking CLI login status and deploying web pages.
- Added restart functionality for OpenCode client in opencode module.
This commit is contained in:
2026-01-28 00:02:38 +08:00
parent 98f21d8aaa
commit 742a7a2992
11 changed files with 352 additions and 146 deletions

273
pnpm-lock.yaml generated
View File

@@ -159,6 +159,9 @@ importers:
unstorage:
specifier: ^1.17.4
version: 1.17.4(idb-keyval@6.2.2)
zod:
specifier: ^4.3.6
version: 4.3.6
devDependencies:
'@kevisual/ai':
specifier: ^0.0.22
@@ -357,6 +360,121 @@ importers:
specifier: ^1.4.0
version: 1.4.0
cli-center-docs:
dependencies:
'@astrojs/mdx':
specifier: ^4.3.13
version: 4.3.13(astro@5.16.15(@types/node@25.0.10)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.43.0)(typescript@5.8.2))
'@astrojs/react':
specifier: ^4.4.2
version: 4.4.2(@types/node@25.0.10)(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@astrojs/sitemap':
specifier: ^3.7.0
version: 3.7.0
'@astrojs/vue':
specifier: ^5.1.4
version: 5.1.4(@types/node@25.0.10)(astro@5.16.15(@types/node@25.0.10)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.43.0)(typescript@5.8.2))(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.43.0)(vue@3.5.27(typescript@5.8.2))
'@kevisual/api':
specifier: ^0.0.28
version: 0.0.28
'@kevisual/context':
specifier: ^0.0.4
version: 0.0.4
'@kevisual/kv-code':
specifier: ^0.0.4
version: 0.0.4(@types/react@19.2.10)(dotenv@17.2.3)
'@kevisual/query':
specifier: ^0.0.38
version: 0.0.38
'@kevisual/query-login':
specifier: ^0.0.7
version: 0.0.7(@kevisual/query@0.0.38)
'@kevisual/registry':
specifier: ^0.0.1
version: 0.0.1(typescript@5.8.2)
'@radix-ui/react-slot':
specifier: ^1.2.4
version: 1.2.4(@types/react@19.2.10)(react@19.2.4)
'@tailwindcss/vite':
specifier: ^4.1.18
version: 4.1.18(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
'@uiw/react-md-editor':
specifier: ^4.0.11
version: 4.0.11(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
antd:
specifier: ^6.2.2
version: 6.2.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
astro:
specifier: ^5.16.15
version: 5.16.15(@types/node@25.0.10)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.43.0)(typescript@5.8.2)
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
clsx:
specifier: ^2.1.1
version: 2.1.1
dayjs:
specifier: ^1.11.19
version: 1.11.19
es-toolkit:
specifier: ^1.44.0
version: 1.44.0
github-markdown-css:
specifier: ^5.8.1
version: 5.8.1
highlight.js:
specifier: ^11.11.1
version: 11.11.1
lucide-react:
specifier: ^0.563.0
version: 0.563.0(react@19.2.4)
marked:
specifier: ^17.0.1
version: 17.0.1
marked-highlight:
specifier: ^2.2.3
version: 2.2.3(marked@17.0.1)
nanoid:
specifier: ^5.1.6
version: 5.1.6
react:
specifier: ^19.2.4
version: 19.2.4
react-dom:
specifier: ^19.2.4
version: 19.2.4(react@19.2.4)
react-toastify:
specifier: ^11.0.5
version: 11.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
tailwind-merge:
specifier: ^3.4.0
version: 3.4.0
vue:
specifier: ^3.5.27
version: 3.5.27(typescript@5.8.2)
zustand:
specifier: ^5.0.10
version: 5.0.10(@types/react@19.2.10)(react@19.2.4)
devDependencies:
'@kevisual/types':
specifier: ^0.0.12
version: 0.0.12
'@types/react':
specifier: ^19.2.10
version: 19.2.10
'@types/react-dom':
specifier: ^19.2.3
version: 19.2.3(@types/react@19.2.10)
dotenv:
specifier: ^17.2.3
version: 17.2.3
tailwindcss:
specifier: ^4.1.18
version: 4.1.18
tw-animate-css:
specifier: ^1.4.0
version: 1.4.0
packages:
'@ant-design/colors@8.0.1':
@@ -1994,39 +2112,21 @@ packages:
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
'@shikijs/core@3.20.0':
resolution: {integrity: sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g==}
'@shikijs/core@3.21.0':
resolution: {integrity: sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==}
'@shikijs/engine-javascript@3.20.0':
resolution: {integrity: sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg==}
'@shikijs/engine-javascript@3.21.0':
resolution: {integrity: sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==}
'@shikijs/engine-oniguruma@3.20.0':
resolution: {integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==}
'@shikijs/engine-oniguruma@3.21.0':
resolution: {integrity: sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==}
'@shikijs/langs@3.20.0':
resolution: {integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==}
'@shikijs/langs@3.21.0':
resolution: {integrity: sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==}
'@shikijs/themes@3.20.0':
resolution: {integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==}
'@shikijs/themes@3.21.0':
resolution: {integrity: sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==}
'@shikijs/types@3.20.0':
resolution: {integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==}
'@shikijs/types@3.21.0':
resolution: {integrity: sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==}
@@ -2502,27 +2602,15 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
'@vue/compiler-core@3.5.26':
resolution: {integrity: sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==}
'@vue/compiler-core@3.5.27':
resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==}
'@vue/compiler-dom@3.5.26':
resolution: {integrity: sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==}
'@vue/compiler-dom@3.5.27':
resolution: {integrity: sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==}
'@vue/compiler-sfc@3.5.26':
resolution: {integrity: sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==}
'@vue/compiler-sfc@3.5.27':
resolution: {integrity: sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==}
'@vue/compiler-ssr@3.5.26':
resolution: {integrity: sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==}
'@vue/compiler-ssr@3.5.27':
resolution: {integrity: sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==}
@@ -2551,9 +2639,6 @@ packages:
peerDependencies:
vue: 3.5.27
'@vue/shared@3.5.26':
resolution: {integrity: sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==}
'@vue/shared@3.5.27':
resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==}
@@ -4576,9 +4661,6 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
shiki@3.20.0:
resolution: {integrity: sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg==}
shiki@3.21.0:
resolution: {integrity: sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==}
@@ -4612,10 +4694,6 @@ packages:
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
smol-toml@1.5.2:
resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==}
engines: {node: '>= 18'}
smol-toml@1.6.0:
resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==}
engines: {node: '>= 18'}
@@ -5152,6 +5230,9 @@ packages:
zod@4.1.8:
resolution: {integrity: sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ==}
zod@4.3.6:
resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
zustand@5.0.10:
resolution: {integrity: sha512-U1AiltS1O9hSy3rul+Ub82ut2fqIAefiSuwECWt6jlMVUGejvf+5omLcRBSzqbRagSM3hQZbtzdeRc6QVScXTg==}
engines: {node: '>=12.20.0'}
@@ -5243,8 +5324,8 @@ snapshots:
remark-parse: 11.0.0
remark-rehype: 11.1.2
remark-smartypants: 3.0.2
shiki: 3.20.0
smol-toml: 1.5.2
shiki: 3.21.0
smol-toml: 1.6.0
unified: 11.0.5
unist-util-remove-position: 5.0.0
unist-util-visit: 5.0.0
@@ -5321,7 +5402,7 @@ snapshots:
dependencies:
'@vitejs/plugin-vue': 5.2.4(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))(vue@3.5.27(typescript@5.8.2))
'@vitejs/plugin-vue-jsx': 4.2.0(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))(vue@3.5.27(typescript@5.8.2))
'@vue/compiler-sfc': 3.5.26
'@vue/compiler-sfc': 3.5.27
astro: 5.16.15(@types/node@25.0.10)(idb-keyval@6.2.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.43.0)(typescript@5.8.2)
vite: 6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)
vite-plugin-vue-devtools: 7.7.9(rollup@4.43.0)(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))(vue@3.5.27(typescript@5.8.2))
@@ -6498,7 +6579,7 @@ snapshots:
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
'@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/remapping@2.3.5':
@@ -6515,7 +6596,7 @@ snapshots:
'@jridgewell/trace-mapping@0.3.31':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
'@jridgewell/sourcemap-codec': 1.5.5
'@kevisual/ai@0.0.19':
dependencies:
@@ -6686,7 +6767,7 @@ snapshots:
'@kevisual/router@0.0.36':
dependencies:
path-to-regexp: 8.3.0
selfsigned: 5.2.0
selfsigned: 5.4.0
send: 1.2.1(supports-color@10.2.2)
transitivePeerDependencies:
- supports-color
@@ -6960,7 +7041,7 @@ snapshots:
async: 2.6.4
debug: 4.3.7(supports-color@10.2.2)
eventemitter2: 6.4.9
extrareqp2: 1.0.0(debug@4.3.7(supports-color@10.2.2))
extrareqp2: 1.0.0(debug@4.3.7)
ws: 7.5.10
transitivePeerDependencies:
- bufferutil
@@ -7447,13 +7528,6 @@ snapshots:
'@sec-ant/readable-stream@0.4.1': {}
'@shikijs/core@3.20.0':
dependencies:
'@shikijs/types': 3.20.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
'@shikijs/core@3.21.0':
dependencies:
'@shikijs/types': 3.21.0
@@ -7461,49 +7535,25 @@ snapshots:
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
'@shikijs/engine-javascript@3.20.0':
dependencies:
'@shikijs/types': 3.20.0
'@shikijs/vscode-textmate': 10.0.2
oniguruma-to-es: 4.3.4
'@shikijs/engine-javascript@3.21.0':
dependencies:
'@shikijs/types': 3.21.0
'@shikijs/vscode-textmate': 10.0.2
oniguruma-to-es: 4.3.4
'@shikijs/engine-oniguruma@3.20.0':
dependencies:
'@shikijs/types': 3.20.0
'@shikijs/vscode-textmate': 10.0.2
'@shikijs/engine-oniguruma@3.21.0':
dependencies:
'@shikijs/types': 3.21.0
'@shikijs/vscode-textmate': 10.0.2
'@shikijs/langs@3.20.0':
dependencies:
'@shikijs/types': 3.20.0
'@shikijs/langs@3.21.0':
dependencies:
'@shikijs/types': 3.21.0
'@shikijs/themes@3.20.0':
dependencies:
'@shikijs/types': 3.20.0
'@shikijs/themes@3.21.0':
dependencies:
'@shikijs/types': 3.21.0
'@shikijs/types@3.20.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
'@shikijs/types@3.21.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
@@ -8108,7 +8158,7 @@ snapshots:
'@babel/types': 7.28.5
'@vue/babel-helper-vue-transform-on': 1.5.0
'@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.5)
'@vue/shared': 3.5.26
'@vue/shared': 3.5.27
optionalDependencies:
'@babel/core': 7.28.5
transitivePeerDependencies:
@@ -8121,18 +8171,10 @@ snapshots:
'@babel/helper-module-imports': 7.27.1
'@babel/helper-plugin-utils': 7.27.1
'@babel/parser': 7.28.5
'@vue/compiler-sfc': 3.5.26
'@vue/compiler-sfc': 3.5.27
transitivePeerDependencies:
- supports-color
'@vue/compiler-core@3.5.26':
dependencies:
'@babel/parser': 7.28.5
'@vue/shared': 3.5.26
entities: 7.0.0
estree-walker: 2.0.2
source-map-js: 1.2.1
'@vue/compiler-core@3.5.27':
dependencies:
'@babel/parser': 7.28.5
@@ -8141,28 +8183,11 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.2.1
'@vue/compiler-dom@3.5.26':
dependencies:
'@vue/compiler-core': 3.5.26
'@vue/shared': 3.5.26
'@vue/compiler-dom@3.5.27':
dependencies:
'@vue/compiler-core': 3.5.27
'@vue/shared': 3.5.27
'@vue/compiler-sfc@3.5.26':
dependencies:
'@babel/parser': 7.28.5
'@vue/compiler-core': 3.5.26
'@vue/compiler-dom': 3.5.26
'@vue/compiler-ssr': 3.5.26
'@vue/shared': 3.5.26
estree-walker: 2.0.2
magic-string: 0.30.21
postcss: 8.5.6
source-map-js: 1.2.1
'@vue/compiler-sfc@3.5.27':
dependencies:
'@babel/parser': 7.28.5
@@ -8175,11 +8200,6 @@ snapshots:
postcss: 8.5.6
source-map-js: 1.2.1
'@vue/compiler-ssr@3.5.26':
dependencies:
'@vue/compiler-dom': 3.5.26
'@vue/shared': 3.5.26
'@vue/compiler-ssr@3.5.27':
dependencies:
'@vue/compiler-dom': 3.5.27
@@ -8233,8 +8253,6 @@ snapshots:
'@vue/shared': 3.5.27
vue: 3.5.27(typescript@5.8.2)
'@vue/shared@3.5.26': {}
'@vue/shared@3.5.27': {}
acorn-jsx@5.3.2(acorn@8.15.0):
@@ -8986,9 +9004,9 @@ snapshots:
extend@3.0.2: {}
extrareqp2@1.0.0(debug@4.3.7(supports-color@10.2.2)):
extrareqp2@1.0.0(debug@4.3.7):
dependencies:
follow-redirects: 1.15.9(debug@4.3.7(supports-color@10.2.2))
follow-redirects: 1.15.9(debug@4.3.7)
transitivePeerDependencies:
- debug
@@ -9020,10 +9038,6 @@ snapshots:
optionalDependencies:
picomatch: 4.0.2
fdir@6.5.0(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
fdir@6.5.0(picomatch@4.0.3):
optionalDependencies:
picomatch: 4.0.3
@@ -9042,7 +9056,7 @@ snapshots:
flattie@1.1.1: {}
follow-redirects@1.15.9(debug@4.3.7(supports-color@10.2.2)):
follow-redirects@1.15.9(debug@4.3.7):
optionalDependencies:
debug: 4.3.7(supports-color@10.2.2)
@@ -10862,17 +10876,6 @@ snapshots:
shebang-regex@3.0.0: {}
shiki@3.20.0:
dependencies:
'@shikijs/core': 3.20.0
'@shikijs/engine-javascript': 3.20.0
'@shikijs/engine-oniguruma': 3.20.0
'@shikijs/langs': 3.20.0
'@shikijs/themes': 3.20.0
'@shikijs/types': 3.20.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
shiki@3.21.0:
dependencies:
'@shikijs/core': 3.21.0
@@ -10913,8 +10916,6 @@ snapshots:
smart-buffer@4.2.0: {}
smol-toml@1.5.2: {}
smol-toml@1.6.0: {}
socks-proxy-agent@8.0.5(supports-color@10.2.2):
@@ -11257,7 +11258,7 @@ snapshots:
'@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5)
'@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5)
'@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.5)
'@vue/compiler-dom': 3.5.26
'@vue/compiler-dom': 3.5.27
kolorist: 1.8.0
magic-string: 0.30.21
vite: 6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)
@@ -11267,8 +11268,8 @@ snapshots:
vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2):
dependencies:
esbuild: 0.25.12
fdir: 6.5.0(picomatch@4.0.2)
picomatch: 4.0.2
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
rollup: 4.43.0
tinyglobby: 0.2.15
@@ -11365,6 +11366,8 @@ snapshots:
zod@4.1.8: {}
zod@4.3.6: {}
zustand@5.0.10(@types/react@19.2.10)(react@19.2.4):
optionalDependencies:
'@types/react': 19.2.10