Major Features Added: - Fix Socket.IO connectivity by updating Dockerfile to use socket_app - Resolve distributed workflows API to return arrays instead of errors - Expand agent coverage from 3 to 7 agents (added OAK and ROSEWOOD) - Create comprehensive systemd service for MCP server with auto-discovery - Add daemon mode with periodic agent discovery every 5 minutes - Implement comprehensive test suite with 100% pass rate Infrastructure Improvements: - Enhanced database connection handling with retry logic - Improved agent registration with persistent storage - Added proper error handling for distributed workflows endpoint - Created management scripts for service lifecycle operations Agent Cluster Expansion: - ACACIA: deepseek-r1:7b (kernel_dev) - WALNUT: starcoder2:15b (pytorch_dev) - IRONWOOD: deepseek-coder-v2 (profiler) - OAK: codellama:latest (docs_writer) - OAK-TESTER: deepseek-r1:latest (tester) - ROSEWOOD: deepseek-coder-v2:latest (kernel_dev) - ROSEWOOD-VISION: llama3.2-vision:11b (tester) System Status: All 7 agents healthy, Socket.IO operational, MCP server fully functional 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
45 lines
1.9 KiB
Python
45 lines
1.9 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from typing import Dict, Any, List
|
|
from app.core.auth import get_current_user
|
|
from app.services.project_service import ProjectService
|
|
|
|
router = APIRouter()
|
|
project_service = ProjectService()
|
|
|
|
@router.get("/projects")
|
|
async def get_projects(current_user: dict = Depends(get_current_user)) -> List[Dict[str, Any]]:
|
|
"""Get all projects from the local filesystem."""
|
|
try:
|
|
return project_service.get_all_projects()
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
@router.get("/projects/{project_id}")
|
|
async def get_project(project_id: str, current_user: dict = Depends(get_current_user)) -> Dict[str, Any]:
|
|
"""Get a specific project by ID."""
|
|
try:
|
|
project = project_service.get_project_by_id(project_id)
|
|
if not project:
|
|
raise HTTPException(status_code=404, detail="Project not found")
|
|
return project
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
@router.get("/projects/{project_id}/metrics")
|
|
async def get_project_metrics(project_id: str, current_user: dict = Depends(get_current_user)) -> Dict[str, Any]:
|
|
"""Get detailed metrics for a project."""
|
|
try:
|
|
metrics = project_service.get_project_metrics(project_id)
|
|
if not metrics:
|
|
raise HTTPException(status_code=404, detail="Project not found")
|
|
return metrics
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
@router.get("/projects/{project_id}/tasks")
|
|
async def get_project_tasks(project_id: str, current_user: dict = Depends(get_current_user)) -> List[Dict[str, Any]]:
|
|
"""Get tasks for a project (from GitHub issues and TODOS.md)."""
|
|
try:
|
|
return project_service.get_project_tasks(project_id)
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=str(e)) |