
    j                       d Z ddlmZ ddlZddlZddlZ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mZmZmZmZ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) ddl*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9 e
rddl:m;Z; ddl$m<Z< ddl$m=Z= ddl>m?Z? ddl@mAZA  ej                  eC      ZDg dZE G d de+      ZF G d de+      ZG G d de+      ZH G d d       ZIy)!a  Async view classes for Honcho SDK.

This module provides async accessor classes that wrap the main SDK classes
and provide async versions of all operations. Access via the `.aio` property
on Honcho, Peer, Session, and ConclusionScope instances.

Example:
    ```python
    from honcho import Honcho

    honcho = Honcho(workspace_id="my-workspace")

    # Async operations
    peer = await honcho.aio.peer("user-123")
    await peer.aio.chat("query")
    async for p in honcho.aio.peers():
        print(p.id)
    ```
    )annotationsN)AsyncGenerator)datetime)TYPE_CHECKINGAnyClassVarLiteral)
ConfigDictFieldvalidate_call   )ConclusionResponseMessageCreateParamsMessageResponsePeerCardResponse
PeerConfigPeerContextResponsePeerResponseQueueStatusResponseRepresentationResponseSessionConfigurationSessionPeerConfigSessionResponseWorkspaceConfigurationWorkspaceResponse)PeerBaseSessionBase)
Conclusion)routes)Message)AsyncMetadataConfigMixin)	AsyncPage)SessionContextSessionSummariesSummary)AsyncDialecticStreamResponse)datetime_to_isonormalize_peers_to_dictparse_sse_astreamprepare_file_for_upload
resolve_id)Honcho)ConclusionScope)ConclusionCreateParams)Peer)Session)	HonchoAioPeerAio
SessionAioConclusionScopeAioc            	         e Zd ZU dZdZded<   ded<   d+dZd Zd,d	Zd,d
Z	d-dZ
	 	 	 	 d.dZd/dZd0dZd1dZd1dZd2dZd3dZddd	 	 	 	 	 	 	 d4dZ	 d5	 	 	 d6dZddd	 	 	 	 	 	 	 d7dZ	 d5	 	 	 d8dZ	 d5	 	 	 d9dZd:dZe eddd       edd        ed!dd"d#$      f	 	 	 	 	 	 	 d;d%       Z	 	 	 d<	 	 	 	 	 	 	 d=d&Z e ed'(      )      	 	 d>	 	 	 	 	 	 	 d?d*       Zy)@r1   z
    Async view of the Honcho client.

    Access via `honcho.aio`. Provides async versions of all Honcho methods.
    Shares state with the parent Honcho instance.
    _honchoClassVar[tuple[str, ...]]	__slots__'Honcho'r7   c                    || _         y Nr6   )selfhonchos     /home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/st_01a0560c-r63-installed-wheel-first-claim-qa/venv/lib/python3.12/site-packages/honcho/aio.py__init__zHonchoAio.__init__^   s	        c                .    | j                   j                  S r<   )r7   _async_http_clientr=   s    r?   _get_async_http_clientz HonchoAio._get_async_http_clientb   s    ||...rA   c                *    t        j                         S r<   )r   
workspacesrD   s    r?   _get_fetch_routezHonchoAio._get_fetch_routee   s      ""rA   c                T    t        j                  | j                  j                        S r<   )r   	workspacer7   workspace_idrD   s    r?   _get_update_routezHonchoAio._get_update_routeh   s     9 9::rA   c                2    d| j                   j                  iS Nid)r7   rK   rD   s    r?   _get_fetch_bodyzHonchoAio._get_fetch_bodyk   s    dll//00rA   c                    t        j                  |      }|j                  xs i |j                  j	                  d      fS NTexclude_none)r   model_validatemetadataconfiguration
model_dumpr=   datarJ   s      r?   _parse_responsezHonchoAio._parse_responsen   sH     &44T:	!!'R)@)@)K)K *L *
 
 	
rA   c                &    || j                   _        y r<   r7   	_metadatar=   rV   s     r?   _set_metadatazHonchoAio._set_metadataw   s    !)rA   c                L    t        j                  |      | j                  _        y r<   )r   rU   r7   _configurationr=   rW   s     r?   _set_configurationzHonchoAio._set_configurationz   s    &<&K&K'
#rA   c                6    | j                   j                  xs i S r<   r]   rD   s    r?   _get_metadatazHonchoAio._get_metadata   s    ||%%++rA   c                ~    | j                   j                  i S | j                   j                  j                  d      S rR   )r7   rb   rX   rD   s    r?   _get_configurationzHonchoAio._get_configuration   s5    <<&&.I||**5545HHrA   c                b  K   | j                         j                  | j                         | j                                d{   }t	        j
                  |      }|j                  xs i | j                  _        |j                  | j                  _
        | j                  j                  S 7 iw)1Get configuration from the server asynchronously.bodyN)rE   postrH   rP   r   rU   rV   r7   r^   rW   rb   rY   s      r?   get_configurationzHonchoAio.get_configuration   s     00277!!#$*>*>*@ 8 
 
 &44T:	!*!3!3!9r&/&=&=#||***
