
    j                        d dl Z d dlmZ ddlmZ ddl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 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" 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. ddl/m0Z0 ddl1m2Z2  e jf                  e jh                  d      Z5 G d d      Z6 G d d       Z7y)!    N)JSONDecodeError   )ApiError)AsyncClientWrapperSyncClientWrapper)AsyncHttpResponseHttpResponse)jsonable_encoder)parse_obj_as)RequestOptions)'convert_and_respect_annotation_metadata)BadRequestError)ConflictError)	GoneError)NotFoundError)ErrorMessage)JsonNode)LocalRunner)LocalRunnerConnectResponse)LocalRunnerHeartbeatResponse)LocalRunnerJob)LocalRunnerJobMetadata)LocalRunnerJobPage)LocalRunnerLogEntry)LocalRunnerPage)LocalRunnerPairResponse   )!LocalRunnerJobResultRequestStatus.c                   X   e Zd ZdefdZddddedej                  e   dej                  e	   de
ej                  e      fd	Zdd
dedej                  e   dej                  e	   de
d   fdZdd
dedej                  e	   de
d   fdZdd
dededej                  e	   de
e   fdZeeedddededej                  e   dej                  e   dej                  e   dej                  e	   de
d   fdZdd
dedej                  e	   de
e   fdZdd
dedej                  e	   de
e   fdZdd
dedej                  e	   de
e   fdZdd
dedej                  e	   de
e   fdZddddddedej                  e   dej                  e   dej                  e   dej                  e	   de
e   fd Z dddd!dedej                  e   dej                  e   dej                  e	   de
e!   f
d"Z"dd
dedej                  e	   de
e   fd#Z#dd
dedejH                  eej                  ejJ                     f   dej                  e	   de
d   fd$Z&eeedd%ded&e'd'ej                  e   d(ej                  e   d)ej                  e   dej                  e	   de
d   fd*Z(y)+RawRunnersClientclient_wrapperc                    || _         y N_client_wrapperselfr!   s     y/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/rest_api/runners/raw_client.py__init__zRawRunnersClient.__init__#   
    -    Noffsetrequest_optionsjob_idr-   r.   returnc                   | j                   j                  j                  dt        |       ddd|i|      }	 d|j                  cxk  rdk  rin nft        j                  t
        j                  t           t        t
        j                  t           |j                                     }t        ||	      S |j                  d
k(  rt        t        |j                        t        j                  t
        j                  t
        j                      t        t
        j                  t
        j                      |j                                           |j                         }t%        |j                  t        |j                        |      # t"        $ r6 t%        |j                  t        |j                        |j&                        w xY w)ar  
        Get log entries for a local runner job

        Parameters
        ----------
        job_id : str

        offset : typing.Optional[int]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[typing.List[LocalRunnerLogEntry]]
            Log entries
        v1/private/local-runners/jobs//logsGETr-   methodparamsr.      ,  type_object_responsedata  headersbodystatus_coderB   rC   )r%   httpx_clientrequestr
   rE   typingcastListr   r   jsonr	   r   dictrB   OptionalAnyr   r   textr'   r/   r-   r.   	_response_data_response_jsons          r(   get_job_logszRawRunnersClient.get_job_logs&   s~   0 ((55==,-=f-E,FeL& , > 
		ti++1c1KK 34 $kk*=> ) 0 $YUCC$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   A=F 8B*F ?Gr.   rG   c                n   | j                   j                  j                  dt        |       ddt	        |t
        j                  t           d      ddi|t              }	 d	|j                  cxk  rd
k  rn nt        |d      S |j                  dk(  rt        t        |j                        t        j                  t
        j                  t
        j                      t#        t
        j                  t
        j                      |j%                                           |j                  dk(  rt'        t        |j                        t        j                  t
        j                  t
        j                      t#        t
        j                  t
        j                      |j%                                           |j%                         }t+        |j                  t        |j                        |      # t(        $ r6 t+        |j                  t        |j                        |j,                        w xY w)aZ  
        Append log entries for a running local runner job

        Parameters
        ----------
        job_id : str

        request : typing.Sequence[LocalRunnerLogEntry]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        r2   r3   POSTwriter<   
annotation	directioncontent-typeapplication/jsonr6   rK   rB   r.   omitr8   r9   Nr=     r:   rA   r@   rD   )r%   rF   rG   r
   r   rH   Sequencer   OMITrE   r	   r   rL   rB   rI   rM   rN   r   rK   r   r   r   rO   r'   r/   rG   r.   rQ   rS   s         r(   append_job_logsz RawRunnersClient.append_job_logs`   s   . ((55==,-=f-E,FeL8FOO<O,P\c  2 , > 
		ti++1c1#YTBB$$+% !2!23

