from praisonaiagents.trace import ContextTraceEmitter, ContextListSink
sink = ContextListSink()
emitter = ContextTraceEmitter(
sink=sink,
session_id="my-session",
enabled=True,
redact=True, # Redact sensitive data
)
# Session lifecycle
emitter.session_start()
emitter.session_end()
# Agent lifecycle
emitter.agent_start("agent_name")
emitter.agent_end("agent_name")
# Messages
emitter.message_added(
agent_name="agent",
role="user",
content="Hello",
messages_count=1,
tokens_used=10,
)
# Tool calls
emitter.tool_call_start("agent", "tool_name", {"arg": "value"})
emitter.tool_call_end("agent", "tool_name", "result", duration_ms=100)
# LLM calls
emitter.llm_request("agent", messages_count=5, tokens_used=1000, tokens_budget=128000)
emitter.llm_response("agent", response_tokens=500, duration_ms=1500)
# Full context snapshot
emitter.context_snapshot(
agent_name="agent",
messages_count=10,
tokens_used=5000,
tokens_budget=128000,
messages=[{"role": "user", "content": "..."}],
)
# Agent handoff (for flow visualization)
emitter.agent_handoff(
from_agent="researcher",
to_agent="writer",
reason="Research complete, ready for writing",
context_passed={"findings": ["result1", "result2"]},
)