codex-agent-framework 0.1.36__tar.gz → 0.1.37__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 (151) hide show
  1. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/CHANGELOG.md +8 -0
  2. {codex_agent_framework-0.1.36/codex_agent_framework.egg-info → codex_agent_framework-0.1.37}/PKG-INFO +1 -1
  3. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/context.py +27 -7
  4. codex_agent_framework-0.1.37/codex_agent/version.py +1 -0
  5. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37/codex_agent_framework.egg-info}/PKG-INFO +1 -1
  6. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/pyproject.toml +1 -1
  7. codex_agent_framework-0.1.36/codex_agent/version.py +0 -1
  8. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/LICENSE +0 -0
  9. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/MANIFEST.in +0 -0
  10. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/README.md +0 -0
  11. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/__init__.py +0 -0
  12. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/__main__.py +0 -0
  13. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/agent.py +0 -0
  14. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/agent_runtime.py +0 -0
  15. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/ai.py +0 -0
  16. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/browser.py +0 -0
  17. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_commands.py +0 -0
  18. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/__init__.py +0 -0
  19. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
  20. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
  21. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
  22. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
  23. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/content/__init__.py +0 -0
  24. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
  25. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/content/system.py +0 -0
  26. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/content/vision.py +0 -0
  27. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/context/__init__.py +0 -0
  28. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
  29. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
  30. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
  31. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
  32. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/files/__init__.py +0 -0
  33. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
  34. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/files/tools.py +0 -0
  35. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
  36. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
  37. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
  38. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
  39. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
  40. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
  41. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
  42. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
  43. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
  44. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/python/__init__.py +0 -0
  45. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
  46. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
  47. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
  48. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
  49. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
  50. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
  51. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/realtime/session.py +0 -0
  52. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
  53. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
  54. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
  55. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
  56. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
  57. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
  58. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
  59. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/cli/__init__.py +0 -0
  60. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/cli/headless.py +0 -0
  61. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/cli/main.py +0 -0
  62. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/cli/output.py +0 -0
  63. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/cli/root.py +0 -0
  64. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/cli/runner.py +0 -0
  65. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/client.py +0 -0
  66. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/command.py +0 -0
  67. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/config.py +0 -0
  68. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/desktop.py +0 -0
  69. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/event.py +0 -0
  70. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/get_text/__init__.py +0 -0
  71. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/get_text/default_gitignore +0 -0
  72. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/get_text/get_text.py +0 -0
  73. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/get_text/simpler_get_text.py +0 -0
  74. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/hooks.py +0 -0
  75. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/image.py +0 -0
  76. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/latex.py +0 -0
  77. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/mainloop.py +0 -0
  78. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/message.py +0 -0
  79. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/plugin.py +0 -0
  80. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/prompts/system_prompt.txt +0 -0
  81. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/provider.py +0 -0
  82. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/runtime.py +0 -0
  83. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/scheduler.py +0 -0
  84. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/scripts/install-system-dependencies.sh +0 -0
  85. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/server/__init__.py +0 -0
  86. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/server/app.py +0 -0
  87. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/server/core.py +0 -0
  88. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/service.py +0 -0
  89. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/sessions.py +0 -0
  90. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/status.py +0 -0
  91. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/stream.py +0 -0
  92. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/stream_utils.py +0 -0
  93. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/tool.py +0 -0
  94. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/tray.py +0 -0
  95. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/tui/__init__.py +0 -0
  96. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/tui/app.py +0 -0
  97. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/tui/chat.py +0 -0
  98. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/tui/lifecycle.py +0 -0
  99. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/tui/log.py +0 -0
  100. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/tui/state.py +0 -0
  101. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/tui/status_bar.py +0 -0
  102. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/tui/style.py +0 -0
  103. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/tui/transcript.py +0 -0
  104. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/utils.py +0 -0
  105. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent/worker.py +0 -0
  106. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
  107. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
  108. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent_framework.egg-info/entry_points.txt +0 -0
  109. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent_framework.egg-info/requires.txt +0 -0
  110. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/codex_agent_framework.egg-info/top_level.txt +0 -0
  111. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/dependencies.txt +0 -0
  112. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/setup.cfg +0 -0
  113. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent.py +0 -0
  114. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_audio_hooks.py +0 -0
  115. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_commands.py +0 -0
  116. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_context.py +0 -0
  117. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_desktop.py +0 -0
  118. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_environment.py +0 -0
  119. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_image_generation.py +0 -0
  120. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_observe.py +0 -0
  121. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_plugins.py +0 -0
  122. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_providers_config.py +0 -0
  123. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_realtime.py +0 -0
  124. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_response.py +0 -0
  125. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_runtime.py +0 -0
  126. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_sessions.py +0 -0
  127. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_subagents.py +0 -0
  128. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_tools.py +0 -0
  129. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_agent_turns.py +0 -0
  130. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_ai.py +0 -0
  131. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_browser.py +0 -0
  132. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_builtin_config.py +0 -0
  133. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_chat.py +0 -0
  134. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_cli.py +0 -0
  135. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_cli_headless.py +0 -0
  136. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_cli_root.py +0 -0
  137. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_client.py +0 -0
  138. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_events.py +0 -0
  139. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_get_text_browser.py +0 -0
  140. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_hooks.py +0 -0
  141. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_image_message.py +0 -0
  142. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_local_desktop.py +0 -0
  143. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_memory.py +0 -0
  144. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_messages.py +0 -0
  145. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_planner.py +0 -0
  146. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_scheduler.py +0 -0
  147. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_server.py +0 -0
  148. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_service.py +0 -0
  149. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_tui.py +0 -0
  150. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/tests/test_utils.py +0 -0
  151. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.37}/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.37] - 2026-05-16
