codex-agent-framework 0.1.36__tar.gz → 0.1.38__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.38}/CHANGELOG.md +16 -0
  2. {codex_agent_framework-0.1.36/codex_agent_framework.egg-info → codex_agent_framework-0.1.38}/PKG-INFO +3 -3
  3. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/README.md +2 -2
  4. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/context.py +27 -7
  5. codex_agent_framework-0.1.38/codex_agent/version.py +1 -0
  6. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38/codex_agent_framework.egg-info}/PKG-INFO +3 -3
  7. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/pyproject.toml +1 -1
  8. codex_agent_framework-0.1.36/codex_agent/version.py +0 -1
  9. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/LICENSE +0 -0
  10. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/MANIFEST.in +0 -0
  11. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/__init__.py +0 -0
  12. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/__main__.py +0 -0
  13. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/agent.py +0 -0
  14. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/agent_runtime.py +0 -0
  15. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/ai.py +0 -0
  16. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/browser.py +0 -0
  17. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_commands.py +0 -0
  18. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/__init__.py +0 -0
  19. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
  20. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
  21. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
  22. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
  23. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/content/__init__.py +0 -0
  24. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
  25. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/content/system.py +0 -0
  26. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/content/vision.py +0 -0
  27. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/context/__init__.py +0 -0
  28. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
  29. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
  30. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
  31. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
  32. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/files/__init__.py +0 -0
  33. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
  34. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/files/tools.py +0 -0
  35. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
  36. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/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.38}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
  38. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
  39. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
  40. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
  41. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
  42. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
  43. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
  44. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/python/__init__.py +0 -0
  45. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
  46. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
  47. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
  48. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
  49. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
  50. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
  51. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/realtime/session.py +0 -0
  52. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
  53. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
  54. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
  55. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
  56. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
  57. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
  58. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
  59. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/cli/__init__.py +0 -0
  60. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/cli/headless.py +0 -0
  61. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/cli/main.py +0 -0
  62. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/cli/output.py +0 -0
  63. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/cli/root.py +0 -0
  64. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/cli/runner.py +0 -0
  65. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/client.py +0 -0
  66. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/command.py +0 -0
  67. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/config.py +0 -0
  68. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/desktop.py +0 -0
  69. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/event.py +0 -0
  70. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/get_text/__init__.py +0 -0
  71. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/get_text/default_gitignore +0 -0
  72. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/get_text/get_text.py +0 -0
  73. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/get_text/simpler_get_text.py +0 -0
  74. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/hooks.py +0 -0
  75. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/image.py +0 -0
  76. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/latex.py +0 -0
  77. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/mainloop.py +0 -0
  78. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/message.py +0 -0
  79. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/plugin.py +0 -0
  80. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/prompts/system_prompt.txt +0 -0
  81. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/provider.py +0 -0
  82. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/runtime.py +0 -0
  83. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/scheduler.py +0 -0
  84. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/scripts/install-system-dependencies.sh +0 -0
  85. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/server/__init__.py +0 -0
  86. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/server/app.py +0 -0
  87. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/server/core.py +0 -0
  88. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/service.py +0 -0
  89. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/sessions.py +0 -0
  90. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/status.py +0 -0
  91. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/stream.py +0 -0
  92. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/stream_utils.py +0 -0
  93. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/tool.py +0 -0
  94. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/tray.py +0 -0
  95. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/tui/__init__.py +0 -0
  96. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/tui/app.py +0 -0
  97. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/tui/chat.py +0 -0
  98. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/tui/lifecycle.py +0 -0
  99. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/tui/log.py +0 -0
  100. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/tui/state.py +0 -0
  101. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/tui/status_bar.py +0 -0
  102. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/tui/style.py +0 -0
  103. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/tui/transcript.py +0 -0
  104. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/utils.py +0 -0
  105. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent/worker.py +0 -0
  106. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
  107. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
  108. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent_framework.egg-info/entry_points.txt +0 -0
  109. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent_framework.egg-info/requires.txt +0 -0
  110. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/codex_agent_framework.egg-info/top_level.txt +0 -0
  111. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/dependencies.txt +0 -0
  112. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/setup.cfg +0 -0
  113. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent.py +0 -0
  114. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_audio_hooks.py +0 -0
  115. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_commands.py +0 -0
  116. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_context.py +0 -0
  117. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_desktop.py +0 -0
  118. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_environment.py +0 -0
  119. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_image_generation.py +0 -0
  120. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_observe.py +0 -0
  121. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_plugins.py +0 -0
  122. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_providers_config.py +0 -0
  123. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_realtime.py +0 -0
  124. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_response.py +0 -0
  125. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_runtime.py +0 -0
  126. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_sessions.py +0 -0
  127. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_subagents.py +0 -0
  128. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_tools.py +0 -0
  129. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_agent_turns.py +0 -0
  130. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_ai.py +0 -0
  131. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_browser.py +0 -0
  132. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_builtin_config.py +0 -0
  133. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_chat.py +0 -0
  134. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_cli.py +0 -0
  135. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_cli_headless.py +0 -0
  136. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_cli_root.py +0 -0
  137. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_client.py +0 -0
  138. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_events.py +0 -0
  139. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_get_text_browser.py +0 -0
  140. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_hooks.py +0 -0
  141. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_image_message.py +0 -0
  142. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_local_desktop.py +0 -0
  143. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_memory.py +0 -0
  144. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_messages.py +0 -0
  145. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_planner.py +0 -0
  146. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_scheduler.py +0 -0
  147. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_server.py +0 -0
  148. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_service.py +0 -0
  149. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_tui.py +0 -0
  150. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_utils.py +0 -0
  151. {codex_agent_framework-0.1.36 → codex_agent_framework-0.1.38}/tests/test_worker.py +0 -0
