Ë
    ÝjL  ã                  óÎ   — 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m	Z	m
Z
 ddlmZmZ ddlmZmZmZmZ dZ eh d	£«      Zd
dœdd„Zdd„Z	 d	 	 	 dd„Zdd„Zedk(  r e«        yy)u*  Bridge-Einstieg, Protokoll v1 (docs/BRIDGE-PROTOKOLL.md).

Aufruf durch das Telegram-Plugin, feste Argumentliste, keine Shell:
    /usr/bin/python3 -I -m aria_router.bridge_cli --config /abs/gateway.json
stdin: genau ein JSON-Objekt (max. 1 MiB). stdout: genau eine JSON-Zeile.
Exit 0 bei jeder JSON-Antwort (auch handling=error); Exit 2 nur bei
falschem Aufruf. Das Plugin wendet bei handling=error seine
router_failure_mode-Regel an (siehe docs/OFFENE-ENTSCHEIDUNGEN.md).

    ... --config X --status   -> Health/Budget/SchlÃ¼sselstatus (ohne Secrets)
é    )ÚannotationsN)ÚBinaryIOÚCallableÚOptionalÚTextIOé   )ÚConfigurationErrorÚload_gateway_config)ÚPROTOCOL_VERSIONÚGatewayÚGatewayRequestÚRequestErrori   >   ÚokÚtypeÚnonceÚjob_idÚprotocolF©Úshadowc               ó*   — t         d| d d d d d g |d d ddœS )NÚerrorF)r   ÚhandlingÚcoder   ÚbackendÚstatusÚ
reply_textÚforwardÚflagsr   Úplanned_handlingÚprivacyÚ	delivered)r   )r   r   s     ú7/home/aria/aria-v3-dev/python/aria_router/bridge_cli.pyÚerror_responser#      s,   € ä$°'À4ÐSWÐdhØ d°tÀbÐTZØ ¨TÀñð ó    c                óx   — | j                  t        j                  |dd¬«      dz   «       | j                  «        y )NF)ú,ú:)Úensure_asciiÚ
separatorsú
)ÚwriteÚjsonÚdumpsÚflush)ÚstdoutÚpayloads     r"   Ú_emitr1   "   s*   € Ø
‡L�L”—‘˜G°%ÀJÔOÐRVÑVÔWØ
‡L�L…Nr$   c           	     óü  — t        j                  dd¬«      }|j                  dd¬«       |j                  dd¬«       	 |j                  | «      }	 t        |j                  «      } |xs t        |«      }|j                  rt        ||j                  «       «       y|j                  t         dz   «      }	t#        |	«      t         kD  rt        |t        d«      «       y	 t%        j&                  |	j)                  d«      «      }
t/        |
t0        «      st        |t        d«      «       y|
j3                  d«      t4        k7  s t7        |
j3                  d«      «      t8        urt        |t        d«      «       y|
j3                  dd«      }|dk(  r™t;        |
«      t<        k7  s:t/        |
d   t>        «      r't/        |
d   t>        «      rt7        |
d   «      t@        urt        |t        d«      «       y|jC                  |
d   |
d   |
d   ¬«      }t        |t4        d|rdnddd œ«       y|dk7  rt        |t        d«      «       y|
j3                  d!«      }|d"vrt        |t        d#«      «       y|
jE                  «       D ��ci c]  \  }}|d$vsŒ||“Œ }}}	 tG        jH                  ||jJ                  jL                  |jJ                  jN                  ¬%«      }|d(k(  r|jW                  |«      n|jY                  |«      }t        ||j[                  «       «       y# t        $ r Y y	w xY w# t        $ rB}t        j                  j                  d
|› d�«       t        |t        d«      «       Y d }~yd }~ww xY w# t*        t,        f$ r t        |t        d«      «       Y yw xY wc c}}w # tP        $ rN}|jS                  |jT                  |d&k(  ¬'«       t        |t        |jT                  |d&k(  ¬'«      «       Y d }~yd }~ww xY w))Nzaria_router.bridge_cliT)ÚprogÚadd_helpz--config)Úrequiredz--statusÚ
store_true)Úactioné   z(aria-v3 bridge: configuration rejected: r*   ÚCONFIG_UNAVAILABLEr   r   ÚINPUT_LIMITzutf-8ÚINVALID_JSONÚINVALID_REQUESTr   ÚUNSUPPORTED_PROTOCOLr   ÚinboundÚdelivery_reportr   r   r   )r   r   r   ÚackÚREPORTEDÚUNKNOWN_CLEARANCEF)r   r   r   r!   Úmode)r   ÚexecuteÚINVALID_MODE)r   r   rC   )Úmax_text_bytesÚmax_attachmentsr   r   rD   ).ÚargparseÚArgumentParserÚadd_argumentÚ
parse_argsÚ
SystemExitr
   Úconfigr   r	   ÚsysÚstderrr+   r1   r#   r   ÚreadÚMAX_STDIN_BYTESÚlenr,   ÚloadsÚdecodeÚUnicodeDecodeErrorÚ
