codex-agent-framework 0.1.38__tar.gz → 0.1.40__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.38 → codex_agent_framework-0.1.40}/CHANGELOG.md +16 -0
- {codex_agent_framework-0.1.38/codex_agent_framework.egg-info → codex_agent_framework-0.1.40}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/plugin.py +24 -5
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/tool.py +49 -14
- codex_agent_framework-0.1.40/codex_agent/version.py +1 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40/codex_agent_framework.egg-info}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/pyproject.toml +1 -1
- codex_agent_framework-0.1.38/codex_agent/version.py +0 -1
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/LICENSE +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/MANIFEST.in +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/README.md +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/__main__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/agent.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/agent_runtime.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/ai.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/browser.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_commands.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/content/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/content/system.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/content/vision.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/context/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/files/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/files/tools.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/python/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/realtime/session.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/cli/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/cli/headless.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/cli/main.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/cli/output.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/cli/root.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/cli/runner.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/client.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/command.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/config.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/context.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/desktop.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/event.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/get_text/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/get_text/default_gitignore +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/get_text/get_text.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/get_text/simpler_get_text.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/hooks.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/image.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/latex.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/mainloop.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/message.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/prompts/system_prompt.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/provider.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/runtime.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/scheduler.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/scripts/install-system-dependencies.sh +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/server/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/server/app.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/server/core.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/service.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/sessions.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/status.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/stream.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/stream_utils.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/tray.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/tui/__init__.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/tui/app.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/tui/chat.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/tui/lifecycle.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/tui/log.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/tui/state.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/tui/status_bar.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/tui/style.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/tui/transcript.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/utils.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/worker.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent_framework.egg-info/entry_points.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent_framework.egg-info/requires.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent_framework.egg-info/top_level.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/dependencies.txt +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/setup.cfg +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_audio_hooks.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_commands.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_context.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_desktop.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_environment.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_image_generation.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_observe.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_plugins.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_providers_config.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_realtime.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_response.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_runtime.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_sessions.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_subagents.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_tools.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_turns.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_ai.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_browser.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_builtin_config.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_chat.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_cli.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_cli_headless.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_cli_root.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_client.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_events.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_get_text_browser.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_hooks.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_image_message.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_local_desktop.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_memory.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_messages.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_planner.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_scheduler.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_server.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_service.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_tui.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_utils.py +0 -0
- {codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/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.40] - 2026-05-16
|
|
8
|
+
### Changed
|
|
9
|
+
- Share decorated-plugin option lookup across event handlers, hooks, and stream processors.
|
|
10
|
+
- Reflow plugin load/unload runtime-state events for readability.
|
|
11
|
+
|
|
12
|
+
### Tests
|
|
13
|
+
- Validate with plugin coverage and the 553-test offline CI suite.
|
|
14
|
+
|
|
15
|
+
## [0.1.39] - 2026-05-16
|
|
16
|
+
### Changed
|
|
17
|
+
- Reflow `Tool` and `ToolsManager` helper signatures and runtime-state events for readability.
|
|
18
|
+
- Shorten parsed-tool developer-message documentation while preserving the generated schema output.
|
|
19
|
+
|
|
20
|
+
### Tests
|
|
21
|
+
- Validate with targeted tool, plugin, Agent, hook, and event coverage plus the 553-test offline CI suite.
|
|
22
|
+
|
|
7
23
|
## [0.1.38] - 2026-05-16
|
|
8
24
|
### Changed
|
|
9
25
|
- Clarify development checks around the explicit offline/headless CI subset, broader local pytest sweeps, and live/local-heavy test placement.
|
|
@@ -30,8 +30,13 @@ def event_handler(event):
|
|
|
30
30
|
return decorator
|
|
31
31
|
|
|
32
32
|
|
|
33
|
+
def _decorated_option(func, attr):
|
|
34
|
+
bound_func = getattr(func, "__func__", None)
|
|
35
|
+
return getattr(func, attr, getattr(bound_func, attr, None))
|
|
36
|
+
|
|
37
|
+
|
|
33
38
|
def event_handler_options(func):
|
|
34
|
-
return
|
|
39
|
+
return _decorated_option(func, "_codex_event_handler")
|
|
35
40
|
|
|
36
41
|
|
|
37
42
|
def hook_handler(name):
|
|
@@ -46,7 +51,7 @@ def hook_handler(name):
|
|
|
46
51
|
|
|
47
52
|
|
|
48
53
|
def hook_handler_options(func):
|
|
49
|
-
return
|
|
54
|
+
return _decorated_option(func, "_codex_hook_handler")
|
|
50
55
|
|
|
51
56
|
|
|
52
57
|
def stream_processor(key):
|
|
@@ -61,7 +66,7 @@ def stream_processor(key):
|
|
|
61
66
|
|
|
62
67
|
|
|
63
68
|
def stream_processor_options(func):
|
|
64
|
-
return
|
|
69
|
+
return _decorated_option(func, "_codex_stream_processor")
|
|
65
70
|
|
|
66
71
|
|
|
67
72
|
class Plugin:
|
|
@@ -473,7 +478,14 @@ class PluginsManager:
|
|
|
473
478
|
self.plugins[plugin_name] = plugin
|
|
474
479
|
plugin.apply_config_defaults()
|
|
475
480
|
self.add_plugin_members(plugin)
|
|
476
|
-
self.agent.emit(
|
|
481
|
+
self.agent.emit(
|
|
482
|
+
RuntimeStateChangedEvent,
|
|
483
|
+
reason="plugin_loaded",
|
|
484
|
+
namespace="plugins",
|
|
485
|
+
name=plugin_name,
|
|
486
|
+
owner=plugin_name,
|
|
487
|
+
details=plugin,
|
|
488
|
+
)
|
|
477
489
|
return plugin
|
|
478
490
|
|
|
479
491
|
def remove_plugin_members(self, plugin_or_name):
|
|
@@ -495,7 +507,14 @@ class PluginsManager:
|
|
|
495
507
|
plugin.stop(timeout=timeout)
|
|
496
508
|
removed = self.remove_plugin_members(plugin_name)
|
|
497
509
|
self.plugins.pop(plugin_name, None)
|
|
498
|
-
self.agent.emit(
|
|
510
|
+
self.agent.emit(
|
|
511
|
+
RuntimeStateChangedEvent,
|
|
512
|
+
reason="plugin_unloaded",
|
|
513
|
+
namespace="plugins",
|
|
514
|
+
name=plugin_name,
|
|
515
|
+
owner=plugin_name,
|
|
516
|
+
details=removed,
|
|
517
|
+
)
|
|
499
518
|
return modict(plugin=plugin, removed=removed)
|
|
500
519
|
|
|
501
520
|
def reload_plugin(self, plugin_or_name, timeout=None):
|
|
@@ -117,14 +117,14 @@ class Tool(modict):
|
|
|
117
117
|
tool.type = 'tool'
|
|
118
118
|
return tool
|
|
119
119
|
|
|
120
|
-
def __call__(self
|
|
120
|
+
def __call__(self, *args, **kwargs):
|
|
121
121
|
obj = self.get_attr("obj", None)
|
|
122
122
|
if obj is None:
|
|
123
123
|
raise TypeError(f"Tool {self.name!r} has no bound callable")
|
|
124
124
|
agent = self.get_attr("agent", None)
|
|
125
125
|
token = set_current_agent(agent) if agent is not None and _current_agent.get() is None else None
|
|
126
126
|
try:
|
|
127
|
-
return obj(*args
|
|
127
|
+
return obj(*args, **kwargs)
|
|
128
128
|
finally:
|
|
129
129
|
if token is not None:
|
|
130
130
|
reset_current_agent(token)
|
|
@@ -253,13 +253,9 @@ class Tool(modict):
|
|
|
253
253
|
return tool
|
|
254
254
|
|
|
255
255
|
def to_developer_message(self):
|
|
256
|
-
"""
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
Returns:
|
|
260
|
-
Message: Developer message containing the tool's schema.
|
|
261
|
-
"""
|
|
262
|
-
return DeveloperMessage(content=f"Tool: {self.name}\nSchema:\n{json.dumps(self.to_response_tool(), indent=2, ensure_ascii=False)}")
|
|
256
|
+
"""Convert this tool into a developer message for parsed-tool guidance."""
|
|
257
|
+
schema = json.dumps(self.to_response_tool(), indent=2, ensure_ascii=False)
|
|
258
|
+
return DeveloperMessage(content=f"Tool: {self.name}\nSchema:\n{schema}")
|
|
263
259
|
|
|
264
260
|
|
|
265
261
|
class ToolsManager:
|
|
@@ -292,7 +288,18 @@ class ToolsManager:
|
|
|
292
288
|
options.name = name
|
|
293
289
|
self.add(obj, canonical_name=canonical_name, owner=owner, **options)
|
|
294
290
|
|
|
295
|
-
def add(
|
|
291
|
+
def add(
|
|
292
|
+
self,
|
|
293
|
+
func=None,
|
|
294
|
+
name=None,
|
|
295
|
+
description=None,
|
|
296
|
+
parameters=None,
|
|
297
|
+
required=None,
|
|
298
|
+
tool_type=None,
|
|
299
|
+
format=None,
|
|
300
|
+
canonical_name=None,
|
|
301
|
+
owner=None,
|
|
302
|
+
):
|
|
296
303
|
if func is None:
|
|
297
304
|
def decorator(f):
|
|
298
305
|
return self.add(
|
|
@@ -321,7 +328,15 @@ class ToolsManager:
|
|
|
321
328
|
owner=owner,
|
|
322
329
|
).wait().result
|
|
323
330
|
|
|
324
|
-
tool = Tool.from_callable(
|
|
331
|
+
tool = Tool.from_callable(
|
|
332
|
+
func,
|
|
333
|
+
name,
|
|
334
|
+
description,
|
|
335
|
+
parameters,
|
|
336
|
+
required,
|
|
337
|
+
tool_type=tool_type,
|
|
338
|
+
format=format,
|
|
339
|
+
)
|
|
325
340
|
tool.set_attr("agent", self.agent)
|
|
326
341
|
if canonical_name:
|
|
327
342
|
tool.set_attr("canonical_name", canonical_name)
|
|
@@ -330,7 +345,14 @@ class ToolsManager:
|
|
|
330
345
|
self.owners[tool.name] = owner
|
|
331
346
|
else:
|
|
332
347
|
self.owners.pop(tool.name, None)
|
|
333
|
-
self.agent.emit(
|
|
348
|
+
self.agent.emit(
|
|
349
|
+
RuntimeStateChangedEvent,
|
|
350
|
+
reason="tool_added",
|
|
351
|
+
namespace="tools",
|
|
352
|
+
name=tool.name,
|
|
353
|
+
owner=owner or "",
|
|
354
|
+
details=tool,
|
|
355
|
+
)
|
|
334
356
|
return func
|
|
335
357
|
|
|
336
358
|
def exclude_tool_specs(self):
|
|
@@ -380,7 +402,14 @@ class ToolsManager:
|
|
|
380
402
|
self.owners[tool.type] = owner
|
|
381
403
|
else:
|
|
382
404
|
self.owners.pop(tool.type, None)
|
|
383
|
-
self.agent.emit(
|
|
405
|
+
self.agent.emit(
|
|
406
|
+
RuntimeStateChangedEvent,
|
|
407
|
+
reason="tool_added",
|
|
408
|
+
namespace="tools",
|
|
409
|
+
name=tool.type,
|
|
410
|
+
owner=owner or "",
|
|
411
|
+
details=tool,
|
|
412
|
+
)
|
|
384
413
|
return tool
|
|
385
414
|
|
|
386
415
|
def remove_by_owner(self, owner):
|
|
@@ -390,7 +419,13 @@ class ToolsManager:
|
|
|
390
419
|
removed[name] = self.tools.pop(name, None)
|
|
391
420
|
self.owners.pop(name, None)
|
|
392
421
|
if removed:
|
|
393
|
-
self.agent.emit(
|
|
422
|
+
self.agent.emit(
|
|
423
|
+
RuntimeStateChangedEvent,
|
|
424
|
+
reason="tools_removed",
|
|
425
|
+
namespace="tools",
|
|
426
|
+
owner=owner or "",
|
|
427
|
+
details=removed,
|
|
428
|
+
)
|
|
394
429
|
return removed
|
|
395
430
|
|
|
396
431
|
def get_server_tools(self):
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.40"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.38"
|
|
File without changes
|
|
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.38 → codex_agent_framework-0.1.40}/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.38 → codex_agent_framework-0.1.40}/codex_agent/get_text/__init__.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/codex_agent/get_text/default_gitignore
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/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.38 → codex_agent_framework-0.1.40}/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.38 → codex_agent_framework-0.1.40}/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.38 → codex_agent_framework-0.1.40}/tests/test_agent_audio_hooks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_environment.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/tests/test_agent_image_generation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.38 → codex_agent_framework-0.1.40}/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.38 → codex_agent_framework-0.1.40}/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
|