Add explicit lightningcss dependency for Vercel build

This commit is contained in:
Mohamed Boudra
2025-10-13 14:18:15 +02:00
parent fee0f4fd28
commit cd3413982a
6 changed files with 2228 additions and 1827 deletions

1
.gitignore vendored
View File

@@ -42,3 +42,4 @@ coverage/
# Misc # Misc
*.pem *.pem
.vercel

188
README.md Normal file
View File

@@ -0,0 +1,188 @@
# Realtime Voice Monorepo
OpenAI Realtime API voice assistant with tmux MCP integration.
## Packages
- **`@realtime-voice/mcp-server`** - MCP server for tmux control
- Located in `packages/mcp-server/`
- Provides tmux session management via MCP protocol
- Can run as HTTP server or stdio mode
- **`@realtime-voice/web`** - Next.js web interface
- Located in `packages/web/`
- Voice interaction with OpenAI Realtime API
- Password authentication
- Agent activity transparency (debug panel)
- Real-time status display
## Quick Start
```bash
# Install all dependencies
npm install
# Run web app in dev mode
npm run dev
# Run MCP server in dev mode
npm run dev:mcp
# Build everything
npm run build
# Type check all packages
npm run typecheck
```
## Development
### Web App
```bash
# Development
npm run dev # Start Next.js dev server (port 3000)
# Production
npm run build:web # Build for production
npm run start # Start production server
```
### MCP Server
```bash
# Development
npm run dev:mcp # Start with HTTP server and dev-password
# Production
npm run build:mcp # Build TypeScript
npm run start:mcp # Run built server
```
## Environment Variables
Create `.env.local` in `packages/web/`:
```bash
OPENAI_API_KEY=sk-your-api-key-here
AUTH_PASSWORD=your-secure-password-here
MCP_SERVER_URL=https://your-mcp-server-url
```
See `packages/web/.env.local.example` for template.
## Project Structure
```
realtime-voice-monorepo/
├── packages/
│ ├── mcp-server/ # MCP Server Package
│ │ ├── src/
│ │ │ ├── index.ts # CLI entry point
│ │ │ ├── http-server.ts # HTTP server mode
│ │ │ └── tmux.ts # Tmux operations
│ │ ├── build/ # Compiled output
│ │ ├── package.json
│ │ └── tsconfig.json
│ │
│ └── web/ # Web App Package
│ ├── app/
│ │ ├── api/ # API routes
│ │ ├── components/ # React components
│ │ ├── hooks/ # Custom hooks
│ │ ├── types/ # TypeScript types
│ │ └── voice-client.tsx # Main voice UI
│ ├── package.json
│ └── next.config.js
├── package.json # Root workspace config
├── tsconfig.base.json # Shared TypeScript config
└── README.md # This file
```
## Features
### Web App
- Real-time voice interaction with OpenAI
- WebRTC-based low-latency audio streaming
- Live audio level visualization
- Mute/unmute controls
- Password authentication
- Agent activity transparency (debug log panel)
- Real-time agent status display
- Tool call visibility
### MCP Server
- Full tmux session control
- List sessions, windows, and panes
- Send keystrokes and text
- Create and kill sessions/windows/panes
- Capture pane output
- HTTP server mode with password auth
- stdio mode for Claude Desktop integration
## Deployment
### Web App (Vercel)
The web app is configured for Vercel deployment:
```bash
# Deploy from monorepo
cd ~/dev/realtime-voice-monorepo
vercel --prod
# Set environment variables
vercel env add OPENAI_API_KEY production
vercel env add AUTH_PASSWORD production
vercel env add MCP_SERVER_URL production
```
### MCP Server
The MCP server typically runs locally:
```bash
# Build and run
npm run build:mcp
npm run start:mcp -- --http --password your-password
```
## Scripts Reference
### Root Level
| Script | Description |
|--------|-------------|
| `npm run dev` | Start web app dev server |
| `npm run dev:mcp` | Start MCP server dev server |
| `npm run build` | Build all packages |
| `npm run build:mcp` | Build MCP server only |
| `npm run build:web` | Build web app only |
| `npm run typecheck` | Type check all packages |
| `npm run start` | Start web app production server |
| `npm run start:mcp` | Start MCP server production |
### Package Level
Run commands in specific packages:
```bash
# Run command in web package
npm run <script> --workspace=web
# Run command in mcp-server package
npm run <script> --workspace=mcp-server
```
## Tech Stack
- **Monorepo**: npm workspaces
- **Web**: Next.js 15, React 19, TypeScript, Tailwind CSS
- **MCP Server**: TypeScript, Express, MCP SDK
- **Voice**: OpenAI Realtime API, WebRTC
- **Build**: TypeScript compiler, Next.js build
## License
MIT

2030
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -23,6 +23,7 @@
"@types/react": "^19.2.2", "@types/react": "^19.2.2",
"@types/react-dom": "^19.2.1", "@types/react-dom": "^19.2.1",
"autoprefixer": "^10.4.21", "autoprefixer": "^10.4.21",
"lightningcss": "^1.29.5",
"next": "^15.5.4", "next": "^15.5.4",
"openai-realtime-api": "^1.0.8", "openai-realtime-api": "^1.0.8",
"postcss": "^8.5.6", "postcss": "^8.5.6",

8
vercel.json Normal file
View File

@@ -0,0 +1,8 @@
{
"$schema": "https://openapi.vercel.sh/vercel.json",
"buildCommand": "cd packages/web && npm run build",
"outputDirectory": "packages/web/.next",
"installCommand": "npm install",
"framework": null,
"devCommand": "cd packages/web && npm run dev"
}