codex-agent-framework 0.1.80__tar.gz → 0.1.82__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.80 → codex_agent_framework-0.1.82}/CHANGELOG.md +14 -0
  2. {codex_agent_framework-0.1.80/codex_agent_framework.egg-info → codex_agent_framework-0.1.82}/PKG-INFO +1 -1
  3. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/agent_runtime.py +4 -0
  4. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_commands.py +14 -2
  5. codex_agent_framework-0.1.82/codex_agent/version.py +1 -0
  6. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82/codex_agent_framework.egg-info}/PKG-INFO +1 -1
  7. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/pyproject.toml +1 -1
  8. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_commands.py +4 -2
  9. codex_agent_framework-0.1.80/codex_agent/version.py +0 -1
  10. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/LICENSE +0 -0
  11. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/MANIFEST.in +0 -0
  12. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/README.md +0 -0
  13. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/__init__.py +0 -0
  14. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/__main__.py +0 -0
  15. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/agent.py +0 -0
  16. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/ai.py +0 -0
  17. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/browser.py +0 -0
  18. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/__init__.py +0 -0
  19. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
  20. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
  21. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
  22. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
  23. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/content/__init__.py +0 -0
  24. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
  25. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/content/system.py +0 -0
  26. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/content/vision.py +0 -0
  27. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/context/__init__.py +0 -0
  28. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
  29. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
  30. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
  31. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
  32. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/files/__init__.py +0 -0
  33. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
  34. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/files/tools.py +0 -0
  35. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
  36. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
  37. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
  38. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
  39. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
  40. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
  41. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
  42. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
  43. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
  44. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/python/__init__.py +0 -0
  45. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
  46. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
  47. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
  48. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
  49. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
  50. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
  51. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/realtime/session.py +0 -0
  52. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
  53. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
  54. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
  55. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
  56. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
  57. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
  58. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
  59. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/builtin_plugins/web_search/__init__.py +0 -0
  60. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/cli/__init__.py +0 -0
  61. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/cli/headless.py +0 -0
  62. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/cli/main.py +0 -0
  63. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/cli/output.py +0 -0
  64. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/cli/root.py +0 -0
  65. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/cli/runner.py +0 -0
  66. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/client.py +0 -0
  67. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/command.py +0 -0
  68. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/config.py +0 -0
  69. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/context.py +0 -0
  70. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/desktop.py +0 -0
  71. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/event.py +0 -0
  72. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/get_text/__init__.py +0 -0
  73. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/get_text/default_gitignore +0 -0
  74. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/get_text/get_text.py +0 -0
  75. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/get_text/simpler_get_text.py +0 -0
  76. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/hooks.py +0 -0
  77. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/image.py +0 -0
  78. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/latex.py +0 -0
  79. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/mainloop.py +0 -0
  80. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/message.py +0 -0
  81. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/plugin.py +0 -0
  82. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/prompts/compaction_prompt.txt +0 -0
  83. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/prompts/system_prompt.txt +0 -0
  84. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/provider.py +0 -0
  85. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/runtime.py +0 -0
  86. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/scheduler.py +0 -0
  87. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/scripts/install-system-dependencies.sh +0 -0
  88. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/server/__init__.py +0 -0
  89. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/server/app.py +0 -0
  90. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/server/core.py +0 -0
  91. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/service.py +0 -0
  92. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/sessions.py +0 -0
  93. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/status.py +0 -0
  94. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/stream.py +0 -0
  95. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/stream_utils.py +0 -0
  96. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/token_counter.py +0 -0
  97. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tool.py +0 -0
  98. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tray.py +0 -0
  99. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/__init__.py +0 -0
  100. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/app.py +0 -0
  101. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/chat.py +0 -0
  102. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/lifecycle.py +0 -0
  103. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/log.py +0 -0
  104. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/perf.py +0 -0
  105. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/state.py +0 -0
  106. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/status_bar.py +0 -0
  107. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/stream_debug.py +0 -0
  108. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/style.py +0 -0
  109. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/transcript.py +0 -0
  110. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/tui/widgets.py +0 -0
  111. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/utils.py +0 -0
  112. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent/worker.py +0 -0
  113. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
  114. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
  115. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent_framework.egg-info/entry_points.txt +0 -0
  116. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent_framework.egg-info/requires.txt +0 -0
  117. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/codex_agent_framework.egg-info/top_level.txt +0 -0
  118. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/dependencies.txt +0 -0
  119. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/setup.cfg +0 -0
  120. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent.py +0 -0
  121. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_audio_hooks.py +0 -0
  122. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_context.py +0 -0
  123. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_desktop.py +0 -0
  124. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_environment.py +0 -0
  125. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_image_generation.py +0 -0
  126. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_observe.py +0 -0
  127. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_plugins.py +0 -0
  128. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_providers_config.py +0 -0
  129. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_realtime.py +0 -0
  130. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_response.py +0 -0
  131. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_runtime.py +0 -0
  132. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_sessions.py +0 -0
  133. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_subagents.py +0 -0
  134. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_tools.py +0 -0
  135. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_agent_turns.py +0 -0
  136. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_ai.py +0 -0
  137. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_browser.py +0 -0
  138. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_builtin_config.py +0 -0
  139. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_chat.py +0 -0
  140. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_cli.py +0 -0
  141. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_cli_headless.py +0 -0
  142. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_cli_root.py +0 -0
  143. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_client.py +0 -0
  144. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_events.py +0 -0
  145. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_get_text_browser.py +0 -0
  146. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_hooks.py +0 -0
  147. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_image_message.py +0 -0
  148. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_local_desktop.py +0 -0
  149. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_memory.py +0 -0
  150. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_messages.py +0 -0
  151. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_planner.py +0 -0
  152. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_scheduler.py +0 -0
  153. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_server.py +0 -0
  154. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_service.py +0 -0
  155. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_token_counter.py +0 -0
  156. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_tui.py +0 -0
  157. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_utils.py +0 -0
  158. {codex_agent_framework-0.1.80 → codex_agent_framework-0.1.82}/tests/test_worker.py +0 -0
