codex-agent-framework 0.1.78__tar.gz → 0.1.79__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.78/codex_agent_framework.egg-info → codex_agent_framework-0.1.79}/PKG-INFO +1 -1
  2. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/content/vision.py +9 -0
  3. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/cli/root.py +1 -0
  4. codex_agent_framework-0.1.79/codex_agent/version.py +1 -0
  5. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79/codex_agent_framework.egg-info}/PKG-INFO +1 -1
  6. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/pyproject.toml +1 -1
  7. codex_agent_framework-0.1.78/codex_agent/version.py +0 -1
  8. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/CHANGELOG.md +0 -0
  9. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/LICENSE +0 -0
  10. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/MANIFEST.in +0 -0
  11. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/README.md +0 -0
  12. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/__init__.py +0 -0
  13. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/__main__.py +0 -0
  14. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/agent.py +0 -0
  15. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/agent_runtime.py +0 -0
  16. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/ai.py +0 -0
  17. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/browser.py +0 -0
  18. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_commands.py +0 -0
  19. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/__init__.py +0 -0
  20. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
  21. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
  22. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
  23. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
  24. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/content/__init__.py +0 -0
  25. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
  26. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/content/system.py +0 -0
  27. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/context/__init__.py +0 -0
  28. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
  29. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
  30. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
  31. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
  32. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/files/__init__.py +0 -0
  33. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
  34. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/files/tools.py +0 -0
  35. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
  36. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
  37. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
  38. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
  39. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
  40. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
  41. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
  42. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
  43. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
  44. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/python/__init__.py +0 -0
  45. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
  46. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
  47. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
  48. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
  49. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
  50. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
  51. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/realtime/session.py +0 -0
  52. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
  53. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
  54. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
  55. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
  56. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
  57. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
  58. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
  59. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/builtin_plugins/web_search/__init__.py +0 -0
  60. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/cli/__init__.py +0 -0
  61. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/cli/headless.py +0 -0
  62. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/cli/main.py +0 -0
  63. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/cli/output.py +0 -0
  64. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/cli/runner.py +0 -0
  65. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/client.py +0 -0
  66. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/command.py +0 -0
  67. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/config.py +0 -0
  68. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/context.py +0 -0
  69. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/desktop.py +0 -0
  70. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/event.py +0 -0
  71. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/get_text/__init__.py +0 -0
  72. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/get_text/default_gitignore +0 -0
  73. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/get_text/get_text.py +0 -0
  74. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/get_text/simpler_get_text.py +0 -0
  75. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/hooks.py +0 -0
  76. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/image.py +0 -0
  77. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/latex.py +0 -0
  78. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/mainloop.py +0 -0
  79. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/message.py +0 -0
  80. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/plugin.py +0 -0
  81. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/prompts/compaction_prompt.txt +0 -0
  82. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/prompts/system_prompt.txt +0 -0
  83. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/provider.py +0 -0
  84. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/runtime.py +0 -0
  85. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/scheduler.py +0 -0
  86. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/scripts/install-system-dependencies.sh +0 -0
  87. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/server/__init__.py +0 -0
  88. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/server/app.py +0 -0
  89. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/server/core.py +0 -0
  90. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/service.py +0 -0
  91. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/sessions.py +0 -0
  92. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/status.py +0 -0
  93. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/stream.py +0 -0
  94. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/stream_utils.py +0 -0
  95. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/token_counter.py +0 -0
  96. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tool.py +0 -0
  97. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tray.py +0 -0
  98. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/__init__.py +0 -0
  99. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/app.py +0 -0
  100. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/chat.py +0 -0
  101. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/lifecycle.py +0 -0
  102. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/log.py +0 -0
  103. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/perf.py +0 -0
  104. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/state.py +0 -0
  105. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/status_bar.py +0 -0
  106. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/stream_debug.py +0 -0
  107. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/style.py +0 -0
  108. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/transcript.py +0 -0
  109. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/tui/widgets.py +0 -0
  110. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/utils.py +0 -0
  111. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent/worker.py +0 -0
  112. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
  113. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
  114. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent_framework.egg-info/entry_points.txt +0 -0
  115. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent_framework.egg-info/requires.txt +0 -0
  116. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/codex_agent_framework.egg-info/top_level.txt +0 -0
  117. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/dependencies.txt +0 -0
  118. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/setup.cfg +0 -0
  119. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent.py +0 -0
  120. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_audio_hooks.py +0 -0
  121. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_commands.py +0 -0
  122. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_context.py +0 -0
  123. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_desktop.py +0 -0
  124. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_environment.py +0 -0
  125. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_image_generation.py +0 -0
  126. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_observe.py +0 -0
  127. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_plugins.py +0 -0
  128. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_providers_config.py +0 -0
  129. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_realtime.py +0 -0
  130. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_response.py +0 -0
  131. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_runtime.py +0 -0
  132. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_sessions.py +0 -0
  133. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_subagents.py +0 -0
  134. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_tools.py +0 -0
  135. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_agent_turns.py +0 -0
  136. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_ai.py +0 -0
  137. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_browser.py +0 -0
  138. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_builtin_config.py +0 -0
  139. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_chat.py +0 -0
  140. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_cli.py +0 -0
  141. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_cli_headless.py +0 -0
  142. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_cli_root.py +0 -0
  143. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_client.py +0 -0
  144. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_events.py +0 -0
  145. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_get_text_browser.py +0 -0
  146. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_hooks.py +0 -0
  147. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_image_message.py +0 -0
  148. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_local_desktop.py +0 -0
  149. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_memory.py +0 -0
  150. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_messages.py +0 -0
  151. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_planner.py +0 -0
  152. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_scheduler.py +0 -0
  153. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_server.py +0 -0
  154. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_service.py +0 -0
  155. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_token_counter.py +0 -0
  156. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_tui.py +0 -0
  157. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_utils.py +0 -0
  158. {codex_agent_framework-0.1.78 → codex_agent_framework-0.1.79}/tests/test_worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.78
