Ë
    $>Ýjó  ã                  ó  — d Z ddlmZ ddlZddlZddlmZmZmZ ddl	m
Z
mZmZmZmZmZ ddlmZmZ ddlmZmZ dd	lmZmZmZmZmZmZmZ d
ZdZ ej@                  d«      Z! e"h d£«      Z#ddddœ	 	 	 	 	 dd„Z$dd„Z% G d„ de«      Z&y)ut  Codex-Adapter (Schnittstelle aus Phase D).

AusfÃ¼hrung Ã¼ber ein austauschbares IsolatedRunner-Objekt. Default ist der
MockRunner; der echte SubprocessRunner wird nur gewÃ¤hlt, wenn die
Konfiguration codex.real_execution=true setzt UND ein Isolations-Wrapper
konfiguriert ist (config.py).

Das Befehls-Template kommt aus der Konfiguration und wird beim Laden, beim
Erzeugen des Adapters und unmittelbar vor jedem Lauf geprÃ¼ft:
danger-full-access, --dangerously-bypass-approvals-and-sandbox und --yolo
werden hart abgelehnt; erlaubt ist nur der Platzhalter {workdir}; der Prompt
geht nie in die Argumente, sondern Ã¼ber stdin.
é    )ÚannotationsN)ÚMappingÚOptionalÚSequenceé   )ÚAdapterInputErrorÚ
AdapterJobÚAdapterResultÚBackendAdapterÚOutboundÚResultStatus)ÚContextEnvelopeÚ
sha256_hex)ÚMAX_OUTPUT_BYTESÚdecode_events)ÚIsolatedRunnerÚ	RunResultÚRunSpecÚUnsafeCommandErrorÚassert_safe_argvÚattachment_file_nameÚvalidate_env)
z/usr/bin/codexÚexecz	--sandboxz	read-onlyz--skip-git-repo-checkz--ephemeralz--jsonz-Cú	{workdir}ú-i   z
\{[^{}]*\}>   ú{cfg}ú{unit}r   F©Úallow_bypass_sandboxÚrequire_cagec               óô  — t        | t        t        f«      rt        |t        t        f«      st        d«      ‚| st        d«      ‚t        |«      t        | «      z   }t	        ||¬«       t        | d   t
        «      r"t        j                  j                  | d   «      st        d«      ‚|D ]/  }t        j                  |«      D ]  }|t        vsŒt        d«      ‚ Œ1 |rddlm}  ||«      st        d«      ‚|S )	NÚINVALID_COMMAND©r   r   ÚCOMMAND_NOT_ABSOLUTEÚUNKNOWN_PLACEHOLDERr   )Úwrapper_is_tools_cageÚTOOLS_PROFILE_REQUIRES_CAGE)Ú
isinstanceÚlistÚtupler   r   ÚstrÚosÚpathÚisabsÚ_PLACEHOLDERÚfindallÚALLOWED_PLACEHOLDERSÚisolation.caged_runnerr&   )ÚtemplateÚwrapperr   r    ÚfullÚargÚplaceholderr&   s           ú:/home/aria/aria-v3-dev/python/aria_router/codex_adapter.pyÚvalidate_command_templater9   '   sè   € ô �h¤¤u Ô.´jÀÌ4ÔQVÈ-Ô6XÜ Ð!2Ó3Ð3ÙÜ Ð!2Ó3Ð3Ü�‹>œE (›OÑ+€DÜ�TÐ0DÕEÜ�h˜q‘k¤3Ô'¬r¯w©w¯}©}¸XÀa¹[Ô/IÜ Ð!7Ó8Ð8Øò @ˆÜ'×/Ñ/°Ó4ò 	@ˆKØÔ"6Ò6Ü(Ð)>Ó?Ð?ñ	@ð@ñ åAÙ$ TÔ*Ü$Ð%BÓCÐCØ€Kó    c                óL  — | j                   g}| j                  rM|j                  d«       | j                  D ]-  }|j                  d|j                  › d|j                  › �«       Œ/ |r,|j                  d«       |D ]  }|j                  d|› �«       Œ dj                  |«      S )Nz$

[Aria-Kontext: Memory-Ausschnitte]z
- (z) u"   

[AnhÃ¤nge im Arbeitsverzeichnis]z
- attachments/Ú )ÚpromptÚmemoryÚappendÚsourceÚtextÚjoin)ÚenvelopeÚstaged_namesÚpartsÚsnippetÚnames        r8   Úrender_promptrH   >   sš   € Ø�_‰_Ð€EØ‡‚Ø�‰Ð=Ô>Ø—‘ò 	CˆGØ�L‰L˜5 §¡Ð 0°°7·<±<°.ÐAÕBð	CáØ�‰Ð;Ô<Ø ò 	4ˆDØ�L‰LÐ+¨D¨6Ð2Õ3ð	4à�7‰7�5‹>Ðr:   c                  ó‚   ‡ — e Zd ZdZdZeddedddœ	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zedd„«       Z	edd	„«       Z
dd
„Zdd„Zˆ xZS )ÚCodexAdapterÚcodexT© NF)Úcommand_templateÚisolation_wrapperÚenvÚmax_output_bytesÚallow_sandbox_bypassÚrequire_output_filec               ó@  •— t         ‰	| �  |«       t        |t        «      st	        d«      ‚t        |«      | _        t        |«      | _        t        ||| j                  | j                  ¬«      | _	        t        t        |xs i «      «      | _        || _        || _        y )NzIsolatedRunner requiredr   )ÚsuperÚ__init__r(   r   Ú	TypeErrorÚboolÚ_allow_bypassÚ_require_output_filer9   Ú_argvr   ÚdictÚ_envÚ_runnerÚ_max_output)
ÚselfÚverifierÚrunnerrM   rN   rO   rP   rQ   rR   Ú	__class__s
            €r8   rU   zCodexAdapter.__init__O   sŽ   ø€ ô
 	‰Ñ˜Ô"Ü˜&¤.Ô1ÜÐ5Ó6Ð6Ü!Ð"6Ó7ˆÔÜ$(Ð)<Ó$=ˆÔ!Ü.Ð/?ÐARØDH×DVÑDVØ<@×<NÑ<NôPˆŒ
