[docs]classGetThreadSchema(BaseModel):"""Input for GetMessageTool."""# From https://support.google.com/mail/answer/7190?hl=enthread_id:str=Field(...,description="The thread ID.",)
[docs]classGmailGetThread(GmailBaseTool):# type: ignore[override, override]"""Tool that gets a thread by ID from Gmail."""name:str="get_gmail_thread"description:str=("Use this tool to search for email messages."" The input must be a valid Gmail query."" The output is a JSON list of messages.")args_schema:Type[GetThreadSchema]=GetThreadSchemadef_run(self,thread_id:str,run_manager:Optional[CallbackManagerForToolRun]=None,)->Dict:"""Run the tool."""query=self.api_resource.users().threads().get(userId="me",id=thread_id)thread_data=query.execute()ifnotisinstance(thread_data,dict):raiseValueError("The output of the query must be a list.")messages=thread_data["messages"]thread_data["messages"]=[]keys_to_keep=["id","snippet","snippet"]# TODO: Parse body.formessageinmessages:thread_data["messages"].append({k:message[k]forkinkeys_to_keepifkinmessage})returnthread_data