§
    µYÄji�  ã                  óø   — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d	d
lmZmZmZmZ d	dlmZmZmZ d	dlmZ d	dl m!Z!m"Z"m#Z#  G d„ d¦  «        Z$dS )é    )ÚannotationsN)ÚOrderedDict)Úuuid4)ÚdatetimeÚtimezone)ÚPath)Únormalize_activityÚ	utf8_tail)Údevice_final_texté   )ÚINVALIDÚ
CodexQuotaÚ	normalizeÚnormalize_notification)ÚAgentSessionÚControlErrorÚProject)ÚJsonUnixSocket)Ú	idle_onlyÚsettings_viewÚvalidate_settingsc                  óì   — e Zd ZdZdZdZdZdZd)d„Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd*d„Zd+d„Zd„ Zd„ Zd,d„Zd„ Zd„ Zd„ Zd „ Zd!„ Zd-d"„Z d#„ Z!d$„ Z"d%„ d&œd'„Z#d(„ Z$dS ).ÚCodexAdapterÚcodexé€   é   é   é   Nc           	     ó‚  — || _         d | _        d | _        t          ¦   «         | _        || _        || _        t          ¦   «         j        | _	        t          ¦   «         | _
        i | _        t          ¦   «         | _        i | _        i | _        t          ¦   «         | _        t#          j        ¦   «         | _        i | _        d| _        t#          j        ¦   «         | _        t#          j        ¦   «         | _        t0          | _        d | _        t#          j        ¦   «         | _        t9          t:          j                             dtA          t9          j!        ¦   «         dz  ¦  «        ¦  «        ¦  «        }t:          j                             dtA          |dz  ¦  «        ¦  «        }|ptE          || j#        | j$        ¬¦  «        | _%        d S )Nr   Ú
CODEX_HOMEz.codexÚGATEWAY_CODEX_SOCKETz*app-server-control/app-server-control.sock)Úon_eventÚon_disconnect)&ÚprojectsÚon_activityÚon_terminalÚsetÚobservedÚ	approvalsÚuser_inputsr   ÚhexÚinstanceÚapproval_tasksÚrequest_tasksÚapproval_ownersÚfile_changesÚliver   Úlast_repliesÚasyncioÚLockÚhistory_lockÚcreating_threadsÚready_generationÚinitialize_lockÚ
input_lockr   ÚquotaÚquota_refresh_taskÚquota_refresh_lockr   ÚosÚenvironÚgetÚstrÚhomer   ÚeventÚdisconnectedÚrpc)Úselfr$   rD   r)   r*   Ú
codex_homeÚsockets          úb/home/lighthouse/esp32-dev/.cache/watch-codex-quota-startup/server/device_gateway/control/codex.pyÚ__init__zCodexAdapter.__init__   sN  € Ø ˆŒØˆÔØˆÔÝ™œˆŒØ"ˆŒØ&ˆÔÝ™œœˆŒÝ!™eœeˆÔØˆÔÝ"™uœuˆÔØˆÔØ%'ˆŒ	å'™MœMˆÔÝ#œL™NœNˆÔØ ˆÔØ !ˆÔÝ&œ|™~œ~ˆÔÝ!œ,™.œ.ˆŒõ ")ˆŒ
Ø7;ˆÔÝ")¤,¡.¤.ˆÔõ �"œ*Ÿ.š.¨µs½4¼9¹;¼;ÈÑ;QÑ7RÔ7RÑSÔSÑTÔTˆ
Ý”—’Ð 6½¸JÐIuÑ<uÑ8vÔ8vÑwÔwˆØÐf�.¨¸$¼*ÐTXÔTeÐfÑfÔfˆŒˆˆó    c                óÀ  — t           | _        | j        r2| j                             ¦   «         s| j                             ¦   «          d | _        | j        r$| j        D ]}| j                             |¦  «         Œ| j        r$| j        D ]}| j                             |¦  «         Œ| j         	                    ¦   «          | j
        D ]}|                     ¦   «          Œ| j         	                    ¦   «          | j         	                    ¦   «          | j         	                    ¦   «          | j         	                    ¦   «          | j         	                    ¦   «          d| _        d S )Nr   )r   r:   r;   ÚdoneÚcancelr)   r/   Úcancel_ownerr*   Úclearr-   r.   r0   r1   r2   r(   r7   )rE   ÚownerÚtasks      rH   rC   zCodexAdapter.disconnected=   sX  € ÝˆŒ
ØÔ"ð 	-¨4Ô+B×+GÒ+GÑ+IÔ+Ið 	-ØÔ#×*Ò*Ñ,Ô,Ð,Ø"&ˆÔØŒ>ð 	3ØÔ-ð 3ð 3�Ø”×+Ò+¨EÑ2Ô2Ð2Ð2ØÔð 	TØÔ-ÐSÐS�¨tÔ/?×/LÒ/LÈUÑ/SÔ/SÐ/SÐ/SØÔ×"Ò"Ñ$Ô$Ð$ØÔ'ð 	ð 	ˆDØ�KŠK‰MŒMˆMˆMØÔ× Ò Ñ"Ô"Ð"ØÔ×ÒÑ!Ô!Ð!ØŒ	�ŠÑÔÐØÔ×ÒÑ!Ô!Ð!ØŒ×ÒÑÔÐØ !ˆÔÐÐrJ   c              ƒ  óÂ  K  — | j         4 ƒd {V —† | j                             ¦   «         ƒ d {V —† | j        | j        j        k    rv| j                             ddddœddidœ¦  «        ƒ d {V —† | j                             dd	i¦  «        ƒ d {V —† | j        j        | _        |                      ¦   «         ƒ d {V —† d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )
NÚ
initializeÚdevice_lab_gatewayz0.5.0)ÚnameÚversionÚexperimentalApiT)Ú
clientInfoÚcapabilitiesÚmethodÚinitialized)r8   rD   Ústartr7   Ú
generationÚcallÚwriteÚrefresh_quota©rE   s    rH   ÚreadyzCodexAdapter.readyQ   sÁ  è è € ØÔ'ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+Ø”(—.’.Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÔ$¨¬Ô(;Ò;Ð;Ø”h—m’m LÐJ^ÐkrÐAsÐAsØ%6¸Ð$=ð3?ð 3?ñ @ô @ð @ð @ð @ð @ð @ð @ð @à”h—n’n h°Ð%>Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ø(,¬Ô(;�Ô%ð ×(Ò(Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð		+ð 		+ð 		+ñ 		+ô 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+ð 		+øøøð 		+ð 		+ð 		+ð 		+ð 		+ð 		+s   �B+CÃ
CÃCc              ƒ  ó|   K  — |                       ¦   «         ƒ d {V —† | j                             ||¦  «        ƒ d {V —†S ©N)rb   rD   r^   )rE   rZ   Úparamss      rH   r^   zCodexAdapter.call]   sN   è è € Ø�jŠj‰lŒlÐÐÐÐÐÐÐØ”X—]’] 6¨6Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2rJ   c              ƒ  óˆ  K  — | j         4 ƒd{V —† 	 | j                             di ¦  «        ƒ d{V —†}nP# t          $ rC t	          j        d¦  «                             d¦  «         | j        cY cddd¦  «        ƒd{V —† S w xY wt          |¦  «        | _        | j        cddd¦  «        ƒd{V —† S # 1 ƒd{V —†swxY w Y   dS )zARead the account snapshot once, concurrently bounded to one call.Nzaccount/rateLimits/readú"uvicorn.error.device_gateway.codexz%Codex account rate limits unavailable)	r<   rD   r^   Ú	ExceptionÚloggingÚ	getLoggerÚinfor:   r   )rE   Úresults     rH   r`   zCodexAdapter.refresh_quotaa   s§  è è € àÔ*ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð"Ø#œxŸ}š}Ð-FÈÑKÔKÐKÐKÐKÐKÐKÐK��øÝð "ð "ð "õ Ô!Ð"FÑGÔG×LÒLØ;ñ=ô =ð =à”zÐ!Ð!ð
	ð 
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð"øøøõ # 6Ñ*Ô*ˆDŒJØ”:ð
	ð 
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	øøøð 
	ð 
	ð 
	ð 
	ð 
	ð 
	s1   �B1’!4³B1´8BÁ,B1Â BÂB1Â1
B;Â>B;c                ó  — t          |¦  «        }|j        r|| _        | j        r| j                             ¦   «         sd S t          j        |                      ¦   «         ¦  «        | _        | j                             d„ ¦  «         d S )Nc                ó   — d S rd   © )Ú_s    rH   ú<lambda>z5CodexAdapter.schedule_quota_refresh.<locals>.<lambda>x   s   € ¸D€ rJ   )	r   Úvalidr:   r;   rL   r3   Úcreate_taskÚ_bounded_quota_refreshÚadd_done_callback)rE   Úpayloadr(   s      rH   Úschedule_quota_refreshz#CodexAdapter.schedule_quota_refresho   s†   € õ *¨'Ñ2Ô2ˆØŒ>ð 	"Ø!ˆDŒJØÔ"ð 	¨4Ô+B×+GÒ+GÑ+IÔ+Ið 	ØˆFÝ")Ô"5°d×6QÒ6QÑ6SÔ6SÑ"TÔ"TˆÔØÔ×1Ò1°.°.ÑAÔAÐAÐAÐArJ   c              ƒ  óÎ   K  — 	 |                       ¦   «         ƒ d {V —† d S # t          j        $ r ‚ t          $ r+ t	          j        d¦  «                             d¦  «         Y d S w xY w)Nrg   zCodex quota refresh failed)r`   r3   ÚCancelledErrorrh   ri   rj   Úwarningra   s    rH   rt   z#CodexAdapter._bounded_quota_refreshz   sž   è è € ð	.Ø×$Ò$Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&øÝÔ%ð 	ð 	ð 	ØÝð 	.ð 	.ð 	.ÝÔÐBÑCÔC×KÒKØ,ñ.ô .ð .ð .ð .ð .ð	.øøøs   „   A A$Á#A$c              ƒ  ó¬  ‡ ‡‡K  — |d         |                      di ¦  «        c}Š‰                      d¦  «        }d|v �rX|dv �r%|dk    }|r‰ j        n‰ j        €-‰ j                             |d         ddid	œ¦  «        ƒ d {V —† �n‰ j        j        t          |d         ¦  «        j        |d         f}|‰ j        v rd S t          j
         |r‰ j        n‰ j        |‰ j        j        ¦  «        ¦  «        }‰ j                             |¦  «         ||‰                      d
