from __future__ import annotations from pathlib import Path from app.models import AppConfig, ClientConfig from app.services.profile_resolver import resolve_profile from app.services.rule_resolver import ( build_rule_provider_entries as build_rule_provider_entries_for_profile, iter_resolved_rule_lines, load_rule_payload, load_rule_text, resolve_policy, ) def build_rule_provider_entries(app_config: AppConfig, client: ClientConfig, base_url: str, public_path: str): resolved_profile = resolve_profile( app_config=app_config, client_type=_find_client_type(app_config, client), selected_source_names=list(app_config.sources.keys()), ) return build_rule_provider_entries_for_profile( resolved_profile=resolved_profile, base_url=base_url, public_path=public_path, ) def build_rule_set_references(app_config: AppConfig, client: ClientConfig) -> list[str]: resolved_profile = resolve_profile( app_config=app_config, client_type=_find_client_type(app_config, client), selected_source_names=list(app_config.sources.keys()), ) return iter_resolved_rule_lines( resolved_profile=resolved_profile, include_rule_set_references=True, inline_file_payloads=False, ) def build_inline_rules(app_config: AppConfig, client: ClientConfig) -> list[str]: resolved_profile = resolve_profile( app_config=app_config, client_type=_find_client_type(app_config, client), selected_source_names=list(app_config.sources.keys()), ) return iter_resolved_rule_lines( resolved_profile=resolved_profile, include_rule_set_references=False, inline_file_payloads=True, ) def _find_client_type(app_config: AppConfig, client: ClientConfig) -> str: for client_type, candidate in app_config.clients.items(): if candidate == client: return client_type raise KeyError("client config not found in app config") __all__ = [ "build_inline_rules", "build_rule_provider_entries", "build_rule_set_references", "load_rule_payload", "load_rule_text", "resolve_policy", ]