Ë
    Þj^™  ã                  ó  — d Z ddlmZ ddlZddlZddl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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mZmZm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- ddl.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZC ddlDmEZEmFZF ddlGmHZH ddlImJZJmKZKmLZL ddlMmNZNmOZOmPZPmQZQ dZR ej¦                  d«      ZT ej¦                  d«      ZU eVh d£«      ZW eVh d£«      ZX eVh d£«      ZY G d„ deZe«      Z[ G d „ d!eZe«      Z\ G d"„ d#e]«      Z^ ed$¬%«       G d&„ d'«      «       Z_ ed$¬%«       G d(„ d)«      «       Z` G d*„ d+e«      Za eb«       Zcd/d,„Zd G d-„ d.«      Zey)0u  Secure Gateway: der EINE AusfÃ¼hrungspfad des Aria-V3-Kerns.

Telegram-Plugin (gate(), Permission-Intercept) -> Bridge -> Gateway.handle():

 1. Modus freigeschaltet? (config.allowed_modes; Default nur "shadow")
 2. AUTHENTIFIZIERUNG: sender_id kommt NUR aus dem vom Transport gesetzten
    Feld (Plugin: ctx.from.id), nie aus dem Text oder selbstdeklarierten
    Feldern (unbekannte Felder werden abgelehnt). Abgleich mit der Allowlist;
    privat zusÃ¤tzlich chat_id == sender_id.
 3. Idempotenz je (chat_id, message_id), persistent.
 4. Ein Befehlsparser; Modusbefehle nur fÃ¼r authentifizierte Besitzer.
 5. Kontext bauen; Datenschutz- und Aufgabenklasse deterministisch.
 6. VerfÃ¼gbarkeit (Circuit-Breaker) und Budget (ohne Reservierung).
 7. Eine Routinglogik (core.route); manuelle Wahl Ã¼berstimmt nie.
 8. Memory nur fÃ¼r Adapter mit accepts_memory, Ausschnitt fÃ¼r Ausschnitt
    gegen die Matrix geprÃ¼ft; danach finale Klassifikation.
 9. Shadow: nur protokollieren, nichts reservieren, nichts ausfÃ¼hren.
10. AusfÃ¼hren: Outbound-Digest vom Adapter, Budget reservieren, HMAC-
    Clearance ausstellen, Entscheidung protokollieren (sonst keine
    AusfÃ¼hrung), adapter.execute(clearance, job) - der Adapter prÃ¼ft selbst -,
    Budget abrechnen, Health verbuchen, ErgebnisprÃ¼fung, Ergebnis protokollieren.

Es gibt keinen automatischen Wechsel auf ein anderes Backend nach einem
Laufzeitfehler. Der einzige Fallback ist der optionale, vollstÃ¤ndig geprÃ¼fte
Fallback bei manueller Wahl (routing.manual_fallback = checked_fallback).
é    )ÚannotationsN)Ú	dataclass)ÚdatetimeÚtimezone)ÚEnum)ÚAnyÚCallableÚMappingÚOptionalÚProtocolÚSequenceé   )ÚAdapterInputErrorÚ
AdapterJobÚAdapterResultÚBackendAdapterÚExecutionPolicyÚResultStatus)ÚAuthorizationErrorÚClearanceIssuerÚClearanceKeyringÚClearanceVerifierÚKeyUnavailableError)ÚBudgetLedgerÚestimate_tokens)ÚClaudeChannelAdapter)ÚPrivacyAssessmentÚPrivacyClassifierÚclassify_task)ÚCodexAdapter)ÚCommandKindÚparse_command)ÚConfigurationErrorÚGatewayConfig)Ú
AttachmentÚContextEnvelopeÚMemorySnippetÚ
sha256_hex)	ÚBackendÚCHECKED_FALLBACKÚ
JobRequestÚMANUAL_CHOICE_NOT_PERMITTEDÚModeÚPRIVACY_DENIEDÚPrivacyTierÚRoutingDecisionÚroute)ÚDecisionLog)ÚHealthRegistry)ÚJobLifecycleÚ	JobStatus)Úcheck_output)ÚIsolatedRunnerÚ
MockRunnerÚSubprocessRunner)ÚIdempotencyStoreÚ	ModeStoreÚ
NonceStoreÚ
StateErrorz
^\d{1,20}$z^-?\d{1,20}$>   ÚgroupÚchannelÚprivateÚ
supergroup>	   ÚtsÚtextÚchat_idÚ	chat_typeÚ	sender_idÚ	transportÚ
message_idÚattachmentsÚsender_username>   ÚkindÚmimeÚnameÚsizeÚsha256Úfile_idÚ
local_pathc                  ó,   — e Zd ZdZdZdZdZdZdZdZ	dZ
y	)
ÚHandlingÚdropÚnot_interceptedÚreplyÚblockedÚfailedÚforward_to_claude_channelÚshadow_decisionÚerrorN)Ú__name__Ú
__module__Ú__qualname__ÚDROPÚNOT_INTERCEPTEDÚREPLYÚBLOCKEDÚFAILEDÚFORWARD_TO_CLAUDE_CHANNELÚSHADOW_DECISIONÚERROR© ó    ú4/home/aria/aria-v3-dev/python/aria_router/gateway.pyrS   rS   H   s+   „ Ø€DØ'€OØ€EØ€GØ€FØ ;ÐØ'€OØ�Erh   rS   c                  ó   — e Zd ZdZdZy)Ú	PrincipalÚownerÚgroup_memberN)r\   r]   r^   ÚOWNERÚGROUP_MEMBERrg   rh   ri   rk   rk   S   s   „ Ø€EØ!�Lrh   rk   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚRequestErrorc                ó2   •— t         ‰| �  |«       || _        y ©N)ÚsuperÚ__init__Úcode)Úselfrv   Ú	__class__s     €ri   ru   zRequestError.__init__Y   s   ø€ Ü‰Ñ˜ÔØˆ�	rh   )rv   Ústr)r\   r]   r^   ru   Ú__classcell__)rx   s   @ri   rq   rq   X   s   ø„ ÷ñ rh   rq   T)Úfrozenc                  ó”   — e Zd ZU dZ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	e
dd„«       Zy)ÚGatewayRequestzHEingang vom Transport. sender_id/chat_id/chat_type setzt NUR das Plugin.ry   rF   rD   rE   ÚintrH   rC   ÚtelegramrG   NúOptional[str]rJ   rB   rg   ztuple[Attachment, ...]rI   c                ó’  — t        | j                  t        «      rt        j	                  | j                  «      st        d«      ‚t        | j                  t        «      rt        j	                  | j                  «      st        d«      ‚| j                  t        vrt        d«      ‚t        | j                  «      t        us| j                  dk  rt        d«      ‚t        | j                  t        «      rd| j                  v rt        d«      ‚t        | j                  t        «      st        d«      ‚| j                  d	f| j                   d
ffD ]5  \  }}|€Œ	t        |t        «      rt#        |«      dkD  sd|v sŒ,t        |«      ‚ t        | j$                  t&        «      rt)        d„ | j$                  D «       «      rt        d«      ‚y )NÚINVALID_SENDER_IDÚINVALID_CHAT_IDÚINVALID_CHAT_TYPEr   ÚINVALID_MESSAGE_IDú ÚINVALID_TEXTÚINVALID_TRANSPORTÚINVALID_USERNAMEÚ
INVALID_TSé@   c              3  ó>   K  — | ]  }t        |t        «       –— Œ y ­wrs   )Ú
isinstancer%   )Ú.0Úas     ri   ú	<genexpr>z/GatewayRequest.__post_init__.<locals>.<genexpr>|   s   è ø€ Ò9rÐ\]¼jÈÌJÓ>WÔ:WÑ9rùs   ‚ÚINVALID_ATTACHMENTS)r�   rF   ry   Ú_USER_IDÚmatchrq   rD   Ú_CHAT_IDrE   Ú
CHAT_TYPESÚtyperH   r~   rC   rG   rJ   rB   ÚlenrI   ÚtupleÚany)rw   Úvaluerv   s      ri   Ú__post_init__zGatewayRequest.__post_init__l   sf  € Ü˜$Ÿ.™.¬#Ô.´h·n±nÀTÇ^Á^Ô6TÜÐ2Ó3Ð3Ü˜$Ÿ,™,¬Ô,´H·N±NÀ4Ç<Á<Ô4PÜÐ0Ó1Ð1Ø�>‰>¤Ñ+ÜÐ2Ó3Ð3Ü�—‘Ó ¬Ñ+¨t¯©ÀÒ/BÜÐ3Ó4Ð4Ü˜$Ÿ)™)¤SÔ)¨V°t·y±yÑ-@Ü˜~Ó.Ð.Ü˜$Ÿ.™.¬#Ô.ÜÐ2Ó3Ð3Ø!×1Ñ1Ð3EÐFÈÏÉÐR^ÐH_Ð`ò 	)‰KˆE�4ØÑ ¬*°U¼CÔ*@ÄCÈÃJÐQSÂOÐW]ÐafÒWfÜ" 4Ó(Ð(ð	)ô ˜$×*Ñ*¬EÔ2´cÑ9rÐae×aqÑaqÔ9rÔ6rÜÐ4Ó5Ð5ð 7srh   c               óä  — t        |t        «      st        d«      ‚t        |«      t        z
  }|rt        d«      ‚dD ]  }||vsŒt        d«      ‚ |d   }t        |t
        «      st        d«      ‚t        |j                  d«      «      |kD  rt        d«      ‚|j                  d	g «      }t        |t        «      rt        |«      |kD  rt        d