¦  «        f‰ j        |<   |                     ‰ j        j        ¦  «         |                     |fˆ fd„	¦  «         n,‰ j                             |d         dddœdœ¦  «        ƒ d {V —† d S |dk    r}‰ j        j        t          ‰                      d¦  «        ¦  «        j        ‰                      d¦  «        f}‰ j                              |¦  «        }|r|d                              ¦   «          |dk    r‰                      ‰¦  «         d S |sd S ‰ j                             |i ¦  «        }|dv r‰ j                             |d ¦  «         |dk    rd|                     i g dd‰                      di ¦  «                              d¦  «        dt1          j        t4          j        ¦  «        ddd ¬¦
  «
         �nÖ|dk    �r‰                      di ¦  «        }	|                      d¦  «        r!|d         |	                      d¦  «        k    rd S |                      d¦  «        r.|                      d¦  «        |	                      d¦  «        k    rd S |                      d¦  «        |	                      d¦  «        k    o|                      dd¦  «         }
d|d<   |	                      dg ¦  «        D ]}‰                      ||¦  «         Œ|                      d i ¦  «        Šˆfd!„|                      d"g ¦  «        D ¦   «         }d#„ |D ¦   «         }|pd$„ |D ¦   «         }|r|d%         d&         nd|d'<   t;          ‰ j                             ¦   «         ¦  «        D ]M\  }}}||k    rA|‰                      di ¦  «                              d¦  «        k    r|                     ¦   «          ŒN‰ j        r‰ j                             d(|¦  «         ‰ j        r‰ j                             d(|¦  «         ‰                      di ¦  «        }	|	                      d)¦  «        d*k    rd+nd,|d-<   |                      d.¦  «        rItA          t1          j        t4          j        ¦  «        |d.         z
   !                    ¦   «         ¦  «        |d/<   ‰ j"        rQ|
rO‰  "                    d(||d-         |d'         |                      d0|¦  «        |                      d1d¦  «        ¬2¦  «         �n¼|d3k    r#|                     ˆfd4„d5D ¦   «         ¦  «         �n“|d6k    rï‰                      d)i ¦  «                              d7¦  «        }|d8k    rd|d-<   �nW|d9v r³t;          ‰ j                             ¦   «         ¦  «        D ] \  }}}||k    r|                     ¦   «          Œ!‰ j        r‰ j                             d(|¦  «         ‰ j        r‰ j                             d(|¦  «         |d:k    r‰ j                             |d ¦  «         �n¥d,|d-<   �nž|d;k    �rvtG          ‰                      d<d¦  «        ¦  «        }‰                      d
¦  «        |                      d¦  «        k    rÝ|                      dd¦  «        sÇ‰                      d=d>¦  «        }|                     d i ¦  «        Š|‰vrutI          ‰¦  «        d?k    r1|d"                              d¦  «        }‰                     |d ¦  «         dd d@œ‰|<   |                     d"g ¦  «         %                    |¦  «         ‰|         d&         |z   d dA…         ‰|         d&<   tM          |                      dBd¦  «        |z   dC¦  «        |dB<   tM          |dB         dD¦  «        |d1<   d&|dE<   �n!|dFv �r‰                      dGi ¦  «        }|                      d7¦  «        }‰                      d
¦  «        |                      d¦  «        k    r,|                      dd¦  «        s‰                      ||¦  «         |dHk    ri||                      d¦  «        f}|dIk    r1dJ„ |                      dKg ¦  «        D ¦   «         d dL…         ‰ j'        |<   n‰ j'                             |d ¦  «         |dMvr&|› dN| (                    dO¦  «        rdPnd*› �|d1<   dQ|dE<   ‰ j)        r‰  )                    ||¦  «         d S d S )RNrZ   re   ÚthreadIdÚid)z%item/commandExecution/requestApprovalúitem/fileChange/requestApprovalúitem/tool/requestUserInputr   ÚdecisionrM   ©r}   rl   ÚturnIdc                ó:   •— ‰j                              |d ¦  «        S rd   )r.   Úpop)rL   ÚkeyrE   s     €rH   rq   z$CodexAdapter.event.<locals>.<lambda>”   s   ø€ ÀÔAS×AWÒAWÐX[Ð]aÑAbÔAb€ rJ   i§€ÿÿz,Gateway does not support this server request©ÚcodeÚmessage©r}   ÚerrorzserverRequest/resolvedÚ	requestIdr   zaccount/rateLimits/updated)úturn/startedúturn/completedrŒ   FÚ ÚturnÚRUNNING)
Úfinal_itemsÚfinal_orderÚterminal_sentÚ
final_textÚturn_idÚstateÚ
started_atÚlatest_activityÚrecent_textÚwaiting_reasonr�   r•   r“   TÚitemsr‘   c                ó(   •— g | ]}|‰v ¯‰|         ‘ŒS ro   ro   )Ú.0Úir›   s     €rH   ú
<listcomp>z&CodexAdapter.event.<locals>.<listcomp>´   s#   ø€ ÐWÐWÐW qÈAÐQVÈJÈJ˜% œ(ÈJÈJÈJrJ   r’   c                óD   — g | ]}|                      d ¦  «        dk    ¯|‘ŒS ©ÚphaseÚfinal_answer©r?   ©r�   rž   s     rH   rŸ   z&CodexAdapter.event.<locals>.<listcomp>µ   s,   € ÐPÐPÐP˜A¨q¯uªu°W©~¬~ÀÒ/OÐ/O�aÐ/OÐ/OÐ/OrJ   c                óD   — g | ]}|                      d ¦  «        dk    ¯|‘ŒS )r¢   Ú
commentaryr¤   r¥   s     rH   rŸ   z&CodexAdapter.event.<locals>.<listcomp>¶   s,   € Ð"[Ð"[Ð"[¨¸A¿EºEÀ'¹N¼NÈlÒ<ZÐ<Z 1Ð<ZÐ<ZÐ<ZrJ   éÿÿÿÿÚtextr”   r   ÚstatusÚ	completedÚDONEÚFAILEDr–   r—   Úelapsed_secondsrU   r˜   )rU   r˜   zthread/settings/updatedc                ód   •— i | ],}|‰                      d i ¦  «                              |¦  «        “Œ-S )ÚthreadSettingsr¤   ©r�   Úkre   s     €rH   ú
<dictcomp>z&CodexAdapter.event.<locals>.<dictcomp>Æ   s8   ø€ ÐbÐbÐbÈ˜!˜VŸZšZÐ(8¸"Ñ=Ô=×AÒAÀ!ÑDÔDÐbÐbÐbrJ   ©ÚmodelÚeffortzthread/status/changedÚtypeÚactive)Ú	notLoadedÚsystemErrorr¹   zitem/agentMessage/deltaÚdeltaÚitemIdrˆ   é@   ©r©   r¢   é€>  r™   éà.  ià  Úactivity_type)úitem/startedzitem/completedÚitemÚ
fileChangerÂ   c                ó:   — g | ]}|                      d d¦  «        ‘ŒS )ÚpathrŽ   r¤   )r�   Úcs     rH   rŸ   z&CodexAdapter.event.<locals>.<listcomp>ë   s&   € Ð-aÐ-aÐ-aÀA¨a¯eªe°F¸BÑ.?Ô.?Ð-aÐ-aÐ-arJ   Úchangesé(   )ÚagentMessageÚuserMessageÚ	reasoningz: z/startedÚstartedÚtool)*r?   r*   r)   rD   r_   r]   r·   Ú__name__r.   r3   rs   Úrequest_user_inputÚrequest_approvalr-   Úaddru   ÚdiscardrM   rw   r1   Ú
setdefaultr2   r„   Úupdater   Únowr   ÚutcÚ
final_itemÚlistÚvaluesÚcancel_sessionÚintÚtotal_secondsr&   r	   ÚlenÚappendr
   r0   Úendswithr%   )rE   rˆ   rZ   Ú
