codex-agent-framework 0.1.74__tar.gz → 0.1.76__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.
- {codex_agent_framework-0.1.74/codex_agent_framework.egg-info → codex_agent_framework-0.1.76}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/browser.py +1 -1
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_commands.py +5 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/config.py +3 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/stream.py +4 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/app.py +4 -0
- codex_agent_framework-0.1.76/codex_agent/version.py +1 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76/codex_agent_framework.egg-info}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/pyproject.toml +1 -1
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_builtin_config.py +14 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_chat.py +39 -0
- codex_agent_framework-0.1.74/codex_agent/version.py +0 -1
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/CHANGELOG.md +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/LICENSE +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/MANIFEST.in +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/README.md +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/__main__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/agent.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/agent_runtime.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/ai.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/content/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/content/system.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/content/vision.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/context/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/files/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/files/tools.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/python/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/realtime/session.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_plugins/web_search/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/cli/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/cli/headless.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/cli/main.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/cli/output.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/cli/root.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/cli/runner.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/client.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/command.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/context.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/desktop.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/event.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/get_text/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/get_text/default_gitignore +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/get_text/get_text.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/get_text/simpler_get_text.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/hooks.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/image.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/latex.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/mainloop.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/message.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/plugin.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/prompts/compaction_prompt.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/prompts/system_prompt.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/provider.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/runtime.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/scheduler.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/scripts/install-system-dependencies.sh +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/server/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/server/app.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/server/core.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/service.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/sessions.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/status.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/stream_utils.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/token_counter.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tool.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tray.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/__init__.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/chat.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/lifecycle.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/log.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/perf.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/state.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/status_bar.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/stream_debug.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/style.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/transcript.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/widgets.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/utils.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/worker.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent_framework.egg-info/entry_points.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent_framework.egg-info/requires.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent_framework.egg-info/top_level.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/dependencies.txt +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/setup.cfg +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_audio_hooks.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_commands.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_context.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_desktop.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_environment.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_image_generation.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_observe.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_plugins.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_providers_config.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_realtime.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_response.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_runtime.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_sessions.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_subagents.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_tools.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_turns.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_ai.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_browser.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_cli.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_cli_headless.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_cli_root.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_client.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_events.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_get_text_browser.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_hooks.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_image_message.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_local_desktop.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_memory.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_messages.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_planner.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_scheduler.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_server.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_service.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_token_counter.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_tui.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_utils.py +0 -0
- {codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_worker.py +0 -0
|
@@ -252,7 +252,7 @@ class BrowserSession:
|
|
|
252
252
|
async def __aenter__(self) -> "BrowserSession":
|
|
253
253
|
return await self.start()
|
|
254
254
|
|
|
255
|
-
async def __aexit__(self,
|
|
255
|
+
async def __aexit__(self, _exc_type, _exc, _tb) -> None:
|
|
256
256
|
await self.stop()
|
|
257
257
|
|
|
258
258
|
async def new_page(self) -> Any:
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/builtin_commands.py
RENAMED
|
@@ -23,11 +23,13 @@ def _format_lines(value, prefix=""):
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
def format_config_output(value, prefix=""):
|
|
26
|
+
"""Render config values as readable slash-command output."""
|
|
26
27
|
return "\n".join(_format_lines(value, prefix=prefix)) if isinstance(value, dict) else repr(value)
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
@command
|
|
30
31
|
def help():
|
|
32
|
+
"""List slash commands currently registered on the active agent."""
|
|
31
33
|
agent = get_agent()
|
|
32
34
|
names = ", ".join(f"/{name}" for name in sorted(agent.commands))
|
|
33
35
|
return f"Available commands: {names}"
|
|
@@ -157,6 +159,7 @@ def config(path=None, value=None, *extra, **values):
|
|
|
157
159
|
|
|
158
160
|
@command
|
|
159
161
|
def model(value=None):
|
|
162
|
+
"""Show or update the active model configuration value."""
|
|
160
163
|
if value is None:
|
|
161
164
|
return f"model: {get_agent().config.model!r}"
|
|
162
165
|
get_agent().config_manager.set_path("agent.model", value, save=True)
|
|
@@ -165,6 +168,7 @@ def model(value=None):
|
|
|
165
168
|
|
|
166
169
|
@command
|
|
167
170
|
def reasoning(value=None):
|
|
171
|
+
"""Show or update the reasoning effort config shortcut."""
|
|
168
172
|
agent = get_agent()
|
|
169
173
|
if value is None:
|
|
170
174
|
return f"reasoning: {agent.config.get('reasoning')!r}"
|
|
@@ -177,6 +181,7 @@ def reasoning(value=None):
|
|
|
177
181
|
|
|
178
182
|
@command
|
|
179
183
|
def verbosity(value=None):
|
|
184
|
+
"""Show or update the text verbosity config shortcut."""
|
|
180
185
|
agent = get_agent()
|
|
181
186
|
if value is None:
|
|
182
187
|
return f"text: {agent.config.get('text')!r}"
|
|
@@ -353,6 +353,9 @@ class ConfigManager:
|
|
|
353
353
|
legacy_agent_aliases=None,
|
|
354
354
|
legacy_agent_sections=None,
|
|
355
355
|
):
|
|
356
|
+
# Kept for compatibility with older plugin config declarations; the
|
|
357
|
+
# current plugin-scoped config loader no longer needs these aliases.
|
|
358
|
+
del legacy_agent_aliases, legacy_agent_sections
|
|
356
359
|
config = self.load_config(namespace, config_class=config_class, file=file, defaults=defaults)
|
|
357
360
|
self.agent.config = self.config
|
|
358
361
|
return config
|
|
@@ -45,6 +45,8 @@ class StreamManager:
|
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
class AgentStream:
|
|
48
|
+
"""Iterator over live agent events for one submitted prompt or turn."""
|
|
49
|
+
|
|
48
50
|
def __init__(self, agent, prompt=None):
|
|
49
51
|
self.agent = agent
|
|
50
52
|
self.prompt = prompt
|
|
@@ -58,6 +60,7 @@ class AgentStream:
|
|
|
58
60
|
self._monitor_thread = None
|
|
59
61
|
|
|
60
62
|
def start(self):
|
|
63
|
+
"""Submit the stream turn and start forwarding emitted events."""
|
|
61
64
|
self.mainloop_was_running = self.agent.mainloop_manager.thread is not None and self.agent.mainloop_manager.thread.is_alive()
|
|
62
65
|
self._handler = self.agent.on("*", self._on_event)
|
|
63
66
|
try:
|
|
@@ -105,6 +108,7 @@ class AgentStream:
|
|
|
105
108
|
|
|
106
109
|
@property
|
|
107
110
|
def turn(self):
|
|
111
|
+
"""Return the completed turn once the stream future resolves."""
|
|
108
112
|
return self.future.wait()
|
|
109
113
|
|
|
110
114
|
def __iter__(self):
|
|
@@ -68,6 +68,8 @@ class AgentTextualApp(App):
|
|
|
68
68
|
self.handle_terminal_resize()
|
|
69
69
|
|
|
70
70
|
def handle_terminal_resize(self, *, log_resized=False):
|
|
71
|
+
if log_resized:
|
|
72
|
+
self.stream_debug.record("tui_resized")
|
|
71
73
|
self.resize_input()
|
|
72
74
|
self.refresh_status()
|
|
73
75
|
|
|
@@ -148,6 +150,8 @@ class AgentTextualApp(App):
|
|
|
148
150
|
def render_transcript(self, *, keep_scroll=False):
|
|
149
151
|
# The widget timeline is updated incrementally. This method remains as a
|
|
150
152
|
# compatibility shim for older call sites during the migration.
|
|
153
|
+
if keep_scroll:
|
|
154
|
+
self.stream_debug.record("tui_render_transcript_keep_scroll_ignored")
|
|
151
155
|
return None
|
|
152
156
|
|
|
153
157
|
def begin_transcript_batch(self):
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.76"
|
|
@@ -41,6 +41,20 @@ def test_parse_config_value_preserves_unknown_strings_and_values():
|
|
|
41
41
|
assert parse_config_value({"already": "parsed"}) == {"already": "parsed"}
|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
def test_apply_config_defaults_accepts_legacy_alias_arguments():
|
|
45
|
+
agent = DummyAgent()
|
|
46
|
+
manager = ConfigManager(agent)
|
|
47
|
+
|
|
48
|
+
config = manager.apply_config_defaults(
|
|
49
|
+
"legacy_plugin",
|
|
50
|
+
legacy_agent_aliases={"old": "new"},
|
|
51
|
+
legacy_agent_sections=["old_section"],
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
assert config is not None
|
|
55
|
+
assert agent.config is manager.config
|
|
56
|
+
|
|
57
|
+
|
|
44
58
|
def test_builtin_plugin_enabled_none_loads_everything():
|
|
45
59
|
manager = manager_with_builtin_field("builtin_plugins", None)
|
|
46
60
|
|
|
@@ -1354,6 +1354,45 @@ def test_chat_terminal_resize_keeps_input_and_status_fresh():
|
|
|
1354
1354
|
assert calls == [("resize_input",), ("status",)]
|
|
1355
1355
|
|
|
1356
1356
|
|
|
1357
|
+
def test_chat_terminal_resize_can_log_legacy_resize_flag():
|
|
1358
|
+
calls = []
|
|
1359
|
+
|
|
1360
|
+
class StreamDebug:
|
|
1361
|
+
def record(self, name):
|
|
1362
|
+
calls.append(("record", name))
|
|
1363
|
+
|
|
1364
|
+
class App:
|
|
1365
|
+
stream_debug = StreamDebug()
|
|
1366
|
+
|
|
1367
|
+
def resize_input(self):
|
|
1368
|
+
calls.append(("resize_input",))
|
|
1369
|
+
|
|
1370
|
+
def refresh_status(self):
|
|
1371
|
+
calls.append(("status",))
|
|
1372
|
+
|
|
1373
|
+
from codex_agent.tui.app import AgentTextualApp
|
|
1374
|
+
|
|
1375
|
+
AgentTextualApp.handle_terminal_resize(App(), log_resized=True)
|
|
1376
|
+
|
|
1377
|
+
assert calls == [("record", "tui_resized"), ("resize_input",), ("status",)]
|
|
1378
|
+
|
|
1379
|
+
|
|
1380
|
+
def test_render_transcript_keep_scroll_flag_is_explicitly_ignored():
|
|
1381
|
+
calls = []
|
|
1382
|
+
|
|
1383
|
+
class StreamDebug:
|
|
1384
|
+
def record(self, name):
|
|
1385
|
+
calls.append(("record", name))
|
|
1386
|
+
|
|
1387
|
+
class App:
|
|
1388
|
+
stream_debug = StreamDebug()
|
|
1389
|
+
|
|
1390
|
+
from codex_agent.tui.app import AgentTextualApp
|
|
1391
|
+
|
|
1392
|
+
assert AgentTextualApp.render_transcript(App(), keep_scroll=True) is None
|
|
1393
|
+
assert calls == [("record", "tui_render_transcript_keep_scroll_ignored")]
|
|
1394
|
+
|
|
1395
|
+
|
|
1357
1396
|
@pytest.mark.asyncio
|
|
1358
1397
|
async def test_agent_textual_app_replay_hides_incremental_history_until_final_refresh(monkeypatch):
|
|
1359
1398
|
class Client:
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.74"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/get_text/__init__.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/get_text/default_gitignore
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/get_text/get_text.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/prompts/system_prompt.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/server/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/codex_agent/tui/stream_debug.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_audio_hooks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_environment.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_image_generation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_agent_providers_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.74 → codex_agent_framework-0.1.76}/tests/test_get_text_browser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|