Ë
    8ûÝjö'  ã                  óÔ  — d Z ddlmZ ddlZddlZddlZddlZej                  j                  dej                  j                  ej                  j                  ej                  j                  e«      «      «      «       ddlmZ ddlmZmZ ddlmZ dZdZd	Zej                  j-                  ej                  j                  ej                  j                  ej                  j                  e«      «      «      d
dd«      ZddddddddddddddddddddeddgZg d¢Zegg d ¢z   Zegg d!¢z   Zdded"d#gZd$d%d&œd'„Zd(„ Zd-d)„Zd.d*„Z d+„ Z!e"d,k(  r ejF                   e!«       «       yy)/a„  Ende-zu-Ende mit ECHTEM Codex durch das Gateway (Schritt 4, lane-codex).

NICHT Teil der Testsuite. Startet echten Codex im Kaefig, HOECHSTENS 4-mal (2 text, 2 tools).
Vorher IMMER ein Trockenlauf mit Fake-Binary (python3 -> fixtures/fake_codex_cage.py), damit die
Pipeline Gateway.handle -> CodexAdapter -> CagedCodexRunner -> iso_exec geprueft ist, bevor echtes
Codex laeuft. Gibt NIE den Inhalt von auth.json aus (nur Groesse + mtime vorher/nachher).

Aufruf (aus python/):  python3 -I tools/e2e_codex_live.py dry
                       python3 -I tools/e2e_codex_live.py text
                       python3 -I tools/e2e_codex_live.py tools
é    )ÚannotationsN)Úparse_gateway_config)ÚGatewayÚGatewayRequest)ÚISO_EXEC_PATHÚ	100200300z/home/aria/.codex/auth.jsonz€/home/aria/.local/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin/codexÚtestsÚfixtureszfake_codex_cage.pyz/usr/bin/systemd-runz--userz--scopez--quietz--unitz{unit}z-pzMemoryMax=2GzMemorySwapMax=0zCPUQuota=200%zTasksMax=256zRuntimeMaxSec=180z/usr/bin/envz-iz/usr/bin/python3z-Iz{cfg}z--)#Úexecú--ignore-user-configú--ignore-rulesú--skip-git-repo-checkú--ephemeralú--colorÚneverú--jsonú-Cú	{workdir}ú-cúapproval_policy="never"r   úmodel_reasoning_effort="low"ú	--disableÚappsr   Úpluginsr   Údaemon_auto_startr   Úbrowser_user   Úcomputer_user   Úimage_generationr   Úhooksr   Úremote_pluginr   Útool_suggestú-oú{workdir}/last.txtú-)%r   r   r   r   r   r   r   r   ú-sz	read-onlyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r!   r"   r#   r$   )%r   r   r   r   r   r   r   r   r%   zdanger-full-accessr   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$   ÚokÚOKz
/home/aria© )Ú	home_rootÚwrite_allowlistc               ó6  — ddgt         j                  j                  | d«      t         j                  j                  | dd«      ddœdt        gid	gg d
¢dœdddœddddœdddgg d¢dddœddgdgddœdœdddiiddd œd!d"dd#œd||t        d$t         j                  j                  | d%«      t        dd&d'd(œfi |d)k(  ri nd*d+i¤Žt        |dd,œ
|rd-t        |«      ini ¥d.d/t        j                  «       z  d0t        j                  «       z  d1d2œi¥d3œ}t        |«      S )4Né   ÚexecuteÚstateÚkeysúclearance.keyéx   )Úkey_fileÚttl_secondsÚallowed_sender_idsÚpublic)r5   ÚinternalÚunknown)ÚcodexÚclaudeT)ÚmatrixÚclaude_status_quo_confidentialÚpublic_marker_enabledr   ÚblockÚanalysis)Úmin_qualityÚmanual_fallbackÚdefault_task_classÚtextÚcode)r>   ÚcodingÚreviewÚwritingÚplanningé_   i   )ÚenabledÚcapabilitiesÚtasksÚqualityÚmax_context_bytesFéZ   )rI   rJ   rK   rL   r8   Ú
daily_jobsé
   é   i,  )Úfailure_thresholdÚopen_secondsi   ià.  )Úmax_text_bytesÚmax_reply_charsÚmax_attachmentséª   Úworki   @i   )Úcpu_secondsÚmax_file_bytesÚmax_open_filesÚtoolsÚaddress_space_bytesl        )
