fix: add guardian_agent and steward_agent to NodeProfile API response

This commit is contained in:
Apple
2025-11-28 14:12:32 -08:00
parent 0c251d67fd
commit 20dddd9051
2 changed files with 40 additions and 2 deletions

View File

@@ -200,6 +200,14 @@ class HomeNodeView(BaseModel):
environment: Optional[str] = None
class NodeAgentSummary(BaseModel):
"""Summary of a node agent (Guardian or Steward)"""
id: str
name: str
kind: Optional[str] = None
slug: Optional[str] = None
class NodeProfile(BaseModel):
"""Node profile for Node Directory"""
node_id: str
@@ -212,6 +220,10 @@ class NodeProfile(BaseModel):
agents_total: int = 0
agents_online: int = 0
last_heartbeat: Optional[str] = None
guardian_agent_id: Optional[str] = None
steward_agent_id: Optional[str] = None
guardian_agent: Optional[NodeAgentSummary] = None
steward_agent: Optional[NodeAgentSummary] = None
class ModelBindings(BaseModel):

View File

@@ -230,12 +230,34 @@ async def list_nodes():
@public_router.get("/nodes/{node_id}")
async def get_node_profile(node_id: str):
"""Отримати профіль ноди"""
"""Отримати профіль ноди з Guardian та Steward агентами"""
try:
node = await repo_city.get_node_by_id(node_id)
if not node:
raise HTTPException(status_code=404, detail="Node not found")
# Build guardian agent summary
guardian_agent = None
if node.get("guardian_agent"):
from models_city import NodeAgentSummary
guardian_agent = NodeAgentSummary(
id=node["guardian_agent"]["id"],
name=node["guardian_agent"]["name"],
kind=node["guardian_agent"].get("kind"),
slug=node["guardian_agent"].get("slug")
)
# Build steward agent summary
steward_agent = None
if node.get("steward_agent"):
from models_city import NodeAgentSummary
steward_agent = NodeAgentSummary(
id=node["steward_agent"]["id"],
name=node["steward_agent"]["name"],
kind=node["steward_agent"].get("kind"),
slug=node["steward_agent"].get("slug")
)
return NodeProfile(
node_id=node["node_id"],
name=node["name"],
@@ -246,7 +268,11 @@ async def get_node_profile(node_id: str):
gpu_info=node.get("gpu"),
agents_total=node.get("agents_total", 0),
agents_online=node.get("agents_online", 0),
last_heartbeat=str(node["last_heartbeat"]) if node.get("last_heartbeat") else None
last_heartbeat=str(node["last_heartbeat"]) if node.get("last_heartbeat") else None,
guardian_agent_id=node.get("guardian_agent_id"),
steward_agent_id=node.get("steward_agent_id"),
guardian_agent=guardian_agent,
steward_agent=steward_agent
)
except HTTPException:
raise