3
+ Version: 0.1.79
4
4
  Summary: A lightweight event-driven Codex agent runtime.
5
5
  Author: Baptiste
6
6
  License-Expression: MIT
@@ -96,6 +96,7 @@ def observe(sources):
96
96
 
97
97
 
98
98
  def normalize_observe_source(source):
99
+ """Normalize legacy string sources and mapping sources to observe objects."""
99
100
  if isinstance(source, str):
100
101
  target = "url" if source.startswith(("http://", "https://")) else "path"
101
102
  key = "url" if target == "url" else "path"
@@ -106,6 +107,7 @@ def normalize_observe_source(source):
106
107
 
107
108
 
108
109
  def observe_source(source):
110
+ """Dispatch one normalized observe source to the matching capture helper."""
109
111
  item = normalize_observe_source(source)
110
112
  if not item:
111
113
  return "failed: source must be an object."
@@ -123,6 +125,7 @@ def observe_source(source):
123
125
 
124
126
 
125
127
  def resolve_agent_path(path):
128
+ """Resolve paths relative to the active agent when one is available."""
126
129
  try:
127
130
  return get_agent().resolve_path(path)
128
131
  except RuntimeError:
@@ -130,6 +133,7 @@ def resolve_agent_path(path):
130
133
 
131
134
 
132
135
  def observe_path(item):
136
+ """Validate a local image path observe source."""
133
137
  path = item.get("path") or item.get("source")
134
138
  if not isinstance(path, str) or not path:
135
139
  return "failed: path target requires a non-empty 'path'."
@@ -138,6 +142,7 @@ def observe_path(item):
138
142
 
139
143
 
140
144
  def observe_url(item):
145
+ """Observe a URL as an image, falling back to a page screenshot."""
141
146
  url = item.get("url") or item.get("source")
142
147
  if not isinstance(url, str) or not url:
143
148
  return "failed: url target requires a non-empty 'url'."
@@ -161,6 +166,7 @@ def observe_url(item):
161
166
 
162
167
 
163
168
  def observe_screen(item):
169
+ """Capture and validate a screenshot of the local screen."""
164
170
  output_path = item.get("output_path")
165
171
  if output_path:
166
172
  output_path = resolve_agent_path(output_path)
@@ -172,6 +178,7 @@ def observe_screen(item):
172
178
 
173
179
 
174
180
  def observe_window(item):
181
+ """Capture and validate a screenshot of a local desktop window."""
175
182
  window_id = item.get("window_id") or item.get("id")
176
183
  output_path = item.get("output_path")
177
184
  if output_path:
@@ -184,6 +191,7 @@ def observe_window(item):
184
191
 
185
192
 
186
193
  def validated_image(path, image_name=None, original_source=None, url_fallback=False):
194
+ """Return an ImageMessage or a readable failure string for invalid input."""
187
195
  image = ImageMessage(content=path, image_name=image_name, turns_left=3)
188
196
  if not image.is_valid():
189
197
  label = "URL fallback screenshot" if url_fallback else "image source"
@@ -192,6 +200,7 @@ def validated_image(path, image_name=None, original_source=None, url_fallback=Fa
192
200
 
193
201
 
194
202
  def screenshot_page_url(url, item=None):
203
+ """Capture a webpage screenshot using caller options or a runtime path."""
195
204
  item = item or {}
196
205
  path = item.get("output_path")
197
206
  if path:
@@ -22,6 +22,7 @@ ROOT_COMMANDS = {
22
22
 
23
23
 
24
24
  def build_root_parser():
25
+ """Build the public root CLI parser and command dispatcher options."""
25
26
  import argparse
26
27
 
27
28
  parser = argparse.ArgumentParser(
@@ -0,0 +1 @@
1
+ __version__ = "0.1.79"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.78
3
+ Version: 0.1.79
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.78"
7
+ version = "0.1.79"
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.78"