codex-agent-framework 0.1.79__tar.gz → 0.1.80__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 (158) hide show
  1. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/CHANGELOG.md +7 -0
  2. {codex_agent_framework-0.1.79/codex_agent_framework.egg-info → codex_agent_framework-0.1.80}/PKG-INFO +1 -1
  3. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/client.py +12 -0
  4. codex_agent_framework-0.1.80/codex_agent/version.py +1 -0
  5. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80/codex_agent_framework.egg-info}/PKG-INFO +1 -1
  6. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/pyproject.toml +1 -1
  7. codex_agent_framework-0.1.79/codex_agent/version.py +0 -1
  8. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/LICENSE +0 -0
  9. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/MANIFEST.in +0 -0
  10. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/README.md +0 -0
  11. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/__init__.py +0 -0
  12. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/__main__.py +0 -0
  13. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/agent.py +0 -0
  14. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/agent_runtime.py +0 -0
  15. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/ai.py +0 -0
  16. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/browser.py +0 -0
  17. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_commands.py +0 -0
  18. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/__init__.py +0 -0
  19. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
  20. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
  21. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
  22. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
  23. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/content/__init__.py +0 -0
  24. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
  25. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/content/system.py +0 -0
  26. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/content/vision.py +0 -0
  27. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/context/__init__.py +0 -0
  28. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
  29. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
  30. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
  31. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
  32. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/files/__init__.py +0 -0
  33. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
  34. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/files/tools.py +0 -0
  35. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
  36. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
  37. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
  38. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
  39. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
  40. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
  41. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
  42. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
  43. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
  44. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/python/__init__.py +0 -0
  45. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
  46. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
  47. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
  48. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
  49. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
  50. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
  51. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/realtime/session.py +0 -0
  52. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
  53. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
  54. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
  55. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
  56. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
  57. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
  58. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
  59. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/builtin_plugins/web_search/__init__.py +0 -0
  60. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/cli/__init__.py +0 -0
  61. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/cli/headless.py +0 -0
  62. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/cli/main.py +0 -0
  63. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/cli/output.py +0 -0
  64. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/cli/root.py +0 -0
  65. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/cli/runner.py +0 -0
  66. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/command.py +0 -0
  67. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/config.py +0 -0
  68. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/context.py +0 -0
  69. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/desktop.py +0 -0
  70. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/event.py +0 -0
  71. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/get_text/__init__.py +0 -0
  72. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/get_text/default_gitignore +0 -0
  73. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/get_text/get_text.py +0 -0
  74. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/get_text/simpler_get_text.py +0 -0
  75. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/hooks.py +0 -0
  76. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/image.py +0 -0
  77. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/latex.py +0 -0
  78. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/mainloop.py +0 -0
  79. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/message.py +0 -0
  80. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/plugin.py +0 -0
  81. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/prompts/compaction_prompt.txt +0 -0
  82. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/prompts/system_prompt.txt +0 -0
  83. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/provider.py +0 -0
  84. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/runtime.py +0 -0
  85. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/scheduler.py +0 -0
  86. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/scripts/install-system-dependencies.sh +0 -0
  87. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/server/__init__.py +0 -0
  88. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/server/app.py +0 -0
  89. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/server/core.py +0 -0
  90. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/service.py +0 -0
  91. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/sessions.py +0 -0
  92. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/status.py +0 -0
  93. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/stream.py +0 -0
  94. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/stream_utils.py +0 -0
  95. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/token_counter.py +0 -0
  96. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tool.py +0 -0
  97. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tray.py +0 -0
  98. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/__init__.py +0 -0
  99. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/app.py +0 -0
  100. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/chat.py +0 -0
  101. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/lifecycle.py +0 -0
  102. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/log.py +0 -0
  103. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/perf.py +0 -0
  104. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/state.py +0 -0
  105. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/status_bar.py +0 -0
  106. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/stream_debug.py +0 -0
  107. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/style.py +0 -0
  108. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/transcript.py +0 -0
  109. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/tui/widgets.py +0 -0
  110. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/utils.py +0 -0
  111. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent/worker.py +0 -0
  112. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
  113. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
  114. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent_framework.egg-info/entry_points.txt +0 -0
  115. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent_framework.egg-info/requires.txt +0 -0
  116. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/codex_agent_framework.egg-info/top_level.txt +0 -0
  117. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/dependencies.txt +0 -0
  118. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/setup.cfg +0 -0
  119. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent.py +0 -0
  120. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_audio_hooks.py +0 -0
  121. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_commands.py +0 -0
  122. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_context.py +0 -0
  123. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_desktop.py +0 -0
  124. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_environment.py +0 -0
  125. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_image_generation.py +0 -0
  126. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_observe.py +0 -0
  127. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_plugins.py +0 -0
  128. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_providers_config.py +0 -0
  129. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_realtime.py +0 -0
  130. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_response.py +0 -0
  131. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_runtime.py +0 -0
  132. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_sessions.py +0 -0
  133. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_subagents.py +0 -0
  134. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_tools.py +0 -0
  135. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_agent_turns.py +0 -0
  136. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_ai.py +0 -0
  137. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_browser.py +0 -0
  138. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_builtin_config.py +0 -0
  139. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_chat.py +0 -0
  140. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_cli.py +0 -0
  141. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_cli_headless.py +0 -0
  142. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_cli_root.py +0 -0
  143. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_client.py +0 -0
  144. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_events.py +0 -0
  145. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_get_text_browser.py +0 -0
  146. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_hooks.py +0 -0
  147. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_image_message.py +0 -0
  148. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_local_desktop.py +0 -0
  149. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_memory.py +0 -0
  150. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_messages.py +0 -0
  151. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_planner.py +0 -0
  152. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_scheduler.py +0 -0
  153. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_server.py +0 -0
  154. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_service.py +0 -0
  155. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_token_counter.py +0 -0
  156. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_tui.py +0 -0
  157. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_utils.py +0 -0
  158. {codex_agent_framework-0.1.79 → codex_agent_framework-0.1.80}/tests/test_worker.py +0 -0