session_idÚis_inputr…   rQ   Úentryr–   r�   Úspeak_terminalrÃ   Ú
candidatesÚfinalsÚselectedÚsidr•   rª   rp   ÚvalueÚiidÚoldÚkindr›   re   s   `                      @@rH   rB   zCodexAdapter.eventƒ   sí
  øøøè è € Ø  Ô*¨G¯KªK¸À"Ñ,EÔ,Eˆˆ�Ø—Z’Z 
Ñ+Ô+ˆ
Ø�7ˆ?‰?Øð  Dð  Dñ  DØÐ!=Ò=�Ø(0ÐD�DÔ$Ð$°d´nÐMØœ(Ÿ.š.°¸´È*ÐV^ÐI_Ð)`Ð)`ÑaÔaÐaÐaÐaÐaÐaÐaÐaÑað  œ8Ô.µ°W¸T´]Ñ0CÔ0CÔ0LÈgÐVZÌmÐ\�CØ˜dÔ0Ð0Ð0Ø˜Ý"Ô.Ð0nÈ8Ð0n°Ô0GÐ0GÐY]ÔYnÐpwÐy}ô  zBô  zMñ  0Nô  0Nñ  Oô  O�DØÔ'×+Ò+¨DÑ1Ô1Ð1Ø/3°ZÀÇÂÈHÑAUÔAUÐ.V�DÔ& sÑ+Ø×*Ò*¨4Ô+>Ô+FÑGÔGÐGØ×*Ò*¸CÐ+bÐ+bÐ+bÐ+bÐ+bÑcÔcÐcÐcà”h—n’n¨G°D¬MÈVð  aOð  EPð  EPð  &Qð  &Qñ  Rô  Rð  Rð  Rð  Rð  Rð  Rð  Rð  RØˆFØÐ-Ò-Ð-Ø”8Ô&­¨V¯ZªZ¸Ñ-DÔ-DÑ(EÔ(EÔ(NÐPV×PZÒPZÐ[fÑPgÔPgÐhˆCØÔ&×*Ò*¨3Ñ/Ô/ˆEØð "Ø�a”—’Ñ!Ô!Ð!ØÐ1Ò1Ð1ð ×'Ò'¨Ñ/Ô/Ð/ØˆFØð 	ØˆFØ”	×$Ò$ Z°Ñ4Ô4ˆØÐ7Ð7Ð7ØÔ×!Ò! *¨dÑ3Ô3Ð3Ø�^Ò#Ð#Ø�LŠL R°RÀuÐY[Ðek×eoÒeoÐpvÐxzÑe{Ôe{×eÒeð  AEñ  fFô  fFð  NWõ  dlô  dpõ  qyô  q}ñ  d~ô  d~ð  PRð  `bð  swˆLñ  xô  xð  xñ  xØÐ'Ò'Ñ'Ø—:’:˜f bÑ)Ô)ˆDØ�yŠy˜Ñ#Ô#ð ¨¨iÔ(8¸D¿HºHÀT¹N¼NÒ(JÐ(JØ�Ø�yŠy˜Ñ)Ô)ð ¨e¯iªi¸	Ñ.BÔ.BÀdÇhÂhÈtÁnÄnÒ.TÐ.TØ�Ø"ŸYšY yÑ1Ô1°T·X²X¸d±^´^ÒCÐlÈEÏIÊIÐVeÐgkÑLlÔLlÐHlˆNØ%)ˆE�/Ñ"ØŸš ¨"Ñ-Ô-ð -ð -�Ø—’  tÑ,Ô,Ð,Ð,Ø—I’I˜m¨RÑ0Ô0ˆEØWÐWÐWÐW¨E¯IªI°mÀRÑ,HÔ,HÐWÑWÔWˆJØPÐP ÐPÑPÔPˆFØÐ[Ð"[Ð"[¨jÐ"[Ñ"[Ô"[ˆHØ:BÐ"J (¨2¤,¨vÔ"6Ð"6ÈˆE�,ÑÝ&*¨4Ô+=×+DÒ+DÑ+FÔ+FÑ&GÔ&Gð "ð "Ñ"��c˜7Ø˜*Ò$Ð$¨°F·J²J¸vÀrÑ4JÔ4J×4NÒ4NÈtÑ4TÔ4TÒ)TÐ)TØ—K’K‘M”M�MøØŒ~ð CØ”×-Ò-¨g°zÑBÔBÐBØÔÐT Ô!1×!@Ò!@ÀÈÑ!TÔ!TÐ!TØ—:’:˜f bÑ)Ô)ˆDØ'+§x¢x°Ñ'9Ô'9¸[Ò'HÐ'H˜V˜VÈhˆE�'‰NØ�yŠy˜Ñ&Ô&ð qÝ+.µ´½X¼\Ñ0JÔ0JÈ5ÐQ]ÔK^Ñ0^×/mÒ/mÑ/oÔ/oÑ+pÔ+p�Ð'Ñ(ØÔð w Nð wØ× Ò  ¨*°e¸G´nÀeÈLÔFYØ&+§i¢i°¸
Ñ&CÔ&CÐUZ×U^ÒU^Ð_pÐrtÑUuÔUuð !ñ wô wð wùàÐ0Ò0Ð0Ø�LŠLÐbÐbÐbÐbÐNaÐbÑbÔbÑcÔcÐcÑcØÐ.Ò.Ð.Ø—Z’Z ¨"Ñ-Ô-×1Ò1°&Ñ9Ô9ˆFØ˜Ò!Ð!Ø!*��g‘‘ØÐ7Ð7Ð7Ý$(¨Ô);×)BÒ)BÑ)DÔ)DÑ$EÔ$Eð &ð &‘L�D˜#˜qØ˜jÒ(Ð(ØŸš™œ˜øØ”>ð GØ”N×1Ò1°'¸:ÑFÔFÐFØÔ#ÐX TÔ%5×%DÒ%DÀWÈZÑ%XÔ%XÐ%XØ˜[Ò(Ð(Ø”I—M’M *¨dÑ3Ô3Ð3Ñ3à%-�E˜'‘NùØÐ0Ò0Ñ0Ý& v§z¢z°'¸2Ñ'>Ô'>Ñ?Ô?ˆEØ�zŠz˜(Ñ#Ô# u§y¢y°Ñ';Ô';Ò;Ð;ÀEÇIÂIÈoÐ_cÑDdÔDdÐ;Ø—j’j ¨9Ñ5Ô5�Ø×(Ò(¨¸Ñ;Ô;�Ø˜eÐ#Ð#Ý˜5‘z”z RÒ'Ð'Ø# MÔ2×6Ò6°qÑ9Ô9˜¸5¿9º9ÀSÈ$Ñ;OÔ;OÐ;OØ*,°tÐ!<Ð!<�E˜#‘J¸e×>NÒ>NÈ}Ð^`Ñ>aÔ>a×>hÒ>hÐilÑ>mÔ>mÐ>mØ&+¨C¤j°Ô&8¸5Ñ&@À&À5À&Ô%I��c”
˜6Ñ"Ý#,¨U¯YªY°}ÀbÑ-IÔ-IÈEÑ-QÐSXÑ#YÔ#YˆE�-Ñ Ý'0°°}Ô1EÀsÑ'KÔ'KˆEÐ#Ñ$Ø%+ˆE�/Ñ"Ñ"ØÐ9Ð9Ñ9Ø—:’:˜f bÑ)Ô)ˆDØ—8’8˜FÑ#Ô#ˆDØ�zŠz˜(Ñ#Ô# u§y¢y°Ñ';Ô';Ò;Ð;ÀEÇIÂIÈoÐ_cÑDdÔDdÐ;Ø—’  tÑ,Ô,Ð,Ø�|Ò#Ð#Ø! 4§8¢8¨D¡>¤>Ð2�Ø˜^Ò+Ð+Ø-aÐ-aÈÏÊÐR[Ð]_ÑI`ÔI`Ð-aÑ-aÔ-aÐbeÐceÐbeÔ-f�DÔ% cÑ*Ð*àÔ%×)Ò)¨#¨tÑ4Ô4Ð4ØÐGÐGÐGØ.2Ð+qÐ+qÀ6Ç?Â?ÐS]ÑC^ÔC^Ð6o°i°iÐdoÐ+qÐ+q�Ð'Ñ(Ø)/��oÑ&ØÔð 	1Ø×Ò˜Z¨Ñ0Ô0Ð0Ð0Ð0ð	1ð 	1rJ   c                óä  — |                      d¦  «        dk    rd S |                      dd¦  «        }|                      di ¦  «        }||vrmt          |¦  «        dk    r1| d                              d¦  «        }|                     |d ¦  «         |                      dg ¦  «                             |¦  «         |                      d	d
¦  «        d d…         |                      d¦  «        dœ||<   d S )Nr·   rÊ   r}   rˆ   r‘   r½   r’   r   r©   rŽ   r¿   r¢   r¾   )r?   rÔ   rÞ   r„   rß   )r–   rÃ   rê   r›   rë   s        rH   rØ   zCodexAdapter.final_itemô   sé   € à�8Š8�FÑÔ˜~Ò-Ð-ØˆFØ�hŠh�t˜YÑ'Ô'ˆØ× Ò  °Ñ3Ô3ˆØ�eÐÐÝ�5‰zŒz˜RÒÐØ˜MÔ*×.Ò.¨qÑ1Ô1�°5·9²9¸SÀ$Ñ3GÔ3GÐ3GØ×Ò˜]¨BÑ/Ô/×6Ò6°sÑ;Ô;Ð;Ø"Ÿhšh v¨rÑ2Ô2°6°E°6Ô:ÀTÇXÂXÈgÑEVÔEVÐWÐWˆˆc‰
ˆ
ˆ
rJ   c              ƒ  ót  ‡K  — |                      di ¦  «        Šd }d| j        › d|› �}| j                             |¦  «         	 t	          ˆfd„dD ¦   «         ¦  «        st          d¦  «        ‚|                      ‰d         ¦  «        ƒ d {V —†}| j        j        |k    s	|| j        vr&	 |r!| j	         
                    |j        ¦  «         d S d S |d         d	k    }‰                      d
