Ë
    tPêjøA  ã            
       ó(  — U d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZ ed   Zeez  d	z  Zeeef   Z ed
dh«      Zeed<    eh d£«      Zeed<   de	defd„Zdeg ef   dededefd„Zdedededefd„Zdedededefd„Zdedededefd„Zd edefd!„Zd ededefd"„Zd#edefd$„Z d%ededededef
d&„Z!d%eded	z  fd'„Z"d%edededefd(„Z#d%edededefd)„Z$d%ededefd*„Z%d%eded	z  fd+„Z&d%ededefd,„Z'd%ededefd-„Z(d%ededefd.„Z)d%eded	z  fd/„Z*d%edededefd0„Z+d%edededefd1„Z,d ededefd2„Z-d%ed3ede	fd4„Z.d%ed3ede	fd5„Z/dededefd6„Z0dedefd7„Z1d8ed9ee   ded	z  fd:„Z2dedefd;„Z3d<ed=ef   d>ed
edefd?„Z4y	)@a  
Normalize A2A JSON-RPC payloads to the protocol version LiteLLM serves for an agent.

LiteLLM fronts upstream agents and lets an admin pin the protocol version it speaks
to clients (``0.3`` or ``1.0``) per agent. Upstream responses may arrive in either
wire shape, so every response, stream event, forwarded request and extended card is
converted to the served version here. Conversion is shape-detecting (we infer the
payload's current version rather than trusting a stored one) and best-effort: any
failure falls back to returning the input unchanged so a conversion bug can never
break an otherwise-valid response.

The two wire shapes:

- ``0.3``: JSON dump of the compat pydantic types, discriminated by a ``kind`` field
  (``message`` / ``task`` / ``status-update`` / ``artifact-update``). A send result is
  the bare object.
- ``1.0``: protobuf JSON (``MessageToDict``), a oneof envelope keyed by
  ``message`` / ``task`` / ``statusUpdate`` / ``artifactUpdate`` with no ``kind``. A
  ``Task`` result is a bare object without ``kind``.
é    )ÚCallable)Ú
ModuleType)ÚFinalÚLiteral)Ú	BaseModel)Úverbose_proxy_logger)Únormalize_protocol_version)ú0.3ú1.0NÚmessageÚtaskÚ_V1_SEND_ENVELOPE_KEYS>   r   r   ÚstatusUpdateÚartifactUpdateÚ_V1_STREAM_ENVELOPE_KEYSÚmodelÚreturnc                 ó*   — | j                  ddd¬«      S )z>Dump a compat (0.3) pydantic model to its camelCase wire dict.TÚjson)Úby_aliasÚexclude_noneÚmode)Ú
model_dump)r   s    úf/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/a2a/version_convert.pyÚ_dump_03r   ,   s   € à×Ñ T¸À6ÐÓJÐJó    ÚconvertÚfallbackÚlabelc                óp   — 	  | «       S # t         $ r#}t        j                  d||«       |cY d}~S d}~ww xY w)z@Run a conversion, returning ``fallback`` unchanged if it raises.zA2A %s conversion failed: %sN)Ú	Exceptionr   Údebug)r   r   r   Úes       r   Ú_best_effortr$   1   s7   € ðÙ‹yÐøÜò Ü×"Ñ"Ð#AÀ5È!ÔLØ�ûðús   ‚	 ‰	5’0ª5°5ÚcontentÚtargetÚmethodc          
      óØ   — | j                  d«      �| S | j                  d«      }t        |t        «      s| S t        |||t	        | j                  d«      «      ¬«      }||u r| S i | ¥d|i¥S )zuConvert a JSON-RPC response's ``result`` to ``target``.

    Errors and non-dict results pass through untouched.
    ÚerrorÚresultÚid)r'   Ú
request_id)ÚgetÚ
isinstanceÚdictÚ_convert_resultÚ_as_request_id)r%   r&   r'   r*   Ú	converteds        r   Únormalize_jsonrpc_responser3   :   sw   € ð
 ‡{�{�7ÓÐ'ØˆØ—K‘K Ó)€FÜ�fœdÔ#Øˆä& v¨v¸fÔQ_Ð`g×`kÑ`kÐlpÓ`qÓQrÔs€IØ�FÑØˆØ+ˆgÐ+�x Ñ+Ð+r   Úeventr,   c                ó¦   — | j                  d«      �| S | j                  d«      }t        |t        «      s| S t        |||¬«      }||u r| S i | ¥d|i¥S )zDConvert a single streamed JSON-RPC event's ``result`` to ``target``.r)   r*   ©r,   )r-   r.   r/   Ú_convert_stream_result)r4   r&   r,   r*   r2   s        r   Únormalize_stream_eventr8   K   s`   € à‡y�y�ÓÐ%ØˆØ—I‘I˜hÓ'€FÜ�fœdÔ#Øˆä-¨f°fÈÔT€IØ�FÑØˆØ)ˆeÐ)�X˜yÑ)Ð)r   ÚparamsÚservedc                ó@   ‡ ‡— |dk(  r‰ S t        ˆˆ fd„‰ d‰› d�¬«      S )a  Down-convert forwarded request ``params`` from the served version to 0.3.

    Upstream agents in this proxy pivot on 0.3 wire format, so when LiteLLM serves
    1.0 the inbound params must be lowered before forwarding. A no-op when the served
    version is already 0.3.
    r
   c                  ó   •— t        ‰‰ ¬«      S )N)r'   )Ú_lower_request_params)r'   r9   s   €€r   ú<lambda>z*normalize_request_params.<locals>.<lambda>c   s   ø€ Ô% f°VÔ<€ r   zrequest params (ú)©r   ©r$   )r9   r:   r'   s   ` `r   Únormalize_request_paramsrB   Y   s0   ù€ ð �‚ØˆÜÜ<ØØ   ¨Ð*ôð r   Úcardc                 óN   — t        | j                  d«      «      }|�|S d| v rdS dS )an  Infer the wire version of an agent card dict.

    ``protocolVersion`` is the authoritative indicator; semver values normalize to
    their major.minor (``"0.3.0"`` -> ``"0.3"``). Fall back to presence of
    ``supportedInterfaces`` (a 1.0-only field) only when the explicit field is
    absent or unrecognized; cards carrying neither signal are treated as 0.3.
    ÚprotocolVersionÚsupportedInterfacesr   r
   )r	   r-   )rC   Ú
normalizeds     r   Ú_detect_card_versionrH   i   s6   € ô 3°4·8±8Ð<MÓ3NÓO€JØÐØÐØ)¨TÑ1ˆ5Ð<°uÐ<r   c                 ó„   ‡ ‡— t        ‰ t        «      s‰ S t        ‰ «      }|‰k(  r‰dk(  rd‰ v s‰ S t        ˆ ˆfd„‰ d¬«      S )zãConvert an extended agent card to ``target``.

    When lowering to 0.3, ``additionalInterfaces`` is stripped so the conversion never
    re-exposes upstream backend URLs that the LiteLLM-fronting merge deliberately drops.
    r
   rF   c                  ó   •— t        ‰ ‰«      S ©N)Ú_convert_agent_card)rC   r&   s   €€r   r>   z&normalize_agent_card.<locals>.<lambda>ƒ   s   ø€ Ô 3°D¸&Ó A€ r   z
agent cardr@   )r.   r/   rH   r$   )rC   r&   Úcurrents   `` r   Únormalize_agent_cardrN   w   sI   ù€ ô �dœDÔ!Øˆä)¨$Ó/€GØ�&Ò &¨E¢/Ð6KÈtÑ6SØˆÜÔAÀ4È|Ô\Ð\r   Úvaluec                 ó6   — t        | t        t        f«      r| S d S rK   )r.   ÚstrÚint)rO   s    r   r1   r1   †   s   € Ü˜u¤s¬C jÔ1ˆ5Ð;°tÐ;r   r*   c                ón   — |dk(  rt        | ||¬«      S |dv rt        | |«      S |dk(  rt        | |«      S | S )Nzmessage/sendr6   )ú	tasks/getútasks/cancelú
tasks/list)Ú_convert_send_resultÚ_convert_taskÚ_convert_list_tasks_result)r*   r&   r'   r,   s       r   r0   r0   Š   sK   € ð �ÒÜ# F¨F¸zÔJÐJØÐ.Ñ.Ü˜V VÓ,Ð,Ø�ÒÜ)¨&°&Ó9Ð9Ø€Mr   c                 ó>   — d| v ry| j                  «       t        z  ryy ©NÚkindr
   r   )Úkeysr   ©r*   s    r   Ú_detect_send_versionr_   š   s"   € Ø�ÑØØ‡{�{ƒ}Ô-Ò-ØØr   c                óV   ‡ ‡‡— t        ‰ «      }|�|‰k(  r‰ S t        ˆˆ ˆfd„‰ d¬«      S )Nc                  ó   •— t        ‰‰‰ «      S rK   )Ú_send_result_to©r,   r*   r&   s   €€€r   r>   z&_convert_send_result.<locals>.<lambda>§   s   ø€ ” ¨°
Ó;€ r   zsend resultr@   )r_   r$   ©r*   r&   r,   rM   s   ``` r   rW   rW   ¢   s4   ú€ Ü)¨&Ó1€GØ€˜' VÒ+ØˆÜÝ;ØØôð r   c                 óF  — ddl m}m}m}m}m}m} |dk(  rLt        | |«      }	|j                  |j                  |�t        |«      nd|	¬«      ¬«      }
 | ||
