codex-agent-framework 0.1.43__tar.gz → 0.1.45__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.43 → codex_agent_framework-0.1.45}/CHANGELOG.md +16 -0
  2. {codex_agent_framework-0.1.43/codex_agent_framework.egg-info → codex_agent_framework-0.1.45}/PKG-INFO +1 -1
  3. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/config.py +1 -0
  4. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/context.py +2 -1
  5. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/status.py +2 -1
  6. codex_agent_framework-0.1.45/codex_agent/version.py +1 -0
  7. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45/codex_agent_framework.egg-info}/PKG-INFO +1 -1
  8. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/pyproject.toml +1 -1
  9. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_context.py +21 -0
  10. codex_agent_framework-0.1.43/codex_agent/version.py +0 -1
  11. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/LICENSE +0 -0
  12. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/MANIFEST.in +0 -0
  13. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/README.md +0 -0
  14. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/__init__.py +0 -0
  15. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/__main__.py +0 -0
  16. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/agent.py +0 -0
  17. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/agent_runtime.py +0 -0
  18. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/ai.py +0 -0
  19. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/browser.py +0 -0
  20. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_commands.py +0 -0
  21. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/__init__.py +0 -0
  22. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
  23. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
  24. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
  25. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
  26. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/content/__init__.py +0 -0
  27. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
  28. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/content/system.py +0 -0
  29. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/content/vision.py +0 -0
  30. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/context/__init__.py +0 -0
  31. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
  32. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
  33. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
  34. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
  35. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/files/__init__.py +0 -0
  36. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
  37. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/files/tools.py +0 -0
  38. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
  39. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
  40. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
  41. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
  42. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
  43. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
  44. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
  45. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
  46. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
  47. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/python/__init__.py +0 -0
  48. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
  49. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
  50. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
  51. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
  52. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
  53. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
  54. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/realtime/session.py +0 -0
  55. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
  56. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
  57. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
  58. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
  59. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
  60. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
  61. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
  62. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/cli/__init__.py +0 -0
  63. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/cli/headless.py +0 -0
  64. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/cli/main.py +0 -0
  65. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/cli/output.py +0 -0
  66. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/cli/root.py +0 -0
  67. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/cli/runner.py +0 -0
  68. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/client.py +0 -0
  69. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/command.py +0 -0
  70. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/desktop.py +0 -0
  71. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/event.py +0 -0
  72. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/get_text/__init__.py +0 -0
  73. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/get_text/default_gitignore +0 -0
  74. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/get_text/get_text.py +0 -0
  75. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/get_text/simpler_get_text.py +0 -0
  76. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/hooks.py +0 -0
  77. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/image.py +0 -0
  78. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/latex.py +0 -0
  79. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/mainloop.py +0 -0
  80. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/message.py +0 -0
  81. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/plugin.py +0 -0
  82. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/prompts/system_prompt.txt +0 -0
  83. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/provider.py +0 -0
  84. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/runtime.py +0 -0
  85. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/scheduler.py +0 -0
  86. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/scripts/install-system-dependencies.sh +0 -0
  87. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/server/__init__.py +0 -0
  88. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/server/app.py +0 -0
  89. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/server/core.py +0 -0
  90. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/service.py +0 -0
  91. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/sessions.py +0 -0
  92. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/stream.py +0 -0
  93. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/stream_utils.py +0 -0
  94. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/tool.py +0 -0
  95. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/tray.py +0 -0
  96. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/tui/__init__.py +0 -0
  97. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/tui/app.py +0 -0
  98. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/tui/chat.py +0 -0
  99. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/tui/lifecycle.py +0 -0
  100. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/tui/log.py +0 -0
  101. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/tui/state.py +0 -0
  102. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/tui/status_bar.py +0 -0
  103. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/tui/style.py +0 -0
  104. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/tui/transcript.py +0 -0
  105. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/utils.py +0 -0
  106. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent/worker.py +0 -0
  107. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
  108. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
  109. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent_framework.egg-info/entry_points.txt +0 -0
  110. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent_framework.egg-info/requires.txt +0 -0
  111. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/codex_agent_framework.egg-info/top_level.txt +0 -0
  112. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/dependencies.txt +0 -0
  113. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/setup.cfg +0 -0
  114. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent.py +0 -0
  115. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_audio_hooks.py +0 -0
  116. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_commands.py +0 -0
  117. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_desktop.py +0 -0
  118. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_environment.py +0 -0
  119. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_image_generation.py +0 -0
  120. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_observe.py +0 -0
  121. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_plugins.py +0 -0
  122. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_providers_config.py +0 -0
  123. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_realtime.py +0 -0
  124. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_response.py +0 -0
  125. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_runtime.py +0 -0
  126. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_sessions.py +0 -0
  127. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_subagents.py +0 -0
  128. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_tools.py +0 -0
  129. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_agent_turns.py +0 -0
  130. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_ai.py +0 -0
  131. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_browser.py +0 -0
  132. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_builtin_config.py +0 -0
  133. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_chat.py +0 -0
  134. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_cli.py +0 -0
  135. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_cli_headless.py +0 -0
  136. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_cli_root.py +0 -0
  137. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_client.py +0 -0
  138. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_events.py +0 -0
  139. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_get_text_browser.py +0 -0
  140. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_hooks.py +0 -0
  141. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_image_message.py +0 -0
  142. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_local_desktop.py +0 -0
  143. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_memory.py +0 -0
  144. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_messages.py +0 -0
  145. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_planner.py +0 -0
  146. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_scheduler.py +0 -0
  147. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_server.py +0 -0
  148. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_service.py +0 -0
  149. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_tui.py +0 -0
  150. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/tests/test_utils.py +0 -0
  151. {codex_agent_framework-0.1.43 → codex_agent_framework-0.1.45}/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.45] - 2026-05-16
