feat(deps): add Valtio and XState for Phase 2

- Add valtio for Proxy-based state management
- Add xstate and @xstate/react for state machines
- Create domains directory structure (chat, hands, intelligence, skills)
- Create shared directory for common utilities

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
iven
2026-03-21 19:43:12 +08:00
parent 4ac6da1c88
commit 20eed290f8
2 changed files with 87 additions and 2 deletions

View File

@@ -31,6 +31,7 @@
"dependencies": {
"@tauri-apps/api": "^2",
"@tauri-apps/plugin-opener": "^2",
"@xstate/react": "^6.1.0",
"clsx": "^2.1.1",
"date-fns": "^4.1.0",
"framer-motion": "^12.36.0",
@@ -42,6 +43,8 @@
"tailwind-merge": "^3.5.0",
"tweetnacl": "^1.0.3",
"uuid": "^11.0.0",
"valtio": "^2.3.1",
"xstate": "^5.28.0",
"zustand": "^5.0.11"
},
"devDependencies": {

86
desktop/pnpm-lock.yaml generated
View File

@@ -14,6 +14,9 @@ importers:
'@tauri-apps/plugin-opener':
specifier: ^2
version: 2.5.3
'@xstate/react':
specifier: ^6.1.0
version: 6.1.0(@types/react@19.2.14)(react@19.2.4)(xstate@5.28.0)
clsx:
specifier: ^2.1.1
version: 2.1.1
@@ -47,9 +50,15 @@ importers:
uuid:
specifier: ^11.0.0
version: 11.1.0
valtio:
specifier: ^2.3.1
version: 2.3.1(@types/react@19.2.14)(react@19.2.4)
xstate:
specifier: ^5.28.0
version: 5.28.0
zustand:
specifier: ^5.0.11
version: 5.0.11(@types/react@19.2.14)(react@19.2.4)
version: 5.0.11(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4))
devDependencies:
'@playwright/test':
specifier: ^1.58.2
@@ -986,6 +995,15 @@ packages:
'@vitest/utils@2.1.8':
resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==}
'@xstate/react@6.1.0':
resolution: {integrity: sha512-ep9F0jGTI63B/jE8GHdMpUqtuz7yRebNaKv8EMUaiSi29NOglywc2X2YSOV/ygbIK+LtmgZ0q9anoEA2iBSEOw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
xstate: ^5.28.0
peerDependenciesMeta:
xstate:
optional: true
agent-base@7.1.4:
resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
engines: {node: '>= 14'}
@@ -1582,6 +1600,9 @@ packages:
resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
proxy-compare@3.0.1:
resolution: {integrity: sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==}
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
@@ -1766,10 +1787,36 @@ packages:
peerDependencies:
browserslist: '>= 4.21.0'
use-isomorphic-layout-effect@1.2.1:
resolution: {integrity: sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==}
peerDependencies:
'@types/react': '*'
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
optional: true
use-sync-external-store@1.6.0:
resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
uuid@11.1.0:
resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
hasBin: true
valtio@2.3.1:
resolution: {integrity: sha512-ZsOaOEn0U9IJ96cAj3CZ3GjwpN3EJdjsi1PT4PREuB+Pcqfsczu16isT5DT1UrmHbk4PtLjk8kwNEHuR2CX56w==}
engines: {node: '>=12.20.0'}
peerDependencies:
'@types/react': '>=18.0.0'
react: '>=18.0.0'
peerDependenciesMeta:
'@types/react':
optional: true
react:
optional: true
vite-node@2.1.8:
resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -1929,6 +1976,9 @@ packages:
xmlchars@2.2.0:
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
xstate@5.28.0:
resolution: {integrity: sha512-Iaqq6ZrUzqeUtA3hC5LQKZfR8ZLzEFTImMHJM3jWEdVvXWdKvvVLXZEiNQWm3SCA9ZbEou/n5rcsna1wb9t28A==}
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
@@ -2632,6 +2682,16 @@ snapshots:
loupe: 3.2.1
tinyrainbow: 1.2.0
'@xstate/react@6.1.0(@types/react@19.2.14)(react@19.2.4)(xstate@5.28.0)':
dependencies:
react: 19.2.4
use-isomorphic-layout-effect: 1.2.1(@types/react@19.2.14)(react@19.2.4)
use-sync-external-store: 1.6.0(react@19.2.4)
optionalDependencies:
xstate: 5.28.0
transitivePeerDependencies:
- '@types/react'
agent-base@7.1.4: {}
ansi-regex@5.0.1: {}
@@ -3198,6 +3258,8 @@ snapshots:
ansi-styles: 5.2.0
react-is: 17.0.2
proxy-compare@3.0.1: {}
punycode@2.3.1: {}
react-dom@19.2.4(react@19.2.4):
@@ -3369,8 +3431,25 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
use-isomorphic-layout-effect@1.2.1(@types/react@19.2.14)(react@19.2.4):
dependencies:
react: 19.2.4
optionalDependencies:
'@types/react': 19.2.14
use-sync-external-store@1.6.0(react@19.2.4):
dependencies:
react: 19.2.4
uuid@11.1.0: {}
valtio@2.3.1(@types/react@19.2.14)(react@19.2.4):
dependencies:
proxy-compare: 3.0.1
optionalDependencies:
'@types/react': 19.2.14
react: 19.2.4
vite-node@2.1.8(lightningcss@1.31.1):
dependencies:
cac: 6.7.14
@@ -3490,9 +3569,12 @@ snapshots:
xmlchars@2.2.0: {}
xstate@5.28.0: {}
yallist@3.1.1: {}
zustand@5.0.11(@types/react@19.2.14)(react@19.2.4):
zustand@5.0.11(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)):
optionalDependencies:
'@types/react': 19.2.14
react: 19.2.4
use-sync-external-store: 1.6.0(react@19.2.4)