s   AB/B-A*B/c                   K   | j                         j                  | j                         d|j                  d      i       d{    || j                  _        y7 wz/Set configuration on the server asynchronously.rW   TrS   rk   N)rE   putrL   rX   r7   rb   rc   s     r?   set_configurationzHonchoAio.set_configuration   sa     ))+//""$!=#;#;#;#NO 0 
 	
 	
 '4#		
   AA AA NrV   rW   c                 K   ||| j                   j                          d{    d|i}|||d<   ||j                  d      |d<   | j                   j                  j	                  t        j                  | j                   j                        |       d{   }t        j                  |      }t        || j                   |j                  |j                        S t        || j                   ||      S 7 7 aw)	a`  
        Get or create a peer with the given ID asynchronously.

        Args:
            id: Unique identifier for the peer within the workspace.
            metadata: Optional metadata dictionary to associate with this peer.
            configuration: Optional configuration to set for this peer.

        Returns:
            A Peer object
        NrO   rV   TrS   rW   rk   rt   )r7   _ensure_workspace_asyncrX   rC   rm   r   peersrK   r   rU   r/   rV   rW   )r=   rO   rV   rW   rl   rZ   	peer_datas          r?   peerzHonchoAio.peer   s     $ $(<,,66888$(":D##+Z ((5(@(@d(@(S_%88==T\\667d >  D %33D9I"++'55	  Bx}UU% 9#   "D C<A7D C>A D >D c                X   K    j                   j                          d{     j                   j                  j                  t	        j
                   j                   j                        rdind       d{   }d fdd fdt        |t              S 7 7 'w)z
        Get all peers in the current workspace asynchronously.

        Returns:
            An AsyncPage of Peer objects
        Nfiltersrk   c                r    t        | j                  j                  | j                  | j                        S Nrt   )r/   rO   r7   rV   rW   )ry   r=   s    r?   	transformz"HonchoAio.peers.<locals>.transform   s.    "00	 rA   c                   K   j                   j                  j                  t        j                  j                   j
                        rdind d| i       d {   }t        |t              S 7 wNr|   pagerl   query)r7   rC   rm   r   
peers_listrK   r"   r   r   	next_data
fetch_nextr|   r=   r   s     r?   r   z#HonchoAio.peers.<locals>.fetch_next   so     "ll==BB!!$,,";";<-4i)$tn C  I
 YiLL   AA7A5A7)ry   r   returnr/   )r   intr   AsyncPage[PeerResponse, Peer])	r7   rv   rC   rm   r   r   rK   r"   r   r=   r|   rZ   r   r   s   `` @@r?   rw   zHonchoAio.peers   s      ll22444\\4499dll778)0)W%d : 
 

		M 	M |Y
CC- 	5
"   B*B&AB* B(&B*(B*c                 K   ||| j                   j                          d{    d|i}|||d<   ||j                  d      |d<   | j                   j                  j	                  t        j                  | j                   j                        |       d{   }t        j                  |      }t        || j                   |j                  |j                        S t        || j                   ||      S 7 7 aw)	ao  
        Get or create a session with the given ID asynchronously.

        Args:
            id: Unique identifier for the session within the workspace.
            metadata: Optional metadata dictionary to associate with this session.
            configuration: Optional configuration to set for this session.

        Returns:
            A Session object
        NrO   rV   TrS   rW   rk   rt   )r7   rv   rX   rC   rm   r   sessionsrK   r   rU   r0   rV   rW   )r=   rO   rV   rW   rl   rZ   session_datas          r?   sessionzHonchoAio.session   s     $ $(<,,66888$(":D##+Z ((5(@(@d(@(S_%88== 9 9: >  D +99$?L%..*88	  r4<<(-XX% 9rz   c                X   K    j                   j                          d{     j                   j                  j                  t	        j
                   j                   j                        rdind       d{   }d fdd fdt        |t              S 7 7 'w)z
        Get all sessions in the current workspace asynchronously.

        Returns:
            An AsyncPage of Session objects
        Nr|   rk   c                r    t        | j                  j                  | j                  | j                        S r~   )r0   rO   r7   rV   rW   r   r=   s    r?   r   z%HonchoAio.sessions.<locals>.transform  s0    

 ))%33	 rA   c                   K   j                   j                  j                  t        j                  j                   j
                        rdind d| i       d {   }t        |t              S 7 wr   )r7   rC   rm   r   sessions_listrK   r"   r   r   s     r?   r   z&HonchoAio.sessions.<locals>.fetch_next   so     "ll==BB$$T\\%>%>?-4i)$tn C  I
 YJOOr   r   r   r   r0   r   r   r   #AsyncPage[SessionResponse, Session])	r7   rv   rC   rm   r   r   rK   r"   r   r   s   `` @@r?   r   zHonchoAio.sessions	  s      ll22444\\4499  !:!:;)0)W%d : 
 

		P 	P 	:FF- 	5
r   c                    K    j                   j                  j                  t        j                         rdind       d{   }ddd fdt        |t              S 7 #w)z%Get all workspace IDs asynchronously.r|   Nrk   c                    | j                   S r<   )rO   )rJ   s    r?   r   z'HonchoAio.workspaces.<locals>.transform3  s    <<rA   c                   K   j                   j                  j                  t        j                         rdind d| i       d {   }t        |t              S 7 wr   r7   rC   rm   r   workspaces_listr"   r   r   s     r?   r   z(HonchoAio.workspaces.<locals>.fetch_next6  sd     "ll==BB&&(-4i)$tn C  I
 Y(99jQQs   AA"	A 
A")rJ   r   r   str)r   r   r   !AsyncPage[WorkspaceResponse, str]r   r   s   `` @@r?   rG   zHonchoAio.workspaces*  so      \\4499""$)0)W%d : 
 

	 	R 	R 0)ZHH!
s   AA/	A-
$A/c                   K   | j                   j                  j                  t        j                  |             d{    y7 w)z"Delete a workspace asynchronously.N)r7   rC   deleter   rJ   )r=   rK   s     r?   delete_workspacezHonchoAio.delete_workspace@  s/     ll--44V5E5El5STTTs   <AAA.r   The search query to use
min_lengthdescriptionFilters to scope the searchr   
   d   Number of results to returndefaultgeler   c                  K   | j                   j                          d{    | j                   j                  j                  t	        j
                  | j                   j                        |||d       d{   }|D cg c]*  }t        j                  t        j                  |            , c}S 7 7 <c c}w w)z<Search for messages in the current workspace asynchronously.Nr   r|   limitrk   )r7   rv   rC   rm   r   workspace_searchrK   r    from_api_responser   rU   r=   r   r|   r   rZ   items         r?   searchzHonchoAio.searchD  s      ll22444\\4499##DLL$=$=> WuE : 
 
 
 %%o&D&DT&JK
 	
 	5

s4   B>B5AB>:B7;B>/B92B>7B>9B>c                  K   | j                   j                          d{    t        |      }t        |      }t        |      }i }|r||d<   |r||d<   |r||d<   | j                   j                  j	                  t        j                  | j                   j                        |r|nd       d{   }t        j                  |      S 7 7 w)z+Get queue processing status asynchronously.Nobserver_id	sender_id
session_idr   )
r7   rv   r+   rC   getr   workspace_queue_statusrK   r   rU   )	r=   observersenderr   resolved_observer_idresolved_sender_idresolved_session_idr   rZ   s	            r?   queue_statuszHonchoAio.queue_statusZ  s      ll22444)(3'/(1 "#7E- !3E+"5E,\\4488))$,,*C*CD %d 9 
 
 #11$77# 	5
s"   CCBC2C3CCTarbitrary_types_allowedconfigc                X  K   | j                   j                          d{    t        |      }t        |      }|rt        |      n|}| j                   j                  j	                  t        j                  | j                   j                        |||dd       d{    y7 7 w)a  
        Schedule a dream task for memory consolidation asynchronously.

        Dreams are background processes that consolidate observations into higher-level
        insights and update peer cards. This method schedules a dream task for immediate
        processing.

        Args:
            observer: The observer peer (ID string or Peer object) whose perspective
                to use for the dream.
            session: Optional session (ID string or Session object) to scope the dream to.
            observed: Optional observed peer (ID string or Peer object). If not provided,
                defaults to the observer (self-reflection).
        Nomni)r   observedr   
dream_typerk   )r7   rv   r+   rC   rm   r   workspace_schedule_dreamrK   )r=   r   r   r   r   r   resolved_observed_ids          r?   schedule_dreamzHonchoAio.schedule_dreamt  s     * ll22444)(3(1$,Jx 2F 	 ll--22++DLL,E,EF001$	 3 
 	
 	
 	5	
s"   B*B&A?B* B(!B*(B*)r>   r:   r   Noner   r   r   dict[str, Any]rZ   r   r   z+tuple[dict[str, object], dict[str, object]]rV   dict[str, object]r   r   rW   r   r   r   r   r   )r   r   )rW   r   r   r   )rO   r   rV   dict[str, object] | NonerW   zPeerConfig | Noner   r/   r<   )r|   r   r   r   )rO   r   rV   r   rW   zSessionConfiguration | Noner   r0   r|   r   r   r   )r|   r   r   r   )rK   r   r   r   r   r   r|   r   r   r   r   list[Message])NNN)r   str | PeerBase | Noner   r   r   str | SessionBase | Noner   r   NN)r   str | PeerBaser   r   r   r   r   r   )__name__
__module____qualname____doc__r9   __annotations__r@   rE   rH   rL   rP   r[   r`   rd   rf   rh   rn   rr   ry   rw   r   r   rG   r   r   r   r   r   r
   r    rA   r?   r1   r1   S   s&    ,8I(7/#;1
"
	4
*
,I
+4 .2+/%V%V +	%V
 )%V 