«      d¬«      S |j                  «       } || |d	¬
«       t         |||«      j                  j                  «      S )Nr   )ÚMessageToDictÚ	ParseDictÚpb2_v10Úto_compat_send_message_responseÚto_core_send_message_responseÚ	types_v03r   Ú ©r+   r*   )ÚrootF©Úpreserving_proto_field_nameT©Úignore_unknown_fields)Úa2a.compat.v0_3.conversionsrf   rg   rh   ri   rj   rk   Ú_validate_message_or_taskÚSendMessageResponseÚSendMessageSuccessResponserQ   r   rn   r*   )r*   r&   r,   rf   rg   rh   ri   rj   rk   Úcompat_resultÚresponseÚpbs               r   rb   rb   ­   s¯   € ÷÷ ð �‚Ü8¸ÀÓKˆØ#×7Ñ7Ø×5Ñ5Ø&0Ð&<”3�z”?À"Ø$ð 6ó ð 8ó 
ˆñ Ù)¨(Ó3Ø(-ô
ð 	
ð
 ×+Ñ+Ó-€BÙˆf�b°Õ5ÜÑ3°B¸
ÓC×HÑH×OÑOÓPÐPr   c                 óH   ‡ ‡— d‰ v rdnd}|‰k(  r‰ S t        ˆ ˆfd„‰ d¬«      S )Nr\   r
   r   c                  ó   •— t        ‰ ‰«      S rK   )Ú_task_to©r*   r&   s   €€r   r>   z_convert_task.<locals>.<lambda>Í   s   ø€ ¤¨°Ó 8€ r   r   r@   rA   ©r*   r&   rM   s   `` r   rX   rX   É   s.   ù€ Ø*0°FÑ*:¡À€GØ�&ÒØˆÜÔ8¸&ÈÔOÐOr   c                 ó†   — | j                  d«      }t        |t        «      r|sy |d   }t        |t        «      sy d|v rdS dS )NÚtasksr   r\   r
   r   )r-   r.   Úlistr/   )r*   r€   Úfirsts      r   Ú_detect_list_tasks_versionrƒ   Ð   sF   € Ø—:‘:˜gÓ&€EÜ�eœTÔ"©%ØØ˜‘8€EÜ�eœTÔ"ØØ˜e‘Oˆ5Ð.¨Ð.r   c                 óR   ‡ ‡— t        ‰ «      }|�|‰k(  r‰ S t        ˆ ˆfd„‰ d¬«      S )Nc                  ó   •— t        ‰ ‰«      S rK   )Ú_list_tasks_result_tor}   s   €€r   r>   z,_convert_list_tasks_result.<locals>.<lambda>ß   s   ø€ Ô% f¨fÓ5€ r   zlist tasks resultr@   )rƒ   r$   r~   s   `` r   rY   rY   Ú   s4   ù€ Ü/°Ó7€GØ€˜' VÒ+ØˆÜÜ5ØØ!ôð r   c           	      ó¶   — | j                  d«      }t        |t        «      s| S i | ¥d|D �cg c]   }t        |t        «      rt	        ||«      n|‘Œ" c}i¥S c c}w )Nr€   )r-   r.   r�   r/   r|   )r*   r&   r€   Úitems       r   r†   r†   å   s`   € Ø—:‘:˜gÓ&€EÜ�eœTÔ"ØˆðØ
