Ë
    ªÞjÁ\  ã                  ób  — d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	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  ed
dh«      Z eh d£«      Z eh d£«      Z eddh«      ZdZ ej6                  d«      Z G d„ de«      Z ed¬«       G d„ d«      «       Z	 d=	 	 	 	 	 d>d„Z  ed¬«       G d„ d«      «       Z! ed¬«       G d„ d«      «       Z" ed¬«       G d„ d«      «       Z# ed¬«       G d„ d «      «       Z$ ed¬«       G d!„ d"«      «       Z% ed¬«       G d#„ d$«      «       Z& ed¬«       G d%„ d&«      «       Z' ed¬«       G d'„ d(«      «       Z( ed¬«       G d)„ d*«      «       Z) e«       fd?d+„Z*d@d,„Z+dAd-„Z,dBd.„Z-d/d0d1œdCd2„Z.dDd3„Z/dEd4„Z0dFd5„Z1dGd6„Z2dd7œdHd8„Z3h d9£Z4dd:œdId;„Z5dJd<„Z6y)Ku7  Konfiguration.

1. validate_config(backends): Validierung von Backend-Objekten (Altvertrag).
2. load_gateway_config(path): strikt validierte JSON-Konfigurationsdatei des
   Gateways. Unbekannte SchlÃ¼ssel, falsche Typen oder unsichere Werte fÃ¼hren
   zu ConfigurationError (fail-closed, kein stiller Default).
é    )ÚannotationsN)Ú	dataclassÚfield)ÚPath)ÚAnyÚMappingÚOptionalé   )ÚBudgetLimit)ÚBackendÚPrivacyMatrixÚPrivacyTierÚcodexÚclaude>   ÚcodeÚtextÚfilesÚvision>   ÚcodingÚreviewr   ÚwritingÚanalysisÚplanningÚshadowÚexecuteé   z^-?\d{1,20}$c                  ó   — e Zd Zy)ÚConfigurationErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ú//home/aria/aria-v3/python/aria_router/config.pyr   r   !   s   „ Ør#   r   T)Úfrozenc                  ó"   — e Zd ZU ded<   ded<   y)ÚValidatedConfigÚintÚversionztuple[Backend, ...]ÚbackendsN©r   r    r!   Ú__annotations__r"   r#   r$   r'   r'   %   s   … àƒLØ!Ô!r#   r'   c                óp  — t        |«      t        us|dk7  rt        d«      ‚| st        d«      ‚t        «       }| D �]ä  }|j                  t
        vrt        d«      ‚|j                  |v rt        d«      ‚|j                  |j                  «       t        |j                  t        «      r;t        |j                  t        «      s!d|j                  cxk  rdk  st        d«      ‚ t        d«      ‚|j                  j                  t        «      st        d	«      ‚|j                  j                  t        «      st        d
«      ‚t        |j                  «      t        urt        d«      ‚t        |j                   «      t        urt        d«      ‚|j"                  �5t        |j"                  «      t        us|j"                  dk  rt        d«      ‚|j$                  D ]@  \  }}|t        vs)t        |«      t        usd|cxk  rdk  rŒ+t        d«      ‚ t        d«      ‚ �Œç t'        |t)        | «      «      S )Nr
   zUnsupported versionzNo backends configuredzUnknown backendzDuplicate backendr   éd   zInvalid quality scorezUnknown capabilityzUnknown taskzInvalid availabilityzInvalid budget flagzInvalid context limitzInvalid task quality)Útyper(   r   ÚsetÚnameÚALLOWED_BACKENDSÚaddÚ
isinstanceÚquality_scoreÚboolÚcapabilitiesÚissubsetÚALLOWED_CAPABILITIESÚsupported_tasksÚALLOWED_TASKSÚ	availableÚbudget_allowedÚmax_context_bytesÚtask_qualityr'   Útuple)r*   r)   ÚnamesÚbackendÚtaskÚscores         r$   Úvalidate_configrE   +   s	  € ô
 ˆGƒ}œCÑ 7¨a¢<Ü Ð!6Ó7Ð7áÜ Ð!9Ó:Ð:ä‹E€Eàó $AˆØ�<‰<Ô/Ñ/Ü$Ð%6Ó7Ð7à�<‰<˜5Ñ Ü$Ð%8Ó9Ð9à�	‰	�'—,‘,Ôä˜'×/Ñ/´Ô5Ü˜g×3Ñ3´TÔ:Ø˜G×1Ñ1Ô8°SÒ8Ü$Ð%<Ó=Ð=ð 9Ü$Ð%<Ó=Ð=à×#Ñ#×,Ñ,Ü ô