%VP 37D/D	&DJ .259%Y%Y +	%Y
 3%Y 
%YP 37G/G	,GD 37I/I	*I,U  31:ST,1;-
 12O


 *
 
 

 
. +/(,,0	8'8 &8 *	8
 
84 *TBC -1*.	#
 #
 *#
 (	#

 
#
 D#
rA   r1   c                  d   e Zd ZU dZdZded<   ded<   d/dZd Zd0d	Zd0d
Z	d1dZ
	 	 	 	 d2dZd3dZd4dZd5dZd5dZd6dZd7dZ e ed             eddd      fdddd	 	 	 	 	 	 	 	 	 d8d       Z e ed             eddd      fdddd	 	 	 	 	 	 	 	 	 d9d       Z	 d:	 	 	 d;dZe eddd       edd !       ed"dd#d$%      f	 	 	 	 	 	 	 d<d&       Z e ed            	 d:	 	 	 d=d'       Z	 d:	 	 	 d=d(Z e ed            	 d:	 	 	 	 	 d>d)       Z e ed            ddd eddd#*       edd+d,*      d eddd#*      f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d?d-       Z e ed            dd eddd#*       edd+d,*      d eddd#*      f	 	 	 	 	 	 	 	 	 	 	 	 	 d@d.       Zy)Ar2   z
    Async view of a Peer.

    Access via `peer.aio`. Provides async versions of all Peer methods.
    Shares state with the parent Peer instance.
    _peerr8   r9   'Peer'r   c                    || _         y r<   r   )r=   ry   s     r?   r@   zPeerAio.__init__  s	    
rA   c                B    | j                   j                  j                  S r<   )r   r7   rC   rD   s    r?   rE   zPeerAio._get_async_http_client  s    zz!!444rA   c                T    t        j                  | j                  j                        S r<   )r   rw   r   rK   rD   s    r?   rH   zPeerAio._get_fetch_route  s    ||DJJ3344rA   c                ~    t        j                  | j                  j                  | j                  j                        S r<   )r   ry   r   rK   rO   rD   s    r?   rL   zPeerAio._get_update_route  s%    {{4::22DJJMMBBrA   c                2    d| j                   j                  iS rN   )r   rO   rD   s    r?   rP   zPeerAio._get_fetch_body  s    djjmm$$rA   c                    t        j                  |      }|j                  xs i |j                  j	                  d      fS rR   )r   rU   rV   rW   rX   r=   rZ   ry   s      r?   r[   zPeerAio._parse_response  s<     **40}}"D$6$6$A$At$A$TTTrA   c                &    || j                   _        y r<   r   r^   r_   s     r?   r`   zPeerAio._set_metadata  s    '

rA   c                L    t        j                  |      | j                  _        y r<   )r   rU   r   rb   rc   s     r?   rd   zPeerAio._set_configuration  s    $.$=$=m$L

!rA   c                6    | j                   j                  xs i S r<   r   rD   s    r?   rf   zPeerAio._get_metadata  s    zz##)r)rA   c                ~    | j                   j                  i S | j                   j                  j                  d      S rR   )r   rb   rX   rD   s    r?   rh   zPeerAio._get_configuration  s5    ::$$,Izz((333FFrA   c                  K   | j                   j                  j                          d{    | j                         j	                  | j                         | j                                d{   }t        j                  |      }|j                  xs i | j                   _
        |j                  | j                   _        | j                   j                  S 7 7 kwrj   Nrk   )r   r7   rv   rE   rm   rH   rP   r   rU   rV   r^   rW   rb   r   s      r?   rn   zPeerAio.get_configuration  s     jj  88:::00277!!#$*>*>*@ 8 
 
 **40#}}2

$($6$6

!zz((( 	;
#   (CCAC/C0A*CCc                   K   | j                         j                  | j                         d|j                  d      i       d{    || j                  _        y7 wrp   )rE   rq   rL   rX   r   rb   rc   s     r?   rr   zPeerAio.set_configuration  sa     ))+//""$!=#;#;#;#NO 0 
 	
 	
 %2

!		
rs   Tr   r   .r   zThe natural language queryr   N)targetr   reasoning_levelc                 K   | j                   j                  j                          d{    t        |      }t        |      }|dd}|r||d<   |r||d<   |r||d<   | j                   j                  j                  j                  t        j                  | j                   j                  | j                   j                        |       d{   }|j                  d      }	|	sy|	S 7 7 w)	z/Query the peer's representation asynchronously.NFr   streamr   r   r   rk   content)r   r7   rv   r+   rC   rm   r   	peer_chatrK   rO   r   )
r=   r   r   r   r   	target_idr   rl   rZ   r  s
             r?   chatzPeerAio.chat  s      jj  88:::v&	(1).%@&DN!4D&5D"#ZZ''::??TZZ44djjmmD @ 
 
 ((9%' 	;
s"   (C.C*B$C.C,C.,C.c                   K    j                   j                  j                          d{    t        |      }t        |      }|dd|r|d<   |r|d<   |r|d<   d fd}t	         |             S 7 Kw)	z>Query the peer's representation with streaming asynchronously.NTr   r   r   r   c            	       K   t        j                  j                  j                  j	                  dt        j                  j                  j                  j                  j                                    2 3 d {   } |  7 
6 y w)NPOSTrk   )	r)   r   r7   rC   r  r   r  rK   rO   )r  rl   r=   s    r?   stream_responsez,PeerAio.chat_stream.<locals>.stream_response  ss     !2

""55<<$$TZZ%<%<djjmmL = " g  "s*   A8B;B?B
 BB
BB)r   zAsyncGenerator[str, None])r   r7   rv   r+   r&   )	r=   r   r   r   r   r  r   r	  rl   s	   `       @r?   chat_streamzPeerAio.chat_stream  s      jj  88:::v&	(1).$?&DN!4D&5D"#	 ,O,=>>- 	;s   (A:A8AA:c                   K    j                   j                  j                          d{     j                   j                  j                  j	                  t        j                   j                   j                   j                   j                        rdind       d{   }d fdd fdt        |t              S 7 7 'w)z9Get all sessions this peer is a member of asynchronously.Nr|   rk   c                X    t        | j                  j                  j                        S r<   )r0   rO   r   r7   r   s    r?   r   z#PeerAio.sessions.<locals>.transform,  s    7::tzz'9'9::rA   c                0  K   j                   j                  j                  j                  t	        j
                  j                   j                  j                   j                        rdind d| i       d {   }t        |t              S 7 wr   )
r   r7   rC   rm   r   peer_sessions_listrK   rO   r"   r   r   s     r?   r   z$PeerAio.sessions.<locals>.fetch_next/  s     "jj00CCHH))$***A*A4::==Q-4i)$tn I  I
 YJOO   A:B=B>Br   r   )r   r7   rv   rC   rm   r   r  rK   rO   r"   r   r   s   `` @@r?   r   zPeerAio.sessions"  s      jj  88:::ZZ''::??%%djj&=&=tzz}}M)0)W%d @ 
 

	;	P 	P 	:FF# 	;
s"   (CCA:C)C*&CCr   r   r   r   r   r   r   c                  K   | j                   j                  j                          d{    | j                   j                  j                  j	                  t        j                  | j                   j                  | j                   j                        |||d       d{   }|D cg c]*  }t        j                  t        j                  |            , c}S 7 7 <c c}w w)zCSearch across all messages with this peer as author asynchronously.Nr   rk   )r   r7   rv   rC   rm   r   peer_searchrK   rO   r    r   r   rU   r   s         r?   r   zPeerAio.search9  s      jj  88:::ZZ''::??tzz66

F WuE @ 
 
 
 %%o&D&DT&JK
 	
 	;

4   (C'CA8C'#C $C',/C"C' C'"C'c                  K   | j                   j                  j                          d{    t        |      }|rd|ind}| j                   j                  j                  j                  t        j                  | j                   j                  | j                   j                        |       d{   }t        j                  |      }|j                  S 7 7 'w)z!Get the peer card asynchronously.Nr   r   )r   r7   rv   r+   rC   r   r   	peer_cardrK   rO   r   rU   )r=   r   r  r   rZ   responses         r?   get_cardzPeerAio.get_cardO  s      jj  88:::v&	)29%ZZ''::>>TZZ44djjmmD ? 
 
 $2248!!! 	;
s"   (CCBC2C3&CCc                z   K   t        j                  dt        d       | j                  |       d{   S 7 w)z#Deprecated: use get_card() instead.z,card() is deprecated, use get_card() instead   )
stacklevel)r   N)warningswarnDeprecationWarningr  )r=   r   s     r?   cardzPeerAio.card`  s6      	:	

 ]]&]1111s   2;9;c                  K   | j                   j                  j                          d{    t        |      }|rd|ind}| j                   j                  j                  j                  t        j                  | j                   j                  | j                   j                        d|i|       d{   }t        j                  |      }|j                  S 7 7 'w)a"  
        Set the peer card for this peer.

        Makes an API call to set the peer card. If a target is provided, sets this
        peer's local card of the target peer.

        Args:
            peer_card: A list of strings to set as the peer card.
            target: Optional target peer for local card. If provided, sets this
                    peer's card of the target peer. Can be a Peer object or peer ID string.

        Returns:
            A list of strings representing the updated peer card, or None if none is available
        Nr   r  r   )r   r7   rv   r+   rC   rq   r   r  rK   rO   r   rU   )r=   r  r   r  r   rZ   r  s          r?   set_cardzPeerAio.set_cardm  s     ( jj  88:::v&	)29%ZZ''::>>TZZ44djjmmDy) ? 
 

 $2248!!! 	;
s"   (CCB
C5C6&CCr   r                 ?c                (  K   | j                   j                  j                          d{    t        |      }t        |      }	i }
|r||
d<   |	r|	|
d<   |||
d<   |||
d<   |||
d<   |||
d<   |||
d<   | j                   j                  j                  j                  t        j                  | j                   j                  | j                   j                        |
	       d{   }t        j                  |      }|j                  S 7 7 'w)
z>Get a subset of the representation of the peer asynchronously.Nr   r   search_querysearch_top_ksearch_max_distanceinclude_most_frequentmax_conclusionsrk   )r   r7   rv   r+   rC   rm   r   peer_representationrK   rO   r   rU   representation)r=   r   r   r$  r%  r&  r'  r(  r   r  rl   rZ   r  s                r?   r*  zPeerAio.representation  s"     jj  88:::(
v&	!!+D&DN##/D ##/D **=D&' ,,AD()&&5D"#ZZ''::??&&tzz'>'>

N @ 
 
 *88>&&&3 	;(
s"   (DDB=D(D)&DDc                  K   | j                   j                  j                          d{    t        |      }i }|r||d<   |||d<   |||d<   |||d<   |||d<   |||d<   | j                   j                  j                  j                  t        j                  | j                   j                  | j                   j                        |r|nd       d{   }	t        j                  |	      S 7 7 w)	z)Get context for this peer asynchronously.Nr   r$  r%  r&  r'  r(  r   )r   r7   rv   r+   rC   r   r   peer_contextrK   rO   r   rU   )
r=   r   r$  r%  r&  r'  r(  r  r   rZ   s
             r?   contextzPeerAio.context  s     jj  88:::v&	 "'E(O#$0E.!#$0E.!*+>E'( ,-BE)*&'6E#$ZZ''::>>

 7 7G %d ? 
 
 #11$77+ 	;"
s"   (C8C4B/C8C6C86C8)ry   r   r   r   r   r   r   r   r   r   )r   r   )rW   r   r   r   )
r   r   r   r   r   r   r   9Literal['minimal', 'low', 'medium', 'high', 'max'] | Noner   
str | None)
r   r   r   r   r   r   r   r.  r   r&   r<   r   r   )r   r   r   list[str] | None)r  z	list[str]r   r   r   r0  )r   r   r   r   r$  r/  r%  
int | Noner&  float | Noner'  bool | Noner(  r1  r   r   )r   r   r$  r/  r%  r1  r&  r2  r'  r3  r(  r1  r   r   )r   r   r   r   r9   r   r@   rE   rH   rL   rP   r[   r`   rd   rf   rh   rn   rr   r   r
   r   r  r
  r   r   r  r  r  r*  r-  r   rA   r?   r2   r2     s    ,6I(5M55C%U"U	4U(M*G
	)2 *TBC 31:VW )-,0 &	
 * 
 D> *TBC 31:VW ? )-,0 ? ? &	 ?
 * ? ? 
& ? D ?F 37G/G	,G.  31:ST,1;-
 12O


 *
 
 

 
* *TBC )-"%" 
" D"$ )-2%2 
2 *TBC )-"" &" 
	" D"> *TBC -1(,#'#(!#<,1$33,G-1&+DQ3&?$')$' &$' !	$'
 !$' *$'  +$' $$' 
$' D$'L *TBC )-#'#(!#<,1$33,G-1&+DQ3&?8%8 !8 !	8
 *8  +8 $8 
8 D8rA   r2   c                  V   e Zd ZU dZdZded<   ded<   dNdZd ZdOd	ZdOd
Z	dPdZ
	 	 	 	 dQdZdRdZdSdZdTdZdTdZdUdZdVdZ	 	 	 	 dWdZ	 	 	 	 dWdZ	 	 	 	 dXdZdYdZdZdZ	 	 	 	 	 	 d[dZe edd      f	 	 	 d\d       Zdd	 	 	 d]dZd^d Zdd!d_d"Z e ed#$      %      d# edd&d'(       edd)       edd*       edd+       ed,d-       edd.d/d01       edd2d3d41       edd5       edd.d/d61      d7
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d`d8       Zdad9Z e edd.d:;       edd<       ed=d.d/d>?      f	 	 	 	 	 	 	 dbd@       Z! e ed#$      %       eddA       eddB       eddC       eddD       eddE      f	 	 	 	 	 	 	 	 	 	 	 dcdF       Z" e ed#$      %      dd edd.d/G       edd2d3G      d edd.d/G      dH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dddI       Z#	 	 de	 	 	 	 	 dfdJZ$ e ed#$      %       eddK       eddL      f	 	 	 	 	 dgdM       Z%y)hr3   z
    Async view of a Session.

    Access via `session.aio`. Provides async versions of all Session methods.
    Shares state with the parent Session instance.
    _sessionr8   r9   	'Session'r6  c                    || _         y r<   r5  )r=   r   s     r?   r@   zSessionAio.__init__  s	    rA   c                B    | j                   j                  j                  S r<   )r6  r7   rC   rD   s    r?   rE   z!SessionAio._get_async_http_client  s    }}$$777rA   c                T    t        j                  | j                  j                        S r<   )r   r   r6  rK   rD   s    r?   rH   zSessionAio._get_fetch_route  s    t}}99::rA   c                ~    t        j                  | j                  j                  | j                  j                        S r<   )r   r   r6  rK   rO   rD   s    r?   rL   zSessionAio._get_update_route  s'    ~~dmm88$--:J:JKKrA   c                2    d| j                   j                  iS rN   )r6  rO   rD   s    r?   rP   zSessionAio._get_fetch_body  s    dmm&&''rA   c                    t        j                  |      }|j                  xs i |j                  j	                  d      fS rR   )r   rU   rV   rW   rX   r=   rZ   r   s      r?   r[   zSessionAio._parse_response  sH     "006%2w'<'<'G'G (H (
 
 	
