mirror of
https://github.com/agent0ai/agent-zero.git
synced 2026-10-21 04:40:13 +00:00
Compare public commentary together with canonical function calls when recording and checking the previous response. This restores the historical full-message policy for native turns, so changed or missing commentary can distinguish otherwise identical calls. Keep canonical call history, masking, provider metadata and state advancement intact. Exclude provider IDs and separate reasoning from the comparison; identical public text and calls remain guarded. Cover commentary changes and absence, call changes and batches, provider metadata round trips, and legacy thoughts/headline behavior. Update the owning contracts. Verified with 177 passing tests, four recorded Mac warning replays and a live two-call drill using the Codex II preset.
2.3 KiB
2.3 KiB
Message Loop Result Extensions DOX
Purpose
- Own normalization and policy handling after a model turn completes, before default assistant-history and tool-dispatch processing.
Ownership
- Extensions receive mutable
result_datawithllm_resultand may setskip_default_processingafter fully handling the turn. _20_empty_response.pyretries fully empty turns (no response and no reasoning): count them toward the unusable-response limit without adding a warning to model history, and usefw.msg_empty_response.mdfor agent-prefixed UI warning text only._20_empty_response.pyretries reasoning-only turns: add an agent-facingfw.msg_reasoning_only.mdhistory warning with a separatefw.msg_reasoning_only_response.mduser notice, and count them through the stop-unusable-response-loop extension._30_repeat_response.pycomparesLLMResult.repeat_response_text()for native calls (public text plus all calls), otherwise full response text. It retries content that exactly matchesloop_data.last_response, regardless of separate reasoning or provider IDs, usingfw.msg_repeat.mdfor history andfw.msg_repeat_response.mdfor the agent-prefixed UI warning text. State advancement is owned byhist_add_ai_response; do not call_remember_llm_result_statemanually._40_native_thoughts.pyfolds public commentary accompanying native function calls into the existing completed-generation logthoughtsarray. It preserves provider output items, canonical history, repeat comparison and dispatch. It respects handled results and excludes reasoning/encrypted items and explicit final-answer messages. Normal log masking applies.
Local Contracts
- Files run in deterministic filename order.
- A handler that sets
skip_default_processingowns needed history and UI side effects for that turn. - Handlers that should not add side effects after an earlier extension has handled the result must return when
skip_default_processingis set. - Do not use this point to mutate streamed partial content.
Work Guidance
- Normalize a completed result before policy extensions compare or persist it.
- Keep loop-control policy independent from optional plugins.
Verification
- Run message-loop and unusable-response regression tests.
Child DOX Index
No child DOX files.