codex-agent-framework 0.1.33__tar.gz → 0.1.35__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.33 → codex_agent_framework-0.1.35}/CHANGELOG.md +16 -0
- {codex_agent_framework-0.1.33/codex_agent_framework.egg-info → codex_agent_framework-0.1.35}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/agent.py +74 -36
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/plugin.py +1 -1
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/sessions.py +9 -8
- codex_agent_framework-0.1.35/codex_agent/version.py +1 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35/codex_agent_framework.egg-info}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/pyproject.toml +1 -1
- codex_agent_framework-0.1.33/codex_agent/version.py +0 -1
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/LICENSE +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/MANIFEST.in +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/README.md +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/__main__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/agent_runtime.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/ai.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/browser.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_commands.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/content/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/content/system.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/content/vision.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/context/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/files/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/files/tools.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/python/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/realtime/session.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/cli/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/cli/headless.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/cli/main.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/cli/output.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/cli/root.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/cli/runner.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/client.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/command.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/config.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/context.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/desktop.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/event.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/get_text/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/get_text/default_gitignore +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/get_text/get_text.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/get_text/simpler_get_text.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/hooks.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/image.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/latex.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/mainloop.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/message.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/prompts/system_prompt.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/provider.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/runtime.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/scheduler.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/scripts/install-system-dependencies.sh +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/server/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/server/app.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/server/core.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/service.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/status.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/stream.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/stream_utils.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/tool.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/tray.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/tui/__init__.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/tui/app.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/tui/chat.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/tui/lifecycle.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/tui/log.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/tui/state.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/tui/status_bar.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/tui/style.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/tui/transcript.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/utils.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/worker.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent_framework.egg-info/entry_points.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent_framework.egg-info/requires.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent_framework.egg-info/top_level.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/dependencies.txt +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/setup.cfg +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_audio_hooks.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_commands.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_context.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_desktop.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_environment.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_image_generation.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_observe.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_plugins.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_providers_config.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_realtime.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_response.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_runtime.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_sessions.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_subagents.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_tools.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_turns.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_ai.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_browser.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_builtin_config.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_chat.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_cli.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_cli_headless.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_cli_root.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_client.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_events.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_get_text_browser.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_hooks.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_image_message.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_local_desktop.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_memory.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_messages.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_planner.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_scheduler.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_server.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_service.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_tui.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_utils.py +0 -0
- {codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/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.35] - 2026-05-16
|
|
8
|
+
### Changed
|
|
9
|
+
- Normalize formatting in the `Agent` facade around initialization, message helpers, image helpers, and tool registration.
|
|
10
|
+
- Wrap long `Agent` facade lines for imports, interrupt events, working-directory resolution, and upload notifications.
|
|
11
|
+
|
|
12
|
+
### Tests
|
|
13
|
+
- Validate with targeted Agent/session/tool/environment/response coverage and the 553-test offline CI suite.
|
|
14
|
+
|
|
15
|
+
## [0.1.34] - 2026-05-16
|
|
16
|
+
### Changed
|
|
17
|
+
- Share the broken-session backup path used by session repair and truncation flows.
|
|
18
|
+
- Simplify plugin requirements lookup by removing redundant path branching.
|
|
19
|
+
|
|
20
|
+
### Tests
|
|
21
|
+
- Validate with session repair/context/response coverage, plugin tests, and the 553-test offline CI suite.
|
|
22
|
+
|
|
7
23
|
## [0.1.33] - 2026-05-16
|
|
8
24
|
### Changed
|
|
9
25
|
- Simplify plugin decorated-method accessors by sharing the handler pair construction path.
|
|
@@ -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,
|
|
@@ -498,7 +532,11 @@ class Agent:
|
|
|
498
532
|
dest_path = upload_file_to_folder(source, self.config.workfolder, name=name)
|
|
499
533
|
dest_filename = os.path.basename(dest_path)
|
|
500
534
|
|
|
501
|
-
self.add_message(
|
|
535
|
+
self.add_message(
|
|
536
|
+
DeveloperMessage(
|
|
537
|
+
content=f"File '{dest_filename}' has been uploaded to the workfolder at: {dest_path}"
|
|
538
|
+
)
|
|
539
|
+
)
|
|
502
540
|
|
|
503
541
|
return dest_path
|
|
504
542
|
|
|
@@ -262,7 +262,7 @@ class PluginsManager:
|
|
|
262
262
|
module_file = getattr(module, "__file__", None)
|
|
263
263
|
if not module_file:
|
|
264
264
|
return None
|
|
265
|
-
base = os.path.dirname(os.path.abspath(module_file))
|
|
265
|
+
base = os.path.dirname(os.path.abspath(module_file))
|
|
266
266
|
candidate = os.path.join(base, "requirements.txt")
|
|
267
267
|
return candidate if os.path.isfile(candidate) else None
|
|
268
268
|
|
|
@@ -352,6 +352,13 @@ class AgentSession(modict):
|
|
|
352
352
|
def save_api_success_backup(self):
|
|
353
353
|
return self.write_messages_file(self.api_success_backup_file)
|
|
354
354
|
|
|
355
|
+
def save_broken_backup(self):
|
|
356
|
+
if not os.path.isfile(self.session_file):
|
|
357
|
+
return ""
|
|
358
|
+
backup_file = f"{self.session_file}.broken_{timestamp()}"
|
|
359
|
+
shutil.copy2(self.session_file, backup_file)
|
|
360
|
+
return backup_file
|
|
361
|
+
|
|
355
362
|
def restore_api_success_backup(self):
|
|
356
363
|
if not os.path.isfile(self.api_success_backup_file):
|
|
357
364
|
return False
|
|
@@ -471,10 +478,7 @@ class AgentSession(modict):
|
|
|
471
478
|
if not removed and not added:
|
|
472
479
|
return modict(repaired=False, removed=0, added=0, backup_file="", issues=issues)
|
|
473
480
|
|
|
474
|
-
backup_file = ""
|
|
475
|
-
if backup and os.path.isfile(self.session_file):
|
|
476
|
-
backup_file = f"{self.session_file}.broken_{timestamp()}"
|
|
477
|
-
shutil.copy2(self.session_file, backup_file)
|
|
481
|
+
backup_file = self.save_broken_backup() if backup else ""
|
|
478
482
|
|
|
479
483
|
self.messages = kept
|
|
480
484
|
if save:
|
|
@@ -498,10 +502,7 @@ class AgentSession(modict):
|
|
|
498
502
|
if not removed:
|
|
499
503
|
return modict(repaired=False, removed=0, index=index, backup_file="")
|
|
500
504
|
|
|
501
|
-
backup_file = ""
|
|
502
|
-
if backup and os.path.isfile(self.session_file):
|
|
503
|
-
backup_file = f"{self.session_file}.broken_{timestamp()}"
|
|
504
|
-
shutil.copy2(self.session_file, backup_file)
|
|
505
|
+
backup_file = self.save_broken_backup() if backup else ""
|
|
505
506
|
|
|
506
507
|
self.messages = self.messages[:index]
|
|
507
508
|
if save:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.35"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.33"
|
|
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.33 → codex_agent_framework-0.1.35}/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.33 → codex_agent_framework-0.1.35}/codex_agent/get_text/__init__.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/codex_agent/get_text/default_gitignore
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/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.33 → codex_agent_framework-0.1.35}/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.33 → codex_agent_framework-0.1.35}/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
|
{codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_audio_hooks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_environment.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/tests/test_agent_image_generation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.33 → codex_agent_framework-0.1.35}/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.33 → codex_agent_framework-0.1.35}/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
|