@@ -4,6 +4,22 @@ 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.38] - 2026-05-16
8
+ ### Changed
9
+ - Clarify development checks around the explicit offline/headless CI subset, broader local pytest sweeps, and live/local-heavy test placement.
10
+ - Align README project-health wording with the current CI and release workflow.
11
+
12
+ ### Tests
13
+ - Validate the docs update with the 553-test offline CI suite.
14
+
15
+ ## [0.1.37] - 2026-05-16
16
+ ### Changed
17
+ - Clarify context status token calculations by naming percent values and local token totals.
18
+ - Reflow long context-provider hook and token-count calls for better readability without behavior changes.
19
+
20
+ ### Tests
21
+ - Validate with targeted context, response, session, and core Agent coverage plus the 553-test offline CI suite.
22
+
7
23
  ## [0.1.36] - 2026-05-16
8
24
  ### Changed
9
25
  - 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.38
4
4
  Summary: A lightweight event-driven Codex agent runtime.
5
5
  Author: Baptiste
6
6
  License-Expression: MIT
@@ -192,8 +192,8 @@ agent = Agent(
192
192
 
193
193
  ## Project health
194
194
 
195
- The repository includes a GitHub Actions CI workflow that runs an offline/headless test subset on Python 3.11 and 3.12, then builds the package and validates distributions with `twine check`.
196
- You can run the same offline subset locally with `scripts/run-ci-tests.sh`; the full release suite remains `python -m pytest`.
195
+ The repository includes a GitHub Actions CI workflow that runs an explicit offline/headless test subset on Python 3.11 and 3.12, then builds the package and validates distributions with `twine check`.
196
+ You can run the same subset locally with `scripts/run-ci-tests.sh`; use `python -m pytest` for broader local sweeps that may include machine- or backend-dependent tests.
197
197
  Dependabot is configured for weekly GitHub Actions and pip dependency updates.
198
198
 
199
199
  ## Documentation
@@ -143,8 +143,8 @@ agent = Agent(
143
143
 
144
144
  ## Project health
145
145
 
146
- The repository includes a GitHub Actions CI workflow that runs an offline/headless test subset on Python 3.11 and 3.12, then builds the package and validates distributions with `twine check`.
147
- You can run the same offline subset locally with `scripts/run-ci-tests.sh`; the full release suite remains `python -m pytest`.
146
+ The repository includes a GitHub Actions CI workflow that runs an explicit offline/headless test subset on Python 3.11 and 3.12, then builds the package and validates distributions with `twine check`.
147
+ You can run the same subset locally with `scripts/run-ci-tests.sh`; use `python -m pytest` for broader local sweeps that may include machine- or backend-dependent tests.
148
148
  Dependabot is configured for weekly GitHub Actions and pip dependency updates.
149
149
 
150
150
  ## Documentation
@@ -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.38"
@@ -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.38
4
4
  Summary: A lightweight event-driven Codex agent runtime.
5
5
  Author: Baptiste
6
6
  License-Expression: MIT
@@ -192,8 +192,8 @@ agent = Agent(
192
192
 
193
193
  ## Project health
194
194
 
195
- The repository includes a GitHub Actions CI workflow that runs an offline/headless test subset on Python 3.11 and 3.12, then builds the package and validates distributions with `twine check`.
196
- You can run the same offline subset locally with `scripts/run-ci-tests.sh`; the full release suite remains `python -m pytest`.
195
+ The repository includes a GitHub Actions CI workflow that runs an explicit offline/headless test subset on Python 3.11 and 3.12, then builds the package and validates distributions with `twine check`.
196
+ You can run the same subset locally with `scripts/run-ci-tests.sh`; use `python -m pytest` for broader local sweeps that may include machine- or backend-dependent tests.
197
197
  Dependabot is configured for weekly GitHub Actions and pip dependency updates.
198
198
 
199
199
  ## Documentation
@@ -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.38"
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"