@@ -4,6 +4,20 @@ 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.82] - 2026-05-18
8
+ ### Changed
9
+ - Document process-backed runtime serialization, event payload, worker command dispatch, and worker loop helper contracts with concise docstrings.
10
+
11
+ ### Tests
12
+ - Validate the runtime documentation pass with targeted runtime tests plus the full offline CI suite (618 passed).
13
+
14
+ ## [0.1.81] - 2026-05-18
15
+ ### Changed
16
+ - Document the remaining built-in slash commands and make `/help` show concise command summaries from their docstrings.
17
+
18
+ ### Tests
19
+ - Validate the command help pass with targeted command tests plus the full offline CI suite (618 passed).
20
+
7
21
  ## [0.1.80] - 2026-05-18
8
22
  ### Changed
9
23
  - Document `AgentClient` event-stream, SSE parsing, sequence resume, URL, and HTTP request helper contracts with concise docstrings.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.80
3
+ Version: 0.1.82
4
4
  Summary: A lightweight event-driven Codex agent runtime.
5
5
  Author: Baptiste
6
6
  License-Expression: MIT
@@ -16,6 +16,7 @@ from .utils import token_count, truncate
16
16
 
17
17
 
18
18
  def jsonable(value):
19
+ """Return a JSON-compatible copy of a runtime payload."""
19
20
  return json.loads(json.dumps(value, ensure_ascii=False, default=str))
20
21
 
21
22
 
@@ -707,6 +708,7 @@ class _RuntimeFuture:
707
708
 
708
709
 
709
710
  def agent_worker_main(command_queue, response_queue, event_queue, agent_kwargs):
711
+ """Run the child-process command loop for a process-backed Agent."""
710
712
  agent = Agent(**dict(agent_kwargs or {}))
711
713
  agent.config_manager.save()
712
714
 
@@ -731,6 +733,7 @@ def agent_worker_main(command_queue, response_queue, event_queue, agent_kwargs):
731
733
 