¦  «        }|�|ng d¢}d„ |D ¦   «         }|st          d¦  «        ‚|rI| j                              |j        ‰d         fg ¦  «        }	d                     |	¦  «        p
d‰d         z   }
n ‰                      d¦  «        p
d‰d         z   }
‰                      d¦  «        r|
d‰d         z   z  }
| j	                             d|j        |j        |rdnd|rdnd|
|t#          j        |d         ‰d         ‰d         ‰d         ‰                      d¦  «        g¦  «        |¬¦	  «	        }| j	                             |¦  «        ƒ d {V —†}|dv r3| j                             |d         d|j        pdidœ|¦  «        ƒ d {V —† n}# t,          j        $ r Y nlt0          $ r` t3          j        t0          ¦  «        5  | j                             |d         ddidœ|¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   Y nw xY w|r!| j	         
                    |j        ¦  «         d S d S # |r | j	         
                    |j        ¦  «         w w xY w) Nre   úcodex:ú:c              3  óx   •K  — | ]4}t          ‰                     |¦  «        t          ¦  «        o‰|         V — Œ5d S rd   )Ú
isinstancer?   r@   r±   s     €rH   ú	<genexpr>z0CodexAdapter.request_approval.<locals>.<genexpr>  s@   øè è € ÐnÐnÈ•z &§*¢*¨Q¡-¤-µÑ5Ô5ÐC¸&À¼)ÐnÐnÐnÐnÐnÐnrJ   )r|   r‚   r¼   zmalformed approval identityr|   rZ   r~   ÚavailableDecisions©ÚacceptÚacceptForSessionÚdeclinerM   c                óD   — g | ]}t          |t          ¦  «        ¯|d v ¯|‘ŒS )rõ   )rò   r@   )r�   Úds     rH   rŸ   z1CodexAdapter.request_approval.<locals>.<listcomp>  s2   € ÐwÐwÐw˜1­:°a½Ñ+<Ô+<ÐwÀÐFvÐAvÐAv�QÐAvÐAvÐAvrJ   zUnsupported native decisionsr¼   ú
zFile changes: Úcommandz	Command: Úreasonr   Úfile_changezEdit files?zRun command?r}   r‚   Ú
approvalId)	Úagentrá   Ú
project_idrì   ÚtitleÚdetailrP   Úrequest_identityÚchoices)ÚAPPROVEDÚREJECTEDÚ	CANCELLEDr€   rM   r�   )r?   r,   r/   rÒ   Úallr   Úget_sessionrD   r]   r)   rM   Úapproval_idr0   rá   ÚjoinÚcreater  ÚjsonÚdumpsÚwaitÚreplyr€   r3   ry   rh   Ú
contextlibÚsuppress)rE   rˆ   r]   ÚapprovalrP   Úsessionrþ   Ú	availabler  Úpathsr  r–   re   s               @rH   rÑ   zCodexAdapter.request_approval   s{  øè è € Ø—’˜X rÑ*Ô*ˆØˆØ5˜œÐ5Ð5¨Ð5Ð5ˆØÔ× Ò  Ñ'Ô'Ð'ð'	<åÐnÐnÐnÐnÐMmÐnÑnÔnÑnÔnð BÝ"Ð#@ÑAÔAÐAØ ×,Ò,¨V°JÔ-?Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@ˆGØŒxÔ" jÒ0Ð0°EÀÔAUÐ4UÐ4UØð@ ð <Ø”×%Ò% hÔ&:Ñ;Ô;Ð;Ð;Ð;ð<ð <ð? " (Ô+Ð/PÒPˆKØŸ
š
Ð#7Ñ8Ô8ˆIð "+Ð!6�I�IÐ<lÐ<lÐ<lˆGØwÐw ÐwÑwÔwˆGØÐN¥,Ð/MÑ"NÔ"NÐNØð Qð Ô)×-Ò-¨wÔ/AÀ6È(ÔCSÐ.TÐVXÑYÔY�ØŸš 5Ñ)Ô)ÐPÐ-=ÀÀxÔ@PÑ-P��àŸš IÑ.Ô.ÐP°+ÀÀxÔ@PÑ2P�Ø�zŠz˜(Ñ#Ô#ð 2Ø˜$ ¨Ô!1Ñ1Ñ1�Ø”~×,Ò,°7ÀwÔGYØ"Ô-À[Ð4_°M°MÐV_Ø'2ÐF�m�m¸ÈvÐ]bÝ!%¤¨W°T¬]¸FÀ:Ô<NÐPVÐW_ÔP`Ø˜8Ô$ f§j¢j°Ñ&>Ô&>ð-@ñ "Aô "AØJQð	 -ñ Sô SˆHð
 œ.×-Ò-¨hÑ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7ˆEØÐ=Ð=Ð=Ø”h—n’n¨G°D¬MØ Ô 1Ð =°XðF?ð &@ð &@ØAKñMô Mð Mð Mð Mð Mð Mð Mð MøøåÔ%ð 	ð 	ð 	ØˆDÝð 	jð 	jð 	jÝÔ$¥YÑ/Ô/ð jð jØ”h—n’n¨G°D¬MÀjÐRZÐE[Ð%\Ð%\Ð^hÑiÔiÐiÐiÐiÐiÐiÐiÐiðjð jð jñ jô jð jð jð jð jð jð jøøøð jð jð jð jøøð	jøøøð ð <Ø”×%Ò% hÔ&:Ñ;Ô;Ð;Ð;Ð;ð<ð <øˆxð <Ø”×%Ò% hÔ&:Ñ;Ô;Ð;Ð;ð<øøøsb   ÁA$I1 ÃF"I1 É0L É1K+Ê L Ê"K+Ê$-KËK+ËK!	Ë!K+Ë$K!	Ë%K+Ë(L Ë*K+Ë+L Ì$L7c              ƒ  óÐ  K  — d }d| j         › d|› �}| j                             |¦  «         	 |d         }|                      |d         ¦  «        ƒ d {V —†}| j        j        |k    r!	 |r| j                             |¦  «         d S d S | j                             d|j	        |j
        t          j        |d         |d         |d         g¦  «        |d	         |¦  «        }| j                             |¦  «        ƒ d {V —†}| j                             |d         |d
œ|¦  «        ƒ d {V —† n~# t          j        $ r Y nmt"          $ ra t%          j        t"          ¦  «        5  | j                             |d         dddœdœ|¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   Y nw xY w|r| j                             |¦  «         d S d S # |r| j                             |¦  «         w w xY w)Nrï   rð   re   r|   r   r}   r‚   r¼   Ú	questionsr�   i¦€ÿÿzUnsupported native user inputr†   r‰   )r,   r/   rÒ   r
  rD   r]   r*   rM   r  rá   r  r  r  r  r  r3   ry   rh   r  r  )rE   rˆ   r]   rã   rP   re   r  rl   s           rH   rÐ   zCodexAdapter.request_user_input.  s¸  è è € ØˆÐ> $¤-Ð>Ð>°*Ð>Ð>�5¸tÔ?S×?WÒ?WÐX]Ñ?^Ô?^Ð?^ð	4Ø˜8Ô$ˆF°4×3CÒ3CÀFÈ:ÔDVÑ3WÔ3WÐ-WÐ-WÐ-WÐ-WÐ-WÐ-W WØŒxÔ" JÒ.Ð.¨vð Ð3�TÔ%×,Ò,¨UÑ3Ô3Ð3Ð3Ð3Ð3Ð3ð Ô"×)Ò)¨'°'Ô2DÀWÔEWÝ”
