# CP2A2.2B — L1 Red Queen Worker: Tool-Capability-Test # STRICTLY NON-AUTONOMOUS / NON-PRODUCTIVE. # # Verifiziert, dass der Worker KEINE verbotenen Tools/Faehigkeiten besitzt. # Verboten: terminal, generic shell, execute_code, write_file auf externe/ # shared Ziele, patch, git push, SSH, Docker, cronjob, send_message, # delegation, arbitrary command execution. MAX_SUBAGENTS=0. # # Ground-Truth-Check: prueft die tatsaechlich geladenen Toolsets, nicht nur # die Config. Der Worker nutzt ein minimales read-only Toolset. import os import sys # Verbotene Tool-Namen (Ground-Truth-Check gegen geladene Toolsets) FORBIDDEN_TOOLS = [ "terminal", "process", "execute_code", "write_file", "patch", "git_push", "ssh", "docker", "cronjob", "send_message", "delegate_task", "browser_navigate", "browser_click", "browser_type", "computer_use", ] # Erlaubte (read-only) Tools ALLOWED_TOOLS = [ "web_extract", "web_search", "vision_analyze", "read_file", "search_files", "session_search", "memory", "todo", "clarify", "skills_list", "skill_view", ] def get_loaded_toolsets() -> list[str]: """Ermittelt die tatsaechlich geladenen Toolsets (Ground Truth).""" # Aus ENV: HERMES_TUI_TOOLSETS oder via hermes CLI env_toolsets = os.environ.get("HERMES_TUI_TOOLSETS", "") if env_toolsets: return [t.strip() for t in env_toolsets.split(",") if t.strip()] return [] def check_forbidden_tools(toolsets: list[str]) -> list[str]: """Prueft, ob verbotene Tools in den geladenen Toolsets enthalten sind.""" found = [] # Mapping Toolset -> Tools (statisch, aus toolsets.py Ground Truth) toolset_tools = { "web": ["web_search", "web_extract"], "vision": ["vision_analyze"], "file": ["read_file", "write_file", "patch", "search_files"], "terminal": ["terminal", "process"], "code_execution": ["execute_code"], "delegation": ["delegate_task"], "cronjob": ["cronjob"], "browser": ["browser_navigate", "browser_snapshot", "browser_click", "browser_type", "browser_scroll", "browser_back", "browser_press", "browser_get_images", "browser_console", "web_search"], "computer_use": ["computer_use"], } for ts in toolsets: for tool in toolset_tools.get(ts, []): if tool in FORBIDDEN_TOOLS: found.append(f"{ts}:{tool}") return found def main() -> int: toolsets = get_loaded_toolsets() forbidden = check_forbidden_tools(toolsets) print("=== CP2A2.2B TOOL-CAPABILITY TEST ===") print(f"Loaded toolsets: {toolsets if toolsets else 'NONE (default)'}") print(f"Forbidden tools found: {forbidden if forbidden else 'ABSENT'}") print(f"RESULT: {'PASS' if not forbidden else 'FAIL'}") return 0 if not forbidden else 1 if __name__ == "__main__": sys.exit(main())