ô %Ð%9Ó:Ð:à×&Ñ&×/Ñ/Üô
ô % ^Ó4Ð4ä�×!Ñ!Ó"¬$Ñ.Ü$Ð%;Ó<Ð<ä�×&Ñ&Ó'¬tÑ3Ü$Ð%:Ó;Ð;à×$Ñ$Ð0Ü�W×.Ñ.Ó/´sÑ:¸g×>WÑ>WÐZ[Ò>[Ü$Ð%<Ó=Ð=à"×/Ñ/ò 	A‰KˆD�%Øœ=Ñ(¬D°«K¼sÑ,BÈ!ÈuÔJ[ÐX[ÓJ[Ü(Ð)?Ó@Ð@ð K\Ü(Ð)?Ó@Ð@ò	AðE$AôL ˜7¤E¨(£OÓ4Ð4r#   c                  ó4   — e Zd ZU ded<   dZded<   dZded<   y)	ÚClearanceSettingsr   Úkey_fileéx   r(   Úttl_secondsé   Úmax_clock_skew_secondsN)r   r    r!   r,   rJ   rL   r"   r#   r$   rG   rG   e   s   … àƒNØ€K�ÓØ"#Ð˜CÔ#r#   rG   c                  ó"   — e Zd ZU ded<   ded<   y)ÚAuthSettingszOptional[frozenset[str]]Úallowed_sender_idsúOptional[Path]Útelegram_access_fileNr+   r"   r#   r$   rN   rN   l   s   … à0Ó0Ø(Ô(r#   rN   c                  óV   — e Zd ZU ded<   ded<   ded<   dZded<   dZd	ed
<   dZd	ed<   y)ÚPrivacySettingsr   Úmatrixr6   Úclaude_status_quo_confidentialÚpublic_marker_enabledFÚcodex_parity_with_clauder"   útuple[str, ...]Úextra_confidential_keywordsÚextra_internal_keywordsN)r   r    r!   r,   rW   rY   rZ   r"   r#   r$   rS   rS   r   s5   … àÓØ$(Ó(ØÓØ%*Ð˜dÓ*Ø35Ð Ó5Ø/1Ð˜_Ô1r#   rS   c                  ó8   — e Zd ZU dZded<   dZded<   dZded<   y	)
ÚRoutingSettingsr   r(   Úmin_qualityÚblockÚstrÚmanual_fallbackr   Údefault_task_classN)r   r    r!   r]   r,   r`   ra   r"   r#   r$   r\   r\   |   s!   … à€K�ÓØ"€O�SÓ"Ø(Ð˜Ô(r#   r\   c                  óT   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   y)ÚBackendSettingsr_   r1   r6   Úenabledúfrozenset[str]r7   Útasksr(   Úqualityztuple[tuple[str, int], ...]r?   zOptional[int]r>   Nr+   r"   r#   r$   rc   rc   ƒ   s)   … à
ƒIØƒMØ Ó ØÓØƒLØ-Ó-Ø$Ô$r#   rc   c                  ó*   — e Zd ZU dZded<   dZded<   y)ÚHealthSettingsé   r(   Úfailure_thresholdé,  Úopen_secondsN)r   r    r!   rk   r,   rm   r"   r#   r$   ri   ri   Ž   s   … àÐ�sÓØ€L�#Ôr#   ri   c                  ó8   — e Zd ZU dZded<   dZded<   dZded<   y)	ÚLimitSettingsé   r(   Úmax_text_byteséà.  Úmax_reply_charsr
   Úmax_attachmentsN)r   r    r!   rq   r,   rs   rt   r"   r#   r$   ro   ro   ”   s    … à€N�CÓØ €O�SÓ Ø€O�SÔr#   ro   c                  óÊ   — e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   dZded<   dZded<   dZd	ed<   dZd	ed<   dZded<   dZ	ded<   dZ
ded<   y)ÚCodexSettingsr6   Úreal_executionrX   Úcommand_templateÚisolation_wrapperr(   Útimeout_secondsÚmax_output_bytesrP   Úworkspace_rootztuple[tuple[str, str], ...]ÚenvzOptional[Any]Úresource_limitsr_   Úprlimit_pathr   ÚprofileFÚcodex_auth_writableNÚ	auth_fileÚ	home_rootr"   Úuser_busTÚtools_protect_startupÚtools_write_allowlist)r   r    r!   r,   r€   r�   r‚   rƒ   r„   r…   r†   r"   r#   r$   rv   rv   ›   s‚   … àÓØ%Ó%Ø&Ó&ØÓØÓØ"Ó"Ø	$Ó$Ø"Ó"ØÓØ€GˆSÓØ %Ð˜Ó%Ø $€Iˆ~Ó$Ø $€Iˆ~Ó$Ø,.€HÐ)Ó.Ø"&Ð˜4Ó&à-/Ð˜?Ô/r#   rv   c                  óÄ   — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   dZded<    edd¬«      Zded <   d"d!„Zy)#ÚGatewayConfigr(   r)   re   Úallowed_modesr   Ú	state_dirrG   Ú	clearancerN   ÚauthrS   Úprivacyr\   Úroutingútuple[BackendSettings, ...]r*   zMapping[str, BudgetLimit]Úbudgetri   ÚhealthÚdedupe_ttl_secondsro   Úlimitsrv   r   r   Údecision_log_retention_daysNF)ÚdefaultÚcomparerP   Úsourcec                óL   — | j                   D ]  }|j                  |k(  sŒ|c S  y ©N)r*   r1   )Úselfr1   Úsettingss      r$   rB   zGatewayConfig.backendÂ   s+   € ØŸ™ò 	 ˆHØ�}‰} Ó$Ø’ð	 ð r#   )r1   r_   ÚreturnzOptional[BackendSettings])r   r    r!   r,   r”   r   r—   rB   r"   r#   r$   rˆ   rˆ   °   so   … àƒLØ!Ó!ØƒOØ Ó Ø
ÓØÓØÓØ)Ó)Ø%Ó%ØÓØÓØÓØÓØ'(Ð Ó(Ù"¨4¸Ô?€FˆNÓ?ôr#   rˆ   c                ó  — t        | t        «      st        |› d�«      ‚t        | «      |z
  }|rt        |› dt	        |«      d   › �«      ‚t        |«      t        | «      z
  }|rt        |› dt	        |«      d   › �«      ‚| S )Nz: object expectedz: unknown key r   z: missing key )r4   r   r   r0   Úsorted)ÚdataÚwhereÚallowedÚrequiredÚunknownÚmissings         r$   Ú_keysr¥   É   sŠ   € Ü�dœGÔ$Ü  E 7Ð*;Ð!<Ó=Ð=Ü�$‹i˜'Ñ!€GÙÜ  E 7¨.¼À»ÈÑ9KÐ8LÐ!MÓNÐNÜ�(‹mœc $›iÑ'€GÙÜ  E 7¨.¼À»ÈÑ9KÐ8LÐ!MÓNÐNØ€Kr#   c                ój   — t        | «      t        us|| cxk  r|k  sn t        |› d|› d|› d�«      ‚| S )Nz
: integer z..z	 expected)r/   r(   r   )Úvaluer    ÚlowÚhighs       r$   Ú_intrª   Õ   s=   € ÜˆEƒ{œ#Ñ S¨EÔ%9°TÔ%9Ü  E 7¨*°S°E¸¸D¸6ÀÐ!KÓLÐLØ€Lr#   c                óD   — t        | «      t        urt        |› d�«      ‚| S )Nz: boolean expected)r/   r6   r   ©r§   r    s     r$   Ú_boolr­   Û   s&   € ÜˆEƒ{œ$ÑÜ  E 7Ð*<Ð!=Ó>Ð>Ø€Lr#   c                óž   — t        | t        «      r%| r#d| v st        j                  j	                  | «      st        |› d�«      ‚t        | «      S )Nú z: absolute path expected)r4   r_   ÚosÚpathÚisabsr   r   r¬   s     r$   Ú	_abs_pathr³   á   sA   € Ü�eœSÔ!©°&¸E±/ÌÏÉÏÉÐW\ÔI]Ü  E 7Ð*BÐ!CÓDÐDÜ�‹;Ðr#   é€   i   ©Ú	max_itemsÚmax_lenc               óâ   — t        | t        «      rt        | «      |kD  rt        |› d�«      ‚| D ]4  }t        |t        «      r|rt        |«      |kD  sd|v sŒ(t        |› d�«      ‚ t        | «      S )Nz: list expectedr¯   z: non-empty strings expected)r4   ÚlistÚlenr   r_   r@   )r§   r    r¶   r·   Úitems        r$   Ú	_str_listr¼   ç   sw   € Ü�eœTÔ"¤c¨%£j°9Ò&<Ü  E 7¨/Ð!:Ó;Ð;Øò MˆÜ˜$¤Ô$©D´C¸³IÀÒ4GÈ6ÐUYÊ>Ü$¨ wÐ.JÐ%KÓLÐLðMô �‹<Ðr#   c                ó  — t        | |dd¬«      }t        «       }|D ]?  }	 t        |«      }|t        j
                  u rt	        |› d�«      ‚|j                  |«       ŒA t        |«      S # t        $ r}t	        |› d|› �«      |‚d }~ww xY w)Né   é    rµ   z: unknown privacy tier zu: confidential is never configured in the matrix; only privacy.claude_status_quo_confidential may admit it for claude)r¼   r0   r   Ú
ValueErrorr   ÚCONFIDENTIALr3   Ú	frozenset)r§   r    rA   Útiersr1   ÚtierÚexcs          r$   Ú_tiersrÆ   ð   s°   € Ü�e˜U¨a¸Ô<€EÜ‹E€EØò 	ˆð	WÜ˜tÓ$ˆDð ”;×+Ñ+Ñ+Ü$Ø�'ð Vð VóWð Wð 	�	‰	�$�ð	ô �UÓÐøô ò 	WÜ$¨ wÐ.EÀdÀVÐ%LÓMÐSVÐVûð	Wús    A)Á)	BÁ2BÂBc                óð  — t        | dh d£ddh«      }t        |d   dt        t        «      «      }|j                  «       D ��ci c]  \  }}|t	        |d|› �«      “Œ }}}t        |d   d«      }|r8t        |j                  dt        «       «      «      t        j                  hz  |d<   t        |j                  d	d
«      d«      }|r5d|v rt        d«      ‚t        |j                  dt        «       «      «      |d<   t        t        j                  |«      |t        |j                  dd«      d«      |t        |j                  dg «      dd¬«      t        |j                  dg «      dd¬«      ¬«      S c c}}w )Nr�   >   rT   rV   rZ   rW   rY   rU   rT   rU   zprivacy.matrixzprivacy.matrix.z&privacy.claude_status_quo_confidentialr   rW   Fz privacy.codex_parity_with_clauder   zRprivacy.matrix.codex must be omitted when privacy.codex_parity_with_claude is truerV   Tzprivacy.public_marker_enabledrY   z#privacy.extra_confidential_keywordsr.   ©r·   rZ   zprivacy.extra_internal_keywords)rT   rU   rV   rW   rY   rZ   )r¥   r0   r2   ÚitemsrÆ   r­   rÂ   Úgetr   rÁ   r   rS   r   Úfrom_mappingr¼   )rŸ   ÚsectionÚ
matrix_rawr1   r§   ÚmappingÚ
status_quoÚparitys           r$   Ú_parse_privacyrÑ      s  € Ü�D˜)ò &`ð Ð?Ð@óB€Gô �w˜xÑ(Ð*:¼CÔ@PÓ<QÓR€JØPZ×P`ÑP`ÓPb×cÁÀÀuˆt”V˜E _°T°FÐ#;Ó<Ñ<Ðc€GÑcÜ�wÐ?Ñ@ÐBjÓk€JÙÜ% g§k¡k°(¼I»KÓ&HÓIÌ[×MeÑMeÐLfÑfˆ�Ñô �7—;‘;Ð9¸5ÓAÐCeÓf€FÙØ�jÑ Ü$Ødófð fä$ W§[¡[°¼9»;Ó%GÓHˆ�ÑÜÜ×)Ñ)¨'Ó2Ø'1Ü# G§K¡KÐ0GÈÓ$NÐPoÓpØ!'Ü$-¨g¯k©kÐ:WÐY[Ó.\Ø.SÐ]`ô%bä )¨'¯+©+Ð6OÐQSÓ*TØ*KÐUXô!Zô	ð 	ùó ds   ÁE2c                ó  ‡
— t        | dt        t        «      «      }|st        d«      ‚g }t	        |«      D �]D  }d|› �Š
t        ||   ‰
h d£h d£«      }t        t        |d   ‰
› d�d¬	«      «      }|t        k  st        ‰
› d
�«      ‚t        t        |d   ‰
› d�d¬	«      «      }|t        k  st        ‰
› d�«      ‚t        |j                  di «      ‰
› d�t        t        «      «      }t        t	        ˆ
fd„|j                  «       D «       «      «      }|j                  d«      }	|	�t        |	‰
› d�dd«      }	|j                  t        |t        |d   ‰
› d�«      ||t        |d   ‰
› d�dd«      ||	¬«      «       �ŒG t        |«      S )Nr*   z'backends: at least one backend requiredz	backends.>   rf   rd   rg   r7   r?   r>   >   rf   rd   rg   r7   r7   z.capabilitiesr¿   rÈ   z!.capabilities: unknown capabilityrf   z.tasksz.tasks: unknown taskr?   z.task_qualityc              3  óN   •K  — | ]  \  }}|t        |‰› d |› �dd«      f–— Œ y­w)z.task_quality.r   r.   N)rª   )Ú.0rC   rD   r    s      €r$   ú	<genexpr>z"_parse_backends.<locals>.<genexpr>/  s6   øè ø€ ò $
ÙLWÈDÐRWˆT”4˜ % ¨°t°fÐ=¸qÀ#ÓFÔGñ$
ùs   ƒ"%r>   z.max_context_bytesr
   i   rd   z.enabledrg   z.qualityr   r.   )r1   rd   r7   rf   rg   r?   r>   )r¥   r0   r2   r   rž   rÂ   r¼   r9   r;   rÊ   r@   rÉ   rª   Úappendrc   r­   )rŸ   rÌ   Úresultr1   Úentryr7   rf   Útask_quality_rawr?   Úmax_contextr    s             @r$   Ú_parse_backendsrÛ     sµ  ø€ Ü�D˜*¤cÔ*:Ó&;Ó<€GÙÜ Ð!JÓKÐKØ€FÜ�w“ó ˆØ˜D˜6Ð"ˆÜ�g˜d‘m Uò -BÚCrótˆä ¤¨5°Ñ+@ÀUÀGÈ=ÐBYÐceÔ!fÓgˆØÔ3Ò3Ü$¨ wÐ.OÐ%PÓQÐQÜœ) E¨'¡N°u°g¸VÐ4DÈbÔQÓRˆØœÒ%Ü$¨ wÐ.BÐ%CÓDÐDÜ  §¡¨>¸2Ó!>À5À'ÈÐ@WÔY\Ô]jÓYkÓlÐÜœVó $
