§
    ¹XÂjÈ0  ã                  ó  — d dl mZ d dlZd dlmc mZ d dlZd dl	m	Z	m
Z
 d dlmZ 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 d dlmZ d d	lmZ d d
lmZmZ d„ Z G d„ d¦  «        Z d„ Z!d„ Z"d„ Z# G d„ d¦  «        Z$d„ Z%d„ Z&d„ Z'd„ Z(dS )é    )ÚannotationsN)ÚdatetimeÚtimezone)ÚPath)Ú
TestClient)ÚControlErrorÚProject)ÚProjectRegistry)Ú	PiAdapter)ÚCodexAdapter)ÚPiSessionEventÚPiSessionRegistryc                óø
  — t          | dz  ¦  «        }t          ddt          | ¦  «        ¬¦  «        }|                     |¦  «         |j        }t          |¦  «        }|j        }d} ||¦  «        }||k    }|�sit          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        t           ¦  «        rt          j        t           ¦  «        nddt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	d
œz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}x}x}x}}t          j        t           d¬¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t           d¬¦  «        5  |                     t          ddt          | dz  ¦  «        ¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                     d¦  «         |j        }t          |¦  «        }|j        } |¦   «         }g }||k    }|�s+t          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        t           ¦  «        rt          j        t           ¦  «        nddt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}|j                             d¦  «         t          j        t           d¬¦  «        5  |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |j        }|j        } |¦   «         }d}||k    }|sÐt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}d S )Nzconfig/projects.jsonÚtestÚTest©ÚidÚnameÚpath©ú==)z„%(py11)s
{%(py11)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.path
})
}.get
}(%(py9)s)
} == %(py13)sr
   ÚregistryÚp)Úpy0Úpy1Úpy3Úpy5Úpy7Úpy9Úpy11Úpy13úassert %(py15)sÚpy15zalready registered©Úmatchzexisting absoluteÚmissingÚMissingÚabsent)z|%(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.path
})
}.list
}()
} == %(py12)s)r   r   r   r   r   r   Úpy12úassert %(py14)sÚpy14z{brokenzinvalid project registry)zb%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.path
}.read_text
}()
} == %(py9)s)r   Úpy2Úpy4Úpy6r   zassert %(py11)sr    )r
   r	   ÚstrÚaddr   ÚgetÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚpytestÚraisesr   ÚdeleteÚlistÚ
write_textÚ	read_text)Útmp_pathr   r   Ú@py_assert2Ú@py_assert4Ú@py_assert6Ú@py_assert8Ú@py_assert10Ú@py_assert12Ú@py_format14Ú@py_format16Ú@py_assert11Ú@py_format13Ú@py_format15Ú@py_assert1Ú@py_assert3Ú@py_assert5Ú@py_assert7Ú@py_format10Ú@py_format12s                       úW/home/lighthouse/esp32-dev/.cache/network-resilience-0.5.1/server/tests/test_control.pyÚ0test_project_registry_persistence_and_validationrS      s^  € Ý˜xÐ*@Ñ@ÑAÔA€HÝ�6 ­S°©]¬]Ð;Ñ;Ô;€AØ‡L‚L��O„O€OØ#œ=Ð:�?˜=Ñ)Ô)Ð:Ð)Ô-Ð:¨fÐ:Ð-Ð-¨fÑ5Ô5Ð:Ð5¸Ò:Ð:Ð:Ñ:Õ:Ô:Ð:Ð:Ð:Ð:Ð5¸Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:�?Ñ:Ô:Ð:Õ:Ô:�?Ñ:Ô:Ð:Ð:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:˜8Ñ:Ô:Ð:Õ:Ô:˜8Ñ:Ô:Ð:Ð:Õ:Ô:˜=Ñ:Ô:Õ:Ô:Ð)Ñ:Ô:Õ:Ô:Ð-Ñ:Ô:Õ:Ô:¨fÑ:Ô:Õ:Ô:Ð5Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:¸Ñ:Ô:Ð:Õ:Ô:¸Ñ:Ô:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ý	Œ•|Ð+?Ð	@Ñ	@Ô	@ð ð Ø�Š�Q‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	Œ•|Ð+>Ð	?Ñ	?Ô	?ð [ð [Ø�Š•W 	°	ÅÀHÈxÑDWÑ@XÔ@XÐYÑYÔYÑZÔZÐZð[ð [ð [ñ [ô [ð [ð [ð [ð [ð [ð [øøøð [ð [ð [ð [à‡O‚O�FÑÔÐØ#œ=Ð6�?˜=Ñ)Ô)Ð6Ð)Ô.Ð6Ð.Ð.Ñ0Ô0Ð6°BÐ6Ð0°BÒ6Ð6Ð6Ñ6Õ6Ô6Ð6Ð6Ð6Ð6Ð0°BÐ6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�?Ñ6Ô6Ð6Õ6Ô6�?Ñ6Ô6Ð6Ð6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6˜8Ñ6Ô6Ð6Õ6Ô6˜8Ñ6Ô6Ð6Ð6Õ6Ô6˜=Ñ6Ô6Õ6Ô6Ð)Ñ6Ô6Õ6Ô6Ð.Ñ6Ô6Õ6Ô6Ð0Ñ6Ô6Õ6Ô6°BÑ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø„M×Ò˜YÑ'Ô'Ð'Ý	Œ•|Ð+EÐ	FÑ	FÔ	Fð ð Ø�Š‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð àŒ=Ð1ˆ=Ô"Ð1Ð"Ð"Ñ$Ô$Ð1¨	Ð1Ð$¨	Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð$¨	Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆ8Ñ1Ô1Ð1Õ1Ô1ˆ8Ñ1Ô1Ð1Ð1Õ1Ô1ˆ=Ñ1Ô1Õ1Ô1Ð"Ñ1Ô1Õ1Ô1Ð$Ñ1Ô1Õ1Ô1¨	Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1s6   È
H,È,H0È3H0É6JÊJÊJÑQ3Ñ3Q7Ñ:Q7c                  ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚPiRPCc                óL   — || _         d| _        d| _        g | _        d| _        d S )NFr   )ÚcwdÚliveÚresumesÚinputsÚclosed©ÚselfrW   s     rR   Ú__init__zPiRPC.__init__$   s)   € ØˆŒØˆŒ	ØˆŒØˆŒØˆŒˆˆó    c              ƒ  ó   K  — |dk    r)t          dd| j        d| j        rdnd| j        ¬¦  «        gS |d         }d}||k    }|slt          j        d	|fd
||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}| j         }|r=|                     dd¦  «        st          dd¦  «        ‚| xj
        dz  c_
        d| _        |dk    r | j                             |d         ¦  «         t          j        d¦  «        ƒ d {V —† t          ddd|¬¦  «        S )Nr=   ÚhistoryÚSavedz2026-01-01T00:00:00+00:00ÚIDLEÚDORMANT)Ú
session_idr   rW   Ú
updated_atÚstaterX   re   r   ©z%(py1)s == %(py4)s©r   r-   úassert %(py6)sr.   Úallow_resumeTzlive runtime unavailableé™  é   ÚinputÚtextr   Úpi)ÚacceptedÚagentre   Úresumed)ÚdictrW   rX   r2   r3   r7   r8   r9   r1   r   rY   rZ   ÚappendÚasyncioÚsleep)	r]   ÚmethodÚparamsÚ@py_assert0rM   rA   Ú@py_format5Ú@py_format7rs   s	            rR   Úcallz
PiRPC.call+   s¦  è è € Ø�VÒÐÝ I°GÀÄÐVqØ)-¬ÐA˜v˜v¸	ÈÌ	ðSñ Sô Sð Tð Tà�lÔ#Ð0 yÐ0Ð# yÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð# yÐ0Ñ0Ô0Õ0Ô0Ð#Ñ0Ô0Õ0Ô0 yÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø”i�-ˆØð 	Ø—:’:˜n¨dÑ3Ô3ð DÝ"Ð#=¸sÑCÔCÐCØˆLŒL˜AÑˆLŒLØˆDŒIØ�WÒÐØŒK×Ò˜v fœ~Ñ.Ô.Ð.ÝŒm˜AÑÔÐÐÐÐÐÐÐÝ˜T¨¸)ÈWÐUÑUÔUÐUr_   c              ƒ  ó&   K  — d| _         d| _        d S )NTF)r[   rX   ©r]   s    rR   ÚclosezPiRPC.close;   s   è è € ØˆŒØˆŒ	ˆ	ˆ	r_   N)Ú__name__Ú
__module__Ú__qualname__r^   r}   r€   © r_   rR   rU   rU   #   sD   € € € € € ðð ð ðVð Vð Vð ð ð ð ð r_   rU   c                óJ   ‡ — ˆ fd„}t          j         |¦   «         ¦  «         d S )Nc            
   “  ó²  •K  — t          ‰dz  ¦  «        } |                      t          ddt          ‰¦  «        ¬¦  «        ¦  «        }t	          ¦   «         }t          t          ‰¦  «        ¦  «        }t          | ||¦  «        }|                     d¦  «        ƒ d {V —†}|j        }d}||k    }|st          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }	d
