§
    ÷žyjMš  ã                  ód   — d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 dd„Z
dZdd„Zdddœd„ZdS )u¥  Post-loop turn finalization for ``run_conversation``.

Extracted from ``agent/conversation_loop.py`` as part of the god-file
decomposition campaign (``~/.hermes/plans/god-file-decomposition.md``, Phase 1
step 4 â€” the post-loop ``TurnFinalizer`` seam). ``run_conversation``'s tail
(everything after the main tool-calling ``while`` loop) is lifted here verbatim:
budget-exhaustion summary, trajectory save, session persist, turn diagnostics,
response transforms, result-dict assembly, steer drain, and the memory/skill
review trigger.

Behavior-neutral: the body is moved unchanged. All ``agent.*`` side effects fire
exactly as before; only the post-loop *locals* are passed in as keyword args, and
the assembled ``result`` dict is returned to ``run_conversation`` which returns it
to the caller. The function is synchronous with a single return â€” mirroring the
region it replaces (no awaits, no early returns).

Module ``logger`` is imported lazily inside the body (``from
agent.conversation_loop import logger``) so this module never imports
``agent.conversation_loop`` at import time -> no import cycle, and the log records
keep the exact logger name (``"agent.conversation_loop"``).
é    )ÚannotationsN)Ú_summarize_user_message_for_log)Úflatten_message_text)Ú_sanitize_surrogatesÚmsgÚdictÚreturnÚboolc                óš   — |                       d¦  «        sdS t          |                       d¦  «        ¦  «                             ¦   «          S )u•  An assistant row with ``tool_calls`` but no visible text content of its own.

    Such a row satisfies the role check (``tail role == "assistant"``) while
    carrying none of the delivered answer â€” see the #43849/#44100 invariant
    block in :func:`finalize_turn`. Uses :func:`flatten_message_text` so that
    multimodal (list-type) content is evaluated by its text parts, not just
    its type.
    Ú
tool_callsFÚcontent)Úgetr   Ústrip)r   s    ú:/home/ragecks/.hermes/hermes-agent/agent/turn_finalizer.pyÚ_is_pure_tool_call_tailr       sF   € ð �7Š7�<Ñ Ô ð ØˆuÝ# C§G¢G¨IÑ$6Ô$6Ñ7Ô7×=Ò=Ñ?Ô?Ð?Ð?ó    )Ú_verification_stop_syntheticÚ_pre_verify_syntheticÚNonec                ó(   — d„ | D ¦   «         | dd…<   dS )zøRemove verification-continuation nudge messages from *messages* in place.

    Only the synthetic nudges carry these flags, so this strips just the
    nudges while preserving the real attempted-final-answer that was
    persisted to state.db.
    c                ó~   ‡— g | ]9Št          ‰t          ¦  «        r t          ˆfd „t          D ¦   «         ¦  «        °7‰‘Œ:S )c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S )N)r   )Ú.0ÚfÚms     €r   ú	<genexpr>zI_drop_verification_continuation_scaffolding.<locals>.<listcomp>.<genexpr>B   s-   øè è € Ð+_Ð+_¸¨A¯EªE°!©H¬HÐ+_Ð+_Ð+_Ð+_Ð+_Ð+_r   )Ú