Ø[k×[qÑ[qÓ[sô$
ó 
ó ˆð —i‘iÐ 3Ó4ˆØÐ"Ü˜{¨u¨gÐ5GÐ,HÈ!ÐM]Ó^ˆKØ�‰”oØœu U¨9Ñ%5¸%¸ÀÐ7IÓJÐYeØ¤ e¨IÑ&6¸5¸'ÀÐ8JÈAÈsÓ!SØ%¸ô
ö 	ð#ô, �‹=Ðr#   c           	     óš  — t        | dt        t        «      «      }i }|j                  «       D ]`  \  }}t        |d|› �ddhdh«      }|j	                  d«      }|�t        |d|› d�dd«      }t        t        |d   d|› d�d	d
«      |«      ||<   Œb |D ]6  }|j                  sŒ|j                  |vsŒt        d|j                  › d�«      ‚ |S )Nr�   zbudget.Ú
daily_jobsÚdaily_token_estimatez.daily_token_estimater
   l    J)£z.daily_jobsr   i@B z: required for enabled backend)
r¥   r0   r2   rÉ   rÊ   rª   r   rd   r1   r   )	rŸ   r*   rÌ   r“   r1   r§   rØ   ÚtokensrB   s	            r$   Ú_parse_budgetrà   =  s÷   € Ü�D˜(¤CÔ(8Ó$9Ó:€GØ€FØ—}‘}“ò o‰ˆˆeÜ�e˜w t fÐ-°Ð>TÐ/UÐXdÐWeÓfˆØ—‘Ð1Ó2ˆØÐÜ˜& G¨D¨6Ð1FÐ"GÈÈHÓUˆFÜ"¤4¨¨lÑ(;¸wÀtÀfÈKÐ=XÐZ[Ð]dÓ#eÐgmÓnˆˆtŠðoð ò ]ˆØ�?‹?˜wŸ|™|°6Ò9Ü$ w¨w¯|©|¨nÐ<ZÐ%[Ó\Ð\ð]ð €Mr#   ©rŠ   c               óª  — ddl m}m} ddlm} ddlm}m} ddlm	}m
}m}	 t        | dh d£«      }
t        |
j                  dd	«      d
«      }|
j                  dd«      }|dvrt        d«      ‚|dk(  }t!        |
j                  dt#        |«      «      d«      }t!        |
j                  dg «      d«      }	  |||||¬«       |
j                  ddddœ«      }t'        |t(        «      st        d«      ‚	  |	t)        |«      «      }|
j                  d«      }|�t+        |d«      nd }|
j                  d«      }d }|�Ht        |dh d £«      } |dIi |j-                  «       D ��ci c]  \  }}|t/        |d!|› �dd"«      “Œ c}}¤Ž}|
j                  d#d$«      }t+        |d%«       t+        |
j                  d&d'«      d(«      }t+        |
j                  d)d*«      d+«      }t        |
j                  d,d	«      d-«      }t        |
j                  d.d/«      d0«      }t!        |
j                  d1g «      d2«      }|r|dk7  rt        d3«      ‚	  |t#        |«      t1        |«      |�t1        |«      nd ||�t1        |«      nd ¬4«      }|
j                  d6i «      } t'        | t(        «      st        d7«      ‚t        | d8h d9£«       | j-                  «       D ]*  \  }}t'        |t0        «      r|rd:|v sŒt        d;|› d<�«      ‚ |r'|st        d=«      ‚|€t        d>«      ‚|€t        d?«      ‚|dk(  r|�|j2                  �t        d@«      ‚t5        dIi d|“d|“d|“dAt/        |
j                  dAdB«      dCddD«      “dEt/        |
j                  dEdF«      dGddH«      “d|“dt7        t9        |j-                  «       «      «      “d|“d#|“d|“d,|“d&|“d)|“d6t7        t9        | j-                  «       «      «      “d.|“d1|“ŽS # |$ r}t        d|j$                  › �«      |‚d }~ww xY w# |$ r}t        d|j$                  › �«      |‚d }~ww xY wc c}}w # |$ r}t        d5|› �«      |‚d }~ww xY w)JNr
   )ÚDEFAULT_COMMAND_TEMPLATEÚvalidate_command_template)ÚPKG_REPO_ROOT)ÚWriteAllowlistErrorÚvalidate_write_allowlist)ÚResourceLimitsÚUnsafeCommandErrorÚvalidate_envr   >   r}   r€   r„   r‚   rƒ   r   rw   r|   r~   rz   rx   r{   ry   r�   r…   r†   rw   Fzcodex.real_executionr€   r   )r   Útoolsz%codex.profile: text or tools expectedrë   rx   zcodex.command_templatery   zcodex.isolation_wrapper)Úallow_bypass_sandboxÚrequire_cagezcodex.command_template: r}   z/usr/bin:/binzC.UTF-8)ÚPATHÚLANGzcodex.env: object expectedzcodex.env: r|   zcodex.workspace_rootr~   zcodex.resource_limits>   Úcpu_secondsÚmax_file_bytesÚmax_open_filesÚaddress_space_byteszcodex.resource_limits.l            r   z/usr/bin/prlimitzcodex.prlimit_pathr‚   z/home/aria/.codex/auth.jsonzcodex.auth_filerƒ   z