«      ‚g }|D ]³  }	t        |	t        «      rt        |	«      t        z
  sd|	vrt        d
«      ‚	 |j                  t        |	d   |	j                  dd«      |	j                  d«      |	j                  d«      |	j                  d«      |	j                  d«      |	j                  d«      ¬«      «       Œµ  | |d   |d   |d   |d   ||d   |j                  d«      |j                  d«      t        |«      ¬«	      S # t        $ r}
t        d
«      |
‚d }
~
ww xY w)NÚINVALID_REQUESTÚUNKNOWN_FIELD)rG   rF   rD   rE   rH   rC   ÚMISSING_FIELDrC   r‡   úutf-8ÚTEXT_TOO_LARGErI   r‘   rK   rP   Ú rM   rL   rN   rO   rQ   )rK   rP   rM   rL   rN   rO   rQ   rF   rD   rE   rH   rG   rJ   rB   )	rF   rD   rE   rH   rC   rG   rJ   rB   rI   )r�   r
   rq   ÚsetÚBRIDGE_REQUEST_FIELDSry   r—   ÚencodeÚgetÚlistÚBRIDGE_ATTACHMENT_FIELDSÚappendr%   Ú
ValueErrorr˜   )ÚclsÚdataÚmax_text_bytesÚmax_attachmentsÚunknownÚrequiredrC   Úraw_attachmentsrI   ÚitemÚexcs              ri   Úfrom_bridgezGatewayRequest.from_bridge   sí  € ä˜$¤Ô(ÜÐ0Ó1Ð1Ü�d“)Ô3Ñ3ˆÙä˜Ó/Ð/Ø`ò 	4ˆHØ˜tÒ#Ü" ?Ó3Ð3ð	4ð �F‰|ˆÜ˜$¤Ô$Ü˜~Ó.Ð.Üˆt�{‰{˜7Ó#Ó$ ~Ò5ÜÐ/Ó0Ð0ØŸ(™( =°"Ó5ˆÜ˜/¬4Ô0´C¸Ó4HÈ?Ò4ZÜÐ4Ó5Ð5ØˆØ#ò 
	CˆDÜ˜d¤GÔ,´°D³	Ô<TÒ0TÐX^ÐfjÑXjÜ"Ð#8Ó9Ð9ðCØ×"Ñ"¤:Ø˜f™¨t¯x©x¸	À2Ó/FÈTÏXÉXÐV\ÓM]ØŸ™ &Ó)°·±¸Ó0@ÈÏÉÐRZÓI[Ø#Ÿx™x¨Ó5ô$õ ð	
	Cñ Ø˜;Ñ'°°i±ÈDÐQ\ÑL]Ø˜LÑ)°ÀÀ[Ñ@QØ ŸH™HÐ%6Ó7¸D¿H¹HÀT»NÜ˜kÓ*ô	
ð 	
øô ò CÜ"Ð#8Ó9¸sÐBûðCús   ÄA?GÇ	G/ÇG*Ç*G/)r¬   úMapping[str, Any]r­   r~   r®   r~   Úreturnz'GatewayRequest')r\   r]   r^   Ú__doc__Ú__annotations__rG   rJ   rB   rI   r›   Úclassmethodr´   rg   rh   ri   r}   r}   ^   s`   … áRàƒNØƒLØƒNØƒOØ
ƒIØ€IˆsÓØ%)€O�]Ó)Ø€BˆÓØ*,€KÐ'Ó,ò6ð& ò#
ó ñ#
rh   r}   c                  ó¶   — e Zd ZU 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<   dZded<   dZded<   dZded<   dd„Zy)ÚGatewayResponserS   Úhandlingry   rv   Nr€   Újob_idÚbackendÚstatusÚ
reply_textúOptional[Mapping[str, Any]]Úforwardrg   ztuple[str, ...]ÚflagsFÚboolÚshadowÚplanned_handlingÚprivacyÚ	deliveredc                ó,  — t         | j                  j                  | j                  | j                  | j
                  | j                  | j                  | j                  t        | j                  «      | j                  | j                  | j                  ddœS )NF)Úprotocolr¼   rv   r½   r¾   r¿   rÀ   rÂ   rÃ   rÅ   rÆ   rÇ   rÈ   )ÚPROTOCOL_VERSIONr¼   rš   rv   r½   r¾   r¿   rÀ   rÂ   r§   rÃ   rÅ   rÆ   rÇ   ©rw   s    ri   Úto_dictzGatewayResponse.to_dictµ   sl   € ä(ØŸ™×+Ñ+Ø—I‘IØ—k‘kØ—|‘|Ø—k‘kØŸ/™/Ø—|‘|Ü˜$Ÿ*™*Ó%Ø—k‘kØ $× 5Ñ 5Ø—|‘|Øñ
ð 	
rh   ©r¶   Údict)r\   r]   r^   r¸   r½   r¾   r¿   rÀ   rÂ   rÃ   rÅ   rÆ   rÇ   rÈ   rÍ   rg   rh   ri   r»   r»   ¦   sx   … àÓØ
ƒIØ €FˆMÓ Ø!€Gˆ]Ó!Ø €FˆMÓ Ø $€J�Ó$Ø+/€GÐ(Ó/Ø€Eˆ?ÓØ€FˆDÓØ&*Ð�mÓ*Ø!€Gˆ]Ó!Ø€IˆtÓô
rh   r»   c                  ó   — e Zd Zdd„Zy)ÚMemoryProviderc                 ó   — y)uY   Liefert Memory-Ausschnitte fÃ¼r das gewÃ¤hlte Backend (vertrauenswÃ¼rdige lokale Quelle).Nrg   )rw   Úrequestr¾   s      ri   Úsnippets_forzMemoryProvider.snippets_forÈ   s   � rh   N)rÓ   r}   r¾   ry   r¶   zSequence[MemorySnippet])r\   r]   r^   rÔ   rg   rh   ri   rÑ   rÑ   Ç   s   „ ôhrh   rÑ   c                ól   — t        j                  | t        j                  ¬«      j	                  d¬«      S )N)ÚtzÚmilliseconds)Útimespec)r   Úfromtimestampr   ÚutcÚ	isoformat)Únows    ri   Ú_isorÝ   Ï   s'   € Ü×!Ñ! #¬(¯,©,Ô7×AÑAÈ>ÐAÓZÐZrh   c                  ó  — e Zd Zej                  dddddœ	 	 	 	 	 dd„Zdd„Zdd„Zedd„«       Zedd„«       Z	dd„Z
dd	„Zdd
„Zdd„Zd d„Zd!d„Zd"d„Zd#d„Z	 	 	 	 d$d„Ze	 	 	 	 d%d„«       Zd&d„Zd'd„Zd(d„Zd)d„Zd*d„Zd„ Zy)+ÚGatewayN)ÚclockÚmemory_providerÚadapter_factoriesÚforward_sinkÚcodex_runnerc               ó€  — t        |t        «      st        d«      ‚|| _        || _        |j
                  }|j                  }t        |j                  |j                  |j                  ¬«      | _        t        |j                  j                  «      | _        t!        |dz  «      | _        t%        | j                  |j&                  |j                  j(                  |¬«      | _        t-        | j                  |j&                  | j"                  | j                  |j                  j.                  |¬«      | _        t3        |dz  |j4                  «      | _        t9        |dz  «      | _        t3        |dz  |j4                  «      | _        t9        |d	z  «      | _        tA        |d
z  |jB                  |¬«      | _"        tG        |dz  |jH                  jJ                  |jH                  jL                  |¬«      | _'        tQ        |dz  |jR                  dz  |¬«      | _*        || _+        | jY                  |xs i ||«      | _-        y )NzGatewayConfig required)Úpublic_marker_enabledÚextra_confidential_keywordsÚextra_internal_keywordsznonces.json)Úttl_secondsrà   )Úmax_clock_skew_secondsrà   zdedupe.jsonz
modes.jsonzshadow-dedupe.jsonzshadow-modes.jsonzbudget.json)rà   zhealth.jsonzdecisions.jsonli€Q ).r�   r$   r#   ÚconfigÚ_clockÚ	state_dirrÇ   r   ræ   rç   rè   Ú_classifierr   Ú	clearanceÚkey_fileÚ_keyringr<   Ú_noncesr   Úmatrixré   Ú_issuerr   rê   Ú	_verifierr:   Údedupe_ttl_secondsÚ_deduper;   Ú_modesÚ_shadow_dedupeÚ_shadow_modesr   ÚbudgetÚ_budgetr3   ÚhealthÚfailure_thresholdÚopen_secondsÚ_healthr2   Údecision_log_retention_daysÚ_logÚ_memoryÚ_build_adaptersÚ	_adapters)	rw   rë   rà   rá   râ   rã   rä   ÚstaterÇ   s	            ri   ru   zGateway.__init__Ô   sß  € ô ˜&¤-Ô0Ü$Ð%=Ó>Ð>ØˆŒØˆŒØ× Ñ ˆØ—.‘.ˆÜ,Ø")×"?Ñ"?Ø(/×(KÑ(KØ$+×$CÑ$Cô
ˆÔô
 )¨×)9Ñ)9×)BÑ)BÓCˆŒÜ! %¨-Ñ"7Ó8ˆŒÜ& t§}¡}°g·n±nØ39×3CÑ3C×3OÑ3OÐW\ô^ˆŒä*¨4¯=©=¸'¿.¹.È$Ï,É,ÐX\×XhÑXhØBH×BRÑBR×BiÑBiØ16ô8ˆŒô (¨°Ñ(=¸v×?XÑ?XÓYˆŒÜ ¨Ñ 4Ó5ˆŒÜ.¨uÐ7KÑ/KÈV×MfÑMfÓgˆÔÜ& uÐ/BÑ'BÓCˆÔÜ# E¨MÑ$9¸6¿=¹=ÐPUÔVˆŒÜ% e¨mÑ&;¸V¿]¹]×=\Ñ=\Ø&,§m¡m×&@Ñ&@ÈôOˆŒä Ð(9Ñ 9¸6×;]Ñ;]Ð`eÑ;eØ&+ô-ˆŒ	à&ˆŒØ×-Ñ-Ð.?Ò.EÀ2À|ÐUaÓbˆ�rh   c                óÂ  — |dk(  rt        | j                  |¬«      S | j                  j                  }|}|€Å|j                  r¯ddlm}  ||j                  |j                  |j                  t        |j                  «      |j                  t        |j                  «      t        |j                  «      xs d t        | j                  j                   «      |j"                  |j$                  ¬«
      }n
