Ë
    wÝjl  ã                  ó4  — 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Z ej                  d«      Z eh d	£«      Zd
Zdd„Zdd„Zefdd„Z ed¬«       G d„ d«      «       Z ed¬«       G d„ d«      «       Z ed¬«       G d„ d«      «       Zy)u  Kontext eines Auftrags und seine kanonische Serialisierung.

Das ist die INTEGRITÃ„TSSCHICHT: Sie beantwortet nur "ist der Kontext noch
derselbe?" (SHA-256 Ã¼ber die kanonische Form). Sie beantwortet nicht, ob
jemand berechtigt ist. Autorisierung: authorization.py (HMAC-Clearance).
é    )ÚannotationsN)Ú	dataclass)ÚAnyÚOptionalé   )ÚPrivacyTierz^[0-9a-f]{64}$>   ÚaudioÚphotoÚvideoÚvoiceÚstickerÚdocumentÚ
video_notei   c                óT   — t        j                  | dddd¬«      j                  d«      S )uy   Eine einzige kanonische Form: sortierte SchlÃ¼ssel, keine Leerzeichen,
    UTF-8 ohne ASCII-Escaping, keine NaN/Infinity.TF)ú,ú:)Ú	sort_keysÚensure_asciiÚ
separatorsÚ	allow_nanúutf-8)ÚjsonÚdumpsÚencode)Úvalues    ú4/home/aria/aria-v3-dev/python/aria_router/context.pyÚcanonical_jsonr      s,   € ô �:‰:Ø˜¨E¸jØô÷ �fˆWƒoðó    c                óH   — t        j                  | «      j                  «       S ©N)ÚhashlibÚsha256Ú	hexdigest)Údatas    r   Ú
sha256_hexr%   "   s   € Ü�>‰>˜$Ó×)Ñ)Ó+Ð+r   c                ó†   — | �?t        | t        «      rt        | «      |kD  sd| v rt        d|j	                  «       › �«      ‚y y )Nú ÚINVALID_ATTACHMENT_)Ú
isinstanceÚstrÚlenÚ
ValueErrorÚupper)r   Ú
field_nameÚlimits      r   Ú_optional_strr0   &   sL   € ØÐ¤*¨U´CÔ"8¼CÀ»JÈÒ<NÐRXÐ\aÑRaÜÐ.¨z×/?Ñ/?Ó/AÐ.BÐCÓDÐDð SbÐr   T)Úfrozenc                  óV   — e Zd ZU dZded<   ded<   ej                  Zded<   d„ Zd
d„Z	y	)ÚMemorySnippetuÏ   Ein Memory-Ausschnitt aus einer vertrauenswÃ¼rdigen lokalen Quelle.

    declared_tier stammt von der Quelle (z. B. Brain-Index). Der Klassifikator
    kann die Einstufung nur verschÃ¤rfen, nie lockern.
    r*   ÚsourceÚtextr   Údeclared_tierc                ó2  — t        | j                  t        «      r(| j                  rt        | j                  «      t        kD  rt        d«      ‚t        | j                  t        «      st        d«      ‚t        | j                  t        «      st        d«      ‚y )NÚINVALID_MEMORY_SOURCEÚINVALID_MEMORYÚINVALID_MEMORY_TIER)	r)   r4   r*   r+   ÚMAX_NAME_CHARSr,   r5   r6   r   ©Úselfs    r   Ú__post_init__zMemorySnippet.__post_init__7   sn   € Ü˜$Ÿ+™+¤sÔ+°4·;²;Ä#ÀdÇkÁkÓBRÔUcÒBcÜÐ4Ó5Ð5Ü˜$Ÿ)™)¤SÔ)ÜÐ-Ó.Ð.Ü˜$×,Ñ,¬kÔ:ÜÐ2Ó3Ð3ð ;r   c                ó^   — | j                   | j                  | j                  j                  dœS )N)r4   r5   r6   )r4   r5   r6   r   r<   s    r   Ú	canonicalzMemorySnippet.canonical?   s#   € ØŸ+™+¨t¯y©yÈ4×K]ÑK]×KcÑKcÑdÐdr   N©ÚreturnÚdict)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   ÚUNKNOWNr6   r>   r@   © r   r   r3   r3   +   s.   … ñð ƒKØ
ƒIØ!,×!4Ñ!4€M�;Ó4ò4ôer   r3   c                  óœ   — e Zd ZU 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d„Zdd„Zdd„Zy)Ú
Attachmentu#  Anhang: Metadaten plus Inhalts-Hash.

    data enthÃ¤lt die Bytes, wenn ein vertrauenswÃ¼rdiger lokaler Lader sie
    bereitgestellt hat; dann wird der Hash IMMER aus den Bytes berechnet.
    Ohne Bytes bindet der vom Transport gemeldete sha256 bzw. die
    Telegram-file_id den Inhalt.
    r*   ÚkindÚ Úfile_idNúOptional[str]ÚnameÚmimeúOptional[int]Úsizer"   Ú
