-
Notifications
You must be signed in to change notification settings - Fork 211
Add AGENTS.md #961
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Add AGENTS.md #961
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,80 @@ | ||
| # LiveKit Flutter SDK | ||
|
|
||
| ## Commands | ||
|
|
||
| Supported platforms: Android, iOS, macOS, Windows, Linux, Web. | ||
|
|
||
| ```zsh | ||
| # Fetch dependencies | ||
| flutter pub get | ||
|
|
||
| # Analyze | ||
| flutter analyze | ||
|
|
||
| # Run tests | ||
| flutter test | ||
|
|
||
| # Format | ||
| dart format -l 120 lib test | ||
|
|
||
| # Generate protobufs (requires ../protocol/protobufs checkout) | ||
| make proto | ||
|
|
||
| # Build web E2EE worker | ||
| make e2ee | ||
| ``` | ||
|
|
||
| ## Architecture | ||
|
|
||
| ``` | ||
| lib/ | ||
| ├── livekit_client.dart # Public exports | ||
| ├── livekit_client_web.dart # Web-specific entry point | ||
| └── src/ | ||
| ├── core/ # Room, Engine, SignalClient, Transport | ||
| ├── participant/ # LocalParticipant, RemoteParticipant | ||
| ├── track/ # Local/Remote tracks, Web track adapters | ||
| ├── publication/ # TrackPublication types | ||
| ├── data_stream/ # Reliable/unreliable data channels | ||
| ├── e2ee/ # End-to-end encryption | ||
| ├── agent/ # AI agent integration (e.g., chat) | ||
| ├── managers/ # Audio/video device and media managers | ||
| ├── support/ # WebSocket, platform shims, utilities | ||
| ├── hardware/ # Device/permission helpers | ||
| ├── token_source/ # TokenSource implementations | ||
| ├── stats/ # RTC stats models | ||
| ├── proto/ # Generated protobufs | ||
| ├── widgets/ # Flutter UI widgets (video, controls) | ||
| └── utils/ # Shared helpers | ||
| ``` | ||
|
|
||
| Key components: | ||
|
|
||
| - `Room` - main entry point; manages connection state, participants, and tracks | ||
| - `Engine` - orchestrates signaling, transports, and media lifecycle | ||
| - `SignalClient` - WebSocket signaling with LiveKit server | ||
| - `Transport` - WebRTC peer connection wrapper | ||
| - `Participant` - local/remote participant state and publications | ||
| - `Track`/`TrackPublication` - media track abstractions | ||
|
|
||
| ## WebRTC | ||
|
|
||
| WebRTC provides the underlying media transport. The Flutter SDK wraps native WebRTC via | ||
| platform-specific implementations in `android/`, `ios/`, `macOS/`, `windows/`, `linux/`, `web/`, | ||
| and shared code in `shared_cpp/` and `shared_swift/`. Dart APIs in `core/` and `track/` shield | ||
| consumers from platform differences. | ||
|
|
||
| Key files: | ||
|
|
||
| - `lib/src/core/transport.dart` - peer connection wrapper and ICE/SDP handling | ||
| - `lib/src/core/signal_client.dart` - signaling protocol implementation | ||
| - `lib/src/track/` - track bindings and renderers (including `web/`) | ||
| - `lib/src/widgets/` - Flutter video rendering widgets | ||
|
Comment on lines
+60
to
+72
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Verify that the key files mentioned in the WebRTC section exist
files=(
"lib/src/core/transport.dart"
"lib/src/core/signal_client.dart"
"lib/src/track/"
"lib/src/widgets/"
)
echo "Checking referenced files:"
for file in "${files[@]}"; do
if [ -e "$file" ]; then
echo "✓ $file exists"
else
echo "✗ $file does not exist"
fi
done
# Also check for platform-specific directories mentioned
echo ""
echo "Checking platform directories:"
platform_dirs=(
"android/"
"ios/"
"macOS/"
"windows/"
"linux/"
"web/"
"shared_cpp/"
"shared_swift/"
)
for dir in "${platform_dirs[@]}"; do
if [ -d "$dir" ]; then
echo "✓ $dir exists"
else
echo "✗ $dir does not exist"
fi
doneRepository: livekit/client-sdk-flutter Length of output: 404 🏁 Script executed: #!/bin/bash
# Search for macOS-related directories (case-insensitive)
find . -maxdepth 1 -type d -iname "*mac*" | head -20Repository: livekit/client-sdk-flutter Length of output: 77 Correct The WebRTC section references the platform directory as 🤖 Prompt for AI Agents |
||
|
|
||
| ## Testing | ||
|
|
||
| - `test/core/` - unit tests for room, signaling, and core models | ||
| - `test/integration/` - integration tests (often require local `livekit-server --dev`) | ||
| - `test/agent/` - agent feature tests | ||
| - `test/token/` - token source tests | ||
| - `test/support/` and `test/utils/` - helpers and fixtures | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add language identifier to fenced code block.
The code block lacks a language identifier, which impacts accessibility and proper rendering in some markdown processors.
📝 Proposed fix
📝 Committable suggestion
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
29-29: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents