codex-agent-framework 0.1.63__tar.gz → 0.1.64__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.63/codex_agent_framework.egg-info → codex_agent_framework-0.1.64}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/ai.py +2 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/client.py +2 -1
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/desktop.py +5 -12
- codex_agent_framework-0.1.64/codex_agent/version.py +1 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64/codex_agent_framework.egg-info}/PKG-INFO +1 -1
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/pyproject.toml +1 -1
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_ai.py +19 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_client.py +14 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_local_desktop.py +18 -0
- codex_agent_framework-0.1.63/codex_agent/version.py +0 -1
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/CHANGELOG.md +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/LICENSE +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/MANIFEST.in +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/README.md +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/__main__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/agent.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/agent_runtime.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/browser.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_commands.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/bash/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/bash/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/browser/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/browser/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/content/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/content/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/content/system.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/content/vision.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/context/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/desktop/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/desktop/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/environment/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/environment/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/files/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/files/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/files/tools.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/image_generation/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/image_generation/image_generation_system_prompt.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/image_generation/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/interface/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/interface/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/memory/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/memory/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/planner/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/planner/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/python/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/python/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/realtime/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/realtime/audio.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/realtime/bridge.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/realtime/manager.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/realtime/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/realtime/session.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/scheduler/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/scheduler/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/subagents/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/subagents/profiles/explorer.json +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/subagents/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/tts/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/tts/requirements.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/builtin_plugins/web_search/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/cli/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/cli/headless.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/cli/main.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/cli/output.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/cli/root.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/cli/runner.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/command.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/config.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/context.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/event.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/get_text/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/get_text/default_gitignore +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/get_text/get_text.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/get_text/simpler_get_text.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/hooks.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/image.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/latex.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/mainloop.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/message.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/plugin.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/prompts/compaction_prompt.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/prompts/system_prompt.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/provider.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/runtime.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/scheduler.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/scripts/install-system-dependencies.sh +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/server/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/server/app.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/server/core.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/service.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/sessions.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/status.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/stream.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/stream_utils.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/token_counter.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tool.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tray.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/__init__.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/app.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/chat.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/lifecycle.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/log.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/perf.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/state.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/status_bar.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/stream_debug.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/style.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/transcript.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/widgets.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/utils.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/worker.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent_framework.egg-info/SOURCES.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent_framework.egg-info/dependency_links.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent_framework.egg-info/entry_points.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent_framework.egg-info/requires.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent_framework.egg-info/top_level.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/dependencies.txt +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/setup.cfg +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_audio_hooks.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_commands.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_context.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_desktop.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_environment.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_image_generation.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_observe.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_plugins.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_providers_config.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_realtime.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_response.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_runtime.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_sessions.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_subagents.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_tools.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_turns.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_browser.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_builtin_config.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_chat.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_cli.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_cli_headless.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_cli_root.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_events.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_get_text_browser.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_hooks.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_image_message.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_memory.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_messages.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_planner.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_scheduler.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_server.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_service.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_token_counter.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_tui.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_utils.py +0 -0
- {codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_worker.py +0 -0
|
@@ -603,11 +603,13 @@ class AIClient:
|
|
|
603
603
|
return embeddings
|
|
604
604
|
|
|
605
605
|
def message_embedding_content(self, msg):
|
|
606
|
+
"""Return stripped text content suitable for embedding a message."""
|
|
606
607
|
if hasattr(msg, 'content') and isinstance(msg.content, str):
|
|
607
608
|
return msg.content.strip()
|
|
608
609
|
raise ValueError("Message must have text content")
|
|
609
610
|
|
|
610
611
|
def zero_embedding(self, dimensions=128):
|
|
612
|
+
"""Return a zero vector with the requested embedding dimensionality."""
|
|
611
613
|
return [0.0] * int(dimensions)
|
|
612
614
|
|
|
613
615
|
def similarity(self, emb1, emb2):
|
|
@@ -379,7 +379,8 @@ class AgentClient:
|
|
|
379
379
|
return self.get("/health")
|
|
380
380
|
|
|
381
381
|
def context_status(self):
|
|
382
|
-
|
|
382
|
+
"""Backward-compatible alias for the canonical server status endpoint."""
|
|
383
|
+
return self.get_status()
|
|
383
384
|
|
|
384
385
|
def get_status(self):
|
|
385
386
|
return self.get("/status")
|
|
@@ -175,7 +175,7 @@ class DesktopController:
|
|
|
175
175
|
continue
|
|
176
176
|
key, value = line.split("=", 1)
|
|
177
177
|
key = key.lower()
|
|
178
|
-
location[key] =
|
|
178
|
+
location[key] = _safe_int(value) if key in {"x", "y", "screen", "window"} else value
|
|
179
179
|
return location
|
|
180
180
|
|
|
181
181
|
def move_mouse(self, x: int, y: int) -> None:
|
|
@@ -297,10 +297,10 @@ class DesktopController:
|
|
|
297
297
|
id=parts[0],
|
|
298
298
|
desktop=parts[1],
|
|
299
299
|
pid=parts[2],
|
|
300
|
-
x=
|
|
301
|
-
y=
|
|
302
|
-
width=
|
|
303
|
-
height=
|
|
300
|
+
x=_safe_int(parts[3]),
|
|
301
|
+
y=_safe_int(parts[4]),
|
|
302
|
+
width=_safe_int(parts[5]),
|
|
303
|
+
height=_safe_int(parts[6]),
|
|
304
304
|
wm_class=parts[7],
|
|
305
305
|
title=title,
|
|
306
306
|
backend="wmctrl",
|
|
@@ -416,13 +416,6 @@ def get_desktop_controller() -> DesktopController:
|
|
|
416
416
|
return _desktop_controller
|
|
417
417
|
|
|
418
418
|
|
|
419
|
-
def _to_int(value: str) -> int | None:
|
|
420
|
-
try:
|
|
421
|
-
return int(value)
|
|
422
|
-
except (TypeError, ValueError):
|
|
423
|
-
return None
|
|
424
|
-
|
|
425
|
-
|
|
426
419
|
def _safe_int(value: Any) -> int | None:
|
|
427
420
|
try:
|
|
428
421
|
return None if value is None else int(value)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.64"
|
|
@@ -181,6 +181,25 @@ def test_embed_messages_skips_empty_content_without_api_error():
|
|
|
181
181
|
assert embeddings == [empty.embedding, blank.embedding, filled.embedding]
|
|
182
182
|
|
|
183
183
|
|
|
184
|
+
def test_message_embedding_content_strips_text_messages():
|
|
185
|
+
ai = AIClient(agent=None)
|
|
186
|
+
|
|
187
|
+
assert ai.message_embedding_content(DeveloperMessage(content=" hello ")) == "hello"
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def test_message_embedding_content_rejects_non_text_content():
|
|
191
|
+
ai = AIClient(agent=None)
|
|
192
|
+
|
|
193
|
+
with pytest.raises(ValueError, match="text content"):
|
|
194
|
+
ai.message_embedding_content(SystemMessage(content=[{"type": "input_text", "text": "hello"}]))
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def test_zero_embedding_returns_requested_dimension():
|
|
198
|
+
ai = AIClient(agent=None)
|
|
199
|
+
|
|
200
|
+
assert ai.zero_embedding(dimensions=3) == [0.0, 0.0, 0.0]
|
|
201
|
+
|
|
202
|
+
|
|
184
203
|
def test_embed_message_assigns_zero_embedding_for_empty_content():
|
|
185
204
|
ai = AIClient(agent=None)
|
|
186
205
|
ai._codex_client = FakeCodexClient()
|
|
@@ -151,6 +151,20 @@ def test_agent_client_http_error_payload_includes_status_and_detail():
|
|
|
151
151
|
assert payload.error == "an event client is already connected"
|
|
152
152
|
|
|
153
153
|
|
|
154
|
+
def test_agent_client_context_status_delegates_to_get_status(monkeypatch):
|
|
155
|
+
client = AgentClient(base_url="http://agent.local")
|
|
156
|
+
calls = []
|
|
157
|
+
|
|
158
|
+
def fake_get(path):
|
|
159
|
+
calls.append(path)
|
|
160
|
+
return {"ok": True}
|
|
161
|
+
|
|
162
|
+
monkeypatch.setattr(client, "get", fake_get)
|
|
163
|
+
|
|
164
|
+
assert client.context_status() == {"ok": True}
|
|
165
|
+
assert calls == ["/status"]
|
|
166
|
+
|
|
167
|
+
|
|
154
168
|
def test_agent_client_submit_prompt_posts_prompt(monkeypatch):
|
|
155
169
|
client = AgentClient(base_url="http://agent.local")
|
|
156
170
|
calls = []
|
|
@@ -34,6 +34,24 @@ def test_desktop_controller_wmctrl_parser(monkeypatch):
|
|
|
34
34
|
]
|
|
35
35
|
|
|
36
36
|
|
|
37
|
+
def test_desktop_controller_wmctrl_parser_keeps_invalid_geometry_as_none(monkeypatch):
|
|
38
|
+
controller = DesktopController()
|
|
39
|
+
|
|
40
|
+
monkeypatch.setattr(controller, "_list_windows_pywinctl", lambda: [])
|
|
41
|
+
monkeypatch.setattr("codex_agent.desktop.shutil.which", lambda name: name == "wmctrl")
|
|
42
|
+
|
|
43
|
+
class Result:
|
|
44
|
+
stdout = "0x01200007 0 1234 ? nope 800 bad app.Class host Example window\n"
|
|
45
|
+
|
|
46
|
+
monkeypatch.setattr(controller, "_run", lambda command: Result())
|
|
47
|
+
|
|
48
|
+
[window] = controller.list_windows()
|
|
49
|
+
assert window.x is None
|
|
50
|
+
assert window.y is None
|
|
51
|
+
assert window.width == 800
|
|
52
|
+
assert window.height is None
|
|
53
|
+
|
|
54
|
+
|
|
37
55
|
def test_desktop_controller_capture_screen_uses_mss_only(monkeypatch, tmp_path):
|
|
38
56
|
controller = DesktopController()
|
|
39
57
|
output = tmp_path / "screen.png"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.63"
|
|
File without changes
|
|
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.63 → codex_agent_framework-0.1.64}/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
|
{codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/get_text/__init__.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/get_text/default_gitignore
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/get_text/get_text.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/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.63 → codex_agent_framework-0.1.64}/codex_agent/server/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/codex_agent/tui/stream_debug.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_audio_hooks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_environment.py
RENAMED
|
File without changes
|
{codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_image_generation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/tests/test_agent_providers_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_agent_framework-0.1.63 → codex_agent_framework-0.1.64}/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
|