rA   c                &    || j                   _        y r<   r6  r^   r_   s     r?   r`   zSessionAio._set_metadata  s    "*rA   c                L    t        j                  |      | j                  _        y r<   )r   rU   r6  rb   rc   s     r?   rd   zSessionAio._set_configuration  s    ';'J'J(
$rA   c                6    | j                   j                  xs i S r<   r@  rD   s    r?   rf   zSessionAio._get_metadata  s    }}&&,",rA   c                ~    | j                   j                  i S | j                   j                  j                  d      S rR   )r6  rb   rX   rD   s    r?   rh   zSessionAio._get_configuration  s5    ==''/I}}++66D6IIrA   c                  K   | j                   j                  j                          d{    | j                         j	                  | j                         | j                                d{   }t        j                  |      }|j                  xs i | j                   _
        |j                  | j                   _        | j                   j                  S 7 7 kwr   )r6  r7   rv   rE   rm   rH   rP   r   rU   rV   r^   rW   rb   r>  s      r?   rn   zSessionAio.get_configuration  s     mm##;;===00277!!#$*>*>*@ 8 
 
 "006")"2"2"8b'.'<'<$}}+++ 	>
r   c                   K   | j                         j                  | j                         d|j                  d      i       d{    || j                  _        y7 wrp   )rE   rq   rL   rX   r6  rb   rc   s     r?   rr   zSessionAio.set_configuration  sa     ))+//""$!=#;#;#;#NO 0 
 	
 	
 (5$		
rs   c                h  K   | j                   j                  j                          d{    | j                   j                  j                  j	                  t        j                  | j                   j                  | j                   j                        t        |             d{    y7 7 w)z)Add peers to this session asynchronously.Nrk   )
r6  r7   rv   rC   rm   r   session_peersrK   rO   r(   r=   rw   s     r?   	add_peerszSessionAio.add_peers  s      mm##;;===mm##66;;  !;!;T]]=M=MN(/ < 
 	
 	
 	>	
"   (B2B.A=B2(B0)B20B2c                h  K   | j                   j                  j                          d{    | j                   j                  j                  j	                  t        j                  | j                   j                  | j                   j                        t        |             d{    y7 7 w)z;Set the complete peer list for this session asynchronously.Nrk   )
r6  r7   rv   rC   rq   r   rG  rK   rO   r(   rH  s     r?   	set_peerszSessionAio.set_peers0  s      mm##;;===mm##66::  !;!;T]]=M=MN(/ ; 
 	
 	
 	>	
rJ  c                  K   | j                   j                  j                          d{    t        |t              s|g}|D cg c]   }t        |t
              r|n|j                  " }}| j                   j                  j                  j                  t        j                  | j                   j                  | j                   j                        |       d{    y7 c c}w 7 w)z.Remove peers from this session asynchronously.Nrk   )r6  r7   rv   
isinstancelistr   rO   rC   r   r   rG  rK   )r=   rw   ry   peer_idss       r?   remove_peerszSessionAio.remove_peersA  s     
 mm##;;===%&GEKPQ54JtS1Dtww>5Qmm##66==  !;!;T]]=M=MN > 
 	
 	
 	> R	
s.   (C,C#C,%C%+A2C,C*C,%C,c                  K   | j                   j                  j                          d{    | j                   j                  j                  j	                  t        j                  | j                   j                  | j                   j                               d{   }|j	                  dg       }|D cg c]?  }t        t        j                  |      j                  | j                   j                        A c}S 7 7 cc c}w w)z-Get all peers in this session asynchronously.Nitems)r6  r7   rv   rC   r   r   rG  rK   rO   r/   r   rU   )r=   rZ   
peers_datary   s       r?   rw   zSessionAio.peersQ  s     mm##;;===%)]]%:%:%M%M%Q%Q  !;!;T]]=M=MN&
  
 !%" 5
 #
" ,,T255t}}7L7LM"
 	
 	> 


s5   (DC?A2DDD8AD<DDDc                  K   | j                   j                  j                          d{    t        |t              r|n|j
                  }| j                   j                  j                  j                  t        j                  | j                   j                  | j                   j
                  |             d{   }t        |j                  d      |j                  d            S 7 7 1w)z@Get the configuration for a peer in this session asynchronously.Nobserve_others
observe_me)rV  rW  )r6  r7   rv   rN  r   rO   rC   r   r   session_peer_configrK   r   )r=   ry   peer_idrZ   s       r?   get_peer_configurationz!SessionAio.get_peer_configuration^  s     mm##;;===$T3/$TWW]]**==AA&&**DMM,<,<g
 

 !88$45xx-
 	
 	>
s"   (C0C,BC0<C.=0C0.C0c                  K   | j                   j                  j                          d{    t        |t              r|n|j
                  }i }|j                  |j                  |d<   |j                  |j                  |d<   | j                   j                  j                  j                  t        j                  | j                   j                  | j                   j
                  |      |       d{    y7 7 w)z@Set the configuration for a peer in this session asynchronously.NrV  rW  rk   )r6  r7   rv   rN  r   rO   rV  rW  rC   rq   r   rX  rK   )r=   ry   rW   rY  rl   s        r?   set_peer_configurationz!SessionAio.set_peer_configurationl  s      mm##;;===$T3/$TWW!''3%2%A%AD!"##/!.!9!9Dmm##66::&&**DMM,<,<g 	 ; 
 	
 	
 	>	
s"   (D C<CD 6C>7D >D .zMessages to add to the sessionr   c                >  K   | j                   j                  j                          d{    t        |t              s|g}|D cg c]  }|j                  dd       }}| j                   j                  j                  j                  t        j                  | j                   j                  | j                   j                        d|i       d{   }|D cg c]*  }t        j                  t        j                  |            , c}S 7 c c}w 7 Ac c}w w)z8Add one or more messages to this session asynchronously.NjsonT)moderT   messagesrk   )r6  r7   rv   rN  rO  rX   rC   rm   r   r`  rK   rO   r    r   r   rU   )r=   r`  msgmessages_datarZ   s        r?   add_messageszSessionAio.add_messages  s     mm##;;===(D) zH GO
FNsCNNTN:h 	 
 ]]**==BBOODMM668H8HIm, C 
 
 
 %%o&D&DS&IJ
 	
 	>


s@   (DDDD A4DDD/DDDDN)r|   c                  K    j                   j                  j                          d{     j                   j                  j                  j	                  t        j                   j                   j                   j                   j                        rdind       d{   }ddd fdt        |t              S 7 7 %w)z.Get messages from this session asynchronously.Nr|   rk   c                ,    t        j                  |       S r<   )r    r   r  s    r?   r   z&SessionAio.messages.<locals>.transform  s    ,,X66rA   c                0  K   j                   j                  j                  j                  t	        j
                  j                   j                  j                   j                        rdind d| i       d {   }t        |t              S 7 wr   )
r6  r7   rC   rm   r   messages_listrK   rO   r"   r   r   s     r?   r   z'SessionAio.messages.<locals>.fetch_next  s     "mm33FFKK$$T]]%?%?AQAQR-4i)$tn L  I
 YJOOr  )r  r   r   r    )r   r   r   #AsyncPage[MessageResponse, Message])r6  r7   rv   rC   rm   r   rh  rK   rO   r"   r   r   s   `` @@r?   r`  zSessionAio.messages  s      mm##;;===]]**==BB  !;!;T]]=M=MN)0)W%d C 
 

	7	P 	P 	:FF# 	>
