from agent.core.runner import AgentRunner, RunConfig from agent.orchestration.models import CompletionPolicy from agent.trace.models import Trace def test_run_config_defaults_to_legacy_auto(): assert RunConfig().completion_policy == CompletionPolicy.LEGACY_AUTO def test_old_trace_without_agent_role_reads_as_legacy(): original = Trace(trace_id="old", mode="agent").to_dict() original.pop("agent_role") trace = Trace.from_dict(original) assert trace.agent_role == "legacy" def test_legacy_schema_keeps_agent_evaluate_goal_but_hides_explicit_tools(): runner = AgentRunner(llm_call=lambda **_: None) schemas = runner._get_run_tool_schemas(RunConfig(tool_groups=["core"])) names = {schema["function"]["name"] for schema in schemas} assert {"agent", "evaluate", "goal"}.issubset(names) assert names.isdisjoint({ "task_plan", "dispatch_tasks", "task_decide", "validate_attempt", "submit_attempt", "submit_validation", }) def test_legacy_tools_and_groups_keep_union_semantics(): runner = AgentRunner(llm_call=lambda **_: None) schemas = runner._get_tool_schemas(tools=["read_file"], tool_groups=["core"]) names = {schema["function"]["name"] for schema in schemas} assert "read_file" in names assert "agent" in names