| 34 | ] |
| 35 | |
| 36 | class Message(BaseModel): |
| 37 | role: Literal['user', 'assistant', 'tool'] |
| 38 | content: list[AnyContentBlock] = Field(default_factory=list) |
| 39 | |
| 40 | @classmethod |
| 41 | def user_text(cls, input:str) -> "Message": |
| 42 | return cls(role='user', content=[TextContentBlock(type='text',text=input)]) |
| 43 | @classmethod |
| 44 | def tool_result(cls, id, name, output, is_error): |
| 45 | return cls(role='tool', content = [ToolResultContentBlock(type='tool_result',id=id, name=name,output=output,is_error=is_error)]) |
| 46 | @classmethod |
| 47 | def tool_use(cls, id, name, input): |
| 48 | return cls(role='assistant', content=[ToolContentBlock(type='tool_use',id=id, name=name, input=input)]) |
| 49 | |
| 50 | class Session(BaseModel): |
| 51 | messages: list[Message] = Field(default_factory=list) |
no outgoing calls
no test coverage detected