732
734
 
733
735
  def event_payload(event):
736
+ """Normalize runtime events into JSON-compatible payload dictionaries."""
734
737
  if isinstance(event, Event):
735
738
  payload = event.copy()
736
739
  elif isinstance(event, (dict, modict)):
@@ -742,6 +745,7 @@ def event_payload(event):
742
745
 
743
746
 
744
747
  def run_worker_command(agent, name, payload):
748
+ """Dispatch a process-worker runtime command to an Agent instance."""
745
749
  if name == "start":
746
750
  return agent.start()
747
751
  if name == "stop":
@@ -27,16 +27,25 @@ def format_config_output(value, prefix=""):
27
27
  return "\n".join(_format_lines(value, prefix=prefix)) if isinstance(value, dict) else repr(value)
28
28
 
29
29
 
30
+ def _command_summary(func):
31
+ doc = (getattr(func, "__doc__", None) or "").strip()
32
+ return doc.splitlines()[0].strip() if doc else ""
33
+
34
+
30
35
  @command
31
36
  def help():
32
37
  """List slash commands currently registered on the active agent."""
33
38
  agent = get_agent()
34
- names = ", ".join(f"/{name}" for name in sorted(agent.commands))
35
- return f"Available commands: {names}"
39
+ lines = ["Available commands:"]
40
+ for name in sorted(agent.commands):
41
+ summary = _command_summary(agent.commands[name])
42
+ lines.append(f"/{name} - {summary}" if summary else f"/{name}")
43
+ return "\n".join(lines)
36
44
 
37
45
 
38
46
  @command
39
47
  def compact(max_compacted_turns=None):
48
+ """Compact the current session history, optionally limiting compacted turns."""
40
49
  agent = get_agent()
41
50
  max_compacted_turns = None if max_compacted_turns in (None, "", "all") else int(max_compacted_turns)
42
51
  message = agent.compact_session(
@@ -83,6 +92,7 @@ def _format_session_list(agent):
83
92
 
84
93
  @command
85
94
  def session(action=None, *parts):
95
+ """List, create, rename, or switch persisted chat sessions."""
86
96
  agent = get_agent()
87
97
  if action is None:
88
98
  return _format_session_list(agent)
@@ -120,6 +130,7 @@ def session(action=None, *parts):
120
130
 
121
131
  @command
122
132
  def config(path=None, value=None, *extra, **values):
133
+ """Show, update, or save runtime configuration values."""
123
134
  agent = get_agent()
124
135
  manager = agent.config_manager
125
136
 
@@ -193,6 +204,7 @@ def verbosity(value=None):
193
204
 
194
205
  @command
195
206
  def voice(value=None):
207
+ """Show or update TTS voice settings through the TTS plugin."""
196
208
  agent = get_agent()
197
209
  if "tts" not in agent.plugins:
198
210
  agent.load_builtin_plugin("tts")
@@ -0,0 +1 @@
1
+ __version__ = "0.1.82"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-agent-framework
3
- Version: 0.1.80
3
+ Version: 0.1.82
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.80"
7
+ version = "0.1.82"
8
8
  description = "A lightweight event-driven Codex agent runtime."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -126,8 +126,10 @@ def test_agent_loads_builtin_commands():
126
126
  agent = Agent(session="new")
127
127
 
128
128
  assert {"help", "compact", "config", "model", "reasoning", "verbosity", "voice"}.issubset(agent.commands)
129
- assert "/help" in agent_result(agent, "/help")
130
- assert "/compact" in agent_result(agent, "/help")
129
+ output = agent_result(agent, "/help")
130
+ assert "/help - List slash commands" in output
131
+ assert "/compact - Compact the current session history" in output
132
+ assert "/voice - Show or update TTS voice settings" in output
131
133
 
132
134
 
133
135
  def test_builtin_model_config_commands_update_and_persist(tmp_path, monkeypatch):
@@ -1 +0,0 @@
1
- __version__ = "0.1.80"