forked from cardosofelipe/fast-next-template
- 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>
1657 lines
40 KiB
Markdown
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)
|
|
```
|