isinstancer   ÚanyÚ _VERIFICATION_CONTINUATION_FLAGS©r   r   s    @r   ú
<listcomp>z?_drop_verification_continuation_scaffolding.<locals>.<listcomp>@   s_   ø€ ð ð ð ØÝ˜1�dÑ#Ô#ðå(+Ð+_Ð+_Ð+_Ð+_Õ>^Ð+_Ñ+_Ô+_Ñ(_Ô(_ðØ	ðð ð r   N© )Úmessagess    r   Ú+_drop_verification_continuation_scaffoldingr$   9   s,   € ðð Øðñ ô €HˆQˆQˆQ�K€K€Kr   F)Ú_pending_verification_responseÚ(_pending_verification_response_previewedc               óŠ  — ddl m} || j        k    p| j        j        dk    }|o| o| ot          |¦  «        dv }|du ot          |¦  «        o|}d}d}|r|}|rd| _        d|› d| j        › d	�}d}d}ns|€q|rod|› d| j        › d	�}|                      d
|› d| j        › d�¦  «         | j	        s!|  
                    d|› d| j        › d�¦  «         |                      ||¦  «        }d}|�rt          j                             d¦  «        }|râ	 ddlm} |                     ¦   «         }	 |                     ||d|› d| j        › d�ddd|| j        dœ¬¦  «         |                     d||| j        ¦  «         	 |                     ¦   «          n:# t*          $ r Y n.w xY w# 	 |                     ¦   «          w # t*          $ r Y w w xY wxY wn(# t*          $ r |                     d|d¬¦  «         Y nw xY wt          |¦  «                             d¦  «        }|duo| o|| j        k     p|}t1          | dd¦  «        }|du r~t3          |t4          ¦  «        rit3          |t          ¦  «        sTt1          | dd¦  «        durAt1          | dd¦  «        �0t1          | j        dd¦  «        }t9          |¦  «        r ||¦  «         g }	 |                      |t=          |	¦  «        |¦  «         nG# t*          $ r:}|                     d|› �¦  «         |                      d|d¬¦  «         Y d}~nd}~ww xY w	 |  !                    |¦  «         nG# t*          $ r:}|                     d|› �¦  «         |                      d |d¬¦  «         Y d}~nd}~ww xY w	 |  "                    |¦  «         tG          |¦  «         |rdd!l$m%}  |||¦  «         |rÌ|sÊ	 |r|d"         nd} n# t*          $ r d} Y nw xY wt3          | tL          ¦  «        r|                      d#¦  «        nd}!|!d$k    r|                     d$|d%œ¦  «         n_t3          | tL          ¦  «        rJ|                      d&¦  «        |k    r1tO          | ¦  «        r"|| d&<   |  (                    d'd¦  «         d| _)        t1          | d(d¦  «        }"t9          |"¦  «        r |"|¦  «         |�s|�s	 t1          | dd¦  «        }#|#rÑt1          |#d)d¦  «        du r¾t9          t1          |#d*d¦  «        ¦  «        r |ržt1          | d+d¦  «        s�tU          |¦  «        }$|# +                    |¦  «        }%t1          |#d,d¦  «        rd|#_,        d| _)        t3          |%tZ          ¦  «        r	|%r|%|dd…<   tU          |¦  «        }&|$|&k    r|                     d-|$|&¦  «         n-# t*          $ r }'|                     d.|'¦  «         Y d}'~'nd}'~'ww xY w|  .                    ||¦  «         nG# t*          $ r:}(|                     d/|(› �¦  «         |                      d0|(d¬¦  «         Y d}(~(nd}(~(ww xY w	 || _/        n# t*          $ r Y nw xY w|r|d"                              d#¦  «        nd})d}*|)d1k    r–ta          |¦  «        D ]†}+|+                     d#¦  «        d$k    rk|+                     d2¦  «        rV|+d2         },|,rJt3          |,d         tL          ¦  «        r/|,d"                              d3i ¦  «                             d4¦  «        }* nŒ‡tc          d5„ |D ¦   «         ¦  «        }-|rtU          |¦  «        nd}.| j        r| j        j2        nd}/| j        r| j        j3        nd}0d6}1|| j4        || j        |/|0|-|)|.| j5        pd7f
}2|)d1k    r|s |j        d8|1z   d9z   g|2¢|*‘R Ž  n |j        |1g|2¢R Ž  |r‹|s‰	 t1          | d:d¦  «        pi }3|3rE|  6                    ¦   «         r1|  7                    |3¦  «        }4|4r| 8                    ¦   «         d;z   |4z   }n-# t*          $ r }5| 9                    d<|5¦  «         Y d}5~5nd}5~5ww xY w|sú	 |  :                    ¦   «         r·|pd= ;                    ¦   «         }6|6d=k    p|6d>k    }7|7 oD| oAt          |¦  «                             d?¦  «         otU          |6¦  «        d@k    o|6d"d…         dAv}8t          |¦  «        dBk    }9|7s|8s|9r4|  <                    |t1          | dCd¦  «        ¦  «        }:|:r|7r|:}n|6d;z   |:z   }n-# t*          $ r };| 9                    dD|;¦  «         Y d};~;nd};~;ww xY wd}<d}=|rˆ|s†	 ddEl=m>}>  |>dF|| j5        pd=| j4        t1          | dGd¦  «        pd=¬H¦  «        }?|?D ]!}@t3          |@t
          ¦  «        r