ðàÐY^Ö_ÐQU¬J°t¼TÔ,B”(˜4 Ô(ÈÑLÒ_ñð ùâ_s   ¬%Ac                 óÚ   — ddl m}m}m}m}m}m} |dk(  r+ ||j                  j                  | «      «      } ||d¬«      S |j                  «       }	 || |	d¬«       t         ||	«      «      S )Nr   )rf   rg   rh   Úto_compat_taskÚto_core_taskrk   r   Fro   Trq   )
rs   rf   rg   rh   rŠ   r‹   rk   ÚTaskÚmodel_validater   )
r*   r&   rf   rg   rh   rŠ   r‹   rk   Úcorery   s
             r   r|   r|   ï   sb   € ÷÷ ð �‚Ù" 9§>¡>×#@Ñ#@ÀÓ#HÓIˆÙ˜T¸uÔEÐEà—‘“€BÙˆf�b°Õ5Ü‘N 2Ó&Ó'Ð'r   c                 ó>   — d| v ry| j                  «       t        z  ryy r[   )r]   r   r^   s    r   Ú_detect_stream_versionr�     s"   € Ø�ÑØØ‡{�{ƒ}Ô/Ò/ØØr   c                óV   ‡ ‡‡— t        ‰ «      }|�|‰k(  r‰ S t        ˆˆ ˆfd„‰ d¬«      S )Nc                  ó   •— t        ‰‰‰ «      S rK   )Ú_stream_result_torc   s   €€€r   r>   z(_convert_stream_result.<locals>.<lambda>  s   ø€ Ô! &¨&°*Ó=€ r   zstream eventr@   )r�   r$   rd   s   ``` r   r7   r7   
  s4   ú€ Ü+¨FÓ3€GØ€˜' VÒ+ØˆÜÝ=ØØôð r   c                 ó  — ddl m}m}m}m}m}m} |dk(  r<t        | |«      }	|j                  |�t        |«      nd|	¬«      }
 | ||
«      d¬«      S |j                  «       } || |d¬	«       t         |||«      j                  «      S )
Nr   )rf   rg   rh   Úto_compat_stream_responseÚto_core_stream_responserk   r   rl   rm   Fro   Trq   )rs   rf   rg   rh   r•   r–   rk   Ú_validate_stream_eventÚ#SendStreamingMessageSuccessResponserQ   ÚStreamResponser   r*   )r*   r&   r,   rf   rg   rh   r•   r–   rk   r4   Úwrapperry   s               r   r“   r“     s‘   € ÷÷ ð �‚Ü-¨f°iÓ@ˆØ"×FÑFØ",Ð"8Œs�:Œ¸bØð Gó 
ˆñ Ñ4°WÓ=Ð[`ÔaÐaà×&Ñ&Ó(€BÙˆf�b°Õ5ÜÑ-¨b°*Ó=×DÑDÓEÐEr   c                 ó  — ddl m}m}m}m}m}m} |dk(  r@|j                  «       } || |d¬«       t         ||«      «      }	|	j                  dd «       |	S  ||j                  j                  | «      «      }
 ||
d¬«      S )	Nr   )rf   rg   rh   Úto_compat_agent_cardÚto_core_agent_cardrk   r
   Trq   ÚadditionalInterfacesFro   )rs   rf   rg   rh   rœ   r�   rk   Ú	AgentCardr   Úpopr�   )rC   r&   rf   rg   rh   rœ   r�   rk   ry   ÚloweredrŽ   s              r   rL   rL   ,  s{   € ÷÷ ð �‚Ø×%Ñ%Ó'ˆÙ�$˜°$Õ7Ü!Ñ"6°rÓ":Ó;ˆØ�‰Ð*¨DÔ1Øˆá$ Y×%8Ñ%8×%GÑ%GÈÓ%MÓN€DÙ˜¸5ÔAÐAr   rk   c                 ó–   — | j                  d«      dk(  r|j                  j                  | «      S |j                  j                  | «      S )Nr\   r   )r-   rŒ   r�   ÚMessage)r*   rk   s     r   rt   rt   A  s?   € Ø‡z�z�&Ó˜VÒ#Ø�~‰~×,Ñ,¨VÓ4Ð4Ø×Ñ×+Ñ+¨FÓ3Ð3r   c                 ó  — | j                  d«      }|dk(  r|j                  j                  | «      S |dk(  r|j                  j                  | «      S |dk(  r|j                  j                  | «      S |j
                  j                  | «      S )Nr\   r   zstatus-updatezartifact-update)r-   rŒ   r�   ÚTaskStatusUpdateEventÚTaskArtifactUpdateEventr£   )r*   rk   r\   s      r   r—   r—   G  s‚   € Ø—*‘*˜VÓ$€DØˆv‚~Ø�~‰~×,Ñ,¨VÓ4Ð4ØˆÒØ×.Ñ.×=Ñ=¸fÓEÐEØÐ Ò Ø×0Ñ0×?Ñ?ÀÓGÐGØ×Ñ×+Ñ+¨FÓ3Ð3r   c          	      ó  ‡‡‡‡‡‡	‡
‡‡— |dk(  rt        | «      S ddlmŠmŠmŠmŠmŠmŠ	mŠ
m	Šm
Š ˆˆˆ
fd„ˆˆˆfd„ˆˆˆfd„ˆˆˆfd„ˆˆˆ	fd„ˆˆˆfd	„ˆˆˆfd
„dœ}|j                  |«      }|€| S t         || «      «      S )NrV   r   )	rg   rh   Úto_compat_cancel_task_requestÚ6to_compat_create_task_push_notification_config_requestÚ6to_compat_delete_task_push_notification_config_requestÚ3to_compat_get_task_push_notification_config_requestÚto_compat_get_task_requestÚ4to_compat_list_task_push_notification_config_requestÚ#to_compat_subscribe_to_task_requestc                 ó\   •—  ‰t        ‰| ‰j                  «       «      d«      j                  S ©Nrl   )Ú_parseÚGetTaskRequestr9   )Úprg   rh   r¬   s    €€€r   r>   z'_lower_request_params.<locals>.<lambda>c  s(   ø€ Ñ9¼&ÀÈAÈw×OeÑOeÓOgÓ:hÐjlÓm×tÑt€ r   c                 ó\   •—  ‰t        ‰| ‰j                  «       «      d«      j                  S r°   )r±   ÚCancelTaskRequestr9   )r³   rg   rh   r¨   s    €€€r   r>   z'_lower_request_params.<locals>.<lambda>d  s+   ø€ Ù)¬&°¸A¸w×?XÑ?XÓ?ZÓ*[Ð]_Ó`×gÑgð r   c                 ó\   •—  ‰t        ‰| ‰j                  «       «      d«      j                  S r°   )r±   ÚSubscribeToTaskRequestr9   )r³   rg   rh   r®   s    €€€r   r>   z'_lower_request_params.<locals>.<lambda>g  s+   ø€ Ù/´°yÀ!ÀW×EcÑEcÓEeÓ0fÐhjÓk×rÑrð r   c                 ón   •—  ‰t        ‰t        | «      ‰j                  «       «      d«      j                  S r°   )r±   Ú(_flatten_create_push_notification_paramsÚTaskPushNotificationConfigr9   )r³   rg   rh   r©   s    €€€r   r>   z'_lower_request_params.<locals>.<lambda>j  s;   ø€ ÙBÜØÜ<¸QÓ?Ø×6Ñ6Ó8óð
 ó÷ ‰fð r   c                 ó\   •—  ‰t        ‰| ‰j                  «       «      d«      j                  S r°   )r±   Ú$GetTaskPushNotificationConfigRequestr9   )r³   rg   rh   r«   s    €€€r   r>   z'_lower_request_params.<locals>.<lambda>t  s-   ø€ Ù?Ü�y ! W×%QÑ%QÓ%SÓTÐVXóç‰fð r   c                 ó\   •—  ‰t        ‰| ‰j                  «       «      d«      j                  S r°   )r±   Ú&ListTaskPushNotificationConfigsRequestr9   )r³   rg   rh   r­   s    €€€r   r>   z'_lower_request_params.<locals>.<lambda>y  s-   ø€ Ù@Ü�y ! W×%SÑ%SÓ%UÓVÐXZóç‰fð r   c                 ó\   •—  ‰t        ‰| ‰j                  «       «      d«      j                  S r°   )r±   Ú'DeleteTaskPushNotificationConfigRequestr9   )r³   rg   rh   rª   s    €€€r   r>   z'_lower_request_params.<locals>.<lambda>~  s-   ø€ ÙBÜ�y ! W×%TÑ%TÓ%VÓWÐY[óç‰fð r   )rT   rU   ztasks/resubscribez tasks/pushNotificationConfig/setz tasks/pushNotificationConfig/getz!tasks/pushNotificationConfig/listz#tasks/pushNotificationConfig/delete)Ú_lower_list_tasks_paramsrs   rg   rh   r¨   r©   rª   r«   r¬   r­   r®   r-   r   )r9   r'   Ú	loweringsÚlowerrg   rh   r¨   r©   rª   r«   r¬   r­   r®   s       @@@@@@@@@r   r=   r=   R  s|   ÿø€ Ø�ÒÜ'¨Ó/Ð/÷