t'        «       }t)        | j                  ||j*                  |j,                  t        |j.                  «      |j0                  |j                  dk(  |j                  ¬«      S )NÚclaude)Úsinkr   )ÚCagedCodexRunner)	ÚprofileÚresource_limitsÚ	auth_fileÚcodex_auth_writableÚ	home_rootÚbus_envrí   Úprotect_startupÚwrite_allowlistÚtools)ÚrunnerÚcommand_templateÚisolation_wrapperÚenvÚmax_output_bytesÚallow_sandbox_bypassÚrequire_output_file)r   rõ   rë   ÚcodexÚreal_executionÚisolation.caged_runnerr
  Úworkspace_rootr  r  ry   r  r  r  rÏ   Úuser_busrí   Útools_protect_startupÚtools_write_allowlistr8   r    r  r  r  r  )rw   rM   rã   rä   r  r  r
  s          ri   Ú_default_adapterzGateway._default_adapterø   s  € Ø�8ÒÜ'¨¯©¸\ÔJÐJØ—‘×!Ñ!ˆØˆØˆ>Ø×#Ò#ÝDÙ)Ø×(Ñ(°%·-±-ÐQV×QfÑQfÜ! %§/¡/Ó2È×HaÑHaÜ! %§/¡/Ó2Ü  §¡Ó0Ò8°DÜ! $§+¡+×"7Ñ"7Ó8Ø$)×$?Ñ$?Ø$)×$?Ñ$?ô‘ô $›�Ü˜DŸN™N°6ÈE×LbÑLbØ.3×.EÑ.EÌ4ÐPU×PYÑPYË?Ø-2×-CÑ-CØ27·-±-À7Ñ2JØ05×0DÑ0Dô	Fð 	Frh   c                óò  — i }| j                   j                  D ]Û  }|j                  sŒ|j                  |j                  t
        «      }|€Œ3|t
        u r| j                  |j                  ||«      }n || j                  «      }t        |t        «      st        d«      ‚|j                  |j                  k7  rt        d«      ‚|j                  | j                  urt        d«      ‚|||j                  <   ŒÝ |S )NÚINVALID_ADAPTERÚADAPTER_MISMATCHÚADAPTER_VERIFIER_MISMATCH)rë   ÚbackendsÚenabledr¦   rM   Ú_MISSINGr"  rõ   r�   r   r#   Úverifier)rw   Ú	factoriesrã   rä   ÚadaptersÚsettingsÚfactoryÚadapters           ri   r  zGateway._build_adapters  sÛ   € ØˆØŸ™×,Ñ,ò 	.ˆHØ×#Ò#ØØ—m‘m H§M¡M´8Ó<ˆGØˆØØœ(Ñ"Ø×/Ñ/°·±¸|È\ÓZ‘á! $§.¡.Ó1�Ü˜g¤~Ô6Ü(Ð):Ó;Ð;Ø�|‰|˜xŸ}™}Ò,Ü(Ð);Ó<Ð<Ø×Ñ t§~¡~Ñ5Ü(Ð)DÓEÐEØ&-ˆH�X—]‘]Ò#ð!	.ð" ˆrh   c                ó,   — t        | j                  «      S rs   )rÏ   r  rÌ   s    ri   r,  zGateway.adapters&  s   € ä�D—N‘NÓ#Ð#rh   c                ó   — | j                   S rs   )r  rÌ   s    ri   Údecision_logzGateway.decision_log*  s   € à�y‰yÐrh   c                ó(   — | j                  |d¬«      S )u   Einziger AusfÃ¼hrungspfad.T©Úexecute©Ú_process©rw   rÓ   s     ri   ÚhandlezGateway.handle0  s   € à�}‰}˜W¨dˆ}Ó3Ð3rh   c                ó(   — | j                  |d¬«      S )uS   Entscheidet und protokolliert nur. Keine AusfÃ¼hrung, kein Budget, keine Clearance.Fr4  r6  r8  s     ri   rÅ   zGateway.shadow4  s   € à�}‰}˜W¨eˆ}Ó4Ð4rh   c          	     óR  — t        |t        «      r| j                  j                  |«      sy|r| j                  j                  d«       n| j                  j                  dd«       | j                  j                  t        | j                  «       «      d|dt        |«      dœ«       y)uT   RÃ¼ckmeldung des Plugins zur Claude-Zustellung. Nur fÃ¼r echte (verbrauchte) Nonces.Fr  ÚDELIVERY_FAILEDÚdelivery_report)rB   Úphaser½   r¾   ÚokT)r�   ry   rò   Úwas_usedr   Úrecord_successÚrecord_failurer  ÚwriterÝ   rì   rÄ   )rw   r½   Únoncer?  s       ri   Úreport_deliveryzGateway.report_delivery8  s~   € ä˜%¤Ô%¨T¯\©\×-BÑ-BÀ5Ô-IØÙØ�L‰L×'Ñ'¨Õ1à�L‰L×'Ñ'¨Ð2CÔDØ�	‰	�‰œt D§K¡K£MÓ2Ð=NÐZ`Ø$,´D¸³Hñ>ô 	?àrh   c          	     ó–   — 	 | j                   j                  t        | j                  «       «      d|d|ddœ«       y# t        $ r Y yw xY w)zIProtokolliert eine schon an der Bridge abgewiesene Anfrage (ohne Inhalt).Údecisionr[   Úbridge)rB   r>  rÅ   r¼   rv   Úrejected_atN)r  rC  rÝ   rì   Ú	Exception)rw   rv   rÅ   s      ri   Úlog_rejected_requestzGateway.log_rejected_requestD  sI   € ð	Ø�I‰I�O‰O¤4¨¯©«Ó#6ÀÐW]Ø)0¸$ÈxñYõ Zøäò 	Ùð	ús   ‚9< ¼	AÁAc           	     ó2  — i }| j                   j                  D ]ž  }| j                  j                  |j                  «      }|j
                  |j                  | j                  v |j                  |j                  |j                  | j                  j                  |j                  «      dœ||j                  <   Œ  t        t        | j                   j                  «      | j                  j!                  «       | j                   j"                  j$                  |dœS )N)r(  r/  rý   Úconsecutive_failuresÚ
last_errorrû   )rÊ   Úallowed_modesÚkey_availableÚcodex_real_executionr'  )rë   r'  r   r  rM   r(  r  r¿   ÚfailuresrN  rü   Úusage_todayrË   ÚsortedrO  rñ   Ú	availabler  r  )rw   r'  r-  rý   s       ri   r¿   zGateway.statusL  sÕ   € ØˆØŸ™×,Ñ,ò 		ˆHØ—\‘\×'Ñ'¨¯©Ó6ˆFà#×+Ñ+Ø#Ÿ=™=¨D¯N©NÐ:Ø Ÿ-™-Ø(.¯©Ø$×/Ñ/ØŸ,™,×2Ñ2°8·=±=ÓAñ'ˆH�X—]‘]Ò#ð		ô )Ü# D§K¡K×$=Ñ$=Ó>Ø!Ÿ]™]×4Ñ4Ó6Ø$(§K¡K×$5Ñ$5×$DÑ$DØ ñ
ð 	
rh   c                óN  — | j                   j                  }d }i }|j                  ��	 t        |j                  dd¬«      5 }t	        j
                  |«      }d d d «       t        t        «      st        d«      ‚|j                  d«      dk(  rt        «       i }}n�|j                  dg «      }t        |t        «      rt        d„ |D «       «      n	t        «       }|j                  d	i «      }t        |t        «      r=|j                  «       D �	�
ci c]"  \  }	}
t        |
t        «      sŒt        |	«      |
“Œ$ }}	}
|j                   �|€|j                   n||j                   z  }|xs
 t        «       |fS # 1 sw Y   �ŒxY w# t        t        f$ r}t        d«      |‚d }~ww xY wc c}
}	w )
NÚrr    )ÚencodingÚALLOWLIST_UNAVAILABLEÚdmPolicyÚdisabledÚ	allowFromc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrs   )ry   )rŽ   Úxs     ri   r�   z*Gateway._load_allowlist.<locals>.<genexpr>r  s   è ø€ Ò5¨!œs 1ŸvÑ5ùs   ‚Úgroups)rë   ÚauthÚtelegram_access_fileÚopenÚjsonÚloadÚOSErrorrª   r=   r�   rÏ   r¦   Ú	frozensetr§   Úitemsry   Úallowed_sender_ids)rw   r`  Údmr_  r9  r¬   r³   ÚallowÚ
raw_groupsÚkÚvs              ri   Ú_load_allowlistzGateway._load_allowlistb  sw  € Ø�{‰{×ÑˆØ'+ˆØˆØ×$Ñ$Ñ0ðCÜ˜$×3Ñ3°SÀ7ÔKð -ÈvÜŸ9™9 VÓ,�D÷-ô ˜d¤DÔ)Ü Ð!8Ó9Ð9Ø�x‰x˜
Ó# zÒ1Ü&›[¨"�F‘àŸ™ ¨bÓ1�Ü9CÀEÌ4Ô9P”YÑ5¨uÔ5Ô5ÔV_ÓVa�Ø!ŸX™X h°Ó3�
Ü˜j¬$Ô/Ø4>×4DÑ4DÓ4F×^©D¨A¨qÌ*ÐUVÔX\ÕJ]œc !›f a™iÐ^�FÑ^Ø×"Ñ"Ð.Ø,.¨J�×(Ò(¸BÀ×AXÑAXÑ<XˆBØÒ ”Y“[ &Ð(Ð(÷!-ñ -ûäœZÐ(ò CÜ Ð!8Ó9¸sÐBûðCüó _s;   ©E> ÁE1ÁE> ÄF!Ä'F!Å1E;Å6E> Å>FÆFÆFc                ó   — |j                   dk7  ry| j                  «       \  }}|j                  dk(  r;|j                  |j                  k7  ry|j                  |vryt
        j                  dfS |j                  dv r~|j                  |j                  «      }|€y|j                  d	«      xs g }t        |t        «      sy
|r&|j                  |D �ch c]  }t        |«      ’Œ c}vryt
        j                  dfS yc c}w )Nr   )NÚUNSUPPORTED_TRANSPORTr@   )NÚCHAT_SENDER_MISMATCH)NÚSENDER_NOT_ALLOWEDÚALLOWLISTED)r>   rA   )NÚGROUP_NOT_CONFIGUREDr\  )NÚGROUP_POLICY_INVALID)NÚSENDER_NOT_ALLOWED_IN_GROUPÚGROUP_POLICY)NÚUNSUPPORTED_CHAT_TYPE)rG   rn  rE   rD   rF   rk   rn   r¦   r�   r§   ry   ro   )rw   rÓ   Úallowedr_  ÚpolicyÚ
allow_fromr^  s          ri   Ú_authenticatezGateway._authenticatez  sí   € Ø×Ñ 
Ò*Ø0Ø×.Ñ.Ó0‰ˆ�Ø×Ñ 	Ò)Ø�‰ '×"3Ñ"3Ò3Ø3Ø× Ñ ¨Ñ/Ø1Ü—?‘? MÐ1Ð1Ø×ÑÐ 7Ñ7Ø—Z‘Z §¡Ó0ˆFØˆ~Ø3ØŸ™ KÓ0Ò6°BˆJÜ˜j¬$Ô/Ø3Ù˜g×/Ñ/È
Ö7SÀ1¼¸A½Ò7SÑSØ:Ü×)Ñ)¨>Ð9Ð9Ø,ùò 8Ts   ÃC;c                óÔ  — g i }}| j                   j                  D �]G  }| j                  j                  |j                  «      }| j
                  j                  |j                  «      }| j                  j                  |j                  |«      }|t        j                  u xr |j                  dk7  }	|j                  xr |d uxr |j                  dk7  xr |	 }
|j                  |d u|j                  ||	dœ||j                  <   |j                  t        |j                  |j                  |j                   |
||j"                  |j$                  |j&                  ¬«      «       �ŒJ ||fS )Nr  rb  )r(  r/  rý   Úbudget_availableÚprincipal_restricted)rU  Úbudget_allowedÚquality_scoreÚmax_context_bytesÚtask_quality)rë   r'  r  r¦   rM   r   r  rü   rU  rk   ro   r(  r¿   r©   r)   ÚcapabilitiesÚtasksÚqualityr‚  rƒ  )rw   Ú	principalÚtokensr'  Ústatesr-  r/  rý   Ú	budget_okÚ
restrictedrU  s              ri   Ú_backend_snapshotzGateway._backend_snapshot�  sH  € Ø˜r�&ˆØŸ™×,Ñ,ó 	ˆHØ—n‘n×(Ñ(¨¯©Ó7ˆGØ—\‘\×'Ñ'¨¯©Ó6ˆFØŸ™×.Ñ.¨x¯}©}¸fÓEˆIØ"¤i×&<Ñ&<Ð<ÒZÀÇÁÐRZÑAZˆJØ!×)Ñ)ò ,¨g¸TÐ.Aò ,ÀfÇmÁmÐW]ÑF]ò ,Ø!+˜^ð ð $×+Ñ+¸ÀtÐ8KÐW]×WdÑWdØ$-Àzñ%ˆF�8—=‘=Ñ!ð �O‰OœGØ—‘˜x×4Ñ4°h·n±nÐPYØ(¸×8HÑ8HØ"*×"<Ñ"<È8×K`ÑK`ôö ð	ð  ˜ÐÐrh   c                óp  — | j                   |   }| j                  �|j                  s
dddœ|d<   |S t        | j                  j	                  ||«      «      }| j
                  j                  |«      }g d}	}|D ]ø  }
t        |
t        «      st        d«      ‚| j                  j                  t        d|
f¬«      «      j                  d   d   }| j
                  j                  j                  j!                  ||«      s|	dz  }	Œ‹t        |j"                  t%        ||
gz   «      |j&                  «      }|j(                  �#|j+                  «       |j(                  kD  r|	dz  }	Œè|j-                  |
«       Œú t/        |«      t/        |«      |	dœ|d<   t        |j"                  t%        |«      |j&                  «      S )	Nr   )ÚofferedÚusedÚmemoryÚINVALID_MEMORY_SNIPPETr¢   )r�  r   )rŽ  r�  Úrejected)r  r  Úaccepts_memoryr§   rÔ   rë   r¾   r�   r'   Ú	TypeErrorrî   Úclassifyr&   ÚpartsrÇ   ró   ÚpermitsÚpromptr˜   rI   r‚  Ú
size_bytesr©   r—   )rw   rÓ   r¾   ÚenvelopeÚrecordr/  Úsnippetsr-  r�  r’  ÚsnippetÚtierÚ	candidates                ri   Ú_enrichzGateway._enrich¤  s‰  € à—.‘. Ñ)ˆØ�<‰<Ð w×'=Ò'=Ø+,°aÑ8ˆF�8ÑØˆOÜ˜Ÿ™×1Ñ1°'¸7ÓCÓDˆØ—;‘;×&Ñ& wÓ/ˆØ˜QˆhˆØò 	!ˆGÜ˜g¤}Ô5ÜÐ 8Ó9Ð9Ø×#Ñ#×,Ñ,¬_¸RÈÈ
Ô-SÓT×ZÑZÐ[\Ñ]Ð^_Ñ`ˆDØ—;‘;×&Ñ&×-Ñ-×5Ñ5°g¸tÔDØ˜A‘�ØÜ'¨¯©¼¸tÀwÀiÑ?OÓ9PÐRZ×RfÑRfÓgˆIØ×)Ñ)Ð5¸)×:NÑ:NÓ:PÐS[×SmÑSmÒ:mØ˜A‘�ØØ�K‰K˜Õ ð	!ô (+¨8£}¼cÀ$»iÐU]Ñ^ˆˆxÑÜ˜xŸ™´°d³¸X×=QÑ=QÓRÐRrh   c                ó  — |j                   j                  }dj                  d„ |j                  D «       «      xs d}| j                  t
        k(  �r7|j                  }| j                  D ��ch c]%  }|j                  |k(  sŒ|j                  D ]  }|’Œ Œ' }	}}d|› d|› d�g}
