Convert an Agent to a Span
(
self,
trace_id: Optional[str] = None,
parent_span_id: Optional[str] = None,
project_id: Optional[str] = None,
)
| 251 | logs: Optional[str] = None |
| 252 | |
| 253 | async def to_span( |
| 254 | self, |
| 255 | trace_id: Optional[str] = None, |
| 256 | parent_span_id: Optional[str] = None, |
| 257 | project_id: Optional[str] = None, |
| 258 | ) -> Span: |
| 259 | """Convert an Agent to a Span""" |
| 260 | span_attributes = { |
| 261 | "agent.id": str(self.id), |
| 262 | "agent.name": self.name or "", |
| 263 | "session.id": str(self.session_id), |
| 264 | } |
| 265 | |
| 266 | events = [] |
| 267 | if self.logs: |
| 268 | events.append( |
| 269 | { |
| 270 | "timestamp": 0, # we don't have a timestamp |
| 271 | "name": "logs", |
| 272 | "attributes": {"log.message": self.logs}, |
| 273 | } |
| 274 | ) |
| 275 | |
| 276 | return Span( |
| 277 | name=f"agent:{self.name}" if self.name else f"agent:{self.id}", |
| 278 | trace_id=trace_id, |
| 279 | span_id=str(self.id), |
| 280 | parent_span_id=parent_span_id, |
| 281 | kind=SpanKind.INTERNAL, |
| 282 | project_id=project_id, |
| 283 | service_name=DEFAULT_SERVICE_NAME, |
| 284 | scope_name=f"{DEFAULT_SCOPE_NAME}.agent", |
| 285 | scope_version=DEFAULT_VERSION, |
| 286 | resource_attributes={}, |
| 287 | span_attributes=span_attributes, |
| 288 | events=events, |
| 289 | ) |
| 290 | |
| 291 | |
| 292 | class ActionEvent(BaseModel): |
no test coverage detected