local_pathzOptional[bytes]r$   c                ó¶  — | j                   t        vrt        d«      ‚t        | j                  t
        «      rt        | j                  «      t        kD  rt        d«      ‚t        | j                  d«       t        | j                  dd«       t        | j                  dd«       | j                  �5t        | j                  «      t        us| j                  dk  rt        d	«      ‚| j                  �Dt        | j                  t
        «      rt         j#                  | j                  «      st        d
«      ‚| j$                  �št        | j$                  «      t&        urt        d«      ‚| j                  �-t)        | j$                  «      | j                  k7  rt        d«      ‚| j                  �.| j                  t        | j$                  «      k7  rt        d«      ‚y y y )NÚINVALID_ATTACHMENT_KINDÚINVALID_ATTACHMENT_FILE_IDrQ   rR   éÿ   rU   i   r   ÚINVALID_ATTACHMENT_SIZEÚINVALID_ATTACHMENT_DIGESTÚINVALID_ATTACHMENT_DATAÚATTACHMENT_HASH_MISMATCHÚATTACHMENT_SIZE_MISMATCH)rM   ÚATTACHMENT_KINDSr,   r)   rO   r*   r+   r;   r0   rQ   rR   rU   rT   ÚtypeÚintr"   Ú_HEX64Úmatchr$   Úbytesr%   r<   s    r   r>   zAttachment.__post_init__V   sb  € Ø�9‰9Ô,Ñ,ÜÐ6Ó7Ð7Ü˜$Ÿ,™,¬Ô,´°D·L±LÓ0AÄNÒ0RÜÐ9Ó:Ð:Ü�d—i‘i Ô(Ü�d—i‘i ¨Ô-Ü�d—o‘o |°TÔ:Ø�9‰9Ð ¤d¨4¯9©9£o¼SÑ&@ÀDÇIÁIÐPQÂMÜÐ6Ó7Ð7Ø�;‰;Ð"¬J°t·{±{ÄCÔ,HÔPV×P\ÑP\Ð]a×]hÑ]hÔPiÜÐ8Ó9Ð9Ø�9‰9Ð Ü�D—I‘I‹¤eÑ+Ü Ð!:Ó;Ð;Ø�{‰{Ð&¬:°d·i±iÓ+@ÀDÇKÁKÒ+OÜ Ð!;Ó<Ð<Ø�y‰yÐ$¨¯©´c¸$¿)¹)³nÒ)DÜ Ð!;Ó<Ð<ð *EÐ$ð !r   c                ó\   — | j                   �t        | j                   «      S | j                  S r    )r$   r%   r"   r<   s    r   Úcontent_sha256zAttachment.content_sha256j   s%   € Ø�9‰9Ð Ü˜dŸi™iÓ(Ð(Ø�{‰{Ðr   c                ó\   — | j                   �t        | j                   «      S | j                  S r    )r$   r+   rT   r<   s    r   Úeffective_sizezAttachment.effective_sizeo   s$   € Ø�9‰9Ð Ü�t—y‘y“>Ð!Ø�y‰yÐr   c           	     óÌ   — | j                   | j                  | j                  | j                  | j	                  «       | j                  «       | j                  | j                  d udœS )N)rM   rO   rQ   rR   rT   rf   rU   Úcontent_loaded)rM   rO   rQ   rR   rh   rf   rU   r$   r<   s    r   r@   zAttachment.canonicalt   sS   € à—I‘IØ—|‘|Ø—I‘IØ—I‘IØ×'Ñ'Ó)Ø"×1Ñ1Ó3ØŸ/™/Ø"Ÿi™i¨tÐ3ñ	
ð 		
r   )rB   rP   )rB   rS   rA   )rD   rE   rF   rG   rH   rO   rQ   rR   rT   r"   rU   r$   r>   rf   rh   r@   rJ   r   r   rL   rL   C   sh   … ñð ƒIØ€GˆSÓØ€Dˆ-ÓØ€Dˆ-ÓØ€Dˆ-ÓØ €FˆMÓ Ø $€J�Ó$Ø €Dˆ/Ó ò=ó(ó
ô


