"""Kimi Code host-allowlist behavior (follow-up to provider support).

Kimi Code (https://api.kimi.com/coding/v1) is a subscription, OpenAI-compatible
cloud API with native tool-calling. These tests pin the three host-list integrations:
  - agent loop sends native tool schemas to Kimi Code (not fenced-block parsing),
  - teacher escalation treats Kimi Code as SOTA (loop OFF, no added latency).
"""
from src import agent_loop, teacher_escalation


class TestAgentToolHosts:
    def test_kimi_code_in_api_hosts(self):
        assert "api.kimi.com" in agent_loop._API_HOSTS

    def test_kimi_code_url_matches_api_host(self):
        url = "https://api.kimi.com/coding/v1/chat/completions"
        assert any(h in url for h in agent_loop._API_HOSTS)

    def test_unknown_host_not_matched(self):
        url = "https://example.invalid/v1/chat/completions"
        assert not any(h in url for h in agent_loop._API_HOSTS)


class TestTeacherEscalationSota:
    def test_kimi_code_is_sota_not_self_hosted(self):
        assert teacher_escalation.is_self_hosted("https://api.kimi.com/coding/v1/chat/completions") is False

    def test_known_cloud_still_sota(self):
        assert teacher_escalation.is_self_hosted("https://api.openai.com/v1") is False

    def test_local_endpoint_still_self_hosted(self):
        assert teacher_escalation.is_self_hosted("http://localhost:8000/v1") is True
