codex-agent-framework 0.1.59__tar.gz → 0.1.60__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/CHANGELOG.md +8 -0
  2. {codex_agent_framework-0.1.59/codex_agent_framework.egg-info → codex_agent_framework-0.1.60}/PKG-INFO +1 -1
  3. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/message.py +3 -4
  4. codex_agent_framework-0.1.60/codex_agent/version.py +1 -0
  5. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60/codex_agent_framework.egg-info}/PKG-INFO +1 -1
  6. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/pyproject.toml +1 -1
  7. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_context.py +1 -1
  8. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_response.py +1 -2
  9. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_messages.py +6 -7
  10. codex_agent_framework-0.1.59/codex_agent/version.py +0 -1
  11. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/LICENSE +0 -0
  12. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/MANIFEST.in +0 -0
  13. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/README.md +0 -0
  14. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/__init__.py +0 -0
  15. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/__main__.py +0 -0
  16. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/agent.py +0 -0
  17. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/agent_runtime.py +0 -0
  18. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/ai.py +0 -0
  19. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/browser.py +0 -0
  20. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_commands.py +0 -0
  21. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/__init__.py +0 -0
  22. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
  23. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
  24. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
  25. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
  26. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/content/__init__.py +0 -0
  27. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
  28. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/content/system.py +0 -0
  29. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/content/vision.py +0 -0
  30. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/context/__init__.py +0 -0
  31. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
  32. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
  33. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
  34. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
  35. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/files/__init__.py +0 -0
  36. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
  37. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/files/tools.py +0 -0
  38. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
  39. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
  40. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
  41. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
  42. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
  43. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
  44. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
  45. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
  46. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
  47. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/python/__init__.py +0 -0
  48. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
  49. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
  50. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
  51. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
  52. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
  53. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
  54. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/realtime/session.py +0 -0
  55. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
  56. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
  57. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
  58. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
  59. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
  60. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
  61. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
  62. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/builtin_plugins/web_search/__init__.py +0 -0
  63. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/cli/__init__.py +0 -0
  64. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/cli/headless.py +0 -0
  65. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/cli/main.py +0 -0
  66. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/cli/output.py +0 -0
  67. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/cli/root.py +0 -0
  68. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/cli/runner.py +0 -0
  69. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/client.py +0 -0
  70. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/command.py +0 -0
  71. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/config.py +0 -0
  72. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/context.py +0 -0
  73. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/desktop.py +0 -0
  74. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/event.py +0 -0
  75. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/get_text/__init__.py +0 -0
  76. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/get_text/default_gitignore +0 -0
  77. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/get_text/get_text.py +0 -0
  78. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/get_text/simpler_get_text.py +0 -0
  79. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/hooks.py +0 -0
  80. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/image.py +0 -0
  81. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/latex.py +0 -0
  82. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/mainloop.py +0 -0
  83. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/plugin.py +0 -0
  84. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/prompts/system_prompt.txt +0 -0
  85. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/provider.py +0 -0
  86. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/runtime.py +0 -0
  87. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/scheduler.py +0 -0
  88. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/scripts/install-system-dependencies.sh +0 -0
  89. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/server/__init__.py +0 -0
  90. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/server/app.py +0 -0
  91. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/server/core.py +0 -0
  92. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/service.py +0 -0
  93. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/sessions.py +0 -0
  94. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/status.py +0 -0
  95. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/stream.py +0 -0
  96. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/stream_utils.py +0 -0
  97. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/token_counter.py +0 -0
  98. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tool.py +0 -0
  99. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tray.py +0 -0
  100. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/__init__.py +0 -0
  101. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/app.py +0 -0
  102. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/chat.py +0 -0
  103. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/lifecycle.py +0 -0
  104. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/log.py +0 -0
  105. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/perf.py +0 -0
  106. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/state.py +0 -0
  107. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/status_bar.py +0 -0
  108. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/stream_debug.py +0 -0
  109. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/style.py +0 -0
  110. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/transcript.py +0 -0
  111. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/tui/widgets.py +0 -0
  112. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/utils.py +0 -0
  113. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent/worker.py +0 -0
  114. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
  115. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
  116. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent_framework.egg-info/entry_points.txt +0 -0
  117. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent_framework.egg-info/requires.txt +0 -0
  118. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/codex_agent_framework.egg-info/top_level.txt +0 -0
  119. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/dependencies.txt +0 -0
  120. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/setup.cfg +0 -0
  121. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent.py +0 -0
  122. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_audio_hooks.py +0 -0
  123. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_commands.py +0 -0
  124. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_desktop.py +0 -0
  125. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_environment.py +0 -0
  126. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_image_generation.py +0 -0
  127. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_observe.py +0 -0
  128. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_plugins.py +0 -0
  129. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_providers_config.py +0 -0
  130. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_realtime.py +0 -0
  131. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_runtime.py +0 -0
  132. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_sessions.py +0 -0
  133. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_subagents.py +0 -0
  134. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_tools.py +0 -0
  135. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_agent_turns.py +0 -0
  136. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_ai.py +0 -0
  137. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_browser.py +0 -0
  138. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_builtin_config.py +0 -0
  139. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_chat.py +0 -0
  140. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_cli.py +0 -0
  141. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_cli_headless.py +0 -0
  142. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_cli_root.py +0 -0
  143. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_client.py +0 -0
  144. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_events.py +0 -0
  145. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_get_text_browser.py +0 -0
  146. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_hooks.py +0 -0
  147. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_image_message.py +0 -0
  148. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_local_desktop.py +0 -0
  149. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_memory.py +0 -0
  150. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_planner.py +0 -0
  151. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_scheduler.py +0 -0
  152. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_server.py +0 -0
  153. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_service.py +0 -0
  154. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_token_counter.py +0 -0
  155. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_tui.py +0 -0
  156. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_utils.py +0 -0
  157. {codex_agent_framework-0.1.59 → codex_agent_framework-0.1.60}/tests/test_worker.py +0 -0