/home/ariazcodex.home_rootr�   zcodex.codex_auth_writabler…   Tzcodex.tools_protect_startupr†   zcodex.tools_write_allowlistz?codex.tools_write_allowlist: only valid for codex.profile tools)rƒ   rŠ   Ú	repo_rootÚ	runs_rootzcodex.tools_write_allowlist: r„   zcodex.user_bus: object expectedzcodex.user_bus>   rî   ÚXDG_RUNTIME_DIRÚDBUS_SESSION_BUS_ADDRESSr¯   zcodex.user_bus.z: non-empty string expectedz5codex.real_execution requires codex.isolation_wrapperz2codex.real_execution requires codex.workspace_rootz3codex.real_execution requires codex.resource_limitszQcodex.resource_limits.address_space_bytes must be omitted for codex.profile toolsrz   rI   zcodex.timeout_secondsi  r{   i    zcodex.max_output_bytesi   r"   )Úcodex_adapterrã   rä   Ú	isolationrå   Úisolation.profilesræ   rç   Úrunnerrè   ré   rê   r¥   r­   rÊ   r   r¼   r¹   r   r4   Údictr³   rÉ   rª   r_   ró   rv   r@   rž   )!rŸ   rŠ   rã   rä   rå   ræ   rç   rè   ré   rê   rÌ   Úrealr€   Úallow_bypassÚtemplateÚwrapperrÅ   Úenv_rawr}   Ú	workspaceÚ
limits_rawr“   rØ   ÚkÚvr   r‚   rƒ   r�   r…   Ú	allow_rawÚwrite_allowlistÚbus_raws!                                    r$   Ú_parse_codexr	  L  sß  € ßRÝ(ßQßHÑHä�D˜'ò $oó p€Gô �—‘Ð-¨uÓ5Ð7MÓN€DØ�k‰k˜) VÓ,€GØÐ'Ñ'Ü Ð!HÓIÐIØ˜gÑ%€LÜ˜Ÿ™Ð%7¼Ð>VÓ9WÓXÐZrÓs€HÜ˜Ÿ™Ð$7¸Ó<Ð>WÓX€GðQá! (¨GÈ,ÐeqÕrð �k‰k˜%¨/À9Ñ!MÓN€GÜ�gœtÔ$Ü Ð!=Ó>Ð>ðDÙœ4 ›=Ó)ˆð —‘Ð,Ó-€IØ@IÐ@U”	˜)Ð%;Ô<Ð[_€IØ—‘Ð.Ó/€JØ€FØÐÜ�jÐ"9Ú`óbˆáÑsÐdi×doÑdoÓdq×"rÑ\`Ð\]Ð_` 1¤d¨1Ð0FÀqÀcÐ.JÈAÈwÓ&WÑ#WÓ"rÑsˆØ—;‘;˜~Ð/AÓB€LÜˆlÐ0Ô1Ü˜'Ÿ+™+ kÐ3PÓQÐSdÓe€IÜ˜'Ÿ+™+ k°<Ó@ÐBSÓT€IÜ §¡Ð,AÀ5Ó IÐKfÓgÐä! '§+¡+Ð.EÀtÓ"LÐNkÓlÐô ˜'Ÿ+™+Ð&=¸rÓBÐDaÓb€IÙ�W Ò'Ü Ð!bÓcÐcðQÙ2Ü�‹O¤s¨9£~Ø(1Ð(=”c˜)”nÀ4ÐS`Ø(1Ð(=”c˜)”nÀ4ôIˆð �k‰k˜* bÓ)€GÜ�gœtÔ$Ü Ð!BÓCÐCÜ	ˆ'Ð#Ò%\Ô]Ø—‘“ò W‰ˆˆ1Ü˜!œSÔ!©¨f¸ªkÜ$ °q°cÐ9TÐ%UÓVÐVðWñ ÙÜ$Ð%\Ó]Ð]ØÐÜ$Ð%YÓZÐZØˆ>Ü$Ð%ZÓ[Ð[Ø�'Ò˜fÐ0°V×5OÑ5OÐ5[ô !Ð!tÓuÐuÜò 	Ùð	Ù.6ð	ÙJQð	ä˜WŸ[™[Ð):¸CÓ@ÐBYÐ[\Ð^bÔcð	ô ˜gŸk™kÐ*<¸oÓNÐPhØÐ!1ô3ð	ñ
 !ð	ô
 ',¬F°3·9±9³;Ó,?Ô&@ð	ñ
 SYð	ñ "ð	ñ ,3ð	ñ I\ð	ñ ð	ñ (1ð	ô <AÄÈÏÉËÓAXÔ;Yð	ñ 4ð	ñ L[ð	ð 	øðu ò QÜ Ð#;¸C¿H¹H¸:Ð!FÓGÈSÐPûðQûð ò DÜ  ;¨s¯x©x¨jÐ!9Ó:ÀÐCûðDüó #søð* ò QÜ Ð#@ÀÀÐ!FÓGÈSÐPûðQúsN   Â4O' Ã1P ÅP3È=9P9 Ï'P
Ï,PÐP
ÐP0ÐP+Ð+P0Ð9QÐ>QÑQ>   rŒ   r   r�   r‘   r“   r�   rŽ   r)   Ú_commentr*   r‹   rŠ   r‰   r’   r”   ©r—   c               óÂ  — t        | dt        h d£«      }t        |d   «      t        us|d   dk7  rt	        d«      ‚t        t        |d   ddd	¬
«      «      }|r	|t        k  st	        d«      ‚t        |d   dh d£dh«      }t        t        |d   d«      t        |j                  dd«      ddd«      t        |j                  dd«      ddd«      ¬«      }t        |d   dddh«      }d }d|v r7t        t        |d   dd¬«      «      }t        d „ |D «       «      rt	        d!«      ‚d }d|v rt        |d   d"«      }|€|€t	        d#«      ‚t        |j                  d$i «      d$h d%£«      }	|	j                  d&d'«      }
|
d(vrt	        d)«      ‚|	j                  d*d+«      }|t        vrt	        d,«      ‚t        t        |	j                  d-d«      d.dd/«      |
|«      }t        |d0   «      }t        |j                  d1i «      d1d2d3h«      }t        |j                  d4i «      d4h d5£«      }t        |d6   d7«      }t!        d|||t#        ||«      t%        |d8   «      ||t'        |d9   |«      t)        t        |j                  d2d:«      d;dd/«      t        |j                  d3d<«      d=dd>«      «      t        |j                  d?d@«      dAddB«      t+        t        |j                  dCdD«      dEddF«      t        |j                  dGdH«      dId/dJ«      t        |j                  dKd«      dLddM«      «      t-        |j                  dNi «      |¬O«      t        |j                  dPd«      dQddR«      |¬S«      S )TNÚconfig>   rŒ   r�   r�   r)   r*   r‹   rŠ   r‰   r)   r
   zconfig.version: 1 expectedr‰   zconfig.allowed_modesé   é   rµ   z7config.allowed_modes: subset of shadow/execute expectedr‹   >   rH   rJ   rL   rH   zclearance.key_filerJ   rI   zclearance.ttl_secondsiX  rL   rK   z clearance.max_clock_skew_secondsr   é<   )rH   rJ   rL   rŒ   rO   rQ   zauth.allowed_sender_idsé   rÈ   c              3  óH   K  — | ]  }t         j                  |«       –— Œ y ­wr™   )Ú