|@r|}=|@}d}< nŒ"n-# t*          $ r }A|                     dI|A¦  «         Y d}A~And}A~Aww xY w|rs|sq	 ddEl=m>}>  |>dJ| j5        |||
|t[          |¦  «        | j4        t1          | dGd¦  «        pd=¬K¦	  «	         n-# t*          $ r }A|                     dL|A¦  «         Y d}A~And}A~Aww xY w	 ddMl m?}B t1          | dNd¦  «        }C |B| ||C|||||||¬O¦
  «
         n-# t*          $ r }A|                     dP|A¦  «         Y d}A~And}A~Aww xY wd}Dta          |¦  «        D ]U}E|E                     d#¦  «        dQk    r n9|E                     d#¦  «        d$k    r|E                     dR¦  «        r
|EdR         }D nŒVt3          |t
          ¦  «        rt�          |¦  «        }i dS|“dT|D“dU|“dV|“dW|“dX|“dY|“dZd“d[|“d\|<“d]|=“d^t1          | d_d¦  «        “d`| j4        “da| jA        “db| jB        “dc| jC        “dd| jD        “| jE        | jF        | jG        | jH        | jI        | jJ        t1          | j        ded¦  «        pd| jK        | jL        | jM        t1          | dfi ¦  «        pi                      dg¦  «        pi                      dh¦  «        | j5        diœ¥}F| jN        �| jN         O                    ¦   «         |Fdj<   |r9t          |¦  «        dkk    r&|pdl|Fdm<   dn|Fvrt1          | dCd¦  «        }Gdo|Gpdpz   |Fdn<   |r||Fdq<   |  P                    ¦   «         }H|Hr|H|Fdr<   d| _        |r| jQ        r
| jQ        |Fds<   |  R                    ¦   «          d| _S        d}I| jT        dk    r"| jU        | jT        k    rdt| jV        v r	d}Id| _U        |  W                    |
|||¬u¦  «         |rN|sLt1          | dvd¦  «        s;|s|Ir7	 |  X                    t[          |¦  «        ||I¬w¦  «         n# t*          $ r Y nw xY w	 ddEl=m>}>  |>dx| j5        ||||||| j4        t1          | dGd¦  «        pd=¬y¦
  «
         n-# t*          $ r }A|                     dz|A¦  «         Y d}A~And}A~Aww xY wd| _Y        d| _Z        |FS ){z¹Run the post-loop finalization and return the turn ``result`` dict.

    Lifted verbatim from ``run_conversation`` (the region after the main agent
    loop). See module docstring.
    r   )Úlogger>   ÚunknownÚbudget_exhaustedNFTzmax_iterations_reached(ú/ú)u#   âš ï¸� Iteration budget exhausted (u   ) â€” asking model to summariseu%   
âš ï¸�  Iteration budget exhausted (u   ) â€” requesting summary...ÚHERMES_KANBAN_TASK)Ú	kanban_dbzIteration budget exhausted (u;   ) â€” task could not complete within the allowed iterationsÚ	timed_out)Úbudget_usedÚ
budget_max)ÚerrorÚoutcomeÚrelease_claimÚend_runÚevent_payload_extraz5recorded budget-exhausted failure for task %s (%d/%d)z5Failed to record budget-exhausted failure for task %s)Úexc_infoztext_response(Ú _turn_preflight_display_snapshotÚ _turn_received_provider_responseÚcontext_compressorÚ-rollback_interrupted_preflight_display_tokenszsave_trajectory: z*finalize_turn: _save_trajectory failed: %szcleanup_task_resources: z1finalize_turn: _cleanup_task_resources failed: %s)Úclose_interrupted_tool_sequenceéÿÿÿÿÚroleÚ	assistant)r>   r   r   Ú_db_persistedÚ$_apply_persist_user_message_overrideÚ_micro_compact_enabledÚ_micro_compactÚ_persist_disabledÚ_flush_scan_cursor_invalidatedz#Micro-compaction: %d -> %d messageszMicro-compaction failed: %szpersist_session: z*finalize_turn: _persist_session failed: %sÚtoolr   ÚfunctionÚnamec              3  ó    K  — | ]I}t          |t          ¦  «        r2|                     d ¦  «        dk    ¯0|                     d¦  «        ¯EdV — ŒJdS )r>   r?   r   é   N)r   r   r   r    s     r   r   z finalize_turn.<locals>.<genexpr>·  sf   è è € ð ð ØÝ�a�ÑÔðà#$§5¢5¨¡=¤=°KÒ#?Ð#?ÀAÇEÂEÈ,ÑDWÔDWÐ#?ð 	
Ø#?Ð#?Ð#?Ð#?ðð r   zuTurn ended: reason=%s model=%s api_calls=%d/%d budget=%d/%d tool_turns=%d last_msg_role=%s response_len=%d session=%sÚnonez>Turn ended with pending tool result (agent may appear stuck). z last_tool=%sÚ_turn_failed_file_mutationsz

z(file-mutation verifier footer failed: %sÚ z(empty)Útext_responseé   >   õ   ã€‚õ   ï¼�õ   ï¼Ÿú!r,   ú.ú?ú`Úpartial_stream_recoveryÚ_last_persistence_error_causez$turn-completion explainer failed: %s)Úinvoke_hookÚtransform_llm_outputÚplatform)Úresponse_textÚ
session_idÚmodelr[   z$transform_llm_output hook failed: %sÚpost_llm_call)r]   Útask_idÚturn_idÚuser_messageÚassistant_responseÚconversation_historyr^   r[   zpost_llm_call hook failed: %s)Ú$_notify_context_engine_turn_completeÚ_last_turn_usage)Úusager(   ra   r`   Úapi_call_countÚinterruptedÚfailedÚturn_exit_reasonz(on_turn_complete notification failed: %sÚuserÚ	reasoningÚfinal_responseÚlast_reasoningr#   Ú	api_callsÚ	completedrk   rj   Úpartialri   Úresponse_transformedÚpre_transform_responseÚresponse_previewedÚ_response_was_previewedr^   ÚproviderÚbase_urlÚinput_tokensÚoutput_tokensÚlast_prompt_tokensÚrequest_overridesÚ
extra_bodyÚservice_tier)Úcache_read_tokensÚcache_write_tokensÚreasoning_tokensÚprompt_tokensÚcompletion_tokensÚtotal_tokensr{   Úestimated_cost_usdÚcost_statusÚcost_sourcer~   r]   Ú	guardrailÚsession_persistence_failedux   session storage could not be written â€” check the state database health (`hermes doctor`), then send your message againr2   Úfailure_reasonzsession_persistence_failed:r)   Úcleanup_errorsÚpending_steerÚinterrupt_messageÚskill_manage)Úoriginal_user_messagern   ri   r#   Úskip_background_review)Úmessages_snapshotÚreview_memoryÚreview_skillsÚon_session_end)	r]   r`   ra   rq   rj   ri   rk   r^   r[   zon_session_end hook failed: %s)[Úagent.conversation_loopr(   Úmax_iterationsÚiteration_budgetÚ	remainingÚstrr
   rv   Ú_emit_statusÚ
quiet_modeÚ_safe_printÚ_handle_max_iterationsÚosÚenvironr   Ú
hermes_clir.   ÚconnectÚ_record_task_failureÚinfoÚcloseÚ	ExceptionÚwarningÚ
startswithÚgetattrr   Úintr:   ÚcallableÚ_save_trajectoryr   Úappendr2   Ú_cleanup_task_resourcesÚ)_drop_trailing_empty_response_scaffoldingr$   Úagent.message_sanitizationr<   r   r   ÚpopÚ_db_flush_scan_prefixÚlenrC   rE   ÚlistÚ_persist_sessionÚ_session_messagesÚreversedÚsumÚusedÚ	max_totalr^   r]   Ú_file_mutation_verifier_enabledÚ$_format_file_mutation_failure_footerÚrstripÚdebugÚ"_turn_completion_explainer_enabledr   Ú#_format_turn_completion_explanationÚhermes_cli.lifecyclerY   re   r   rw   rx   Úsession_input_tokensÚsession_output_tokensÚsession_cache_read_tokensÚsession_cache_write_tokensÚsession_reasoning_tokensÚsession_prompt_tokensÚsession_completion_tokensÚsession_total_tokensÚsession_estimated_cost_usdÚsession_cost_statusÚsession_cost_sourceÚ_tool_guardrail_halt_decisionÚto_metadataÚ_drain_pending_steerÚ_interrupt_messageÚclear_interruptÚ_stream_callbackÚ_skill_nudge_intervalÚ_iters_since_skillÚvalid_tool_namesÚ_sync_external_memory_for_turnÚ_spawn_background_reviewr8   r9   )JÚagentrn   rh   ri   rj   r#   rd   Úeffective_task_idra   rb   r�   Ú_should_review_memoryÚ_turn_exit_reasonr%   r&   r(   r*   Úbudget_fallback_eligibleÚcontinuation_budget_exhaustedÚiteration_limit_fallbackÚpreserved_verification_fallbackÚ_kanban_taskÚ_kbÚ_connÚnormal_text_responserq   Ú_preflight_snapshotÚ_rollback_fnÚ_cleanup_errorsÚ	_save_errÚ_cleanup_errr<   Ú_tailÚ
_tail_roleÚ_apply_overrideÚ_compressorÚ_beforeÚ
_compactedÚ_afterÚ_mc_errÚ_persist_errÚ_last_msg_roleÚ_last_tool_nameÚ_mÚ_tcsÚ_turn_tool_countÚ	_resp_lenÚ_budget_usedÚ_budget_maxÚ	_diag_msgÚ
_diag_argsÚ_failedÚfooterÚ_ver_errÚ	_strippedÚ_is_empty_terminalÚ_is_partial_fragmentÚ_is_partial_stream_recoveryÚ_explanationÚ_exp_errÚ_response_transformedÚ_pre_transform_responseÚ_invoke_hookÚ_transform_resultsÚ_hook_resultÚexcre   Ú_turn_usagero   r   ÚresultÚ_causeÚ_leftover_steerÚ_should_review_skillssJ                                                                             r   Úfinalize_turnr  F   s  € ð. /Ð.Ð.Ð.Ð.Ð.ð 	˜%Ô.Ò.ð 	1ØÔ!Ô+¨qÒ0ð ð
 	ð 	FØˆOð	FàˆJð	Fõ Ð!Ñ"Ô"Ð&EÐEð	 ð 	˜$Ðð 	%ÝÐ/Ñ0Ô0ð	%à$ð "ð  %ÐØ&+Ð#Ø$ð (ð 8ˆð 4ð 	1Ø,0ˆEÔ)Ø^°nÐ^Ð^ÀuÔG[Ð^Ð^Ð^ÐØ#'Ð Ø*.Ð'Ð'Ø	Ð	Ð$<Ð	ð _°nÐ^Ð^ÀuÔG[Ð^Ð^Ð^ÐØ×Òð,°.ð ,ð ,À5ÔCWð ,ð ,ð ,ñ	
ô 	
ð 	
ð Ôð 	Ø×Òð,¸ð ,ð ,È%ÔJ^ð ,ð ,ð ,ñô ð ð ×5Ò5°hÀÑOÔOˆØ#'Ð àñ /õ ”z—~’~Ð&:Ñ;Ô;ˆØð $	ð#Ø7Ð7Ð7Ð7Ð7Ð7ØŸš™œ�ðØ×,Ò,ØØ$ð)Ø .ð)ð )Ø16Ô1Eð)ð )ð )ð
 !,Ø&*Ø $à+9Ø*/Ô*>ð-ð -ð -ñ ô ð ð" —K’KØOØ$ n°eÔ6Jñô ð ð
ØŸš™œ˜˜øÝ$ð ð ð Ø˜ðøøøøðØŸš™œ˜˜øÝ$ð ð ð Ø˜ðøøøøøøøøåð ð ð Ø—’ØKØ Ø!ð ñ ô ð ð ð ðøøøõ Ð0Ñ1Ô1×<Ò<Ð=MÑNÔNÐà˜dÐ"ð 	
ØˆJð	
ð ˜UÔ1Ò1ð $Ø#ð õ* "ØÐ1°4ñô Ðð 	�tÐÐÝÐ*­CÑ0Ô0ð 	åÐ.µÑ5Ô5ð 	õ �EÐ=¸uÑEÔEÈTÐQÐQÝ�EÐ/°Ñ6Ô6ÐBåØÔ$Ø;Øñ
ô 
ˆõ
 �LÑ!Ô!ð 	.ØˆLÐ,Ñ-Ô-Ð-ð €Oð]Ø×Ò˜xÕ)HÈÑ)VÔ)VÐXaÑbÔbÐbÐbøÝð ]ð ]ð ]Ø×ÒÐ>°9Ð>Ð>Ñ?Ô?Ð?Ø�ŠÐAÀ9ÐW[ˆÑ\Ô\Ð\Ð\Ð\Ð\Ð\Ð\øøøøð]øøøð
