openclaw-nerve/package.json

109 lines
3.4 KiB
JSON

{
"name": "openclaw-nerve",
"version": "1.5.2",
"description": "Web interface for OpenClaw — chat, voice input, TTS, and agent monitoring in the browser",
"license": "MIT",
"engines": {
"node": ">=22.0.0"
},
"repository": {
"type": "git",
"url": "https://github.com/daggerhashimoto/openclaw-nerve.git"
},
"homepage": "https://github.com/daggerhashimoto/openclaw-nerve",
"keywords": [
"openclaw",
"nerve",
"chat",
"terminal",
"ai",
"agent",
"tts",
"voice"
],
"type": "module",
"scripts": {
"dev": "vite",
"dev:server": "tsx watch server/index.ts",
"build": "tsc -b && vite build && npm run build:server",
"build:server": "tsc -p config/tsconfig.server.json --outDir server-dist --noEmit false --declaration false && tsc -p config/tsconfig.bin.json",
"update": "node bin-dist/bin/nerve-update.js",
"lint": "eslint .",
"preview": "vite preview",
"start": "node server-dist/index.js",
"start:server": "tsx server/index.ts",
"prod": "npm run build && node server-dist/index.js",
"setup": "tsx scripts/setup.ts",
"test": "vitest",
"test:coverage": "vitest --coverage",
"postinstall": "node -e \"try{require('fs').accessSync('.env')}catch{console.log('\\n Run \\x1b[33mnpm run setup\\x1b[0m to configure Nerve.\\n')}\""
},
"dependencies": {
"@codemirror/commands": "^6.10.2",
"@codemirror/lang-javascript": "^6.2.4",
"@codemirror/lang-json": "^6.0.2",
"@codemirror/lang-markdown": "^6.5.0",
"@codemirror/lang-python": "^6.2.1",
"@codemirror/lang-yaml": "^6.1.2",
"@codemirror/language": "^6.12.1",
"@codemirror/legacy-modes": "^6.5.2",
"@codemirror/search": "^6.6.0",
"@codemirror/state": "^6.5.4",
"@codemirror/view": "^6.39.14",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@fugood/whisper.node": "^1.0.16",
"@hono/node-server": "^1.19.9",
"@hono/zod-validator": "^0.7.6",
"@tailwindcss/vite": "^4.1.18",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"codemirror": "^6.0.2",
"diff-sequences": "^29.6.3",
"dompurify": "^3.3.1",
"dotenv": "^17.2.4",
"highlight.js": "^11.11.1",
"hono": "^4.11.7",
"json5": "^2.2.3",
"lightweight-charts": "^5.1.0",
"lucide-react": "^0.563.0",
"node-pty": "^1.1.0",
"radix-ui": "^1.4.3",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react-markdown": "^10.1.0",
"recharts": "^3.7.0",
"remark-gfm": "^4.0.1",
"tailwind-merge": "^3.4.0",
"tailwindcss": "^4.1.18",
"ws": "^8.19.0",
"zod": "^4.3.6"
},
"devDependencies": {
"@eslint/js": "^9.39.1",
"@inquirer/prompts": "^8.2.0",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/dompurify": "^3.0.5",
"@types/node": "^24.10.1",
"@types/react": "^19.2.5",
"@types/react-dom": "^19.2.3",
"@types/ws": "^8.18.1",
"@vitejs/plugin-react": "^5.1.1",
"@vitest/coverage-v8": "^4.0.18",
"eslint": "^9.39.1",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.24",
"globals": "^16.5.0",
"jsdom": "^28.0.0",
"shadcn": "^3.8.2",
"tsx": "^4.21.0",
"tw-animate-css": "^1.4.0",
"typescript": "~5.9.3",
"typescript-eslint": "^8.46.4",
"vite": "^7.2.4",
"vitest": "^4.0.18"
}
}