Set up the complete project foundation for ClawX, a graphical AI assistant: - Electron main process with IPC handlers, menu, tray, and gateway management - React renderer with routing, layout components, and page scaffolding - Zustand state management for gateway, settings, channels, skills, chat, and cron - shadcn/ui components with Tailwind CSS and CSS variable theming - Build tooling with Vite, electron-builder, and TypeScript configuration - Testing setup with Vitest and Playwright - Development configurations (ESLint, Prettier, gitignore, env example)
86 lines
2.7 KiB
JSON
86 lines
2.7 KiB
JSON
{
|
|
"name": "clawx",
|
|
"version": "0.1.0",
|
|
"pnpm": {
|
|
"onlyBuiltDependencies": ["electron", "esbuild"]
|
|
},
|
|
"description": "ClawX - Graphical AI Assistant based on OpenClaw",
|
|
"main": "dist-electron/main/index.js",
|
|
"author": "ClawX Team",
|
|
"license": "MIT",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"dev:electron": "electron .",
|
|
"build": "tsc && vite build && electron-builder",
|
|
"build:vite": "vite build",
|
|
"build:electron": "tsc -p tsconfig.node.json",
|
|
"preview": "vite preview",
|
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
"lint:fix": "eslint . --ext ts,tsx --fix",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:e2e": "playwright test",
|
|
"package": "electron-builder",
|
|
"package:mac": "electron-builder --mac",
|
|
"package:win": "electron-builder --win",
|
|
"package:linux": "electron-builder --linux",
|
|
"package:all": "electron-builder -mwl"
|
|
},
|
|
"dependencies": {
|
|
"electron-store": "^10.0.0",
|
|
"electron-updater": "^6.3.9",
|
|
"ws": "^8.18.0"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.49.1",
|
|
"@radix-ui/react-dialog": "^1.1.4",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.4",
|
|
"@radix-ui/react-label": "^2.1.1",
|
|
"@radix-ui/react-progress": "^1.1.1",
|
|
"@radix-ui/react-radio-group": "^1.2.2",
|
|
"@radix-ui/react-select": "^2.1.4",
|
|
"@radix-ui/react-separator": "^1.1.1",
|
|
"@radix-ui/react-slot": "^1.1.1",
|
|
"@radix-ui/react-switch": "^1.1.2",
|
|
"@radix-ui/react-tabs": "^1.1.2",
|
|
"@radix-ui/react-toast": "^1.2.4",
|
|
"@radix-ui/react-tooltip": "^1.1.6",
|
|
"@testing-library/react": "^16.1.0",
|
|
"@types/node": "^22.10.5",
|
|
"@types/react": "^19.0.2",
|
|
"@types/react-dom": "^19.0.2",
|
|
"@types/ws": "^8.5.13",
|
|
"@typescript-eslint/eslint-plugin": "^8.19.0",
|
|
"@typescript-eslint/parser": "^8.19.0",
|
|
"@vitejs/plugin-react": "^4.3.4",
|
|
"autoprefixer": "^10.4.20",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"electron": "^33.3.0",
|
|
"electron-builder": "^25.1.8",
|
|
"eslint": "^9.17.0",
|
|
"eslint-plugin-react-hooks": "^5.1.0",
|
|
"eslint-plugin-react-refresh": "^0.4.16",
|
|
"framer-motion": "^11.15.0",
|
|
"jsdom": "^25.0.1",
|
|
"lucide-react": "^0.469.0",
|
|
"postcss": "^8.4.49",
|
|
"react": "^19.0.0",
|
|
"react-dom": "^19.0.0",
|
|
"react-router-dom": "^7.1.1",
|
|
"sonner": "^1.7.1",
|
|
"tailwind-merge": "^2.6.0",
|
|
"tailwindcss": "^3.4.17",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"typescript": "^5.7.2",
|
|
"vite": "^6.0.6",
|
|
"vite-plugin-electron": "^0.29.0",
|
|
"vite-plugin-electron-renderer": "^0.14.6",
|
|
"vitest": "^2.1.8",
|
|
"zustand": "^5.0.2"
|
|
}
|
|
}
|