fix(codex): consume manual compaction usage gaps

This commit is contained in:
kshitijk4poor 2026-07-11 12:41:40 +05:30 committed by kshitij
parent ec6982fbcf
commit 8c62a92296
2 changed files with 7 additions and 1 deletions

View file

@ -1098,7 +1098,11 @@ def _compress_context_via_codex_app_server(
approx_tokens=approx_tokens,
force=True,
)
if getattr(result, "token_usage_last", None):
# An empty usage report must consume the pending post-compaction verdict
# rather than leaving preflight deferral armed until some unrelated later
# Codex turn supplies usage. Minimal external test engines may not expose
# the ContextEngine update hook; preserve their existing bookkeeping.
if hasattr(agent.context_compressor, "update_from_response"):
_record_codex_app_server_usage(agent, result)
except Exception:
logger.debug("codex compaction bookkeeping failed", exc_info=True)

View file

@ -102,6 +102,8 @@ def test_codex_app_server_manual_compression_routes_to_codex_thread():
assert agent._codex_session.calls == 1
assert agent.context_compressor.compression_count == 1
assert agent.context_compressor.last_compression_rough_tokens == 100000
# This minimal fake compressor does not implement update_from_response(),
# so the runtime preserves its existing pending-usage bookkeeping here.
assert agent.context_compressor.last_prompt_tokens == -1
assert agent.context_compressor.last_completion_tokens == 0
assert agent.context_compressor.awaiting_real_usage_after_compression is True