gØ×%Ò%Ð&7Ñ8Ô8Ð8Ð8øÝð gð gð gØ×ÒÐH¸,ÐHÐHÑIÔIÐIØ�ŠÐHÈ,ÐaeˆÑfÔfÐfÐfÐfÐfÐfÐføøøøðgøøøðS`Ø×7Ò7¸ÑAÔAÐAõ 	4°HÑ=Ô=Ð=ð  ð 	FØRÐRÐRÐRÐRÐRØ+Ð+¨H°nÑEÔEÐEð" ð '	3 +ð '	3ðØ(0Ð:˜ œ˜°d��øÝð ð ð Ø���ðøøøå.8¸ÅÑ.EÔ.EÐO˜Ÿš 6Ñ*Ô*Ð*È4ˆJØ˜[Ò(Ð(ð —’¨ÀÐ PÐ PÑQÔQÐQÐQÝ˜E¥4Ñ(Ô(ð 3¨U¯YªY°yÑ-AÔ-AÀ^Ò-SÐ-SÕXoÐpuÑXvÔXvÐ-Sð $2��iÑ ð —	’	˜/¨4Ñ0Ô0Ð0ð /3�Ô+õ " %Ð)OÐQUÑVÔVˆÝ�OÑ$Ô$ð 	&ØˆO˜HÑ%Ô%Ð%ð ñ ,	D 6ñ ,	Dð+DÝ% eÐ-AÀ4ÑHÔH�ð  ð"å Ð-EÀuÑMÔMÐQUÐUÐUÝ ¥¨Ð6FÈÑ!MÔ!MÑNÔNð Và&ð Võ $ EÐ+>ÀÑFÔFð Võ " (™mœm�GØ!,×!;Ò!;¸HÑ!EÔ!E�Jõ Ø#Ð%EÀuñô ð ;ð FK˜ÔBØ6:˜Ô3Ý! *­dÑ3Ô3ð 1¸
ð 1Ø&0˜   ™Ý  ™]œ]�FØ &Ò(Ð(ØŸšØAØ# Vñô ð øøõ ð Dð Dð DØ—’Ð9¸7ÑCÔCÐCÐCÐCÐCÐCÐCøøøøðDøøøð 	×Ò˜xÐ)=Ñ>Ô>Ð>Ð>øÝð `ð `ð `Ø×ÒÐA°<ÐAÐAÑBÔBÐBØ�ŠÐAÀ<ÐZ^ˆÑ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_øøøøð`øøøðØ"*ˆÔÐøÝð ð ð Øˆðøøøð 2:ÐC�X˜b”\×%Ò% fÑ-Ô-Ð-¸t€NØ€OØ˜ÒÐå˜8Ñ$Ô$ð 	ð 	ˆBØ�vŠv�f‰~Œ~ Ò,Ð,°·²¸Ñ1EÔ1EÐ,Ø˜,Ô'�Øð O�J t¨A¤wµÑ5Ô5ð OØ&*¨2¤h§l¢l°:¸rÑ&BÔ&B×&FÒ&FÀvÑ&NÔ&N�OØ�øåð ð Øðñ ô ñ ô Ðð (6Ð<•�NÑ#Ô#Ð#¸1€IØ27Ô2HÐO�5Ô)Ô.Ð.Èa€LØ6;Ô6LÐS�%Ô(Ô2Ð2ÐRS€Kð	Dð ð
 	˜5œ;¨¸Ô8LØ�kØ˜.¨)ØÔÐ"˜Fð	€Jð ˜ÒÐ¨ÐàˆŒØLØñØ)ñ*ð	
ð ð	
ð )ð	
ð 	
ð 	
ð 	
ð 	
ð 	ˆŒ�IÐ+ 
Ð+Ð+Ð+Ð+ð" ð O˜kð Oð	OÝ˜eÐ%BÀDÑIÔIÐOÈRˆGØð O˜5×@Ò@ÑBÔBð OØ×CÒCÀGÑLÔL�Øð OØ%3×%:Ò%:Ñ%<Ô%<¸vÑ%EÈÑ%N�NøøÝð 	Oð 	Oð 	OØ�LŠLÐCÀXÑNÔNÐNÐNÐNÐNÐNÐNøøøøð	Oøøøð& ð (Kð'	KØ×7Ò7Ñ9Ô9ð $Ø+Ð1¨r×8Ò8Ñ:Ô:�	Ø%.°"¢_Ð%N¸	ÀYÒ8NÐ"ð
 +Ð*ð ]Ø;Ð;ð]åÐ 1Ñ2Ô2×=Ò=¸oÑNÔNÐNð]õ ˜I™œ¨"Ò,ð]ð " " # #œÐ.\Ð\ð %õ Ð)Ñ*Ô*Ð.GÒGð ,ð 'ðà+ðð 3ðð
 $)×#LÒ#LØ)Ý Ð'FÈÑMÔMñ$ô $�Lð $ð Ø-ð 
ð .:˜N˜Nð !*¨FÑ 2°\Ñ Að +øøõ ð 	Kð 	Kð 	KØ�LŠLÐ?ÀÑJÔJÐJÐJÐJÐJÐJÐJøøøøð	Køøøð "ÐØ"Ðð ð H˜kð Hð	HØHÐHÐHÐHÐHÐHØ!- Ø&Ø,Ø Ô+Ð1¨rØ”kÝ  ¨
°DÑ9Ô9Ð?¸Rð"ñ "ô "Ðð !3ð ð �Ý˜l­CÑ0Ô0ð °\ð Ø.<Ð+Ø%1�NØ,0Ð)Ø�EøøøÝð 	Hð 	Hð 	HØ�NŠNÐAÀ3ÑGÔGÐGÐGÐGÐGÐGÐGøøøøð	Høøøð ð A˜kð Að	AØHÐHÐHÐHÐHÐHØˆLØØ Ô+Ø)ØØ2Ø#1Ý%)¨(¡^¤^Ø”kÝ  ¨
°DÑ9Ô9Ð?¸Rð
ñ 
ô 
ð 
ð 
øõ ð 	Að 	Að 	AØ�NŠNÐ:¸CÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@øøøøð	AøøøðHØPÐPÐPÐPÐPÐPõ ˜eÐ%7¸Ñ>Ô>ˆØ,Ð,ØØØØØØ%Ø)Ø#ØØ.ð	
ñ 	
ô 	
ð 	
ð 	
øõ ð Hð Hð HØ�ŠÐAÀ3ÑGÔGÐGÐGÐGÐGÐGÐGøøøøðHøøøð €NÝ˜Ñ!Ô!ð ð ˆØ�7Š7�6‰?Œ?˜fÒ$Ð$ØˆEØ�7Š7�6‰?Œ?˜kÒ)Ð)¨c¯gªg°kÑ.BÔ.BÐ)Ø  Ô-ˆNØˆEøõ �.¥#Ñ&Ô&ð >Ý-¨nÑ=Ô=ˆð"Ø˜.ð"à˜.ð"ð 	�Hð"ð 	�^ð	"ð
 	�Yð"ð 	Ð-ð"ð 	�&ð"ð 	�5ð"ð 	�{ð"ð 	Ð 5ð"ð 	!Ð"9ð"ð 	�g eÐ-FÈÑNÔNð"ð 	�”ð"ð 	�E”Nð"ð 	�E”Nð"ð  	˜Ô2ð!"ð" 	˜Ô4ð#"ð$ #Ô<Ø#Ô>Ø!Ô:ØÔ4Ø"Ô<ØÔ2Ý% eÔ&>Ð@TÐVWÑXÔXÐ]Ð\]Ø#Ô>ØÔ0ØÔ0õ �UÐ/°Ñ4Ô4Ð:¸×?Ò?ÀÑMÔMÐSÐQSß
Š#ˆnÑ
Ô
ØÔ&ðC"ð "ð "€FðF Ô*Ð6Ø#ÔA×MÒMÑOÔOˆˆ{Ñð ð •#Ð'Ñ(Ô(Ð,HÒHÐHØ(ð 
ðEð 	ˆw‰ð  6Ð)Ð)Ý˜UÐ$CÀTÑJÔJˆFà-°Ð1D¸9ÑEð Ð#Ñ$ð ð 3Ø#2ˆÐÑ ð ×0Ò0Ñ2Ô2€OØð 2Ø"1ˆˆÑØ$)€EÔ!ð ð ?�uÔ/ð ?Ø&+Ô&>ˆÐ"Ñ#ð 
×ÒÑÔÐð "€EÔð "ÐØÔ# aÒ'Ð'ØÔ(¨EÔ,GÒGÐGØ %Ô"8Ð8Ð8Ø $ÐØ#$ˆÔ ð 
×(Ò(Ø3Ø%ØØð	 )ñ ô ð ð 	ðàðõ ˜Ð7¸Ñ?Ô?ðð #ð	ð '<ð	ð	Ø×*Ò*Ý"& x¡.¤.Ø3Ø3ð +ñ ô ð ð øõ
 ð 	ð 	ð 	ØˆDð	øøøð>ØDÐDÐDÐDÐDÐDØˆØØÔ'Ø%ØØØØ#Ø.Ø”+Ý˜U J°Ñ5Ô5Ð;¸ð	
ñ 	
ô 	
ð 	
ð 	
øõ ð >ð >ð >Ø�ŠÐ7¸Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð>øøøð .2€EÔ*Ø-2€EÔ*à€Ms½  ÄG Ä'AF Å5F
 Æ	G Æ

FÆG ÆFÆG ÆGÆF1Æ0GÆ1
F>Æ;GÆ=F>Æ>GÇG Ç"G*Ç)G*Ê9$K Ë
L"Ë(0LÌL"Ì&L< Ì<
N Í0M;Í;N Î<W% ÏO ÏW% ÏOÏW% ÏOÏCW% Ò<C$V! Ö W% Ö!
WÖ+W×W% ×W×W% ×%
X)×/0X$Ø$X)Ø-X5 Ø5
YÙYÞ)A` à
`.à`)à)`.à4Cd  ä 
d*ä
d%ä%d*ä6Af æ
f8æf3æ3f8ç Ah è
h-èh(è(h-è1,i é
jé(jêjô%u  õ 
uõuõ6v ö
v2öv-ö-v2)r   r   r	   r
   )r	   r   )Ú__doc__Ú
__future__r   rž   Úagent.codex_responses_adapterr   Úagent.message_contentr   r¯   r   r   r   r$   r  r"   r   r   ú<module>r     sÈ   ððð ð, #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	à IÐ IÐ IÐ IÐ IÐ IØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ð@ð @ð @ð @ð&$Ð  ð
ð 
ð 
ð 
ð8 $(Ø-2ð!Xð Xð Xð Xð Xð Xð Xr   