8
+ ### Changed
9
+ - Clarify context status token calculations by naming percent values and local token totals.
10
+ - Reflow long context-provider hook and token-count calls for better readability without behavior changes.
11
+
12
+ ### Tests
13
+ - Validate with targeted context, response, session, and core Agent coverage plus the 553-test offline CI suite.
14
+
7
15
  ## [0.1.36] - 2026-05-16
8
16
  ### Changed
9
17
  - Clean up residual `Agent` facade style around response dispatch and transcription helpers.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.36
3
+ Version: 0.1.37
4
4
  Summary: A lightweight event-driven Codex agent runtime.
5
5
  Author: Baptiste
6
6
  License-Expression: MIT
@@ -58,7 +58,12 @@ class ContextManager:
58
58
  provider_output = provider()
59
59
  finally:
60
60
  reset_current_agent(agent_context)
61
- hook = self.agent.run_hook("provider.call.after", provider_name=provider_name, provider=provider, output=provider_output)
61
+ hook = self.agent.run_hook(
62
+ "provider.call.after",
63
+ provider_name=provider_name,
64
+ provider=provider,
65
+ output=provider_output,
66
+ )
62
67
  provider_output = hook.payload.output
63
68
  if provider_output is None:
64
69
  continue
@@ -86,7 +91,10 @@ class ContextManager:
86
91
  others = [msg for msg in session_messages if not isinstance(msg, ImageMessage)]
87
92
  truncated_others = self.truncate_context_messages(others, max_input_tokens=max_input_tokens)
88
93
 
89
- current_count = self.response_input_token_count(system + images + providers_msgs, response_tools=response_tools)
94
+ current_count = self.response_input_token_count(
95
+ system + images + providers_msgs,
96
+ response_tools=response_tools,
97
+ )
90
98
  history_start = len(truncated_others)
91
99
  for i, msg in enumerate(reversed(truncated_others)):
92
100
  msg_count = self.response_input_token_count([msg], response_tools=[])
@@ -147,13 +155,20 @@ class ContextManager:
147
155
  token_count_source = "openai_input_tokens"
148
156
  except Exception:
149
157
  pass
158
+ input_token_limit = self.agent.config.input_token_limit
159
+ used_token_percent = (current_count / input_token_limit * 100) if input_token_limit else 0
160
+ sent_session_message_percent = (
161
+ sent_session_messages / total_session_messages * 100
162
+ if total_session_messages
163
+ else 0
164
+ )
150
165
  self.agent.status_manager.cache_context_status(modict(
151
166
  used_tokens=current_count,
152
- input_token_limit=self.agent.config.input_token_limit,
153
- percent=(current_count / self.agent.config.input_token_limit * 100) if self.agent.config.input_token_limit else 0,
167
+ input_token_limit=input_token_limit,
168
+ percent=used_token_percent,
154
169
  sent_session_messages=sent_session_messages,
155
170
  total_session_messages=total_session_messages,
156
- sent_session_message_percent=(sent_session_messages / total_session_messages * 100) if total_session_messages else 0,
171
+ sent_session_message_percent=sent_session_message_percent,
157
172
  persistent_session_messages=persistent_session_messages,
158
173
  temporary_session_messages=temporary_session_messages,
159
174
  active_wrapper_messages=len(active_wrappers),
@@ -200,7 +215,8 @@ class ContextManager:
200
215
  return msg.get("turns_left", -1) != 0
201
216
 
202
217
  def response_tools_token_count(self, response_tools=None):
203
- response_tools = self.agent.tools_manager.get_response_tools() if response_tools is None else response_tools
218
+ if response_tools is None:
219
+ response_tools = self.agent.tools_manager.get_response_tools()
204
220
  if not response_tools:
205
221
  return 0
206
222
  return token_count_payload({"tools": response_tools}, model=self.agent.config.model)
@@ -275,7 +291,11 @@ class ContextManager:
275
291
  for msg in messages
276
292
  if isinstance(msg, ImageMessage)
277
293
  )
278
- return token_count_payload(self.local_token_count_payload(payload), model=self.agent.config.model) + media_tokens
294
+ local_tokens = token_count_payload(
295
+ self.local_token_count_payload(payload),
296
+ model=self.agent.config.model,
297
+ )
298
+ return local_tokens + media_tokens
279
299
 
280
300
  def should_auto_compact(self, messages):
281
301
  if not self.agent.config.get("auto_compact", True):
@@ -0,0 +1 @@
1
+ __version__ = "0.1.37"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.36
3
+ Version: 0.1.37
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.36"
7
+ version = "0.1.37"
8
8
  description = "A lightweight event-driven Codex agent runtime."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1 +0,0 @@
1
- __version__ = "0.1.36"