ValueErrorÚ
isinstanceÚdictÚgetr   r   ÚintÚsetÚREPORT_FIELDSÚstrÚboolÚreport_deliveryÚitemsr   Úfrom_bridgeÚlimitsrF   rG   r   Úlog_rejected_requestr   Úhandler   Úto_dict)ÚargvÚstdinr/   Úgateway_factoryÚparserÚargsrM   ÚgatewayÚexcÚrawÚdataÚkindÚacceptedrC   ÚkÚvr0   ÚrequestÚresponses                      r"   Úrunru   '   s‰  € ä×$Ñ$Ð*BÈTÔR€FØ
×Ñ˜
¨TÐÔ2Ø
×Ñ˜
¨<ÐÔ8ðØ× Ñ  Ó&ˆðÜ$ T§[¡[Ó1ˆØ-�?Ò-¤g¨vÓ6ˆð
 ‡{‚{Üˆf�g—n‘nÓ&Ô'ØØ
�*‰*”_ qÑ(Ó
)€CÜ
ˆ3ƒx”/Ò!Üˆf”n ]Ó3Ô4ØðÜ�z‰z˜#Ÿ*™* WÓ-Ó.ˆô �dœDÔ!Üˆf”nÐ%6Ó7Ô8ØØ‡x�x�
ÓÔ/Ò/´4¸¿¹ÀÓ8LÓ3MÔUXÑ3XÜˆf”nÐ%;Ó<Ô=ØØ�8‰8�F˜IÓ&€DØÐ Ò Üˆt‹9œÒ%¬Z¸¸X¹ÌÔ-LÜ! $ w¡-´Ô5¼¸dÀ4¹jÓ9IÔQUÑ9UÜ�&œ.Ð):Ó;Ô<ØØ×*Ñ*°$°x±.ÈÈWÉÐZ^Ð_cÑZdÐ*ÓeˆÜˆfÔ#3ÀÙ-5™zÐ;NÐ]bñdô 	eàØˆyÒÜˆf”nÐ%6Ó7Ô8ØØ�8‰8�FÓ€DØÐ(Ñ(Üˆf”n ^Ó4Ô5ØØ $§
¡
£×V™˜˜1°Ð9UÒ0Uˆq�!‰tÐV€GÑVðÜ ×,Ñ,¨WÀVÇ]Á]×EaÑEaØ=C¿]¹]×=ZÑ=Zô\ˆð +/°)Ò*;ˆw�~‰~˜gÔ&ÀÇÁÐPWÓAX€HÜ	ˆ&�(×"Ñ"Ó$Ô%Øøôm ò Ùðûô
 ò Ü�
‰
×ÑÐCÀCÀ5ÈÐKÔLÜˆf”nÐ%9Ó:Ô;Üûðûô ¤
Ð+ò Üˆf”n ^Ó4Ô5Ùðüó4 Wøô ò Ø×$Ñ$ S§X¡X°d¸hÑ6FÐ$ÔGÜˆf”n S§X¡X°d¸hÑ6FÔGÔHÜûðúsa   ¿L Á%L& Ã$M4 É?NÊNÊA N$ Ì	L#Ì"L#Ì&	M1Ì/8M,Í,M1Í4$NÎNÎ$	O;Î-AO6Ï6O;c                 ó²   — t        j                  t        t         j                  dd  t         j                  j
                  t         j                  «      «       y )Nr   )rN   Úexitru   rf   rg   Úbufferr/   © r$   r"   Úmainrz   g   s/   € Ü‡H�HŒS”—‘˜!˜"�œsŸy™y×/Ñ/´·±Ó<Õ=r$   Ú__main__)r   r]   r   r^   ÚreturnrX   )r/   r   r0   rX   r|   ÚNone)N)rg   r   r/   r   rh   z Optional[Callable[..., Gateway]]r|   rZ   )r|   r}   )Ú__doc__Ú
__future__r   rH   r,   rN   Útypingr   r   r   r   rM   r	   r
   rk   r   r   r   r   rQ   Ú	frozensetr\   r#   r1   ru   rz   Ú__name__ry   r$   r"   ú<module>rƒ      s{   ðñ
õ #ã Û Û 
ß 7Ó 7ç ;ß LÓ Là€ÙÒGÓH€ð 16õ óð =Að=Ø9ð=ØEHó=ó@>ð ˆzÒÙ…Fð r$   