
    0j(                     `   d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZ ddlmZ ddlmZmZm Z m!Z! erd	d
l"m#Z# d	dl$m%Z% d	dl&m'Z'm(Z(m)Z)m*Z* d	dl+m,Z,m-Z-m.Z. d	dl/m0Z0 d	dl1m2Z2m3Z3 d	dl4m5Z5 d	dl6m7Z7  ej8        e9          Z: G d d          Z;dS )z[
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
    N)TYPE_CHECKINGAnyCallableDictListOptionalUnioncast)
ActivityBaseActivityParamsActivityTypeAdapter	ApiClientApiClientSettingsConversationReferenceInvokeResponseSentActivityTokenProtocolis_invoke_response)PUBLICCloudEnvironment)GetUserTokenParams)AdaptiveCard)ClientClientOptionsLocalStorageStorage   )EventManager)ActivitySender)ActivityEventActivityResponseEventActivitySentEvent
ErrorEvent)PluginActivityEvent
PluginBaseStreamCancelledError)ActivityContext)ActivityHandlerActivityRouter)TokenManager)extract_tenant_idc                   .   e Zd ZdZefdedee         dee	ee
f         ee
         f         dedededee         d	ed
eddfdZdededee         dee         fdZdee         dedee
         fdZdee         dee         deeee
f                  fdZdS )ActivityProcessorzIProvides activity processing functionality with middleware chain support.routeridstoragedefault_connection_namehttp_clienttoken_managerapi_client_settingsactivity_sendercloudreturnNc
                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        d | _	        d S N)
r.   r/   r0   r1   r2   r3   r4   r5   r6   event_manager)
selfr.   r/   r0   r1   r2   r3   r4   r5   r6   s
             h/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/microsoft_teams/apps/app_process.py__init__zActivityProcessor.__init__+   sX     '>$&*#6 .
 8<    activitytokenpluginsc                    K   |j         p|j         }t          ||j        |j        |j        |j        |j        |j                  t          | j	        
                    t           j        j                             j                  }d}d}	 |j        j                            t%          |j        |j        j         j                             d{V }|j        }d}n*# t(          $ r t*                              d           Y nw xY wt/          |          t1          | j        pd j        ||| j         j         fd	 j        
          j        	 ddt:          t<          z  t>          z  dt@          t                   dtB          f fd}	|	_        dtB          f fd}
dtB          f fd}j"        #                    |
           j"        $                    |           S )zBuild the context object for activity processing.

        Args:
            activity: The validated Activity object

        Returns:
            Context object for middleware chain execution
        )service_urlactivity_idbot
channel_idconversationlocaleuser)r@   FN)rF   user_idconnection_nameTzNo user token available c                  8     j                                       S r9   )r3   get_graph_token)r;   	tenant_ids   r<   <lambda>z2ActivityProcessor._build_context.<locals>.<lambda>   s    d0@@KK r>   )r5   	app_tokenr6   messageconversation_refr7   c                   K    | |           d {V }j         st          d          t                              d           |pj        }j                             t          ||                     d {V  |S )N)EventManager was not initialized properlyz$Calling on_activity_sent for pluginsr?   rS   rA   )r:   
ValueErrorloggerdebugrS   on_activity_sentr"   )rR   rS   resrefactivityCtxrA   r;   sends       r<   updated_sendz6ActivityProcessor._build_context.<locals>.updated_send   s       W&677777777C% N !LMMMLL?@@@"Bk&BC$55!3EEE 6          Jr>   chunk_activityc                    K   j         r3j                             t          |                      d {V  d S d S NrV   rW   r:   r[   r"   )ra   rS   rA   r;   s    r<   handle_chunkz6ActivityProcessor._build_context.<locals>.handle_chunk   x      ! (99%~P`aaa# :            r>   close_activityc                    K   j         r3j                             t          |                      d {V  d S d S rc   rd   )rg   rS   rA   r;   s    r<   handle_closez6ActivityProcessor._build_context.<locals>.handle_close   rf   r>   r9   )%rC   r   r/   	recipientrF   rG   rH   from_r   r2   cloner   r3   get_bot_tokenr4   usersr@   getr   r1   	ExceptionrY   rZ   r+   r'   r0   r5   r6   r_   strr   r   r   r   streamon_chunkon_close)r;   r?   r@   rA   rC   
api_clientis_signed_in
user_tokenuser_token_resr`   re   ri   r^   rS   r_   rO   s   `  `        @@@@r<   _build_contextz ActivityProcessor._build_contextE   s      *?e.?0# "*!.?
 
 
 ""=t7I7W#X#X#XYY$
 

 $(
	#-#3#9#=#="'2$N-$($@  $ $      N (-JLL 	 	 	LL2333D	
 &h//	%GMrL( 0KKKKK*
 
 
  AE	 	>)L8	&'<=	 	 	 	 	 	 	 	 	 	$ (	| 	 	 	 	 	 	 	 		| 	 	 	 	 	 	 	 	 	##L111##L111s   AC) )$DDeventc                   	
K   j                             dd          }t          j        |          	|                     	j        |           d {V 
t                              d
j                    | j	        
                    
j                  }dt          dt          f	
fdfd|D             }||z   }| j        st          d          	 |                     
|           d {V }
j                                         d {V  t%          |          r!t'          t(          t*                   |          }nt)          t*                   d	|
          }| j                            t/          	|
j                  |           d {V  n# t2          $ rW t                              d           
j                                         d {V  t)          t*                   d	          }Y nCt4          $ r7}| j                            t9          |	          |           d {V  |d }~ww xY wt                              d           |S )NT)by_aliasexclude_nonezReceived activity: pluginr7   c                 d     dt           t                   dt          t                   f fd}|S )Nctxr7   c                    K                        t          j        j                             d {V  |                                  d {V  d S )N)r?   r@   rS   )on_activityr$   r@   rS   next)r   r?   r^   rz   r~   s    r<   routezGActivityProcessor.process_activity.<locals>.create_route.<locals>.route   s      (('!)#k)4)E           hhjj         r>   )r'   r   r   r   )r~   r   r?   r^   rz   s   ` r<   create_routez8ActivityProcessor.process_activity.<locals>.create_route   sO    !!> !8C= ! ! ! ! ! ! ! ! ! Lr>   c                 n    g | ]1}t          |d           t          |j                  & |          2S )on_activity_event)hasattrcallabler   ).0r~   r   s     r<   
<listcomp>z6ActivityProcessor.process_activity.<locals>.<listcomp>   sZ     
 
 
v233
 9AAS8T8T
