diff --git a/tests/test_anthropic_adapter.py b/tests/agent/test_anthropic_adapter.py similarity index 100% rename from tests/test_anthropic_adapter.py rename to tests/agent/test_anthropic_adapter.py diff --git a/tests/test_auxiliary_config_bridge.py b/tests/agent/test_auxiliary_config_bridge.py similarity index 98% rename from tests/test_auxiliary_config_bridge.py rename to tests/agent/test_auxiliary_config_bridge.py index 0151daf2a1..91dea15af6 100644 --- a/tests/test_auxiliary_config_bridge.py +++ b/tests/agent/test_auxiliary_config_bridge.py @@ -13,7 +13,7 @@ from unittest.mock import patch, MagicMock import pytest import yaml -sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..")) +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..")) def _run_auxiliary_bridge(config_dict, monkeypatch): @@ -199,7 +199,7 @@ class TestGatewayBridgeCodeParity: def test_gateway_has_auxiliary_bridge(self): """The gateway config bridge must include auxiliary.* bridging.""" - gateway_path = Path(__file__).parent.parent / "gateway" / "run.py" + gateway_path = Path(__file__).parent.parent.parent / "gateway" / "run.py" content = gateway_path.read_text() # Check for key patterns that indicate the bridge is present assert "AUXILIARY_VISION_PROVIDER" in content @@ -213,7 +213,7 @@ class TestGatewayBridgeCodeParity: def test_gateway_no_compression_env_bridge(self): """Gateway should NOT bridge compression config to env vars (config-only).""" - gateway_path = Path(__file__).parent.parent / "gateway" / "run.py" + gateway_path = Path(__file__).parent.parent.parent / "gateway" / "run.py" content = gateway_path.read_text() assert "CONTEXT_COMPRESSION_PROVIDER" not in content assert "CONTEXT_COMPRESSION_MODEL" not in content diff --git a/tests/test_context_references.py b/tests/agent/test_context_references.py similarity index 100% rename from tests/test_context_references.py rename to tests/agent/test_context_references.py diff --git a/tests/test_credential_pool.py b/tests/agent/test_credential_pool.py similarity index 100% rename from tests/test_credential_pool.py rename to tests/agent/test_credential_pool.py diff --git a/tests/test_credential_pool_routing.py b/tests/agent/test_credential_pool_routing.py similarity index 100% rename from tests/test_credential_pool_routing.py rename to tests/agent/test_credential_pool_routing.py diff --git a/tests/test_crossloop_client_cache.py b/tests/agent/test_crossloop_client_cache.py similarity index 100% rename from tests/test_crossloop_client_cache.py rename to tests/agent/test_crossloop_client_cache.py diff --git a/tests/test_display.py b/tests/agent/test_display.py similarity index 100% rename from tests/test_display.py rename to tests/agent/test_display.py diff --git a/tests/test_insights.py b/tests/agent/test_insights.py similarity index 100% rename from tests/test_insights.py rename to tests/agent/test_insights.py diff --git a/tests/test_model_metadata_local_ctx.py b/tests/agent/test_model_metadata_local_ctx.py similarity index 100% rename from tests/test_model_metadata_local_ctx.py rename to tests/agent/test_model_metadata_local_ctx.py diff --git a/tests/cli/__init__.py b/tests/cli/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/test_branch_command.py b/tests/cli/test_branch_command.py similarity index 100% rename from tests/test_branch_command.py rename to tests/cli/test_branch_command.py diff --git a/tests/test_cli_approval_ui.py b/tests/cli/test_cli_approval_ui.py similarity index 100% rename from tests/test_cli_approval_ui.py rename to tests/cli/test_cli_approval_ui.py diff --git a/tests/test_cli_background_tui_refresh.py b/tests/cli/test_cli_background_tui_refresh.py similarity index 100% rename from tests/test_cli_background_tui_refresh.py rename to tests/cli/test_cli_background_tui_refresh.py diff --git a/tests/test_cli_browser_connect.py b/tests/cli/test_cli_browser_connect.py similarity index 100% rename from tests/test_cli_browser_connect.py rename to tests/cli/test_cli_browser_connect.py diff --git a/tests/test_cli_context_warning.py b/tests/cli/test_cli_context_warning.py similarity index 100% rename from tests/test_cli_context_warning.py rename to tests/cli/test_cli_context_warning.py diff --git a/tests/test_cli_extension_hooks.py b/tests/cli/test_cli_extension_hooks.py similarity index 100% rename from tests/test_cli_extension_hooks.py rename to tests/cli/test_cli_extension_hooks.py diff --git a/tests/test_cli_file_drop.py b/tests/cli/test_cli_file_drop.py similarity index 100% rename from tests/test_cli_file_drop.py rename to tests/cli/test_cli_file_drop.py diff --git a/tests/test_cli_init.py b/tests/cli/test_cli_init.py similarity index 100% rename from tests/test_cli_init.py rename to tests/cli/test_cli_init.py diff --git a/tests/test_cli_interrupt_subagent.py b/tests/cli/test_cli_interrupt_subagent.py similarity index 100% rename from tests/test_cli_interrupt_subagent.py rename to tests/cli/test_cli_interrupt_subagent.py diff --git a/tests/test_cli_loading_indicator.py b/tests/cli/test_cli_loading_indicator.py similarity index 100% rename from tests/test_cli_loading_indicator.py rename to tests/cli/test_cli_loading_indicator.py diff --git a/tests/test_cli_mcp_config_watch.py b/tests/cli/test_cli_mcp_config_watch.py similarity index 100% rename from tests/test_cli_mcp_config_watch.py rename to tests/cli/test_cli_mcp_config_watch.py diff --git a/tests/test_cli_new_session.py b/tests/cli/test_cli_new_session.py similarity index 100% rename from tests/test_cli_new_session.py rename to tests/cli/test_cli_new_session.py diff --git a/tests/test_cli_plan_command.py b/tests/cli/test_cli_plan_command.py similarity index 100% rename from tests/test_cli_plan_command.py rename to tests/cli/test_cli_plan_command.py diff --git a/tests/test_cli_prefix_matching.py b/tests/cli/test_cli_prefix_matching.py similarity index 100% rename from tests/test_cli_prefix_matching.py rename to tests/cli/test_cli_prefix_matching.py diff --git a/tests/test_cli_preloaded_skills.py b/tests/cli/test_cli_preloaded_skills.py similarity index 100% rename from tests/test_cli_preloaded_skills.py rename to tests/cli/test_cli_preloaded_skills.py diff --git a/tests/test_cli_provider_resolution.py b/tests/cli/test_cli_provider_resolution.py similarity index 100% rename from tests/test_cli_provider_resolution.py rename to tests/cli/test_cli_provider_resolution.py diff --git a/tests/test_cli_retry.py b/tests/cli/test_cli_retry.py similarity index 96% rename from tests/test_cli_retry.py rename to tests/cli/test_cli_retry.py index 74e2512bfe..b287b45754 100644 --- a/tests/test_cli_retry.py +++ b/tests/cli/test_cli_retry.py @@ -1,6 +1,6 @@ """Regression tests for CLI /retry history replacement semantics.""" -from tests.test_cli_init import _make_cli +from tests.cli.test_cli_init import _make_cli def test_retry_last_truncates_history_before_requeueing_message(): diff --git a/tests/test_cli_save_config_value.py b/tests/cli/test_cli_save_config_value.py similarity index 100% rename from tests/test_cli_save_config_value.py rename to tests/cli/test_cli_save_config_value.py diff --git a/tests/test_cli_secret_capture.py b/tests/cli/test_cli_secret_capture.py similarity index 100% rename from tests/test_cli_secret_capture.py rename to tests/cli/test_cli_secret_capture.py diff --git a/tests/test_cli_skin_integration.py b/tests/cli/test_cli_skin_integration.py similarity index 100% rename from tests/test_cli_skin_integration.py rename to tests/cli/test_cli_skin_integration.py diff --git a/tests/test_cli_status_bar.py b/tests/cli/test_cli_status_bar.py similarity index 100% rename from tests/test_cli_status_bar.py rename to tests/cli/test_cli_status_bar.py diff --git a/tests/test_cli_tools_command.py b/tests/cli/test_cli_tools_command.py similarity index 100% rename from tests/test_cli_tools_command.py rename to tests/cli/test_cli_tools_command.py diff --git a/tests/test_personality_none.py b/tests/cli/test_personality_none.py similarity index 100% rename from tests/test_personality_none.py rename to tests/cli/test_personality_none.py diff --git a/tests/test_quick_commands.py b/tests/cli/test_quick_commands.py similarity index 100% rename from tests/test_quick_commands.py rename to tests/cli/test_quick_commands.py diff --git a/tests/test_reasoning_command.py b/tests/cli/test_reasoning_command.py similarity index 100% rename from tests/test_reasoning_command.py rename to tests/cli/test_reasoning_command.py diff --git a/tests/test_resume_display.py b/tests/cli/test_resume_display.py similarity index 100% rename from tests/test_resume_display.py rename to tests/cli/test_resume_display.py diff --git a/tests/test_surrogate_sanitization.py b/tests/cli/test_surrogate_sanitization.py similarity index 100% rename from tests/test_surrogate_sanitization.py rename to tests/cli/test_surrogate_sanitization.py diff --git a/tests/test_worktree.py b/tests/cli/test_worktree.py similarity index 100% rename from tests/test_worktree.py rename to tests/cli/test_worktree.py diff --git a/tests/test_worktree_security.py b/tests/cli/test_worktree_security.py similarity index 100% rename from tests/test_worktree_security.py rename to tests/cli/test_worktree_security.py diff --git a/tests/test_codex_execution_paths.py b/tests/cron/test_codex_execution_paths.py similarity index 100% rename from tests/test_codex_execution_paths.py rename to tests/cron/test_codex_execution_paths.py diff --git a/tests/test_file_permissions.py b/tests/cron/test_file_permissions.py similarity index 100% rename from tests/test_file_permissions.py rename to tests/cron/test_file_permissions.py diff --git a/tests/test_anthropic_oauth_flow.py b/tests/hermes_cli/test_anthropic_oauth_flow.py similarity index 100% rename from tests/test_anthropic_oauth_flow.py rename to tests/hermes_cli/test_anthropic_oauth_flow.py diff --git a/tests/test_anthropic_provider_persistence.py b/tests/hermes_cli/test_anthropic_provider_persistence.py similarity index 100% rename from tests/test_anthropic_provider_persistence.py rename to tests/hermes_cli/test_anthropic_provider_persistence.py diff --git a/tests/test_api_key_providers.py b/tests/hermes_cli/test_api_key_providers.py similarity index 100% rename from tests/test_api_key_providers.py rename to tests/hermes_cli/test_api_key_providers.py diff --git a/tests/test_atomic_json_write.py b/tests/hermes_cli/test_atomic_json_write.py similarity index 100% rename from tests/test_atomic_json_write.py rename to tests/hermes_cli/test_atomic_json_write.py diff --git a/tests/test_atomic_yaml_write.py b/tests/hermes_cli/test_atomic_yaml_write.py similarity index 100% rename from tests/test_atomic_yaml_write.py rename to tests/hermes_cli/test_atomic_yaml_write.py diff --git a/tests/test_auth_codex_provider.py b/tests/hermes_cli/test_auth_codex_provider.py similarity index 100% rename from tests/test_auth_codex_provider.py rename to tests/hermes_cli/test_auth_codex_provider.py diff --git a/tests/test_auth_commands.py b/tests/hermes_cli/test_auth_commands.py similarity index 100% rename from tests/test_auth_commands.py rename to tests/hermes_cli/test_auth_commands.py diff --git a/tests/test_auth_nous_provider.py b/tests/hermes_cli/test_auth_nous_provider.py similarity index 100% rename from tests/test_auth_nous_provider.py rename to tests/hermes_cli/test_auth_nous_provider.py diff --git a/tests/test_codex_models.py b/tests/hermes_cli/test_codex_models.py similarity index 100% rename from tests/test_codex_models.py rename to tests/hermes_cli/test_codex_models.py diff --git a/tests/test_config_env_expansion.py b/tests/hermes_cli/test_config_env_expansion.py similarity index 100% rename from tests/test_config_env_expansion.py rename to tests/hermes_cli/test_config_env_expansion.py diff --git a/tests/test_external_credential_detection.py b/tests/hermes_cli/test_external_credential_detection.py similarity index 100% rename from tests/test_external_credential_detection.py rename to tests/hermes_cli/test_external_credential_detection.py diff --git a/tests/test_gemini_provider.py b/tests/hermes_cli/test_gemini_provider.py similarity index 100% rename from tests/test_gemini_provider.py rename to tests/hermes_cli/test_gemini_provider.py diff --git a/tests/test_model_normalize.py b/tests/hermes_cli/test_model_normalize.py similarity index 100% rename from tests/test_model_normalize.py rename to tests/hermes_cli/test_model_normalize.py diff --git a/tests/test_model_provider_persistence.py b/tests/hermes_cli/test_model_provider_persistence.py similarity index 100% rename from tests/test_model_provider_persistence.py rename to tests/hermes_cli/test_model_provider_persistence.py diff --git a/tests/test_ollama_cloud_auth.py b/tests/hermes_cli/test_ollama_cloud_auth.py similarity index 100% rename from tests/test_ollama_cloud_auth.py rename to tests/hermes_cli/test_ollama_cloud_auth.py diff --git a/tests/test_plugin_cli_registration.py b/tests/hermes_cli/test_plugin_cli_registration.py similarity index 100% rename from tests/test_plugin_cli_registration.py rename to tests/hermes_cli/test_plugin_cli_registration.py diff --git a/tests/test_plugins.py b/tests/hermes_cli/test_plugins.py similarity index 100% rename from tests/test_plugins.py rename to tests/hermes_cli/test_plugins.py diff --git a/tests/test_plugins_cmd.py b/tests/hermes_cli/test_plugins_cmd.py similarity index 100% rename from tests/test_plugins_cmd.py rename to tests/hermes_cli/test_plugins_cmd.py diff --git a/tests/test_runtime_provider_resolution.py b/tests/hermes_cli/test_runtime_provider_resolution.py similarity index 100% rename from tests/test_runtime_provider_resolution.py rename to tests/hermes_cli/test_runtime_provider_resolution.py diff --git a/tests/test_setup_model_selection.py b/tests/hermes_cli/test_setup_model_selection.py similarity index 100% rename from tests/test_setup_model_selection.py rename to tests/hermes_cli/test_setup_model_selection.py diff --git a/tests/run_agent/__init__.py b/tests/run_agent/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/test_1630_context_overflow_loop.py b/tests/run_agent/test_1630_context_overflow_loop.py similarity index 100% rename from tests/test_1630_context_overflow_loop.py rename to tests/run_agent/test_1630_context_overflow_loop.py diff --git a/tests/test_413_compression.py b/tests/run_agent/test_413_compression.py similarity index 100% rename from tests/test_413_compression.py rename to tests/run_agent/test_413_compression.py diff --git a/tests/test_860_dedup.py b/tests/run_agent/test_860_dedup.py similarity index 100% rename from tests/test_860_dedup.py rename to tests/run_agent/test_860_dedup.py diff --git a/tests/test_agent_guardrails.py b/tests/run_agent/test_agent_guardrails.py similarity index 100% rename from tests/test_agent_guardrails.py rename to tests/run_agent/test_agent_guardrails.py diff --git a/tests/test_agent_loop.py b/tests/run_agent/test_agent_loop.py similarity index 99% rename from tests/test_agent_loop.py rename to tests/run_agent/test_agent_loop.py index b95ff7808c..bd9e41b91e 100644 --- a/tests/test_agent_loop.py +++ b/tests/run_agent/test_agent_loop.py @@ -16,7 +16,7 @@ from unittest.mock import MagicMock import pytest # Ensure repo root is importable -sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) +sys.path.insert(0, str(Path(__file__).resolve().parent.parent.parent)) try: from environments.agent_loop import ( diff --git a/tests/test_agent_loop_tool_calling.py b/tests/run_agent/test_agent_loop_tool_calling.py similarity index 99% rename from tests/test_agent_loop_tool_calling.py rename to tests/run_agent/test_agent_loop_tool_calling.py index 74e67c0beb..3b8d6ac598 100644 --- a/tests/test_agent_loop_tool_calling.py +++ b/tests/run_agent/test_agent_loop_tool_calling.py @@ -31,7 +31,7 @@ import pytest # pytestmark removed — tests skip gracefully via OPENROUTER_API_KEY check on line 59 # Ensure repo root is importable -_repo_root = Path(__file__).resolve().parent.parent +_repo_root = Path(__file__).resolve().parent.parent.parent if str(_repo_root) not in sys.path: sys.path.insert(0, str(_repo_root)) diff --git a/tests/test_agent_loop_vllm.py b/tests/run_agent/test_agent_loop_vllm.py similarity index 99% rename from tests/test_agent_loop_vllm.py rename to tests/run_agent/test_agent_loop_vllm.py index d47478ecbb..d428490941 100644 --- a/tests/test_agent_loop_vllm.py +++ b/tests/run_agent/test_agent_loop_vllm.py @@ -30,7 +30,7 @@ import pytest import requests # Ensure repo root is importable -_repo_root = Path(__file__).resolve().parent.parent +_repo_root = Path(__file__).resolve().parent.parent.parent if str(_repo_root) not in sys.path: sys.path.insert(0, str(_repo_root)) diff --git a/tests/test_anthropic_error_handling.py b/tests/run_agent/test_anthropic_error_handling.py similarity index 100% rename from tests/test_anthropic_error_handling.py rename to tests/run_agent/test_anthropic_error_handling.py diff --git a/tests/test_async_httpx_del_neuter.py b/tests/run_agent/test_async_httpx_del_neuter.py similarity index 100% rename from tests/test_async_httpx_del_neuter.py rename to tests/run_agent/test_async_httpx_del_neuter.py diff --git a/tests/test_compression_boundary.py b/tests/run_agent/test_compression_boundary.py similarity index 100% rename from tests/test_compression_boundary.py rename to tests/run_agent/test_compression_boundary.py diff --git a/tests/test_compression_persistence.py b/tests/run_agent/test_compression_persistence.py similarity index 100% rename from tests/test_compression_persistence.py rename to tests/run_agent/test_compression_persistence.py diff --git a/tests/test_compressor_fallback_update.py b/tests/run_agent/test_compressor_fallback_update.py similarity index 100% rename from tests/test_compressor_fallback_update.py rename to tests/run_agent/test_compressor_fallback_update.py diff --git a/tests/test_context_pressure.py b/tests/run_agent/test_context_pressure.py similarity index 100% rename from tests/test_context_pressure.py rename to tests/run_agent/test_context_pressure.py diff --git a/tests/test_context_token_tracking.py b/tests/run_agent/test_context_token_tracking.py similarity index 100% rename from tests/test_context_token_tracking.py rename to tests/run_agent/test_context_token_tracking.py diff --git a/tests/test_dict_tool_call_args.py b/tests/run_agent/test_dict_tool_call_args.py similarity index 100% rename from tests/test_dict_tool_call_args.py rename to tests/run_agent/test_dict_tool_call_args.py diff --git a/tests/test_exit_cleanup_interrupt.py b/tests/run_agent/test_exit_cleanup_interrupt.py similarity index 100% rename from tests/test_exit_cleanup_interrupt.py rename to tests/run_agent/test_exit_cleanup_interrupt.py diff --git a/tests/test_fallback_model.py b/tests/run_agent/test_fallback_model.py similarity index 100% rename from tests/test_fallback_model.py rename to tests/run_agent/test_fallback_model.py diff --git a/tests/test_flush_memories_codex.py b/tests/run_agent/test_flush_memories_codex.py similarity index 100% rename from tests/test_flush_memories_codex.py rename to tests/run_agent/test_flush_memories_codex.py diff --git a/tests/test_interactive_interrupt.py b/tests/run_agent/test_interactive_interrupt.py similarity index 98% rename from tests/test_interactive_interrupt.py rename to tests/run_agent/test_interactive_interrupt.py index 8c0d328c24..762621f220 100644 --- a/tests/test_interactive_interrupt.py +++ b/tests/run_agent/test_interactive_interrupt.py @@ -23,7 +23,7 @@ logging.basicConfig(level=logging.DEBUG, stream=sys.stderr, format="%(asctime)s [%(threadName)s] %(message)s") log = logging.getLogger("interrupt_test") -sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) from unittest.mock import MagicMock, patch from run_agent import AIAgent, IterationBudget diff --git a/tests/test_interrupt_propagation.py b/tests/run_agent/test_interrupt_propagation.py similarity index 100% rename from tests/test_interrupt_propagation.py rename to tests/run_agent/test_interrupt_propagation.py diff --git a/tests/test_large_tool_result.py b/tests/run_agent/test_large_tool_result.py similarity index 100% rename from tests/test_large_tool_result.py rename to tests/run_agent/test_large_tool_result.py diff --git a/tests/test_long_context_tier_429.py b/tests/run_agent/test_long_context_tier_429.py similarity index 100% rename from tests/test_long_context_tier_429.py rename to tests/run_agent/test_long_context_tier_429.py diff --git a/tests/test_openai_client_lifecycle.py b/tests/run_agent/test_openai_client_lifecycle.py similarity index 100% rename from tests/test_openai_client_lifecycle.py rename to tests/run_agent/test_openai_client_lifecycle.py diff --git a/tests/test_percentage_clamp.py b/tests/run_agent/test_percentage_clamp.py similarity index 98% rename from tests/test_percentage_clamp.py rename to tests/run_agent/test_percentage_clamp.py index 67d1191494..fcf1e39e54 100644 --- a/tests/test_percentage_clamp.py +++ b/tests/run_agent/test_percentage_clamp.py @@ -122,7 +122,7 @@ class TestSourceLinesAreClamped: @staticmethod def _read_file(rel_path: str) -> str: import os - base = os.path.dirname(os.path.dirname(__file__)) + base = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) with open(os.path.join(base, rel_path)) as f: return f.read() diff --git a/tests/test_primary_runtime_restore.py b/tests/run_agent/test_primary_runtime_restore.py similarity index 100% rename from tests/test_primary_runtime_restore.py rename to tests/run_agent/test_primary_runtime_restore.py diff --git a/tests/test_provider_fallback.py b/tests/run_agent/test_provider_fallback.py similarity index 100% rename from tests/test_provider_fallback.py rename to tests/run_agent/test_provider_fallback.py diff --git a/tests/test_provider_parity.py b/tests/run_agent/test_provider_parity.py similarity index 100% rename from tests/test_provider_parity.py rename to tests/run_agent/test_provider_parity.py diff --git a/tests/test_real_interrupt_subagent.py b/tests/run_agent/test_real_interrupt_subagent.py similarity index 100% rename from tests/test_real_interrupt_subagent.py rename to tests/run_agent/test_real_interrupt_subagent.py diff --git a/tests/test_redirect_stdout_issue.py b/tests/run_agent/test_redirect_stdout_issue.py similarity index 100% rename from tests/test_redirect_stdout_issue.py rename to tests/run_agent/test_redirect_stdout_issue.py diff --git a/tests/test_run_agent.py b/tests/run_agent/test_run_agent.py similarity index 100% rename from tests/test_run_agent.py rename to tests/run_agent/test_run_agent.py diff --git a/tests/test_run_agent_codex_responses.py b/tests/run_agent/test_run_agent_codex_responses.py similarity index 100% rename from tests/test_run_agent_codex_responses.py rename to tests/run_agent/test_run_agent_codex_responses.py diff --git a/tests/test_session_meta_filtering.py b/tests/run_agent/test_session_meta_filtering.py similarity index 100% rename from tests/test_session_meta_filtering.py rename to tests/run_agent/test_session_meta_filtering.py diff --git a/tests/test_session_reset_fix.py b/tests/run_agent/test_session_reset_fix.py similarity index 98% rename from tests/test_session_reset_fix.py rename to tests/run_agent/test_session_reset_fix.py index ee65ed90d1..1fd1223ced 100644 --- a/tests/test_session_reset_fix.py +++ b/tests/run_agent/test_session_reset_fix.py @@ -13,7 +13,7 @@ from pathlib import Path import pytest # Ensure repo root is importable -sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) +sys.path.insert(0, str(Path(__file__).resolve().parent.parent.parent)) # Stub out optional heavy dependencies not installed in the test environment sys.modules.setdefault("fire", types.SimpleNamespace(Fire=lambda *a, **k: None)) diff --git a/tests/test_streaming.py b/tests/run_agent/test_streaming.py similarity index 100% rename from tests/test_streaming.py rename to tests/run_agent/test_streaming.py diff --git a/tests/test_strict_api_validation.py b/tests/run_agent/test_strict_api_validation.py similarity index 100% rename from tests/test_strict_api_validation.py rename to tests/run_agent/test_strict_api_validation.py diff --git a/tests/test_token_persistence_non_cli.py b/tests/run_agent/test_token_persistence_non_cli.py similarity index 100% rename from tests/test_token_persistence_non_cli.py rename to tests/run_agent/test_token_persistence_non_cli.py diff --git a/tests/test_tool_arg_coercion.py b/tests/run_agent/test_tool_arg_coercion.py similarity index 100% rename from tests/test_tool_arg_coercion.py rename to tests/run_agent/test_tool_arg_coercion.py diff --git a/tests/test_managed_server_tool_support.py b/tests/tools/test_managed_server_tool_support.py similarity index 100% rename from tests/test_managed_server_tool_support.py rename to tests/tools/test_managed_server_tool_support.py diff --git a/tests/test_tool_call_parsers.py b/tests/tools/test_tool_call_parsers.py similarity index 100% rename from tests/test_tool_call_parsers.py rename to tests/tools/test_tool_call_parsers.py