˜G DœM¨&°Ô*:¸6À(Ô;KÐLÑMÔMÈfÐU`ÔNaÐbgñiô iˆEàÔ)×.Ò.¨uÑ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5ˆFØ”(—.’. w¨t¤}¸fÐ!EÐ!EÀjÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQøÝÔ%Ð+Ð+Ð+ t tÝð 	Hð 	Hð 	HÝÔ$¥YÑ/Ô/ð Hð HØ”h—n’n¨7°4¬=ÈÐZyÐAzÐAzÐ%{Ð%{ð  }Gñ  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øøøð Ð3�TÔ%×,Ò,¨UÑ3Ô3Ð3Ð3Ð3Ð3Ð3øˆuÐ3�TÔ%×,Ò,¨UÑ3Ô3Ð3Ð3Ð3øøøs`   ­9D( ÂB D( Ä'G Ä(F#Ä7G Ä9"F#Å.FÆ	F#ÆF	ÆF#ÆF	ÆF#Æ G Æ"F#Æ#G ÇG%c           
   ƒ  óÌ  K  — |                       |¦  «        ƒ d {V —† |                      d|ddœ¦  «        ƒ d {V —†}|d         d         |k    rt          d¦  «        ‚| j                             |¦  «         |                     d¦  «        }t          ||                     d¦  «        |                     d	¦  «        |                     d
¦  «        |r
dddœdddœgng ¬¦  «        S )Núthread/resumeT©r|   ÚexcludeTurnsÚthreadr}   zThread identity changedÚapprovalsReviewerÚapprovalPolicyÚsandboxÚactivePermissionProfileÚuserzAsk for approval)r}   rU   Úauto_reviewzApprove for me)Úcurrentr   ÚsandboxPolicyr"  Úavailable_modes)r
  r^   r   r(   rÒ   r?   Údict)rE   rá   rl   Úreviewers       rH   ÚpermissionszCodexAdapter.permissions>  s  è è € à×Ò˜zÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø—Y’Y˜¸:ÐUYÐ/ZÐ/ZÑ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[ˆØ�(Ô˜DÔ! :Ò-Ð-µLÐAZÑ4[Ô4[Ð.[ØŒ×Ò˜*Ñ%Ô%Ð%Ø—’Ð/Ñ0Ô0ˆÝ˜H°F·J²JÐ?OÑ4PÔ4PÐ_e×_iÒ_iÐjsÑ_tÔ_tØ$*§J¢JÐ/HÑ$IÔ$IØv~ð  G 6Ð1CÐDÐDÈ=Ð`pÐEqÐEqÐrÐrð  EGðHñ Hô Hð 	HrJ   c              ƒ  ó‚  K  — | j         4 ƒd {V —† |                      ¦   «         ƒ d {V —†}t          |t          ddd d |¦  «        ¦  «        \  }}|j        |dœ}|j        �#|j        dvrt          dd¦  «        ‚|j        |d<   |                      d|¦  «        ƒ d {V —†}	|	d	         d
         }
 ||
¦  «         |	d	         t          j	        ¦   «         f| j
        |
<   t          | j
        ¦  «        dk    rQ| j
                             t          t          | j
        ¦  «        ¦  «        ¦  «         t          | j
        ¦  «        dk    °Q|	d	         d         |j        k    rt          d¦  «        ‚| j                             |
¦  «         |�|                      d|
|dœ¦  «        ƒ d {V —† |                      d|
d|dœgdœ¦  «        ƒ d {V —†}| j                             |
i ¦  «                             d|d         d
         ¬¦  «         t)          dd|
|j        ¬¦  «        cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )Nr   rŽ   )Úcwdrµ   ©r#  r$  úUnsupported native revieweré�  r  zthread/startr  r}   r½   r,  zNative cwd mismatchúthread/settings/update)r|   r¶   ú
turn/startr©   ©r·   r©   ©r|   Úinputr�   r�   )r–   r•   T)Úacceptedr   rá   r  )r9   Úlist_modelsr   r   rÆ   r*  r   r^   ÚtimeÚ	monotonicr6   rÞ   r„   ÚnextÚiterr(   rÒ   r1   rÔ   rÕ   r(  r}   )rE   Úprojectr©   ÚsettingsÚ
on_createdÚmodelsrµ   r¶   re   rl   rè   r�   s               rH   Úcreate_sessionzCodexAdapter.create_sessionI  s)  è è € Ø”?ð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	ZØ×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+ˆFÝ*¨8µMÀ'È"ÈTÐRVÐW]Ñ4^Ô4^Ñ_Ô_‰LˆE�&Ø!œ,¨uÐ5Ð5ˆFØÔ#Ð/ØÔ'Ð/EÐEÐEÍLÐYvÐwzÑL{ÔL{ÐF{Ø,4Ô,@�Ð*Ñ+ØŸš >°&Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9ˆFØ�xÔ  Ô&ˆC z z°#¡¤ Ø(.¨xÔ(8½¼Ñ9IÔ9IÐ'JˆDÔ! #Ñ&Ý�dÔ+Ñ,Ô,¨RÒ/Ð/°Ô0E×0IÒ0IÍ$ÍtÐTXÔTiÑOjÔOjÑJkÔJkÑ0lÔ0lÐ0l•#�dÔ+Ñ,Ô,¨RÒ/Ð/Ø�hÔ Ô&¨¬Ò4Ð4½<ÐH]Ñ;^Ô;^Ð5^ØŒM×Ò˜cÑ"Ô"Ð"ØÐ!¨¯ªÐ3KÐX[ÐekÐLlÐLlÑ)mÔ)mÐ#mÐ#mÐ#mÐ#mÐ#mÐ#mÐ#mØ—y’y ¸#ÈvÐ]aÐGbÐGbÐFcÐ.dÐ.dÑeÔeÐeÐeÐeÐeÐeÐeˆDØŒI× Ò   RÑ(Ô(×/Ò/°iÈÈVÌÐUYÔHZÐ/Ñ[Ô[Ð[Ý ¨G¸sÈgÌjÐYÑYÔYð!	Zð 	Zð 	Zð 	Zñ 	Zô 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zøøøð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zs   �HH.È.
H8È;H8rŽ   c                óf  — |d         }|                      di ¦  «                              dd¦  «        }| j                              |i ¦  «        }|dk    }|dk    rdn|dk    rdn|rd	nd
}|                      d¦  «        dv }	|s|	r|                      d|¦  «        nd
}
|dk    r|
dvrd}
|                      d¦  «        dv r|                      dd¦  «        nd}|
dv r|s|}t          d(i dd“d|“d|j        “d|                      d¦  «        p|                      dd¦  «        d d…         p|“d|d         “dt	          j        |d         t          j        ¦  «                             ¦   «         “d|                      d¦  «        p|                      d¦  «        “d|                      d¦  «        p|                      d¦  «        “d|“d |                      d!¦  «        r_|                      d¦  «        dk    rFt          t	          j
        t          j        ¦  «        |d!         z
                       ¦   «         ¦  «        n|                      d d"¦  «        “d|
“d#|                      d#d¦  «        “d$t          |                      d$d¦  «        d%¦  «        “d|“d&|                      d&¦  «        “d'|                      d'¦  «        “Ž}|| j        v r|j        | j        |         d<   | j        r| j                             |¦  «        }| j        r| j                             |¦  «        }|j        dv rd|_        |S ))Nr}   rª   r·   r¹   r¸   r�   rº   r­   ÚIDLEÚDORMANTr–   ©r�   ÚWAITING_APPROVALÚWAITING_INPUT)rD  rE  )r¬   r­   r”   rŽ   ©rB  rA  r   r   rá   r  rU   Úpreviewé    r,  Ú
updated_atÚ	updatedAtrµ   r¶   ÚreasoningEffortr1   r®   r—   r   r˜   r™   rÀ   rÁ   rš   ro   )r?   r1   r   r}   r   Úfromtimestampr   r×   Ú	isoformatrÜ   rÖ   rÝ   r
   rU   r*   Úoverlayr)   r–   r”   )rE   r  r;  Ú	recoveredrè   rª   rN  r1   r–   Úactive_overlayÚeffective_stateÚfinalr  s                rH   ÚconvertzCodexAdapter.convert\  s
  € Ø�TŒlˆØ—’˜H bÑ)Ô)×-Ò-¨f°kÑBÔBˆØ”)—-’-  RÑ(Ô(ˆØ˜Ò$ˆØ# xÒ/Ð/�	�	ÀÈ=ÒAXÐAX°X°XÐhlÐ^{Ð^dÐ^dÐr{ˆà Ÿš WÑ-Ô-Ð1aÐaˆØ9=Ð^ÀÐ^˜'Ÿ+š+ g¨uÑ5Ô5Ð5ÐU^ˆØ�XÒÐ /Ð9^Ð"^Ð"^Ø'ˆOØ18·²¸WÑ1EÔ1EÐI[Ð1[Ð1[�—’˜L¨"Ñ-Ô-Ð-ÐacˆØÐ1Ð1Ð1¸%Ð1ØˆEÝð fð fð f W Wð f¸¸ð fÈÌÈð fØ—’˜FÑ#Ô#ÐM v§z¢z°)¸RÑ'@Ô'@ÀÀ#ÀÔ'FÐMÈ#øðfØSYÐZ_ÔS`ÐS`ðfåÔ-¨f°[Ô.AÅ8Ä<ÑPÔP×ZÒZÑ\Ô\Ð\ðfð —*’*˜WÑ%Ô%Ð=¨¯ª°WÑ)=Ô)=øðfð GMÇjÂjÐQbÑFcÔFcÐF|Ðgn×grÒgrÐs{Ñg|Ôg|øðfð DHð  DHðfð ho×grÒgrÐsñ  hAô  hAð  Kð  FM÷  FQò  FQð  RYñ  FZô  FZð  \eò  Feð  Fe�C¥¤­h¬lÑ!;Ô!;¸GÀLÔ<QÑ!Q× `Ò `Ñ bÔ bÑcÔcÐcð  kr÷  kvò  kvð  wHð  IJñ  kKô  kKøð	fð
 "�/ðfð $ŸKšKÐ(9¸2Ñ>Ô>Ð>ðfõ MVÐV]×VaÒVaÐboÐqsÑVtÔVtÐv{ÑL|ÔL|ÐL|ðfð �uðfð "Ÿ+š+ oÑ6Ô6Ð6ðfð HOÇ{Â{ÐScÑGdÔGdÐGdðfˆð �$”)ÐÐ°g´l˜TœY sœ^¨FÑ3ØÔÐE DÔ$4×$<Ò$<¸WÑ$EÔ$E˜GØŒ>ÐA $¤.×"8Ò"8¸Ñ"AÔ"A˜'ØŒ=ÐLÐLÐLØ!#ˆGÔØˆrJ   r½   c              ƒ  ó”  K  — ddl m} g }d}t          | j        ¦  «        D �]}|                      dt          || j        |dd¬¦  «        ¦  «        ƒ d{V —†}t          |t
          ¦  «        r(t          |                     d¦  «        t          ¦  «        st          d	¦  «        ‚|d         d| j        …         D ]-}|                     t           ||¦  «        ¦  «        ¦  «         Œ.|                     d
¦  «        }	|	rt          |¦  «        |k    r n.t          |	t          ¦  «        r|	|k    rt          d¦  «        ‚|	}�Œ|d|…         S )ag  Newest-first user/assistant messages, read-only.

        Uses the same thread/turns/list native API as the Last Reply reader and
        never resumes a dormant thread. Reasoning, commentary, tool and command
        items are dropped by normalize_codex_turn. The scan is bounded so an
        arbitrarily long thread cannot be hydrated into memory.
        r   )Únormalize_codex_turnNúthread/turns/listÚdescÚfull©r|   ÚlimitÚcursorÚsortDirectionÚ	itemsViewÚdataúunsupported history responseÚ
nextCursorúunsupported history cursor)ÚhistoryrU  ÚrangeÚLAST_REPLY_MAX_PAGESr^   r(  ÚLAST_REPLY_PAGE_SIZErò   r?   rÙ   Ú
ValueErrorÚextendÚreversedrÞ   r@   )
rE   rá   Úmax_messagesrU  Ú	collectedr[  rp   Úpager�   Únext_cursors
             rH   Úread_historyzCodexAdapter.read_historyz  sœ  è è € ð 	2Ð1Ð1Ð1Ð1Ð1Øˆ	ØˆÝ�tÔ0Ñ1Ô1ð 	!ñ 	!ˆAØŸšÐ#6½ÀjØÔ/¸ÈfÐ`fð9hñ 9hô 9hñ iô ið ið ið ið ið ið iˆDå˜d¥DÑ)Ô)ð Aµ¸D¿HºHÀVÑ<LÔ<LÍdÑ1SÔ1Sð AÝ Ð!?Ñ@Ô@Ð@Ø˜VœÐ%? dÔ&?Ð%?Ô@ð Gð G�ð × Ò ¥Ð*>Ð*>¸tÑ*DÔ*DÑ!EÔ!EÑFÔFÐFÐFØŸ(š( <Ñ0Ô0ˆKØð ¥# i¡.¤.°LÒ"@Ð"@Ø�Ý˜k­3Ñ/Ô/ð ?°;À&Ò3HÐ3HÝ Ð!=Ñ>Ô>Ð>Ø ˆF‰FØ˜˜,˜Ô'Ð'rJ   c              ƒ  ó˜  K  — d }t          | j        ¦  «        D �]¯}|                      dt          || j        |dd¬¦  «        ¦  «        ƒ d {V —†}t          |t          ¦  «        r(t          |                     d¦  «        t          ¦  «        st          d¦  «        ‚|d         d | j        …         D ]Ò}t          |t          ¦  «        r(t          |                     d¦  «        t          ¦  «        st          d¦  «        ‚|                     d	¦  «        d
k    rŒh|                     dd¦  «        dk    rt          d¦  «        ‚d„ |d         D ¦   «         }d„ |D ¦   «         }|r!t          |p|d         d         ¦  «        c c S ŒÓ|                     d¦  «        }|s n.t          |t          ¦  «        r||k    rt          d¦  «        ‚|}�Œ±dS )NrV  rW  rX  rY  r^  r_  r›   zunsupported turn responserª   r«   r]  zincomplete turn itemsc                ó$  — g | ]�}t          |t          ¦  «        rv|                     d ¦  «        dk    ¯0|                     d¦  «        dk    ¯It          |                     d¦  «        t          ¦  «        ¯q|d                              ¦   «         ¯‹|‘ŒŽS )r·   rÊ   r¢   r§   r©   )rò   r(  r?   r@   Ústrip©r�   rÃ   s     rH   rŸ   z0CodexAdapter.read_last_reply.<locals>.<listcomp>¦  sž   € ð Tð Tð T T½jÈÍtÑ>TÔ>Tð TØŸš Ñ(Ô(¨NÒ:Ð:¸t¿xºxÈÑ?PÔ?PÐT`Ò?`Ð?`Ý" 4§8¢8¨FÑ#3Ô#3µSÑ9Ô9ð @aØ>BÀ6¼l×>PÒ>PÑ>RÔ>Rð @að !Ø?`Ð?`Ð?`rJ   c                óD   — g | ]}|                      d ¦  «        dk    ¯|‘ŒS r¡   r¤   rq  s     rH   rŸ   z0CodexAdapter.read_last_reply.<locals>.<listcomp>©  s.   € Ð[Ð[Ð[ 4°t·x²xÀÑ7HÔ7HÈNÒ7ZÐ7Z˜$Ð7ZÐ7ZÐ7ZrJ   r¨   r©   r`  ra  rŽ   )rc  rd  r^   r(  re  rò   r?   rÙ   rf  r   r@   )	rE   rá   r[  rp   rk  r�   Úmessagesræ   rl  s	            rH   Úread_last_replyzCodexAdapter.read_last_reply–  s5  è è € ð ˆÝ�tÔ0Ñ1Ô1ð 	!ñ 	!ˆAØŸšÐ#6½ÀjØÔ/¸ÈfÐ`fð9hñ 9hô 9hñ iô ið ið ið ið ið ið iˆDå˜d¥DÑ)Ô)ð Aµ¸D¿HºHÀVÑ<LÔ<LÍdÑ1SÔ1Sð AÝ Ð!?Ñ@Ô@Ð@Ø˜VœÐ%? dÔ&?Ð%?Ô@ð Oð O�Ý! $­Ñ-Ô-ð BµZÀÇÂÈÑ@QÔ@QÕSWÑ5XÔ5Xð BÝ$Ð%@ÑAÔAÐAØ—8’8˜HÑ%Ô%¨Ò4Ð4ØØ—8’8˜K¨Ñ0Ô0°FÒ:Ð:Ý$Ð%<Ñ=Ô=Ð=ðTð T¨T°'¬]ð Tñ Tô T�ð \Ð[¨8Ð[Ñ[Ô[�Øð OÝ,¨fÐ.@¸À"Ô-EÀfÔ-MÑNÔNÐNÐNÐNÐNÐNðOàŸ(š( <Ñ0Ô0ˆKØð Ø�Ý˜k­3Ñ/Ô/ð ?°;À&Ò3HÐ3HÝ Ð!=Ñ>Ô>Ð>Ø ˆF‰FØˆrrJ   c           	   ƒ  ó`  K  — |d         |d         }}| j         4 ƒd {V —† | j                             |¦  «        }|�@|d         |k    r4| j                             |¦  «         |d         cd d d ¦  «        ƒd {V —† S 	 t	          j        |                      |¦  «        | j        ¦  «        ƒ d {V —†}n\# t          $ rO}t          j
        d¦  «                             d|d d…         t          |¦  «        j        ¦  «         d}Y d }~nd }~ww xY w||f| j        |<   | j                             |¦  «         t          | j        ¦  «        | j        k    r8| j                             d	¬