ô !¤ c¢i¨R£Ó1ˆŒ	ØˆŒØ+ˆÕr:   c                ó   — | j                   S ©N)rZ   ©r_   s    r8   ÚargvzCodexAdapter.argv`   s   € à�z‰zÐr:   c                ó   — | j                   S rd   )r]   re   s    r8   ra   zCodexAdapter.runnerd   s   € à�|‰|Ðr:   c                óè  — |j                   }g }t        |j                  d«      D ][  \  }}|j                  €t	        d«      ‚|j                  t        ||j                  xs |j                  «      |j                  f«       Œ] t        ||D ��cg c]  \  }}|‘Œ	 c}}«      }|j                  «       st	        d«      ‚|j                  d«      }	t        |	«      t        kD  rt	        d«      ‚|j                  «       t        |	«      |D �
�cg c]  \  }
}|
t        |«      t        |«      dœ‘Œ c}}
t!        | j"                  «      dœ}t%        | j                  ||	t'        |«      f¬«      S c c}}w c c}}
w )	Nr   ÚATTACHMENT_CONTENT_MISSINGÚEMPTY_PROMPTúutf-8ÚPROMPT_LIMIT)rG   Úsha256Úsize)ÚcontextÚstdin_sha256Úfilesrf   )Úpayload)rC   Ú	enumerateÚattachmentsÚdatar   r?   r   rG   ÚkindrH   ÚstripÚencodeÚlenÚMAX_PROMPT_BYTESÚcanonical_dictr   r)   rZ   r   r*   )r_   ÚjobrC   rq   ÚindexÚ
attachmentrG   Ú_rA   ÚstdinÚnÚdÚtransmitteds                r8   Ú_preparezCodexAdapter._prepareh   s@  € Ø—<‘<ˆØˆÜ!*¨8×+?Ñ+?ÀÓ!Cò 	mÑˆE�:Ø�‰Ð&Ü'Ð(DÓEÐEØ�L‰LÔ.¨u°j·o±oÒ6XÈÏÉÓYÐ[e×[jÑ[jÐkÕlð	mô ˜X¸E×'B±°°qªÓ'BÓCˆØ�z‰zŒ|Ü# NÓ3Ð3Ø—‘˜GÓ$ˆÜˆu‹:Ô(Ò(Ü# NÓ3Ð3à×.Ñ.Ó0Ü& uÓ-ØW\×]ÉtÈqÐRS˜q¬J°q«MÄ3ÀqÃ6ÓJÓ]Ü˜Ÿ™Ó$ñ	
ˆô ˜Ÿ	™	 ;¸ÄÀeÃÐ8MÔNÐNùó (Cùó ^s   ÂE(Ä	"E.
c                óÐ  — |j                   \  }}	 t        | j                  | j                  ¬«       t        | j                  |t        | j                  «      |j                  j                  | j                   |¬«      }| j"                  j%                  |«      }t'        |t(        «      s1t        |j                  | j                  t        j*                  d¬«      S |j,                  sE|j.                  xs d}	t        |j                  | j                  t        j*                  |	|	dk(  ¬«      S t1        |j2                  | j                  ¬«      }
|
j4                  s;t        |j                  | j                  t        j*                  |
j.                  ¬«      S |
j6                  }| j8                  r»|j:                  r*|j:                  j=                  d	d
«      j?                  «       nd}|
j@                  j?                  «       }|s1t        |j                  | j                  t        j*                  d¬«      S ||k7  r1t        |j                  | j                  t        j*                  d¬«      S t        |j                  | j                  t        jB                  |¬«      S # t        $ rE}t        |j                  | j                  t        j                  |j                  ¬«      cY d }~S d }~ww xY w)Nr#   )Ú
error_code)rf   r€   rO   Útimeout_secondsrP   rq   ÚINVALID_RUNNER_RESULTÚ
RUN_FAILEDÚTIMEOUT)r†   Ú	timed_out)Úallow_toolsrk   Úreplacer<   ÚOUTPUT_FILE_MISSINGÚOUTPUT_MISMATCH)Úoutput)"rr   r   rZ   rX   r   r
   Újob_idrG   r   ÚBLOCKEDÚcoder   r[   r\   Úpolicyr‡   r^   r]   Úrunr(   r   ÚFAILEDÚokr†   r   ÚstdoutÚsuccessr�   rY   ÚartifactÚdecoderw   Úlast_messageÚSUCCESS)r_   Úoutboundr|   Ú	clearancer€   rq   ÚexcÚspecÚresultr“   Úoutcomer�   ÚlastÚexpecteds                 r8   Ú	_transmitzCodexAdapter._transmit}   s!  € Ø×'Ñ'‰ˆˆuð	cä˜TŸZ™Z¸d×>PÑ>PÕQô Ø—‘ 5¬d°4·9±9«oØŸJ™J×6Ñ6È×IYÑIYÐafô
ˆð —‘×!Ñ! $Ó'ˆÜ˜&¤)Ô,Ü  §¡¨T¯Y©Y¼×8KÑ8KÐXoÔpÐpØ�yŠyØ×$Ñ$Ò4¨ˆDÜ  §¡¨T¯Y©Y¼×8KÑ8KÐX\Ø+/°9Ñ+<ô>ð >ô   §¡¸4×;MÑ;MÔNˆØ�ŠÜ  §¡¨T¯Y©Y¼×8KÑ8KÐX_×XjÑXjÔkÐkØ—‘ˆØ×$Ò$ð JPÏÊ�6—?‘?×)Ñ)¨'°9Ó=×CÑCÔEÐ^`ˆDØ×+Ñ+×1Ñ1Ó3ˆHÙÜ$ S§Z¡Z°·±¼L×<OÑ<OÐ\qÔrÐrØ�xÒÜ$ S§Z¡Z°·±¼L×<OÑ<OÐ\mÔnÐnÜ˜SŸZ™Z¨¯©´L×4HÑ4HÐQWÔXÐXøô9 "ò 	cÜ  §¡¨T¯Y©Y¼×8LÑ8LÐY\×YaÑYaÔbÕbûð	cús   ‘!J Ê	K%Ê :K ËK%Ë K%)ra   r   rM   úSequence[str]rN   r§   rO   zOptional[Mapping[str, str]]rP   ÚintrQ   rW   rR   rW   )Úreturnútuple[str, ...])r©   r   )r|   r	   r©   r   )rž   r   r|   r	   r©   r
   )Ú__name__Ú