d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}x}}t          j        |                     dd¦  «        |                     dd¦  «        ¦  «        ƒ d {V —†}d„ |D ¦   «         }ddg}||k    }|slt          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}g }|j        }d}||k    }|}|r|j        }ddg}||k    }|}|�s~t          j
        d|fd||f¦  «        dt'          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |ržt          j
        d|fd||f¦  «        dt'          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }d d!|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}|                     t3          d"dd#t          ‰¦  «        ¬$¦  «        ¦  «         |                     |¦  «        ƒ d {V —†d         }|j        }d%}||k    }|st          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }	d
d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}x}}|                     |¦  «        ƒ d {V —†}t7          |¦  «        }d}||k    }|sÇt          j
        d|fd&||f¦  «        d't'          j        ¦   «         v st          j        t6          ¦  «        rt          j        t6          ¦  «        nd't          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d(œz  }d)d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}|                     t3          d*dd#t          ‰¦  «        ¬$¦  «        ¦  «         |                     ¦   «         ƒ d {V —† |                     |¦  «        ƒ d {V —†d         }|j        }d}||k    }|st          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }	d
d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}x}}t          t          | j        ¦  «        t	          ¦   «         t          t          ‰¦  «        ¦  «        ¦  «        }|                     d¦  «        ƒ d {V —†}|j        }d}||k    }|st          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }	d
d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}x}}t=          j        t@          ¦  «        5 }|                     d+d,¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |j!        }|j"        }d-}||k    }|s½t          j
        d|fd.||f¦  «        d/t'          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd/t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d(œz  }d)d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d S )0Núprojects.jsonr   ÚPr   ra   rd   r   ©z-%(py3)s
{%(py3)s = %(py1)s.state
} == %(py6)s©r   r   r.   úassert %(py8)sÚpy8ÚoneÚtwoc                ó   — g | ]
}|d          ‘ŒS )rs   r„   )Ú.0Úrs     rR   ú
<listcomp>zRtest_static_overlay_resume_input_and_restart.<locals>.exercise.<locals>.<listcomp>I   s   € Ð0Ð0Ð0 ��)”Ð0Ð0Ð0r_   TFrh   ri   rj   r.   rm   ©z/%(py4)s
{%(py4)s = %(py2)s.resumes
} == %(py7)sÚrpc©r,   r-   r   ú%(py9)sr   ©z2%(py13)s
{%(py13)s = %(py11)s.inputs
} == %(py16)s©r    r!   Úpy16ú%(py18)sÚpy18r   úassert %(py21)sÚpy21Úagent_startrb   ©Úeventre   r   rW   ÚRUNNING©z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sÚlen©r   r,   r-   r   úassert %(py9)sÚsession_shutdownÚunknownÚneveré”  ©zI%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.value
}.status
} == %(py7)sÚerror)#r
   r0   r	   r/   r   rU   r   Úget_sessionrg   r2   r3   r7   r8   r9   rv   ÚgatherÚ
send_inputrY   rZ   r4   r5   r6   ru   Ú_format_boolopÚapplyr   Úlist_sessionsr£   r€   r   r:   r;   r   ÚvalueÚstatus)ÚprojectsÚprojectrX   r”   Úadapterrz   rA   rN   rB   r|   Ú@py_format9Ú	responsesrM   r{   rL   rC   rF   Ú@py_assert15Ú@py_assert14Ú@py_format8rP   Ú@py_format17Ú@py_format19Ú@py_format20Ú@py_format22Ú	restartedr«   r@   s                              €rR   Úexercisez>test_static_overlay_resume_input_and_restart.<locals>.exerciseA   sv
  øè è € Ý" 8¨oÑ#=Ñ>Ô>ˆØ—,’,�w¨#°C½cÀ(¹m¼mÐLÑLÔLÑMÔMˆÝ Ñ"Ô"ˆÝ•C˜‘M”MÑ"Ô"ˆÝ˜H d¨CÑ0Ô0ˆØ×)Ò)¨)Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4ÐHÐ4Ô;ÐH¸yÐHÐ;¸yÒHÐHÐHÐHÕHÔHÐHÐHÐHÐHÐ;¸yÐHÑHÔHÕHÔHÐ4ÑHÔHÕHÔHÐ;ÑHÔHÕHÔH¸yÑHÔHÐHÐHÑHÐHÐHÐHÐHÐHÑHÐHÕHÕHÔHÐHÑHÔHÑHÔHÐHÐHÐHÐHÐHÐHÐHÐHÐHÝ!œ.¨×);Ò);¸IÀuÑ)MÔ)MÈw×OaÒOaÐbkÐmrÑOsÔOsÑtÔtÐtÐtÐtÐtÐtÐtˆ	Ø0Ð0 iÐ0Ñ0Ô0ÐA°T¸5°MÐAÐ0°MÒAÐAÐAÐAÕAÔAÐAÐAÐAÐAÐ0°MÐAÑAÔAÕAÔAÐ0ÑAÔAÕAÔA°MÑAÔAÐAÐAÑAÐAÐAÐAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAÐAÐAØ@Ð@ˆsŒ{Ð@˜aÐ@ˆ{˜aÒÐ@Ð@Ð@Ð@Ð@ C¤JÐ@°5¸%°.Ð@ J°.Ò$@Ð@Ð@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@ˆ{˜aÐ@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ˆsÑ@Ô@Ð@Õ@Ô@ˆsÑ@Ô@Ð@Ð@Õ@Ô@ˆ{Ñ@Ô@Õ@Ô@˜aÑ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Ð@×@Ò@Ð@Ñ@Ô@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@ J°.Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ CÑ@Ô@Ð@Õ@Ô@ CÑ@Ô@Ð@Ð@Õ@Ô@ JÑ@Ô@Õ@Ô@°.Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Ð@×@Ò@Ð@Ñ@Ô@Ð@Õ@Ô@Ð@Ð@Ñ@Ô@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø�
Š
•>¨À)ÐRYÕ_bÐckÑ_lÔ_lÐmÑmÔmÑnÔnÐnØ×+Ò+¨GÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4°aÔ8ÐKÐ8Ô>ÐKÀ)ÐKÐ>À)ÒKÐKÐKÐKÕKÔKÐKÐKÐKÐKÐ>À)ÐKÑKÔKÕKÔKÐ8ÑKÔKÕKÔKÐ>ÑKÔKÕKÔKÀ)ÑKÔKÐKÐKÑKÐKÐKÐKÐKÐKÑKÐKÕKÕKÔKÐKÑKÔKÑKÔKÐKÐKÐKÐKÐKÐKÐKÐKÐKØ ×.Ò.¨wÑ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð=�sÐ7Ñ8Ô8Ð=¸AÐ=Ð8¸AÒ=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð8¸AÐ=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=�sÑ=Ô=Ð=Õ=Ô=�sÑ=Ô=Ð=Ð=Õ=Ô=Ð7Ñ=Ô=Õ=Ô=Ð8Ñ=Ô=Õ=Ô=¸AÑ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ø�
Š
•>Ð(:ÀyÐW^ÕdgÐhpÑdqÔdqÐrÑrÔrÑsÔsÐsØ�mŠm‰oŒoÐÐÐÐÐÐÐØ×+Ò+¨GÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4°aÔ8ÐKÐ8Ô>ÐKÀ)ÐKÐ>À)ÒKÐKÐKÐKÕKÔKÐKÐKÐKÐKÐ>À)ÐKÑKÔKÕKÔKÐ8ÑKÔKÕKÔKÐ>ÑKÔKÕKÔKÀ)ÑKÔKÐKÐKÑKÐKÐKÐKÐKÐKÑKÐKÕKÕKÔKÐKÑKÔKÑKÔKÐKÐKÐKÐKÐKÐKÐKÐKÐKÝ�o¨h¬mÑ<Ô<Õ>OÑ>QÔ>QÕSXÕY\Ð]eÑYfÔYfÑSgÔSgÑhÔhˆ	Ø×+Ò+¨IÑ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6ÐJÐ6Ô=ÐJÀÐJÐ=ÀÒJÐJÐJÐJÕJÔJÐJÐJÐJÐJÐ=ÀÐJÑJÔJÕJÔJÐ6ÑJÔJÕJÔJÐ=ÑJÔJÕJÔJÀÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJÝŒ]�<Ñ(Ô(ð 	;¨EØ×&Ò& y°'Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;àŒ{Ð(ˆ{Ô!Ð( SÐ(Ð! SÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð! SÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆuÑ(Ô(Ð(Õ(Ô(ˆuÑ(Ô(Ð(Ð(Õ(Ô(ˆ{Ñ(Ô(Õ(Ô(Ð!Ñ(Ô(Õ(Ô( SÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(s   ß_/ß/_3ß6_3©rv   Úrun©r@   rÁ   s   ` rR   Ú,test_static_overlay_resume_input_and_restartrÅ   @   s:   ø€ ð)ð )ð )ð )ð )õ* „K��‘
”
ÑÔÐÐÐr_   c                óJ   ‡ — ˆ fd„}t          j         |¦   «         ¦  «         d S )Nc            
   “  óx  •K  — t          ‰dz  ¦  «        } |                      t          ddt          ‰¦  «        ¬¦  «        ¦  «         t	          ¦   «         }|                     t          dddt          ‰¦  «        ¬¦  «        ¦  «         t          t          ‰¦  «        ¦  «        }t          | ||¦  «        }t          j
        t          ¦  «        5  |                     dd	¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   g }|j        }d
}||k    }|}|r|j        }	g }
|	|
k    }|}|�s~t          j        d|fd||f¦  «        dt#          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |ržt          j        d|fd|	|
f¦  «        dt#          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d
¦  «        i z  }dd|iz  }t/          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}	x}}
d S )Nr‡   r   rˆ   r   Úsession_startra   rb   rŸ   rn   r   r   r“   r”   r•   r–   r   r—   r˜   rš   r›   rœ   r�   )r
   r0   r	   r/   r   r°   r   rU   r   r:   r;   r   r®   rY   rZ   r2   r3   r4   r5   r6   r7   ru   r¯   r8   r9   )r´   rX   r”   r¶   rL   rM   rC   rN   rz   rF   r¹   rº   r»   rP   r¼   r½   r¾   r¿   r@   s                     €rR   rÁ   zFtest_live_session_without_endpoint_is_not_duplicated.<locals>.exerciseZ   sG  øè è € Ý" 8¨oÑ#=Ñ>Ô>ˆØ�Š•W ¨#µC¸±M´MÐBÑBÔBÑCÔCÐCÝ Ñ"Ô"ˆØ�
