Skip to content
2 changes: 1 addition & 1 deletion MISSION_BRIEF.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

# 🚀 GADDS MISSION BRIEFING - 2026-02-17 15:10
# 🚀 GADDS MISSION BRIEFING - 2026-02-17 14:49

## 📊 Status do Sistema
- **Git Status:** ✅ Limpo e Sincronizado
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
7 changes: 6 additions & 1 deletion gadds-dev/gadds-brain/routers/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from pydantic import BaseModel
from typing import Optional
import os
from services import agent_service
from services import agent_service, gemini_service

router = APIRouter(
prefix="/agent",
Expand Down Expand Up @@ -34,3 +34,8 @@ def get_diagnostics(token: str = Depends(verify_agent_token)):
def execute_action(request: AgentActionRequest, token: str = Depends(verify_agent_token)):
result = agent_service.execute_action(request.action, request.target)
return result

@router.get("/manifest")
def agent_manifest():
"""Returns the Function Calling definitions for Gemini/LLMs."""
return {"tools": gemini_service.get_tool_manifest()}
26 changes: 26 additions & 0 deletions gadds-dev/gadds-brain/routers/integrations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from fastapi import APIRouter, Header, HTTPException
from pydantic import BaseModel
from services import agent_service, cloudflare_service

router = APIRouter(
tags=["Integrations"],
)

class DNSRecordRequest(BaseModel):
zone_id: str
type: str
name: str
content: str
proxied: bool = True

@router.get("/integrations/cloudflare/zones")
def cf_list_zones(x_agent_token: str = Header(None)):
if not agent_service.verify_token(x_agent_token):
raise HTTPException(status_code=403, detail="Unauthorized")
return cloudflare_service.list_zones()

@router.post("/integrations/cloudflare/dns")
def cf_add_dns(req: DNSRecordRequest, x_agent_token: str = Header(None)):
if not agent_service.verify_token(x_agent_token):
raise HTTPException(status_code=403, detail="Unauthorized")
return cloudflare_service.add_dns_record(req.zone_id, req.type, req.name, req.content, req.proxied)
39 changes: 39 additions & 0 deletions gadds-dev/gadds-brain/routers/system.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
from fastapi import APIRouter
from pydantic import BaseModel
import json
import os

router = APIRouter(
tags=["System"],
)

class MaintenanceSettings(BaseModel):
enabled: bool

# --- HELPERS ---
SETTINGS_FILE = "system_config.json"

def load_settings():
if not os.path.exists(SETTINGS_FILE):
return {"maintenance_enabled": False}
try:
with open(SETTINGS_FILE, "r") as f:
return json.load(f)
except:
return {"maintenance_enabled": False}

def save_settings(settings):
with open(SETTINGS_FILE, "w") as f:
json.dump(settings, f)

@router.get("/settings/maintenance")
def get_maintenance_settings():
settings = load_settings()
return {"enabled": settings.get("maintenance_enabled", False)}

@router.post("/settings/maintenance")
def update_maintenance_settings(settings: MaintenanceSettings):
current_settings = load_settings()
current_settings["maintenance_enabled"] = settings.enabled
save_settings(current_settings)
return {"status": "updated", "enabled": settings.enabled}
Binary file not shown.
5 changes: 5 additions & 0 deletions gadds-dev/gadds-brain/test_devops_router.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
from fastapi.testclient import TestClient
from main import app, get_current_user
from routers.devops import get_current_admin_user
from unittest.mock import patch

client = TestClient(app)

def mock_get_current_user():
return "testuser"

def mock_get_current_admin_user():
return {"username": "admin", "role": "admin"}

app.dependency_overrides[get_current_user] = mock_get_current_user
app.dependency_overrides[get_current_admin_user] = mock_get_current_admin_user

def test_devops_router_registered():
response = client.get("/openapi.json")
Expand Down