¦  «         t          | j        ¦  «        | j        k    °8|cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )Nr}   rJ  r   r   rg   z3Codex last reply unavailable session=%s category=%sr½   rŽ   F)Úlast)r5   r2   r?   Úmove_to_endr3   Úwait_forrt  ÚLAST_REPLY_TIMEOUTrh   ri   rj   rz   r·   rÏ   rÞ   ÚLAST_REPLY_CACHE_MAXÚpopitem)rE   r  rè   ÚrevisionÚcachedr©   Úexcs          rH   Úrecover_last_replyzCodexAdapter.recover_last_reply´  s™  è è € Ø˜tœ f¨[Ô&9ˆXˆØÔ$ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ØÔ&×*Ò*¨3Ñ/Ô/ˆFØÐ! f¨Q¤i°8Ò&;Ð&;ØÔ!×-Ò-¨cÑ2Ô2Ð2Ø˜a”yð		ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð
Ý$Ô-¨d×.BÒ.BÀ3Ñ.GÔ.GÈÔI`ÑaÔaÐaÐaÐaÐaÐaÐa��øÝð ð ð õ Ô!Ð"FÑGÔG×OÒOØIÈ3ÈsÐPRÈsÌ8ÕUYÐZ]ÑU^ÔU^ÔUgñiô ið ià������øøøøðøøøð '/°Ð%5ˆDÔ˜cÑ"ØÔ×)Ò)¨#Ñ.Ô.Ð.Ý�dÔ'Ñ(Ô(¨4Ô+DÒDÐDØÔ!×)Ò)¨uÐ)Ñ5Ô5Ð5õ �dÔ'Ñ(Ô(¨4Ô+DÒDÐDàð#	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s>    A
FÁ>3B2Â1FÂ2
DÂ<ADÄFÄDÄA?FÆ
F'Æ*F'r;  r   c              ƒ  óâ   ‡ ‡K  — g d }}	 ‰                       d‰j        d|dœ¦  «        ƒ d {V —†}|                     ˆˆ fd„|d         D ¦   «         ¦  «         |                     d¦  «        }|s|S Œg)NTzthread/listéd   )r,  rZ  r[  c              3  óf   •K  — | ]+}|d          ‰j         k    ¯‰                     |‰¦  «        V — Œ,dS )r,  N)rÆ   rS  )r�   Útr;  rE   s     €€rH   ró   z-CodexAdapter.list_sessions.<locals>.<genexpr>Í  sD   øè è € ÐgÐg¸ÈaÐPUÌhÐZaÔZfÒNfÐNf˜DŸLšL¨¨GÑ4Ô4ÐNfÐNfÐNfÐNfÐgÐgrJ   r^  r`  )r^   rÆ   rg  r?   )rE   r;  Úsessionsr[  rk  s   ``   rH   Úlist_sessionszCodexAdapter.list_sessionsÉ  sš   øøè è € Ø˜t�&ˆð	 ØŸš =¸'¼,ÐQTÐ`fÐ2gÐ2gÑhÔhÐhÐhÐhÐhÐhÐhˆDØ�OŠOÐgÐgÐgÐgÐg¸dÀ6¼lÐgÑgÔgÑgÔgÐgØ—X’X˜lÑ+Ô+ˆFØð  Ø�ð	 rJ   c              ƒ  óâ  K  — 	 |                       d|ddœ¦  «        ƒ d {V —†d         }| j                             |d ¦  «         nw# t          $ rj}| j                             |¦  «        }|r;t          j        ¦   «         |d         z
  dk    sd|j        v rd|j        v s
d	|j        v s‚ |d
         }Y d }~nd }~ww xY w| j         	                    ¦   «         D ]‹}|j
        |d         k    rx|                      ||¦  «        }|j        dv rUt          |j        |j        |j        f¦  «        s4|                      |¦  «        ƒ d {V —†}|                      |||¦  «        c S |c S ŒŒt          dd¦  «        ‚)Núthread/readF)r|   ÚincludeTurnsr  r   é
   ÚrolloutÚemptyzno rollout foundr   r,  rF  z(session not found in registered projectsi”  )r^   r6   r„   r   r?   r7  r8  r  r$   rÙ   rÆ   rS  r–   Úanyr”   r™   r˜   r  )rE   rá   r  r~  Úcreatingr;  r  rO  s           rH   r
  zCodexAdapter.get_sessionÒ  sò  è è € ð		Ø ŸIšI mÀ*Ð^cÐ5dÐ5dÑeÔeÐeÐeÐeÐeÐeÐeÐgoÔpˆFØÔ!×%Ò% j°Ñ6Ô6Ð6Ð6øÝð 	ð 	ð 	ØÔ*×.Ò.¨zÑ:Ô:ˆHð ð  f�tœ~Ñ/Ô/°¸´Ñ;¸BÒ>Ð>ÀyÐTWÔT^ÐG^ÐG^ÐdkÐorÔoyÐdyÐdyð  ~Pð  TWô  T^ð  ~^ð  ~^ð  afØ˜A”;ˆFˆFˆFˆFˆFˆFøøøøð	øøøð ”}×)Ò)Ñ+Ô+ð 	ð 	ˆGØŒ|˜v eœ}Ò,Ð,ØŸ,š, v¨wÑ7Ô7�Ø”=Ð$7Ð7Ð7ÅÀWÔEWÐY`ÔYlÐnuô  oFð  EGñ  AHô  AHÐ7Ø&*×&=Ò&=¸fÑ&EÔ&EÐ EÐ EÐ EÐ EÐ EÐ E�IàŸ<š<¨°¸ÑCÔCÐCÐCÐCØ���ð -õ ÐEÀsÑKÔKÐKs   „A A Á
B9ÁA B4Â4B9c              ƒ  ó  K  — || j         vr~|                      |¦  «        ƒ d {V —†}|j        r^|                      d|ddœ¦  «        ƒ d {V —†}|d         d         |k    rt	          d¦  «        ‚| j                              |¦  «         d S d S d S )Nr  Tr  r  r}   z)Codex observation changed thread identity)r(   r
  r1   r^   r   rÒ   ©rE   rá   r  rl   s       rH   Úobserve_sessionzCodexAdapter.observe_sessionç  sÃ   è è € ð ˜Tœ]Ð*Ð*Ø ×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆGØŒ|ð .Ø#Ÿyšy¨ÀzÐcgÐ:hÐ:hÑiÔiÐiÐiÐiÐiÐiÐi�Ø˜(Ô# DÔ)¨ZÒ7Ð7½|ÐLwÑ?xÔ?xÐ9xØ”×!Ò! *Ñ-Ô-Ð-Ð-Ð-ð +Ð*ð.ð .rJ   c              ƒ  ó¬  K  — |                       |¦  «        ƒ d {V —†}|                      d|ddœ¦  «        ƒ d {V —†}|d         d         |k    rt          d¦  «        ‚| j                             |¦  «         | j                             |i ¦  «                             |                     d¦  «        |                     d¦  «        ¬	¦  «         |j         S )
Nr  Tr  r  r}   z$Codex resume changed thread identityrµ   rK  r´   )	r
  r^   r   r(   rÒ   r1   rÔ   rÕ   r?   r�  s       rH   Ú_resumezCodexAdapter._resumeñ  så   è è € Ø×(Ò(¨Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4ˆØ—y’y ¸zÐ[_Ð2`Ð2`ÑaÔaÐaÐaÐaÐaÐaÐaˆØ�(Ô˜DÔ! ZÒ/Ð/ÝÐEÑFÔFÐFØŒ×Ò˜*Ñ%Ô%Ð%ØŒ	×Ò˜Z¨Ñ,Ô,×3Ò3¸&¿*º*ÀWÑ:MÔ:MÐV\×V`ÒV`ÐarÑVsÔVsÐ3ÑtÔtÐtØ”<ÐÐrJ   c              ƒ  ó¢   K  — | j         4 ƒd {V —† |                      |¦  «        ƒ d {V —†cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S rd   )r9   r’  )rE   rá   s     rH   Úresume_sessionzCodexAdapter.resume_sessionú  sí   è è € Ø”?ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ØŸš jÑ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1ð	2ð 	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2ð 	2ð 	2s   �>¾
AÁAc              ƒ  ó†  K  — | j         4 ƒd {V —† |                      |¦  «        ƒ d {V —†}|                      |¦  «        ƒ d {V —†}|j        dv rt	          dd¦  «        ‚|                      d|d|dœgdœ¦  «        ƒ d {V —†}| j                             |i ¦  «        }|                     d¦  «        |d	         d
         k    rG| 	                    i g dd|d	         d
         dt          j        t          j        ¦  «        ddd ¬¦
  «
         dd|||d	         d
         dœcd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )NrC  z@Codex turn is already running; wait before sending another inputé™  r1  r©   r2  r3  r•   r�   r}   rŽ   Fr�   )
r‘   r’   r”   r“   r•   r–   r—   r˜   r™   rš   Tr   )r5  r   rá   Úresumedr•   )r9   r’  r
  r–   r   r^   r1   rÔ   r?   rÕ   r   rÖ   r   r×   )rE   rá   r©   r—  r  rl   rN  s          rH   Ú
send_inputzCodexAdapter.send_inputþ  sf  è è € Ø”?ð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	GØ ŸLšL¨Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4ˆGØ ×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆGØŒ}Ð PÐPÐPÝ"Ð#eÐgjÑkÔkÐkØŸ9š9 \À
Ð_eÐosÐVtÐVtÐUuÐ3vÐ3vÑwÔwÐwÐwÐwÐwÐwÐwˆFØ”i×*Ò*¨:°rÑ:Ô:ˆGØ�{Š{˜9Ñ%Ô%¨°¬¸Ô)=Ò=Ð=Ø—’¨2¸2È"Ð\aÐkqÐrxÔkyÐz~Ôkð  HQõ  ^fô  ^jõ  ksô  kwñ  ^xô  ^xØ$&°BÀtð ñ Mô Mð Mà $¨wÀjÐ]dÐqwÐx~Ôqð  AEô  rFð  Gð  Gð
	Gð 
	Gð 
	Gð 
	Gñ 
	Gô 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gøøøð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gð 
	Gs   �DD0Ä0
D:Ä=D:c              ƒ  óÌ   K  — g d }}	 |                       d|ddœ¦  «        ƒ d {V —†}|                     d„ |d         D ¦   «         ¦  «         |                     d¦  «        }|s|S Œ^)NTz
model/listr�  )r[  rZ  c              3  óî   K  — | ]p}|                      d ¦  «        °t          |d         |d         |d         |                      d¦  «        d„ |                      dg ¦  «        D ¦   «         ¬¦  «        V — ŒqdS )	Úhiddenrµ   ÚdisplayNameÚ	isDefaultÚdefaultReasoningEffortc                ó   — g | ]
}|d          ‘ŒS )rK  ro   )r�   Úes     rH   rŸ   z6CodexAdapter.list_models.<locals>.<genexpr>.<listcomp>  s   € Ð"hÐ"hÐ"h¸A 1Ð%6Ô#7Ð"hÐ"hÐ"hrJ   ÚsupportedReasoningEfforts)r}   rU   Ú
is_defaultÚdefault_effortÚavailable_effortsN)r?   r(  )r�   Úms     rH   ró   z+CodexAdapter.list_models.<locals>.<genexpr>  sŸ   è è € ð >ð >ð ¨Q¯UªU°8©_¬_ð>�$ ! G¤*°1°]Ô3CÐPQÐR]ÔP^Ø ŸušuÐ%=Ñ>Ô>Ø"hÐ"hÀÇÂÐGbÐdfÑAgÔAgÐ"hÑ"hÔ"hðjñ jô jð >ð >ð >ð >ð >ð >rJ   r^  r`  )r^   rg  r?   )rE   rá   rl   r[  rk  s        rH   r6  zCodexAdapter.list_models  sž   è è € Ø˜T�ˆð	ØŸš <¸FÈSÐ1QÐ1QÑRÔRÐRÐRÐRÐRÐRÐRˆDØ�MŠMð >ð >ð ˜fœð>ñ >ô >ñ >ô >ð >ð —X’X˜lÑ+Ô+ˆFØð Ø�ð	rJ   c              ƒ  óÚ   K  — |                       |¦  «        ƒ d {V —† |                      dd|i¦  «        ƒ d {V —†d         }|                     d¦  «        |                     d¦  «        dœS )Nr‡  r|   r  rµ   rK  r´   )r
  r^   r?   )rE   rá   r  s      rH   Ú_read_settingszCodexAdapter._read_settings  s„   è è € ð ×Ò˜zÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØŸ	š	 -°*¸jÐ1IÑJÔJÐJÐJÐJÐJÐJÐJÈHÔUˆØŸš GÑ,Ô,¸¿
