MCPcopy Create free account
hub / github.com/AgentOps-AI/agentops / ActionEvent

Class ActionEvent

app/api/agentops/exporter/models.py:292–359  ·  view source on GitHub ↗

Action becomes a (child) Span

Source from the content-addressed store, hash-verified

290
291
292class ActionEvent(BaseModel):
293 """
294 Action becomes a (child) Span
295 """
296
297 id: UUID
298 session_id: Optional[UUID] = None
299 agent_id: Optional[UUID] = None
300 action_type: Optional[str] = None
301 logs: Optional[str] = None
302 screenshot: Optional[str] = None
303 params: Optional[str] = None
304 returns: Optional[str] = None
305 init_timestamp: Optional[datetime] = None
306 end_timestamp: Optional[datetime] = None
307
308 async def to_span(
309 self,
310 trace_id: Optional[str] = None,
311 parent_span_id: Optional[str] = None,
312 project_id: Optional[str] = None,
313 ) -> Span:
314 """Convert an ActionEvent to a Span"""
315 span_attributes = {
316 "action.id": str(self.id),
317 "action.type": self.action_type or "",
318 "session.id": str(self.session_id),
319 "agent.id": str(self.agent_id),
320 }
321
322 if self.params:
323 if isinstance(self.params, dict):
324 span_attributes["action.params"] = json.dumps(self.params)
325 else:
326 span_attributes["action.params"] = str(self.params)
327
328 if self.returns:
329 if isinstance(self.returns, dict):
330 span_attributes["action.returns"] = json.dumps(self.returns)
331 else:
332 span_attributes["action.returns"] = str(self.returns)
333
334 if self.screenshot:
335 span_attributes["action.screenshot"] = self.screenshot
336
337 init_timestamp_ns = datetime_to_ns(self.init_timestamp)
338 events = []
339 if self.logs:
340 events.append(
341 {"timestamp": init_timestamp_ns, "name": "logs", "attributes": {"log.message": self.logs}}
342 )
343
344 return Span(
345 name=f"action:{self.action_type or 'unknown'}",
346 trace_id=trace_id,
347 span_id=str(self.id),
348 parent_span_id=parent_span_id,
349 kind=SpanKind.INTERNAL,

Callers 2

create_action_eventFunction · 0.70
update_action_eventFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…