s"   (CCA:C)C*$CCc                R  K   | j                   j                  j                          d{    | j                   j                  j                  j	                  t        j                  | j                   j                  | j                   j                               d{    y7 x7 w)z#Delete this session asynchronously.N)	r6  r7   rv   rC   r   r   r   rK   rO   rD   s    r?   r   zSessionAio.delete  sw     mm##;;===mm##66==NN4==55t}}7G7GH
 	
 	
 	>	
s"   (B'B#A2B'B%B'%B')
message_idc                 K   | j                   j                  j                          d{    i }|||d<   | j                   j                  j                  j	                  t        j                  | j                   j                  | j                   j                        |r|nd       d{   }t        j                  |      }t        |j                  | j                   j                  |j                  |j                        S 7 7 \w)z"Clone this session asynchronously.Nrk  r   rt   )r6  r7   rv   rC   rm   r   session_clonerK   rO   r   rU   r0   rV   rW   )r=   rk  r   rZ   cloneds        r?   clonezSessionAio.clone  s     mm##;;=== "!",E,]]**==BB  !;!;T]]=M=MN %d C 
 
 !//5IIMM!!__ ..	
 	
 	>

s#   (DDBD,D	-AD	DTr   r   r   z2Maximum number of tokens to include in the context)gtr   zA peer ID to get context for.zSA query string (or Message object) used to fetch semantically relevant conclusions.z1A peer ID to get context from the perspective of.Fz9Whether to limit the representation to this session only.r   r   z0Number of semantically relevant facts to return.)r   r   r   r!  r"  z7Maximum semantic distance for search results (0.0-1.0).zGWhether to include the most frequent conclusions in the representation.z?Maximum number of conclusions to include in the representation.)
summarytokenspeer_targetr$  peer_perspectivelimit_to_sessionr%  r&  r'  r(  c       
   
       K   | j                   j                  j                          d{    ||t        d      ||t        d      t	        |t
              r|j                  n|}||d}|||d<   |||d<   |||d<   |||d<   |||d	<   |||d
<   |	|	|d<   |
|
|d<   | j                   j                  j                  j                  t        j                  | j                   j                  | j                   j                        |       d{   }d}|j                  d      r$|d   }t        |d   |d   |d   |d   |d         }|j                  dg       D cg c]*  }t        j                  t        j                   |            , }}t#        | j                   j                  |||j                  d      rt%        |j                  d            nd|j                  d            S 7 7 c c}w w)z6Get optimized context for this session asynchronously.NzDYou must provide a `peer_target` when `peer_perspective` is providedz@You must provide a `peer_target` when `search_query` is provided)rq  ru  rr  r$  rs  rt  r%  r&  r'  r(  r   rq  r  rk  summary_type
created_attoken_countr  rk  rw  rx  ry  r`  r)  r  )r   r`  rq  r)  r  )r6  r7   rv   
ValueErrorrN  r    r  rC   r   r   session_contextrK   rO   r%   r   r   rU   r#   r   )r=   rq  rr  rs  r$  rt  ru  r%  r&  r'  r(  search_query_textr   rZ   session_summarysra  r`  s                     r?   r-  zSessionAio.context  sQ    ` mm##;;===#3#?V  <#;R 
 %/|W$EL  < 	
  0!
 $E(O($5E.!"#.E- '(8E$%#$0E.!*+>E'( ,-BE)*&'6E#$]]**==AA""4==#=#=t}}?O?OP B 
 

 88IYA%)\?~.\?m,O xx
B/
/ %%o&D&DS&IJ/ 	 

 }}''#xx-. !$DHH-B$C Dhh{+
 	
s 	>H
 
s6   (HG7C-HG:AH(/G<A!H:H<Hc                  K   | j                   j                  j                          d{    | j                   j                  j                  j	                  t        j                  | j                   j                  | j                   j                               d{   }d}|j	                  d      r$|d   }t        |d   |d   |d   |d   |d         }d}|j	                  d	      r$|d	   }t        |d   |d   |d   |d   |d         }t        |j	                  d
      xs | j                   j                  ||      S 7 7 w)z8Get available summaries for this session asynchronously.Nshort_summaryr  rk  rw  rx  ry  rz  long_summaryrO   )rO   r  r  )r6  r7   rv   rC   r   r   session_summariesrK   rO   r%   r$   )r=   rZ   r  r  r  s        r?   	summarieszSessionAio.summaries>  s=    mm##;;===]]**==AA$$T]]%?%?AQAQR
 
 88O$_%A#)\?~.\?m,M 88N#^$A")\?~.\?m,L  xx~1!1!1'%
 	
