feat: enable C&C, compact mise tasks, update docs
- Cherry-pick C&C support (ntfy poller for commands, response handling) - Compact mise.toml with native dependency chaining - Update AGENTS.md with C&C documentation - Update README.md with display modes and C&C usage
This commit is contained in:
23
AGENTS.md
23
AGENTS.md
@@ -16,7 +16,7 @@ This project uses:
|
||||
mise run install
|
||||
|
||||
# Or equivalently:
|
||||
uv sync
|
||||
uv sync --all-extras # includes mic support
|
||||
```
|
||||
|
||||
### Available Commands
|
||||
@@ -29,16 +29,19 @@ mise run test-browser # Run e2e browser tests (requires playwright)
|
||||
mise run lint # Run ruff linter
|
||||
mise run lint-fix # Run ruff with auto-fix
|
||||
mise run format # Run ruff formatter
|
||||
mise run ci # Full CI pipeline (sync + test + coverage)
|
||||
mise run ci # Full CI pipeline (topics-init + lint + test-cov)
|
||||
```
|
||||
|
||||
### Runtime Commands
|
||||
|
||||
```bash
|
||||
mise run run # Run mainline (terminal)
|
||||
mise run run-websocket # Run with WebSocket display
|
||||
mise run run-poetry # Run with poetry feed
|
||||
mise run run-firehose # Run in firehose mode
|
||||
mise run run-websocket # Run with WebSocket display only
|
||||
mise run run-both # Run with both terminal and WebSocket
|
||||
mise run run-client # Run both + open browser
|
||||
mise run cmd # Run C&C command interface
|
||||
```
|
||||
|
||||
## Git Hooks
|
||||
@@ -116,13 +119,25 @@ The project uses pytest with strict marker enforcement. Test configuration is in
|
||||
|
||||
- **ntfy.py** and **mic.py** are standalone modules with zero internal dependencies
|
||||
- **eventbus.py** provides thread-safe event publishing for decoupled communication
|
||||
- **controller.py** coordinates ntfy/mic monitoring
|
||||
- **controller.py** coordinates ntfy/mic monitoring and event publishing
|
||||
- **effects/** - plugin architecture with performance monitoring
|
||||
- The render pipeline: fetch → render → effects → scroll → terminal output
|
||||
|
||||
### Display System
|
||||
|
||||
- **Display abstraction** (`engine/display.py`): swap display backends via the Display protocol
|
||||
- `TerminalDisplay` - ANSI terminal output
|
||||
- `WebSocketDisplay` - broadcasts to web clients via WebSocket
|
||||
- `MultiDisplay` - forwards to multiple displays simultaneously
|
||||
|
||||
- **WebSocket display** (`engine/websocket_display.py`): real-time frame broadcasting to web browsers
|
||||
- WebSocket server on port 8765
|
||||
- HTTP server on port 8766 (serves HTML client)
|
||||
- Client at `client/index.html` with ANSI color parsing and fullscreen support
|
||||
|
||||
### Command & Control
|
||||
|
||||
- C&C uses separate ntfy topics for commands and responses
|
||||
- `NTFY_CC_CMD_TOPIC` - commands from cmdline.py
|
||||
- `NTFY_CC_RESP_TOPIC` - responses back to cmdline.py
|
||||
- Effects controller handles `/effects` commands (list, on/off, intensity, reorder, stats)
|
||||
Reference in New Issue
Block a user