Š
•>¨ÀIÐT[ÕadÐemÑanÔanÐoÑoÔoÑpÔpÐpÝ•C˜‘M”MÑ"Ô"ˆ­i¸À$ÈÑ.LÔ.L GÝŒ]�<Ñ(Ô(ð 	9ð 	9Ø×$Ò$ Y°Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9à4Ð4ˆsŒ{Ð4˜aÐ4ˆ{˜aÒÐ4Ð4Ð4Ð4Ð4 C¤JÐ4°"Ð4 J°"Ò$4Ð4Ð4Ð4Ð4Ñ4Õ4Ô4Ð4Ð4Ð4Ð4ˆ{˜aÐ4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆsÑ4Ô4Ð4Õ4Ô4ˆsÑ4Ô4Ð4Ð4Õ4Ô4ˆ{Ñ4Ô4Õ4Ô4˜aÑ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Ð4×4Ò4Ð4Ñ4Ô4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4 J°"Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4 CÑ4Ô4Ð4Õ4Ô4 CÑ4Ô4Ð4Ð4Õ4Ô4 JÑ4Ô4Õ4Ô4°"Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Ð4×4Ò4Ð4Ñ4Ô4Ð4Õ4Ô4Ð4Ð4Ñ4Ô4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4s   ÃC8Ã8C<Ã?C<rÂ   rÄ   s   ` rR   Ú4test_live_session_without_endpoint_is_not_duplicatedrÉ   Y   s:   ø€ ð5ð 5ð 5ð 5ð 5õ „K��‘
”
ÑÔÐÐÐr_   c                ó8  — t          | dz  ¦  «        }t          |t          ¦   «         t          t	          | ¦  «        ¦  «        ¦  «        }|                     t          d|¦  «         |                     t          dd|i¦  «         t          t          j        ¦  «        5 }|j	        }d}ddt	          | ¦  «        dœ} |||¬	¦  «        }|j
        }	d
}
|	|
k    }|söt          j        d|fd|	|
f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	x}}
|                     d¦  «                             ¦   «         d         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}}|                     d¦  «                             ¦   «         d         d         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}}d}|j	        }ddi} |||¬	¦  «        }|j
        }d}||k    }|�s!t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d!œz  }d"d#|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}| 	                    |dd$i¬	¦  «        }g }|j
        }d%}||k    }|}|r|                     ¦   «         d&         }|}|�st          j        d|fd'||f¦  «        d(t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd(t          j        |¦  «        t          j        |¦  «        d)œz  }d*d+|iz  }|                     |¦  «         |r.d,d-t          j        |¦  «        iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}| 	                    |dd.i¬	¦  «                             ¦   «         d&         }d/}||u }|slt          j        d0|fd1||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}}|j	        }d2}dd3i} |||¬	¦  «        }|j
        }	d4}
|	|
k    }|söt          j        d|fd|	|
f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	x}}
|j        }d5} ||¦  «        }|j
        }d6}||k    }	|	sãt          j        d|	fd7||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d8œz  }d9d:|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	}|j        }d;} ||¦  «        }|j
        }d4}||k    }	|	sãt          j        d|	fd<||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d8œz  }d9d:|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	}d d d ¦  «         d S # 1 swxY w Y   d S )=Nr‡   Úproject_registryÚadaptersrp   z/api/projectsr   rˆ   r   )ÚjsonéÉ   r   )z|%(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.post
}(%(py4)s, json=%(py6)s)
}.status_code
} == %(py13)sÚclient)r   r,   r-   r.   rŒ   Úpy10r!   r"   r#   r   r   rh   ri   rj   r.   z/api/projects/p/sessionsÚsessionsrg   rd   z%/api/agents/pi/sessions/history/inputro   z   i¦  )zz%(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.post
}(%(py3)s, json=%(py5)s)
}.status_code
} == %(py12)sÚurl)r   r,   r   r   r   r   r)   r*   r+   ÚhelloéÊ   rs   )z3%(py4)s
{%(py4)s = %(py2)s.status_code
} == %(py7)sr‘   r•   r–   r   z%(py12)sr)   ÚagainF©Úis)z%(py1)s is %(py4)sz*/api/agents/unknown/sessions/history/inputÚnor©   z/api/projects/péÌ   )zn%(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.delete
}(%(py4)s)
}.status_code
} == %(py11)s)r   r,   r-   r.   rŒ   r    zassert %(py13)sr!   z/api/agents/pi/sessions/history)zk%(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
}.status_code
} == %(py11)s)r
   r   r   rU   r/   ÚsetattrÚgatewayr   ÚappÚpostÚstatus_coder2   r3   r4   r5   r6   r7   r8   r9   r1   rÍ   ru   r¯   r<   )r@   Úmonkeypatchr´   r¶   rÏ   rL   rM   rN   rO   Ú@py_assert9rF   rI   rG   rH   rz   rA   r{   r|   rÒ   rB   rC   rD   rE   rJ   rK   r‘   r»   rP   rQ   s                                rR   Ú'test_control_http_routes_and_validationrá   f   sÏ  € Ý˜x¨/Ñ9Ñ:Ô:€HÝ˜Õ"3Ñ"5Ô"5µu½SÀ¹]¼]Ñ7KÔ7KÑLÔL€GØ×Ò�Ð!3°XÑ>Ô>Ð>Ø×Ò� ¨d°G¨_Ñ=Ô=Ð=Ý	•G”KÑ	 Ô	 ð P FØŒ{Ðo˜?Ðo°sÀ#ÍSÐQYÉ]Ì]Ð1[Ð1[Ðoˆ{ˆ{˜?Ð1[Ð\Ñ\Ô\ÐoÐ\ÔhÐoÐloÐoÐhÐloÒoÐoÐoÐoÕoÔoÐoÐoÐoÐoÐhÐloÐoÑoÔoÐoÕoÔoÑoÔoÐoÐoÕoÔoˆvÑoÔoÐoÕoÔoˆvÑoÔoÐoÐoÕoÔoˆ{ÑoÔoÕoÔo˜?ÑoÔoÕoÔoÐ1[ÑoÔoÕoÔoÐ\ÑoÔoÕoÔoÐhÑoÔoÕoÔoÐloÑoÔoÐoÐoÑoÐoÐoÐoÐoÐoÑoÐoÕoÕoÔoÐoÑoÔoÑoÔoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoÐoØ�zŠz˜/Ñ*Ô*×/Ò/Ñ1Ô1°!Ô4°TÔ:ÐA¸cÐAÐ:¸cÒAÐAÐAÐAÕAÔAÐAÐAÐAÐAÐ:¸cÐAÑAÔAÕAÔAÐ:ÑAÔAÕAÔA¸cÑAÔAÐAÐAÑAÐAÐAÐAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAÐAÐAØ�zŠzÐ4Ñ5Ô5×:Ò:Ñ<Ô<¸ZÔHÈÔKÈGÔTÐaÐXaÐaÐTÐXaÒaÐaÐaÐaÕaÔaÐaÐaÐaÐaÐTÐXaÐaÑaÔaÕaÔaÐTÑaÔaÕaÔaÐXaÑaÔaÐaÐaÑaÐaÐaÐaÐaÐaÑaÐaÕaÕaÔaÐaÑaÔaÑaÔaÐaÐaÐaÐaÐaÐaÐaØ3ˆØŒ{ÐF V¨E NÐFˆ{ˆ{˜3 NÐ3Ñ3Ô3ÐFÐ3Ô?ÐFÀ3ÐFÐ?À3ÒFÐFÐFÑFÕFÔFÐFÐFÐFÐFÐ?À3ÐFÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔFˆvÑFÔFÐFÕFÔFˆvÑFÔFÐFÐFÕFÔFˆ{ÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔF˜3ÑFÔFÐFÕFÔF˜3ÑFÔFÐFÐFÕFÔF NÑFÔFÕFÔFÐ3ÑFÔFÕFÔFÐ?ÑFÔFÕFÔFÀ3ÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFØ
�+Š+�c  wÐ/ˆ+Ñ
0Ô
0ˆØ;Ð;ˆqŒ}Ð; Ð;ˆ} Ò#Ð;Ð;Ð;Ð;Ð;¨¯ª©¬°Ô(;Ð;Ð(;Ð;Ð;Ñ;Õ;Ô;Ð;Ð;Ð;Ð;ˆ} Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆqÑ;Ô;Ð;Õ;Ô;ˆqÑ;Ô;Ð;Ð;Õ;Ô;ˆ}Ñ;Ô;Õ;Ô; Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Ð;×;Ò;Ð;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Õ;Ô;Ð(;Ñ;Ô;Ð;Ñ;Ð;Ð;×;Ò;Ð;Ñ;Ô;Ð;Õ;Ô;Ð;Ð;Ñ;Ô;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ø�{Š{˜3 V¨GÐ$4ˆ{Ñ5Ô5×:Ò:Ñ<Ô<¸YÔGÐPÈ5ÐPÐGÈ5ÐPÐPÐPÐPÕPÔPÐPÐPÐPÐPÐGÈ5ÐPÑPÔPÕPÔPÐGÑPÔPÕPÔPÈ5ÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPÐPÐPØŒ{ÐnÐGÐnÈfÐUYÈ]Ðnˆ{ˆ{ÐGÈ]Ð[Ñ[Ô[ÐnÐ[ÔgÐnÐknÐnÐgÐknÒnÐnÐnÐnÕnÔnÐnÐnÐnÐnÐgÐknÐnÑnÔnÐnÕnÔnÑnÔnÐnÐnÕnÔnˆvÑnÔnÐnÕnÔnˆvÑnÔnÐnÐnÕnÔnˆ{ÑnÔnÕnÔnÐGÑnÔnÕnÔnÈ]ÑnÔnÕnÔnÐ[ÑnÔnÕnÔnÐgÑnÔnÕnÔnÐknÑnÔnÐnÐnÑnÐnÐnÐnÐnÐnÑnÐnÕnÕnÔnÐnÑnÔnÑnÔnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnØŒ}ÐBÐ.ÐBˆ}ˆ}Ð.Ñ/Ô/ÐBÐ/Ô;ÐB¸sÐBÐ;¸sÒBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ;¸sÐBÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔBˆvÑBÔBÐBÕBÔBˆvÑBÔBÐBÐBÕBÔBˆ}ÑBÔBÕBÔBÐ.ÑBÔBÕBÔBÐ/ÑBÔBÕBÔBÐ;ÑBÔBÕBÔB¸sÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBØŒzÐOÐ;ÐOˆzˆzÐ;Ñ<Ô<ÐOÐ<ÔHÐOÈCÐOÐHÈCÒOÐOÐOÐOÕOÔOÐOÐOÐOÐOÐHÈCÐOÑOÔOÐOÕOÔOÑOÔOÐOÐOÕOÔOˆvÑOÔOÐOÕOÔOˆvÑOÔOÐOÐOÕOÔOˆzÑOÔOÕOÔOÐ;ÑOÔOÕOÔOÐ<ÑOÔOÕOÔOÐHÑOÔOÕOÔOÈCÑOÔOÐOÐOÑOÐOÐOÐOÐOÐOÑOÐOÕOÕOÔOÐOÑOÔOÑOÔOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOðPð Pð Pñ Pô Pð Pð Pð Pð Pð Pð Pð Pøøøð Pð Pð Pð Pð Pð Ps   Âe%hèhèhc                  ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚCodexRPCc                óL   — || _         d| _        g | _        d| _        d| _        d S )Nrm   Fr   )rW   Ú
generationÚmessagesÚloadedÚturnsr\   s     rR   r^   zCodexRPC.__init__z   s&   € ØˆŒ a�d”o°r¨¬Àu¸4¼;ÐYZÈdÌjÈjÈjr_   c              ƒ  ó
   K  — d S ©Nr„   r   s    rR   ÚstartzCodexRPC.start|   ó
   è è € € € r_   c              ƒ  ó>   K  — | j                              |¦  «         d S rê   )ræ   ru   )r]   Úmessages     rR   ÚwritezCodexRPC.write}   s!   è è €  D¤M×$8Ò$8¸Ñ$AÔ$AÐ$AÐ$AÐ$Ar_   c              ƒ  ó
   K  — d S rê   r„   r   s    rR   r€   zCodexRPC.close~   rì   r_   c                óJ   — t          || j        ddd| j        rdndi¬¦  «        S )Nrm   rb   ÚtypeÚidleÚ	notLoaded)r   rW   Ú	updatedAtÚpreviewr³   )rt   rW   rç   )r]   Úsids     rR   ÚthreadzCodexRPC.thread   s2   € Ý�s˜tœx°!¸GÈFÐ]aÔ]hÐSyÐSYÐSYÐnyÐKzÐ{Ñ{Ô{Ð{r_   c              ƒ  óÔ  K  — | j                              ||f¦  «         |dk    rG|                      |                     d¦  «        rdnd¦  «        g|                     d¦  «        rd nddœS |dk    rd|                      |d	         ¦  «        iS |d
k    r%d| _        |                      |d	         ¦  «        ddœS |dk    r(| xj        dz  c_        ddt          | j        ¦  «        iiS i S )Nzthread/listÚcursorÚsecondÚfirstÚnext)ÚdataÚ
nextCursorzthread/readrø   ÚthreadIdzthread/resumeTr   )rø   Úmodelz
turn/startrm   Úturnr   )ræ   ru   rø   r1   rç   rè   r/   )r]   rx   ry   s      rR   r}   zCodexRPC.call�   s#  è è € ØŒ×Ò˜f V˜_Ñ-Ô-Ð-Ø�=Ò Ð Ø ŸKšK°F·J²J¸xÑ4HÔ4HÐ(U¨¨ÈgÑVÔVÐWÐnt×nxÒnxð  zBñ  oCô  oCð  gOÐfjÐfjð  IOð  Pð  Pð  PØ�=Ò Ð ¨(°4·;²;¸vÀjÔ?QÑ3RÔ3RÐ)SÐ"SØ�?Ò"Ð"ØˆDŒKØ!Ÿ[š[¨°
Ô);Ñ<Ô<ÀVÐLÐLÐLØ�<ÒÐØˆJŒJ˜‰MˆJŒJ 6¨4µ°D´J±´Ð*@Ð"AÐAØˆ	r_   N)	r�   r‚   rƒ   r^   rë   rï   r€   rø   r}   r„   r_   rR   rã   rã   y   sb   € € € € € ð[ð [ð [àÐÐØAÐAÐAØÐÐð|ð |ð |ð
ð 
ð 
ð 
ð 
r_   rã   c                óJ   ‡ — ˆ fd„}t          j         |¦   «         ¦  «         d S )Nc            	   “  ó¦  •K  — t          ‰dz  ¦  «        } |                      t          ddt          ‰¦  «        ¬¦  «        ¦  «        }t	          t          ‰¦  «        ¦  «        }t          | |¦  «        }|                     |¦  «        ƒ d {V —†}t          |¦  «        }d}||k    }|sÇt          j	        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}}|                     d¦  «        ƒ d {V —†}
|
j        }d}||k    }|st          j	        d|fd||f¦  «        t          j        |
¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
x}x}}|                     dd¦  «        ƒ d {V —†d         }
|
s:ddt          j        |
¦  «        iz  }t          t          j        |¦  «        ¦  «        ‚d }
t'          j        t*          ¦  «        5  |                     dd¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |                     dddidœ¦  «        ƒ d {V —† |                     ddddœdœ¦  «        ƒ d {V —† |                     d¦  «        ƒ d {V —†}
|
j        }d}||k    }|st          j	        d|fd||f¦  «        t          j        |
¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
x}x}}t'          j        t*          ¦  «        5 }|                     dd¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |j        }|j        }d}||k    }|s½t          j	        d|fd ||f¦  «        d!t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd!t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}}|                     d"d#ddid$œ¦  «        ƒ d {V —† |j        d%         }
d#d&d'id(œ}|
|k    }|slt          j	        d|fd)|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        d*œz  }d+d,|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
x}}|                     d-dd.d/id0œdœ¦  «        ƒ d {V —† |                     d¦  «        ƒ d {V —†}
|
j        }d1}||k    }|st          j	        d|fd||f¦  «        t          j        |
¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
x}x}}|                     ¦   «          d2|_        |xj        d3z  c_        |                     d¦  «        ƒ d {V —†}
|
j        }d}||k    }|st          j	        d|fd||f¦  «        t          j        |
¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
x}x}}d4„ |j        D ¦   «         }t=          |¦  «        }d}||k    }|sÇt          j	        d|fd||f¦  «        d5t          j        ¦   «         v st          j        t<          ¦  «        rt          j        t<          ¦  «        nd5t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}}d S )6Nr‡   r   rˆ   r   é   r   r¢   r£   r¤   r¥   r   rü   rd   r‰   rŠ   r‹   rŒ   rÓ   rs   zassert %(py1)sr   rÕ   zturn/startedr   )rx   ry   zitem/agentMessage/deltaÚSESSION_RESUMED)r   Údelta)z3%(py3)s
{%(py3)s = %(py1)s.recent_text
} == %(py6)sÚbusyrl   rª   r«   z%item/commandExecution/requestApprovalz
approval-1)rx   r   ry   éÿÿÿÿÚdecisionÚcancel©r   Úresultrh   ri   rj   r.   zturn/completedr³   Ú	completed)r   r  ÚDONEFrm   c              3  óX   K  — | ]%}t          |t          ¦  «        o|d          dk    V — Œ&dS )r   Ú
initializeN)Ú
isinstanceÚtuple)r�   Úms     rR   ú	<genexpr>z\test_codex_pagination_input_streaming_and_approval_seam.<locals>.exercise.<locals>.<genexpr>¢   s:   è è € ÐTÐTÀ!•:˜a¥Ñ&Ô&Ð=¨1¨Q¬4°Ò+=ÐTÐTÐTÐTÐTÐTr_   Úsum)r
   r0   r	   r/   rã   r   r±   r£   r2   r3   r4   r5   r6   r7   r8   r9   r¬   rg   r®   r:   r;   r   r    Úrecent_textr²   r³   ræ   Údisconnectedrç   rå   r  )r´   r   r”   r¶   rL   rM   rC   rN   r»   rP   rz   rA   rB   r|   r·   Ú@py_format2r«   r{   r@   s                     €rR   rÁ   zItest_codex_pagination_input_streaming_and_approval_seam.<locals>.exercise�   s'
  øè è € Ý  ¨/Ñ!9Ñ:Ô:ˆØ
�,Š,•w #¨3µC¸±M´MÐBÑBÔBÑ
CÔ
CˆÝ•S˜‘]”]Ñ#Ô#ˆ­\¸(À3Ñ-GÔ-G WØ ×.Ò.¨qÑ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð5�sÐ1Ñ2Ô2Ð5°AÐ5Ð2°AÒ5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð2°AÐ5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5�sÑ5Ô5Ð5Õ5Ô5�sÑ5Ô5Ð5Ð5Õ5Ô5Ð1Ñ5Ô5Õ5Ô5Ð2Ñ5Ô5Õ5Ô5°AÑ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø×)Ò)¨'Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2ÐDÐ2Ô9ÐD¸9ÐDÐ9¸9ÒDÐDÐDÐDÕDÔDÐDÐDÐDÐDÐ9¸9ÐDÑDÔDÕDÔDÐ2ÑDÔDÕDÔDÐ9ÑDÔDÕDÔD¸9ÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDØ×(Ò(¨°Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9¸9ÔEÐEÐEÐEÐEÐEÕEÔEÐEÑEÔEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÝŒ]�<Ñ(Ô(ÐSÐS°×0BÒ0BÀ7È7Ñ0SÔ0SÐ*SÐ*SÐ*SÐ*SÐ*SÐ*SÐ*SÐSÐSÐSÑSÔSÐSÐSÐSÐSÐSÐSøøøÐSÐSÐSÐSØ�mŠm n¸zÈ'Ð>RÐSÐSÑTÔTÐTÐTÐTÐTÐTÐTÐTØ�mŠmÐ&?ÐU\ÐevÐIwÐIwÐxÐxÑyÔyÐyÐyÐyÐyÐyÐyÐyØ×)Ò)¨'Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2ÐRÐ2Ô?ÐRÐARÐRÐ?ÐARÒRÐRÐRÐRÕRÔRÐRÐRÐRÐRÐ?ÐARÐRÑRÔRÕRÔRÐ2ÑRÔRÕRÔRÐ?ÑRÔRÕRÔRÐARÑ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ÝŒ]�<Ñ(Ô(Ð[¨E¸×9KÒ9KÈGÐTZÑ9[Ô9[Ð3[Ð3[Ð3[Ð3[Ð3[Ð3[Ð3[Ð[Ð[Ð[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[øøøÐ[Ð[Ð[Ð[ØŒ{Ð&ˆ{Ô!Ð& 3Ð&Ð! 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð! 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆuÑ&Ô&Ð&Õ&Ô&ˆuÑ&Ô&Ð&Ð&Õ&Ô&ˆ{Ñ&Ô&Õ&Ô&Ð!Ñ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø�mŠmÐ&MÐS_ÐjtÐu|Ði}Ð~Ð~ÑÔÐÐÐÐÐÐÐØŒ|˜BÔÐS |¸jÈÐ=RÐ!SÐ!SÐSÐÐ!SÒSÐSÐSÐSÕSÔSÐSÐSÐSÐSÐÐ!SÐSÑSÔSÕSÔSÐÑSÔSÕSÔSÐ!SÑSÔSÐSÐSÑSÐSÐSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSØ�mŠmÐ&6ÈGÐ\dÐepÐ[qÐ@rÐ@rÐsÐsÑtÔtÐtÐtÐtÐtÐtÐtÐtØ×)Ò)¨'Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2ÐAÐ2Ô9ÐA¸6ÐAÐ9¸6ÒAÐAÐAÐAÕAÔAÐAÐAÐAÐAÐ9¸6ÐAÑAÔAÕAÔAÐ2ÑAÔAÕAÔAÐ9ÑAÔAÕAÔA¸6ÑAÔAÐAÐAÑAÐAÐAÐAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAÐAÐAÐAÐAØ×ÒÑÔÐ¨%˜sœz°°´ÀÑ0A°´Ø×)Ò)¨'Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2ÐDÐ2Ô9ÐD¸9ÐDÐ9¸9ÒDÐDÐDÐDÕDÔDÐDÐDÐDÐDÐ9¸9ÐDÑDÔDÕDÔDÐ2ÑDÔDÕDÔDÐ9ÑDÔDÕDÔD¸9ÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDØTÐTÀsÄ|ÐTÑTÔTÐW�sÐTÑTÔTÐWÐVWÐWÐTÐVWÒWÐWÐWÐWÕWÔWÐWÐWÐWÐWÐTÐVWÐWÑWÔWÐWÕWÔWÑWÔWÐWÐWÕWÔW�sÑWÔWÐWÕWÔW�sÑWÔWÐWÐWÕWÔWÐTÑWÔWÕWÔWÐTÑWÔWÕWÔWÐVWÑWÔWÐWÐWÑWÐWÐWÐWÐWÐWÑWÐWÕWÕWÔWÐWÑWÔWÑWÔWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWs$   Ê#KËKËKÏ$PÐPÐPrÂ   rÄ   s   ` rR   Ú7test_codex_pagination_input_streaming_and_approval_seamr  Ž   s?   ø€ ðXð Xð Xð Xð Xõ( „K��‘
”
ÑÔÐÐÐr_   c                óš   ‡‡‡— ddl mŠ dd lŠ| dz  Š‰                     d¦  «         ˆˆˆfd„}t	          j         |¦   «         ¦  «         d S )Nr   )ÚJsonProcesszhost.pyzÆimport sys, json
for line in sys.stdin:
    request=json.loads(line)
    if request['method']=='crash': sys.exit(1)
    print(json.dumps({'id':request['id'],'result':request['params']}),flush=True)
c               “  óè  •K  —  ‰
‰j         t          ‰¦  «        g¦  «        } 	 |                      dddi¦  «        ƒ d {V —†}ddi}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}t          j	        t          d	¬
¦  «        5  |                      di ¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   | j        ƒ d {V —† |                      dddi¦  «        ƒ d {V —†}ddi}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}| j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}|                      ¦   «         ƒ d {V —† n# |                      ¦   «         ƒ d {V —† w xY w| j        }d }||u }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}d S )NÚechor²   rm   r   rh   ri   rj   r.   r  r$   Úcrashr  ©z2%(py2)s
{%(py2)s = %(py0)s.generation
} == %(py5)sr”   ©r   r,   r   úassert %(py7)sr   rÖ   )z/%(py2)s
{%(py2)s = %(py0)s.process
} is %(py5)s)Ú
executabler/   r}   r2   r3   r7   r8   r9   r:   r;   r   Úreaderrå   r4   r5   r6   r€   Úprocess)r”   rz   rM   rA   r{   r|   rL   rB   Ú@py_format6r»   r  ÚscriptÚsyss             €€€rR   rÁ   zAtest_rpc_process_eof_fails_pending_and_restarts.<locals>.exercise°   ss  øè è € ØˆK˜œ­¨F©¬Ð4Ñ5Ô5ˆð	#ØŸš &¨'°!¨Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5ÐB¸À°{ÐBÐ5°{ÒBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ5°{ÐBÑBÔBÕBÔBÐ5ÑBÔBÕBÔB°{ÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBÝ”�|°.ÐAÑAÔAð +ð +Ø—h’h˜w rÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +à”*ÐÐÐÐÐÐÐØŸš &¨'°!¨Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5ÐB¸À°{ÐBÐ5°{ÒBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ5°{ÐBÑBÔBÕBÔBÐ5ÑBÔBÕBÔB°{ÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBØ”>Ð$ 1Ð$�> 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$�> 1Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�3Ñ$Ô$Ð$Õ$Ô$�3Ñ$Ô$Ð$Ð$Õ$Ô$�>Ñ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ø—y’y‘{”{Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ø�s—y’y‘{”{Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"øøøØŒ{Ð"˜dÐ"ˆ{˜dÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ{˜dÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Ð"Õ"Ô"ˆ{Ñ"Ô"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"s1   ¤B7J ÃDÃ8J ÄDÄJ ÄDÄE-J ÊJ0)Údevice_gateway.control.rpcr  r(  r>   rv   rÃ   )r@   rÁ   r  r'  r(  s     @@@rR   Ú/test_rpc_process_eof_fails_pending_and_restartsr*  ¦   sˆ   øøø€ Ø6Ð6Ð6Ð6Ð6Ð6Ø€J€J€JØ˜	Ñ!€FØ
×Òð ñ ô ð ð
#ð 
#ð 
#ð 
#ð 
#ð 
#ð 
#õ „K��‘
”
ÑÔÐÐÐr_   c                óv   ‡ ‡‡‡— ddl mŠ ddlmŠ dd lŠˆˆˆ ˆfd„}t          j         |¦   «         ¦  «         d S )Nr   )Ú
unix_serve)ÚJsonUnixSocketc               “  ó  •‡K  — t          ‰dz  ¦  «        } g Šˆˆfd„} ‰|| d ¬¦  «        4 ƒd {V —†  ‰| ¦  «        }	 |                     di ¦  «        ƒ d {V —†}ddi}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}t          j        t          d¬¦  «        5  |                     di ¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |                     di ¦  «        ƒ d {V —†}ddi}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j
        }d}	||	k    }|sªt          j        d|fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}	g d¢}‰|k    }|s—t          j        d|fd‰|f¦  «        dt          j        ¦   «         v st          j        ‰¦  «        rt          j        ‰¦  «        ndt          j        |¦  «        dœz  }dd|iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}}|                     ¦   «         ƒ d {V —† n# |                     ¦   «         ƒ d {V —† w xY w	 d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )Nz
codex.sockc              “  óF  •K  — | 2 3 d {V —†}‰                      |¦  «        }‰                     |d         ¦  «         |d         dk    r|                      ¦   «         ƒ d {V —†  d S |                      ‰                     |d         ddidœ¦  «        ¦  «        ƒ d {V —† Œš6 d S )Nrx   Údropr   ÚokTr  )Úloadsru   r€   ÚsendÚdumps)ÚwsÚpayloadÚrequestrÍ   Úseens      €€rR   ÚhandlerzRtest_codex_socket_reconnect_and_no_input_replay.<locals>.exercise.<locals>.handlerÄ   sß   øè è € Ø!#ð Uð Uð Uð Uð Uð Uð U�gØŸ
š
 7Ñ+Ô+�¨D¯KªK¸ÀÔ8IÑ,JÔ,JÐ,JØ˜8Ô$ fÒ,Ð,ØŸ(š(™*œ*Ð$Ð$Ð$Ð$Ð$Ð$Ð$ V V VØ—g’g˜dŸjšj¨w°t¬}ÀtÈDÀkÐ)RÐ)RÑSÔSÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTð	 "$  s   †B )ÚcompressionÚreadr1  Tr   rh   ri   rj   r.   r  r$   r0  r  r   r”   r!  r"  r   )r;  r0  r;  )z%(py0)s == %(py3)sr8  )r   r   zassert %(py5)sr   )r/   r}   r2   r3   r7   r8   r9   r:   r;   r   rå   r4   r5   r6   r€   )Úsocketr9  r”   rz   rM   rA   r{   r|   rL   rB   r&  r»   Ú@py_format4r8  r-  rÍ   r@   r,  s                @€€€€rR   rÁ   zAtest_codex_socket_reconnect_and_no_input_replay.<locals>.exerciseÂ   sA  øøè è € Ý�8˜LÑ(Ñ)Ô)ˆ°¨4ð	Uð 	Uð 	Uð 	Uð 	Uð 	Uð �:˜g f¸Ð>Ñ>Ô>ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&Ø�˜vÑ&Ô&ˆCð&Ø ŸXšX f¨RÑ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð=°4¸°+Ð=Ð0°+Ò=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð0°+Ð=Ñ=Ô=Õ=Ô=Ð0Ñ=Ô=Õ=Ô=°+Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ý”]¥<°nÐEÑEÔEð .ð .ØŸ(š( 6¨"Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .à ŸXšX f¨RÑ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð=°4¸°+Ð=Ð0°+Ò=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð0°+Ð=Ñ=Ô=Õ=Ô=Ð0Ñ=Ô=Õ=Ô=°+Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ø”~Ð( qÐ(�~ qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(�~ qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(�sÑ(Ô(Ð(Õ(Ô(�sÑ(Ô(Ð(Ð(Õ(Ô(�~Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø3Ð3Ð3Ð3�tÐ3Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3�tÐ3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3�tÑ3Ô3Ð3Õ3Ô3�tÑ3Ô3Ð3Ð3Õ3Ô3Ð3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3ØŸ)š)™+œ+Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ø˜#Ÿ)š)™+œ+Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%øøøÐ%ð		&ð 		&ð 		&ñ 		&ô 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&ð 		&øøøð 		&ð 		&ð 		&ð 		&ð 		&ð 		&sO   ³M9Á B5MÃ5DÄMÄD"	Ä"MÄ%D"	Ä&HMÌ+M9ÍM"Í"M9Í9
NÎN)Úwebsockets.asyncio.serverr,  r)  r-  rÍ   rv   rÃ   )r@   rÁ   r-  rÍ   r,  s   ` @@@rR   Ú/test_codex_socket_reconnect_and_no_input_replayr?  ¾   sy   øøøø€ Ø4Ð4Ð4Ð4Ð4Ð4Ø9Ð9Ð9Ð9Ð9Ð9Ø€K€K€Kð&ð &ð &ð &ð &ð &ð &ð &õ$ „K��‘
”
ÑÔÐÐÐr_   c                ó„   ‡ ‡‡— ddl mŠ  G d„ dt          ¦  «        Šˆˆˆ fd„}t          j         |¦   «         ¦  «         d S )Nr   )ÚSettingsc                  ó4   ‡ — e Zd ZdZdZdZˆ fd„Zˆ fd„Zˆ xZS )úNtest_codex_settings_native_readback_busy_and_capabilities.<locals>.SettingsRPCúnative-aÚbalancedr   c                óh   •— i t          ¦   «                              |¦  «        ¥| j        | j        dœ¥S )N)r  ÚreasoningEffort)Úsuperrø   r  Úeffort)r]   r÷   Ú	__class__s     €rR   rø   zUtest_codex_settings_native_readback_busy_and_capabilities.<locals>.SettingsRPC.threadÛ   s/   ø€ Ø[•e‘g”g—n’n SÑ)Ô)Ð[°$´*ÈtÌ{Ð[Ð[Ð[Ð[r_   c           
   “  ó6  •K  — |dk    r7dt          ddddd„ dD ¦   «         ¬	¦  «        t          d
dddddig¬	¦  «        giS |dk    r,| xj        dz  c_        |d         | _        |d         | _        i S t	          ¦   «                              ||¦  «        ƒ d {V —†S )Nz
model/listrþ   rD  ÚATrE  c                ó   — g | ]}d |i‘ŒS )rG  r„   )r�   Úes     rR   r’   zgtest_codex_settings_native_readback_busy_and_capabilities.<locals>.SettingsRPC.call.<locals>.<listcomp>à   s8   € ð  QNð  QNð  QNÐklÐRcÐdeÐQfð  QNð  QNð  QNr_   )rE  úcustom-effort)r  ÚdisplayNameÚ	isDefaultÚdefaultReasoningEffortÚsupportedReasoningEffortsúnative-bÚBFÚminimalrG  zthread/settings/updaterm   r  rI  )rt   Úupdatesr  rI  rH  r}   )r]   rx   ry   rJ  s      €rR   r}   zStest_codex_settings_native_readback_busy_and_capabilities.<locals>.SettingsRPC.callÝ   sû   øè è € Ø�|Ò#Ð#Ø¥¨:À#ÐPTØ+5ð  QNð  QNð  qMð  QNñ  QNô  QNð!Oñ !Oô !Oå˜z°cÀEØ+4ÐQbÐclÐPmÐOnðpñ pô pð qð rð rð Ð/Ò/Ð/Ø�”˜a‘�”¨6°'¬? ¤
ÀvÈhÔGW¸4¼;Ð_aÐXaÝ™œŸš f¨VÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4r_   )	r�   r‚   rƒ   r  rI  rW  rø   r}   Ú__classcell__)rJ  s   @rR   ÚSettingsRPCrC  Ù   sc   ø€ € € € € Øˆ 
˜°1¨7ð	\ð 	\ð 	\ð 	\ð 	\ð	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5r_   rY  c            	   “  ó†  •K  — t          ‰*dz  ¦  «        } |                      t          ddt          ‰*¦  «        ¬¦  «        ¦  «          ‰)t          ‰*¦  «        ¦  «        }t	          | |¦  «        }|                     d¦  «        ƒ d {V —†}g }|j        }| }|}|r|d         }ddg}	||	k    }
|
}|�sd	d
t          j        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        dœz  }|                     |¦  «         |r`t          j        d|
fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}
}	|                     d ‰(d¬¦  «        ¦  «        ƒ d {V —†}g }|d         }d}||k    }|}|r%|d         }	d}|	|k    }|}|r|j        }d}||k    }|}|�s£t          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |�r t          j        d|fd|	|f¦  «        t          j        |	¦  «        t          j        |¦  «        dœz  }d d|iz  }|                     |¦  «         |ržt          j        d|fd!||f¦  «        d
t          j        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        t          j        |¦  «        d"œz  }d#d$|iz  }|                     |¦  «         t          j        |d¦  «        i z  }d%d&|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}	x}x}x}x}}t'          j        t*          ¦  «        5  |                     d ‰(d¬'¦  «        ¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d(|j        d         d)<   t'          j        t*          ¦  «        5 }|                     d ‰(d*¬¦  «        ¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   g }|j        }|j        }d+}||k    }|}|r|j        } d}!| |!k    }"|"}|�s‘t          j        d|fd,||f¦  «        d-t          j        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd-t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d.œz  }#d/d0|#iz  }|                     |¦  «         |ržt          j        d|"fd1| |!f¦  «        d
t          j        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd
t          j        | ¦  «        t          j        |!¦  «        d2œz  }$d3d4|$iz  }%|                     |%¦  «         t          j        |d¦  «        i z  }&d5d6|&iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x} x}"}!d7|j        d         d)<   t'          j        t*          ¦  «        5  |                     d ‰(d*¬¦  «        d8„ ¬9¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |j        }d}||k    }|sªt          j        d|fd:||f¦  «        d
t          j        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        t          j        |¦  «        d;œz  }d<d=|iz  }'t          t          j        |'¦  «        ¦  «        ‚d x}x}}|                     ¦   «         ƒ d {V —† d S )>Nzp.jsonr   rˆ   r   rü   Úavailable_effortsrE  rO  z'not %(py4)s
{%(py4)s = %(py2)s.loaded
}r”   )r,   r-   r   )z%(py8)s == %(py11)s)rŒ   r    z%(py13)sr!   r   zassert %(py16)sr™   rT  )r  r  rI  rV  rm   )z%(py3)s == %(py6)s)r   r.   z%(py8)srŒ   )z%(py11)s == %(py14)s)r    r+   z%(py16)s)z3%(py20)s
{%(py20)s = %(py18)s.updates
} == %(py23)s)r›   Úpy20Úpy23z%(py25)sÚpy25zassert %(py28)sÚpy28)rI  r¡   rg   rD  rl   )zI%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s.value
}.status
} == %(py9)srN  )r,   r-   r.   r   z%(py11)sr    )z3%(py15)s
{%(py15)s = %(py13)s.updates
} == %(py18)s)r!   r#   r›   z%(py20)sr\  zassert %(py23)sr]  rc   c                 ó   — dS )NFr„   r„   r_   rR   ú<lambda>z]test_codex_settings_native_readback_busy_and_capabilities.<locals>.exercise.<locals>.<lambda>ò   s   € ð  ~C€ r_   )Ústill_valid)z/%(py2)s
{%(py2)s = %(py0)s.updates
} == %(py5)sr!  r"  r   )r
   r0   r	   r/   r   Úget_settingsrç   r4   r5   r2   r6   r7   ru   r3   r¯   r8   r9   Úupdate_settingsrW  r:   r;   r   rX   r²   r³   r€   )+r´   r”   r¶   ÚcurrentrL   rM   rN   rz   rO   rE   rà   r&  rQ   rG   rK   r¼   r  rA   rB   Ú@py_assert13rF   Ú@py_assert19Ú@py_assert22Ú@py_assert21r|   r·   Ú@py_format24Ú@py_format26Ú@py_format27Ú@py_format29rN  rD   rº   Ú@py_assert17Ú@py_assert16rP   r½   Ú@py_format21r¿   r»   rA  rY  r@   s+                                           €€€rR   rÁ   zKtest_codex_settings_native_readback_busy_and_capabilities.<locals>.exerciseæ   s
  øè è € Ý  ¨(Ñ!2Ñ3Ô3ˆ°H·L²LÅÈCÐUXÕ^aÐbjÑ^kÔ^kÐAlÑAlÔAlÑ4mÔ4mÐ4mØˆK�˜H™œÑ&Ô&ˆ­|¸HÀSÑ/IÔ/I wØ×*Ò*¨7Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3ˆØ\Ð\�3”:Ð\�:ˆ~Ð\ˆ~Ð\ˆ~Ð\ 'Ð*=Ô">Ð\ÀÈOÐ@\Ð\Ð">Ð@\Ò"\Ð\Ð\Ð\Ð\Ñ\Ð\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\�3Ñ\Ô\Ð\Õ\Ô\�3Ñ\Ô\Ð\Ð\Õ\Ô\�:Ñ\Ô\Ð\Ð\Ñ\Ð\Ð\×\Ò\Ð\Ñ\Ô\Ð\ˆ~Ð\Õ\Ô\Ð\Ð\Ð\Ð\Ð">Ð@\Ð\Ñ\Ô\Õ\Ô\Ð">Ñ\Ô\Õ\Ô\Ð@\Ñ\Ô\Ð\Ð\Ñ\Ð\Ð\Ð\Ð\Ð\Ñ\Ð\Ð\×\Ò\Ð\Ñ\Ô\Ð\Õ\Ô\Ð\Ð\Ñ\Ô\Ð\Ñ\Ð\Ð\Ð\Ð\Ð\Ñ\Ð\Õ\Õ\Ô\Ð\Ñ\Ô\Ñ\Ô\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ø×,Ò,¨W°X°XÀJÐ5OÑ5OÔ5OÑPÔPÐPÐPÐPÐPÐPÐPˆØ]Ð]ˆv�gŒÐ] 
Ð]ˆ 
Ò*Ð]Ð]Ð]Ð]Ð]¨v°hÔ/?Ð]ÀÐ]Ð/?ÀÒ/JÐ]Ð]Ð]Ð]Ð]ÈsÌ{Ð]Ð\]Ð]È{Ð\]Ê~Ð]Ð]Ð]Ð]Ñ]Õ]Ô]Ð]Ð]Ð]Ð]ˆ 
Ð]Ñ]Ô]Õ]Ô]ˆÑ]Ô]Õ]Ô] 
Ñ]Ô]Ð]Ð]Ñ]Ð]Ð]Ð]Ð]Ð]Ñ]Ð]Ð]×]Ò]Ð]Ñ]Ô]Ð]Ð]Ñ]Õ]Ô]Ð]Ð]Ð]Ð]Ð/?ÀÐ]Ñ]Ô]Õ]Ô]Ð/?Ñ]Ô]Õ]Ô]ÀÑ]Ô]Ð]Ð]Ñ]Ð]Ð]Ð]Ð]Ð]Ñ]Ð]Ð]×]Ò]Ð]Ñ]Ô]Ð]Ð]Ð]Õ]Ô]Ð]Ð]Ð]Ð]È{Ð\]Ð]Ñ]Ô]Ð]Õ]Ô]Ñ]Ô]Ð]Ð]Õ]Ô]ÈsÑ]Ô]Ð]Õ]Ô]ÈsÑ]Ô]Ð]Ð]Õ]Ô]È{Ñ]Ô]Õ]Ô]Ð\]Ñ]Ô]Ð]Ð]Ñ]Ð]Ð]Ð]Ð]Ð]Ñ]Ð]Ð]×]Ò]Ð]Ñ]Ô]Ð]Õ]Ô]Ð]Ð]Ñ]Ô]Ð]Ñ]Ð]Ð]Ð]Ð]Ð]Ñ]Ð]Õ]Õ]Ô]Ð]Ñ]Ô]Ñ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]ÝŒ]�<Ñ(Ô(ÐpÐp¨w×/FÒ/FÀwÈxÈxÐ_nÐOoÑOoÔOoÑ/pÔ/pÐ)pÐ)pÐ)pÐ)pÐ)pÐ)pÐ)pÐpÐpÐpÑpÔpÐpÐpÐpÐpÐpÐpøøøÐpÐpÐpÐpØ'0ˆŒ�WÔ˜gÑ&ÝŒ]�<Ñ(Ô(Ðo¨A°G×4KÒ4KÈGÐT\ÐT\ÐcmÐTnÑTnÔTnÑ4oÔ4oÐ.oÐ.oÐ.oÐ.oÐ.oÐ.oÐ.oÐoÐoÐoÑoÔoÐoÐoÐoÐoÐoÐoøøøÐoÐoÐoÐoØ5Ð5ˆqŒwÐ5ˆwŒ~Ð5˜sÐ5ˆ~˜sÒ"Ð5Ð5Ð5Ð5Ð5 s¤{Ð5°AÐ5 {°A¢~Ð5Ð5Ð5Ð5Ñ5Õ5Ô5Ð5Ð5Ð5Ð5ˆ~˜sÐ5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆqÑ5Ô5Ð5Õ5Ô5ˆqÑ5Ô5Ð5Ð5Õ5Ô5ˆwÑ5Ô5Õ5Ô5ˆ~Ñ5Ô5Õ5Ô5˜sÑ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Ð5×5Ò5Ð5Ñ5Ô5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5 {°AÐ5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5 sÑ5Ô5Ð5Õ5Ô5 sÑ5Ô5Ð5Ð5Õ5Ô5 {Ñ5Ô5Õ5Ô5°AÑ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Ð5×5Ò5Ð5Ñ5Ô5Ð5Õ5Ô5Ð5Ð5Ñ5Ô5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø'-ˆŒ�WÔ˜gÑ&ÝŒ]�<Ñ(Ô(ð  	Dð  	D¨w×/FÒ/FÀwÈxÈxÐ^hÐOiÑOiÔOið  wCð  wCÐ/Fñ  0Dô  0Dð  *Dð  *Dð  *Dð  *Dð  *Dð  *Dð  *Dð  	Dð  	Dð  	Dñ  	Dô  	Dð  	Dð  	Dð  	Dð  	Dð  	Dð  	Døøøð  	Dð  	Dð  	Dð  	DØŒ{Ð˜AÐˆ{˜AŠ~ÐÐÐÕÔÐÐÐÐˆ{˜AÐÑÔÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔˆ{ÑÔÕÔ˜AÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�mŠm‰oŒoÐÐÐÐÐÐÐÐÐs6   Ð'P7Ð7P;Ð>P;Ñ+'RÒR"Ò%R"Ú%*[Û[Û"[)Údevice_gateway.control.modelsrA  rã   rv   rÃ   )r@   rÁ   rA  rY  s   ` @@rR   Ú9test_codex_settings_native_readback_busy_and_capabilitiesrr  ×   s‚   øøø€ Ø6Ð6Ð6Ð6Ð6Ð6ð5ð 5ð 5ð 5ð 5•hñ 5ô 5ð 5ðð ð ð ð ð ð õ „K��‘
”
ÑÔÐÐÐr_   ))Ú
__future__r   Úbuiltinsr4   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter2   rv   r   r   Úpathlibr   r:   Úfastapi.testclientr   Údevice_gateway.apprÜ   rÛ   rq  r   r	   Údevice_gateway.control.projectsr
   Údevice_gateway.control.pir   Údevice_gateway.control.codexr   Údevice_gateway.integrations.pir   r   rS   rU   rÅ   rÉ   rá   rã   r  r*  r?  rr  r„   r_   rR   ú<module>r     sÌ  ðØ "Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð à €€€Ø )Ð )Ð )Ð )Ð )Ð )à $Ð $Ð $Ð $Ð $Ð $Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø /Ð /Ð /Ð /Ð /Ð /Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ Lð2ð 2ð 2ð"ð ð ð ð ñ ô ð ð:ð ð ð2
ð 
ð 
ðPð Pð Pð&ð ð ð ð ñ ô ð ð*ð ð ð0ð ð ð0ð ð ð2ð ð ð ð r_   