d|	v rIdj                  t        d„  ||«      D «       «      «      xs d	}|
j                  d
|› d|› d|› d|› d�	«       d|	v r|
j                  |› d�«       d|	v r|
j                  d|› d�«       |	ddhz  r|
j                  |› d�«       d|	v r|
j                  d«       d|	v r|
j                  d«       |
j                  d«       dj                  |
«      S | j                  t        k(  r	d|› d|› d�S t        | j                  D ��ch c]  }|j                  D ]  }|’Œ Œ c}}«      }	ddj                  |	«      xs d z   d!z   S c c}}w c c}}w )"Nz, c              3  óD   K  — | ]  }|j                  d «      rŒ|–— Œ y­w)zattachment.N)Ú
startswith)rŽ   rW  s     ri   r�   z#Gateway._explain.<locals>.<genexpr>À  s   è ø€ Ò\ ÀÇÁÈ]Õ@[œ!Ñ\ùs   ‚ ™ zkeine RegelzNicht gesendet: Modus /z ist gesetzt, aber z$ darf diesen Auftrag nicht bekommen.ÚPRIVACY_NOT_PERMITTEDc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrs   )rš   )rŽ   Úts     ri   r�   z#Gateway._explain.<locals>.<genexpr>Æ  s   è ø€ Ò*Q°q¨1¯7­7Ñ*Qùs   ‚Únichtsu   Datenschutz: Einstufung â€žu   â€œ (z); u    erhÃ¤lt nur: ú.ÚUNAVAILABLEu    ist derzeit nicht verfÃ¼gbar.ÚBUDGET_EXHAUSTEDu   Das Tagesbudget fÃ¼r u    ist erschÃ¶pft.ÚCAPABILITY_MISSINGÚTASK_UNSUPPORTEDu"    unterstÃ¼tzt diese Aufgabe nicht.ÚCONTEXT_TOO_LARGEu,   Der Kontext ist fÃ¼r dieses Modell zu groÃŸ.ÚQUALITY_BELOW_MINIMUMuA   Die QualitÃ¤tsuntergrenze fÃ¼r diese Aufgabe wird nicht erreicht.uP   Die manuelle Wahl hebt keine PrÃ¼fung auf. Mit /auto oder /claude erneut senden.ú
u   Nicht gesendet: Einstufung â€žu#   ) ist fÃ¼r kein Modell freigegeben.u3   Nicht gesendet: kein geeignetes Modell verfÃ¼gbar (zkeine Backendsú).)rž  rš   ÚjoinÚrule_idsrv   r,   Ú
candidatesr¾   ÚreasonsrT  r©   r.   )rG  Ú
assessmentÚmodeÚmatrix_tiersrž  ÚrulesÚwantedÚcrW  r´  Úlinesry  s               ri   Ú_explainzGateway._explain¼  s  € ð �‰×$Ñ$ˆØ—	‘	Ñ\ Z×%8Ñ%8Ô\Ó\ÒmÐ`mˆØ�=‰=Ô7Ó7Ø—Z‘ZˆFØ"*×"5Ñ"5×`˜Q¸¿¹ÀfÓ9LÐVW×V_ÑV_Ò`ÐQR’qÐ`�qÐ`ˆGÑ`Ø.¨v¨hÐ6IÈ&ÈÐQuÐvÐwˆEØ&¨'Ñ1ØŸ)™)¤FÑ*Q¹LÈÓ<PÔ*QÓ$QÓRÒ^ÐV^�Ø—‘Ð:¸4¸&ÀÀeÀWÈCÐPVÈxÐWeÐfmÐenÐnoÐpÔqØ Ñ'Ø—‘ ˜xÐ'EÐFÔGØ! WÑ,Ø—‘Ð4°V°HÐ<LÐMÔNØÐ.Ð0BÐCÒCØ—‘ ˜xÐ'IÐJÔKØ" gÑ-Ø—‘ÐKÔLØ&¨'Ñ1Ø—‘Ð`ÔaØ�L‰LÐkÔlØ—9‘9˜UÓ#Ð#Ø�=‰=œNÒ*Ø3°D°6¸¸u¸gÐEhÐiÐiÜ X×%8Ñ%8×L À!Ç)Á)ÒL¸Qš!ÐL˜!ÓLÓMˆØDÈÏ	É	ÐRYÓHZÒHnÐ^nÑoÐrvÑvÐvùó) aùó& Ms   Á,G5ÂG5Æ8G;
c                óŠ  — t        | j                  «       «      d| dœ}t        |t        «      r”|j	                  |j
                  |j                  |j                  |j                  |j                  t        |j                  j                  d«      «      t        |j                  «      t        |j                  «      dœ«       |S )NrG  )rB   r>  rÅ   r    )rG   rF   rD   rE   rH   Úprompt_sha256Úprompt_charsÚattachment_count)rÝ   rì   r�   r}   ÚupdaterG   rF   rD   rE   rH   r(   rC   r¥   r—   rI   )rw   rÓ   r5  r›  s       ri   Ú_base_recordzGateway._base_recordÙ  sš   € Ü" 4§;¡;£=Ó1¸JÐV]ÐR]Ñ^ˆÜ�gœ~Ô.Ø�M‰MØ$×.Ñ.¸W×=NÑ=NÐ[b×[jÑ[jØ$×.Ñ.¸g×>PÑ>PÜ!+¨G¯L©L×,?Ñ,?ÀÓ,HÓ!IÜ # G§L¡LÓ 1ÄsÈ7×K^ÑK^ÓG_ñ	ô ð ˆrh   c          	     ó8  — |j                   j                  |d<   |j                  |d<   |j                  |d<   t	        |j
                  «      |d<   |j                  r|j                  |d<   t        t        j                  «       |z
  dz  d«      |d<   	 | j                  j                  |«       |S # t        $ r` |r3t        t        j                  d	|j                   |j"                  ¬
«      cY S t        di i |j$                  ¥d|j
                  dz   i¥¤ŽcY S w xY w)Nr¼   rv   r¿   rÃ   rÆ   éè  é   Úduration_msÚLOG_UNAVAILABLE)r½   rÅ   ©ÚLOG_WRITE_FAILEDrg   )r¼   rš   rv   r¿   r§   rÃ   rÆ   ÚroundÚtimeÚ	monotonicr  rC  rJ  r»   rS   rf   r½   rÅ   Ú__dict__)rw   r›  ÚresponseÚstartedÚmust_logs        ri   Ú_respondzGateway._respondä  s  € Ø%×.Ñ.×4Ñ4ˆˆzÑØ!Ÿ™ˆˆv‰Ø#Ÿ?™?ˆˆxÑÜ˜xŸ~™~Ó.ˆˆw‰Ø×$Ò$Ø)1×)BÑ)BˆFÐ%Ñ&Ü %¤t§~¡~Ó'7¸'Ñ'AÀTÑ&IÈ1Ó Mˆˆ}Ñð	mØ�I‰I�O‰O˜FÔ#ð ˆøô ò 	mÙÜ&¤x§~¡~Ð7HÐQY×Q`ÑQ`Ø.6¯o©oô?ò ?ä"ÑlÐ%k¨×(9Ñ(9Ð%k¸7ÀHÇNÁNÐUjÑDjÑ%kÑlÒlð		mús   ÂB0 Â0<DÃ.(DÄDc               ó®  — t        j                  «       }| j                  ||«      }	 | j                  ||||«      \  }}|€|j                  d«      S | j                  ||||xs | ¬«      S # t        $ r_}t        |«      j                  |d<   t        |t        «      r|j                  nd}t        t        j                  || ¬«      d}}Y d }~Œ�d }~ww xY w)NÚ	exceptionÚINTERNAL_ERROR©rÅ   FÚ_final)rÐ  )rË  rÌ  rÂ  Ú_deciderJ  r–   r\   r�   r=   rv   r»   rS   rf   ÚpoprÑ  )	rw   rÓ   r5  rÏ  r›  rÎ  rÐ  r³   rv   s	            ri   r7  zGateway._processõ  sÌ   € Ü—.‘.Ó"ˆØ×"Ñ" 7¨GÓ4ˆð	bØ!%§¡¨g°wÀÈÓ!PÑˆH�hð
 ÐØ—:‘:˜hÓ'Ð'Ø�}‰}˜V X¨wÀÒAXÐQXÈ[ˆ}ÓYÐYøô ò 	bÜ"& s£)×"4Ñ"4ˆF�;ÑÜ)¨#¬zÔ:�3—8’8Ð@PˆDÜ!0´·±ÀÐRYÈkÔ!ZÐ\a�h�Hûð	bús   ¨A, Á,	CÁ5ACÃCc                óÖ   — t        t        j                  |j                  |j                  |j
                  d d d |j                  d|j                  j                  |j                  ¬«      S )NT)	r½   r¾   r¿   rÀ   rÂ   rÃ   rÅ   rÆ   rÇ   )