L  
 
 
r>   rU      )statusbody)r?   responserS   rW   z2Activity processing was cancelled (stream stopped))r   )errorr?   zCompleted processing activity)r   
model_dumpr   validate_pythonry   r@   rY   rZ   r?   r.   select_handlersr%   r(   r:   rX   execute_middleware_chainrr   closer   r
   r   r   on_activity_responser!   rS   r&   rp   on_errorr#   )r;   rA   rz   activity_dicthandlersplugin_routesmiddleware_resultr   r   r?   r^   r   s     `      @@@r<   process_activityz"ActivityProcessor.process_activity   s     
--t$-OO&6}EE //%+wOOOOOOOOA;+?AABBB ;..{/CDD	 	 	 	 	 	 	 	 	 	
 
 
 
!
 
 

 !8+ ! 	JHIII	&*&C&CKQY&Z&Z Z Z Z Z Z Z$**,,,,,,,,,!"344 Ss 35FGG)#.c@QRRR$99%%%%0%A  
   :           $ 	7 	7 	7LLMNNN$**,,,,,,,,,%c*#666HHH 	 	 	$--jux.X.X.XZabbbbbbbbbK	 	4555s    B>F AH99	H92H44H9r   r   c                    K   t                    dk    rdS ddt          dt          g t          f         ffd d           d{V } |             d{V  S )zExecute the middleware chain for activity handlers.

        Args:
            ctx: Context object for the activity
            handlers: List of activity handlers to execute

        Returns:
            Final response from handlers, if any
        r   Nindexr7   c                      K    fd}|S )Nc                    K   t                    k     rsdz   t                    k     r(                     dz              d {V            nd }                     |                                 d {V }||d S d S d S )Nr   c                  
   K   d S r9    r   r>   r<   noopzcActivityProcessor.execute_middleware_chain.<locals>.create_next.<locals>.next_handler.<locals>.noop  s       Dr>   )lenset_next)r   resultcreate_nextr   r   r   r   s     r<   next_handlerzUActivityProcessor.execute_middleware_chain.<locals>.create_next.<locals>.next_handler  s      3x==((qy3x==00;;uqy+A+A%A%A%A%A%A%ABBBB! ! ! T*** $38E?3#7#7777777F )#)! )( *)r>   r   )r   r   r   r   r   r   s   ` r<   r   z?ActivityProcessor.execute_middleware_chain.<locals>.create_next  s=      * * * * * * * * *(  r>   )r   intr   r   )r;   r   r   first_handlerr   r   s    `` @@r<   r   z*ActivityProcessor.execute_middleware_chain   s       x==A4 	 S 	 Xb#g-> 	  	  	  	  	  	  	  	  	 0 *k!nn,,,,,,moor>   )__name__
__module____qualname____doc__r   r)   r   rq   r	   r   r   r   r   r*   r   r   r   r=   r   r   r   r%   r'   ry   r    r   r   r(   r   r   r   r>   r<   r-   r-   (   s       SS #)< << SM< wsCx(,s*;;<	<
 "%< < $< &&78< (<  < 
< < < <4ii i j!	i
 
	&i i i iVAd:.> A} AYghkYl A A A AF."<0.<@<Q.	$sCx.	!. . . . . .r>   r-   )<r   loggingtypingr   r   r   r   r   r   r	   r
   microsoft_teams.apir   r   r   r   r   r   r   r   r   r   *microsoft_teams.api.auth.cloud_environmentr   r   'microsoft_teams.api.clients.user.paramsr   microsoft_teams.cardsr   microsoft_teams.commonr   r   r   r   
app_eventsr   r5   r   eventsr    r!   r"   r#   rA   r$   r%   r&   routing.activity_contextr'   routing.routerr(   r)   r3   r*   utilsr+   	getLoggerr   rY   r-   r   r>   r<   <module>r      s;   
  R R R R R R R R R R R R R R R R R R R R                        P O O O O O O O F F F F F F . . . . . . O O O O O O O O O O O O )(((((( + + + + + + W W W W W W W W W W W W J J J J J J J J J J 5 5 5 5 5 5 ; ; ; ; ; ; ; ; ' ' ' ' ' ' $ $ $ $ $ $		8	$	$y y y y y y y y y yr>   