# Psyche Video Conferencing

Video conferencing integration library for the Psyche AI Virtual Assistant
Platform.

Part of the Oshun Platform.

## Overview

This library provides unified access to video conferencing platforms, enabling
Psyche AI assistants to participate in video meetings with full media support.

## Supported Platforms

- **Zoom** - Full API integration with meeting creation, joining, media
  streaming
- **Google Meet** - Browser-based and API integration
- **Microsoft Teams** - Bot framework and Graph API integration
- **Webex** - API integration with meeting controls

## Features

### Gateway Module

- Platform-agnostic meeting interface
- Session management with reconnection
- Recording controls
- Participant management
- Meeting scheduling and analytics

### Meeting Intelligence

- Real-time topic analysis and summarization
- Sentiment tracking per participant
- Key moment detection
- Follow-up tracking and action items
- Conversation flow analysis

### Multi-Participant Support

- Active speaker detection
- Audio source separation
- Gallery view tracking
- Participant thumbnail extraction
- Quality monitoring per participant

### Perception

- Face analysis and emotion tracking
- Body language detection
- Screen content understanding
- Multi-participant behavior analysis

### Optimization

- Large meeting scaling (100+ participants)
- Tiered processing based on importance
- Adaptive sampling for performance
- Resource allocation management

### Virtual Devices

- Virtual camera for avatar rendering
- Virtual audio device for TTS output
- Platform-specific device integration

## Project Structure

```
src/video_conferencing/
├── __init__.py           # Package exports
├── gateway/              # Platform-agnostic interface
│   ├── interface.py      # Gateway protocol
│   ├── session.py        # Session management
│   ├── recording.py      # Recording controls
│   ├── participants.py   # Participant management
│   ├── scheduling.py     # Meeting scheduling
│   └── analytics.py      # Meeting analytics
├── zoom/                 # Zoom integration
├── meet/                 # Google Meet integration
├── teams/                # Microsoft Teams integration
├── webex/                # Webex integration
├── webrtc/               # WebRTC implementation
├── meeting_intelligence/ # AI-powered meeting analysis
├── multiparticipant/     # Multi-participant handling
├── perception/           # Visual/audio perception
├── optimization/         # Performance optimization
├── virtual_devices/      # Virtual camera/audio
└── accessibility/        # Captioning and A11y
```

## Development

### Using Nx

```bash
# Install dependencies
nx install psyche-video-conferencing

# Build
nx build psyche-video-conferencing

# Linting
nx lint psyche-video-conferencing
nx lint-fix psyche-video-conferencing

# Formatting
nx format psyche-video-conferencing
nx format-check psyche-video-conferencing

# Type checking
nx typecheck psyche-video-conferencing

# Testing
nx test psyche-video-conferencing
nx test-cov psyche-video-conferencing
```

### Direct Commands

```bash
cd apps/psyche/video-conferencing

# Install dependencies
poetry install

# Run tests
poetry run pytest

# Lint
poetry run ruff check src tests
```

## Configuration

### Environment Variables

| Variable               | Description                      |
| ---------------------- | -------------------------------- |
| `ZOOM_CLIENT_ID`       | Zoom OAuth client ID             |
| `ZOOM_CLIENT_SECRET`   | Zoom OAuth client secret         |
| `ZOOM_WEBHOOK_SECRET`  | Zoom webhook verification secret |
| `GOOGLE_CLIENT_ID`     | Google OAuth client ID           |
| `GOOGLE_CLIENT_SECRET` | Google OAuth client secret       |
| `TEAMS_CLIENT_ID`      | Teams app client ID              |
| `TEAMS_CLIENT_SECRET`  | Teams app client secret          |
| `WEBEX_CLIENT_ID`      | Webex OAuth client ID            |
| `WEBEX_CLIENT_SECRET`  | Webex OAuth client secret        |

## Usage Example

```python
from video_conferencing import gateway, zoom

# Create a meeting session
session = await zoom.ZoomAdapter.join_meeting(
    meeting_id="123456789",
    password="password",
    display_name="Psyche Assistant",
)

# Enable virtual camera for avatar output
session.enable_virtual_camera()

# Start processing participants
async for event in session.participant_events():
    if event.type == "speaking":
        # Process speech from participant
        pass
```

## License

Proprietary - Oshun Platform
