codex-agent-framework 0.1.76__tar.gz → 0.1.78__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.76/codex_agent_framework.egg-info → codex_agent_framework-0.1.78}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/content/system.py +1 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/cli/headless.py +5 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/cli/root.py +6 -0
- codex_agent_framework-0.1.78/codex_agent/version.py +1 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78/codex_agent_framework.egg-info}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/pyproject.toml +1 -1
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_response.py +46 -0
- codex_agent_framework-0.1.76/codex_agent/version.py +0 -1
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/CHANGELOG.md +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/LICENSE +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/MANIFEST.in +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/README.md +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/__main__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/agent.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/agent_runtime.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/ai.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/browser.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_commands.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/content/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/content/vision.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/context/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/files/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/files/tools.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/python/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/realtime/session.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_plugins/web_search/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/cli/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/cli/main.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/cli/output.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/cli/runner.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/client.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/command.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/config.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/context.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/desktop.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/event.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/get_text/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/get_text/default_gitignore +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/get_text/get_text.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/get_text/simpler_get_text.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/hooks.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/image.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/latex.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/mainloop.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/message.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/plugin.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/prompts/compaction_prompt.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/prompts/system_prompt.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/provider.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/runtime.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/scheduler.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/scripts/install-system-dependencies.sh +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/server/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/server/app.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/server/core.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/service.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/sessions.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/status.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/stream.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/stream_utils.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/token_counter.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tool.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tray.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/__init__.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/app.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/chat.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/lifecycle.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/log.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/perf.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/state.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/status_bar.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/stream_debug.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/style.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/transcript.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/tui/widgets.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/utils.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/worker.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent_framework.egg-info/entry_points.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent_framework.egg-info/requires.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent_framework.egg-info/top_level.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/dependencies.txt +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/setup.cfg +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_audio_hooks.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_commands.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_context.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_desktop.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_environment.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_image_generation.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_observe.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_plugins.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_providers_config.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_realtime.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_runtime.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_sessions.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_subagents.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_tools.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_turns.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_ai.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_browser.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_builtin_config.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_chat.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_cli.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_cli_headless.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_cli_root.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_client.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_events.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_get_text_browser.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_hooks.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_image_message.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_local_desktop.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_memory.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_messages.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_planner.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_scheduler.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_server.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_service.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_token_counter.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_tui.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_utils.py +0 -0
- {codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_worker.py +0 -0
|
@@ -48,6 +48,7 @@ def read_prompt(args, extra_args):
|
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
def with_runner(args, callback):
|
|
51
|
+
"""Start the selected runner, invoke a callback, and stop it if needed."""
|
|
51
52
|
runner = runner_from_args(args).start()
|
|
52
53
|
try:
|
|
53
54
|
return callback(runner)
|
|
@@ -57,12 +58,14 @@ def with_runner(args, callback):
|
|
|
57
58
|
|
|
58
59
|
|
|
59
60
|
def run_status(args, extra_args=None):
|
|
61
|
+
"""Fetch and print agent runtime status."""
|
|
60
62
|
payload = with_runner(args, lambda runner: runner.get_status())
|
|
61
63
|
output_payload(payload, fmt=output_format(args), text_formatter=key_value_text)
|
|
62
64
|
return payload
|
|
63
65
|
|
|
64
66
|
|
|
65
67
|
def run_tools(args, extra_args=None):
|
|
68
|
+
"""Fetch and print registered tool names or metadata."""
|
|
66
69
|
payload = with_runner(args, lambda runner: runner.tools())
|
|
67
70
|
|
|
68
71
|
def format_tools(data):
|
|
@@ -94,6 +97,7 @@ def parse_config_set_args(extra_args):
|
|
|
94
97
|
|
|
95
98
|
|
|
96
99
|
def run_config(args, extra_args=None):
|
|
100
|
+
"""Run `config get` or `config set` through the selected runner."""
|
|
97
101
|
extra_args = list(extra_args or [])
|
|
98
102
|
command = extra_args[0] if extra_args else "get"
|
|
99
103
|
if command == "get":
|
|
@@ -149,6 +153,7 @@ def run_sessions(args, extra_args=None):
|
|
|
149
153
|
|
|
150
154
|
|
|
151
155
|
def run_interrupt(args, extra_args=None):
|
|
156
|
+
"""Ask the active runtime to interrupt the current turn."""
|
|
152
157
|
reason = " ".join(extra_args or []).strip() or "cli"
|
|
153
158
|
payload = with_runner(args, lambda runner: runner.interrupt(reason=reason))
|
|
154
159
|
output_payload(payload, fmt=output_format(args), text_formatter=key_value_text)
|
|
@@ -53,6 +53,7 @@ def build_root_parser():
|
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
def print_root_help():
|
|
56
|
+
"""Print help for the public root CLI parser."""
|
|
56
57
|
build_root_parser().print_help()
|
|
57
58
|
|
|
58
59
|
|
|
@@ -97,6 +98,7 @@ def _detached_start(name, args):
|
|
|
97
98
|
|
|
98
99
|
|
|
99
100
|
def start_service(name, args):
|
|
101
|
+
"""Start a supported service in foreground or detached mode."""
|
|
100
102
|
parsed, extra = _parse_connection_args(args)
|
|
101
103
|
if extra:
|
|
102
104
|
raise SystemExit(f"unrecognized arguments: {' '.join(extra)}")
|
|
@@ -120,18 +122,21 @@ def start_service(name, args):
|
|
|
120
122
|
|
|
121
123
|
|
|
122
124
|
def stop_service(name, args=None):
|
|
125
|
+
"""Stop a supported user service without requiring it to be active."""
|
|
123
126
|
if name not in SERVICE_UNITS:
|
|
124
127
|
raise SystemExit(f"usage: codex-agent stop {{{','.join(SERVICE_UNITS)}}}")
|
|
125
128
|
service_controller().run("stop", SERVICE_UNITS[name], check=False)
|
|
126
129
|
|
|
127
130
|
|
|
128
131
|
def restart_service(name, args=None):
|
|
132
|
+
"""Restart a supported user service via the platform controller."""
|
|
129
133
|
if name not in SERVICE_UNITS:
|
|
130
134
|
raise SystemExit(f"usage: codex-agent restart {{{','.join(SERVICE_UNITS)}}}")
|
|
131
135
|
service_controller().restart(SERVICE_UNITS[name], check=False)
|
|
132
136
|
|
|
133
137
|
|
|
134
138
|
def open_interface(name, args):
|
|
139
|
+
"""Ask the local server to open a supported interactive interface."""
|
|
135
140
|
if name != "tui":
|
|
136
141
|
raise SystemExit("usage: codex-agent open {tui}")
|
|
137
142
|
parsed, extra = _parse_connection_args(args)
|
|
@@ -146,6 +151,7 @@ def open_interface(name, args):
|
|
|
146
151
|
|
|
147
152
|
|
|
148
153
|
def close_interface(name, args):
|
|
154
|
+
"""Ask the local server to close a supported interactive interface."""
|
|
149
155
|
if name != "tui":
|
|
150
156
|
raise SystemExit("usage: codex-agent close {tui}")
|
|
151
157
|
parsed, extra = _parse_connection_args(args)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.78"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import os
|
|
3
|
+
import subprocess
|
|
3
4
|
from types import SimpleNamespace
|
|
4
5
|
|
|
5
6
|
import codex_agent.utils as utils
|
|
@@ -284,6 +285,51 @@ def test_agent_persists_server_tool_output_items_as_messages():
|
|
|
284
285
|
assert server_message.to_response_format() == item
|
|
285
286
|
|
|
286
287
|
|
|
288
|
+
def test_open_silently_uses_detached_posix_opener(monkeypatch):
|
|
289
|
+
import codex_agent.builtin_plugins.content.system as system_tools
|
|
290
|
+
|
|
291
|
+
calls = []
|
|
292
|
+
|
|
293
|
+
def fake_popen(command, **kwargs):
|
|
294
|
+
calls.append((command, kwargs))
|
|
295
|
+
|
|
296
|
+
monkeypatch.setattr(system_tools.os, "name", "posix")
|
|
297
|
+
monkeypatch.setattr(system_tools.sys, "platform", "linux")
|
|
298
|
+
monkeypatch.setattr(system_tools.subprocess, "Popen", fake_popen)
|
|
299
|
+
monkeypatch.setattr(system_tools.webbrowser, "open", lambda target: False)
|
|
300
|
+
|
|
301
|
+
assert system_tools.open_silently("/tmp/file.txt") is True
|
|
302
|
+
assert calls == [([
|
|
303
|
+
"xdg-open",
|
|
304
|
+
"/tmp/file.txt",
|
|
305
|
+
], {
|
|
306
|
+
"stdout": subprocess.DEVNULL,
|
|
307
|
+
"stderr": subprocess.DEVNULL,
|
|
308
|
+
"stdin": subprocess.DEVNULL,
|
|
309
|
+
"start_new_session": True,
|
|
310
|
+
})]
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
def test_open_silently_falls_back_to_webbrowser_when_posix_opener_missing(monkeypatch):
|
|
314
|
+
import codex_agent.builtin_plugins.content.system as system_tools
|
|
315
|
+
|
|
316
|
+
calls = []
|
|
317
|
+
|
|
318
|
+
def missing_opener(*args, **kwargs):
|
|
319
|
+
raise FileNotFoundError
|
|
320
|
+
|
|
321
|
+
def fake_web_open(target):
|
|
322
|
+
calls.append(target)
|
|
323
|
+
return True
|
|
324
|
+
|
|
325
|
+
monkeypatch.setattr(system_tools.os, "name", "posix")
|
|
326
|
+
monkeypatch.setattr(system_tools.subprocess, "Popen", missing_opener)
|
|
327
|
+
monkeypatch.setattr(system_tools.webbrowser, "open", fake_web_open)
|
|
328
|
+
|
|
329
|
+
assert system_tools.open_silently("https://example.com") is True
|
|
330
|
+
assert calls == ["https://example.com"]
|
|
331
|
+
|
|
332
|
+
|
|
287
333
|
def test_open_tui_tool_bridges_to_agent_server():
|
|
288
334
|
import codex_agent.builtin_plugins.content.system as system_tools
|
|
289
335
|
from codex_agent.tool import reset_current_agent, set_current_agent
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.76"
|
|
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.76 → codex_agent_framework-0.1.78}/codex_agent/builtin_commands.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
|
|
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.76 → codex_agent_framework-0.1.78}/codex_agent/get_text/__init__.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/codex_agent/get_text/default_gitignore
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/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.76 → codex_agent_framework-0.1.78}/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.76 → codex_agent_framework-0.1.78}/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
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/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.76 → codex_agent_framework-0.1.78}/tests/test_agent_audio_hooks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_environment.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/tests/test_agent_image_generation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/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
|
|
File without changes
|
{codex_agent_framework-0.1.76 → codex_agent_framework-0.1.78}/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
|