r»   rS   re   rv   r½   r¾   rÃ   r¼   rš   rÇ   )rw   rÎ  s     ri   Ú_shadow_wrapzGateway._shadow_wrap  sT   € ÜÜ×$Ñ$ h§m¡m¸H¿O¹OÐU]×UeÑUeØ D°$¸h¿n¹nÐUYØ%×.Ñ.×4Ñ4¸h×>NÑ>Nô
ð 	
rh   c                óü  ‡ ‡— ‰rdnd}|‰ j                   j                  vrt        t        j                  d‰ ¬«      dfS t        |t        «      st        t        j                  d‰ ¬«      dfS d4ˆˆ fd„}‰ j                  |«      \  }}|r|j                  nd |dœ|d	<   |€  |t        t        j                  d
«      «      S d|j                  › d|j                  › �}	|	|d<   ‰r‰ j                  n‰ j                  }
‰r‰ j                  n‰ j                  }|
j!                  |j"                  › d|j                  › d|j                  › �|	‰ j%                  «       «      \  }}|s'||d<    |t        t        j                  d|	¬«      «      S t'        |	«      }|t(        j*                  u }t-        |j.                  «      }|j0                  j                  |d<   |j0                  t2        j4                  u r" |t        t        j6                  d|	¬«      «      S |j0                  t2        j8                  t2        j:                  fv rX|sV|j=                  t>        j@                  «        |t        t        j@                  d|	|jB                  j                  ¬«      «      S |j0                  t2        j8                  u r�|jE                  |j                  |jF                  «       |jF                  j                  |d<   |jF                  tH        jJ                  u rdnd} |t        t        jL                  d|	d|jF                  j                  › d|› d�¬«      «      S |j0                  t2        j:                  u r|jF                  |j.                  }}n9|r|jO                  |j                  «      ntH        jJ                  }|j.                  }|j                  |d<   |jQ                  «       sb|jR                  sV|j=                  t>        j@                  «        |t        t        j@                  d|	|jB                  j                  ¬«      «      S tU        |jW                  d«      «      ‰ j                   jX                  jZ                  kD  rV|j=                  t>        j@                  «        |t        t        j@                  d |	|jB                  j                  ¬«      «      S t]        |d!|jR                  «      }‰ j^                  ja                  |«      }tc        |‰ j                   jd                  jf                  «      }ti        |jk                  «       «      }|jm                  |jn                  j                  tq        |jr                  «      |jt                  D ��cg c]  \  }}||j                  d"œ‘Œ c}}|jv                  |jx                  t{        |j|                  «      |jk                  «       |d#œ«       ‰ j                  ||«      \  }}||d$<   t�        |	|jv                  |jn                  |j|                  ||jk                  «       ¬%«      }tƒ        ||‰ j                   j„                  j†                  ‰ j                   jd                  jˆ                  ‰ j                   jd                  jŠ                  d&k(  ¬'«      }|jŒ                  |jŽ                  |j�                  |j’                  |j”                  |j–                  D �cg c]:  }|jŽ                  |j˜                  tq        |jš                  «      |jœ                  d(œ‘Œ< c}d)œ|d*<   |jž                  r|jŽ                  €¶|j=                  t>        j@                  «       |r<‰ j¡                  |||‰ j                   j„                  j†                  j¢                  «      nd } |t        t        j@                  |jŒ                  |	|jB                  j                  ||jn                  j                  ¬+«      «      S |jŽ                  } |jŒ                  t¤        k(  rd,nd!}!	 ‰ j§                  || ||«      }"‰ j^                  ja                  |"«      }#|#jn                  j                  |d/<   ‰ j                   j„                  j†                  j«                  | |#jn                  «      sW|j=                  t>        j@                  «        |t        t        j@                  d0|	| |jB                  j                  ¬.«      «      S | d1k(  rt        j¬                  nt        jL                  }$‰sKt        t        j®                  |jŒ                  |	| |!d2|$j                  |#jn                  j                  ¬3«      d2fS ‰ j±                  |||||	| |"|#|!||«      S c c}}w c c}w # t¨        $ rZ |j=                  t>        j@                  «        |t        t        j@                  d-|	| |jB                  j                  ¬.«      «      cY S w xY w)5Nr5  rÅ   ÚMODE_NOT_ENABLEDrÕ  Fr�   c                ó6   •— ‰r| dfS ‰j                  | «      dfS )NF)rÚ  )rÎ  r5  rw   s    €€ri   ÚdonezGateway._decide.<locals>.done  s%   ø€ Ù '�HÈ5ÐPÐP¨T×->Ñ->¸xÓ-HÈ5ÐPÐPrh   )r‡  ÚreasonÚauthenticationÚNOT_AUTHORIZEDztg-ú-r½   ú:Úduplicate_ofÚDUPLICATE_MESSAGE)r½   ÚcommandÚPLUGIN_OWNED_COMMANDÚMODE_COMMAND_NOT_ALLOWED)r½   r¿   Úmanual_modezautomatische Auswahlu=   Datenschutz-, Budget- und VerfÃ¼gbarkeitsregeln gelten weiterÚMODE_SETu   Modellmodus fÃ¼r diesen Chat: z (r°  )r½   rÀ   ÚEMPTY_MESSAGEr    r¡   rg   )Úpartrž  )rÇ   Úprivacy_rulesÚprivacy_partsÚ
task_classÚ	task_ruler„  Úcontext_bytesÚtoken_estimateÚbackend_state)rñ  Úchecked_fallback)Úmin_qualityÚmanual_fallback)r¾   Úeligibler´  r†  )rv   ÚselectedÚ	tie_breakÚmanualÚfallback_fromr³  Úrouting)r½   r¿   rÀ   rÇ   )r*   ÚMEMORY_PROVIDER_ERROR©r½   r¾   r¿   Úfinal_privacyÚPRIVACY_CHANGED_BY_ENRICHMENTr  T)r½   r¾   rÃ   rÅ   rÆ   rÇ   )rÎ  r»   )Yrë   rO  r»   rS   rf   r�   r}   r|  rš   r_   rD   rH   r÷   rù   rø   rú   ÚclaimrG   rì   r4   rk   rn   r"   rC   rK   r!   ÚPLUGIN_OWNEDr`   ÚSET_MODEÚONE_SHOTÚ
transitionr5   rb   r¿   r£   r¶  r-   ÚAUTOra   r¦   ÚstriprI   r—   r¥   Úlimitsr­   r&   rî   r•  r   rü  Údefault_task_classr   r™  rÁ  rž  r§   r²  r–  rï  ÚrulerT  r„  rŒ  r+   r1   rÇ   ró   rõ  rö  rv   r¾   rù  rú  rû  r³  r÷  r´  r†  ry  r¼  Ú	tiers_forr*   r   rJ  r—  rd   re   Ú_execute)%rw   rÓ   r5  r›  rÏ  Ú	mode_namerÞ  r‡  Úauth_reasonr½   ÚdedupeÚmodesÚclaimedÚoriginalÚ	lifecyclerl   ÚparsedÚhintré  r˜  rš  rµ  Útaskrˆ  rM   rž  r'  r‰  ÚjobrG  rº  rV   r¾   rÃ   Úfinal_envelopeÚfinalÚplanneds%   ` `                                  ri   r×  zGateway._decide	  sX  ù€ Ù!(‘I¨hˆ	Ø˜DŸK™K×5Ñ5Ñ5Ü"¤8§>¡>Ð3EÐRYÈkÔZÐ\aÐaÐaÜ˜'¤>Ô2Ü"¤8§>¡>Ð3DÐQXÈ[ÔYÐ[`Ð`Ð`ö	Qð "&×!3Ñ!3°GÓ!<Ñˆ	�;ÙDM°·²ÐSWÐcnÑ#oˆÐÑ ØÐÙœ¬¯©Ð7GÓHÓIÐIà�w—‘Ð' q¨×);Ñ);Ð(<Ð=ˆØ!ˆˆxÑÙ!(�—’¨d×.AÑ.AˆÙ&�—’¨D×,>Ñ,>ˆØ"ŸL™L¨G×,=Ñ,=Ð+>¸aÀÇÁÐ?PÐPQÐRY×RdÑRdÐQeÐ)fØ)/°·±³ó@Ñˆ�áØ%-ˆF�>Ñ"Ùœ¬¯©Ð7JÐSYÔZÓ[Ð[ä  Ó(ˆ	ØœYŸ_™_Ð,ˆä˜wŸ|™|Ó,ˆØ"ŸK™K×-Ñ-ˆˆyÑØ�;‰;œ+×2Ñ2Ñ2Ùœ¬×(@Ñ(@ÐBXÐagÔhÓiÐiØ�;‰;œ;×/Ñ/´×1EÑ1EÐFÑFÉuØ× Ñ ¤×!2Ñ!2Ô3Ùœ¬×(8Ñ(8Ð:TÐ]cØ/8×/?Ñ/?×/EÑ/EôGó Hð Hà�;‰;œ+×.Ñ.Ñ.Ø�I‰I�g—o‘o v§{¡{Ô3Ø$*§K¡K×$5Ñ$5ˆF�=Ñ!Ø.4¯k©k¼T¿Y¹YÑ.FÑ*ØXð áœ¬¯©¸
È6Ø5SÐTZ×T_ÑT_×TeÑTeÐSfÐfhÐimÐhnÐnpÐ3qôsó tð tð �;‰;œ+×.Ñ.Ñ.Ø"(§+¡+¨v¯{©{˜‰Ká8=˜%Ÿ)™) G§O¡OÔ4Ä4Ç9Á9ˆKØ—\‘\ˆFØ +× 1Ñ 1ˆˆ}Ñà�|‰|Œ~ g×&9Ò&9Ø× Ñ ¤×!2Ñ!2Ô3Ùœ¬×(8Ñ(8¸/ÐRXØ/8×/?Ñ/?×/EÑ/EôGó Hð Häˆv�}‰}˜WÓ%Ó&¨¯©×);Ñ);×)JÑ)JÒJØ× Ñ ¤×!2Ñ!2Ô3Ùœ¬×(8Ñ(8Ð:JÐSYØ/8×/?Ñ/?×/EÑ/EôGó Hð Hô # 6¨2¨w×/BÑ/BÓCˆØ×%Ñ%×.Ñ.¨xÓ8ˆ
Ü˜X t§{¡{×':Ñ':×'MÑ'MÓNˆÜ  ×!4Ñ!4Ó!6Ó7ˆØ�‰Ø!—‘×,Ñ,¼tÀJ×DWÑDWÓ?XØS]×ScÑSc×dÁZÀTÈ4 t°T·Z±ZÓ@ÓdØŸ/™/¸¿	¹	ÔSYÐZ^×ZkÑZkÓSlØ%×0Ñ0Ó2Àfñ	
ô 	ð  ×1Ñ1°)¸VÓDÑˆ�&Ø"(ˆˆÑÜ˜ §¡°*·/±/À4×CTÑCTÐVaØ'/×':Ñ':Ó'<ô>ˆä˜˜h¨¯©×(;Ñ(;×(BÑ(BØ%)§[¡[×%8Ñ%8×%DÑ%DØ)-¯©×)<Ñ)<×)LÑ)LÐPbÑ)bôdˆð —M‘M¨x×/?Ñ/?Èh×N`ÑN`Ø—o‘o¸×8NÑ8Nà;C×;NÑ;NöPØ67ð ()§y¡y¸a¿j¹jÔUYÐZ[×ZcÑZcÓUdØ'(§y¡yó2ò Pñ
ˆˆyÑð ×Ò 8×#3Ñ#3Ð#;Ø× Ñ ¤×!2Ñ!2Ô3áð —]‘] 8¨Z¸ÀdÇkÁk×FYÑFY×F`ÑF`×FjÑFjÔkØ#'ð áœ¬×(8Ñ(8¸(¿-¹-ÐPVØ/8×/?Ñ/?×/EÑ/EÐRWØ0:·±×0EÑ0EôGó Hð Hð ×"Ñ"ˆØ)1¯©Ô:JÒ)JÑ%ÐPRˆð	YØ!Ÿ\™\¨'°7¸HÀfÓMˆNð
 × Ñ ×)Ñ)¨.Ó9ˆØ"'§*¡*×"2Ñ"2ˆˆÑØ�{‰{×"Ñ"×)Ñ)×1Ñ1°'¸5¿:¹:ÔFØ× Ñ ¤×!2Ñ!2Ô3Ùœ¬×(8Ñ(8Ð:YÐbhØ07À	×@PÑ@P×@VÑ@VôXó Yð Yð :AÀHÒ9L”8×5Ò5ÔRZ×R`ÑR`ˆÙÜ"Ü×(Ñ(¨(¯-©-ÀÐPWÐ_dØ¨g¯m©mÀUÇZÁZ×EUÑEUôð ðð ð
 �}‰}˜W f¨g°yÀ&È'ÐSaÐchØ" E¨8ó5ð 	5ùó_ eùòPøô ò 	YØ× Ñ ¤×!2Ñ!2Ô3Ùœ¬×(8Ñ(8Ð:QÐZ`Ø07À	×@PÑ@P×@VÑ@VôXó Yò Yð	Yús   ÖfÛ.?fà'f æA g;ç:g;c                ó¬  ‡‡‡‡— | j                   ‰   }‰dk(  r*t        | j                  j                  j                  ¬«      n	t        «       }t        ‰||j                  |j                  |j                  |j                  |j                  |«      }|j                  «       |d<   t        j                  fd8ˆˆˆˆfd„}	 |j                  |«      }t#        |j%                  «       «      }| j&                  j)                  ‰‰|«      s |d«      S 	 | j*                  j-                  ‰‰‰j.                  ||j                  |j                  ¬«      }d|j<                  |dœ|d<   ‰j?                  t@        jB                  «       ‰jD                  jF                  |d<   	 | jH                  jK                  i |¥dddœ¥«       ‰j?                  t@        jN                  «       	 |jQ                  ||«      }|jD                  tT        j                  u}| j&                  j3                  ‰|¬
