[docs]@dataclassclassUtteranceEvent(Event):"""Represents an utterance event in the conversation"""eventType:str="utterance"dialogEvent:Optional[DialogEvent]=field(default=None,repr=False)parameters:Parameters=field(default_factory=Parameters)def__post_init__(self):"""Initialize after dataclass initialization"""ifself.dialogEventisnotNone:self.parameters["dialogEvent"]=self.dialogEventif"dialogEvent"notinself.parametersornotisinstance(self.parameters["dialogEvent"],DialogEvent):raiseValueError("UtteranceEvent must contain a dialogEvent parameter")def__iter__(self)->Iterator[Tuple[str,Any]]:"""Convert UtteranceEvent instance to JSON-compatible dictionary"""yield'eventType',self.eventTypeifself.toisnotNone:yield'to',dict(self.to)ifself.reasonisnotNone:yield'reason',self.reasonifself.parameters:yield'parameters',dict(self.parameters)
[docs]@dataclassclassContextEvent(Event):"""Represents a context event providing additional information to recipient agents"""eventType:str="context"dialogHistory:Optional[DialogHistory]=field(default=None,repr=False)parameters:Parameters=field(default_factory=lambda:Parameters(dialogHistory=None))def__post_init__(self):ifself.dialogHistoryisnotNone:self.parameters["dialogHistory"]=self.dialogHistoryif"dialogHistory"notinself.parametersornotisinstance(self.parameters["dialogHistory"],DialogHistory):self.parameters["dialogHistory"]=DialogHistory()def__iter__(self)->Iterator[Tuple[str,Any]]:"""Convert ContextEvent instance to JSON-compatible dictionary"""yield'eventType',self.eventTypeifself.toisnotNone:yield'to',dict(self.to)ifself.reasonisnotNone:yield'reason',self.reasonifself.parameters:yield'parameters',dict(self.parameters)
[docs]@dataclassclassInviteEvent(Event):"""Represents an invitation for an agent to join the conversation"""eventType:str="invite"
[docs]@dataclassclassUninviteEvent(Event):"""Represents removing an agent from the conversation"""eventType:str="uninvite"
[docs]@dataclassclassDeclineInviteEvent(Event):"""Represents declining an invitation to join the conversation"""eventType:str="declineInvite"
[docs]@dataclassclassByeEvent(Event):"""Represents an agent leaving the conversation"""eventType:str="bye"parameters:Parameters=field(default_factory=Parameters)
[docs]@dataclassclassGetManifestsEvent(Event):"""Represents a request for agent manifests"""eventType:str="getManifests"parameters:Parameters=field(default_factory=lambda:Parameters({"recommendScope":"internal"# Can be "external", "internal", or "all"}))