@@ -4,6 +4,13 @@ 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.80] - 2026-05-18
8
+ ### Changed
9
+ - Document `AgentClient` event-stream, SSE parsing, sequence resume, URL, and HTTP request helper contracts with concise docstrings.
10
+
11
+ ### Tests
12
+ - Validate the client documentation pass with targeted client tests plus the full offline CI suite (618 passed).
13
+
7
14
  ## [0.1.60] - 2026-05-18
8
15
  ### Fixed
9
16
  - 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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.79
3
+ Version: 0.1.80
4
4
  Summary: A lightweight event-driven Codex agent runtime.
5
5
  Author: Baptiste
6
6
  License-Expression: MIT
@@ -276,6 +276,7 @@ class AgentClient:
276
276
  self._event_stop.wait(0.1)
277
277
 
278
278
  def event_error_payload(self, exc):
279
+ """Build a local client error event from an event-stream exception."""
279
280
  payload = modict(type="client_event_error", error=str(exc), source="event_stream")
280
281
  if isinstance(exc, requests.HTTPError) and exc.response is not None:
281
282
  payload.status_code = exc.response.status_code
@@ -289,11 +290,13 @@ class AgentClient:
289
290
  return payload
290
291
 
291
292
  def is_event_idle_timeout(self, exc):
293
+ """Return whether an event-stream exception is an idle read timeout."""
292
294
  if isinstance(exc, (requests.exceptions.ReadTimeout, requests.exceptions.Timeout)):
293
295
  return True
294
296
  return "read timed out" in str(exc).lower()
295
297
 
296
298
  def iter_sse(self, lines):
299
+ """Yield parsed SSE payloads from decoded or byte line chunks."""
297
300
  event = None
298
301
  data_lines = []
299
302
  event_id = None
@@ -339,6 +342,7 @@ class AgentClient:
339
342
  yield payload
340
343
 
341
344
  def remember_event_sequence(self, event):
345
+ """Track the highest numeric event sequence seen for replay resume."""
342
346
  sequence = event.get("sequence") if isinstance(event, dict) else None
343
347
  if sequence is None:
344
348
  return
@@ -348,17 +352,22 @@ class AgentClient:
348
352
  return
349
353
  if self._last_event_sequence is None or sequence > self._last_event_sequence:
350
354
  self._last_event_sequence = sequence
355
+
351
356
  def events_url(self):
357
+ """Build the SSE endpoint URL with replay and compaction parameters."""
352
358
  params = {"client_pid": int(self.client_pid)}
353
359
  if self.compact_events:
354
360
  params["compact"] = 1
355
361
  if self._last_event_sequence is not None:
356
362
  params["after_sequence"] = int(self._last_event_sequence)
357
363
  return self.url(f"/events?{urlencode(params)}")
364
+
358
365
  def url(self, path):
366
+ """Return an absolute server URL for an API path."""
359
367
  return self.base_url + path
360
368
 
361
369
  def request(self, method, path, **kwargs):
370
+ """Send an HTTP request and decode its JSON response as a modict."""
362
371
  kwargs.setdefault("timeout", self.timeout)
363
372
  response = requests.request(method, self.url(path), **kwargs)
364
373
  response.raise_for_status()
@@ -367,12 +376,15 @@ class AgentClient:
367
376
  return modict(response.json())
368
377
 
369
378
  def get(self, path):
379
+ """Send a GET request to a server API path."""
370
380
  return self.request("GET", path)
371
381
 
372
382
  def post(self, path, payload=None):
383
+ """Send a JSON POST request to a server API path."""
373
384
  return self.request("POST", path, json=payload or {})
374
385
 
375
386
  def delete(self, path):
387
+ """Send a DELETE request to a server API path."""
376
388
  return self.request("DELETE", path)
377
389
 
378
390
  def health(self):
@@ -0,0 +1 @@
1
+ __version__ = "0.1.80"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.79
3
+ Version: 0.1.80
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.79"
7
+ version = "0.1.80"
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.79"