@@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  This project loosely follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and uses semantic versioning where practical.
6
6
 
7
+ ## [0.1.60] - 2026-05-18
8
+ ### Fixed
9
+ - Count compacted summary messages with observed compaction `usage.output_tokens` instead of `usage.input_tokens`, so future context estimates reflect the size of the produced summary rather than the size of the compacted input.
10
+ - Ignore compaction input/max-input usage as a future context-size proxy when no observed output token count is available, falling back to local token counting instead.
11
+
12
+ ### Tests
13
+ - Update compaction token-accounting regressions and auto-compaction defaults coverage; validate with the full offline CI suite (590 passed).
14
+
7
15
  ## [0.1.59] - 2026-05-18
8
16
  ### Changed
9
17
  - Make local context sizing rely on cached local token estimation for messages and tool schemas, with bounded smoothing against observed backend `usage.input_tokens` so status and auto-compaction decisions track reality more closely without a runtime token-counter dependency.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.59
3
+ Version: 0.1.60
4
4
  Summary: A lightweight event-driven Codex agent runtime.
5
5
  Author: Baptiste
6
6
  License-Expression: MIT
@@ -285,10 +285,9 @@ class CompactionMessage(DeveloperMessage):
285
285
  usage = self.get("usage") or {}
286
286
  if not isinstance(usage, dict):
287
287
  return None
288
- for key in ("input_tokens", "max_input_tokens"):
289
- value = usage.get(key)
290
- if isinstance(value, int) and value >= 0:
291
- return value
288
+ value = usage.get("output_tokens")
289
+ if isinstance(value, int) and value >= 0:
290
+ return value
292
291
  return None
293
292
 
294
293
  def count_tokens(self, model=None):
@@ -0,0 +1 @@
1
+ __version__ = "0.1.60"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.59
3
+ Version: 0.1.60
4
4
  Summary: A lightweight event-driven Codex agent runtime.
5
5
  Author: Baptiste
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "codex-agent-framework"
7
- version = "0.1.59"
7
+ version = "0.1.60"
8
8
  description = "A lightweight event-driven Codex agent runtime."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -105,7 +105,7 @@ def test_agent_session_compact_purges_compacted_prefix_before_remainder(tmp_path
105
105
  assert "output_items" not in message
106
106
  assert message.summaries == [FakeCompactionResult.output[1]]
107
107
  assert message.usage == FakeCompactionResult.usage
108
- assert message.count_tokens(model="gpt-5") == 42897
108
+ assert message.count_tokens(model="gpt-5") == 12000
109
109
  assert message.compacted_message_count == 2
110
110
  assert client.history == [
111
111
  {
@@ -202,8 +202,7 @@ def test_agent_get_response_auto_compacts_before_backend_call(monkeypatch):
202
202
  agent.get_response()
203
203
 
204
204
  assert calls == [{
205
- "model": agent.config.model,
206
- "instructions": agent.config_manager.system_message().content,
205
+ "model": agent.config.compaction_model,
207
206
  "max_input_tokens": agent.config.max_input_tokens,
208
207
  }]
209
208
  assert any(isinstance(message, CompactionMessage) for message in agent.ai.params["messages"])
@@ -248,24 +248,23 @@ def test_compaction_message_migrates_legacy_output_items_without_persisting_them
248
248
  assert message.to_response_format() == [output_items[1]]
249
249
 
250
250
 
251
- def test_compaction_message_prefers_input_usage_token_count():
251
+ def test_compaction_message_prefers_output_usage_token_count():
252
252
  message = CompactionMessage(
253
253
  output_items=[{"type": "compaction_summary", "id": "cs_123", "encrypted_content": "opaque"}],
254
254
  usage={"input_tokens": 42897, "output_tokens": 12000, "total_tokens": 54912},
255
255
  )
256
256
 
257
- assert message.count_tokens(model="gpt-5") == 42897
258
- assert message.effective_token_count == 42897
257
+ assert message.count_tokens(model="gpt-5") == 12000
258
+ assert message.effective_token_count == 12000
259
259
 
260
260
 
261
- def test_compaction_message_falls_back_to_max_input_tokens():
261
+ def test_compaction_message_ignores_input_usage_as_future_context_size():
262
262
  message = CompactionMessage(
263
263
  output_items=[{"type": "compaction_summary", "id": "cs_123", "encrypted_content": "opaque"}],
264
- usage={"max_input_tokens": 50000, "output_tokens": 12000},
264
+ usage={"input_tokens": 50000, "max_input_tokens": 60000},
265
265
  )
266
266
 
267
- assert message.count_tokens(model="gpt-5") == 50000
268
- assert message.effective_token_count == 50000
267
+ assert message.observed_token_count() is None
269
268
 
270
269
 
271
270
  def test_image_generation_response_message_persists_result_as_file(tmp_path, monkeypatch):
@@ -1 +0,0 @@
1
- __version__ = "0.1.59"