44
55from camel .toolkits import GmailToolkit as BaseGmailToolkit
66from camel .toolkits .function_tool import FunctionTool
7- from loguru import logger
87
98from app .component .environment import env
109from app .service .task import Agents
1110from app .utils .listen .toolkit_listen import listen_toolkit
1211from app .utils .toolkit .abstract_toolkit import AbstractToolkit
1312from app .utils .oauth_state_manager import oauth_state_manager
13+ from utils import traceroot_wrapper as traceroot
14+
15+ logger = traceroot .get_logger ("main" )
1416
1517SCOPES = [
1618 'https://www.googleapis.com/auth/gmail.readonly' ,
1921 'https://www.googleapis.com/auth/gmail.compose' ,
2022 'https://www.googleapis.com/auth/gmail.labels' ,
2123 'https://www.googleapis.com/auth/contacts.readonly' ,
22- 'https://www.googleapis.com/auth/people.readonly'
2324]
2425
2526
@@ -41,16 +42,26 @@ def __init__(
4142 """
4243 self .api_task_id = api_task_id
4344 self ._token_path = (
44- os . environ . get ("GOOGLE_GMAIL_TOKEN_PATH" )
45+ env ("GOOGLE_GMAIL_TOKEN_PATH" )
4546 or os .path .join (
4647 os .path .expanduser ("~" ),
4748 ".eigent" ,
4849 "tokens" ,
4950 "google_gmail" ,
50- f"google_gmail_token_ { api_task_id } .json" ,
51+ "google_gmail_token .json" ,
5152 )
5253 )
5354 super ().__init__ (timeout = timeout )
55+
56+ @classmethod
57+ def _build_canonical_token_path (cls ) -> str :
58+ return env ("GOOGLE_GMAIL_TOKEN_PATH" ) or os .path .join (
59+ os .path .expanduser ("~" ),
60+ ".eigent" ,
61+ "tokens" ,
62+ "google_gmail" ,
63+ "google_gmail_token.json" ,
64+ )
5465
5566 # Email Sending Operations
5667 @listen_toolkit (
@@ -159,8 +170,9 @@ def list_threads(
159170 max_results : int = 10 ,
160171 include_spam_trash : bool = False ,
161172 label_ids : Optional [List [str ]] = None ,
173+ page_token : Optional [str ] = None ,
162174 ) -> Dict [str , Any ]:
163- return super ().list_threads (query , max_results , include_spam_trash , label_ids )
175+ return super ().list_threads (query , max_results , include_spam_trash , label_ids , page_token )
164176
165177 # Label Management
166178 @listen_toolkit (
@@ -303,10 +315,10 @@ def _authenticate(self):
303315
304316 # If no token file, try environment variables
305317 if not creds :
306- client_id = os . environ . get ("GOOGLE_CLIENT_ID" )
307- client_secret = os . environ . get ("GOOGLE_CLIENT_SECRET" )
308- refresh_token = os . environ . get ("GOOGLE_REFRESH_TOKEN" )
309- token_uri = os . environ . get ("GOOGLE_TOKEN_URI" , "https://oauth2.googleapis.com/token" )
318+ client_id = env ("GOOGLE_CLIENT_ID" )
319+ client_secret = env ("GOOGLE_CLIENT_SECRET" )
320+ refresh_token = env ("GOOGLE_REFRESH_TOKEN" )
321+ token_uri = env ("GOOGLE_TOKEN_URI" , "https://oauth2.googleapis.com/token" )
310322
311323 if refresh_token and client_id and client_secret :
312324 logger .info ("Creating credentials from environment variables" )
@@ -378,9 +390,9 @@ def auth_flow():
378390 state .status = "authorizing"
379391 oauth_state_manager .update_status ("google_gmail" , "authorizing" )
380392
381- client_id = os . environ . get ("GOOGLE_CLIENT_ID" )
382- client_secret = os . environ . get ("GOOGLE_CLIENT_SECRET" )
383- token_uri = os . environ . get ("GOOGLE_TOKEN_URI" , "https://oauth2.googleapis.com/token" )
393+ client_id = env ("GOOGLE_CLIENT_ID" )
394+ client_secret = env ("GOOGLE_CLIENT_SECRET" )
395+ token_uri = env ("GOOGLE_TOKEN_URI" , "https://oauth2.googleapis.com/token" )
384396
385397 logger .info (f"Google Gmail auth - client_id present: { bool (client_id )} , client_secret present: { bool (client_secret )} " )
386398
@@ -437,7 +449,7 @@ def auth_flow():
437449 ".eigent" ,
438450 "tokens" ,
439451 "google_gmail" ,
440- f"google_gmail_token_ { api_task_id } .json" ,
452+ f"google_gmail_token .json" ,
441453 )
442454
443455 try :
0 commit comments