mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
Previously, `@start` methods triggered a `FlowStartedEvent` but did not emit a `MethodExecutionStartedEvent`. This was fine for a single entry point but caused ambiguity when multiple `@start` methods existed. This commit (1) emits events for starting points, (2) adds tests ensuring ordering, (3) adds more fields to events.
40 lines
796 B
Python
40 lines
796 B
Python
from dataclasses import dataclass, field
|
|
from datetime import datetime
|
|
from typing import Any, Dict, Optional, Union
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
@dataclass
|
|
class Event:
|
|
type: str
|
|
flow_name: str
|
|
timestamp: datetime = field(init=False)
|
|
|
|
def __post_init__(self):
|
|
self.timestamp = datetime.now()
|
|
|
|
|
|
@dataclass
|
|
class FlowStartedEvent(Event):
|
|
inputs: Optional[Dict[str, Any]] = None
|
|
|
|
|
|
@dataclass
|
|
class MethodExecutionStartedEvent(Event):
|
|
method_name: str
|
|
state: Union[Dict[str, Any], BaseModel]
|
|
params: Optional[Dict[str, Any]] = None
|
|
|
|
|
|
@dataclass
|
|
class MethodExecutionFinishedEvent(Event):
|
|
method_name: str
|
|
state: Union[Dict[str, Any], BaseModel]
|
|
result: Any = None
|
|
|
|
|
|
@dataclass
|
|
class FlowFinishedEvent(Event):
|
|
result: Optional[Any] = None
|