Major enhancements to voice assistant with conversation persistence and mobile app planning: - Add conversation management with multiple active conversations - Implement conversation persistence (save/load from disk) - Add conversation selector UI for switching between conversations - Enhance agent prompt with per-conversation tmux sessions - Add mobile app technical specification (React Native + Expo) - Improve UI with active processes view and agent stream - Add ACP (Agent Control Protocol) server implementation Mobile spec details: - React Native with Expo SDK 54+ - NativeWind v5 for styling - Share Zod schemas/types from server - Android in-call experience (InCallManager) - Direct WebSocket connection via Tailscale - Same audio quality as web prototype 🤖 Generated with [Claude Code](https://claude.com/claude-code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
60 lines
1.9 KiB
JSON
60 lines
1.9 KiB
JSON
{
|
|
"name": "@voice-dev/voice-assistant",
|
|
"version": "0.1.0",
|
|
"description": "Voice-controlled terminal assistant - single service implementation",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "NODE_ENV=development tsx watch --ignore '**/*.timestamp-*' src/server/index.ts",
|
|
"build:ui": "vite build",
|
|
"build:server": "tsc -p tsconfig.server.json",
|
|
"build": "npm run build:ui && npm run build:server",
|
|
"start": "NODE_ENV=production node dist/server/index.js",
|
|
"typecheck": "tsc --noEmit && tsc -p tsconfig.server.json --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:ui": "vitest --ui",
|
|
"test:e2e": "playwright test",
|
|
"test:e2e:ui": "playwright test --ui",
|
|
"test:e2e:mobile": "playwright test --project='Mobile Chrome'"
|
|
},
|
|
"dependencies": {
|
|
"@agentclientprotocol/sdk": "^0.4.9",
|
|
"@ai-sdk/openai": "^2.0.52",
|
|
"@deepgram/sdk": "^3.4.0",
|
|
"@modelcontextprotocol/sdk": "^1.20.1",
|
|
"@openrouter/ai-sdk-provider": "^1.2.0",
|
|
"@ricky0123/vad-web": "^0.0.28",
|
|
"ai": "^5.0.76",
|
|
"dotenv": "^17.2.3",
|
|
"express": "^4.18.2",
|
|
"express-basic-auth": "^1.2.1",
|
|
"lucide-react": "^0.546.0",
|
|
"openai": "^4.20.0",
|
|
"playwright": "^1.56.1",
|
|
"react-markdown": "^10.1.0",
|
|
"tiny-invariant": "^1.3.3",
|
|
"uuid": "^9.0.1",
|
|
"ws": "^8.14.2",
|
|
"zod": "^3.23.8"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.56.1",
|
|
"@types/express": "^4.17.20",
|
|
"@types/node": "^20.9.0",
|
|
"@types/react": "^18.2.37",
|
|
"@types/react-dom": "^18.2.15",
|
|
"@types/uuid": "^9.0.7",
|
|
"@types/ws": "^8.5.8",
|
|
"@vitejs/plugin-react": "^4.2.0",
|
|
"@vitest/ui": "^3.2.4",
|
|
"concurrently": "^8.2.2",
|
|
"react": "^18.2.0",
|
|
"react-dom": "^18.2.0",
|
|
"tsx": "^4.6.0",
|
|
"typescript": "^5.2.2",
|
|
"vite": "^7.1.10",
|
|
"vite-plugin-static-copy": "^3.1.4",
|
|
"vitest": "^3.2.4"
|
|
}
|
|
}
|