docs: update README, wiki overview, index, log; add roles/code-review/pydantic wiki pages
- README: remove autogen/crewai references, add v2 architecture diagram, code-review scenario, cross-LLM config examples, roadmap - wiki/overview: event-driven architecture, Pydantic v2, roadmap - wiki/index: add entities/roles, concepts/code-review, packages/pydantic - wiki/log: Phase 1 completion, code-review decision - New: entities/roles.md, concepts/code-review.md, packages/pydantic.md Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
105
README.md
105
README.md
@@ -9,9 +9,11 @@ git clone <repo-url> meeting-room
|
||||
cd meeting-room
|
||||
pip install -e .
|
||||
|
||||
# Optional backends
|
||||
pip install -e ".[autogen]"
|
||||
pip install -e ".[crewai]"
|
||||
# With dev dependencies (pytest, pytest-mock)
|
||||
pip install -e ".[dev]"
|
||||
|
||||
# With web server dependencies (Phase 2)
|
||||
pip install -e ".[web]"
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
@@ -20,32 +22,18 @@ pip install -e ".[crewai]"
|
||||
# Initialize workspace (creates .meeting-room/ in current directory)
|
||||
meeting-room init
|
||||
|
||||
# Create a scenario
|
||||
cat > .meeting-room/scenarios/my-problem.md << 'EOF'
|
||||
---
|
||||
name: "My Problem"
|
||||
participants:
|
||||
- moderator
|
||||
- skeptic
|
||||
- idea_generator
|
||||
- analyst
|
||||
max_rounds: 6
|
||||
---
|
||||
# Run a discussion with default scenario
|
||||
meeting-room -s example-saas.md
|
||||
|
||||
# Problem Title
|
||||
|
||||
Describe the problem in Markdown...
|
||||
EOF
|
||||
|
||||
# Run discussion
|
||||
cd .meeting-room
|
||||
meeting-room -s scenarios/my-problem.md
|
||||
|
||||
# Run and save result
|
||||
# Run and save result to sessions/
|
||||
meeting-room -s scenarios/my-problem.md --save
|
||||
|
||||
# Point agents at a project for file tools
|
||||
meeting-room -w /path/to/project -s scenarios/code-review.md
|
||||
# Cross-LLM code review — point agents at a project
|
||||
meeting-room -s code-review.md -w /path/to/project
|
||||
|
||||
# List available scenarios and roles
|
||||
meeting-room --list-scenarios
|
||||
meeting-room --list-roles
|
||||
```
|
||||
|
||||
## Workspace Structure
|
||||
@@ -65,13 +53,41 @@ meeting-room -w /path/to/project -s scenarios/code-review.md
|
||||
meeting-room init [path] # Create .meeting-room workspace
|
||||
meeting-room -s scenarios/my.md # Run discussion
|
||||
meeting-room -s scenarios/my.md --save # Run and save result
|
||||
meeting-room -b autogen -s scenarios/my.md # Use AutoGen backend
|
||||
meeting-room -b crewai -s scenarios/my.md # Use CrewAI backend
|
||||
meeting-room -s code-review.md -w /path # Code review on a project
|
||||
meeting-room --list-scenarios # Show available scenarios
|
||||
meeting-room --list-roles # Show roles and model bindings
|
||||
meeting-room -c /path/to/config.yaml -s ... # Custom config file
|
||||
meeting-room -w /path/to/project -s ... # Set workdir for file tools
|
||||
```
|
||||
|
||||
## Built-in Scenarios
|
||||
|
||||
| Scenario | Description |
|
||||
|----------|-------------|
|
||||
| `example-saas.md` | General discussion: SaaS architecture with moderator/skeptic/idea_generator/analyst |
|
||||
| `code-review.md` | Cross-LLM code review with defender/attacker/security/moderator |
|
||||
|
||||
## Architecture (v2)
|
||||
|
||||
```
|
||||
┌──────────┐ events ┌───────────────┐
|
||||
│ CLI │◄────────────│ DiscussionEngine │
|
||||
│ (ANSI) │ │ (event-driven) │
|
||||
└──────────┘ └───────┬───────┘
|
||||
│
|
||||
┌────────────┼────────────┐
|
||||
▼ ▼ ▼
|
||||
┌──────────┐ ┌──────────┐ ┌──────────┐
|
||||
│ APIClient│ │ToolRegistry│ │EventEmitter│
|
||||
└──────────┘ └──────────┘ └──────────┘
|
||||
```
|
||||
|
||||
- **DiscussionEngine** — orchestrates round-robin discussion, emits events (no print calls)
|
||||
- **APIClient** — class-based, multi-provider (OpenAI-compatible APIs)
|
||||
- **ToolRegistry** — class-based, pure Python (Windows compatible)
|
||||
- **EventEmitter** — synchronous pub/sub bus (Phase 2: AsyncEventBridge for WebSocket)
|
||||
- **Pydantic v2 models** — typed config, messages, sessions
|
||||
|
||||
## Configuration
|
||||
|
||||
### Config Search Order
|
||||
@@ -88,6 +104,7 @@ export MEETING_ROOM_ROUTERAI_API_KEY="sk-..."
|
||||
export MEETING_ROOM_ROUTERAI_BASE_URL="https://routerai.ru/api/v1"
|
||||
export MEETING_ROOM_OPENAI_API_KEY="sk-..."
|
||||
export MEETING_ROOM_ANTHROPIC_API_KEY="sk-ant-..."
|
||||
export MEETING_ROOM_DEEPSEEK_API_KEY="sk-..."
|
||||
```
|
||||
|
||||
Or use `${ENV_VAR}` placeholders in config.yaml.
|
||||
@@ -98,12 +115,23 @@ Each role binds to a provider + model + tool set:
|
||||
|
||||
```yaml
|
||||
roles:
|
||||
analyst:
|
||||
name: "Analyst"
|
||||
provider: anthropic
|
||||
model: "claude-sonnet-4"
|
||||
temperature: 0.5
|
||||
tools: "all"
|
||||
defender:
|
||||
name: "Defender"
|
||||
provider: anthropic # one LLM defends
|
||||
model: "claude-sonnet-4-6"
|
||||
tools: "readonly"
|
||||
|
||||
attacker:
|
||||
name: "Attacker"
|
||||
provider: openai # another LLM attacks
|
||||
model: "gpt-4o"
|
||||
tools: "readonly"
|
||||
|
||||
security:
|
||||
name: "Security"
|
||||
provider: deepseek # third LLM checks security
|
||||
model: "deepseek-chat"
|
||||
tools: "web"
|
||||
```
|
||||
|
||||
### Tool Sets
|
||||
@@ -145,6 +173,13 @@ Full Markdown description...
|
||||
2. How to scale?
|
||||
```
|
||||
|
||||
## Roadmap
|
||||
|
||||
- [x] **Phase 1: Core refactor** — Pydantic models, EventEmitter, class-based APIClient/ToolRegistry, DiscussionEngine, backward-compatible CLI
|
||||
- [ ] **Phase 2: Web server** — FastAPI + WebSocket + SSE, REST API, minimal HTML UI, `meeting-room serve`
|
||||
- [ ] **Phase 3: Interactivity** — Boss role, CSO injection, Setup Wizard, BrainstormEngine
|
||||
- [ ] **Phase 4: Artifacts** — LLM extraction → .tasks/.wiki, SessionArchive
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
MIT
|
||||
Reference in New Issue
Block a user