
    ii*                        S r SSKrSSKrSSKrSSKrSSKJr  \R                  " S5      r\R                  R                  \R                  R                  \5      5      r\R                  R                  \S5      r\\R                  ;  a  \R                  R                  S\5        \\R                  ;  a  \R                  R                  S\5         " S S5      rSS\S	\S
\4S jjrg)z]
Genesis V2 Agent
================
Main conversational agent powered by Google ADK / Gemini.
    N)Optionalzgenesis_v2.agentlibc                   h    \ rS rSrSrSS\S\4S jjrS rSS\S\S	\4S
 jjrSS\S\S	\4S jjr	Sr
g)GenesisAgent   z)Conversational agent wrapping Google ADK.modelsystem_instructionc                     S U l         S U l        S U l        Xl        X l        / U l        S U l        U R                  5         g )N)_agent_runner_session_servicer   r	   _tools_init_error_initialize)selfr   r	   s      %E:\genesis-system\genesis_v2\agent.py__init__GenesisAgent.__init__   s>     $
"4    c                 `    SSK Jn  SSKJn  SSKJn  U" 5       U l        U" SU R                  U R                  =(       d    SU R                  S9U l
        U" U R                  SU R                  S	9U l        [        R                  S
U R                   35        g! [         aA  nSU 3U l        [        R!                  U R                  5        SU l
        SU l         SnAgSnAf["         aA  nSU 3U l        [        R!                  U R                  5        SU l
        SU l         SnAgSnAff = f)z Initialize the Google ADK agent.r   )Agent)InMemorySessionService)Runner
genesis_v2zkYou are Genesis, a powerful AI assistant. Help the user with coding, system management, and research tasks.)namer   instructiontools
genesis-v2)agentapp_namesession_servicezAgent initialized: model=zGoogle ADK not available: NzAgent init error: )google.adk.agentsr   google.adk.sessionsr   google.adk.runnersr   r   r   r	   r   r   r   loggerinfoImportErrorr   error	Exception)r   r   r   r   es        r   r   GenesisAgent._initialize%   s   !	 /B1$:$<D!!jj 33 X kkDK "kk% $ 5 5DL KK3DJJ<@A 	 !;A3?DLL))*DKDLL 	 !3A37DLL))*DKDLL		 s$   BB 
D-#7CD-,7D((D-messageuser_idreturnc                   #    U R                   (       d  SU R                  =(       d    S 3$ SU 3nU R                  R                  SUUS9I Sh  vN nU(       d#  U R                  R	                  SUUS9I Sh  vN nSSKJnJn  U" S	U" US
9/S9nSnU R                   R                  UUUS9  Sh  vN n	[        U	S5      (       d  M  U	R                  (       d  M/  U	R                  R                   H7  n
[        U
S5      (       d  M  U
R                  (       d  M)  XR                  -  nM9     M   N N N
 U=(       d    S$ 7f)z"Send a message and get a response.zAgent not initialized. Error: zUnknown error. Check logs.session_r   )r    r-   
session_idNr   )ContentPartuser)text)roleparts )r-   r1   new_messagecontentr5   zNo response generated.)r   r   r   get_sessioncreate_sessiongoogle.genai.typesr2   r3   	run_asynchasattrr:   r7   r5   )r   r,   r-   r1   sessionr2   r3   user_contentresponse_texteventparts              r   chatGenesisAgent.chatJ   s?    ||3D4D4D4dHd3effy)
 --99!! : 
 

  11@@%% A  G 	5F4W3E2FG<<11!$ 2 
 	3%
 ui((U]]]!MM//DtV,,%2 0/
	3 
 8 88s`   AED1)E9D3:5E/D73D54D77EE(E
EE3E5D77Ec                     [         R                  " 5       nUR                  5       (       af  SSKnUR                  R                  5        nUR                  [         R                  U R                  X5      5      nUR                  SS9sSSS5        $ UR                  U R                  X5      5      $ ! , (       d  f       g= f! [         a(    [         R                  " U R                  X5      5      s $ f = f)zSynchronous wrapper for chat.r   Nx   )timeout)asyncioget_event_loop
is_runningconcurrent.futuresfuturesThreadPoolExecutorsubmitrunrE   resultrun_until_completeRuntimeError)r   r,   r-   loop
concurrentpoolfutures          r   	chat_syncGenesisAgent.chat_synco   s    
	<))+D  )''::<![[dii6QRF!===5 =< ..tyy/JKK	 =<
  	<;;tyy:;;	<s6   AC 
>B2	C C 2
C <C  C /C54C5)r   r   r   r   r   r   r	   Nzgemini-2.0-flashr8   )r4   )__name__
__module____qualname____firstlineno____doc__strr   r   rE   rY   __static_attributes__ r   r   r   r      sX    3c C # J#9# #9 #9 #9J< <s < < <r   r   r   r	   r.   c                 P    SSK Jn  U" 5       [        R                  S'   [	        XS9$ )z+Factory function to create a Genesis agent.r   )get_api_keyGOOGLE_API_KEY)r   r	   )genesis_v2.core.configre   osenvironr   )r   r	   re   s      r   create_agentrj   ~   s!    2#.=BJJ eKKr   r[   )r`   rh   sysrJ   loggingtypingr   	getLoggerr%   pathdirname__file__root_dirjoinlib_dirinsertr   ra   rj   rc   r   r   <module>rv      s    
 
   			-	. 77??277??845
'',,x
'
#((HHOOAw388HHOOAx c< c<LL Lc LS_ Lr   