º
ÐCTÑ8UÔ8UÐVÐVÐVrJ   c           	   ƒ  óÎ  K  — | j         4 ƒd {V —† |                      |¦  «        ƒ d {V —†}t          d||d         |                     d¦  «        |                      ¦   «         ƒ d {V —†¦  «        }|                      |¦  «        ƒ d {V —†j        r|                      |¦  «        ƒ d {V —†nt          d g d¬¦  «        |d<   |cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )Nr   rµ   r¶   ú'Load session to read native permissions©r%  r'  rª   r*  )	r9   r§  r   r?   r6  r
  r1   r*  r(  )rE   rá   r%  Úviews       rH   Úget_settingszCodexAdapter.get_settings  sÀ  è è € Ø”?ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	Ø ×/Ò/°
Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;ˆGÝ˜w¨
°G¸GÔ4DÀgÇkÂkÐRZÑF[ÔF[Ðcg×csÒcsÑcuÔcuÐ]uÐ]uÐ]uÐ]uÐ]uÐ]uÑvÔvˆDØMQ×M]ÒM]Ð^hÑMiÔMiÐGiÐGiÐGiÐGiÐGiÐGiÔFoð  !L d×&6Ò&6°zÑ&BÔ&BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÕuyð  CGð  XZð  bKð  vLñ  vLô  vLˆD�ÑØð		ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   �B1CÃ
CÃ!Cc                 ó   — dS )NTro   ro   rJ   rH   rq   zCodexAdapter.<lambda>%  s   € Èd€ rJ   )Ústill_validc             ƒ  óô  K  — | j         4 ƒd {V —† t          |                      |¦  «        ƒ d {V —†¦  «         |                      |¦  «        ƒ d {V —†}|                      ¦   «         ƒ d {V —†}|j        �+|j        €$|j        €|d         |                     d¦  «        fn9t          |t          d||d         |                     d¦  «        |¦  «        ¦  «        \  }}t          |                      |¦  «        ƒ d {V —†¦  «         |                      |¦  «        ƒ d {V —†}|j        s|                      |¦  «        ƒ d {V —† t          |                      |¦  «        ƒ d {V —†¦  «          |¦   «         st          dd¦  «        ‚d|i}	|j        €|j        �|	                     ||¬¦  «         |j        �#|j        dvrt          d	d
¦  «        ‚|j        |	d<   |                      d|	¦  «        ƒ d {V —† |                      |¦  «        ƒ d {V —†}| j                             |i ¦  «                             |d         |                     d¦  «        ¬¦  «         t          d||d         |                     d¦  «        |¦  «        }
|                      |¦  «        ƒ d {V —†j        r|                      |¦  «        ƒ d {V —†nt#          d g d¬¦  «        |
d<   |
cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )Nrµ   r¶   r   zsettings request cancelledr–  r|   r´   r-  r.  r/  r  r0  r©  rª  r*  )r9   r   r
  r§  r6  r*  rµ   r¶   r?   r   r   r1   r’  r   rÕ   r^   rÔ   r(  )rE   rá   ré   r®  r%  r>  rµ   r¶   r  re   r«  s              rH   Úupdate_settingszCodexAdapter.update_settings%  s~  è è € Ø”?ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	Ý˜D×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ñ9Ô9Ð9Ø ×/Ò/°
Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;ˆGØ×+Ò+Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-ˆFØEJÔEVÐEbÐglÔgrÐgzð  @Eô  @Lð  @T˜' 'Ô*¨7¯;ª;°xÑ+@Ô+@ÐAÐAõ  Zkð  lqõ  rð  @Gð  HRð  SZð  [bô  Scð  dk÷  doò  doð  pxñ  dyô  dyð  z@ñ  rAô  rAñ  ZBô  ZB‰LˆE�&Ý˜D×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ñ9Ô9Ð9Ø ×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆGØ”<ð /Ø—l’l :Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ý˜D×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ñ9Ô9Ð9Ø�;‘=”=ÐW­Ð5QÐSVÑ(WÔ(WÐ"WØ˜zÐ*ˆFØŒ{Ð&¨%¬,Ð*BÀ6Ç=Â=ÐW\ÐdjÀ=ÑCkÔCkÐCkØÔ Ð,ØÔ$Ð,BÐBÐBÍÐVsÐtwÑIxÔIxÐCxØ,1Ô,=�Ð*Ñ+Ø—)’)Ð4°VÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ø ×/Ò/°
Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;ˆGØŒI× Ò  ¨RÑ0Ô0×7Ò7¸gÀgÔ>NÐW^×WbÒWbÐckÑWlÔWlÐ7ÑmÔmÐmÝ˜w z°'¸'Ô2BÀ7Ç;Â;ÈxÑCXÔCXÐY_Ñ`Ô`ˆDØMQ×M]ÒM]Ð^hÑMiÔMiÐGiÐGiÐGiÐGiÐGiÐGiÔFoð  !L d×&6Ò&6°zÑ&BÔ&BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÕuyð  CGð  XZð  bKð  vLñ  vLô  vLˆD�ÑØð+	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   �KK'Ë'
K1Ë4K1c              ƒ  óÂ   K  — |                       ¦   «          t          j        t          | j        ¦  «        ddiŽƒ d {V —† | j                             ¦   «         ƒ d {V —† d S )NÚreturn_exceptionsT)rC   r3   ÚgatherrÙ   r-   rD   Úclosera   s    rH   r´  zCodexAdapter.close=  st   è è € Ø×ÒÑÔÐÝŒn�d 4Ô#6Ñ7Ô7ÐPÈ4ÐPÐPÐPÐPÐPÐPÐPÐPÐPØŒh�nŠnÑÔÐÐÐÐÐÐÐÐÐrJ   )NNN)rŽ   )r½   )r;  r   rd   )%rÏ   Ú
__module__Ú__qualname__Ú
agent_typerz  re  rd  ry  rI   rC   rb   r^   r`   rw   rt   rB   ÚstaticmethodrØ   rÑ   rÐ   r*  r?  rS  rm  rt  r  r…  r
  r�  r’  r”  r˜  r6  r§  r¬  r°  r´  ro   rJ   rH   r   r      s+  € € € € € Ø€JØÐØÐØÐØÐðgð gð gð gð>"ð "ð "ð(
+ð 
+ð 
+ð3ð 3ð 3ðð ð ð	Bð 	Bð 	Bð.ð .ð .ðo1ð o1ð o1ðb ð	Xð 	Xñ „\ð	Xð,<ð ,<ð ,<ð\4ð 4ð 4ð 	Hð 	Hð 	HðZð Zð Zð&ð ð ð ð<(ð (ð (ð (ð8ð ð ð<ð ð ð* ð  ð  ð  ðLð Lð Lð*.ð .ð .ð ð  ð  ð2ð 2ð 2ðGð Gð Gð
ð 
ð 
ð 
ðWð Wð Wðð ð ð GSÀlð ð ð ð ð ð0ð ð ð ð rJ   r   )%Ú
__future__r   r3   r  r=   r  ri   r7  Úcollectionsr   Úuuidr   r   r   Úpathlibr   Údevice_gateway.integrations.pir	   r
   Údevice_gateway.display_textr   Úcodex_quotar   r   r   r   r>  r   r   r   rD   r   r<  r   r   r   r   ro   rJ   rH   ú<module>rÀ     sv  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð à HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 9Ð 9Ð 9Ð 9Ð 9Ð 9à OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aðið ið ið ið iñ iô ið ið ið irJ   