«       |jW                  «       D ��ci c]  \  }}|dv sŒ||“Œ }}}d|d<   ‰|d<   |jD                  jF                  |d<   |jX                  |d<   |jD                  tT        jZ                  u �r(| j\                  j_                  ‰«       ta        |jb                  | j                  jd                  jf                  ¬«      }‰j?                  t@        jh                  «       tk        |jb                  «      |d<   tm        |jb                  jo                  d«      «      |d <   tq        |jr                  «      |d!<   t5        t        jt                  d"‰‰‰jD                  jF                  |jv                  |	|jx                  z   ‰j.                  jF                  ¬#«      }�n%|jD                  tT        jz                  u rŸ‰j?                  t@        jh                  «       d }|j                   t|        k(  r|
rd$|j~                  › d%‰› d&�}t5        t        j€                  d'‰‰‰jD                  jF                  ||j‚                  |	‰j.                  jF                  ¬(«	      }�nj|jD                  tT        jL                  u rÙ| j\                  j…                  ‰|jX                  xs d)«      }||d*<   ‰j?                  |j†                  rt@        jˆ                  nt@        jL                  «       |
rd+‰› d,|jX                  › d-�nd }t5        t        jL                  |jX                  xs d.‰‰‰jD                  jF                  ||	‰j.                  jF                  ¬#«      }nu‰j?                  t@        jL                  «       t5        t        j                  |jX                  xs d/‰‰‰jD                  jF                  |	‰j.                  jF                  ¬0«      }t‹        t�        jŽ                  «       |z
  d1z  d2«      |d3<   |j�                  jF                  |d<   |j                   |d<   |jD                  |d<   tq        |jx                  «      |d4<   	 | jH                  jK                  |«       ||d6<   y7# t        $ r} ||j                   «      cY d }~S d }~ww xY w# t0        $ rP}| j&                  j3                  ‰d	¬