8
+ ### Changed
9
+ - Add `prune_orphaned_tool_outputs_on_context_build` to keep orphaned tool-output pruning enabled by default while making the persistent side effect configurable.
10
+ - Apply the same pruning guard to context-window status estimates and document the current 554-test offline CI count.
11
+
12
+ ### Tests
13
+ - Add coverage for disabling context-build orphan pruning and validate with targeted context/session/response/config coverage plus the 554-test offline CI suite.
14
+
15
+ ## [0.1.44] - 2026-05-16
16
+ ### Changed
17
+ - Clarify local server exposure risks for non-loopback binds, including the current lack of built-in authentication, authorization, and browser-facing CORS hardening.
18
+ - Point external server binds toward explicit network protections such as SSH tunnels, firewall rules, or authenticated reverse proxies.
19
+
20
+ ### Tests
21
+ - Validate the documentation update with the 553-test offline CI suite.
22
+
7
23
  ## [0.1.43] - 2026-05-16
8
24
  ### Changed
9
25
  - Clarify the runtime plugin trust model: plugins are trusted local code, loading imports and executes modules, and unloading cannot undo arbitrary side effects.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.43
3
+ Version: 0.1.45
4
4
  Summary: A lightweight event-driven Codex agent runtime.
5
5
  Author: Baptiste
6
6
  License-Expression: MIT
@@ -33,6 +33,7 @@ class AgentConfig(modict):
33
33
  tool_call_timeout = 0
34
34
  vision_enabled = True
35
35
  max_images = 10
36
+ prune_orphaned_tool_outputs_on_context_build = True
36
37
  web_search_enabled = False
37
38
  image_generation_enabled = False
38
39
  image_generation_output_format = "png"
@@ -82,7 +82,8 @@ class ContextManager:
82
82
  providers_msgs = self.get_providers_messages()
83
83
  max_images = self.agent.config.get("max_images", 10)
84
84
 
85
- self.prune_orphaned_session_tool_outputs()
85
+ if self.agent.config.prune_orphaned_tool_outputs_on_context_build:
86
+ self.prune_orphaned_session_tool_outputs()
86
87
  session_messages = sort(
87
88
  msg for msg in self.agent.session.context_messages()
88
89
  if self.is_message_visible_in_context(msg)
@@ -70,7 +70,8 @@ class StatusManager:
70
70
  response_tools = self.agent.tools_manager.get_response_tools()
71
71
  max_images = self.agent.config.get("max_images", 10)
72
72
  context_manager = self.agent.context_manager
73
- context_manager.prune_orphaned_session_tool_outputs()
73
+ if self.agent.config.prune_orphaned_tool_outputs_on_context_build:
74
+ context_manager.prune_orphaned_session_tool_outputs()
74
75
  all_session_messages = list(self.agent.session.messages) if self.agent.session else []
75
76
  session_messages = sort(
76
77
  msg for msg in self.agent.session.context_messages()
@@ -0,0 +1 @@
1
+ __version__ = "0.1.45"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.43
3
+ Version: 0.1.45
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.43"
7
+ version = "0.1.45"
8
8
  description = "A lightweight event-driven Codex agent runtime."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -475,6 +475,27 @@ def test_agent_get_context_filters_expired_messages():
475
475
  assert "expired hidden context" not in context_text
476
476
 
477
477
 
478
+ def test_agent_get_context_can_skip_orphaned_tool_output_pruning():
479
+ agent = Agent(session="new", prune_orphaned_tool_outputs_on_context_build=False)
480
+ output = ToolResultMessage(
481
+ name="observe",
482
+ call_id="call_missing",
483
+ content="success: full output in ImageMessage id=img_1.",
484
+ )
485
+ user = DeveloperMessage(content="resumed")
486
+ agent.session.messages = [output, user]
487
+ agent.save_session()
488
+
489
+ context = agent.context_manager.get_context()
490
+
491
+ assert output in agent.session.messages
492
+ assert user in agent.session.messages
493
+ assert user.id in [message.id for message in context]
494
+ with open(agent.session.session_file, encoding="utf-8") as f:
495
+ persisted = json.load(f)
496
+ assert [message["id"] for message in persisted["messages"]] == [output.id, user.id]
497
+
498
+
478
499
  def test_agent_get_context_uses_openai_input_token_count_when_available(monkeypatch):
479
500
  agent = Agent(session="new")
480
501
  agent.session.messages = [DeveloperMessage(content="visible context")]
@@ -1 +0,0 @@
1
- __version__ = "0.1.43"