Files
syndarix/docs/BACKLOG.md
Felipe Cardoso 2310c8cdfd feat: Add MCP server stubs, development docs, and Docker updates
- Add MCP server skeleton implementations for all 7 planned servers
  (llm-gateway, knowledge-base, git, issues, filesystem, code-analysis, cicd)
- Add comprehensive DEVELOPMENT.md with setup and usage instructions
- Add BACKLOG.md with detailed phase planning
- Update docker-compose.dev.yml with Redis and Celery workers
- Update CLAUDE.md with Syndarix-specific context

Addresses issues #16, #20, #21

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 02:13:16 +01:00

1657 lines
40 KiB
Markdown

# Syndarix Backlog
**Generated:** 2025-12-30
**Status:** Ready for Gitea import
This document contains detailed issues for Phase 0-1 implementation. Each issue is structured for parallel agent work.
---
## Labels
Create these labels in Gitea first:
| Label | Color | Description |
|-------|-------|-------------|
| `phase-0` | #0052CC | Phase 0: Foundation |
| `phase-1` | #00875A | Phase 1: Core Platform |
| `backend` | #5319E7 | Backend work |
| `frontend` | #F9A825 | Frontend work |
| `devops` | #212121 | DevOps/Infrastructure work |
| `database` | #006B75 | Database/migrations |
| `design` | #D4388C | UI/UX design work |
| `blocked` | #B60205 | Blocked by dependency |
| `epic` | #7057FF | Epic/parent issue |
---
## Phase 0: Foundation
### EPIC: Phase 0 - Foundation Infrastructure
**Issue #E01: [EPIC] Phase 0 - Foundation Infrastructure**
```
Title: [EPIC] Phase 0 - Foundation Infrastructure
Labels: epic, phase-0, devops
## Overview
Complete the remaining foundation infrastructure setup for Syndarix development.
## Child Issues
- [ ] #01 Configure CI/CD pipelines
- [ ] #02 Set up development environment documentation
- [ ] #03 Configure Redis for cache + pub/sub
- [ ] #04 Set up Celery worker infrastructure
- [ ] #05 Configure pgvector extension
- [ ] #06 Create MCP server directory structure
- [ ] #07 Set up Docker Compose for local development
## Success Criteria
- All developers can run the full stack locally
- CI/CD runs tests on every PR
- All infrastructure components healthy
```
---
### Issue #01: Configure CI/CD pipelines
```
Title: Configure CI/CD pipelines for Syndarix
Labels: phase-0, devops
## Description
Set up Gitea Actions CI/CD pipeline for the Syndarix repository.
## Requirements
### Backend Pipeline
- Run `uv run ruff check app` (linting)
- Run `uv run mypy app` (type checking)
- Run `IS_TEST=True uv run pytest --cov=app` (tests with coverage)
- Coverage threshold: 90% for new code
### Frontend Pipeline
- Run `npm run lint` (ESLint)
- Run `npm run type-check` (TypeScript)
- Run `npm test` (Jest unit tests)
### Pipeline Structure
1. `lint` job (fast feedback)
2. `test` job (depends on lint)
3. `build` job (depends on test)
4. `deploy` job (only on main, depends on build)
## Acceptance Criteria
- [ ] `.gitea/workflows/ci.yaml` created
- [ ] Backend linting, typing, and tests pass
- [ ] Frontend linting, typing, and tests pass
- [ ] Coverage reports generated
- [ ] Pipeline fails on any check failure
- [ ] Documentation updated
## Technical Notes
- Use `uv` for Python dependency management
- Reference: ADR-003 (Celery/Redis architecture)
- Celery workers not needed for CI tests
## Assignable To
devops-engineer agent
```
---
### Issue #02: Development environment documentation
```
Title: Create development environment setup documentation
Labels: phase-0, devops
## Description
Write comprehensive documentation for setting up the Syndarix development environment.
## Requirements
### Documentation Contents
1. Prerequisites (Python 3.12+, Node 20+, Docker, uv)
2. Repository cloning and setup
3. Environment variables configuration
4. Database setup (PostgreSQL with pgvector)
5. Redis setup
6. Running the backend (`uv run uvicorn`)
7. Running the frontend (`npm run dev`)
8. Running with Docker Compose
9. Running tests
10. Common troubleshooting
### File Structure
- `docs/DEVELOPMENT.md` - Main setup guide
- `docs/TROUBLESHOOTING.md` - Common issues and solutions
## Acceptance Criteria
- [ ] Fresh developer can set up environment following docs only
- [ ] All commands tested and working
- [ ] Environment variable templates provided
- [ ] Troubleshooting section covers common issues
## Technical Notes
- Reference existing README.md but expand significantly
- Include both local and Docker-based setup options
## Assignable To
devops-engineer agent
```
---
### Issue #03: Configure Redis for cache and pub/sub
```
Title: Configure Redis for cache and pub/sub
Labels: phase-0, devops, backend
## Description
Set up Redis configuration for caching and real-time event pub/sub.
## Requirements
### Redis Configuration
- Connection pooling
- Health check endpoint
- Separate logical databases or key prefixes for:
- Cache (sessions, API responses)
- Pub/Sub (real-time events)
- Celery broker
### Backend Integration
- Create `app/core/redis.py` with Redis client setup
- Add health check for Redis in `/health` endpoint
- Configure connection string from environment
### Docker Compose
- Add Redis service with health check
- Volume for persistence
- Expose port for local development
## Acceptance Criteria
- [ ] Redis service in Docker Compose
- [ ] Health check endpoint includes Redis status
- [ ] Connection pooling configured
- [ ] Cache operations working (set/get/expire)
- [ ] Pub/sub working (publish/subscribe)
- [ ] Tests for Redis operations
## Technical Notes
- Reference: ADR-003 (Redis for cache/pub-sub)
- Reference: SPIKE-003 (Real-time communication)
- Use `redis.asyncio` for async support
## Assignable To
backend-engineer agent (primary)
devops-engineer agent (Docker Compose)
```
---
### Issue #04: Set up Celery worker infrastructure
```
Title: Set up Celery worker infrastructure
Labels: phase-0, devops, backend
## Description
Configure Celery for background task processing with Redis as broker.
## Requirements
### Queue Configuration
Per ADR-003:
| Queue | Workers | Purpose |
|-------|---------|---------|
| agent | 4 | High-priority agent tasks |
| git | 2 | Git operations |
| sync | 2 | Issue synchronization |
| default | 2 | General tasks |
### Backend Integration
- Create `app/core/celery_app.py` with Celery configuration
- Create `app/tasks/` directory structure
- Create sample task for testing
### Docker Compose
- Add Celery worker service per queue
- Add Celery beat for scheduled tasks (optional for Phase 0)
- Health checks for workers
### Monitoring
- Flower for Celery monitoring (optional for Phase 0)
## Acceptance Criteria
- [ ] Celery app configured with Redis broker
- [ ] All 4 queues defined and routable
- [ ] Worker services in Docker Compose
- [ ] Sample task executes successfully
- [ ] Workers restart on failure
- [ ] Health checks pass
## Technical Notes
- Reference: ADR-003 (Celery task queue architecture)
- Reference: SPIKE-002 (Agent orchestration patterns)
- Use `celery[redis]` package
## Assignable To
backend-engineer agent (Celery config)
devops-engineer agent (Docker Compose)
```
---
### Issue #05: Configure pgvector extension
```
Title: Configure pgvector extension for PostgreSQL
Labels: phase-0, devops, database
## Description
Set up pgvector extension for vector similarity search (RAG knowledge base).
## Requirements
### Database Configuration
- Use `pgvector/pgvector:pg17` Docker image
- Enable pgvector extension via migration
- Create vector index configuration utilities
### Migration
- Create migration to enable pgvector extension
- Document vector dimension choices (1536 for OpenAI, 1024 for Cohere)
### Testing
- Verify extension loads correctly
- Test basic vector operations
## Acceptance Criteria
- [ ] Docker Compose uses pgvector image
- [ ] Migration enables pgvector extension
- [ ] Vector operations working (cosine similarity)
- [ ] Health check includes pgvector status
- [ ] Documentation for vector dimension choices
## Technical Notes
- Reference: ADR-007 (pgvector for RAG)
- Reference: SPIKE-006 (pgvector RAG research)
- Default to 1536 dimensions (OpenAI embedding size)
## Assignable To
devops-engineer agent (Docker)
backend-engineer agent (migration)
```
---
### Issue #06: Create MCP server directory structure
```
Title: Create MCP server directory structure
Labels: phase-0, backend
## Description
Set up the directory structure and base classes for MCP (Model Context Protocol) servers.
## Requirements
### Directory Structure
```
mcp/
├── __init__.py
├── base/
│ ├── __init__.py
│ ├── server.py # Base MCP server class
│ └── types.py # Common MCP types
├── llm_gateway/ # Phase 2
├── knowledge_base/ # Phase 2
├── git_ops/ # Phase 2
├── issues/ # Phase 2
└── README.md # MCP development guide
```
### Base Server Class
- FastMCP-based server template
- Standard tool registration pattern
- Project scoping utilities
- Error handling patterns
### Documentation
- How to create a new MCP server
- Tool naming conventions
- Project scoping requirements
## Acceptance Criteria
- [ ] Directory structure created
- [ ] Base server class with project scoping
- [ ] Type definitions for common patterns
- [ ] README with development guide
- [ ] Example tool registration
## Technical Notes
- Reference: ADR-004 (MCP-first architecture)
- Reference: ADR-005 (LiteLLM integration via MCP)
- All tools must accept `project_id` for scoping
## Assignable To
backend-engineer agent
```
---
### Issue #07: Set up Docker Compose for local development
```
Title: Set up complete Docker Compose for local development
Labels: phase-0, devops
## Description
Create comprehensive Docker Compose configuration for running the full Syndarix stack locally.
## Requirements
### Services
1. `db` - PostgreSQL with pgvector
2. `redis` - Cache and message broker
3. `backend` - FastAPI application
4. `frontend` - Next.js application
5. `celery-agent` - Celery worker (agent queue)
6. `celery-git` - Celery worker (git queue)
7. `celery-sync` - Celery worker (sync queue)
8. `celery-default` - Celery worker (default queue)
### Configuration
- Health checks for all services
- Proper dependency ordering (`depends_on` with conditions)
- Volume mounts for development (hot reload)
- Environment variable templates
- Resource limits (optional for dev)
### Files
- `docker-compose.yaml` - Main compose file
- `docker-compose.override.yaml` - Development overrides
- `.env.example` - Environment template
## Acceptance Criteria
- [ ] All services start with `docker compose up`
- [ ] Health checks pass for all services
- [ ] Hot reload works for backend and frontend
- [ ] Database data persists across restarts
- [ ] All services can communicate
- [ ] Documented in DEVELOPMENT.md
## Technical Notes
- Reference: Issue #03 (Redis), #04 (Celery), #05 (pgvector)
- This issue depends on #03, #04, #05 completion
## Dependencies
- Blocked by: #03, #04, #05
## Assignable To
devops-engineer agent
```
---
## Phase 1: Core Platform
### EPIC: Phase 1 - Core Platform
**Issue #E02: [EPIC] Phase 1 - Core Platform**
```
Title: [EPIC] Phase 1 - Core Platform
Labels: epic, phase-1
## Overview
Build the basic project and agent management system without LLM integration.
## Child Issues
### Data Model (1.1)
- [ ] #08 Create Project entity and CRUD
- [ ] #09 Create AgentType entity and CRUD
- [ ] #10 Create AgentInstance entity and CRUD
- [ ] #11 Create Issue entity with external tracker fields
- [ ] #12 Create Sprint entity and CRUD
### API Layer (1.2)
- [ ] #13 Project management API endpoints
- [ ] #14 Agent type configuration API endpoints
- [ ] #15 Agent instance management API endpoints
- [ ] #16 Issue CRUD API endpoints
- [ ] #17 Sprint management API endpoints
### Real-time Infrastructure (1.3)
- [ ] #18 Implement EventBus with Redis Pub/Sub
- [ ] #19 Create SSE endpoint for project events
- [ ] #20 Client-side SSE handling
### Frontend Foundation (1.4)
- [ ] #21 [DESIGN] Project dashboard page
- [ ] #22 [DESIGN] Agent configuration UI
- [ ] #23 [DESIGN] Issue list and detail views
- [ ] #24 [DESIGN] Real-time activity feed component
- [ ] #25 Implement project dashboard
- [ ] #26 Implement agent configuration UI
- [ ] #27 Implement issue views
- [ ] #28 Implement activity feed
- [ ] #29 Navigation and layout
## Success Criteria
- CRUD operations for all core entities
- Real-time event streaming working
- Basic admin UI for configuration
```
---
### Issue #08: Create Project entity and CRUD
```
Title: Create Project entity and CRUD operations
Labels: phase-1, backend, database
## Description
Implement the Project entity and all CRUD operations.
## Requirements
### Entity Fields
```python
class Project(Base):
id: UUID
name: str
slug: str # URL-friendly identifier
description: Optional[str]
autonomy_level: AutonomyLevel # FULL_CONTROL, MILESTONE, AUTONOMOUS
status: ProjectStatus # ACTIVE, PAUSED, COMPLETED, ARCHIVED
settings: dict # JSON field for project-specific settings
owner_id: UUID # FK to User
# Relationships
sprints: List[Sprint]
agent_instances: List[AgentInstance]
issues: List[Issue]
# Timestamps
created_at: datetime
updated_at: datetime
```
### Enums
```python
class AutonomyLevel(str, Enum):
FULL_CONTROL = "full_control" # Approve every action
MILESTONE = "milestone" # Approve sprint boundaries
AUTONOMOUS = "autonomous" # Only major decisions
class ProjectStatus(str, Enum):
ACTIVE = "active"
PAUSED = "paused"
COMPLETED = "completed"
ARCHIVED = "archived"
```
### CRUD Operations
- `create(db, obj_in: ProjectCreate) -> Project`
- `get(db, id: UUID) -> Optional[Project]`
- `get_by_slug(db, slug: str) -> Optional[Project]`
- `get_multi_by_owner(db, owner_id: UUID) -> List[Project]`
- `update(db, db_obj: Project, obj_in: ProjectUpdate) -> Project`
- `delete(db, id: UUID) -> None`
### Tests
- Unit tests for all CRUD operations
- Test slug uniqueness
- Test owner relationship
- Test status transitions
## Acceptance Criteria
- [ ] Model defined with all fields
- [ ] Migration created and applied
- [ ] CRUD class with all methods
- [ ] Pydantic schemas (Create, Update, InDB, Response)
- [ ] Unit tests with >90% coverage
- [ ] Async patterns (SQLAlchemy 2.0 style)
## Technical Notes
- Reference: ADR-009 (Issue synchronization architecture)
- Follow existing CRUD patterns from PragmaStack
- Use custom exceptions from `app.core.exceptions`
## Assignable To
backend-engineer agent
```
---
### Issue #09: Create AgentType entity and CRUD
```
Title: Create AgentType entity and CRUD operations
Labels: phase-1, backend, database
## Description
Implement the AgentType entity representing agent templates.
## Requirements
### Entity Fields
```python
class AgentType(Base):
id: UUID
name: str # e.g., "Product Owner", "Backend Engineer"
slug: str # URL-friendly
description: str
expertise: List[str] # JSON array of expertise areas
personality_prompt: str # System prompt defining personality
# Model Configuration
primary_model: str # e.g., "claude-opus-4.5"
fallback_models: List[str] # JSON array, in order of preference
model_params: dict # temperature, max_tokens, etc.
# MCP Configuration
mcp_servers: List[str] # Which MCP servers this agent can use
tool_permissions: dict # Tool-level permissions
# Metadata
is_active: bool
created_at: datetime
updated_at: datetime
```
### CRUD Operations
- `create(db, obj_in: AgentTypeCreate) -> AgentType`
- `get(db, id: UUID) -> Optional[AgentType]`
- `get_by_slug(db, slug: str) -> Optional[AgentType]`
- `get_all_active(db) -> List[AgentType]`
- `update(db, db_obj: AgentType, obj_in: AgentTypeUpdate) -> AgentType`
- `delete(db, id: UUID) -> None` (soft delete via is_active)
### Seed Data
Create initial agent types:
- Product Owner
- Business Analyst
- Solutions Architect
- Backend Engineer
- Frontend Engineer
- QA Engineer
- DevOps Engineer
### Tests
- CRUD operations
- Model configuration validation
- MCP server permissions
## Acceptance Criteria
- [ ] Model defined with all fields
- [ ] Migration created
- [ ] CRUD operations implemented
- [ ] Pydantic schemas
- [ ] Seed data script
- [ ] Unit tests with >90% coverage
## Technical Notes
- Reference: ADR-002 (Agent orchestration)
- Reference: SPIKE-002 (Agent orchestration research)
- `model_params` should be validated against known LLM parameters
## Assignable To
backend-engineer agent
```
---
### Issue #10: Create AgentInstance entity and CRUD
```
Title: Create AgentInstance entity and CRUD operations
Labels: phase-1, backend, database
## Description
Implement AgentInstance entity representing spawned agents working on projects.
## Requirements
### Entity Fields
```python
class AgentInstance(Base):
id: UUID
agent_type_id: UUID # FK to AgentType
project_id: UUID # FK to Project
# Instance State
status: AgentStatus # IDLE, WORKING, WAITING, PAUSED, TERMINATED
current_task: Optional[str] # Description of current work
# Memory (per SPIKE-002)
short_term_memory: dict # Current context, clears between tasks
long_term_memory_ref: Optional[str] # Reference to RAG collection
# Session
session_id: Optional[str] # Current active session
last_activity_at: Optional[datetime]
# Metrics
tasks_completed: int
tokens_used: int
cost_incurred: float
# Timestamps
created_at: datetime
updated_at: datetime
terminated_at: Optional[datetime]
```
### Enums
```python
class AgentStatus(str, Enum):
IDLE = "idle"
WORKING = "working"
WAITING = "waiting" # Waiting for human approval
PAUSED = "paused"
TERMINATED = "terminated"
```
### CRUD Operations
- `create(db, obj_in) -> AgentInstance`
- `get(db, id: UUID) -> Optional[AgentInstance]`
- `get_by_project(db, project_id: UUID) -> List[AgentInstance]`
- `get_active_by_project(db, project_id: UUID) -> List[AgentInstance]`
- `update_status(db, id: UUID, status: AgentStatus) -> AgentInstance`
- `update_metrics(db, id: UUID, tokens: int, cost: float) -> AgentInstance`
- `terminate(db, id: UUID) -> AgentInstance`
### Tests
- CRUD operations
- Status transitions
- Metrics accumulation
- Project relationship
## Acceptance Criteria
- [ ] Model with all fields
- [ ] Migration created
- [ ] CRUD operations
- [ ] Status transition validation
- [ ] Pydantic schemas
- [ ] Unit tests with >90% coverage
## Technical Notes
- Reference: ADR-002 (Agent orchestration)
- Reference: SPIKE-007 (Inter-agent communication)
- short_term_memory should be cleared on task completion
## Assignable To
backend-engineer agent
```
---
### Issue #11: Create Issue entity with external tracker fields
```
Title: Create Issue entity with external tracker fields
Labels: phase-1, backend, database
## Description
Implement Issue entity that syncs with external trackers (Gitea, GitHub, GitLab).
## Requirements
### Entity Fields
```python
class Issue(Base):
id: UUID
project_id: UUID # FK to Project
# Local Fields
title: str
body: str
status: IssueStatus
priority: IssuePriority
labels: List[str] # JSON array
# Assignment
assigned_agent_id: Optional[UUID] # FK to AgentInstance
human_assignee: Optional[str]
# Sprint
sprint_id: Optional[UUID] # FK to Sprint
story_points: Optional[int]
# External Tracker Sync (per ADR-009)
external_tracker: Optional[str] # 'gitea', 'github', 'gitlab'
external_id: Optional[str] # Issue ID in external system
external_url: Optional[str] # Direct link
external_number: Optional[int] # Issue number
sync_status: SyncStatus
last_synced_at: Optional[datetime]
external_updated_at: Optional[datetime] # Conflict detection
# Timestamps
created_at: datetime
updated_at: datetime
closed_at: Optional[datetime]
```
### Enums
```python
class IssueStatus(str, Enum):
OPEN = "open"
IN_PROGRESS = "in_progress"
IN_REVIEW = "in_review"
BLOCKED = "blocked"
CLOSED = "closed"
class IssuePriority(str, Enum):
LOW = "low"
MEDIUM = "medium"
HIGH = "high"
CRITICAL = "critical"
class SyncStatus(str, Enum):
SYNCED = "synced"
PENDING = "pending"
CONFLICT = "conflict"
ERROR = "error"
```
### CRUD Operations
- Standard CRUD
- `get_by_external_id(db, tracker, external_id) -> Optional[Issue]`
- `get_pending_sync(db, project_id: UUID) -> List[Issue]`
- `get_by_sprint(db, sprint_id: UUID) -> List[Issue]`
- `get_assigned_to_agent(db, agent_id: UUID) -> List[Issue]`
### Tests
- CRUD operations
- External sync field handling
- Sprint assignment
- Agent assignment
## Acceptance Criteria
- [ ] Model with all fields
- [ ] Migration created
- [ ] CRUD operations
- [ ] Conflict detection logic
- [ ] Pydantic schemas
- [ ] Unit tests with >90% coverage
## Technical Notes
- Reference: ADR-009 (Issue synchronization)
- Reference: SPIKE-009 (Issue synchronization research)
- `external_updated_at` used for conflict detection
## Assignable To
backend-engineer agent
```
---
### Issue #12: Create Sprint entity and CRUD
```
Title: Create Sprint entity and CRUD operations
Labels: phase-1, backend, database
## Description
Implement Sprint entity for organizing work into time-boxed iterations.
## Requirements
### Entity Fields
```python
class Sprint(Base):
id: UUID
project_id: UUID # FK to Project
# Sprint Info
name: str
number: int # Sequential sprint number
goal: Optional[str]
# Dates
start_date: date
end_date: date
# Status
status: SprintStatus
# Velocity
planned_points: Optional[int]
completed_points: Optional[int]
# Relationships
issues: List[Issue]
# Timestamps
created_at: datetime
updated_at: datetime
```
### Enums
```python
class SprintStatus(str, Enum):
PLANNED = "planned"
ACTIVE = "active"
COMPLETED = "completed"
CANCELLED = "cancelled"
```
### CRUD Operations
- Standard CRUD
- `get_active(db, project_id: UUID) -> Optional[Sprint]`
- `get_by_project(db, project_id: UUID) -> List[Sprint]`
- `start_sprint(db, id: UUID) -> Sprint`
- `complete_sprint(db, id: UUID) -> Sprint`
- `get_next_number(db, project_id: UUID) -> int`
### Tests
- CRUD operations
- Status transitions
- Sprint overlap prevention
- Velocity calculation
## Acceptance Criteria
- [ ] Model with all fields
- [ ] Migration created
- [ ] CRUD operations
- [ ] Business logic (start, complete)
- [ ] Pydantic schemas
- [ ] Unit tests with >90% coverage
## Technical Notes
- Reference: ADR-012 (Client approval flow)
- Only one sprint can be ACTIVE per project
## Assignable To
backend-engineer agent
```
---
### Issue #13: Project management API endpoints
```
Title: Create Project management API endpoints
Labels: phase-1, backend
## Description
Implement REST API endpoints for Project CRUD operations.
## Requirements
### Endpoints
```
POST /api/v1/projects - Create project
GET /api/v1/projects - List user's projects
GET /api/v1/projects/{id} - Get project details
GET /api/v1/projects/slug/{slug} - Get project by slug
PATCH /api/v1/projects/{id} - Update project
DELETE /api/v1/projects/{id} - Archive project
POST /api/v1/projects/{id}/pause - Pause project
POST /api/v1/projects/{id}/resume - Resume project
```
### Authorization
- Users can only access their own projects
- Superusers can access all projects
- Owner check on all mutations
### Response Schema
```json
{
"id": "uuid",
"name": "string",
"slug": "string",
"description": "string",
"autonomy_level": "string",
"status": "string",
"settings": {},
"owner": {...},
"stats": {
"active_agents": 0,
"open_issues": 0,
"current_sprint": null
},
"created_at": "datetime",
"updated_at": "datetime"
}
```
### Tests
- All endpoints with valid data
- Authorization (own projects only)
- Validation errors
- 404 handling
- Status transitions
## Acceptance Criteria
- [ ] All endpoints implemented
- [ ] Authorization enforced
- [ ] Proper error responses
- [ ] Rate limiting configured
- [ ] Integration tests
- [ ] OpenAPI schema updated
## Dependencies
- Depends on: #08 (Project entity)
## Assignable To
backend-engineer agent
```
---
### Issue #14: Agent type configuration API endpoints
```
Title: Create Agent type configuration API endpoints
Labels: phase-1, backend
## Description
Implement REST API endpoints for AgentType management.
## Requirements
### Endpoints
```
POST /api/v1/agent-types - Create agent type (admin)
GET /api/v1/agent-types - List all active types
GET /api/v1/agent-types/{id} - Get agent type details
GET /api/v1/agent-types/slug/{slug} - Get by slug
PATCH /api/v1/agent-types/{id} - Update type (admin)
DELETE /api/v1/agent-types/{id} - Deactivate type (admin)
```
### Authorization
- Read endpoints: authenticated users
- Write endpoints: superusers only
### Response Schema
Include model configuration, MCP permissions, and instance counts.
### Tests
- All endpoints
- Admin-only enforcement
- Validation (model names, MCP servers)
## Acceptance Criteria
- [ ] All endpoints implemented
- [ ] Admin authorization enforced
- [ ] Model validation
- [ ] Integration tests
- [ ] OpenAPI schema updated
## Dependencies
- Depends on: #09 (AgentType entity)
## Assignable To
backend-engineer agent
```
---
### Issue #15: Agent instance management API endpoints
```
Title: Create Agent instance management API endpoints
Labels: phase-1, backend
## Description
Implement REST API endpoints for AgentInstance lifecycle management.
## Requirements
### Endpoints
```
POST /api/v1/projects/{pid}/agents - Spawn agent
GET /api/v1/projects/{pid}/agents - List project agents
GET /api/v1/projects/{pid}/agents/{id} - Get agent details
PATCH /api/v1/projects/{pid}/agents/{id} - Update agent
POST /api/v1/projects/{pid}/agents/{id}/pause - Pause agent
POST /api/v1/projects/{pid}/agents/{id}/resume - Resume agent
DELETE /api/v1/projects/{pid}/agents/{id} - Terminate agent
GET /api/v1/projects/{pid}/agents/{id}/metrics - Get agent metrics
```
### Authorization
- Project owner or superuser only
- Agents scoped to projects
### Response Schema
Include status, current task, metrics, and memory summary.
### Tests
- All endpoints
- Project ownership check
- Status transitions
- Metrics calculation
## Acceptance Criteria
- [ ] All endpoints implemented
- [ ] Project scoping enforced
- [ ] Status transitions validated
- [ ] Metrics endpoint accurate
- [ ] Integration tests
- [ ] OpenAPI schema updated
## Dependencies
- Depends on: #08 (Project), #10 (AgentInstance)
## Assignable To
backend-engineer agent
```
---
### Issue #16: Issue CRUD API endpoints
```
Title: Create Issue CRUD API endpoints
Labels: phase-1, backend
## Description
Implement REST API endpoints for Issue management.
## Requirements
### Endpoints
```
POST /api/v1/projects/{pid}/issues - Create issue
GET /api/v1/projects/{pid}/issues - List issues (filters)
GET /api/v1/projects/{pid}/issues/{id} - Get issue details
PATCH /api/v1/projects/{pid}/issues/{id} - Update issue
DELETE /api/v1/projects/{pid}/issues/{id} - Delete issue
POST /api/v1/projects/{pid}/issues/{id}/assign - Assign to agent
POST /api/v1/projects/{pid}/issues/{id}/sync - Trigger sync
```
### Query Filters
- status, priority, labels, sprint_id, assigned_agent_id
- search (title/body)
- sync_status
### Response Schema
Include external tracker info, assignment, sprint.
### Tests
- All endpoints
- Filtering and search
- Assignment validation
- Sync trigger
## Acceptance Criteria
- [ ] All endpoints implemented
- [ ] Filtering works correctly
- [ ] Assignment validation
- [ ] Sync trigger initiates background job
- [ ] Integration tests
- [ ] OpenAPI schema updated
## Dependencies
- Depends on: #08 (Project), #11 (Issue)
## Assignable To
backend-engineer agent
```
---
### Issue #17: Sprint management API endpoints
```
Title: Create Sprint management API endpoints
Labels: phase-1, backend
## Description
Implement REST API endpoints for Sprint management.
## Requirements
### Endpoints
```
POST /api/v1/projects/{pid}/sprints - Create sprint
GET /api/v1/projects/{pid}/sprints - List sprints
GET /api/v1/projects/{pid}/sprints/active - Get active sprint
GET /api/v1/projects/{pid}/sprints/{id} - Get sprint details
PATCH /api/v1/projects/{pid}/sprints/{id} - Update sprint
POST /api/v1/projects/{pid}/sprints/{id}/start - Start sprint
POST /api/v1/projects/{pid}/sprints/{id}/complete - Complete sprint
GET /api/v1/projects/{pid}/sprints/{id}/issues - Get sprint issues
POST /api/v1/projects/{pid}/sprints/{id}/issues - Add issue to sprint
```
### Business Rules
- Only one active sprint per project
- Cannot modify completed sprints
- Start date validation
### Response Schema
Include issues, velocity metrics, progress.
### Tests
- All endpoints
- Business rules enforcement
- Velocity calculation
## Acceptance Criteria
- [ ] All endpoints implemented
- [ ] Business rules enforced
- [ ] Velocity metrics accurate
- [ ] Integration tests
- [ ] OpenAPI schema updated
## Dependencies
- Depends on: #08 (Project), #11 (Issue), #12 (Sprint)
## Assignable To
backend-engineer agent
```
---
### Issue #18: Implement EventBus with Redis Pub/Sub
```
Title: Implement EventBus with Redis Pub/Sub
Labels: phase-1, backend
## Description
Create centralized event bus for real-time notifications using Redis Pub/Sub.
## Requirements
### EventBus Class
```python
class EventBus:
async def publish(self, channel: str, event: Event) -> None
async def subscribe(self, channels: List[str]) -> AsyncIterator[Event]
def get_project_channel(self, project_id: UUID) -> str
def get_agent_channel(self, agent_id: UUID) -> str
```
### Event Types
```python
class EventType(str, Enum):
# Agent Events
AGENT_SPAWNED = "agent.spawned"
AGENT_STATUS_CHANGED = "agent.status_changed"
AGENT_MESSAGE = "agent.message"
AGENT_TERMINATED = "agent.terminated"
# Issue Events
ISSUE_CREATED = "issue.created"
ISSUE_UPDATED = "issue.updated"
ISSUE_ASSIGNED = "issue.assigned"
ISSUE_CLOSED = "issue.closed"
# Sprint Events
SPRINT_STARTED = "sprint.started"
SPRINT_COMPLETED = "sprint.completed"
# Approval Events
APPROVAL_REQUESTED = "approval.requested"
APPROVAL_GRANTED = "approval.granted"
APPROVAL_DENIED = "approval.denied"
```
### Event Schema
```python
class Event(BaseModel):
id: str
type: EventType
timestamp: datetime
project_id: UUID
actor_id: Optional[UUID] # Agent or user who triggered
actor_type: str # 'agent', 'user', 'system'
payload: dict
```
### Tests
- Publish/subscribe cycle
- Multiple subscribers
- Channel isolation
- Event serialization
## Acceptance Criteria
- [ ] EventBus class implemented
- [ ] All event types defined
- [ ] Redis Pub/Sub working
- [ ] Project channel isolation
- [ ] Unit tests
- [ ] Integration tests with real Redis
## Technical Notes
- Reference: SPIKE-003 (Real-time communication)
- Reference: ADR-003 (Redis pub/sub)
- Use `redis.asyncio` for async support
## Assignable To
backend-engineer agent
```
---
### Issue #19: Create SSE endpoint for project events
```
Title: Create SSE endpoint for project events
Labels: phase-1, backend
## Description
Implement Server-Sent Events (SSE) endpoint for real-time project updates.
## Requirements
### Endpoint
```
GET /api/v1/projects/{pid}/events/stream
```
### Implementation
```python
@router.get("/projects/{project_id}/events/stream")
async def stream_events(
project_id: UUID,
current_user: User = Depends(get_current_user),
event_bus: EventBus = Depends(get_event_bus)
):
# Authorization check
# Subscribe to project channel
# Yield SSE formatted events
# Keepalive every 30s
```
### SSE Format
```
event: agent.status_changed
data: {"id": "...", "type": "agent.status_changed", ...}
: keepalive
event: issue.created
data: {...}
```
### Features
- Automatic reconnection support (Last-Event-ID)
- Keepalive every 30 seconds
- Connection cleanup on disconnect
- Rate limiting
### Tests
- Event streaming
- Keepalive mechanism
- Authorization
- Reconnection
## Acceptance Criteria
- [ ] SSE endpoint implemented
- [ ] Events stream correctly
- [ ] Keepalive working
- [ ] Authorization enforced
- [ ] Last-Event-ID support
- [ ] Integration tests
## Dependencies
- Depends on: #18 (EventBus)
## Assignable To
backend-engineer agent
```
---
### Issue #20: Client-side SSE handling
```
Title: Implement client-side SSE handling
Labels: phase-1, frontend
## Description
Create React hooks and utilities for consuming SSE events.
## Requirements
### Hook: useProjectEvents
```typescript
function useProjectEvents(projectId: string): {
events: ProjectEvent[];
isConnected: boolean;
error: Error | null;
reconnect: () => void;
}
```
### Features
- Automatic reconnection with exponential backoff
- Event parsing and type safety
- Connection state management
- Event buffer (last 100 events)
### Event Store
```typescript
interface EventStore {
events: ProjectEvent[];
addEvent: (event: ProjectEvent) => void;
clearEvents: () => void;
}
```
### Components
- ConnectionStatus indicator
- EventList component (for activity feed)
### Tests
- Hook behavior
- Reconnection logic
- Event parsing
- Store management
## Acceptance Criteria
- [ ] useProjectEvents hook implemented
- [ ] Auto-reconnection working
- [ ] Type-safe event handling
- [ ] Connection status UI
- [ ] Unit tests
## Dependencies
- Depends on: #19 (SSE endpoint)
## Assignable To
frontend-engineer agent
```
---
### Issue #21: [DESIGN] Project dashboard page
```
Title: [DESIGN] Project dashboard page
Labels: phase-1, frontend, design
## Description
Design interactive React prototype for the project dashboard page.
## Requirements
### Page Sections
1. **Header**: Project name, status badge, autonomy level, quick actions
2. **Agent Panel**: Active agents, their status, current tasks
3. **Sprint Overview**: Current sprint progress, burndown
4. **Recent Activity**: Real-time event feed
5. **Issue Summary**: Open/in-progress/blocked counts
### Interactions
- Click agent to view details
- Click sprint to view backlog
- Real-time activity updates
- Status change animations
### Responsive Design
- Desktop: Multi-column layout
- Tablet: Stacked sections
- Mobile: Single column, collapsible sections
## Deliverables
- `frontend/prototypes/project-dashboard/page.tsx`
- `frontend/prototypes/project-dashboard/README.md`
- Screenshots in issue comments
## Acceptance Criteria
- [ ] Prototype navigable in browser
- [ ] All sections represented
- [ ] Interactive elements work
- [ ] Responsive breakpoints
- [ ] Design decisions documented
- [ ] User approval obtained
## Assignable To
ui-designer agent
```
---
### Issue #22: [DESIGN] Agent configuration UI
```
Title: [DESIGN] Agent configuration UI
Labels: phase-1, frontend, design
## Description
Design interactive React prototype for agent type configuration.
## Requirements
### Views
1. **Agent Type List**: All available types with status
2. **Agent Type Detail**: Full configuration view
3. **Agent Type Editor**: Form for creating/editing
### Configuration Fields
- Name, description, expertise areas
- Model selection (primary + fallbacks)
- Model parameters (temperature, etc.)
- MCP server permissions
- Personality prompt
### Interactions
- Create new type
- Edit existing type
- Duplicate type
- Deactivate type
- Test configuration
## Deliverables
- `frontend/prototypes/agent-config/page.tsx`
- `frontend/prototypes/agent-config/README.md`
- Screenshots in issue comments
## Acceptance Criteria
- [ ] All views represented
- [ ] Form interactions work
- [ ] Model selection UI clear
- [ ] Permission editor intuitive
- [ ] User approval obtained
## Assignable To
ui-designer agent
```
---
### Issue #23: [DESIGN] Issue list and detail views
```
Title: [DESIGN] Issue list and detail views
Labels: phase-1, frontend, design
## Description
Design interactive React prototype for issue management views.
## Requirements
### Issue List View
- Filterable by status, priority, labels, sprint, assignee
- Sortable columns
- Bulk actions (assign, move to sprint, change status)
- Quick status change
- Sync status indicator
### Issue Detail View
- Full issue content (markdown)
- Status workflow buttons
- Assignment panel
- Sprint assignment
- External tracker link
- Activity timeline
### Interactions
- Filter/sort
- Inline status change
- Assign to agent
- Add to sprint
## Deliverables
- `frontend/prototypes/issues/page.tsx`
- `frontend/prototypes/issues/README.md`
- Screenshots in issue comments
## Acceptance Criteria
- [ ] List and detail views
- [ ] Filters functional
- [ ] Status workflow clear
- [ ] Sync status visible
- [ ] User approval obtained
## Assignable To
ui-designer agent
```
---
### Issue #24: [DESIGN] Real-time activity feed component
```
Title: [DESIGN] Real-time activity feed component
Labels: phase-1, frontend, design
## Description
Design interactive React prototype for the activity feed component.
## Requirements
### Event Types to Display
- Agent status changes
- Agent messages
- Issue updates
- Sprint events
- Approval requests
### Features
- Real-time updates (simulated)
- Event grouping by time
- Event type icons
- Click to expand details
- Connection status indicator
### Interactions
- Auto-scroll to new events
- Pause auto-scroll on hover
- Filter by event type
- Mark as read
## Deliverables
- `frontend/prototypes/activity-feed/page.tsx`
- `frontend/prototypes/activity-feed/README.md`
- Screenshots in issue comments
## Acceptance Criteria
- [ ] All event types represented
- [ ] Real-time feel (simulated)
- [ ] Filtering works
- [ ] Visual hierarchy clear
- [ ] User approval obtained
## Assignable To
ui-designer agent
```
---
### Issues #25-29: Implementation issues
*(These are created after design approval and follow the approved designs)*
```
Issue #25: Implement project dashboard
Labels: phase-1, frontend
Dependencies: #13, #18, #19, #20, #21 (approved)
Issue #26: Implement agent configuration UI
Labels: phase-1, frontend
Dependencies: #14, #22 (approved)
Issue #27: Implement issue views
Labels: phase-1, frontend
Dependencies: #16, #23 (approved)
Issue #28: Implement activity feed
Labels: phase-1, frontend
Dependencies: #19, #20, #24 (approved)
Issue #29: Navigation and layout
Labels: phase-1, frontend
Dependencies: None (can be done in parallel)
```
---
## Parallel Work Tracks
These issues can be worked on in parallel:
### Track 1: DevOps (Issues #01, #02, #03, #04, #05, #07)
**Agent:** devops-engineer
**Parallelizable:** #01, #02 can run parallel. #03, #04, #05 can run parallel. #07 depends on all.
### Track 2: Backend Data Model (Issues #08, #09, #10, #11, #12)
**Agent:** backend-engineer
**Parallelizable:** #08, #09 can run parallel. #10, #11, #12 can run after.
### Track 3: Backend API (Issues #13-17)
**Agent:** backend-engineer
**Parallelizable:** After data models. Can parallelize API issues once entities exist.
### Track 4: Real-time (Issues #18, #19, #20)
**Agent:** backend-engineer (18, 19), frontend-engineer (20)
**Parallelizable:** Sequential.
### Track 5: UI Design (Issues #21, #22, #23, #24)
**Agent:** ui-designer
**Parallelizable:** All can run in parallel.
### Track 6: Frontend Implementation (Issues #25-29)
**Agent:** frontend-engineer
**Parallelizable:** After design approval. Can parallelize implementations.
---
## Dependency Graph
```
Phase 0:
#01, #02 ─────────────────────┐
#03 ──────────────────────────┼──▶ #07 (Docker Compose)
#04 ──────────────────────────┤
#05 ──────────────────────────┤
#06 ──────────────────────────┘
Phase 1 - Data Model:
#08 (Project) ────────────────┬──▶ #10 (AgentInstance)
#09 (AgentType) ──────────────┤
└──▶ #11 (Issue) ──▶ #12 (Sprint)
Phase 1 - API:
#08 ──▶ #13 (Project API)
#09 ──▶ #14 (AgentType API)
#08, #10 ──▶ #15 (AgentInstance API)
#08, #11 ──▶ #16 (Issue API)
#08, #11, #12 ──▶ #17 (Sprint API)
Phase 1 - Real-time:
#03 ──▶ #18 (EventBus) ──▶ #19 (SSE) ──▶ #20 (Client SSE)
Phase 1 - UI:
#21, #22, #23, #24 (Design) ──[approval]──▶ #25, #26, #27, #28, #29 (Implementation)
```