«       t5        t        j6                  |j                   ‰‰¬«      dfcY d }~S d }~wt8        $ r9}| j&                  j3                  ‰d	¬
«        ||j                   «      cY d }~S d }~wt:        $ r | j&                  j3                  ‰d	¬
«       ‚ w xY w# t:        $ rs | j&                  j3                  ‰d	¬
«       ‰j?                  t@        jL                  «       t5        t        j6                  d‰‰‰jD                  jF                  ¬«      dfcY S w xY w# t:        $ r! tS        ‰‰tT        jL                  d¬«      }Y �Œ'w xY wc c}}w # t:        $ r, t5        d9i i |j’                  ¥d4|jx                  d5z   i¥¤Ž}Y �ŒÖw xY w):Nr  )Útimeout_secondsÚfinal_context_sha256rv   r¼   c                óð   •— ‰j                   t        j                  u r‰j                  t        j                  «       t        || ‰‰‰j                   j                  ‰j                  j                  ¬«      dfS )N)r½   r¾   r¿   rÇ   T)r¿   r5   ÚCREATEDr  rb   r»   rš   rž  )rv   r¼   rµ  r¾   r½   r  s     €€€€ri   rW   z!Gateway._execute.<locals>.blocked†  sf   ø€ Ø×Ñ¤9×#4Ñ#4Ñ4Ø×$Ñ$¤Y×%6Ñ%6Ô7Ü" 8¨T¸&È'Ø*3×*:Ñ*:×*@Ñ*@È*Ï/É/×J_ÑJ_ôaØbfðgð grh   rª  )r½   r¾   rÇ   Úcontext_digestrF   rD   F)Úconsumed)r½   r¾   T)Úclearance_issuedÚ
expires_atÚoutbound_sha256Úauthorizationr¿   ÚpendingÚCLEARANCE_ISSUED)r¼   rv   rÇ  rþ  ÚADAPTER_EXCEPTION)Ú
error_code)rB   rÅ   r½   rG   rF   rD   rE   rH   Úoutcomer>  r¾   Úadapter_statusÚadapter_code)Ú	max_charsÚoutput_charsr    Úoutput_sha256Ú
redactionsÚ	COMPLETED)r½   r¾   r¿   rÀ   rÃ   rÇ   z	Hinweis: uJ    war fÃ¼r diesen Auftrag nicht zulÃ¤ssig; nach vollstÃ¤ndiger PrÃ¼fung an z weitergeleitet.ÚFORWARD_ISSUED)r½   r¾   r¿   rÀ   rÂ   rÃ   rÇ   r¢   Úhealth_countedzAuftrag an z fehlgeschlagen (z?). Es gibt keinen automatischen Wechsel auf ein anderes Modell.rc   ÚADAPTER_BLOCKED)r½   r¾   r¿   rÃ   rÇ   rÄ  rÅ  rÆ  rÃ   rÈ  rÖ  )NT)rv   ry   r¼   rS   rg   )Jr  r   rë   r  r  r   rF   rD   rH   rJ   rB   ÚdigestrS   rb   Úoutbound_digestr   rv   r   r™  rü   Úreserverô   Úissuerž  r   Úsettler»   rf   r   rJ  r#  r  r5   ÚROUTEDr¿   rš   r  rC  rc   ÚRUNNINGr5  r   r   rg  r)  ÚSUCCESSr   rA  r6   Úoutputr  Úmax_reply_charsr1  r—   r(   r¥   r§   r0  ra   rC   rÃ   ÚFORWARDr*   rû  rd   rÂ   rB  Ú	timed_outÚ	TIMED_OUTrÊ  rË  rÌ  r¼   rÍ  )rw   rÓ   r›  rÏ  r  r½   r¾   rš  rµ  rÃ   rl   rG  r/  rz  r  rW   r6  r³   rˆ  rï   Úresultr!  rl  rm  Úoutcome_recordÚcheckedrÎ  ÚnoticeÚcountedrV   s       ``` `                     ri   r  zGateway._execute}  s@  û€ à—.‘. Ñ)ˆØW^ÐbiÒWi”°·±×1BÑ1B×1RÑ1RÕSÜ Ó"ð 	ä˜ ¨7×+<Ñ+<¸g¿o¹oÈw×OaÑOaØ ×0Ñ0°'·*±*¸fóFˆà)1¯©Ó):ˆÐ%Ñ&ä4<×4DÑ4D÷ 	gñ 	gð	%Ø%×5Ñ5°cÓ:ˆOô ! ×!4Ñ!4Ó!6Ó7ˆØ�|‰|×#Ñ# G¨V°VÔ<ÙÐ-Ó.Ð.ð	ØŸ™×*Ñ*°&À'ÐS]×SbÑSbØ:IÐU\×UfÑUfØ3:·?±?ð +ó DˆIð 8<È9×K_ÑK_Ø6Eñ#GˆˆÑà×ÑœY×-Ñ-Ô.Ø$×+Ñ+×1Ñ1ˆˆxÑð	HØ�I‰I�O‰OÐY˜vÐY°9ÐFXÒYÔZð 	×ÑœY×.Ñ.Ô/ð	iØ—_‘_ Y°Ó4ˆFð —=‘=¬×(<Ñ(<Ð<ˆØ�‰×Ñ˜F¨XÐÔ6Ø+1¯<©<«>÷ g¡4 1 a¸Qð Cfò >f˜!˜Q™$ð gˆñ gà"+ˆ�wÑØ$+ˆ�yÑ!Ø+1¯=©=×+>Ñ+>ˆÐ'Ñ(Ø)/×):Ñ):ˆ�~Ñ&à�=‰=œL×0Ñ0Ò0Ø�L‰L×'Ñ'¨Ô0Ü" 6§=¡=¸D¿K¹K×<NÑ<N×<^Ñ<^Ô_ˆGØ× Ñ ¤×!4Ñ!4Ô5Ü-0°·±Ó-?ˆN˜>Ñ*Ü.8¸¿¹×9MÑ9MÈgÓ9VÓ.WˆN˜?Ñ+Ü+/°×0BÑ0BÓ+CˆN˜<Ñ(Ü&¤x§~¡~°{È6Ð[bØ.7×.>Ñ.>×.DÑ.DÐQX×Q]ÑQ]Ø-2°W·]±]Ñ-BÈJÏOÉO×LaÑLaôcŠHð �]‰]œl×2Ñ2Ñ2Ø× Ñ ¤×!4Ñ!4Ô5ØˆFØ�}‰}Ô 0Ò0±UØ% h×&<Ñ&<Ð%=ð >=Ø=D¸IÐEUðW�ä&¤x×'IÑ'IÐK[ÐdjØ/6¸y×?OÑ?O×?UÑ?UÐbhØ/5¯~©~ÀUÐT^×TcÑTc×TiÑTiôkŠHð �]‰]œl×1Ñ1Ñ1Ø—l‘l×1Ñ1°'¸6×;LÑ;LÒ;RÐPRÓSˆGØ/6ˆNÐ+Ñ,Ø× Ñ ¸×8HÒ8H¤×!4Ò!4Ìi×N^ÑN^Ô_áX]ð # 7 )Ð+<¸V×=NÑ=NÐ<Oð PTñ TØcgð ä&¤x§¡¸×8IÑ8IÒ8UÈXÐ^dØ/6¸y×?OÑ?O×?UÑ?UÐbgØ-2¸J¿O¹O×<QÑ<QôS‰Hð × Ñ ¤×!1Ñ!1Ô2Ü&¤x×'7Ñ'7¸×9JÑ9JÒ9_ÐN_ÐhnØ/6¸y×?OÑ?O×?UÑ?UÐ]bØ/9¯©×/DÑ/DôFˆHô ).¬t¯~©~Ó/?À'Ñ/IÈTÑ.QÐSTÓ(Uˆ�}Ñ%Ø%-×%6Ñ%6×%<Ñ%<ˆ�zÑ"Ø!)§¡ˆ�vÑØ#+§?¡?ˆ�xÑ Ü"& x§~¡~Ó"6ˆ�wÑð	qØ�I‰I�O‰O˜NÔ+ð $ˆˆxÑØøôq !ò 	%Ù˜3Ÿ8™8Ó$Õ$ûð	%ûô #ò 	cØ�L‰L×Ñ °ÐÔ7Ü"¤8§>¡>°3·8±8ÀFÐT[Ô\Ð^bÐbÕbûÜ!ò 	%Ø�L‰L×Ñ °ÐÔ7Ù˜3Ÿ8™8Ó$Õ$ûÜò 	Ø�L‰L×Ñ °ÐÔ7Øð	ûô ò 	HØ�L‰L×Ñ °ÐÔ7Ø× Ñ ¤×!1Ñ!1Ô2Ü"¤8§>¡>Ð3DÈVÐ]dØ*3×*:Ñ*:×*@Ñ*@ôBØCGðHò Hð	Hûô ò 	iÜ" 6¨7´L×4GÑ4GÐTgÔh‹Fð	iüógøô^ ò 	qÜ&ÑpÐ)o¨H×,=Ñ,=Ð)o¸wÈÏÉÐYnÑHnÑ)oÑp‹Hð	qús’   Â>Z Ä?Z* Æ"], Ç_+ È9`É`Ù!` Ú	Z'ÚZ"ÚZ'Ú"Z'Ú*	])Ú3A[>Û8])Û>])Ü
.\>Ü8])Ü>+])Ý,A9_(ß'_(ß+&`à`à1aáa)
rë   r$   rà   zCallable[[], float]rá   zOptional[MemoryProvider]râ   rÁ   rä   zOptional[IsolatedRunner])rM   ry   r¶   r   )r+  rµ   r¶   rÏ   )r¶   zMapping[str, BackendAdapter])r¶   r2   )rÓ   r}   r¶   r»   )r½   ry   rD  ry   r?  rÄ   r¶   rÄ   )rv   ry   rÅ   rÄ   r¶   ÚNonerÎ   )r¶   ztuple[frozenset[str], dict])rÓ   r}   r¶   ztuple[Optional[Principal], str])r‡  rk   rˆ  r~   r¶   ztuple[list[Backend], dict])
rÓ   r}   r¾   ry   rš  r&   r›  rÏ   r¶   r&   )
rG  r0   rµ  r   r¶  r-   r·  zCallable[[str], frozenset]r¶   ry   )rÓ   r   r5  rÄ   r¶   rÏ   )
r›  rÏ   rÎ  r»   rÏ  ÚfloatrÐ  rÄ   r¶   r»   )rÓ   r   r5  rÄ   r¶   r»   )rÎ  r»   r¶   r»   )rÓ   r   r5  rÄ   r›  rÏ   rÏ  rH  )r\   r]   r^   rË  ru   r"  r  Úpropertyr,  r2  r9  rÅ   rE  rK  r¿   rn  r|  rŒ  r   Ústaticmethodr¼  rÂ  rÑ  r7  rÚ  r×  r  rg   rh   ri   rß   rß   Ó   sö   „ ØNRÏiÉiØ=AØBFØ"ÈTñ cØ":ð cà$?ð cð 3Kó cóHFó2ð* ò$ó ð$ð òó ðó
4ó5ó
óó
ó,)ó0-ó, ð(SØðSØ!0óSð0 ðwØ9ðwØ>Aòwó ðwó8	óó"Zó
ór5óhirh   rß   )rÜ   rH  r¶   ry   )fr·   Ú
__future__r   rc  ÚrerË  Údataclassesr   r   r   Úenumr   Útypingr   r	   r
   r   r   r   Úadapter_contractr   r   r   r   r   r   r%  r   r   r   r   r   rû   r   r   Úclaude_channelr   r•  r   r   r   Úcodex_adapterr    Úcommandsr!   r"   rë   r#   r$   Úcontextr%   r&   r'   r(   Úcorer)   r*   r+   r,   r-   r.   r/   r0   r1   r2  r2   rý   r3   r  r4   r5   Úresult_checkr6   r  r7   r8   r9   r  r:   r;   r<   r=   rË   Úcompiler’   r”   rf  r•   r¤   r¨   ry   rS   rk   rª   rq   r}   r»   rÑ   Úobjectr)  rÝ   rß   rg   rh   ri   ú<module>rY     sb  ðñõ4 #ã Û 	Û Ý !ß 'Ý ß G× G÷÷ ÷õ ÷ 2Ý 0ß IÑ IÝ 'ß 0ß 5ß KÓ K÷÷ õ õ &Ý "ß .Ý &ß @Ñ @ß FÓ FàÐ Øˆ2�:‰:�mÓ$€Øˆ2�:‰:�oÓ&€ÙÒDÓE€
Ù!ò #ó Ð ñ %Ò%hÓiÐ ôˆs�Dô ô"��Tô "ô
�:ô ñ �$Ô÷D
ð D
ó ðD
ñN �$Ô÷
ð 
ó ð
ô@h�Xô hñ
 ‹8€ó[÷Sò Srh   