3$"(//&**"=$-NN$4	 	 $$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   !$G5 EG5 5?H4c                   | j                   j                  j                  dt        |       dd|      }	 d|j                  cxk  rdk  rn nt        |d      S |j                  d	k(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                         
                  |j                         }t!        |j                  t        |j                        |      # t        $ r6 t!        |j                  t        |j                        |j"                        w xY w)a  
        Cancel a pending or running local runner job

        Parameters
        ----------
        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        r2   /cancelrW   r6   r.   r8   r9   Nr=   r@   r:   rA   rD   )r%   rF   rG   r
   rE   r	   r   rL   rB   rH   rI   rM   rN   r   rK   r   r   rO   r'   r/   r.   rQ   rS   s        r(   
cancel_jobzRawRunnersClient.cancel_job   s6    ((55==,-=f-E,FgN+ > 
	
	ti++1c1#YTBB$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   $D1 B*D1 1?E0pairing_coderunner_namec                   | j                   j                  j                  dd||dddi|t              }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                         	            }t        ||
      S |j                  dk(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                         	                  |j                  dk(  rt!        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                         	                  |j                         }t%        |j                  t        |j                        |      # t"        $ r6 t%        |j                  t        |j                        |j&                        w xY w)a  
        Exchange a pairing code or API key for local runner credentials

        Parameters
        ----------
        pairing_code : str

        runner_name : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[LocalRunnerConnectResponse]
            Runner connected
        $v1/private/local-runners/connectionsrW   rj   rk   r\   r]   r^   r8   r9   r:   r=   r`   rA   r@   rD   )r%   rF   rG   rb   rE   rH   rI   r   r   rK   r	   r   rL   rB   rM   rN   r   r   r   rO   r'   rj   rk   r.   rQ   rR   rS   s          r(   connect_runnerzRawRunnersClient.connect_runner   s   ( ((55==2 ,*
  2 , > 
	"	ti++1c1. 8 ) 0 $YUCC$$+% !2!23

3$"(//&**"=$-NN$4	 	 $$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   AH EH ?I inputsmask_idmetadatar.   
agent_name
project_idrr   rs   rt   c                >   | j                   j                  j                  dd||||t        |t        d      dddi|t
              }	 d	|j                  cxk  rd
k  rn nt        |d      S |j                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j!                                           |j                  dk(  rt#        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j!                                           |j!                         }t'        |j                  t        |j                        |      # t$        $ r6 t'        |j                  t        |j                        |j(                        w xY w)a  
        Create a local runner job and enqueue it for execution

        Parameters
        ----------
        agent_name : str

        project_id : str

        inputs : typing.Optional[JsonNode]

        mask_id : typing.Optional[str]

        metadata : typing.Optional[LocalRunnerJobMetadata]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        v1/private/local-runners/jobsrW   rX   rY   ru   rr   rv   rs   rt   r\   r]   r^   r8   r9   Nr=   r@   r:   rA     rD   )r%   rF   rG   r   r   rb   rE   r	   r   rL   rB   rH   rI   rM   rN   r   rK   r   r   r   rO   	r'   ru   rv   rr   rs   rt   r.   rQ   rS   s	            r(   
create_jobzRawRunnersClient.create_job  s   @ ((55==+( ("C$1GSZ  2 ,! > 
	$	ti++1c1#YTBB$$+# !2!23

3$"(//&**"=$-NN$4	 	 $$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   	$G .EG ?Hc                P   | j                   j                  j                  ddd|iddi|t              }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                         	            }t        ||
      S |j                  dk(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                         	                  |j                         }t#        |j                  t        |j                        |      # t         $ r6 t#        |j                  t        |j                        |j$                        w xY w)an  
        Generate a pairing code for a local runner in the current workspace

        Parameters
        ----------
        project_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[LocalRunnerPairResponse]
            Pairing code generated
        v1/private/local-runners/pairsrW   rv   r\   r]   r^   r8   r9   r:   r=   r@   rA   rD   )r%   rF   rG   rb   rE   rH   rI   r   r   rK   r	   r   rL   rB   rM   rN   r   r   rO   r'   rv   r.   rQ   rR   rS   s         r(   generate_pairing_codez&RawRunnersClient.generate_pairing_code^  sj   $ ((55==,j  2 , > 
		ti++1c1+ 5 ) 0 $YUCC$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   AE& B*E& &?F%c                R   | j                   j                  j                  dt        |       d|      }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||      S |j                  dk(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                     	      |j                         }t#        |j                  t        |j                        |
      # t         $ r6 t#        |j                  t        |j                        |j$                  
      w xY w)aE  
        Get a single local runner job's status and results

        Parameters
        ----------
        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[LocalRunnerJob]
            Job details
        r2   r4   rg   r8   r9   r:   r=   r@   rA   rD   r%   rF   rG   r
   rE   rH   rI   r   r   rK   r	   r   rL   rB   rM   rN   r   r   rO   r'   r/   r.   rQ   rR   rS   s         r(   get_jobzRawRunnersClient.get_job  s\   $ ((55==,-=f-E,FG+ > 
	
	ti++1c1" , ) 0 $YUCC$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	t   AE' B*E' '?F&	runner_idc                R   | j                   j                  j                  dt        |       d|      }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||      S |j                  dk(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                     	      |j                         }t#        |j                  t        |j                        |
      # t         $ r6 t#        |j                  t        |j                        |j$                  
      w xY w)aJ  
        Get a single local runner with its registered agents

        Parameters
        ----------
        runner_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[LocalRunner]
            Runner details
        v1/private/local-runners/r4   rg   r8   r9   r:   r=   r@   rA   rD   )r%   rF   rG   r
   rE   rH   rI   r   r   rK   r	   r   rL   rB   rM   rN   r   r   rO   r'   r   r.   rQ   rR   rS   s         r(   
get_runnerzRawRunnersClient.get_runner  s\   $ ((55=='(8(C'DE+ > 
	
	ti++1c1 ) ) 0 $YUCC$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	tr   c                   | j                   j                  j                  dt        |       dd|      }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||      S |j                  d	k(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                     
      |j                  dk(  rUt!        t        |j                        t        j                  t"        t        t"        |j                                     
      |j                         }t'        |j                  t        |j                        |      # t$        $ r6 t'        |j                  t        |j                        |j(                        w xY w)aI  
        Refresh local runner heartbeat

        Parameters
        ----------
        runner_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[LocalRunnerHeartbeatResponse]
            Heartbeat response
        r   /heartbeatsrW   rg   r8   r9   r:   r=   r@   rA     rD   )r%   rF   rG   r
   rE   rH   rI   r   r   rK   r	   r   rL   rB   rM   rN   r   r   r   r   rO   r   s         r(   	heartbeatzRawRunnersClient.heartbeat  s   $ ((55=='(8(C'DKP+ > 
	
"	ti++1c10 : ) 0 $YUCC$$+# !2!23

3$"(//&**"=$-NN$4	 	 $$+ !2!23$$".$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   AG DG ?Hrv   pagesizer.   r   r   c                ^   | j                   j                  j                  dt        |       dd|||d|      }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||	      S |j                  d
k(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                           |j                         }t#        |j                  t        |j                        |      # t         $ r6 t#        |j                  t        |j                        |j$                        w xY w)a  
        List jobs for a local runner

        Parameters
        ----------
        runner_id : str

        project_id : typing.Optional[str]

        page : typing.Optional[int]

        size : typing.Optional[int]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[LocalRunnerJobPage]
            Jobs list
        r   /jobsr4   rv   r   r   r5   r8   r9   r:   r=   r@   rA   rD   )r%   rF   rG   r
   rE   rH   rI   r   r   rK   r	   r   rL   rB   rM   rN   r   r   rO   	r'   r   rv   r   r   r.   rQ   rR   rS   s	            r(   	list_jobszRawRunnersClient.list_jobs4  sn   < ((55=='(8(C'DEJ(
 , > 	
		ti++1c1& 0 ) 0 $YUCC$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   AE- B*E- -?F,r   r   r.   c                D   | j                   j                  j                  dd|||d|      }	 d|j                  cxk  rdk  rGn nDt	        j
                  t        t        t        |j                                     }t        ||      S |j                  d	k(  rt        t        |j                        t	        j
                  t        j                  t        j                     t        t        j                  t        j                     |j                                     
      |j                         }t!        |j                  t        |j                        |      # t        $ r6 t!        |j                  t        |j                        |j"                        w xY w)a  
        List local runners owned by the current user in the workspace

        Parameters
        ----------
        project_id : str

        page : typing.Optional[int]

        size : typing.Optional[int]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[LocalRunnerPage]
            Runners list
        v1/private/local-runnersr4   r   r5   r8   r9   r:   r=   r@   rA   rD   )r%   rF   rG   rE   rH   rI   r   r   rK   r	   r   rL   rB   rM   rN   r   r   rO   r'   rv   r   r   r.   rQ   rR   rS   s           r(   list_runnerszRawRunnersClient.list_runnersv  s^   6 ((55==&(
 , > 	
		ti++1c1# - ) 0 $YUCC$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   AE  B*E   ?Fc                T   | j                   j                  j                  dt        |       dd|      }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||      S |j                  d	k(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                     
      |j                         }t#        |j                  t        |j                        |      # t         $ r6 t#        |j                  t        |j                        |j$                        w xY w)aG  
        Long-poll for the next pending local runner job

        Parameters
        ----------
        runner_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[LocalRunnerJob]
            Job available
        r   
/jobs/nextrW   rg   r8   r9   r:   r=   r@   rA   rD   r   r   s         r(   next_jobzRawRunnersClient.next_job  s^   $ ((55=='(8(C'DJO+ > 
	
	ti++1c1" , ) 0 $YUCC$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   AE( B*E( (?F'c                ,   | j                   j                  j                  dt        |       dd|ddi|t              }	 d|j
                  cxk  rdk  rn nt        |d	
      S |j
                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                                           |j
                  dk(  rt!        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                                           |j                         }t%        |j
                  t        |j                        |      # t"        $ r6 t%        |j
                  t        |j                        |j&                        w xY w)ae  
        Register or update the local runner's agent list

        Parameters
        ----------
        runner_id : str

        request : typing.Dict[str, typing.Optional[typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        r   /agentsPUTr\   r]   r^   r8   r9   Nr=   r`   r:   rA   r@   rD   r%   rF   rG   r
   rb   rE   r	   r   rL   rB   rH   rI   rM   rN   r   rK   r   r   r   rO   r'   r   rG   r.   rQ   rS   s         r(   register_agentsz RawRunnersClient.register_agents  s   . ((55=='(8(C'DGL 2 , > 	
		ti++1c1#YTBB$$+% !2!23

3$"(//&**"=$-NN$4	 	 $$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts    $G %EG ?Hresulterrortrace_idr.   statusr   r   r   c                6   | j                   j                  j                  dt        |       dd||||dddi|t              }	 d|j
                  cxk  rd	k  rn nt        |d
      S |j
                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                                           |j
                  dk(  rt!        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                                           |j                         }t%        |j
                  t        |j                        |      # t"        $ r6 t%        |j
                  t        |j                        |j&                        w xY w)a  
        Report local runner job completion or failure

        Parameters
        ----------
        job_id : str

        status : LocalRunnerJobResultRequestStatus

        result : typing.Optional[JsonNode]

        error : typing.Optional[str]

        trace_id : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        r2   /resultsrW   r   r   r   r   r\   r]   r^   r8   r9   Nr=   r`   r:   rA   r@   rD   r   	r'   r/   r   r   r   r   r.   rQ   rS   s	            r(   report_job_resultz"RawRunnersClient.report_job_result%  s   @ ((55==,-=f-E,FhO  $	  2 , > 
		ti++1c1#YTBB$$+% !2!23

3$"(//&**"=$-NN$4	 	 $$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   $G *EG ?H))__name__
__module____qualname__r   r)   strrH   rM   intr   r	   rJ   r   rT   ra   rd   ri   r   rp   rb   r   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   DictrN   r   r   r    r+   r(   r    r    "   s   .*; . (,;?8p8p $	8p
  88p 
fkk"56	78p~ <@?p?p !45	?p
  8?p 
d	?pB ]a %p %p&//.:Y %peqrvew %pP jnDp"Dp14DpGMWeGfDp	0	1DpV -1(,<@;?Np Np 	Np
 )Np %Np //"89Np  8Np 
d	Npb VZ6p 6p39??>3R6p	-	.6pr RV/p/p/5~/N/p	n	%/pd UY/p/p28//.2Q/p	k	"/pd UY:p:p28//.2Q:p	2	3:p@ ,0%)%);?@p@p OOC(	@p
 ooc"@p ooc"@p  8@p 
(	)@pL &*%);?=p =p ooc"	=p
 ooc"=p  8=p 
o	&=p@ UY/p/p28//.2Q/p	n	%/pl <@=p=p S&//&**"==>	=p
  8=p 
d	=pH -1&*)-;?KpKp 2	Kp
 )Kp s#Kp //#&Kp  8Kp 
d	Kpr+   r    c                   X   e Zd ZdefdZddddedej                  e   dej                  e	   de
ej                  e      fd	Zdd
dedej                  e   dej                  e	   de
d   fdZdd
dedej                  e	   de
d   fdZdd
dededej                  e	   de
e   fdZeeedddededej                  e   dej                  e   dej                  e   dej                  e	   de
d   fdZdd
dedej                  e	   de
e   fdZdd
dedej                  e	   de
e   fdZdd
dedej                  e	   de
e   fdZdd
dedej                  e	   de
e   fdZddddddedej                  e   dej                  e   dej                  e   dej                  e	   de
e   fd Z dddd!dedej                  e   dej                  e   dej                  e	   de
e!   f
d"Z"dd
dedej                  e	   de
e   fd#Z#dd
dedejH                  eej                  ejJ                     f   dej                  e	   de
d   fd$Z&eeedd%ded&e'd'ej                  e   d(ej                  e   d)ej                  e   dej                  e	   de
d   fd*Z(y)+AsyncRawRunnersClientr!   c                    || _         y r#   r$   r&   s     r(   r)   zAsyncRawRunnersClient.__init__t  r*   r+   Nr,   r/   r-   r.   r0   c                  K   | j                   j                  j                  dt        |       ddd|i|       d{   }	 d|j                  cxk  rdk  rin nft        j                  t
        j                  t           t        t
        j                  t           |j                         	            }t        ||
      S |j                  dk(  rt        t        |j                        t        j                  t
        j                  t
        j                      t        t
        j                  t
        j                      |j                         	                  |j                         }t%        |j                  t        |j                        |      7 Y# t"        $ r6 t%        |j                  t        |j                        |j&                        w xY ww)aw  
        Get log entries for a local runner job

        Parameters
        ----------
        job_id : str

        offset : typing.Optional[int]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[typing.List[LocalRunnerLogEntry]]
            Log entries
        r2   r3   r4   r-   r5   Nr8   r9   r:   r=   r@   rA   rD   )r%   rF   rG   r
   rE   rH   rI   rJ   r   r   rK   r   r   rL   rB   rM   rN   r   r   rO   rP   s          r(   rT   z"AsyncRawRunnersClient.get_job_logsw  s    0 ..;;CC,-=f-E,FeL& , D 
 
		ti++1c1KK 34 $kk*=> ) 0 ))%HH$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooA
<  	ty'<'<d9K\K\F]dmdrdrss	ts5   <GFGA=F GB*F ,,G?GGrU   rG   c                  K   | j                   j                  j                  dt        |       ddt	        |t
        j                  t           d      ddi|t               d	{   }	 d
|j                  cxk  rdk  rn nt        |d	      S |j                  dk(  rt        t        |j                        t        j                  t
        j                  t
        j                      t#        t
        j                  t
        j                      |j%                                           |j                  dk(  rt'        t        |j                        t        j                  t
        j                  t
        j                      t#        t
        j                  t
        j                      |j%                                           |j%                         }t+        |j                  t        |j                        |      7 # t(        $ r6 t+        |j                  t        |j                        |j,                        w xY ww)a_  
        Append log entries for a running local runner job

        Parameters
        ----------
        job_id : str

        request : typing.Sequence[LocalRunnerLogEntry]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        r2   r3   rW   rX   rY   r\   r]   r^   Nr8   r9   r=   r`   r:   rA   r@   rD   )r%   rF   rG   r
   r   rH   ra   r   rb   rE   r   r   rL   rB   rI   rM   rN   r   rK   r   r   r   rO   rc   s         r(   rd   z%AsyncRawRunnersClient.append_job_logs  s    . ..;;CC,-=f-E,FeL8FOO<O,P\c  2 , D 
 
		ti++1c1()$GG$$+% !2!23

3$"(//&**"=$-NN$4	 	 $$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooQ
L  	ty'<'<d9K\K\F]dmdrdrss	ts7   A#I%G?&I+$H IEH ,I?IIc                  K   | j                   j                  j                  dt        |       dd|       d{   }	 d|j                  cxk  rdk  rn nt        |d      S |j                  d	k(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                         
                  |j                         }t!        |j                  t        |j                        |      7 # t        $ r6 t!        |j                  t        |j                        |j"                        w xY ww)a"  
        Cancel a pending or running local runner job

        Parameters
        ----------
        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        r2   rf   rW   rg   Nr8   r9   r=   r@   r:   rA   rD   )r%   rF   rG   r
   rE   r   r   rL   rB   rH   rI   rM   rN   r   rK   r   r   rO   rh   s        r(   ri   z AsyncRawRunnersClient.cancel_job  sD    " ..;;CC,-=f-E,FgN+ D 
 
	
	ti++1c1()$GG$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo-
(  	ty'<'<d9K\K\F]dmdrdrss	ts4   9E?D;E?$D= %E?&B*D= ,E?=?E<<E?rj   rk   c                  K   | j                   j                  j                  dd||dddi|t               d{   }	 d|j                  cxk  rd	k  rGn nDt        j                  t        t        t        |j                         
            }t        ||      S |j                  dk(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                         
                  |j                  dk(  rt!        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                         
                  |j                         }t%        |j                  t        |j                        |      7 # t"        $ r6 t%        |j                  t        |j                        |j&                        w xY ww)a  
        Exchange a pairing code or API key for local runner credentials

        Parameters
        ----------
        pairing_code : str

        runner_name : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[LocalRunnerConnectResponse]
            Runner connected
        rm   rW   rn   r\   r]   r^   Nr8   r9   r:   r=   r`   rA   r@   rD   )r%   rF   rG   rb   rE   rH   rI   r   r   rK   r   r   rL   rB   rM   rN   r   r   r   rO   ro   s          r(   rp   z$AsyncRawRunnersClient.connect_runner  s    ( ..;;CC2 ,*
  2 , D 
 
	"	ti++1c1. 8 ) 0 ))%HH$$+% !2!23

3$"(//&**"=$-NN$4	 	 $$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooa
\  	ty'<'<d9K\K\F]dmdrdrss	ts5   8IHI AH IEH  ,I?IIrq   ru   rv   rr   rs   rt   c                \  K   | j                   j                  j                  dd||||t        |t        d      dddi|t
               d	{   }	 d
|j                  cxk  rdk  rn nt        |d	      S |j                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j!                                           |j                  dk(  rt#        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j!                                           |j!                         }t'        |j                  t        |j                        |      7 # t$        $ r6 t'        |j                  t        |j                        |j(                        w xY ww)a  
        Create a local runner job and enqueue it for execution

        Parameters
        ----------
        agent_name : str

        project_id : str

        inputs : typing.Optional[JsonNode]

        mask_id : typing.Optional[str]

        metadata : typing.Optional[LocalRunnerJobMetadata]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        rx   rW   rX   rY   ry   r\   r]   r^   Nr8   r9   r=   r@   r:   rA   rz   rD   )r%   rF   rG   r   r   rb   rE   r   r   rL   rB   rH   rI   rM   rN   r   rK   r   r   r   rO   r{   s	            r(   r|   z AsyncRawRunnersClient.create_joba  s    @ ..;;CC+( ("C$1GSZ  2 ,! D 
 
	$	ti++1c1()$GG$$+# !2!23

3$"(//&**"=$-NN$4	 	 $$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo]
X  	ty'<'<d9K\K\F]dmdrdrss	ts7   AH,G'H,$G* 7H,8EG* <,H,*?H))H,c                n  K   | j                   j                  j                  ddd|iddi|t               d{   }	 d|j                  cxk  rd	k  rGn nDt        j                  t        t        t        |j                         
            }t        ||      S |j                  dk(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                         
                  |j                         }t#        |j                  t        |j                        |      7 7# t         $ r6 t#        |j                  t        |j                        |j$                        w xY ww)as  
        Generate a pairing code for a local runner in the current workspace

        Parameters
        ----------
        project_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[LocalRunnerPairResponse]
            Pairing code generated
        r~   rW   rv   r\   r]   r^   Nr8   r9   r:   r=   r@   rA   rD   )r%   rF   rG   rb   rE   rH   rI   r   r   rK   r   r   rL   rB   rM   rN   r   r   rO   r   s         r(   r   z+AsyncRawRunnersClient.generate_pairing_code  sz    $ ..;;CC,j  2 , D 
 
		ti++1c1+ 5 ) 0 ))%HH$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooI
D  	ty'<'<d9K\K\F]dmdrdrss	ts4   7F5E0F5AE3 F5B*E3 ,F53?F22F5c                p  K   | j                   j                  j                  dt        |       d|       d{   }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||      S |j                  d	k(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                     
      |j                         }t#        |j                  t        |j                        |      7 7# t         $ r6 t#        |j                  t        |j                        |j$                        w xY ww)aJ  
        Get a single local runner job's status and results

        Parameters
        ----------
        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[LocalRunnerJob]
            Job details
        r2   r4   rg   Nr8   r9   r:   r=   r@   rA   rD   r%   rF   rG   r
   rE   rH   rI   r   r   rK   r   r   rL   rB   rM   rN   r   r   rO   r   s         r(   r   zAsyncRawRunnersClient.get_job  sj    $ ..;;CC,-=f-E,FG+ D 
 
	
	ti++1c1" , ) 0 ))%HH$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo;
6  	ty'<'<d9K\K\F]dmdrdrss	t5   8F6E1F6 AE4 F6B*E4 ,F64?F33F6r   c                p  K   | j                   j                  j                  dt        |       d|       d{   }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||      S |j                  d	k(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                     
      |j                         }t#        |j                  t        |j                        |      7 7# t         $ r6 t#        |j                  t        |j                        |j$                        w xY ww)aO  
        Get a single local runner with its registered agents

        Parameters
        ----------
        runner_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[LocalRunner]
            Runner details
        r   r4   rg   Nr8   r9   r:   r=   r@   rA   rD   )r%   rF   rG   r
   rE   rH   rI   r   r   rK   r   r   rL   rB   rM   rN   r   r   rO   r   s         r(   r   z AsyncRawRunnersClient.get_runner  sj    $ ..;;CC'(8(C'DE+ D 
 
	
	ti++1c1 ) ) 0 ))%HH$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo;
6  	ty'<'<d9K\K\F]dmdrdrss	tr   c                :  K   | j                   j                  j                  dt        |       dd|       d{   }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||	      S |j                  d
k(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                           |j                  dk(  rUt!        t        |j                        t        j                  t"        t        t"        |j                                           |j                         }t'        |j                  t        |j                        |      7 # t$        $ r6 t'        |j                  t        |j                        |j(                        w xY ww)aN  
        Refresh local runner heartbeat

        Parameters
        ----------
        runner_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[LocalRunnerHeartbeatResponse]
            Heartbeat response
        r   r   rW   rg   Nr8   r9   r:   r=   r@   rA   r   rD   )r%   rF   rG   r
   rE   rH   rI   r   r   rK   r   r   rL   rB   rM   rN   r   r   r   r   rO   r   s         r(   r   zAsyncRawRunnersClient.heartbeatK  s    $ ..;;CC'(8(C'DKP+ D 
 
	
"	ti++1c10 : ) 0 ))%HH$$+# !2!23

3$"(//&**"=$-NN$4	 	 $$+ !2!23$$".$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooQ
L  	ty'<'<d9K\K\F]dmdrdrss	ts5   9HGHAG HDG +,H?HHr   r   r   c                |  K   | j                   j                  j                  dt        |       dd|||d|       d{   }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                         	            }t        ||
      S |j                  dk(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                         	                  |j                         }t#        |j                  t        |j                        |      7 7# t         $ r6 t#        |j                  t        |j                        |j$                        w xY ww)a  
        List jobs for a local runner

        Parameters
        ----------
        runner_id : str

        project_id : typing.Optional[str]

        page : typing.Optional[int]

        size : typing.Optional[int]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[LocalRunnerJobPage]
            Jobs list
        r   r   r4   r   r5   Nr8   r9   r:   r=   r@   rA   rD   )r%   rF   rG   r
   rE   rH   rI   r   r   rK   r   r   rL   rB   rM   rN   r   r   rO   r   s	            r(   r   zAsyncRawRunnersClient.list_jobs  s~    < ..;;CC'(8(C'DEJ(
 , D 	
 	
		ti++1c1& 0 ) 0 ))%HH$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooE	
@  	ty'<'<d9K\K\F]dmdrdrss	ts7   >F< E7F<AE: !F<"B*E: ,F<:?F99F<r   c                b  K   | j                   j                  j                  dd|||d|       d{   }	 d|j                  cxk  rdk  rGn nDt	        j
                  t        t        t        |j                                     }t        ||	      S |j                  d
k(  rt        t        |j                        t	        j
                  t        j                  t        j                     t        t        j                  t        j                     |j                                           |j                         }t!        |j                  t        |j                        |      7 7# t        $ r6 t!        |j                  t        |j                        |j"                        w xY ww)a  
        List local runners owned by the current user in the workspace

        Parameters
        ----------
        project_id : str

        page : typing.Optional[int]

        size : typing.Optional[int]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[LocalRunnerPage]
            Runners list
        r   r4   r   r5   Nr8   r9   r:   r=   r@   rA   rD   )r%   rF   rG   rE   rH   rI   r   r   rK   r   r   rL   rB   rM   rN   r   r   rO   r   s           r(   r   z"AsyncRawRunnersClient.list_runners  sn    6 ..;;CC&(
 , D 	
 	
		ti++1c1# - ) 0 ))%HH$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooE	
@  	ty'<'<d9K\K\F]dmdrdrss	ts4   1F/E*F/AE- F/B*E- ?,F/-?F,,F/c                r  K   | j                   j                  j                  dt        |       dd|       d{   }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||	      S |j                  d
k(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                           |j                         }t#        |j                  t        |j                        |      7 7# t         $ r6 t#        |j                  t        |j                        |j$                        w xY ww)aL  
        Long-poll for the next pending local runner job

        Parameters
        ----------
        runner_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[LocalRunnerJob]
            Job available
        r   r   rW   rg   Nr8   r9   r:   r=   r@   rA   rD   r   r   s         r(   r   zAsyncRawRunnersClient.next_job  sl    $ ..;;CC'(8(C'DJO+ D 
 
	
	ti++1c1" , ) 0 ))%HH$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo;
6  	ty'<'<d9K\K\F]dmdrdrss	ts5   9F7E2F7AE5 F7B*E5 ,F75?F44F7c                J  K   | j                   j                  j                  dt        |       dd|ddi|t               d{   }	 d|j
                  cxk  rd	k  rn nt        |d
      S |j
                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                                           |j
                  dk(  rt!        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                                           |j                         }t%        |j
                  t        |j                        |      7 # t"        $ r6 t%        |j
                  t        |j                        |j&                        w xY ww)aj  
        Register or update the local runner's agent list

        Parameters
        ----------
        runner_id : str

        request : typing.Dict[str, typing.Optional[typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        r   r   r   r\   r]   r^   Nr8   r9   r=   r`   r:   rA   r@   rD   r%   rF   rG   r
   rb   rE   r   r   rL   rB   rH   rI   rM   rN   r   rK   r   r   r   rO   r   s         r(   r   z%AsyncRawRunnersClient.register_agents9  s    . ..;;CC'(8(C'DGL 2 , D 	
 	
		ti++1c1()$GG$$+% !2!23

3$"(//&**"=$-NN$4	 	 $$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooM	
H  	ty'<'<d9K\K\F]dmdrdrss	ts7   AH#GH#
$G! .H#/EG! 3,H#!?H  H#r   r   r   r   r   c                T  K   | j                   j                  j                  dt        |       dd||||dddi|t               d{   }	 d	|j
                  cxk  rd
