mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-26 12:26:38 -06:00
2e806ef0e2
* fix(codex): keep prior finals when a coda follows without tool work Live persist last-won a single assistant slot, so a trailing final_answer replaced the real summary. Keep explicit finals after the last native tool; phase-less coordination text stays last-wins. * fix(codex): record the native-work barrier from item notifications turn/completed.items is a last_agent_message Summary, so result-time tool scans cannot see intervening work. Invalidate persistable finals when native tools arrive, drop trailing silent tokens, and let a later unphased message replace earlier finals. * fix(codex): make the persistable-text barrier once-per-handoff Delayed native completions must not move the barrier past an answer that arrived while that tool was already active. Dynamic tool calls are the same handoff. If no audible text exists after the barrier, recover the last persistable answer instead of dropping it. * fix(codex): keep a post-handoff silent final authoritative A tool after an audible final starts a new answer segment. If that segment is NO_REPLY, do not revive the pre-tool text. Recover a prior answer only when the post-handoff segment is empty. * fix(codex): classify silent finals with the delivery payload predicate Token-only matching missed JSON and reasoning-wrapped NO_REPLY payloads, so a trailing control envelope could join into the visible answer. Use the shared payload-level predicate. * fix(codex): honor unphased replacement and sleep handoffs A later unphased item must invalidate older finals even when a later final skips it, and sleep is a native answer barrier.