7 	>
s#   (E
EA2E
EB(E
E
r   r   r   r   r   r   c                  K   | j                   j                  j                          d{    | j                   j                  j                  j	                  t        j                  | j                   j                  | j                   j                        |||d       d{   }|D cg c]*  }t        j                  t        j                  |            , c}S 7 7 <c c}w w)z3Search for messages in this session asynchronously.Nr   rk   )r6  r7   rv   rC   rm   r   session_searchrK   rO   r    r   r   rU   )r=   r   r|   r   rZ   ra  s         r?   r   zSessionAio.searcha  s      mm##;;===]]**==BB!!$--"<"<dmm>N>NO WuE C 
 
 
 %%o&D&DS&IJ
 	
 	>

r  zxFile to upload. Can be a file object, (filename, bytes, content_type) tuple, or (filename, fileobj, content_type) tuple.z9The peer creating the messages (ID string or Peer object)z;Optional metadata dictionary to associate with the messagesz@Optional configuration dictionary to associate with the messagesz/Optional created-at timestamp for the messages.c                  K   | j                   j                  j                          d{    t        |      \  }}}t	        |t
              r|n|j                  }	d|	i}
|t        j                  |      |
d<   |t        j                  |      |
d<   t        |      }|||
d<   | j                   j                  j                  j                  t        j                  | j                   j                  | j                   j                        d|||fi|
       d{   }|D cg c]*  }t        j                   t#        j$                  |            , c}S 7 -7 =c c}w w)z@Upload file to create message(s) in this session asynchronously.NrY  rV   rW   rx  file)filesrZ   )r6  r7   rv   r*   rN  r   rO   r^  dumpsr'   rC   uploadr   messages_uploadrK   r    r   r   rU   )r=   r  ry   rV   rW   rx  filenamecontent_bytescontent_typeresolved_peer_id	data_dictcreated_at_isor  ra  s                 r?   upload_filezSessionAio.upload_filew  sJ    0 mm##;;===0G0M--#-dC#84dgg%.0@$A	$(JJx$8Ij!$)-M)BIo&(4%&4Il#..AAHH""4==#=#=t}}?O?OPHm\BC I 
 
  
 %%o&D&DS&IJ
 	
' 	>

s4   (E!EC1E!EE!%/EE!E!E!r   )r   r$  r%  r&  r'  r(  c                 K   | j                   j                  j                          d{    t        |      }t        |      }	d| j                   j                  i}
|	r|	|
d<   |||
d<   |||
d<   |||
d<   |||
d<   |||
d<   | j                   j                  j
                  j                  t        j                  | j                   j                  |      |
	       d{   }t        j                  |      }|j                  S 7 7 'w)
zNGet a subset of the representation of the peer in this session asynchronously.Nr   r   r$  r%  r&  r'  r(  rk   )r6  r7   rv   r+   rO   rC   rm   r   r)  rK   r   rU   r*  )r=   ry   r   r$  r%  r&  r'  r(  rY  r  r   rZ   r  s                r?   r*  zSessionAio.representation  s     mm##;;===T"v&	!-t}}/?/? @'E(O#$0E.!#$0E.!*+>E'( ,-BE)*&'6E#$]]**==BB&&t}}'A'A7K C 
 
 *88>&&&/ 	>$
s"   (DD	B8D#D$&DDc                  K   | j                   j                  j                          d{    t        |      }t        |      }d| j                   j                  i}|r||d<   |r||d<   | j                   j                  j
                  j                  t        j                  | j                   j                        |       d{   }t        j                  |      S 7 7 w)z@Get the queue processing status for this session asynchronously.Nr   r   r   r   )r6  r7   rv   r+   rO   rC   r   r   r   rK   r   rU   )r=   r   r   r   r   r   rZ   s          r?   r   zSessionAio.queue_status  s      mm##;;===)(3'/!-t}}/?/? @#7E- !3E+]]**==AA))$--*D*DE B 
 
 #11$77 	>
s"   (C$C BC$C"C$"C$z*The Message object or message ID to updatez&The metadata to update for the messagec                  K   | j                   j                  j                          d{    t        |t              r|j
                  n|}| j                   j                  j                  j                  t        j                  | j                   j                  | j                   j
                  |      d|i       d{   }t	        j                  t        j                  |            S 7 7 .w)z7Update message metadata in this session asynchronously.NrV   rk   )r6  r7   rv   rN  r    rO   rC   rq   r   messagerK   r   r   rU   )r=   r  rV   rk  rZ   s        r?   update_messagezSessionAio.update_message  s      mm##;;===#-gw#?WZZW
]]**==AANN4==55t}}7G7GTh' B 
 
 (()G)G)MNN 	>
