
    Y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jB        eC          ZDg dZE G d de+          ZF G d de+          ZG G d de+          ZH G d d           ZIdS )!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<   dMd
Zd ZdNdZdNdZ	dOdZ
dPdZdQdZdRdZdSdZdSdZdTdZdUdZddddVd$Z	 dWdXd'ZddddYd*Z	 dWdZd,Z	 dWd[d.Zd\d0Ze ed1d2d34           edd56           ed7d2d8d9:          fd]d?            Z	 	 	 d^d_dFZ e edGH          I          	 	 d`dadL            ZdS )br1   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   honchoreturnNonec                    || _         d S Nr6   )selfr;   s     Q/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/honcho/aio.py__init__zHonchoAio.__init__^   s        c                    | j         j        S r?   )r7   _async_http_clientr@   s    rA   _get_async_http_clientz HonchoAio._get_async_http_clientb   s    |..rC   strc                (    t          j                    S r?   )r   
workspacesrF   s    rA   _get_fetch_routezHonchoAio._get_fetch_routee   s     """rC   c                >    t          j        | j        j                  S r?   )r   	workspacer7   workspace_idrF   s    rA   _get_update_routezHonchoAio._get_update_routeh   s     9:::rC   dict[str, Any]c                    d| j         j        iS Nid)r7   rN   rF   s    rA   _get_fetch_bodyzHonchoAio._get_fetch_bodyk   s    dl/00rC   data+tuple[dict[str, object], dict[str, object]]c                r    t          j        |          }|j        pi |j                            d          fS NTexclude_none)r   model_validatemetadataconfiguration
model_dumpr@   rU   rM   s      rA   _parse_responsezHonchoAio._parse_responsen   sG     &4T::	!'R)@)K)K *L *
 *
 
 	
rC   r\   dict[str, object]c                    || j         _        d S r?   r7   	_metadatar@   r\   s     rA   _set_metadatazHonchoAio._set_metadataw   s    !)rC   r]   c                B    t          j        |          | j        _        d S r?   )r   r[   r7   _configurationr@   r]   s     rA   _set_configurationzHonchoAio._set_configurationz   s"    &<&K'
 '
###rC   c                    | j         j        pi S r?   rc   rF   s    rA   _get_metadatazHonchoAio._get_metadata   s    |%++rC   c                ^    | j         j        i S | j         j                            d          S rX   )r7   rh   r^   rF   s    rA   _get_configurationzHonchoAio._get_configuration   s.    <&.I|*5545HHHrC   r   c                4  K   |                                                      |                                 |                                            d{V }t	          j        |          }|j        pi | j        _        |j	        | j        _
        | j        j
        S )1Get configuration from the server asynchronously.bodyN)rG   postrK   rT   r   r[   r\   r7   rd   r]   rh   r_   s      rA   get_configurationzHonchoAio.get_configuration   s      002277!!##$*>*>*@*@ 8 
 
 
 
 
 
 
 
 &4T::	!*!3!9r&/&=#|**rC   c                   K   |                                                      |                                 d|                    d          i           d{V  || j        _        dS z/Set configuration on the server asynchronously.r]   TrY   rq   N)rG   putrO   r^   r7   rh   ri   s     rA   set_configurationzHonchoAio.set_configuration   s      ))++//""$$!=#;#;#;#N#NO 0 
 
 	
 	
 	
 	
 	
 	
 	
 '4###rC   Nr\   r]   rS   dict[str, object] | NonePeerConfig | Noner/   c                 K   ||| j                                          d{V  d|i}|||d<   ||                    d          |d<   | j         j                            t          j        | j         j                  |           d{V }t          j	        |          }t          || j         |j        |j                  S t          || j         ||          S )	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
        NrS   r\   TrY   r]   rq   ry   )r7   _ensure_workspace_asyncr^   rE   rs   r   peersrN   r   r[   r/   r\   r]   )r@   rS   r\   r]   rr   rU   	peer_datas          rA   peerzHonchoAio.peer   s     $ $(<,66888888888$(":D##+Z ((5(@(@d(@(S(S_%8==T\677d >        D %3D99I"+'5	    Bx}UUUUrC   filtersAsyncPage[PeerResponse, Peer]c                *   K    j                                          d{V   j         j                            t	          j         j         j                  rdind           d{V }d fdd fdt          |t                    S )z
        Get all peers in the current workspace asynchronously.

        Returns:
            An AsyncPage of Peer objects
        Nr   rq   r   r   r<   r/   c                R    t          | j        j        | j        | j                  S Nry   )r/   rS   r7   r\   r]   )r   r@   s    rA   	transformz"HonchoAio.peers.<locals>.transform   s/    "0	   rC   pageintr   c                   K   j         j                            t          j        j         j                  rdind d| i           d {V }t          |t                    S Nr   r   rr   query)r7   rE   rs   r   
peers_listrN   r"   r   r   	next_data
fetch_nextr   r@   r   s     rA   r   z#HonchoAio.peers.<locals>.fetch_next   s      "l=BB!$,";<<-4>i))$tn C        I
 YiLLLrC   )r   r   r<   r/   )r   r   r<   r   )	r7   r}   rE   rs   r   r   rN   r"   r   r@   r   rU   r   r   s   `` @@rA   r~   zHonchoAio.peers   s       l22444444444\499dl788)0:)W%%d : 
 
 
 
 
 
 
 

	 	 	 	 	 		M 	M 	M 	M 	M 	M 	M 	M 	M |Y
CCCrC   SessionConfiguration | Noner0   c                 K   ||| j                                          d{V  d|i}|||d<   ||                    d          |d<   | j         j                            t          j        | j         j                  |           d{V }t          j	        |          }t          || j         |j        |j                  S t          || j         ||          S )	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
        NrS   r\   TrY   r]   rq   ry   )r7   r}   r^   rE   rs   r   sessionsrN   r   r[   r0   r\   r]   )r@   rS   r\   r]   rr   rU   session_datas          rA   sessionzHonchoAio.session   s     $ $(<,66888888888$(":D##+Z ((5(@(@d(@(S(S_%8== 9:: >        D +9$??L%.*8	    r4<(-XXXXrC   #AsyncPage[SessionResponse, Session]c                *   K    j                                          d{V   j         j                            t	          j         j         j                  rdind           d{V }d fdd fdt          |t                    S )z
        Get all sessions in the current workspace asynchronously.

        Returns:
            An AsyncPage of Session objects
        Nr   rq   r   r   r<   r0   c                R    t          | j        j        | j        | j                  S r   )r0   rS   r7   r\   r]   r   r@   s    rA   r   z%HonchoAio.sessions.<locals>.transform  s0    
 )%3	   rC   r   r   r   c                   K   j         j                            t          j        j         j                  rdind d| i           d {V }t          |t                    S r   )r7   rE   rs   r   sessions_listrN   r"   r   r   s     rA   r   z&HonchoAio.sessions.<locals>.fetch_next   s      "l=BB$T\%>??-4>i))$tn C        I
 YJOOOrC   r   r   r<   r0   r   r   r<   r   )	r7   r}   rE   rs   r   r   rN   r"   r   r   s   `` @@rA   r   zHonchoAio.sessions	  s       l22444444444\499 !:;;)0:)W%%d : 
 
 
 
 
 
 
 

	 	 	 	 	 		P 	P 	P 	P 	P 	P 	P 	P 	P 	:FFFrC   !AsyncPage[WorkspaceResponse, str]c                    K    j         j                            t          j                    rdind           d{V }ddd fdt          |t                    S )z%Get all workspace IDs asynchronously.r   Nrq   rM   r   r<   rH   c                    | j         S r?   )rS   )rM   s    rA   r   z'HonchoAio.workspaces.<locals>.transform3  s
    <rC   r   r   r   c                   K   j         j                            t          j                    rdind d| i           d {V }t          |t                    S r   r7   rE   rs   r   workspaces_listr"   r   r   s     rA   r   z(HonchoAio.workspaces.<locals>.fetch_next6  s      "l=BB&((-4>i))$tn C        I
 Y(99jQQQrC   )rM   r   r<   rH   )r   r   r<   r   r   r   s   `` @@rA   rJ   zHonchoAio.workspaces*  s       \499"$$)0:)W%%d : 
 
 
 
 
 
 
 

	  	  	  	 	R 	R 	R 	R 	R 	R 	R 	R 	R 0)ZHHHrC   rN   c                x   K   | j         j                            t          j        |                     d{V  dS )z"Delete a workspace asynchronously.N)r7   rE   deleter   rM   )r@   rN   s     rA   delete_workspacezHonchoAio.delete_workspace@  sB      l-44V5El5S5STTTTTTTTTTTrC   .r   The search query to use
min_lengthdescriptionFilters to scope the searchr   
   d   Number of results to returndefaultgeler   r   limitr   list[Message]c                   K   | j                                          d{V  | j         j                            t	          j        | j         j                  |||d           d{V }d |D             S )z<Search for messages in the current workspace asynchronously.Nr   r   r   rq   c                Z    g | ](}t          j        t          j        |                    )S  r    from_api_responser   r[   .0items     rA   
<listcomp>z$HonchoAio.search.<locals>.<listcomp>U  >     
 
 
 %o&DT&J&JKK
 
 
rC   )r7   r}   rE   rs   r   workspace_searchrN   r@   r   r   r   rU   s        rA   searchzHonchoAio.searchD  s       l22444444444\499#DL$=>> WuEE : 
 
 
 
 
 
 
 

 

 
 
 	
rC   observerstr | PeerBase | Nonesenderr   str | SessionBase | Noner   c                  K   | j                                          d{V  t          |          }t          |          }t          |          }i }|r||d<   |r||d<   |r||d<   | j         j                            t          j        | j         j                  |r|nd           d{V }t          j	        |          S )z+Get queue processing status asynchronously.Nobserver_id	sender_id
session_idr   )
r7   r}   r+   rE   getr   workspace_queue_statusrN   r   r[   )	r@   r   r   r   resolved_observer_idresolved_sender_idresolved_session_idr   rU   s	            rA   queue_statuszHonchoAio.queue_statusZ  s      l22444444444)(33'//(11 " 	8#7E-  	4!3E+ 	6"5E,\488)$,*CDD *%%d 9 
 
 
 
 
 
 
 
 #1$777rC   Tarbitrary_types_allowedconfigstr | PeerBaseobservedc                :  K   | j                                          d{V  t          |          }t          |          }|rt          |          n|}| j         j                            t          j        | j         j                  |||dd           d{V  dS )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   r   r   
dream_typerq   )r7   r}   r+   rE   rs   r   workspace_schedule_dreamrN   )r@   r   r   r   r   r   resolved_observed_ids          rA   schedule_dreamzHonchoAio.schedule_dreamt  s      * l22444444444)(33(11$,FJx   2F 	 l-22+DL,EFF001$	  3 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   )r;   r:   r<   r=   r<   rH   r<   rP   rU   rP   r<   rV   r\   ra   r<   r=   r]   ra   r<   r=   r<   ra   )r<   r   )r]   r   r<   r=   )rS   rH   r\   rz   r]   r{   r<   r/   r?   )r   rz   r<   r   )rS   rH   r\   rz   r]   r   r<   r0   r   rz   r<   r   )r   rz   r<   r   )rN   rH   r<   r=   r   rH   r   rz   r   r   r<   r   )NNN)r   r   r   r   r   r   r<   r   NN)r   r   r   r   r   r   r<   r=   )__name__
__module____qualname____doc__r9   __annotations__rB   rG   rK   rO   rT   r`   rf   rj   rl   rn   rt   rx   r   r~   r   r   rJ   r   r   r   r   r   r
   r   r   rC   rA   r1   r1   S   s          ,8I7777   / / /# # # #; ; ; ;1 1 1 1
 
 
 
* * * *
 
 
 
, , , ,I I I I
+ + + +4 4 4 4 .2+/%V %V %V %V %V %VP 37D D D D DJ .259%Y %Y %Y %Y %Y %YP 37G G G G GD 37I I I I I,U U U U  U31:STTT,1E;-
 -
 -
 U12O
 
 

 
 
 
 ]
. +/(,,0	8 8 8 8 84 ]**TBBBCCC -1*.	#
 #
 #
 #
 DC#
 #
 #
rC   r1   c                     e Zd ZU dZdZded<   ded<   dUd
Zd ZdVdZdVdZ	dWdZ
dXdZdYdZdZdZd[dZd[dZd\dZd]dZ e ed                      ed!d"d#$          fd%d%d%d&d^d/            Z e ed                      ed!d"d#$          fd%d%d%d&d_d1            Z	 d`dad5Ze ed!d"d6$           ed%d78           ed9d"d:d;<          fdbd@            Z e ed                     	 d`dcdB            Z	 d`dcdCZ e ed                     	 d`dddF            Z e ed                     d%d%d% ed%d"d:G           ed%dHdIG          d% ed%d"d:G          fdedR            Z e ed                     d%d% ed%d"d:G           ed%dHdIG          d% ed%d"d:G          fdfdT            Zd%S )gr2   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   r   r<   r=   c                    || _         d S r?   r   )r@   r   s     rA   rB   zPeerAio.__init__  s    


rC   c                $    | j         j        j        S r?   )r   r7   rE   rF   s    rA   rG   zPeerAio._get_async_http_client  s    z!44rC   rH   c                >    t          j        | j        j                  S r?   )r   r~   r   rN   rF   s    rA   rK   zPeerAio._get_fetch_route  s    |DJ3444rC   c                T    t          j        | j        j        | j        j                  S r?   )r   r   r   rN   rS   rF   s    rA   rO   zPeerAio._get_update_route  s    {4:2DJMBBBrC   rP   c                    d| j         j        iS rR   )r   rS   rF   s    rA   rT   zPeerAio._get_fetch_body  s    djm$$rC   rU   rV   c                r    t          j        |          }|j        pi |j                            d          fS rX   )r   r[   r\   r]   r^   r@   rU   r   s      rA   r`   zPeerAio._parse_response  s:     *400}"D$6$A$At$A$T$TTTrC   r\   ra   c                    || j         _        d S r?   r   rd   re   s     rA   rf   zPeerAio._set_metadata  s    '
rC   r]   c                B    t          j        |          | j        _        d S r?   )r   r[   r   rh   ri   s     rA   rj   zPeerAio._set_configuration  s    $.$=m$L$L
!!!rC   c                    | j         j        pi S r?   r   rF   s    rA   rl   zPeerAio._get_metadata  s    z#)r)rC   c                ^    | j         j        i S | j         j                            d          S rX   )r   rh   r^   rF   s    rA   rn   zPeerAio._get_configuration  s.    :$,Iz(333FFFrC   r   c                |  K   | j         j                                         d{V  |                                                     |                                 |                                            d{V }t          j        |          }|j	        pi | j         _
        |j        | j         _        | j         j        S rp   Nrq   )r   r7   r}   rG   rs   rK   rT   r   r[   r\   rd   r]   rh   r   s      rA   rt   zPeerAio.get_configuration  s      j 88:::::::::002277!!##$*>*>*@*@ 8 
 
 
 
 
 
 
 
 *400#}2
$($6
!z((rC   c                   K   |                                                      |                                 d|                    d          i           d{V  || j        _        dS rv   )rG   rw   rO   r^   r   rh   ri   s     rA   rx   zPeerAio.set_configuration  s      ))++//""$$!=#;#;#;#N#NO 0 
 
 	
 	
 	
 	
 	
 	
 	
 %2
!!!rC   Tr   r   .r   zThe natural language queryr   N)targetr   reasoning_levelr   r  r   r   r   r  9Literal['minimal', 'low', 'medium', 'high', 'max'] | None
str | Nonec                 K   | j         j                                         d{V  t          |          }t          |          }|dd}|r||d<   |r||d<   |r||d<   | j         j        j                            t          j        | j         j        | j         j	                  |           d{V }|
                    d          }	|	sdS |	S )	z/Query the peer's representation asynchronously.NFr   streamr  r   r  rq   content)r   r7   r}   r+   rE   rs   r   	peer_chatrN   rS   r   )
r@   r   r  r   r  	target_idr   rr   rU   r  s
             rA   chatzPeerAio.chat  s      j 88:::::::::v&&	(11).%@@ 	'&DN 	5!4D 	6&5D"#Z':??TZ4djmDD @ 
 
 
 
 
 
 
 
 ((9%% 	4rC   r&   c                   K    j         j                                         d{V  t          |          }t          |          }|dd|r|d<   |r|d<   |r|d<   d
 fd	}t	           |                      S )z>Query the peer's representation with streaming asynchronously.NTr  r  r   r  r<   AsyncGenerator[str, None]c            	       K   t          j        j        j                            dt          j        j        j        j        j                                      2 3 d {V } | W V  6 d S )NPOSTrq   )	r)   r   r7   rE   r  r   r	  rN   rS   )r  rr   r@   s    rA   stream_responsez,PeerAio.chat_stream.<locals>.stream_response  s      !2
"5<<$TZ%<djmLL =  " "       g " " "s   A,)r<   r  )r   r7   r}   r+   r&   )	r@   r   r  r   r  r
  r   r  rr   s	   `       @rA   chat_streamzPeerAio.chat_stream  s       j 88:::::::::v&&	(11).$?? 	'&DN 	5!4D 	6&5D"#	 	 	 	 	 	 	 ,OO,=,=>>>rC   r   rz   r   c                T   K    j         j                                         d{V   j         j        j                            t          j         j         j         j         j                  rdind           d{V }d fdd fdt          |t                    S )z9Get all sessions this peer is a member of asynchronously.Nr   rq   r   r   r<   r0   c                B    t          | j        j        j                  S r?   )r0   rS   r   r7   r   s    rA   r   z#PeerAio.sessions.<locals>.transform,  s    7:tz'9:::rC   r   r   r   c                   K   j         j        j                            t	          j        j         j        j         j                  rdind d| i           d {V }t          |t                    S r   )
r   r7   rE   rs   r   peer_sessions_listrN   rS   r"   r   r   s     rA   r   z$PeerAio.sessions.<locals>.fetch_next/  s      "j0CHH)$**A4:=QQ-4>i))$tn I        I
 YJOOOrC   r   r   )r   r7   r}   rE   rs   r   r  rN   rS   r"   r   r   s   `` @@rA   r   zPeerAio.sessions"  s      j 88:::::::::Z':??%dj&=tz}MM)0:)W%%d @ 
 
 
 
 
 
 
 

	; 	; 	; 	; 	; 	;	P 	P 	P 	P 	P 	P 	P 	P 	P 	:FFFrC   r   r   r   r   r   r   r   r   r   r   c                  K   | j         j                                         d{V  | j         j        j                            t          j        | j         j        | j         j                  |||d           d{V }d |D             S )zCSearch across all messages with this peer as author asynchronously.Nr   rq   c                Z    g | ](}t          j        t          j        |                    )S r   r   r   s     rA   r   z"PeerAio.search.<locals>.<listcomp>J  r   rC   )	r   r7   r}   rE   rs   r   peer_searchrN   rS   r   s        rA   r   zPeerAio.search9  s       j 88:::::::::Z':??tz6
FF WuEE @ 
 
 
 
 
 
 
 

 

 
 
 	
rC   list[str] | Nonec                X  K   | j         j                                         d{V  t          |          }|rd|ind}| j         j        j                            t          j        | j         j        | j         j	                  |           d{V }t          j        |          }|j        S )z!Get the peer card asynchronously.Nr  r   )r   r7   r}   r+   rE   r   r   	peer_cardrN   rS   r   r[   )r@   r  r
  r   rU   responses         rA   get_cardzPeerAio.get_cardO  s       j 88:::::::::v&&	)2<9%%Z':>>TZ4djmDD ? 
 
 
 
 
 
 
 
 $2488!!rC   c                v   K   t          j        dt          d           |                     |           d{V S )z#Deprecated: use get_card() instead.z,card() is deprecated, use get_card() instead   )
stacklevel)r  N)warningswarnDeprecationWarningr  )r@   r  s     rA   cardzPeerAio.card`  sR       	:	
 	
 	
 	

 ]]&]111111111rC   r  	list[str]c                ^  K   | j         j                                         d{V  t          |          }|rd|ind}| j         j        j                            t          j        | j         j        | j         j	                  d|i|           d{V }t          j        |          }|j        S )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   r}   r+   rE   rw   r   r  rN   rS   r   r[   )r@   r  r  r
  r   rU   r  s          rA   set_cardzPeerAio.set_cardm  s      ( j 88:::::::::v&&	)2<9%%Z':>>TZ4djmDDy) ? 
 
 
 
 
 
 
 

 $2488!!rC   r   r                 ?search_querysearch_top_k
int | Nonesearch_max_distancefloat | Noneinclude_most_frequentbool | Nonemax_conclusionsc                  K   | j         j                                         d{V  t          |          }t          |          }	i }
|r||
d<   |	r|	|
d<   |||
d<   |||
d<   |||
d<   |||
d<   |||
d<   | j         j        j                            t          j        | j         j        | j         j	                  |
	           d{V }t          j        |          }|j        S )
z>Get a subset of the representation of the peer asynchronously.Nr   r  r+  r,  r.  r0  r2  rq   )r   r7   r}   r+   rE   rs   r   peer_representationrN   rS   r   r[   representation)r@   r   r  r+  r,  r.  r0  r2  r   r
  rr   rU   r  s                rA   r5  zPeerAio.representation  s>      j 88:::::::::((
v&&	! 	,!+D 	'&DN##/D ##/D **=D&' ,,AD()&&5D"#Z':??&tz'>
NN @ 
 
 
 
 
 
 
 
 *8>>&&rC   r   c                  K   | j         j                                         d{V  t          |          }i }|r||d<   |||d<   |||d<   |||d<   |||d<   |||d<   | j         j        j                            t          j        | j         j        | j         j	                  |r|nd           d{V }	t          j        |	          S )	z)Get context for this peer asynchronously.Nr  r+  r,  r.  r0  r2  r   )r   r7   r}   r+   rE   r   r   peer_contextrN   rS   r   r[   )
r@   r  r+  r,  r.  r0  r2  r
  r   rU   s
             rA   contextzPeerAio.context  s      j 88:::::::::v&&	 " 	('E(O#$0E.!#$0E.!*+>E'( ,-BE)*&'6E#$Z':>>
 7GG *%%d ? 
 
 
 
 
 
 
 
 #1$777rC   )r   r   r<   r=   r   r   r   r   r   r   )r<   r   )r]   r   r<   r=   )
r   rH   r  r   r   r   r  r  r<   r  )
r   rH   r  r   r   r   r  r  r<   r&   r?   r   r   )r  r   r<   r  )r  r%  r  r   r<   r  )r   r   r  r   r+  r  r,  r-  r.  r/  r0  r1  r2  r-  r<   rH   )r  r   r+  r  r,  r-  r.  r/  r0  r1  r2  r-  r<   r   )r   r   r   r   r9   r   rB   rG   rK   rO   rT   r`   rf   rj   rl   rn   rt   rx   r   r
   r   r  r  r   r   r  r$  r'  r5  r8  r   rC   rA   r2   r2     si          ,6I5555MMM   5 5 55 5 5 5C C C C% % % %U U U U( ( ( (M M M M* * * *G G G G
	) 	) 	) 	)2 2 2 2 ]**TBBBCCC U31:VWWW )-,0     DC> ]**TBBBCCC U31:VWWW ? )-,0 ?  ?  ?  ?  ? DC ?F 37G G G G G.  U31:STTT,1E;-
 -
 -
 U12O
 
 

 
 
 
 ]
* ]**TBBBCCC )-" " " " DC"$ )-2 2 2 2 2 ]**TBBBCCC )-" " " " DC"> ]**TBBBCCC -1(,#'#(5!#<#<#<,1E$33,G,G,G-1&+eDQ3&?&?&?$' $' $' $' DC$'L ]**TBBBCCC )-#'#(5!#<#<#<,1E$33,G,G,G-1&+eDQ3&?&?&?8 8 8 8 DC8 8 8rC   r2   c                  ~   e Zd ZU dZdZded<   ded<   dd
Zd ZddZddZ	ddZ
ddZddZddZddZddZddZddZdd Zdd!Zdd#Zdd%Zdd)Zdd*Ze ed+d,-          fdd1            Zd2d3dd7Zdd8Zd2d9dd=Z e ed>?          @          d> ed2dAdBC           ed2dD-           ed2dE-           ed2dF-           edGdH-           ed2dIdJdKL           ed2dMdNdOL           ed2dP-           ed2dIdJdQL          dR
ddc            ZddeZ e ed+dIdfg           ed2dh-           edidIdJdjk          fddo            Z! e ed>?          @           ed+dp-           ed+dq-           ed2dr-           ed2ds-           ed2dt-          fddz            Z" e ed>?          @          d2d2 ed2dIdJ{           ed2dMdN{          d2 ed2dIdJ{          d|dd            Z#	 	 dddZ$ e ed>?          @           ed+d-           ed+d-          fdd            Z%d2S )r3   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'r;  r   r<   r=   c                    || _         d S r?   r:  )r@   r   s     rA   rB   zSessionAio.__init__  s    rC   c                $    | j         j        j        S r?   )r;  r7   rE   rF   s    rA   rG   z!SessionAio._get_async_http_client  s    }$77rC   rH   c                >    t          j        | j        j                  S r?   )r   r   r;  rN   rF   s    rA   rK   zSessionAio._get_fetch_route  s    t}9:::rC   c                T    t          j        | j        j        | j        j                  S r?   )r   r   r;  rN   rS   rF   s    rA   rO   zSessionAio._get_update_route  s    ~dm8$-:JKKKrC   rP   c                    d| j         j        iS rR   )r;  rS   rF   s    rA   rT   zSessionAio._get_fetch_body  s    dm&''rC   rU   rV   c                r    t          j        |          }|j        pi |j                            d          fS rX   )r   r[   r\   r]   r^   r@   rU   r   s      rA   r`   zSessionAio._parse_response  sG     "066%2w'<'G'G (H (
 (
 
 	
rC   r\   ra   c                    || j         _        d S r?   r;  rd   re   s     rA   rf   zSessionAio._set_metadata  s    "*rC   r]   c                B    t          j        |          | j        _        d S r?   )r   r[   r;  rh   ri   s     rA   rj   zSessionAio._set_configuration  s"    ';'J(
 (
$$$rC   c                    | j         j        pi S r?   rE  rF   s    rA   rl   zSessionAio._get_metadata  s    }&,",rC   c                ^    | j         j        i S | j         j                            d          S rX   )r;  rh   r^   rF   s    rA   rn   zSessionAio._get_configuration  s.    ='/I}+66D6IIIrC   r   c                |  K   | j         j                                         d{V  |                                                     |                                 |                                            d{V }t          j        |          }|j	        pi | j         _
        |j        | j         _        | j         j        S r   )r;  r7   r}   rG   rs   rK   rT   r   r[   r\   rd   r]   rh   rC  s      rA   rt   zSessionAio.get_configuration  s      m#;;=========002277!!##$*>*>*@*@ 8 
 
 
 
 
 
 
 
 "066")"2"8b'.'<$}++rC   c                   K   |                                                      |                                 d|                    d          i           d{V  || j        _        dS rv   )rG   rw   rO   r^   r;  rh   ri   s     rA   rx   zSessionAio.set_configuration  s      ))++//""$$!=#;#;#;#N#NO 0 
 
 	
 	
 	
 	
 	
 	
 	
 (5$$$rC   r~   str | PeerBase | tuple[str, SessionPeerConfig] | tuple[PeerBase, SessionPeerConfig] | list[PeerBase | str] | list[tuple[PeerBase | str, SessionPeerConfig]] | list[PeerBase | str | tuple[PeerBase | str, SessionPeerConfig]]c                  K   | j         j                                         d{V  | j         j        j                            t          j        | j         j        | j         j                  t          |                     d{V  dS )z)Add peers to this session asynchronously.Nrq   )
r;  r7   r}   rE   rs   r   session_peersrN   rS   r(   r@   r~   s     rA   	add_peerszSessionAio.add_peers  s       m#;;=========m#6;; !;T]=MNN(// < 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   c                  K   | j         j                                         d{V  | j         j        j                            t          j        | j         j        | j         j                  t          |                     d{V  dS )z;Set the complete peer list for this session asynchronously.Nrq   )
r;  r7   r}   rE   rw   r   rM  rN   rS   r(   rN  s     rA   	set_peerszSessionAio.set_peers0  s       m#;;=========m#6:: !;T]=MNN(// ; 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   %str | PeerBase | list[PeerBase | str]c                @  K   | j         j                                         d{V  t          |t                    s|g}d |D             }| j         j        j                            t          j        | j         j	        | j         j
                  |           d{V  dS )z.Remove peers from this session asynchronously.Nc                J    g | ] }t          |t                    r|n|j        !S r   )
isinstancerH   rS   )r   r   s     rA   r   z+SessionAio.remove_peers.<locals>.<listcomp>J  s-    QQQ4JtS11>DDtwQQQrC   rq   )r;  r7   r}   rU  listrE   r   r   rM  rN   rS   )r@   r~   peer_idss      rA   remove_peerszSessionAio.remove_peersA  s      
 m#;;=========%&& 	GEQQ5QQQm#6== !;T]=MNN > 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   
list[Peer]c                :   K    j         j                                         d{V   j         j        j                            t          j         j         j         j         j                             d{V }|                    dg           } fd|D             S )z-Get all peers in this session asynchronously.Nitemsc                r    g | ]3}t          t          j        |          j        j        j                  4S r   )r/   r   r[   rS   r;  r7   )r   r   r@   s     rA   r   z$SessionAio.peers.<locals>.<listcomp>Y  sF     
 
 
 ,T225t}7LMM
 
 
rC   )	r;  r7   r}   rE   r   r   rM  rN   rS   )r@   rU   
peers_datas   `  rA   r~   zSessionAio.peersQ  s      m#;;=========%)]%:%M%Q%Q !;T]=MNN&
 &
  
  
  
  
  
  
 !%" 5 5

 
 
 
"
 
 
 	
rC   r   r   r   c                  K   | j         j                                         d{V  t          |t                    r|n|j        }| j         j        j                            t          j	        | j         j
        | j         j        |                     d{V }t          |                    d          |                    d                    S )z@Get the configuration for a peer in this session asynchronously.Nobserve_others
observe_me)r_  r`  )r;  r7   r}   rU  rH   rS   rE   r   r   session_peer_configrN   r   )r@   r   peer_idrU   s       rA   get_peer_configurationz!SessionAio.get_peer_configuration^  s      m#;;=========$T3//<$$TW]*=AA&*DM,<g 
 
 
 
 
 
 
 

 !88$455xx--
 
 
 	
rC   c                ~  K   | j         j                                         d{V  t          |t                    r|n|j        }i }|j        
|j        |d<   |j        
|j        |d<   | j         j        j        	                    t          j        | j         j        | j         j        |          |           d{V  dS )z@Set the configuration for a peer in this session asynchronously.Nr_  r`  rq   )r;  r7   r}   rU  rH   rS   r_  r`  rE   rw   r   ra  rN   )r@   r   r]   rb  rr   s        rA   set_peer_configurationz!SessionAio.set_peer_configurationl  s       m#;;=========$T3//<$$TW!'3%2%AD!"#/!.!9Dm#6::&*DM,<g  	 ; 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   .zMessages to add to the sessionr   messages/MessageCreateParams | list[MessageCreateParams]r   c                X  K   | j         j                                         d{V  t          |t                    s|g}d |D             }| j         j        j                            t          j        | j         j	        | j         j
                  d|i           d{V }d |D             S )z8Add one or more messages to this session asynchronously.Nc                <    g | ]}|                     d d          S )jsonT)moderZ   )r^   r   msgs     rA   r   z+SessionAio.add_messages.<locals>.<listcomp>  s5     
 
 
?BCNNTN::
 
 
rC   rf  rq   c                Z    g | ](}t          j        t          j        |                    )S r   r   rl  s     rA   r   z+SessionAio.add_messages.<locals>.<listcomp>  >     
 
 
 %o&DS&I&IJJ
 
 
rC   )r;  r7   r}   rU  rV  rE   rs   r   rf  rN   rS   )r@   rf  messages_datarU   s       rA   add_messageszSessionAio.add_messages  s       m#;;=========(D)) 	" zH
 
FN
 
 
 ]*=BBODM68HIIm, C 
 
 
 
 
 
 
 

 

 
 
 	
rC   N)r   r   rz   #AsyncPage[MessageResponse, Message]c               P   K    j         j                                         d{V   j         j        j                            t          j         j         j         j         j                  rdind           d{V }ddd fdt          |t                    S )z.Get messages from this session asynchronously.Nr   rq   r  r   r<   r    c                *    t          j        |           S r?   )r    r   r  s    rA   r   z&SessionAio.messages.<locals>.transform  s    ,X666rC   r   r   rr  c                   K   j         j        j                            t	          j        j         j        j         j                  rdind d| i           d {V }t          |t                    S r   )
r;  r7   rE   rs   r   messages_listrN   rS   r"   r   r   s     rA   r   z'SessionAio.messages.<locals>.fetch_next  s      "m3FKK$T]%?AQRR-4>i))$tn L        I
 YJOOOrC   )r  r   r<   r    )r   r   r<   rr  )r;  r7   r}   rE   rs   r   rw  rN   rS   r"   r   r   s   `` @@rA   rf  zSessionAio.messages  s      m#;;=========]*=BB !;T]=MNN)0:)W%%d C 
 
 
 
 
 
 
 

	7 	7 	7 	7	P 	P 	P 	P 	P 	P 	P 	P 	P 	:FFFrC   c                   K   | j         j                                         d{V  | j         j        j                            t          j        | j         j        | j         j                             d{V  dS )z#Delete this session asynchronously.N)	r;  r7   r}   rE   r   r   r   rN   rS   rF   s    rA   r   zSessionAio.delete  s      m#;;=========m#6==N4=5t}7GHH
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   )
message_idry  r  r0   c                 K   | j         j                                         d{V  i }|||d<   | j         j        j                            t          j        | j         j        | j         j                  |r|nd           d{V }t          j
        |          }t          |j        | j         j        |j        |j                  S )z"Clone this session asynchronously.Nry  r   ry   )r;  r7   r}   rE   rs   r   session_clonerN   rS   r   r[   r0   r\   r]   )r@   ry  r   rU   cloneds        rA   clonezSessionAio.clone  s      m#;;========= "!",E,]*=BB !;T]=MNN *%%d C 
 
 
 
 
 
 
 
 !/55IM!_ .	
 
 
 	
rC   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.  r0  r2  r  boolr  r-  r  r+  str | Message | Noner  r  r,  r.  r/  r0  r1  r2  r#   c       
   
       K   | j         j                                         d{V  ||t          d          ||t          d          t	          |t
                    r|j        n|}||d}|||d<   |||d<   |||d<   |||d<   |||d	<   |||d
<   |	|	|d<   |
|
|d<   | j         j        j                            t          j
        | j         j        | j         j                  |           d{V }d}|                    d          r:|d         }t          |d         |d         |d         |d         |d                   }d |                    dg           D             }t          | j         j        |||                    d          r"t          |                    d                    nd|                    d                    S )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)r  r  r  r+  r  r  r,  r.  r0  r2  r   r  r  ry  summary_type
created_attoken_countr  ry  r  r  r  c                Z    g | ](}t          j        t          j        |                    )S r   r   rl  s     rA   r   z&SessionAio.context.<locals>.<listcomp>/  s>     
 
 
 %o&DS&I&IJJ
 
 
rC   rf  r4  r  )r   rf  r  r4  r  )r;  r7   r}   
ValueErrorrU  r    r  rE   r   r   session_contextrN   rS   r%   r#   rH   )r@   r  r  r  r+  r  r  r,  r.  r0  r2  search_query_textr   rU   session_summarysrf  s                    rA   r8  zSessionAio.context  s~     ` m#;;=========#3#?V   <#;R  
 %/|W$E$EWL  < 	
  0!
 !
 $E(O($5E.!"#.E- '(8E$%#$0E.!*+>E'( ,-BE)*&'6E#$]*=AA"4=#=t}?OPP B 
 
 
 
 
 
 
 

 88I 	YA%)\?~.\?m,  O
 
xx
B//
 
 

 }'#xx-..!DHH-B$C$C D D Dhh{++
 
 
 	
rC   r$   c                  K   | j         j                                         d{V  | j         j        j                            t          j        | j         j        | j         j                             d{V }d}|                    d          r:|d         }t          |d         |d         |d         |d         |d                   }d}|                    d	          r:|d	         }t          |d         |d         |d         |d         |d                   }t          |                    d
          p| j         j        ||          S )z8Get available summaries for this session asynchronously.Nshort_summaryr  ry  r  r  r  r  long_summaryrS   )rS   r  r  )r;  r7   r}   rE   r   r   session_summariesrN   rS   r%   r$   )r@   rU   r  r  r  s        rA   	summarieszSessionAio.summaries>  sv     m#;;=========]*=AA$T]%?AQRR
 
 
 
 
 
 
 
 88O$$ 	_%A#)\?~.\?m,  M 88N## 	^$A")\?~.\?m,  L  xx~~1!1'%
 
 
 	
rC   r   r   r   r   r   r   r   r   r   c                  K   | j         j                                         d{V  | j         j        j                            t          j        | j         j        | j         j                  |||d           d{V }d |D             S )z3Search for messages in this session asynchronously.Nr   rq   c                Z    g | ](}t          j        t          j        |                    )S r   r   rl  s     rA   r   z%SessionAio.search.<locals>.<listcomp>r  ro  rC   )	r;  r7   r}   rE   rs   r   session_searchrN   rS   r   s        rA   r   zSessionAio.searcha  s       m#;;=========]*=BB!$-"<dm>NOO WuEE C 
 
 
 
 
 
 
 

 

 
 
 	
rC   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.file3tuple[str, bytes, str] | tuple[str, Any, str] | Anydict[str, Any] | Noner  str | datetime | Nonec                  K   | j         j                                         d{V  t          |          \  }}}t	          |t
                    r|n|j        }	d|	i}
|t          j        |          |
d<   |t          j        |          |
d<   t          |          }|||
d<   | j         j        j
                            t          j        | j         j        | j         j                  d|||fi|
           d{V }d |D             S )	z@Upload file to create message(s) in this session asynchronously.Nrb  r\   r]   r  r  )filesrU   c                Z    g | ](}t          j        t          j        |                    )S r   r   rl  s     rA   r   z*SessionAio.upload_file.<locals>.<listcomp>  ro  rC   )r;  r7   r}   r*   rU  rH   rS   rj  dumpsr'   rE   uploadr   messages_uploadrN   )r@   r  r   r\   r]   r  filenamecontent_bytescontent_typeresolved_peer_id	data_dictcreated_at_isor  s                rA   upload_filezSessionAio.upload_filew  sJ     0 m#;;=========0G0M0M--#-dC#8#8E44dg%.0@$A	$(Jx$8$8Ij!$)-M)B)BIo&(44%&4Il#.AHH"4=#=t}?OPPHm\BC I 
 
 
 
 
 
 
 

 

 
 
 	
rC   r(  )r  r+  r,  r.  r0  r2  r  r   c                 K   | j         j                                         d{V  t          |          }t          |          }	d| j         j        i}
|	r|	|
d<   |||
d<   |||
d<   |||
d<   |||
d<   |||
d<   | j         j        j                            t          j        | j         j	        |          |
	           d{V }t          j        |          }|j        S )
zNGet a subset of the representation of the peer in this session asynchronously.Nr   r  r+  r,  r.  r0  r2  rq   )r;  r7   r}   r+   rS   rE   rs   r   r4  rN   r   r[   r5  )r@   r   r  r+  r,  r.  r0  r2  rb  r
  r   rU   r  s                rA   r5  zSessionAio.representation  s2      m#;;=========T""v&&	!-t}/? @ 	('E(O#$0E.!#$0E.!*+>E'( ,-BE)*&'6E#$]*=BB&t}'A7KK C 
 
 
 
 
 
 
 
 *8>>&&rC   r   r   r   c                z  K   | j         j                                         d{V  t          |          }t          |          }d| j         j        i}|r||d<   |r||d<   | j         j        j                            t          j        | j         j	                  |           d{V }t          j        |          S )z@Get the queue processing status for this session asynchronously.Nr   r   r   r   )r;  r7   r}   r+   rS   rE   r   r   r   rN   r   r[   )r@   r   r   r   r   r   rU   s          rA   r   zSessionAio.queue_status  s       m#;;=========)(33'//!-t}/? @ 	8#7E-  	4!3E+]*=AA)$-*DEE B 
 
 
 
 
 
 
 
 #1$777rC   z*The Message object or message ID to updatez&The metadata to update for the messagemessageMessage | strr    c                  K   | j         j                                         d{V  t          |t                    r|j        n|}| j         j        j                            t          j	        | j         j
        | j         j        |          d|i           d{V }t	          j        t          j        |                    S )z7Update message metadata in this session asynchronously.Nr\   rq   )r;  r7   r}   rU  r    rS   rE   rw   r   r  rN   r   r   r[   )r@   r  r\   ry  rU   s        rA   update_messagezSessionAio.update_message  s       m#;;=========#-gw#?#?LWZZW
]*=AAN4=5t}7GTTh' B 
 
 
 
 
 
 
 
 ()G)M)MNNNrC   )r   r<  r<   r=   r   r   r   r   r   r   )r<   r   )r]   r   r<   r=   )r~   rK  r<   r=   )r~   rR  r<   r=   )r<   rY  )r   r   r<   r   )r   r   r]   r   r<   r=   )rf  rg  r<   r   )r   rz   r<   rr  )r<   r=   )ry  r  r<   r0   )r  r  r  r-  r  r  r+  r  r  r  r  r  r,  r-  r.  r/  r0  r1  r2  r-  r<   r#   )r<   r$   r   )r  r  r   r   r\   rz   r]   r  r  r  r<   r   )r   r   r  r   r+  r  r,  r-  r.  r/  r0  r1  r2  r-  r<   rH   r   )r   r   r   r   r<   r   )r  r  r\   ra   r<   r    )&r   r   r   r   r9   r   rB   rG   rK   rO   rT   r`   rf   rj   rl   rn   rt   rx   rO  rQ  rX  r~   rc  re  r   r   rq  rf  r   r}  r
   r8  r  r   r  r5  r   r  r   rC   rA   r3   r3     sA          ,9I8888       8 8 8; ; ; ;L L L L( ( ( (
 
 
 
+ + + +
 
 
 
- - - -J J J J
	, 	, 	, 	,5 5 5 5
 
 
 
"
 
 
 
"
 
 
 
 
 
 
 

 
 
 

 
 
 
&  EJE=E
 E
 E

 
 
 
 ]
6 -1G G G G G G2
 
 
 
 7; 
 
 
 
 
 
& ]**TBBBCCC "UQ$X
 
 
 #(%7#
 #
 #
 .3Um.
 .
 .
 (-uK(
 (
 (
 "'S"
 "
 "
 $)5J	$
 $
 $
 -2EQ	-
 -
 -
 .3Ua.
 .
 .
 ',eY	'
 '
 '
Op
 p
 p
 p
 p
 DCp
d!
 !
 !
 !
F  U31:STTT,1E;-
 -
 -
 U12O
 
 

 
 
 
 ]
* ]**TBBBCCC EJE SE
 E
 E
  %uX 
  
  
 .3UU.
 .
 .
 05uZ0
 0
 0
 -2EI-
 -
 -
#-
 -
 -
 -
 DC-
^ ]**TBBBCCC
 )-#'#(5!#<#<#<,1E$33,G,G,G-1&+eDQ3&?&?&?#' #' #' #' #' DC#'N +/(,8 8 8 8 8, ]**TBBBCCC "'I"
 "
 "
 ',eE'
 '
 '
O O O O DCO O OrC   r3   c                  v    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d0dZ	d1d!Z
	 	 	 	 	 d2d3d*ZdS )4r4   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  scoper<   r=   c                    || _         d S r?   r  )r@   r  s     rA   rB   zConclusionScopeAio.__init__  s    rC   r   2   Nr   r   sizer   r   )AsyncPage[ConclusionResponse, Conclusion]c                   K    j         j                                         d{V  t          |          } j         j         j         j        d|r|d<    j         j        j                            t          j	         j         j
                  di|d           d{V }ddd fdt          |t                    S )z.List conclusions in this scope asynchronously.Nr   observed_idr   r   r   r  r   r  r   r<   r   c                *    t          j        |           S r?   )r   r   ru  s    rA   r   z*ConclusionScopeAio.list.<locals>.transform  s    /999rC   r   r   r  c                   K   j         j        j                            t	          j        j         j                  di| d           d {V }t          |t                    S )Nr   r  r   )	r  r7   rE   rs   r   conclusions_listrN   r"   r   )r   r   r   r   r@   r  r   s     rA   r   z+ConclusionScopeAio.list.<locals>.fetch_next  s       #k1DII'(@AA)#T22 J        I
 Y(:IzRRRrC   )r  r   r<   r   )r   r   r<   r  )r  r7   r}   r+   r   r   rE   rs   r   r  rN   r"   r   )	r@   r   r  r   r   rU   r   r   r   s	   ` `   @@@rA   rV  zConclusionScopeAio.list  sB      k!99;;;;;;;;;(11;/;/#
 #
  	8$7GL![(;@@#DK$<==W%.. A 
 
 
 
 
 
 
 
	: 	: 	: 	:	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 19jIIIrC   r   r   rH   top_kdistancer/  list[Conclusion]c                B  K   | j         j                                         d{V  | j         j        | j         j        d}|||d}|||d<   | j         j        j                            t          j        | j         j	                  |           d{V }d |D             S )z/Semantic search for conclusions asynchronously.Nr  )r   r  r   r  rq   c                Z    g | ](}t          j        t          j        |                    )S r   r   r   r   r[   r   s     rA   r   z,ConclusionScopeAio.query.<locals>.<listcomp>D  ?     
 
 
 ();)J4)P)PQQ
 
 
rC   )
r  r7   r}   r   r   rE   rs   r   conclusions_queryrN   )r@   r   r  r  r   rr   rU   s          rA   r   zConclusionScopeAio.query+  s       k!99;;;;;;;;;;/;/#
 #
  
  

 'D[(;@@$T[%=>> A 
 
 
 
 
 
 
 

 

 
 
 	
rC   conclusion_idc                   K   | j         j                                         d{V  | j         j        j                            t          j        | j         j        |                     d{V  dS )z)Delete a conclusion by ID asynchronously.N)r  r7   r}   rE   r   r   
conclusionrN   )r@   r  s     rA   r   zConclusionScopeAio.deleteI  s      k!99;;;;;;;;;k!4;;dk6FF
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   conclusions-list[ConclusionCreateParams | dict[str, Any]]c                &   K    j         j                                         d{V  d fdfd|D             } j         j        j                            t          j         j         j                  d|i	           d{V }d
 |D             S )z0Create conclusions in this scope asynchronously.Nr   'ConclusionCreateParams | dict[str, Any]r<   rP   c                    j         j        j         j        d}t          | t                    r| j        |d<   | j        
| j        |d<   |S | d         |d<   |                     d          }|||d<   |S )z)Build a single conclusion create payload.r  r  Nr   )r  r   r   rU  r.   r  r   r   )r   payloadr   r@   s      rA   build_conclusion_payloadz;ConclusionScopeAio.create.<locals>.build_conclusion_payloadW  s    
  ${3#{3' 'G $ 677 %)\	"?.,0OGL)!%iGI,//J%(2%NrC   c                &    g | ]} |          S r   r   )r   cr  s     rA   r   z-ConclusionScopeAio.create.<locals>.<listcomp>k  s%    NNNQ55a88NNNrC   r  rq   c                Z    g | ](}t          j        t          j        |                    )S r   r  r   s     rA   r   z-ConclusionScopeAio.create.<locals>.<listcomp>q  r  rC   )r   r  r<   rP   )r  r7   r}   rE   rs   r   r  rN   )r@   r  conclusion_paramsrU   r  s   `   @rA   createzConclusionScopeAio.createP  s      
 k!99;;;;;;;;;	 	 	 	 	 	( ONNN+NNN[(;@@t{788!23 A 
 
 
 
 
 
 
 

 

 
 
 	
rC   r+  r  r,  r-  r.  r0  r1  r2  c                  K   | j         j                                         d{V  d| j         j        i}|||d<   |||d<   |||d<   |||d<   |||d<   | j         j        j                            t          j        | j         j        | j         j	                  |           d{V }t          j        |          }|j        S )	z>Get the computed representation for this scope asynchronously.Nr  r+  r,  r.  r0  r2  rq   )r  r7   r}   r   rE   rs   r   r4  rN   r   r   r[   r5  )	r@   r+  r,  r.  r0  r2  rr   rU   r  s	            rA   r5  z!ConclusionScopeAio.representationv  s      k!99;;;;;;;;; ($+*>?##/D ##/D **=D&' ,,AD()&&5D"#[(;@@&t{'?AUVV A 
 
 
 
 
 
 
 
 *8>>&&rC   )r  r  r<   r=   )r   r  N)r   r   r  r   r   r   r<   r  )r   N)r   rH   r  r   r  r/  r<   r  )r  rH   r<   r=   )r  r  r<   r  )NNNNN)r+  r  r,  r-  r.  r/  r0  r1  r2  r-  r<   rH   )r   r   r   r   r9   r   rB   rV  r   r   r  r5  r   rC   rA   r4   r4     s           ,7I6666   
 ,0	#J #J #J #J #JP !%	
 
 
 
 
<
 
 
 
$
 $
 $
 $
P $(#',0-1&*' ' ' ' ' ' 'rC   r4   )Jr   
__future__r   rj  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.   r   r/   r   r0   	getLoggerr   logger__all__r1   r2   r3   r4   r   rC   rA   <module>r     s   ( # " " " " "    * * * * * *       8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5                                 ( ' ' ' ' ' ' ' # # # # # #             , , , , , , ! ! ! ! ! ! F F F F F F F F F F / / / / / /               -,,,,,, / / / / / /            		8	$	$  E
 E
 E
 E
 E
( E
 E
 E
P
y8 y8 y8 y8 y8& y8 y8 y8x	^O ^O ^O ^O ^O) ^O ^O ^OBY' Y' Y' Y' Y' Y' Y' Y' Y' Y'rC   