k  rn nt        |d      S |j
                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                                           |j
                  dk(  rt!        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                                           |j                         }t%        |j
                  t        |j                        |      7 # t"        $ r6 t%        |j
                  t        |j                        |j&                        w xY ww)a  
        Report local runner job completion or failure

        Parameters
        ----------
        job_id : str

        status : LocalRunnerJobResultRequestStatus

        result : typing.Optional[JsonNode]

        error : typing.Optional[str]

        trace_id : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        r2   r   rW   r   r\   r]   r^   Nr8   r9   r=   r`   r:   rA   r@   rD   r   r   s	            r(   r   z'AsyncRawRunnersClient.report_job_resultx  s    @ ..;;CC,-=f-E,FhO  $	  2 , D 
 
		ti++1c1()$GG$$+% !2!23

3$"(//&**"=$-NN$4	 	 $$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooW
R  	ty'<'<d9K\K\F]dmdrdrss	ts7   AH(	G#
H($G& 3H(4EG& 8,H(&?H%%H())r   r   r   r   r)   r   rH   rM   r   r   r   rJ   r   rT   ra   rd   ri   r   rp   rb   r   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rN   r   r   r   r   r+   r(   r   r   s  s   .*< . (,;?8p8p $	8p
  88p 
6;;':;	<8p~ <@?p?p !45	?p
  8?p 
4	 ?pD RV'p'p/5~/N'p	4	 'pT jnDp"Dp14DpGMWeGfDp	5	6DpV -1(,<@;?Np Np 	Np
 )Np %Np //"89Np  8Np 
4	 Npb VZ6p 6p39??>3R6p	2	36pr RV/p/p/5~/N/p	>	*/pd UY/p/p28//.2Q/p	;	'/pd UY:p:p28//.2Q:p	7	8:p@ ,0%)%);?@p@p OOC(	@p
 ooc"@p ooc"@p  8@p 
-	.@pL &*%);?=p =p ooc"	=p
 ooc"=p  8=p 
?	+=p@ UY/p/p28//.2Q/p	>	*/pl <@=p=p S&//&**"==>	=p
  8=p 
4	 =pH -1&*)-;?KpKp 2	Kp
 )Kp s#Kp //#&Kp  8Kp 
4	 Kpr+   r   )8rH   json.decoderr   core.api_errorr   core.client_wrapperr   r   core.http_responser   r	   core.jsonable_encoderr
   core.pydantic_utilitiesr   core.request_optionsr   core.serializationr   errors.bad_request_errorr   errors.conflict_errorr   errors.gone_errorr   errors.not_found_errorr   types.error_messager   types.json_noder   types.local_runnerr   #types.local_runner_connect_responser   %types.local_runner_heartbeat_responser   types.local_runner_jobr   types.local_runner_job_metadatar   types.local_runner_job_pager   types.local_runner_log_entryr   types.local_runner_pager    types.local_runner_pair_responser   ,types.local_runner_job_result_request_statusr   rI   rN   rb   r    r   r   r+   r(   <module>r      s     ( % G @ 4 2 1 H 6 1 ) 2 . & , L P 3 D < > 5 F [ v{{6::s#Np NpbPp Ppr+   