__module__Ú__qualname__rG   Úaccepts_memoryÚDEFAULT_COMMAND_TEMPLATEr   rU   Úpropertyrf   ra   r„   r¦   Ú__classcell__)rb   s   @r8   rJ   rJ   K   s“   ø„ Ø€DØ€Nð 4LØ46Ð[_Ø)9Ø.3ÐQVñ	,Ø#0ð,à$1ð,à=Xð,ð $'ð,ð (,ð	,ð KOõ	,ð" òó ðð òó ðóO÷*!Yr:   rJ   )rL   )
r3   r§   r4   r§   r   rW   r    rW   r©   rª   )rC   r   rD   r§   r©   r+   )'Ú__doc__Ú
__future__r   r,   ÚreÚtypingr   r   r   Úadapter_contractr   r	   r
   r   r   r   ro   r   r   Úhardened_codexr   r   ra   r   r   r   r   r   r   r   r¯   rz   Úcompiler/   Ú	frozensetr1   r9   rH   rJ   rL   r:   r8   ú<module>rº      s¥   ðñõ #ã 	Û 	ß .Ñ .÷÷ ÷ 1ß ;÷÷ ñ ð
Ð ð Ð Øˆr�z‰z˜-Ó(€Ù Ò!AÓBÐ ðØ;@Ø38ñØ48ðà,0ðà=Lóó.
ôSY�>õ SYr:   