Complete Hive platform functionality and expand cluster to 7 agents

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>
This commit is contained in:
anthonyrawlins
2025-07-10 08:41:34 +10:00
parent 8c3adf6d8f
commit fc0eec91ef
16 changed files with 1599 additions and 84 deletions

View File

@@ -1,9 +1,45 @@
from fastapi import APIRouter, Depends
from ..core.auth import get_current_user
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)):
"""Get all projects"""
return {"projects": [], "total": 0, "message": "Projects endpoint ready"}
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))