_SENDER_IDÚmatch)rÔ   Úss     r$   rÕ   z'parse_gateway_config.<locals>.<genexpr>Á  s   è ø€ Ò;¨1”:×#Ñ# AÓ&Ô&Ñ;ùs   ‚ "z6auth.allowed_sender_ids: numeric Telegram ids expectedzauth.telegram_access_filez9auth: allowed_sender_ids or telegram_access_file requiredrŽ   >   r]   r`   ra   r`   r^   )r^   Úchecked_fallbackz;routing.manual_fallback: block or checked_fallback expectedra   r   z(routing.default_task_class: unknown taskr]   zrouting.min_qualityr.   r*   r‘   rk   rm   r“   >   rq   rt   rs   rŠ   zconfig.state_dirr�   r�   rj   zhealth.failure_thresholdrl   zhealth.open_secondsi€Q r’   i€:	 zconfig.dedupe_ttl_secondsi �' rq   rp   zlimits.max_text_bytesr   rs   rr   zlimits.max_reply_charsi † rt   zlimits.max_attachmentsé
   r   rá   r”   z"config.decision_log_retention_daysiB  )r)   r‰   rŠ   r‹   rŒ   r�   rŽ   r*   r�   r‘   r’   r“   r   r”   r—   )r¥   ÚTOP_LEVEL_KEYSr/   r(   r   rÂ   r¼   ÚALLOWED_MODESrG   r³   rª   rÊ   Úanyr;   r\   rÛ   rˆ   rN   rÑ   rà   ri   ro   r	  )rŸ   r—   ÚtopÚmodesÚclearance_rawr‹   Úauth_rawÚ
