from src.agent_loop import _tool_routing_audit_payload def test_tool_routing_audit_preserves_each_stage_and_gap(): payload = _tool_routing_audit_payload( round_num=2, retrieved_tools={"read_file", "write_file", "private_browser"}, selected_tools={"read_file", "write_file", "private_browser"}, declared_tools=set(), excluded_tools={"update_plan"}, offered_tools=["write_file", "read_file"], prompt_tokens=1234, transport="native_schema", system_prompt_chars=2400, tool_schema_chars=3600, ) assert payload["retrieved_tools"] == ["private_browser", "read_file", "write_file"] assert payload["selected_tools"] == ["private_browser", "read_file", "write_file"] assert payload["offered_tools"] == ["read_file", "write_file"] assert payload["intentionally_excluded_tools"] == ["update_plan"] assert payload["selected_not_offered"] == ["private_browser"] assert payload["prompt_tokens_estimate"] == 1234 assert payload["transport"] == "native_schema" assert payload["system_prompt_chars"] == 2400 assert payload["tool_schema_chars"] == 3600 def test_tool_routing_audit_distinguishes_unknown_retrieval_from_empty(): payload = _tool_routing_audit_payload( round_num=1, retrieved_tools=None, selected_tools=set(), declared_tools=set(), offered_tools=[], ) assert payload["retrieved_tools"] is None assert payload["selected_tools"] == [] assert payload["selected_not_offered"] == [] assert payload["prompt_tokens_estimate"] is None assert payload["system_prompt_chars"] is None assert payload["tool_schema_chars"] is None assert payload["transport"] == "unknown" def test_tool_routing_audit_does_not_report_policy_exclusions_as_gaps(): payload = _tool_routing_audit_payload( round_num=1, retrieved_tools={"read_file", "update_plan"}, selected_tools={"read_file", "update_plan"}, offered_tools=["read_file"], excluded_tools={"update_plan"}, ) assert payload["selected_not_offered"] == [] def test_tool_routing_audit_marks_intentionally_tool_free_final_round(): payload = _tool_routing_audit_payload( round_num=10, retrieved_tools={"inspect_media", "read_file"}, selected_tools={"inspect_media", "read_file"}, offered_tools=[], transport="none", offering_suppressed_reason="forced_final_answer", ) assert payload["selected_tools"] == ["inspect_media", "read_file"] assert payload["offered_tools"] == [] assert payload["selected_not_offered"] == [] assert payload["offering_suppressed_reason"] == "forced_final_answer" def test_tool_routing_audit_does_not_report_schema_gaps_for_textual_transport(): payload = _tool_routing_audit_payload( round_num=2, retrieved_tools={"bash", "python", "write_file"}, selected_tools={"bash", "python", "write_file"}, offered_tools=[], transport="textual", offering_suppressed_reason="textual_tool_transport", ) assert payload["selected_not_offered"] == [] assert payload["offering_suppressed_reason"] == "textual_tool_transport" def test_local_media_artifact_compaction_identifies_web_as_intentional_exclusion(): from src import agent_loop as al selected = { "inspect_media", "private_browser", "read_file", "write_file", "web_search", "web_fetch", } allowed = al._compact_native_artifact_tools( selected, text=( "Inspect /workspace/fixtures/source.png and create " "/workspace/output.html" ), artifacts=["/workspace/output.html"], media_inputs=["/workspace/fixtures/source.png"], ) payload = _tool_routing_audit_payload( round_num=1, retrieved_tools=selected, selected_tools=selected, offered_tools=sorted(allowed), excluded_tools=selected - allowed, ) assert payload["selected_not_offered"] == [] assert {"web_search", "web_fetch"} <= set( payload["intentionally_excluded_tools"] )