÷ 
õ 
õ uõ
õ
õ	-
õ-
õ
.
õ
0
ñ9!D€IðD —=‘= Ó(€EØ€}ØˆÜ‘E˜&“MÓ"Ð"r   c                 óN  — ddl m}m}m}m} |j                  «       }t        || |«        ||d¬«      }t        |j                  j                  |j                  «      «      }t        d„ |j                  D «       «      }t        ||«      }	|	€|j                  dd «       |S |	|d<   |S )Nr   )rf   rg   rh   rk   Fro   c              3   óF   K  — | ]  }t        |j                  «      –— Œ y ­wrK   )rQ   rO   )Ú.0Úmembers     r   ú	<genexpr>z+_lower_list_tasks_params.<locals>.<genexpr>–  s   è ø€ Ò'\¸f¬¨F¯L©L×(9Ñ'\ùs   ‚!Ústatus)rs   rf   rg   rh   rk   ÚListTasksRequestr±   rQ   Ú	TaskStateÚNamerÉ   Ú	frozensetÚ_proto_task_state_name_to_0_3r    )
r9   rf   rg   rh   rk   Úprotor¡   Ústatus_nameÚvalid_0_3_valuesÚcompat_statuss
             r   rÁ   rÁ   Š  s£   € ÷ó ð ×+Ñ+Ó-€EÜ
ˆ9�f˜eÔ$Ù" 5ÀeÔL€GÜ˜W×.Ñ.×3Ñ3°E·L±LÓAÓB€KÜ'Ñ'\È	×H[ÑH[Ô'\Ó\ÐÜ8¸ÐFVÓW€MØÐØ�‰�H˜dÔ#ð €Nð *ˆ�ÑØ€Nr   ÚnamerÑ   c                 ó€   — | j                  d«      }|dk(  ry|j                  «       j                  dd«      }||v r|S dS )aŽ  Map a 1.0 protobuf ``TaskState`` enum name to its 0.3 wire string.

    The ``TASK_STATE_<NAME>`` enum names line up with the 0.3 wire values once the
    prefix is dropped and underscores become dashes, so no private SDK mapping is
    needed. The result is validated against the 0.3 enum's own values; an unspecified
    or unrecognized state yields ``None`` so the status filter is dropped.
    ÚTASK_STATE_ÚUNSPECIFIEDNÚ_ú-)ÚremoveprefixrÃ   Úreplace)rÓ   rÑ   ÚbaseÚ	candidates       r   rÎ   rÎ   Ÿ  sJ   € ð ×#Ñ# MÓ2€DØˆ}ÒØØ—z‘z“|×+Ñ+¨C°Ó5€IØ!Ð%5Ñ5ˆ9Ð?¸4Ð?r   c                 óª  — t        | «      }|j                  dd«      }|j                  dd«      }|�|n|}t        |t         «      s| S |j                  dd«      }t        |t        «      r;|j	                  d«      r*d|vr&|j                  d«      j                  d«      d   |d<   |j                  d	d«      x}r	d