s"   (C1C-BC1 C/-C1/C1)r   r7  r   r   r   r   r   r   r   r   )r   r   )rW   r   r   r   )rw   zstr | PeerBase | tuple[str, SessionPeerConfig] | tuple[PeerBase, SessionPeerConfig] | list[PeerBase | str] | list[tuple[PeerBase | str, SessionPeerConfig]] | list[PeerBase | str | tuple[PeerBase | str, SessionPeerConfig]]r   r   )rw   z%str | PeerBase | list[PeerBase | str]r   r   )r   z
list[Peer])ry   r   r   r   )ry   r   rW   r   r   r   )r`  z/MessageCreateParams | list[MessageCreateParams]r   r   )r|   r   r   ri  )r   r   )rk  r/  r   r0   )rq  boolrr  r1  rs  r/  r$  zstr | Message | Nonert  r/  ru  r  r%  r1  r&  r2  r'  r3  r(  r1  r   r#   )r   r$   r   )r  z3tuple[str, bytes, str] | tuple[str, Any, str] | Anyry   r   rV   r   rW   zdict[str, Any] | Nonerx  zstr | datetime | Noner   r   )ry   r   r   r   r$  r/  r%  r1  r&  r2  r'  r3  r(  r1  r   r   r   )r   r   r   r   r   r   )r  zMessage | strrV   r   r   r    )&r   r   r   r   r9   r   r@   rE   rH   rL   rP   r[   r`   rd   rf   rh   rn   rr   rI  rL  rQ  rw   rZ  r\  r   r   rc  r`  r   ro  r
   r-  r  r   r  r*  r   r  r   rA   r?   r3   r3     s    ,9I(8 8;L(
"
	4
+
-J
	,5
J
 

"
J
 

"
4
 

 


"
3D
	
&  EJ=E

A

 

 
6 -1G *G 
-	G2
 7; 
& *TBC "Q$X
 #(7#
 .3m.
 (-K(
 "'S"
 $)J	$
 -2Q	-
 .3a.
 ',Y	'
Op
 p
 	p
  p
 +p
 %p
& 'p
. !/p
: *;p
F  +Gp
N $Op
Z 
[p
 Dp
d!
F  31:ST,1;-
 12O


 *
 
 

 
* *TBC EJ SE
  %X 
 .3U.
 05Z0
 -2I-
#-
A-
 -
 +-
 --
" *#-
* 
+-
 D-
^ *TBC
 )-#'#(!#<,1$33,G-1&+DQ3&?#'#' &	#'
 !#' !#' *#'  +#' $#' 
#' D#'N +/(,8'8 &8 
	8, *TBC "'I"
 ',E'
OO
 $O 
O DOrA   r3   c                      e Zd ZU dZdZded<   ded<   ddZ	 	 	 d	 	 	 	 	 	 	 dd	Z	 	 d	 	 	 	 	 	 	 dd
ZddZ		 	 	 	 ddZ
	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZy)r4   z
    Async view of a ConclusionScope.

    Access via `scope.aio`. Provides async versions of all ConclusionScope methods.
    Shares state with the parent ConclusionScope instance.
    _scoper8   r9   'ConclusionScope'r  c                    || _         y r<   r  )r=   scopes     r?   r@   zConclusionScopeAio.__init__  s	    rA   Nc                   K    j                   j                  j                          d{    t        |      } j                   j                   j                   j
                  d|r|d<    j                   j                  j                  j                  t        j                   j                   j                        di|d       d{   }d	d	 	 	 	 d
 fdt        |t              S 7 7 *w)z.List conclusions in this scope asynchronously.Nr   observed_idr   r|   r   sizer   c                ,    t        j                  |       S r<   )r   r   rf  s    r?   r   z*ConclusionScopeAio.list.<locals>.transform  s    //99rA   c                   K   j                   j                  j                  j                  t	        j
                  j                   j                        di| d       d {   }t        |t              S 7 w)Nr|   r  r   )	r  r7   rC   rm   r   conclusions_listrK   r"   r   )r   r   r   r|   r=   r  r   s     r?   r   z+ConclusionScopeAio.list.<locals>.fetch_next  su      #kk11DDII''(@(@A)#T2 J  I
 Y(:IzRRs   A"A>%A<&A>)r  r   r   r   )r   r   r   )AsyncPage[ConclusionResponse, Conclusion])r  r7   rv   r+   r   r   rC   rm   r   r  rK   r"   r   )	r=   r   r  r   r   rZ   r   r|   r   s	   ` `   @@@r?   rO  zConclusionScopeAio.list  s      kk!!99;;;(1;;//;;//#
 $7GL![[((;;@@##DKK$<$<=W%. A 
 
	:	S	S6	S 	S 19jII9 	<
s"   (DC=B$DC?)D?Dc                  K   | j                   j                  j                          d{    | j                   j                  | j                   j                  d}|||d}|||d<   | j                   j                  j
                  j                  t        j                  | j                   j                        |       d{   }|D cg c]*  }t        j                  t        j                  |            , c}S 7 7 <c c}w w)z/Semantic search for conclusions asynchronously.Nr  )r   top_kr|   distancerk   )r  r7   rv   r   r   rC   rm   r   conclusions_queryrK   r   r   r   rU   )r=   r   r  r  r|   rl   rZ   r   s           r?   r   zConclusionScopeAio.query+  s      kk!!99;;;;;//;;//#
  

 'D[[((;;@@$$T[[%=%=> A 
 
 
 (();)J)J4)PQ
 	
% 	<

s4   (DC?BDDD/D<DDDc                *  K   | j                   j                  j                          d{    | j                   j                  j                  j	                  t        j                  | j                   j                  |             d{    y7 d7 w)z)Delete a conclusion by ID asynchronously.N)r  r7   rv   rC   r   r   
conclusionrK   )r=   conclusion_ids     r?   r   zConclusionScopeAio.deleteI  so     kk!!99;;;kk!!44;;dkk66F
 	
 	
 	<	
s"   (BBAB	B
BBc                   K    j                   j                  j                          d{    	 	 	 	 d fd}|D cg c]
  } ||       }} j                   j                  j                  j	                  t        j                   j                   j                        d|i       d{   }|D cg c]*  }t        j                  t        j                  |            , c}S 7 c c}w 7 Ac c}w w)z0Create conclusions in this scope asynchronously.Nc                   j                   j                  j                   j                  d}t        | t              r,| j
                  |d<   | j                  | j                  |d<   |S | d   |d<   | j                  d      }|||d<   |S )z)Build a single conclusion create payload.r  r  r   )r  r   r   rN  r.   r  r   r   )r   payloadr   r=   s      r?   build_conclusion_payloadz;ConclusionScopeAio.create.<locals>.build_conclusion_payloadW  s    
  ${{33#{{33'G $ 67%)\\	"??.,0OOGL)!%iGI,/J%(2%NrA   conclusionsrk   )r   z'ConclusionCreateParams | dict[str, Any]r   r   )r  r7   rv   rC   rm   r   r  rK   r   r   r   rU   )r=   r  r  cconclusion_paramsrZ   r   s   `      r?   createzConclusionScopeAio.createP  s     
 kk!!99;;;	9		( CNN+Q5a8+N[[((;;@@t{{778!23 A 
 
 
 (();)J)J4)PQ
 	
9 	<, O

s?   (C5C'C5C)AC5,C.-C55/C0$C5)C50C5c                  K   | j                   j                  j                          d{    d| j                   j                  i}|||d<   |||d<   |||d<   |||d<   |||d<   | j                   j                  j                  j                  t        j                  | j                   j                  | j                   j                        |       d{   }t        j                  |      }|j                  S 7 7 'w)	z>Get the computed representation for this scope asynchronously.Nr   r$  r%  r&  r'  r(  rk   )r  r7   rv   r   rC   rm   r   r)  rK   r   r   rU   r*  )	r=   r$  r%  r&  r'  r(  rl   rZ   r  s	            r?   r*  z!ConclusionScopeAio.representationv  s     kk!!99;;; ($++*>*>?##/D ##/D **=D&' ,,AD()&&5D"#[[((;;@@&&t{{'?'?AUAUV A 
 
 *88>&&&% 	<
s"   (DD B/DD&DD)r  r  r   r   )r   2   N)r   r   r  r   r   r   r   r  )r   N)r   r   r  r   r  r2  r   list[Conclusion])r  r   r   r   )r  z-list[ConclusionCreateParams | dict[str, Any]]r   r  )NNNNN)r$  r/  r%  r1  r&  r2  r'  r3  r(  r1  r   r   )r   r   r   r   r9   r   r@   rO  r   r   r  r*  r   rA   r?   r4   r4     s     ,7I(6
 ,0	#J#J #J *	#J
 
3#JP !%	

 
 	

 

<
$
B$
 
$
P $(#',0-1&*' ' !' *	'
  +' $' 
'rA   r4   )Jr   
__future__r   r^  loggingr  collections.abcr   r   typingr   r   r   r	   pydanticr
   r   r   	api_typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   baser   r   r  r   httpr   r  r    mixinsr!   
paginationr"   r|  r#   r$   r%   typesr&   utilsr'   r(   r)   r*   r+   clientr,   r-   r.   ry   r/   r   r0   	getLoggerr   logger__all__r1   r2   r3   r4   r   rA   r?   <module>r     s   ( #    *  8 8 5 5     ( #   , ! F F /  , /  			8	$E
( E
P
y8& y8x	^O) ^OBY' Y'rA   