codex-agent-framework 0.1.34__tar.gz → 0.1.36__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.34 → codex_agent_framework-0.1.36}/CHANGELOG.md +16 -0
- {codex_agent_framework-0.1.34/codex_agent_framework.egg-info → codex_agent_framework-0.1.36}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/agent.py +78 -41
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/plugin.py +9 -4
- codex_agent_framework-0.1.36/codex_agent/version.py +1 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36/codex_agent_framework.egg-info}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/pyproject.toml +1 -1
- codex_agent_framework-0.1.34/codex_agent/version.py +0 -1
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/LICENSE +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/MANIFEST.in +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/README.md +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/__main__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/agent_runtime.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/ai.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/browser.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_commands.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/content/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/content/system.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/content/vision.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/context/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/files/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/files/tools.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/python/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/realtime/session.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/cli/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/cli/headless.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/cli/main.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/cli/output.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/cli/root.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/cli/runner.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/client.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/command.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/config.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/context.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/desktop.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/event.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/get_text/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/get_text/default_gitignore +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/get_text/get_text.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/get_text/simpler_get_text.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/hooks.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/image.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/latex.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/mainloop.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/message.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/prompts/system_prompt.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/provider.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/runtime.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/scheduler.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/scripts/install-system-dependencies.sh +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/server/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/server/app.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/server/core.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/service.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/sessions.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/status.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/stream.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/stream_utils.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/tool.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/tray.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/tui/__init__.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/tui/app.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/tui/chat.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/tui/lifecycle.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/tui/log.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/tui/state.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/tui/status_bar.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/tui/style.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/tui/transcript.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/utils.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/worker.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent_framework.egg-info/entry_points.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent_framework.egg-info/requires.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent_framework.egg-info/top_level.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/dependencies.txt +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/setup.cfg +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_audio_hooks.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_commands.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_context.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_desktop.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_environment.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_image_generation.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_observe.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_plugins.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_providers_config.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_realtime.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_response.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_runtime.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_sessions.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_subagents.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_tools.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_turns.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_ai.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_browser.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_builtin_config.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_chat.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_cli.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_cli_headless.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_cli_root.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_client.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_events.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_get_text_browser.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_hooks.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_image_message.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_local_desktop.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_memory.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_messages.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_planner.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_scheduler.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_server.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_service.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_tui.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_utils.py +0 -0
- {codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_worker.py +0 -0
|
@@ -4,6 +4,22 @@ 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.36] - 2026-05-16
|
|
8
|
+
### Changed
|
|
9
|
+
- Clean up residual `Agent` facade style around response dispatch and transcription helpers.
|
|
10
|
+
- Deduplicate plugin name resolution for add, remove, unload, and reload flows.
|
|
11
|
+
|
|
12
|
+
### Tests
|
|
13
|
+
- Validate with targeted Agent response/audio/tool coverage, plugin coverage, and the 553-test offline CI suite.
|
|
14
|
+
|
|
15
|
+
## [0.1.35] - 2026-05-16
|
|
16
|
+
### Changed
|
|
17
|
+
- Normalize formatting in the `Agent` facade around initialization, message helpers, image helpers, and tool registration.
|
|
18
|
+
- Wrap long `Agent` facade lines for imports, interrupt events, working-directory resolution, and upload notifications.
|
|
19
|
+
|
|
20
|
+
### Tests
|
|
21
|
+
- Validate with targeted Agent/session/tool/environment/response coverage and the 553-test offline CI suite.
|
|
22
|
+
|
|
7
23
|
## [0.1.34] - 2026-05-16
|
|
8
24
|
### Changed
|
|
9
25
|
- Share the broken-session backup path used by session repair and truncation flows.
|
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
from .utils import
|
|
1
|
+
from .utils import (
|
|
2
|
+
ensure_runtime_dir,
|
|
3
|
+
project_python_env,
|
|
4
|
+
root_join,
|
|
5
|
+
runtime_join,
|
|
6
|
+
text_content,
|
|
7
|
+
upload_file_to_folder,
|
|
8
|
+
)
|
|
2
9
|
import os
|
|
3
10
|
from modict import modict
|
|
4
|
-
from .message import
|
|
11
|
+
from .message import (
|
|
12
|
+
DeveloperMessage,
|
|
13
|
+
ServerToolResponseMessage,
|
|
14
|
+
ToolResultMessage,
|
|
15
|
+
UserMessage,
|
|
16
|
+
message_from_data,
|
|
17
|
+
)
|
|
5
18
|
from .image import ImageMessage
|
|
6
19
|
from .command import CommandManager
|
|
7
20
|
from .config import ConfigManager
|
|
@@ -22,7 +35,7 @@ from threading import Event as ThreadEvent
|
|
|
22
35
|
|
|
23
36
|
class Agent:
|
|
24
37
|
|
|
25
|
-
def __init__(self,session="latest"
|
|
38
|
+
def __init__(self, session="latest", **kwargs):
|
|
26
39
|
"""Initializes the Agent instance with configuration, events, tools, and message history.
|
|
27
40
|
|
|
28
41
|
Args:
|
|
@@ -36,33 +49,33 @@ class Agent:
|
|
|
36
49
|
explicit_root_dir = kwargs.pop("root_dir", None)
|
|
37
50
|
explicit_cwd = kwargs.pop("cwd", None)
|
|
38
51
|
self.init_execution_environment()
|
|
39
|
-
self.config_manager=ConfigManager(self)
|
|
52
|
+
self.config_manager = ConfigManager(self)
|
|
40
53
|
self.config_manager.load()
|
|
41
54
|
self.config_manager.update(kwargs, save=False)
|
|
42
55
|
self.init_working_directories(root_dir=explicit_root_dir or launch_cwd, cwd=explicit_cwd)
|
|
43
56
|
self.config_manager.apply_openai_capability_defaults()
|
|
44
|
-
self.events=EventBus()
|
|
45
|
-
self.tools_manager=ToolsManager(self)
|
|
46
|
-
self.providers_manager=ProvidersManager(self)
|
|
47
|
-
self.command_manager=CommandManager(self)
|
|
48
|
-
self.context_manager=ContextManager(self)
|
|
49
|
-
self.plugins_manager=PluginsManager(self)
|
|
50
|
-
self.sessions_manager=SessionsManager(self)
|
|
51
|
-
self.runtime=RuntimeManager(self)
|
|
52
|
-
self.scheduler=AgentScheduler(self)
|
|
53
|
-
self.hooks=HookManager(self)
|
|
54
|
-
self.stream_manager=StreamManager(self)
|
|
55
|
-
self.mainloop_manager=MainLoopManager(self)
|
|
56
|
-
self._interrupt_requested=ThreadEvent()
|
|
57
|
-
self.current_session_id=None
|
|
58
|
-
self.session=None
|
|
59
|
-
self.status_manager=StatusManager(self)
|
|
60
|
-
self.context_namespace=self.create_context_namespace()
|
|
57
|
+
self.events = EventBus()
|
|
58
|
+
self.tools_manager = ToolsManager(self)
|
|
59
|
+
self.providers_manager = ProvidersManager(self)
|
|
60
|
+
self.command_manager = CommandManager(self)
|
|
61
|
+
self.context_manager = ContextManager(self)
|
|
62
|
+
self.plugins_manager = PluginsManager(self)
|
|
63
|
+
self.sessions_manager = SessionsManager(self)
|
|
64
|
+
self.runtime = RuntimeManager(self)
|
|
65
|
+
self.scheduler = AgentScheduler(self)
|
|
66
|
+
self.hooks = HookManager(self)
|
|
67
|
+
self.stream_manager = StreamManager(self)
|
|
68
|
+
self.mainloop_manager = MainLoopManager(self)
|
|
69
|
+
self._interrupt_requested = ThreadEvent()
|
|
70
|
+
self.current_session_id = None
|
|
71
|
+
self.session = None
|
|
72
|
+
self.status_manager = StatusManager(self)
|
|
73
|
+
self.context_namespace = self.create_context_namespace()
|
|
61
74
|
self.init_workfolder()
|
|
62
75
|
self.sessions_manager.init_folder()
|
|
63
76
|
self.command_manager.init_folder()
|
|
64
77
|
self.plugins_manager.init_folder()
|
|
65
|
-
self.ai=AIClient(self)
|
|
78
|
+
self.ai = AIClient(self)
|
|
66
79
|
self.command_manager.init_builtin()
|
|
67
80
|
self.plugins_manager.init_builtin()
|
|
68
81
|
self.plugins_manager.init_runtime()
|
|
@@ -192,7 +205,12 @@ class Agent:
|
|
|
192
205
|
except Exception as exc:
|
|
193
206
|
abort_error = exc
|
|
194
207
|
self.emit(AssistantInterruptedEvent, reason=reason)
|
|
195
|
-
self.emit(
|
|
208
|
+
self.emit(
|
|
209
|
+
AssistantInterruptRequestedEvent,
|
|
210
|
+
reason=reason,
|
|
211
|
+
interrupted=True,
|
|
212
|
+
error=str(abort_error) if abort_error else "",
|
|
213
|
+
)
|
|
196
214
|
return True
|
|
197
215
|
|
|
198
216
|
def clear_interrupt(self):
|
|
@@ -233,7 +251,9 @@ class Agent:
|
|
|
233
251
|
return self.sync_working_cwd_from_process(save_session=save_session)
|
|
234
252
|
|
|
235
253
|
def init_working_directories(self, root_dir=None, cwd=None):
|
|
236
|
-
root_dir = self.normalize_directory(
|
|
254
|
+
root_dir = self.normalize_directory(
|
|
255
|
+
root_dir or getattr(self, "process_launch_cwd", None) or self.config.root_dir
|
|
256
|
+
)
|
|
237
257
|
cwd = self.normalize_directory(cwd or root_dir)
|
|
238
258
|
self.config.root_dir = root_dir
|
|
239
259
|
self.set_process_cwd(cwd)
|
|
@@ -242,7 +262,11 @@ class Agent:
|
|
|
242
262
|
def apply_session_working_directories(self):
|
|
243
263
|
if not self.session:
|
|
244
264
|
return self.config.cwd
|
|
245
|
-
root_dir =
|
|
265
|
+
root_dir = (
|
|
266
|
+
getattr(self.session, "root_dir", None)
|
|
267
|
+
or self.config.root_dir
|
|
268
|
+
or getattr(self, "process_launch_cwd", None)
|
|
269
|
+
)
|
|
246
270
|
cwd = getattr(self.session, "cwd", None) or root_dir
|
|
247
271
|
self.config.root_dir = self.normalize_directory(root_dir)
|
|
248
272
|
self.session.root_dir = self.config.root_dir
|
|
@@ -261,7 +285,7 @@ class Agent:
|
|
|
261
285
|
|
|
262
286
|
def init_workfolder(self):
|
|
263
287
|
if not os.path.isdir(self.config.workfolder):
|
|
264
|
-
os.makedirs(self.config.workfolder,exist_ok=True)
|
|
288
|
+
os.makedirs(self.config.workfolder, exist_ok=True)
|
|
265
289
|
|
|
266
290
|
def init_execution_environment(self):
|
|
267
291
|
os.environ.update(project_python_env())
|
|
@@ -298,7 +322,7 @@ class Agent:
|
|
|
298
322
|
max_compacted_turns=max_compacted_turns,
|
|
299
323
|
)
|
|
300
324
|
|
|
301
|
-
def add_message(self,msg,pending=False):
|
|
325
|
+
def add_message(self, msg, pending=False):
|
|
302
326
|
"""Queue a message for the next pending flush, except tool results."""
|
|
303
327
|
if isinstance(msg, ToolResultMessage):
|
|
304
328
|
return self.sessions_manager.append_message(msg)
|
|
@@ -306,7 +330,7 @@ class Agent:
|
|
|
306
330
|
return self.sessions_manager.append_message(msg)
|
|
307
331
|
return self.mainloop_manager.add_pending_message(msg)
|
|
308
332
|
|
|
309
|
-
def new_message(self,pending=False
|
|
333
|
+
def new_message(self, pending=False, **kwargs):
|
|
310
334
|
"""Helper to create and add a message based on provided keyword arguments.
|
|
311
335
|
|
|
312
336
|
Args:
|
|
@@ -316,21 +340,31 @@ class Agent:
|
|
|
316
340
|
Returns:
|
|
317
341
|
The created message object.
|
|
318
342
|
"""
|
|
319
|
-
msg=message_from_data(kwargs)
|
|
320
|
-
return self.add_message(msg,pending=pending)
|
|
343
|
+
msg = message_from_data(kwargs)
|
|
344
|
+
return self.add_message(msg, pending=pending)
|
|
321
345
|
|
|
322
|
-
def add_image(self,source,pending=False
|
|
346
|
+
def add_image(self, source, pending=False, **kwargs):
|
|
323
347
|
if source:
|
|
324
|
-
img=ImageMessage(
|
|
348
|
+
img = ImageMessage(
|
|
325
349
|
content=source,
|
|
326
|
-
**kwargs
|
|
350
|
+
**kwargs,
|
|
327
351
|
)
|
|
328
352
|
if not img.is_valid():
|
|
329
353
|
raise ValueError(f"Invalid or inaccessible image source: {source!r}")
|
|
330
|
-
self.add_message(img,pending=pending)
|
|
354
|
+
self.add_message(img, pending=pending)
|
|
331
355
|
return img
|
|
332
356
|
|
|
333
|
-
def add_tool(
|
|
357
|
+
def add_tool(
|
|
358
|
+
self,
|
|
359
|
+
func=None,
|
|
360
|
+
name=None,
|
|
361
|
+
description=None,
|
|
362
|
+
parameters=None,
|
|
363
|
+
required=None,
|
|
364
|
+
tool_type=None,
|
|
365
|
+
format=None,
|
|
366
|
+
owner=None,
|
|
367
|
+
):
|
|
334
368
|
return self.tools_manager.add(
|
|
335
369
|
func=func,
|
|
336
370
|
name=name,
|
|
@@ -409,7 +443,7 @@ class Agent:
|
|
|
409
443
|
finally:
|
|
410
444
|
reset_current_agent(agent_context)
|
|
411
445
|
|
|
412
|
-
def get_messages(self,filter=None):
|
|
446
|
+
def get_messages(self, filter=None):
|
|
413
447
|
return self.sessions_manager.messages(filter=filter)
|
|
414
448
|
|
|
415
449
|
def get_status(self):
|
|
@@ -433,11 +467,11 @@ class Agent:
|
|
|
433
467
|
)
|
|
434
468
|
messages = self.context_manager.get_context()
|
|
435
469
|
|
|
436
|
-
message=self.ai.run(
|
|
470
|
+
message = self.ai.run(
|
|
437
471
|
messages=messages,
|
|
438
472
|
tools=self.tools_manager.get_response_tools(),
|
|
439
473
|
prompt_cache_key=self.current_session_id,
|
|
440
|
-
**self.config.extract(
|
|
474
|
+
**self.config.extract("model", "reasoning", "text", "parallel_tool_calls"),
|
|
441
475
|
)
|
|
442
476
|
self.sessions_manager.append_message(message)
|
|
443
477
|
for item in message.output_items:
|
|
@@ -475,11 +509,10 @@ class Agent:
|
|
|
475
509
|
if source is None:
|
|
476
510
|
raise ValueError("An audio source must be provided")
|
|
477
511
|
|
|
478
|
-
# Transcribe audio to text
|
|
479
512
|
transcribed_text = self.ai.audio_to_text(
|
|
480
513
|
source=source,
|
|
481
514
|
language=language,
|
|
482
|
-
**kwargs
|
|
515
|
+
**kwargs,
|
|
483
516
|
)
|
|
484
517
|
|
|
485
518
|
return transcribed_text
|
|
@@ -498,7 +531,11 @@ class Agent:
|
|
|
498
531
|
dest_path = upload_file_to_folder(source, self.config.workfolder, name=name)
|
|
499
532
|
dest_filename = os.path.basename(dest_path)
|
|
500
533
|
|
|
501
|
-
self.add_message(
|
|
534
|
+
self.add_message(
|
|
535
|
+
DeveloperMessage(
|
|
536
|
+
content=f"File '{dest_filename}' has been uploaded to the workfolder at: {dest_path}"
|
|
537
|
+
)
|
|
538
|
+
)
|
|
502
539
|
|
|
503
540
|
return dest_path
|
|
504
541
|
|
|
@@ -461,8 +461,13 @@ class PluginsManager:
|
|
|
461
461
|
raise RuntimeError(f"Runtime plugin {name_or_path!r} requires an OpenAI API key")
|
|
462
462
|
return self.add_from_module(module)
|
|
463
463
|
|
|
464
|
+
def _plugin_name(self, plugin_or_name):
|
|
465
|
+
if isinstance(plugin_or_name, str):
|
|
466
|
+
return plugin_or_name
|
|
467
|
+
return getattr(plugin_or_name, "name", None) or type(plugin_or_name).__name__
|
|
468
|
+
|
|
464
469
|
def add_plugin(self, plugin):
|
|
465
|
-
plugin_name =
|
|
470
|
+
plugin_name = self._plugin_name(plugin)
|
|
466
471
|
if plugin_name in self.plugins:
|
|
467
472
|
self.unload_plugin(plugin_name)
|
|
468
473
|
self.plugins[plugin_name] = plugin
|
|
@@ -472,7 +477,7 @@ class PluginsManager:
|
|
|
472
477
|
return plugin
|
|
473
478
|
|
|
474
479
|
def remove_plugin_members(self, plugin_or_name):
|
|
475
|
-
plugin_name =
|
|
480
|
+
plugin_name = self._plugin_name(plugin_or_name)
|
|
476
481
|
return modict(
|
|
477
482
|
tools=self.agent.tools_manager.remove_by_owner(plugin_name),
|
|
478
483
|
providers=self.agent.providers_manager.remove_by_owner(plugin_name),
|
|
@@ -483,7 +488,7 @@ class PluginsManager:
|
|
|
483
488
|
)
|
|
484
489
|
|
|
485
490
|
def unload_plugin(self, plugin_or_name, timeout=None):
|
|
486
|
-
plugin_name =
|
|
491
|
+
plugin_name = self._plugin_name(plugin_or_name)
|
|
487
492
|
plugin = self.plugins.get(plugin_name)
|
|
488
493
|
if plugin is None:
|
|
489
494
|
return None
|
|
@@ -494,7 +499,7 @@ class PluginsManager:
|
|
|
494
499
|
return modict(plugin=plugin, removed=removed)
|
|
495
500
|
|
|
496
501
|
def reload_plugin(self, plugin_or_name, timeout=None):
|
|
497
|
-
plugin_name =
|
|
502
|
+
plugin_name = self._plugin_name(plugin_or_name)
|
|
498
503
|
plugin = self.plugins.get(plugin_name)
|
|
499
504
|
if plugin is None:
|
|
500
505
|
raise KeyError(f"Unknown plugin: {plugin_name}")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.36"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.34"
|
|
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.34 → codex_agent_framework-0.1.36}/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
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/get_text/__init__.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/codex_agent/get_text/default_gitignore
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/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
|
{codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/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.34 → codex_agent_framework-0.1.36}/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
|
|
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.34 → codex_agent_framework-0.1.36}/tests/test_agent_audio_hooks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_environment.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/tests/test_agent_image_generation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/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
|
|
File without changes
|
{codex_agent_framework-0.1.34 → codex_agent_framework-0.1.36}/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
|