From 5ac6e493f788395e305eb82e9f0c8bdadbbd64d9 Mon Sep 17 00:00:00 2001 From: miro Date: Tue, 17 Feb 2026 00:04:17 +0000 Subject: [PATCH] refactor!: opm agents plugins --- ovos_solver_rivescript_plugin/__init__.py | 29 +++++++++++------------ requirements.txt | 2 +- setup.py | 6 ++--- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/ovos_solver_rivescript_plugin/__init__.py b/ovos_solver_rivescript_plugin/__init__.py index 330b5eb..b343445 100644 --- a/ovos_solver_rivescript_plugin/__init__.py +++ b/ovos_solver_rivescript_plugin/__init__.py @@ -1,9 +1,9 @@ import os from datetime import date from os.path import dirname, isdir -from typing import Optional +from typing import Optional, List, Tuple -from ovos_plugin_manager.templates.solvers import QuestionSolver +from ovos_plugin_manager.templates.agents import RetrievalEngine from ovos_utils.log import LOG from ovos_utils.xdg_utils import xdg_data_home from rivescript import RiveScript @@ -97,31 +97,30 @@ def ask_brain(self, utterance): LOG.error(e) -class RivescriptSolver(QuestionSolver): +class RivescriptSolver(RetrievalEngine): def __init__(self, config=None): config = config or {"lang": "en-us"} lang = config.get("lang") or "en-us" if lang != "en-us" and lang not in os.listdir(RivescriptBot.XDG_PATH): - config["lang"] = lang = "en-us" - super().__init__(config, internal_lang=lang, enable_tx=True, priority=96) - self.brain = RivescriptBot(lang, self.config) + config["lang"] = "en-us" + super().__init__(config) + self.brain = RivescriptBot(self.config.get("lang"), self.config) self.brain.load_brain() - def get_spoken_answer(self, query: str, - lang: Optional[str] = None, - units: Optional[str] = None) -> Optional[str]: + def query(self, query: str, lang: Optional[str] = None, k: int = 3) -> List[Tuple[str, float]]: """ - Obtain the spoken answer for a given query. + Searches the knowledge base for relevant documents or data. Args: - query (str): The query text. - lang (Optional[str]): Optional language code. Defaults to None. - units (Optional[str]): Optional units for the query. Defaults to None. + query: The search string. + lang: BCP-47 language code. + k: The maximum number of results to return. Returns: - str: The spoken answer as a text response. + List of tuples (content, score) for the top k matches. """ - return self.brain.ask_brain(query) + return [(self.brain.ask_brain(query), 0.5)] + if __name__ == "__main__": diff --git a/requirements.txt b/requirements.txt index 96e48ec..36aaeb0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ rivescript -ovos-plugin-manager>=0.0.26,<3.0.0 +ovos-plugin-manager>=2.2.3a1,<3.0.0 diff --git a/setup.py b/setup.py index 3f2d139..4f7f981 100755 --- a/setup.py +++ b/setup.py @@ -46,15 +46,15 @@ def get_version(): setup( name='ovos-solver-rivescript-plugin', version=get_version(), - description='A question solver plugin for ovos/neon/mycroft', + description='A chatbot plugin for OpenVoiceOS', url='https://github.com/OpenVoiceOS/ovos-solver-rivescript-plugin', author='jarbasai', author_email='jarbasai@mailfence.com', license='MIT', packages=['ovos_solver_rivescript_plugin'], zip_safe=True, - keywords='mycroft plugin utterance fallback query', - entry_points={'neon.plugin.solver': PLUGIN_ENTRY_POINT}, + keywords='OpenVoiceOS OVOS plugin utterance fallback query', + entry_points={'opm.agents.retrieval': PLUGIN_ENTRY_POINT}, install_requires=required("requirements.txt"), long_description=long_description, long_description_content_type='text/markdown'