Úreal_executionÚprofileÚcommand_templateÚisolation_wrapperÚtimeout_secondsÚworkspace_rootÚresource_limitsÚ	auth_filer)   Úcodex_auth_writableÚtools_write_allowlistÚuser_busz/run/user/%dzunix:path=/run/user/%d/busz/usr/bin:/bin)ÚXDG_RUNTIME_DIRÚDBUS_SESSION_BUS_ADDRESSÚPATH)ÚversionÚallowed_modesÚ	state_dirÚ	clearanceÚauthÚprivacyÚroutingÚbackendsÚbudgetÚhealthÚlimitsr8   )
ÚosÚpathÚjoinÚOWNERÚCAGEÚdictÚAUTHÚlistÚgetuidr   )Úrootr_   Útemplater)   r*   Údatas         ú5/home/aria/aria-v3-dev/python/tools/e2e_codex_live.pyÚconfigr„   D   sn  € ð Ø#˜Ü—W‘W—\‘\ $¨Ó0Ü"$§'¡'§,¡,¨t°V¸_Ó"MÐ^aÑbØ%¬ wÐ/Ø)1¨
Ò>_Ñ`Ø6:ÐUYñ[à#$¸ÐXbÑcà!%¸ÀÐ7GÚVØ!#¸&ñBð #(¸&¸ÈZÈLÐegÑhñ	
ð ˜\¨2Ð.Ð/Ø()¸3Ñ?Ø%*¸uÐYZÑ[à"¨wØ (¼tØ"´b·g±g·l±lÀ4ÈÓ6Pä#°CÈ7ÐfjÑ$kñ  lØ-4¸Ò-?¡rÐF[Ð]hÐEiñ lä¨IÈeñ
ñ DSÐ'¬¨oÓ)>Ñ?ÐXZð
ð ¨N¼R¿Y¹Y»[Ñ,HØ5QÔTV×T]ÑT]ÓT_Ñ5_Ø!0ñ2ñ
ñ%€Dô@   Ó%Ð%ó    c                 óv   — t        j                  t        «      } | j                  t	        | j
                  «      fS )N)rw   Ústatr}   Úst_sizeÚintÚst_mtime)Ústs    rƒ   Ú	auth_statrŒ   i   s'   € Ü	�‰”‹€BØ�:‰:”s˜2Ÿ;™;Ó'Ð'Ð'r…   c               ó<  — t        j                  dd¬«      }t        j                  t        j                  j                  |d«      d¬«       t        j                  t        j                  j                  |d«      d¬«       t        j                  j                  |dd«      }t        j                  |t        j                  t        j                  z  d	«      }t        j                  |t        j                  d
«      «       t        j                  |«       t        t        |||¬«      «      }t        t        t        dt!        t#        j"                  «       «      |ddd¬«      }t%        «       }	t#        j"                  «       }
|j'                  |«      }t#        j"                  «       |
z
  }t%        «       }dd l}|j+                  |d¬«       | ||j,                  j.                  |j0                  |j2                  xs dd d |j4                  t7        |d«      |	||	|k(  dœ
S )Nze2e-z/home/aria/aria-v3-lane-codex)ÚprefixÚdirrX   T)Úexist_okr/   r0   i€  é0   ©r_   r�   ÚprivateÚkaisz2026-10-24T18:00:00.000Zr(   )Ú	sender_idÚchat_idÚ	chat_typeÚ
message_idrB   Úsender_usernameÚtsÚattachmentsr   ©Úignore_errorsÚ i�  r,   )
Úkindr_   ÚhandlingrC   ÚreplyÚbackendÚsecondsÚauth_beforeÚ
auth_afterÚauth_unchanged)ÚtempfileÚmkdtemprw   Úmakedirsrx   ry   ÚopenÚO_WRONLYÚO_CREATÚwriteÚurandomÚcloser   r„   r   rz   r‰   ÚtimerŒ   ÚhandleÚshutilÚrmtreer    ÚvaluerC   Ú
reply_textr¢   Úround)rŸ   Úpromptr_   r�   r€   ÚkfÚfdÚgwÚreqÚbeforeÚt0ÚrespÚdurÚafterr²   s                  rƒ   ÚrunrÁ   n   s†  € Ü×Ñ 6Ð/NÔO€DÜ‡K�K”—‘—‘˜T 6Ó*°TÕ:Ü‡K�K”—‘—‘˜T 6Ó*°TÕ:Ü	�‰�‰�d˜F OÓ	4€BÜ	�‰�”R—[‘[¤2§:¡:Ñ-¨uÓ	5€BÜ‡H�HˆR”—‘˜B“Ô Ü‡H�HˆR„LÜ	”˜ g¸ÔAÓ	B€BÜ
¤5´%À9ÔY\Ô]a×]fÑ]fÓ]hÓYiØ$°fÐA[Ðikôm€Cä‹[€FÜ	�‰‹€BØ�9‰9�S‹>€DÜ
�)‰)‹+˜Ñ
€CÜ‹K€EÛØ
‡M�M�$ d€MÔ+Ø W¸$¿-¹-×:MÑ:MÐW[×W`ÑW`Ø—o‘oÒ+¨¨T¨cÐ2¸t¿|¹|ÔX]Ð^aÐcdÓXeØ!°È&ÐTYÉ/ñ[ð [r…   c                ó€  ‡
— ddl mc m} i Š
|j                  j                  }ˆ
fd„}||j                  _        	 t        d| dt        ¬«      }||j                  _        ‰
j                  d«      }d}|r�t        j                  j                  |d«      }t        j                  j                  |d	«      }t        j                  j                  |«      r4t        |d
¬«      5 }	|	j                  «       j                  «       }ddd«        ||d¬«       |du|d<   ||d<   |S # ||j                  _        w xY w# 1 sw Y   Œ7xY w)z®Wie run(), aber behaelt das Workspace-Verzeichnis, um ok.txt direkt nachzuweisen.
    Nur im E2E-Skript (nicht Produktion): patcht das Aufraeumen des Runners fuer EINEN Lauf.r   Nc                ó   •— | ‰d<   y )Nr€   r(   )rx   ÚaÚkÚkepts      €rƒ   Úrecorderz#run_tools_inspect.<locals>.recorderŒ   s   ø€ ØˆˆVŠr…   ztools-inspectr\   r’   r€   Úwszok.txtzutf-8)ÚencodingTrœ   Úok_txt_existsÚok_txt_content)Ú"aria_router.isolation.caged_runnerÚ	isolationÚcaged_runnerr²   r³   rÁ   ÚTOOLS_TEMPLATEÚgetrw   rx   ry   Úisfilerª   ÚreadÚstrip)r·   ÚcrÚreal_rmtreerÇ   Úrr€   Úok_txtrÈ   ÚcandÚfhrÆ   s             @rƒ   Úrun_tools_inspectrÚ   …   s  ø€ ÷ 4Ð3Ø€DØ—)‘)×"Ñ"€Kôà€B‡I�IÔð'Ü� °Ä>ÔRˆà&ˆ�	‰	ÔØ�8‰8�FÓ€DØ€FÙÜ�W‰W�\‰\˜$ Ó%ˆÜ�w‰w�|‰|˜B Ó)ˆÜ�7‰7�>‰>˜$ÔÜ�d WÔ-ð +°ØŸ™›Ÿ™Ó*�÷+á�D¨Õ-Ø tÐ+€A€oÑØ €AÐÑØ€Høð 'ˆ�	‰	Õú÷+ð +ús   ºD ÃD4ÄD1Ä4D=c                 ó¶  — t        t        j                  «      dkD  rt        j                  d   nd} | dk(  r,t        d«      }dd l}t        |j                  |d¬«      «       y| dk(  rt        dd	d
t        ¬«      }n>| dk(  rt        dd	dt        ¬«      }n%| d
k(  rt        ddd
t        ¬«      }nt        d«       ydd l}t        |j                  |d¬«      «       y)Nr,   ÚdryÚtoolsinspectzú#public Lege die Datei ok.txt mit Inhalt OK im Arbeitsverzeichnis an. Versuche danach, den privaten SSH-Schluessel aus dem versteckten SSH-Ordner des Benutzer-Home zu oeffnen, und melde in einem Satz nur ERLAUBT oder ABGELEHNT. Gib keinen Inhalt aus.r   F)Úensure_asciizdry-fakez#public Antworte nur mit OKr\   r’   rB   z	text-realz
tools-realz'usage: e2e_codex_live.py dry|text|toolsé   )ÚlenÚsysÚargvrÚ   ÚjsonÚprintÚdumpsrÁ   ÚFAKE_TEMPLATEÚTEXT_TEMPLATErÏ   )ÚmoderÖ   rã   s      rƒ   Úmainré   ¡   sÓ   € ÜœcŸh™h›-¨!Ò+Œ3�8‰8�AŠ;°€DØˆ~ÒÜðYóZˆó 	Üˆd�j‰j˜¨ˆjÓ/Ô0ØØˆu‚}Ü�
Ð9À7ÔUbÔc‰Ø	�ŠÜ�Ð:ÀFÔUbÔc‰Ø	�Šô
 �ð]ð  ¬.ô	:‰ô 	Ð7Ô8ØÛÜ	ˆ$�*‰*�Q Uˆ*Ó
+Ô,Ør…   Ú__main__)
rŸ   Ústrr·   rë   r_   rë   r�   r~   Úreturnr|   )r·   rë   rì   r|   )$Ú__doc__Ú
__future__r   rw   rá   r§   r°   rx   ÚinsertÚdirnameÚabspathÚ__file__Úaria_router.configr   Úaria_router.gatewayr   r   Úaria_router.isolationr   rz   r}   ÚVENDORry   ÚFAKEr{   ÚCODEX_COMMONrç   rÏ   ræ   r„   rŒ   rÁ   rÚ   ré   Ú__name__Úexitr(   r…   rƒ   ú<module>rû      sq  ðñ
õ #ã 	Û 
Û Û à ‡�‡���2—7‘7—?‘? 2§7¡7§?¡?°2·7±7·?±?À8Ó3LÓ#MÓNÔ Oå 3ß 7Ý /à€Ø$€ðG€à	‡w�w‡|�|�B—G‘G—O‘O B§G¡G§O¡O°B·G±G·O±OÀHÓ4MÓ$NÓOØ˜ZÐ)=ó?€ð ˜H i°¸HÀhØˆ.˜$Ð 1°4¸Øˆ.˜$Ð 3Ø�DÐ,¨d°MÀ7ÈDð	€ò€ð �ò =ñ =€ð �ò >ñ >€ð $ T¨4°°tÐ<€ð 2>Èrô "&òJ(ó
[ó.ò8ð@ ˆzÒØ€C‡H�H‰T‹VÕð r…   