Files

62 lines
1.8 KiB
Python
Raw Permalink Normal View History

"""Agent event logging helpers used by the Tools API."""
from typing import Any, Optional
from uuid import uuid4
from app.agent_names import normalize_agent_key
from app.db import execute_returning, json_param
def log_agent_event(
*,
agent_name: str,
event_type: str,
title: str,
body: Optional[str] = None,
agent_type: str = "openswarm",
metadata: Optional[dict[str, Any]] = None,
status: str = "completed",
related_table: Optional[str] = None,
related_id: Optional[int] = None,
channel: str = "dashboard",
correlation_id: Optional[str] = None,
source_agent: Optional[str] = None,
target_agent: Optional[str] = None,
) -> dict[str, Any]:
meta = dict(metadata or {})
if correlation_id:
meta.setdefault("correlation_id", correlation_id)
if source_agent:
meta.setdefault("source_agent", normalize_agent_key(source_agent))
if target_agent:
meta.setdefault("target_agent", normalize_agent_key(target_agent))
if "correlation_id" not in meta:
meta.setdefault("correlation_id", str(uuid4()))
normalized = normalize_agent_key(agent_name)
row = execute_returning(
"""
INSERT INTO agent_events (
agent_name, agent_type, event_type, title, body, metadata,
status, related_table, related_id, channel
)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
RETURNING *
""",
(
normalized,
agent_type,
event_type,
title,
body,
json_param(meta),
status,
related_table,
related_id,
channel,
),
)
if row is None:
raise RuntimeError("Failed to insert agent event")
return row