r   rL   c                  óZ   — e Zd ZU ded<   dZded<   dZded<   d„ Zdd	„Zdd
„Zdd„Z	dd„Z
y)ÚContextEnveloper*   ÚpromptrJ   ztuple[MemorySnippet, ...]Úmemoryztuple[Attachment, ...]Úattachmentsc                ón  — t        | j                  t        «      rd| j                  v rt        d«      ‚t        | j                  t
        «      rt        d„ | j                  D «       «      rt        d«      ‚t        | j                  t
        «      rt        d„ | j                  D «       «      rt        d«      ‚y )Nr'   ÚINVALID_PROMPTc              3  ó>   K  — | ]  }t        |t        «       –— Œ y ­wr    )r)   r3   ©Ú.0Úms     r   ú	<genexpr>z0ContextEnvelope.__post_init__.<locals>.<genexpr>Š   s   è ø€ Ò4kÐZ[¼ÀAÄ}Ó9UÔ5UÑ4kùó   ‚r9   c              3  ó>   K  — | ]  }t        |t        «       –— Œ y ­wr    )r)   rL   ©rt   Úas     r   rv   z0ContextEnvelope.__post_init__.<locals>.<genexpr>Œ   s   è ø€ Ò9rÐ\]¼jÈÌJÓ>WÔ:WÑ9rùrw   ÚINVALID_ATTACHMENTS)r)   rm   r*   r,   rn   ÚtupleÚanyro   r<   s    r   r>   zContextEnvelope.__post_init__‡   s‹   € Ü˜$Ÿ+™+¤sÔ+¨v¸¿¹Ñ/DÜÐ-Ó.Ð.Ü˜$Ÿ+™+¤uÔ-´Ñ4kÐ_c×_jÑ_jÔ4kÔ1kÜÐ-Ó.Ð.Ü˜$×*Ñ*¬EÔ2´cÑ9rÐae×aqÑaqÔ9rÔ6rÜÐ2Ó3Ð3ð 7sr   c                óØ   — t         | j                  | j                  D �cg c]  }|j                  «       ‘Œ c}| j                  D �cg c]  }|j                  «       ‘Œ c}dœS c c}w c c}w )N)Úvrm   rn   ro   )ÚCONTEXT_VERSIONrm   rn   r@   ro   )r=   ru   rz   s      r   Úcanonical_dictzContextEnvelope.canonical_dict�   sP   € ä Ø—k‘kØ.2¯k©kÖ:¨�q—{‘{•}Ò:Ø37×3CÑ3CÖD¨a˜AŸK™K�MÒDñ	
ð 	
ùò ;ùÚDs   ŸA"ÁA'
c                ó4   — t        | j                  «       «      S r    )r   r�   r<   s    r   r@   zContextEnvelope.canonical—   s   € Ü˜d×1Ñ1Ó3Ó4Ð4r   c                ó:   — t        d| j                  «       z   «      S )u>   IntegritÃ¤ts-Digest des Kontexts (kein Berechtigungsnachweis).s   aria-v3/context/v1
)r%   r@   r<   s    r   ÚdigestzContextEnvelope.digestš   s   € äÐ1°D·N±NÓ4DÑDÓEÐEr   c                óÊ   — t        | j                  j                  d«      «      }|t        d„ | j                  D «       «      z  }|t        d„ | j
                  D «       «      z  }|S )Nr   c              3  ód   K  — | ](  }t        |j                  j                  d «      «      –— Œ* y­w)r   N)r+   r5   r   rs   s     r   rv   z-ContextEnvelope.size_bytes.<locals>.<genexpr>    s"   è ø€ ÒF°Q”S˜Ÿ™Ÿ™ wÓ/×0ÑFùs   ‚.0c              3  ó^   K  — | ]%  }|j                   €Œ|j                  «       xs d–— Œ' y ­w)Nr   )r$   rh   ry   s     r   rv   z-ContextEnvelope.size_bytes.<locals>.<genexpr>¡   s*   è ø€ Ò]°È!Ï&É&ÑJ\�Q×%Ñ%Ó'Ò,¨1Ó,Ñ]ùs   ‚-”-)r+   rm   r   Úsumrn   ro   )r=   Útotals     r   Ú
size_byteszContextEnvelope.size_bytesž   sT   € Ü�D—K‘K×&Ñ& wÓ/Ó0ˆØ”ÑF¸$¿+¹+ÔFÓFÑFˆØ”Ñ]°d×6FÑ6FÔ]Ó]Ñ]ˆØˆr   NrA   )rB   rd   )rB   r*   )rB   ra   )rD   rE   rF   rH   rn   ro   r>   r�   r@   r„   rŠ   rJ   r   r   rl   rl   �   s7   … àƒKØ(*€FÐ%Ó*Ø*,€KÐ'Ó,ò4ó
ó5óFôr   rl   )r   r   rB   rd   )r$   rd   rB   r*   )r   r   r.   r*   r/   ra   rB   ÚNone)rG   Ú
__future__r   r!   r   ÚreÚdataclassesr   Útypingr   r   Úcorer   r€   Úcompilerb   Ú	frozensetr_   r;   r   r%   r0   r3   rL   rl   rJ   r   r   ú<module>r“      sÂ   ðñõ #ã Û Û 	Ý !ß  å à€Ø	ˆ�‰Ð%Ó	&€Ùò ó Ð ð €óó,ð =Kô Eñ
 �$Ô÷eð eó ðeñ. �$Ô÷:
ð :
ó ð:
ñz �$Ô÷ ð  ó ñ r   