# retoor from devplacepy.database import get_setting, set_setting from devplacepy.services.devii.config import FIELD_AGENTS_ENABLED from devplacepy.services.devii.registry import CATALOG from devplacepy.services.manager import service_manager from devplacepy.services.devii import DeviiService def _hub(): if service_manager.get_service("devii") is None: service_manager.register(DeviiService()) svc = service_manager.get_service("devii") return svc.hub(), svc def _session(channel, owner_id): hub, svc = _hub() return hub.get_or_create( "guest", owner_id, "guest", "", svc.instance_base_url(), is_admin=False, channel=channel ) def _tool_names(session): return {t["function"]["name"] for t in session.tools} def _agent_names(): return {a.name for a in CATALOG.actions if a.handler == "agent"} def test_flag_off_hides_every_agent_tool(local_db): previous = get_setting(FIELD_AGENTS_ENABLED, "") set_setting(FIELD_AGENTS_ENABLED, "") try: main = _session("main", "flag-off-main") main._refresh_tools() assert not (_tool_names(main) & _agent_names()) finally: set_setting(FIELD_AGENTS_ENABLED, previous or "") def test_flag_on_shows_five_supervision_tools(local_db): previous = get_setting(FIELD_AGENTS_ENABLED, "") set_setting(FIELD_AGENTS_ENABLED, "1") try: hub, svc = _hub() user = hub.get_or_create( "user", "flag-on-user", "flaguser", "fake-key", svc.instance_base_url(), is_admin=False, channel="main", ) user._refresh_tools() visible = _tool_names(user) & _agent_names() assert visible == { "agent_start", "agent_status", "agent_result", "agent_cancel", "agent_list", } guest = _session("main", "flag-on-guest") guest._refresh_tools() assert (_tool_names(guest) & _agent_names()) == { "agent_status", "agent_result", "agent_list", } finally: set_setting(FIELD_AGENTS_ENABLED, previous or "") def test_docs_channel_ignores_flag(local_db): previous = get_setting(FIELD_AGENTS_ENABLED, "") set_setting(FIELD_AGENTS_ENABLED, "1") try: docs = _session("docs", "flag-on-docs") docs._refresh_tools() assert _tool_names(docs) == {"search_docs"} finally: set_setting(FIELD_AGENTS_ENABLED, previous or "")