Files
leocrm/app/plugins/builtins/unified_search/contracts.py
T

36 lines
1.1 KiB
Python
Raw Normal View History

2026-07-25 21:03:46 +02:00
"""Unified Search plugin contract — public interface for cross-plugin access."""
from __future__ import annotations
from app.plugins.builtins.contracts import get_contract_registry
2026-07-25 21:03:46 +02:00
from app.plugins.builtins.unified_search.embedding import generate_embedding
from app.plugins.builtins.unified_search.search_engine import hybrid_search
class UnifiedSearchContract:
"""Public contract for the unified_search plugin."""
contract_name = "unified_search"
2026-07-25 21:03:46 +02:00
generate_embedding = staticmethod(generate_embedding)
hybrid_search = staticmethod(hybrid_search)
# ─── self-registration ───
_contract = UnifiedSearchContract()
get_contract_registry().register("unified_search", _contract)
# Backward-compatible local accessor
2026-07-25 21:03:46 +02:00
_contract_instance: UnifiedSearchContract | None = None
def get_contract() -> UnifiedSearchContract:
global _contract_instance
if _contract_instance is None:
_contract_instance = UnifiedSearchContract()
return _contract_instance
__all__ = ["UnifiedSearchContract", "generate_embedding", "hybrid_search"]