"""Contracts for isolated high-quality Hermes chat capabilities.""" from __future__ import annotations import base64 import importlib.util import json import sqlite3 import sys import time import tomllib from pathlib import Path from types import ModuleType, SimpleNamespace import pytest import yaml ROOT = Path(__file__).parents[2] HERMES = ROOT / "services" / "hermes" VAULT = ROOT / "services" / "vault" def _documents(path: Path) -> list[dict]: return [doc for doc in yaml.safe_load_all(path.read_text()) if doc] def _load_broker_module(name: str, filename: str, monkeypatch): """Load one broker with its mounted routing-catalog dependency.""" catalog_path = HERMES / "scripts" / "routing_catalog.py" catalog_spec = importlib.util.spec_from_file_location( "routing_catalog", catalog_path ) assert catalog_spec and catalog_spec.loader catalog = importlib.util.module_from_spec(catalog_spec) catalog_spec.loader.exec_module(catalog) monkeypatch.setitem(sys.modules, "routing_catalog", catalog) monkeypatch.setitem(sys.modules, "httpx", SimpleNamespace()) broker_path = HERMES / "scripts" / filename spec = importlib.util.spec_from_file_location(name, broker_path) assert spec and spec.loader module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) return module __all__ = ( "HERMES", "ModuleType", "Path", "ROOT", "SimpleNamespace", "VAULT", "_documents", "_load_broker_module", "base64", "importlib", "json", "pytest", "sqlite3", "sys", "time", "tomllib", "yaml", )