sender_idsÚaccess_fileÚrouting_rawÚfallbackÚdefault_taskrŽ   r*   Ú
health_rawr  rŠ   s                    r$   Úparse_gateway_configr%  «  sŸ  € Ü
��h¤Úoóq€CäˆC�	‰NÓ¤3Ñ&¨#¨i©.¸AÒ*=Ü Ð!=Ó>Ð>Ü”i  OÑ 4Ð6LÐXYÐceÔfÓg€EÙ˜¤Ò.Ü Ð!ZÓ[Ð[ä˜#˜kÑ*¨KÒ9nØ%˜,ó(€Mä!Ü˜=¨Ñ4Ð6JÓKÜ˜×*Ñ*¨=¸#Ó>Ð@WÐYZÐ\_Ó`Ü# M×$5Ñ$5Ð6NÐPQÓ$RØ$FÈÈ2ó Oô€Iô �S˜‘[ &Ð+?ÐAWÐ*XÓY€HØ€JØ˜xÑ'Üœy¨Ð2FÑ)GÐIbÐlnÔoÓpˆ
ÜÑ;°
Ô;Ô;Ü$Ð%]Ó^Ð^Ø€KØ Ñ)Ü Ð)?Ñ @ÐB]Ó^ˆØÐ˜kÐ1Ü Ð!\Ó]Ð]ä˜Ÿ™ 	¨2Ó.°	Ò;sÓt€KØ�‰Ð0°'Ó:€HØÐ4Ñ4Ü Ð!^Ó_Ð_Ø—?‘?Ð#7¸ÓD€LØœ=Ñ(Ü Ð!KÓLÐLÜœd ;§?¡?°=À!Ó#DÐF[Ð]^Ð`cÓdØ&¨ó6€Gô ˜s :™Ó/€HÜ�s—w‘w˜x¨Ó,¨hÐ9LÈnÐ8]Ó^€JÜ�s—w‘w˜x¨Ó,¨hÒ8pÓq€JÜ˜#˜kÑ*Ð,>Ó?€IÜØØØØÜ˜* kÓ2Ü˜s 9™~Ó.ØØÜ˜S ™]¨HÓ5ÜÜ�—‘Ð 3°QÓ7Ð9SÐUVÐX[Ó\Ü�—‘ °Ó4Ð6KÈQÐPUÓVó
ô   §¡Ð(<¸fÓ EÐGbØ " Jó0äÜ�—‘Ð 0°%Ó8Ð:QÐSTÐVaÓbÜ�—‘Ð 1°5Ó9Ð;SÐUXÐZ`ÓaÜ�—‘Ð 1°1Ó5Ð7OÐQRÐTVÓWó
ô
 ˜3Ÿ7™7 7¨BÓ/¸9ÔEÜ$(¨¯©Ð1NÐPQÓ)RØ)MÈqÐRVó%Xàô1ð r#   c                óª  — t        | «      } 	 t        | d«      5 }|j                  t        dz   «      }d d d «       t        «      t        kD  rt        d«      ‚	 t        j                  |j                  d«      «      }t        || ¬«      S # 1 sw Y   ŒXxY w# t        $ r}t        d«      |‚d }~ww xY w# t        t        f$ r}t        d«      |‚d }~ww xY w)NÚrbr
   ÚCONFIG_UNREADABLEÚCONFIG_TOO_LARGEzutf-8ÚCONFIG_INVALID_JSONr  )r   ÚopenÚreadÚMAX_CONFIG_BYTESÚOSErrorr   rº   ÚjsonÚloadsÚdecodeÚUnicodeDecodeErrorrÀ   r%  )r±   ÚhandleÚrawrÅ   rŸ   s        r$   Úload_gateway_configr5  ó  sÏ   € Ü�‹:€Dð?Ü�$˜Óð 	4 Ø—+‘+Ô.°Ñ2Ó3ˆC÷	4ô ˆ3ƒxÔ"Ò"Ü Ð!3Ó4Ð4ðAÜ�z‰z˜#Ÿ*™* WÓ-Ó.ˆô   ¨TÔ2Ð2÷	4ð 	4ûäò ?Ü Ð!4Ó5¸3Ð>ûð?ûô ¤
