- Add agents package: controller, runner, store, tools, actions, evals, policy - Wire agents into Devii service, session, registry, CLI, and dispatcher - Extend database schema and config for agent persistence - Add news and telegram bridge updates plus landing UI and docs - Cover agents, news, and telegram flows with unit tests
86 lines
2.5 KiB
Python
86 lines
2.5 KiB
Python
# retoor <retoor@molodetz.nl>
|
|
|
|
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 "")
|