62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
"""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
|