Ð+ò AÜ Ð!6Ó7¸SÐ@ûðAúsE   �B ™B	²B Á$B2 Â	BÂB Â	B/ÂB*Â*B/Â2CÃCÃC)r
   )r*   zlist[Backend]r)   r(   rœ   r'   )
rŸ   r   r    r_   r¡   úset[str]r¢   r6  rœ   r   )
r§   r   r    r_   r¨   r(   r©   r(   rœ   r(   )r§   r   r    r_   rœ   r6   )r§   r   r    r_   rœ   r   )
r§   r   r    r_   r¶   r(   r·   r(   rœ   rX   )r§   r   r    r_   rœ   zfrozenset[PrivacyTier])rŸ   r   rœ   rS   )rŸ   r   rœ   r�   )rŸ   r   r*   r�   rœ   zdict[str, BudgetLimit])rŸ   r   rŠ   rP   rœ   rv   )rŸ   r   r—   rP   rœ   rˆ   )rœ   rˆ   )7Ú__doc__Ú
__future__r   r/  r°   ÚreÚdataclassesr   r   Úpathlibr   Útypingr   r   r	   r�   r   Úcorer   r   r   rÂ   r2   r9   r;   r  r-  Úcompiler  rÀ   r   r'   rE   rG   rN   rS   r\   rc   ri   ro   rv   rˆ   r¥   rª   r­   r³   r¼   rÆ   rÑ   rÛ   rà   r	  r  r%  r5  r"   r#   r$   ú<module>r?     sF  ðñõ #ã Û 	Û 	ß (Ý ß )Ñ )å ß 5Ñ 5á˜g xÐ0Ó1Ð Ù ò "ó Ð ñ ò ó €ñ ˜8 YÐ/Ó0€ØÐ ØˆR�Z‰Z˜Ó(€
ô	˜ô 	ñ �$Ô÷"ð "ó ð"ð ð35Øð35àð35ð ó35ñt �$Ô÷$ð $ó ð$ñ �$Ô÷)ð )ó ð)ñ
 �$Ô÷2ð 2ó ð2ñ �$Ô÷)ð )ó ð)ñ �$Ô÷%ð %ó ð%ñ �$Ô÷ð ó ðñ
 �$Ô÷ð ó ðñ �$Ô÷0ð 0ó ð0ñ( �$Ô÷ð ó ðñ0 JSËô 	óóóð ;>Èdõ óó ó>ó<ð <@õ Wòt1€ð
 AEõ EôP3r#   