|vr||d
<   |j                  |«       |S )zNMerge 1.x create envelope fields (parent/configId/config) into flat pb fields.ÚconfigNÚpushNotificationConfigÚparentztasks/ÚtaskIdú/r   ÚconfigIdr+   )r/   r    r.   rQ   Ú
startswithrÙ   ÚsplitÚupdate)r9   ÚflatrÞ   Úpush_configÚnestedrà   Ú	config_ids          r   r¹   r¹   ®  sÑ   € ä�v“,€DØ—H‘H˜X tÓ,€FØŸ™Ð":¸DÓA€KØ$Ð0‘F°k€FÜ�fœdÔ#ØˆØ—H‘H˜X tÓ,€FÜ�&œ#Ô 6×#4Ñ#4°XÔ#>À8ÐSWÑCWØ×,Ñ,¨XÓ6×<Ñ<¸SÓAÀ!ÑDˆˆX‰Ø—X‘X˜j¨$Ó/Ð/ˆ	Ð/°TÀÑ5GØ ˆˆt‰Ø‡K�K�ÔØ€Kr   Ú
parse_dict.Údatac                 ó   —  | ||d¬«       |S )NTrq   © )rë   rì   r   s      r   r±   r±   ¿  s   € Ùˆt�W°DÕ9Ø€Nr   )5Ú__doc__Úcollections.abcr   Útypesr   Útypingr   r   Úpydanticr   Úlitellm._loggingr   Úlitellm.proxy.a2a.agent_cardr	   Ú
A2AVersionrQ   rR   Ú	RequestIdr/   ÚobjectÚJsonDictrÍ   r   Ú__annotations__r   r   r$   r3   r8   rB   rH   rN   r1   r0   r_   rW   rb   rX   rƒ   rY   r†   r|   r�   r7   r“   rL   rt   r—   r=   rÁ   rÎ   r¹   r±   rî   r   r   ú<module>rû      s¸  ðòõ* %Ý ß !å å 1Ý Cà�\Ñ"€
Ø�#‰I˜Ñ€	Ø��V�Ñ€á )¨9°fÐ*=Ó >Ð ˜Ó >Ù"+Ò,aÓ"bÐ ˜%Ó bðK�Ið K (ó Kð
˜( 2 x <Ñ0ð ¸Hð ÐPSð ÐX`ó ð,¨ð ,¸*ð ,ÐQTð ,ÐYaó ,ð"* (ð *°Jð *Èyð *Ð]eó *ð Xð °zð Ècð ÐV^ó ð =˜xð =¨Jó =ð]˜xð ]°ð ]Àó ]ð<˜&ð < Yó <ðØðàðð ð	ð
 ðð óð  ð ¨j¸4Ñ.?ó ð ð °:ð Èið Ð\dó ðQ˜Hð Q¨jð QÀið QÐT\ó Qð8P˜(ð P¨Jð P¸8ó Pð/ xð /°JÀÑ4Eó /ð xð ¸ð Èó ð (ð °Jð À8ó ð(�Xð ( zð (°hó (ð& 8ð °
¸TÑ0Aó ð 8ð °Zð ÐPYð Ð^fó ðF˜hð F°
ð FÈ	ð FÐV^ó Fð.B˜hð B°
ð B¸xó Bð*4 hð 4¸:ð 4È)ó 4ð4 8ð 4¸
ð 4Àyó 4ð5# (ð 5#°sð 5#¸xó 5#ðp Xð °(ó ð*@¨ð @¸yÈ¹~ð @ÐRUÐX\ÑR\ó @ð°Xð À(ó ð"�x  V Ñ,ð °Hð Àvð ÐRXô r   