From 663731d61c76111afdb267a31771b49628467b0c Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Sat, 13 Jun 2026 19:26:05 +0100 Subject: [PATCH 1/8] test: add full-pipeline persona e2e via ovoscope MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exercises the complete OVOS intent pipeline with the RiveScript solver wired into a PersonaService persona (RiveBot). Uses the bundled en-us brain — no network, no keys. Asserts: 1. Pipeline produces a non-empty speak message (greeting utterance). 2. PersonaService records USER and ASSISTANT turns in per-session memory. 3. Unknown sessions return empty history. 4. Multiple turns accumulate in the same session. Adds test extras (pytest, ovoscope, ovos-persona) to setup.py. Co-Authored-By: Claude Sonnet 4.6 --- setup.py | 7 + test/__init__.py | 0 test/test_e2e_persona_pipeline.py | 244 ++++++++++++++++++++++++++++++ 3 files changed, 251 insertions(+) create mode 100644 test/__init__.py create mode 100644 test/test_e2e_persona_pipeline.py diff --git a/setup.py b/setup.py index 3f2d139..436da1f 100755 --- a/setup.py +++ b/setup.py @@ -56,6 +56,13 @@ def get_version(): keywords='mycroft plugin utterance fallback query', entry_points={'neon.plugin.solver': PLUGIN_ENTRY_POINT}, install_requires=required("requirements.txt"), + extras_require={ + "test": [ + "pytest", + "ovoscope", + "ovos-persona", + ] + }, long_description=long_description, long_description_content_type='text/markdown' ) diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/test_e2e_persona_pipeline.py b/test/test_e2e_persona_pipeline.py new file mode 100644 index 0000000..976739e --- /dev/null +++ b/test/test_e2e_persona_pipeline.py @@ -0,0 +1,244 @@ +"""Full-pipeline end-to-end test for ovos-solver-plugin-rivescript using ovoscope. + +Proves: + 1. An utterance flows through the real OVOS intent pipeline, hits the + persona pipeline plugin, and produces a ``speak`` message with + non-empty text (the RiveScript persona answered). + 2. Per-session memory is recorded: the live PersonaService accumulates + USER + ASSISTANT turns keyed by session_id, and an unknown session + has no history. + +No network access, no keys. The RiveScript engine uses the bundled +``brain/en-us/`` directory shipped with the plugin — completely offline. +""" +import json +import os +import tempfile + +import pytest + +ovoscope = pytest.importorskip("ovoscope") +ovos_persona = pytest.importorskip("ovos_persona") + +from ovos_bus_client.message import Message +from ovos_bus_client.session import Session, SessionManager + +from ovoscope import ( + PERSONA_PIPELINE, + CaptureSession, + get_minicroft, + is_pipeline_available, +) + +if not is_pipeline_available(PERSONA_PIPELINE): + pytest.skip("ovos-persona-pipeline-plugin not installed", allow_module_level=True) + +# --------------------------------------------------------------------------- +# Persona definition — uses bundled brain, no extra config needed +# --------------------------------------------------------------------------- + +PERSONA_NAME = "RiveBot" + +# The utterance the bundled brain reliably answers +GREETING_UTTERANCE = "hello" + + +def _make_personas_dir() -> str: + """Write a minimal RiveScript persona JSON into a temp directory.""" + tmpdir = tempfile.mkdtemp() + persona = { + "name": PERSONA_NAME, + "handlers": ["ovos-solver-rivescript-plugin"], + "ovos-solver-rivescript-plugin": { + "lang": "en-us", + }, + } + with open(os.path.join(tmpdir, f"{PERSONA_NAME}.json"), "w") as fh: + json.dump(persona, fh) + return tmpdir + + +# --------------------------------------------------------------------------- +# Module-level MiniCroft (shared across tests for speed) +# --------------------------------------------------------------------------- + +PERSONAS_PATH = _make_personas_dir() + +PIPELINE_CONFIG = { + "persona": { + "personas_path": PERSONAS_PATH, + "default_persona": PERSONA_NAME, + "short-term-memory": True, + "handle_fallback": True, + "ignore_plugin_personas": True, + } +} + +TEST_PIPELINE = [ + "ovos-persona-pipeline-plugin-high", + "ovos-persona-pipeline-plugin-low", +] + + +@pytest.fixture(scope="module") +def mc(): + """Shared MiniCroft instance with the RiveBot persona.""" + croft = get_minicroft( + skill_ids=[], + default_pipeline=TEST_PIPELINE, + pipeline_config=PIPELINE_CONFIG, + ) + yield croft + croft.stop() + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + +def _utterance_msg(utterance: str, sess: Session) -> Message: + return Message( + "recognizer_loop:utterance", + {"utterances": [utterance], "lang": sess.lang}, + {"session": sess.serialize()}, + ) + + +def _drive_utterance(croft, sess: Session, utterance: str, timeout: int = 30): + cap = CaptureSession( + croft, + eof_msgs=["ovos.utterance.handled", "ovos.utterance.cancelled"], + ) + cap.capture(_utterance_msg(utterance, sess), timeout=timeout) + return cap.finish() + + +def _get_persona_service(croft): + return croft.intents.pipeline_plugins["ovos-persona-pipeline-plugin"] + + +# --------------------------------------------------------------------------- +# Test 1: persona speaks through the full pipeline +# --------------------------------------------------------------------------- + +class TestRivescriptPersonaSpeaksThroughPipeline: + """An utterance must traverse the full OVOS intent pipeline and produce + a speak message with non-empty utterance text from the RiveScript engine.""" + + def test_pipeline_produces_speak(self, mc): + sess = Session(session_id="rive-e2e-speak-test") + SessionManager.sessions[sess.session_id] = sess + + messages = _drive_utterance(mc, sess, GREETING_UTTERANCE, timeout=30) + + msg_types = [m.msg_type for m in messages] + speak_msgs = [m for m in messages if m.msg_type == "speak"] + + assert speak_msgs, ( + f"Expected at least one 'speak' message; got msg_types: {msg_types}" + ) + spoken = speak_msgs[0].data.get("utterance", "") + assert spoken.strip(), ( + f"'speak' message had an empty utterance; data={speak_msgs[0].data}" + ) + + def test_speak_message_non_empty_on_different_utterance(self, mc): + sess = Session(session_id="rive-e2e-speak-nonempty") + SessionManager.sessions[sess.session_id] = sess + + messages = _drive_utterance(mc, sess, "what is your name", timeout=30) + + for msg in messages: + if msg.msg_type == "speak": + assert msg.data.get("utterance", "").strip(), ( + f"speak message has empty utterance: {msg.data}" + ) + return + + pytest.fail( + f"No 'speak' message found in pipeline output. " + f"Message types received: {[m.msg_type for m in messages]}" + ) + + +# --------------------------------------------------------------------------- +# Test 2: per-session memory is recorded +# --------------------------------------------------------------------------- + +class TestRivescriptPerSessionMemory: + """PersonaService records USER+ASSISTANT turns per session_id. + + The live PersonaService is obtained from the MiniCroft pipeline registry + (mc.intents.pipeline_plugins["ovos-persona-pipeline-plugin"]). + """ + + def test_user_turn_recorded_in_memory(self, mc): + svc = _get_persona_service(mc) + sess = Session(session_id="rive-e2e-mem-user") + SessionManager.sessions[sess.session_id] = sess + + persona = svc.personas.get(PERSONA_NAME) + assert persona is not None, f"Persona '{PERSONA_NAME}' not loaded" + assert persona.memory is not None, "Persona must have short-term memory enabled" + + _drive_utterance(mc, sess, GREETING_UTTERANCE, timeout=30) + + history = persona.memory.get_history(sess.session_id) + contents = [m.content for m in history] + assert any(GREETING_UTTERANCE in c for c in contents), ( + f"User utterance not found in memory for session {sess.session_id}. " + f"History: {contents}" + ) + + def test_assistant_response_recorded_in_memory(self, mc): + from ovos_plugin_manager.templates.agents import MessageRole + + svc = _get_persona_service(mc) + sess = Session(session_id="rive-e2e-mem-assistant") + SessionManager.sessions[sess.session_id] = sess + + persona = svc.personas.get(PERSONA_NAME) + assert persona is not None + assert persona.memory is not None + + _drive_utterance(mc, sess, GREETING_UTTERANCE, timeout=30) + + history = persona.memory.get_history(sess.session_id) + roles = [m.role for m in history] + assert MessageRole.ASSISTANT in roles, ( + f"No ASSISTANT turn recorded in memory. History roles: {roles}" + ) + + def test_unknown_session_has_empty_history(self, mc): + svc = _get_persona_service(mc) + persona = svc.personas.get(PERSONA_NAME) + assert persona is not None + assert persona.memory is not None + + sess = Session(session_id="rive-e2e-mem-known") + SessionManager.sessions[sess.session_id] = sess + _drive_utterance(mc, sess, GREETING_UTTERANCE, timeout=30) + + unknown_history = persona.memory.get_history("session-that-never-existed-rive") + assert unknown_history == [], ( + f"Expected empty history for unknown session, got: {unknown_history}" + ) + + def test_same_session_accumulates_turns(self, mc): + svc = _get_persona_service(mc) + sess = Session(session_id="rive-e2e-mem-accumulate") + SessionManager.sessions[sess.session_id] = sess + + persona = svc.personas.get(PERSONA_NAME) + assert persona is not None + assert persona.memory is not None + persona.memory.session2history.pop(sess.session_id, None) + + _drive_utterance(mc, sess, GREETING_UTTERANCE, timeout=30) + _drive_utterance(mc, sess, "what is your name", timeout=30) + + history = persona.memory.get_history(sess.session_id) + assert len(history) >= 2, ( + f"Expected at least 2 history entries after two turns, got {len(history)}: " + f"{[m.content for m in history]}" + ) From bd27b45e54bce60dbc2924167c3178474acb22bf Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Sun, 14 Jun 2026 14:45:55 +0100 Subject: [PATCH 2/8] ci: add license-check (canonical invocation) --- .github/workflows/license_check.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/workflows/license_check.yml diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml new file mode 100644 index 0000000..8757eee --- /dev/null +++ b/.github/workflows/license_check.yml @@ -0,0 +1,11 @@ +name: License Check + +on: + pull_request: + branches: [dev] + workflow_dispatch: + +jobs: + license_check: + uses: OpenVoiceOS/gh-automations/.github/workflows/license-check.yml@dev + secrets: inherit From 0dbe4747ae53eea894a92bd01a1497498b94bdfc Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Sun, 14 Jun 2026 15:44:23 +0100 Subject: [PATCH 3/8] refactor!: migrate from deprecated QuestionSolver to ChatEngine MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace QuestionSolver (which eagerly constructs a LanguageTranslator via enable_tx=True, hard-failing in clean CI without a translate plugin) with ChatEngine from ovos_plugin_manager.templates.agents. Implement continue_chat() taking the last USER AgentMessage, running it through the RiveScript brain, and returning an ASSISTANT AgentMessage. No translator is loaded. Also fix package_data so brain/en-us/*.rive files are included in the wheel, and fix MANIFEST.in syntax so the sdist picks up requirements.txt. BREAKING CHANGE: entry-point group changed from neon.plugin.solver to opm.agents.chat; class renamed from RivescriptSolver to RiveScriptChatEngine; get_spoken_answer() removed — use continue_chat() instead. --- MANIFEST.in | 7 ++-- ovos_solver_rivescript_plugin/__init__.py | 44 +++++++++-------------- setup.py | 6 ++-- 3 files changed, 25 insertions(+), 32 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 95bb7b7..81dc3bc 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,4 @@ -recursive-include LICENSE -recursive-include README.md -recursive-include requirements.txt \ No newline at end of file +include LICENSE +include README.md +include requirements.txt +recursive-include ovos_solver_rivescript_plugin * diff --git a/ovos_solver_rivescript_plugin/__init__.py b/ovos_solver_rivescript_plugin/__init__.py index 330b5eb..32d00fe 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 List, Optional -from ovos_plugin_manager.templates.solvers import QuestionSolver +from ovos_plugin_manager.templates.agents import AgentMessage, ChatEngine, MessageRole from ovos_utils.log import LOG from ovos_utils.xdg_utils import xdg_data_home from rivescript import RiveScript @@ -84,11 +84,6 @@ def load_brain(self): self.rs.set_variable("name", self.settings.get("name", "mycroft")) self.rs.set_variable("age", str(date.today().year - 2016)) - # TODO - location from mycroft.conf - # self.rs.set_variable("location", - # self.location["city"]["state"]["country"][ - # "name"]) - # self.rs.set_variable("city", self.location_pretty) def ask_brain(self, utterance): try: @@ -97,34 +92,29 @@ def ask_brain(self, utterance): LOG.error(e) -class RivescriptSolver(QuestionSolver): +class RiveScriptChatEngine(ChatEngine): 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) + super().__init__(config) self.brain = RivescriptBot(lang, self.config) self.brain.load_brain() - def get_spoken_answer(self, query: str, - lang: Optional[str] = None, - units: Optional[str] = None) -> Optional[str]: - """ - Obtain the spoken answer for a given query. - - 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. - - Returns: - str: The spoken answer as a text response. - """ - return self.brain.ask_brain(query) + def continue_chat(self, messages: List[AgentMessage], + session_id: str = "default", + lang: Optional[str] = None, + units: Optional[str] = None) -> AgentMessage: + query = next( + (m.content for m in reversed(messages) if m.role == MessageRole.USER), + "" + ) + answer = self.brain.ask_brain(query) or "" + return AgentMessage(role=MessageRole.ASSISTANT, content=answer) if __name__ == "__main__": - bot = RivescriptSolver() - print(bot.get_spoken_answer("hello!")) - print(bot.spoken_answer("Qual é a tua comida favorita?", lang="pt-pt")) + engine = RiveScriptChatEngine() + msg = engine.continue_chat([AgentMessage(role=MessageRole.USER, content="hello!")]) + print(msg.content) diff --git a/setup.py b/setup.py index 436da1f..0c18e1d 100755 --- a/setup.py +++ b/setup.py @@ -42,7 +42,7 @@ def get_version(): version += f"a{alpha}" return version -PLUGIN_ENTRY_POINT = 'ovos-solver-rivescript-plugin=ovos_solver_rivescript_plugin:RivescriptSolver' +PLUGIN_ENTRY_POINT = 'ovos-solver-rivescript-plugin=ovos_solver_rivescript_plugin:RiveScriptChatEngine' setup( name='ovos-solver-rivescript-plugin', version=get_version(), @@ -52,9 +52,11 @@ def get_version(): author_email='jarbasai@mailfence.com', license='MIT', packages=['ovos_solver_rivescript_plugin'], + package_data={'ovos_solver_rivescript_plugin': ['brain/en-us/*.rive']}, + include_package_data=True, zip_safe=True, keywords='mycroft plugin utterance fallback query', - entry_points={'neon.plugin.solver': PLUGIN_ENTRY_POINT}, + entry_points={'opm.agents.chat': PLUGIN_ENTRY_POINT}, install_requires=required("requirements.txt"), extras_require={ "test": [ From d03b602bfb1bd043abf0a76e4184954e81f06b29 Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Sun, 14 Jun 2026 15:56:18 +0100 Subject: [PATCH 4/8] feat: opt-in brain-file translation for non-English langs (enable_tx, default off) When enable_tx=True and the requested lang has no native .rive brain, the English brain is translated (trigger + response human-readable text only; all RiveScript syntax, wildcards, and tags are preserved verbatim) and cached under XDG_PATH/-tx/. Translator is loaded lazily via _get_translator(), never raises, gracefully falls back to en-us on any failure. Default path (English, enable_tx off) is unchanged. Co-Authored-By: Claude Sonnet 4.6 --- README.md | 58 ++++-- ovos_solver_rivescript_plugin/__init__.py | 242 +++++++++++++++++++++- test/test_brain_translation.py | 187 +++++++++++++++++ 3 files changed, 469 insertions(+), 18 deletions(-) create mode 100644 test/test_brain_translation.py diff --git a/README.md b/README.md index 6f18a51..d197d22 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,60 @@ # Rivescript Chatbot - -Give Mycroft some sass with Rivescript! -Leverages the [Alice chatbot](https://www.chatbots.org/chatbot/a.l.i.c.e/) to create some fun interactions. Phrases not explicitly handled by other skills will be run by the chatbot, so nearly every interaction will have _some_ response. But be warned, Mycroft might become a bit obnoxious... +Give OVOS some sass with RiveScript! + +Leverages `.rive` brain files to create fun, persona-driven interactions. Phrases not explicitly handled by other skills will be handled by the chatbot, so nearly every interaction will have _some_ response. + +## Examples -## Examples * "Do you like ice cream" * "Do you like dogs" * "I have a jump rope" - +* "hello" +* "what is your name" ## Usage -Spoken answers api with a Rivescript backend +ChatEngine API backed by a RiveScript brain: ```python -from ovos_solver_rivescript_plugin import RivescriptSolver +from ovos_plugin_manager.templates.agents import AgentMessage, MessageRole +from ovos_solver_rivescript_plugin import RiveScriptChatEngine -d = RivescriptSolver() -sentence = d.spoken_answer("hello") -print(sentence) +engine = RiveScriptChatEngine() +reply = engine.continue_chat([AgentMessage(role=MessageRole.USER, content="hello")]) +print(reply.content) # Hi there! +``` + +## Configuration + +| Key | Default | Description | +|-----|---------|-------------| +| `lang` | `"en-us"` | Brain language to load. Must match a directory under `brain/` or the XDG data dir. | +| `enable_tx` | `False` | Opt-in brain-file translation (see below). | +| `translate_plugin` | `"ovos-translate-plugin-server"` | Translation plugin ID to use when `enable_tx` is on. | -sentence = d.spoken_answer("Do you like ice cream", {"lang": "pt-pt"}) -print(sentence) -# O que queres mesmo saber? +### Opt-in brain-file translation (`enable_tx`) + +By default the plugin only supports English (`en-us`). Setting `enable_tx: true` lets the plugin serve non-English users by translating the bundled English `.rive` brain into the requested language. + +```json +{ + "ovos-solver-rivescript-plugin": { + "lang": "pt-pt", + "enable_tx": true, + "translate_plugin": "ovos-translate-plugin-server" + } +} ``` + +**How it works:** + +1. When `lang` is requested and no native `.rive` brain exists for it, the plugin translates the English brain into the target language. +2. Only human-readable text in trigger lines (`+ …`) and response lines (`- …`) is translated. RiveScript control syntax — wildcards (`*`, `_`), tags (``, ``, ``, `{topic=…}`, …), optional groups (`[…]`, `(…)`), label markers (`>`, `<`), definitions (`!`), and redirects (`@`, `^`) — is preserved verbatim. +3. The translated `.rive` files are cached in the XDG data directory (`~/.local/share/rivescript/-tx/`) and reused on subsequent runs without re-translating. +4. If the translator cannot be loaded or translation fails, the plugin falls back to the English brain without crashing. + +**Recommended translate plugin:** `ovos-translate-plugin-server` (the default) or another remote plugin. Translation plugins may be instantiated multiple times across different personas, so local model plugins that load a large model into memory on each instantiation are costly. A remote plugin delegates inference to a server and avoids this overhead. + +**Default behaviour is unchanged:** with `enable_tx` off (the default), no translator is loaded, the English brain is used, and there is no runtime cost. diff --git a/ovos_solver_rivescript_plugin/__init__.py b/ovos_solver_rivescript_plugin/__init__.py index 32d00fe..c072b63 100644 --- a/ovos_solver_rivescript_plugin/__init__.py +++ b/ovos_solver_rivescript_plugin/__init__.py @@ -1,6 +1,7 @@ import os +import re from datetime import date -from os.path import dirname, isdir +from os.path import dirname, isdir, isfile, join from typing import List, Optional from ovos_plugin_manager.templates.agents import AgentMessage, ChatEngine, MessageRole @@ -8,6 +9,98 @@ from ovos_utils.xdg_utils import xdg_data_home from rivescript import RiveScript +# RiveScript syntax elements that must never be passed to a translator: +# wildcards, tags, control directives, and label markers. +_RS_SKIP_RE = re.compile( + r'^\s*(!|>|<|\^|@|\{|\})' # ! definitions, > label, < label end, ^continue, @include, {topic} blocks + r'|<[a-z_]+>' # , , , , etc. + r'|^\s*$' # blank lines +) +# Tokens inside trigger/response lines that must be preserved verbatim. +_RS_PRESERVE_RE = re.compile( + r'(\{[^}]*\}' # {topic=…} tags + r'|<[^>]*>' # , , , … + r'|\([^)]*\)' # optional groups (alternatives) + r'|\[[^\]]*\]' # optional words + r'|[@^]\S+' # @redirect, ^continue targets + r'|[*_#@]' # wildcards + r')' +) + + +def _split_preserving_syntax(text: str): + """Split *text* into alternating [literal, preserved, literal, …] chunks. + + Returns a list where even indices are translatable literals and odd indices + are preserved RS tokens. Reassemble with ''.join(parts). + """ + parts = _RS_PRESERVE_RE.split(text) + return parts # already alternating: text/token/text/token/… + + +def _translate_rs_text(text: str, translator, target_lang: str) -> str: + """Translate the human-readable portions of a trigger/response line. + + Syntax tokens (wildcards, tags, optional groups) are left untouched. + """ + parts = _split_preserving_syntax(text) + translated = [] + for i, part in enumerate(parts): + if i % 2 == 0: + # translatable literal — skip if empty/whitespace + if part.strip(): + try: + translated.append(translator.translate(part, target=target_lang, source="en")) + except Exception as e: + LOG.warning(f"RiveScript brain translation failed for chunk {repr(part)}: {e}") + translated.append(part) + else: + translated.append(part) + else: + # preserved RS token — copy verbatim + translated.append(part) + return "".join(translated) + + +def _translate_rive_file(src_path: str, dst_path: str, translator, target_lang: str) -> bool: + """Translate a single .rive file from English to *target_lang*. + + Only ``+`` (trigger) and ``-`` (response) lines have their human-readable + text translated. All other lines (``!``, ``>``, ``<``, ``^``, ``@``, + comments, blank lines) are copied verbatim. + + Returns True on success, False if any unrecoverable error occurred. + """ + try: + with open(src_path, "r", encoding="utf-8") as fh: + lines = fh.readlines() + except Exception as e: + LOG.error(f"Cannot read brain file {src_path}: {e}") + return False + + out_lines = [] + for line in lines: + stripped = line.lstrip() + if stripped.startswith("+ ") or stripped.startswith("- "): + prefix_char = stripped[0] # '+' or '-' + indent = line[: len(line) - len(stripped)] + content = stripped[2:] # text after '+ ' or '- ' + newline = "\n" if content.endswith("\n") else "" + content = content.rstrip("\n") + translated_content = _translate_rs_text(content, translator, target_lang) + out_lines.append(f"{indent}{prefix_char} {translated_content}{newline}") + else: + out_lines.append(line) + + try: + os.makedirs(os.path.dirname(dst_path), exist_ok=True) + with open(dst_path, "w", encoding="utf-8") as fh: + fh.writelines(out_lines) + return True + except Exception as e: + LOG.error(f"Cannot write translated brain file {dst_path}: {e}") + return False + class RivescriptBot: XDG_PATH = f"{xdg_data_home()}/rivescript" @@ -95,13 +188,152 @@ def ask_brain(self, utterance): class RiveScriptChatEngine(ChatEngine): 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) - self.brain = RivescriptBot(lang, self.config) + + self.translate: bool = self.config.get("enable_tx", False) + self.translator = None + self._translator_loaded: bool = False + + lang = self.config.get("lang") or "en-us" + brain_lang = self._resolve_brain_lang(lang) + self.brain = RivescriptBot(brain_lang, self.config) self.brain.load_brain() + # ------------------------------------------------------------------ + # Translator — lazy, graceful, never raises + # ------------------------------------------------------------------ + + def _get_translator(self): + """Lazily load a translation plugin. + + Returns the translator instance, or ``None`` if translation is + disabled or the plugin cannot be loaded. Never raises. + """ + if not self.translate: + return None + if self._translator_loaded: + return self.translator + self._translator_loaded = True + try: + from ovos_plugin_manager.language import load_tx_plugin + from ovos_plugin_manager.templates.language import LanguageTranslator # noqa: F401 + try: + from ovos_config.config import Configuration + lang_cfg = Configuration().get("language", {}) + except Exception: + lang_cfg = {} + plug_id = (self.config.get("translate_plugin") or + lang_cfg.get("translation_module", "ovos-translate-plugin-server")) + clazz = load_tx_plugin(plug_id) + if clazz is None: + LOG.warning( + f"RiveScript: translation plugin not available '{plug_id}': " + "falling back to English brain for non-English requests" + ) + self.translator = None + else: + self.translator = clazz(config=lang_cfg.get(plug_id, {})) + LOG.debug(f"RiveScript: loaded translation plugin '{plug_id}'") + except Exception as e: + LOG.warning( + f"RiveScript: failed to load translation plugin ({e}): " + "falling back to English brain" + ) + self.translator = None + return self.translator + + # ------------------------------------------------------------------ + # Brain-file translation + caching + # ------------------------------------------------------------------ + + def _translated_brain_path(self, lang: str) -> str: + """Return the XDG cache path where a translated brain for *lang* lives.""" + return join(RivescriptBot.XDG_PATH, f"{lang}-tx") + + def _has_local_brain(self, lang: str) -> bool: + """True if a native (non-translated) brain directory exists for *lang*.""" + xdg = join(RivescriptBot.XDG_PATH, lang) + bundled = join(dirname(__file__), "brain", lang) + return isdir(xdg) or isdir(bundled) + + def _build_translated_brain(self, lang: str, translator) -> Optional[str]: + """Translate the English brain into *lang* and return the brain path. + + Results are written to the XDG cache and reused on subsequent calls. + Returns the path to the translated brain directory, or ``None`` on + failure (caller should fall back to English). + """ + dst_dir = self._translated_brain_path(lang) + # If already cached, reuse. + if isdir(dst_dir) and any(f.endswith(".rive") for f in os.listdir(dst_dir)): + LOG.debug(f"RiveScript: using cached translated brain at {dst_dir}") + return dst_dir + + en_dir = join(dirname(__file__), "brain", "en-us") + if not isdir(en_dir): + LOG.error("RiveScript: English brain directory not found; cannot translate") + return None + + rive_files = [f for f in os.listdir(en_dir) if f.endswith(".rive")] + if not rive_files: + LOG.error("RiveScript: no .rive files found in English brain") + return None + + primary_lang = lang.split("-")[0] + LOG.info(f"RiveScript: translating brain from en-us → {lang} ({len(rive_files)} files)") + success_count = 0 + for fname in rive_files: + src = join(en_dir, fname) + dst = join(dst_dir, fname) + if _translate_rive_file(src, dst, translator, primary_lang): + success_count += 1 + else: + LOG.warning(f"RiveScript: translation failed for {fname}") + + if success_count == 0: + LOG.error("RiveScript: all brain file translations failed; falling back to English") + return None + + LOG.info(f"RiveScript: translated {success_count}/{len(rive_files)} brain files to {lang}") + return dst_dir + + def _resolve_brain_lang(self, lang: str) -> str: + """Return the lang tag to pass to RivescriptBot. + + If a native brain exists for *lang*, use it. If translation is + enabled and a translator can be loaded, build a translated brain and + return a path-like lang tag (caller uses XDG_PATH/-tx). + Otherwise fall back to ``en-us``. + + Note: this is called at __init__ time; translator loading is deferred + to ``_get_translator()`` which sets ``_translator_loaded`` correctly. + """ + if not lang or lang == "en-us": + return "en-us" + + if self._has_local_brain(lang): + return lang + + if not self.translate: + LOG.debug(f"RiveScript: no brain for '{lang}', enable_tx=False → using en-us") + return "en-us" + + translator = self._get_translator() + if translator is None: + LOG.warning(f"RiveScript: no brain for '{lang}', translator unavailable → using en-us") + return "en-us" + + tx_dir = self._build_translated_brain(lang, translator) + if tx_dir is None: + LOG.warning(f"RiveScript: brain translation failed for '{lang}' → using en-us") + return "en-us" + + # Register a virtual lang entry in XDG_PATH so RivescriptBot finds it. + # The translated dir already lives at XDG_PATH/-tx; we need a + # symlink/entry at XDG_PATH/ OR we can use a bot with an explicit + # brain_path. We store the path and pass it explicitly. + return f"{lang}-tx" + def continue_chat(self, messages: List[AgentMessage], session_id: str = "default", lang: Optional[str] = None, diff --git a/test/test_brain_translation.py b/test/test_brain_translation.py new file mode 100644 index 0000000..1acc3b5 --- /dev/null +++ b/test/test_brain_translation.py @@ -0,0 +1,187 @@ +"""Unit tests for opt-in brain-file translation (enable_tx). + +No network access, no real translation plugin required — a mock translator +is injected directly to exercise the translate-and-cache path. +""" +import os +import shutil +import tempfile +from unittest.mock import MagicMock, patch + +import pytest + +from ovos_plugin_manager.templates.agents import AgentMessage, ChatEngine, MessageRole +from ovos_solver_rivescript_plugin import RiveScriptChatEngine +from ovos_solver_rivescript_plugin import ( + _translate_rs_text, + _translate_rive_file, +) + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + +def _fake_translator(lang_map: dict): + """Return a mock translator whose .translate() method uses *lang_map*.""" + tx = MagicMock() + + def _translate(text, target, source="en"): + return lang_map.get(text.strip(), f"[{target}]{text}") + + tx.translate.side_effect = _translate + return tx + + +# --------------------------------------------------------------------------- +# translate-text helpers +# --------------------------------------------------------------------------- + +class TestTranslateRsText: + def test_plain_text_translated(self): + tx = _fake_translator({"hello": "olá"}) + result = _translate_rs_text("hello", tx, "pt") + assert result == "olá" + + def test_wildcard_preserved(self): + tx = _fake_translator({}) + result = _translate_rs_text("tell me about *", tx, "pt") + # '*' wildcard must survive; literal parts get translated (or echoed) + assert "*" in result + + def test_tag_preserved(self): + tx = _fake_translator({}) + result = _translate_rs_text("you said ", tx, "pt") + assert "" in result + + def test_empty_preserves(self): + tx = _fake_translator({}) + result = _translate_rs_text("", tx, "pt") + assert result == "" + + +class TestTranslateRiveFile: + def setup_method(self): + self.tmp = tempfile.mkdtemp() + + def teardown_method(self): + shutil.rmtree(self.tmp, ignore_errors=True) + + def test_trigger_and_response_translated(self): + src = os.path.join(self.tmp, "test.rive") + dst = os.path.join(self.tmp, "out", "test.rive") + with open(src, "w") as fh: + fh.write("! version = 2.0\n+ hello\n- hi there\n") + tx = _fake_translator({"hello": "olá", "hi there": "olá aí"}) + ok = _translate_rive_file(src, dst, tx, "pt") + assert ok + with open(dst) as fh: + content = fh.read() + assert "+ olá" in content + assert "- olá aí" in content + assert "! version = 2.0" in content # definition line untouched + + def test_definition_lines_untouched(self): + src = os.path.join(self.tmp, "def.rive") + dst = os.path.join(self.tmp, "out", "def.rive") + with open(src, "w") as fh: + fh.write("! var name = Bot\n> begin\n+ request\n- {ok}\n< begin\n") + tx = _fake_translator({}) + _translate_rive_file(src, dst, tx, "pt") + with open(dst) as fh: + content = fh.read() + assert "! var name = Bot" in content + assert "> begin" in content + assert "< begin" in content + + +# --------------------------------------------------------------------------- +# RiveScriptChatEngine — defaults +# --------------------------------------------------------------------------- + +class TestRiveScriptDefaultBehavior: + def test_is_chat_engine(self): + e = RiveScriptChatEngine() + assert isinstance(e, ChatEngine) + + def test_enable_tx_default_off(self): + e = RiveScriptChatEngine() + assert e.translate is False + + def test_translator_none_when_disabled(self): + e = RiveScriptChatEngine() + assert e._get_translator() is None + + def test_english_answer(self): + e = RiveScriptChatEngine() + r = e.continue_chat([AgentMessage(role=MessageRole.USER, content="hello")]) + assert isinstance(r, AgentMessage) + assert r.content # non-empty + + +# --------------------------------------------------------------------------- +# RiveScriptChatEngine — enable_tx on with mock translator +# --------------------------------------------------------------------------- + +class TestBrainTranslationWithMock: + """Verify that requesting a lang with no bundled brain + enable_tx=True + results in a translated brain being built and cached.""" + + def setup_method(self): + self.tmp_xdg = tempfile.mkdtemp() + # Patch XDG_PATH so we don't pollute the real user data dir. + self._xdg_patcher = patch( + "ovos_solver_rivescript_plugin.RivescriptBot.XDG_PATH", + self.tmp_xdg, + ) + self._xdg_patcher.start() + + def teardown_method(self): + self._xdg_patcher.stop() + shutil.rmtree(self.tmp_xdg, ignore_errors=True) + + def _make_engine_with_mock_tx(self, lang="pt-pt"): + """Instantiate RiveScriptChatEngine with enable_tx=True and a mock translator.""" + tx = _fake_translator({}) + + engine = RiveScriptChatEngine.__new__(RiveScriptChatEngine) + # Bypass normal __init__; set attributes manually to inject mock. + from ovos_plugin_manager.templates.agents import ChatEngine as CE + CE.__init__(engine, {"lang": lang, "enable_tx": True}) + engine.translate = True + engine.translator = tx + engine._translator_loaded = True + return engine, tx + + def test_translated_brain_dir_created(self): + lang = "pt-pt" + engine, tx = self._make_engine_with_mock_tx(lang) + + tx_dir = engine._build_translated_brain(lang, tx) + assert tx_dir is not None + assert os.path.isdir(tx_dir), f"Expected translated brain dir at {tx_dir}" + rive_files = [f for f in os.listdir(tx_dir) if f.endswith(".rive")] + assert rive_files, "No .rive files in translated brain dir" + + def test_cached_brain_reused(self): + lang = "pt-pt" + engine, tx = self._make_engine_with_mock_tx(lang) + + engine._build_translated_brain(lang, tx) + call_count_after_first = tx.translate.call_count + + engine._build_translated_brain(lang, tx) + # Second call must not invoke the translator again (cache hit). + assert tx.translate.call_count == call_count_after_first + + def test_no_translator_falls_back(self): + """If _get_translator() returns None, _resolve_brain_lang falls back to en-us.""" + engine = RiveScriptChatEngine.__new__(RiveScriptChatEngine) + from ovos_plugin_manager.templates.agents import ChatEngine as CE + CE.__init__(engine, {"lang": "pt-pt", "enable_tx": True}) + engine.translate = True + engine.translator = None + engine._translator_loaded = True # already tried, got None + + result = engine._resolve_brain_lang("pt-pt") + assert result == "en-us" From 213582f2a99f2cb23343d972045d18877258fcaa Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Sun, 14 Jun 2026 18:16:11 +0100 Subject: [PATCH 5/8] feat: brain<->locale converter helper scripts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit scripts/brain_to_locale.py bootstraps OVOS locale/ (.intent/.dialog) from the rivescript brain; scripts/locale_to_brain.py compiles a brain back from locale/ — so contributors write/translate in standard OVOS notation and the brain is regenerated. {query} slot <-> engine wildcard; partial (skips unmappable constructs). --- scripts/brain_to_locale.py | 150 +++++++++++++++++++++++++++++++++++++ scripts/locale_to_brain.py | 97 ++++++++++++++++++++++++ 2 files changed, 247 insertions(+) create mode 100644 scripts/brain_to_locale.py create mode 100644 scripts/locale_to_brain.py diff --git a/scripts/brain_to_locale.py b/scripts/brain_to_locale.py new file mode 100644 index 0000000..05df35e --- /dev/null +++ b/scripts/brain_to_locale.py @@ -0,0 +1,150 @@ +#!/usr/bin/env python3 +"""Partial converter: AIML / RiveScript brains -> OVOS ``locale/`` resources. + +Each AIML ```` (or RiveScript ``+ trigger`` / ``- response`` pair) becomes +one OVOS intent: a ``.intent`` file holding the trigger utterance(s) and a +``.dialog`` file holding the response(s). This preserves the question->answer +mapping (merging every pattern into one file would lose it). + +It is deliberately PARTIAL — it converts the cleanly-mappable subset and *skips* +(reporting them) categories/triggers that rely on constructs with no direct OVOS +equivalent: AIML ````/````/````/```` templates, topic +state; RiveScript ``%`` previous, ``@`` redirects, ``{topic}``, ````, arrays. +Wildcards (AIML ``*``, RiveScript ``*``/``_``) become a single ``{query}`` slot. + +Usage: + brain_to_locale.py aiml + brain_to_locale.py rivescript +""" +import os +import re +import sys +import xml.etree.ElementTree as ET + +# template/response constructs we can't faithfully map -> skip the whole entry +_AIML_COMPLEX = ("", "@", "{topic}", " an OVOS Padatious utterance line.""" + line = pattern.strip().lower() + # collapse wildcards (* _) into one named slot + line = re.sub(r"[\*_]+", "{query}", line) + line = re.sub(r"\s+", " ", line).strip() + return line + + +def convert_aiml(src_dir, out_dir): + used, kept, skipped = set(), 0, 0 + for fn in sorted(os.listdir(src_dir)): + if not fn.endswith(".aiml"): + continue + try: + root = ET.parse(os.path.join(src_dir, fn)).getroot() + except ET.ParseError: + continue + for cat in root.iter("category"): + pat_el, tpl_el = cat.find("pattern"), cat.find("template") + if pat_el is None or tpl_el is None: + skipped += 1 + continue + raw_tpl = ET.tostring(tpl_el, encoding="unicode") + # skip templates that depend on unmappable constructs + if any(tag in raw_tpl for tag in _AIML_COMPLEX): + skipped += 1 + continue + pattern = "".join(pat_el.itertext()).strip() + # template text = visible text only (drops , , …) + response = re.sub(r"\s+", " ", "".join(tpl_el.itertext())).strip() + if not pattern or not response: + skipped += 1 + continue + utt = _pattern_to_intent(pattern) + _write_pair(out_dir, _slug(pattern, used), [utt], [response]) + kept += 1 + return kept, skipped + + +def convert_rivescript(src_dir, out_dir): + used, kept, skipped = set(), 0, 0 + for fn in sorted(os.listdir(src_dir)): + if not fn.endswith(".rive"): + continue + trigger, responses = None, [] + + def _clean_response(r): + """Map a single / to {query}; reject anything else.""" + r = r.replace("", "").replace("", "{query}") + # remaining angle-bracket tags or {…} blocks can't be mapped 1:1 + if re.search(r"<[^>]+>|\{(?!query\}).+?\}", r): + return None + return r + + def flush(): + nonlocal trigger, responses, kept, skipped + if trigger is not None: + cleaned = [_clean_response(r) for r in responses] + ok = (responses and all(c is not None for c in cleaned) + and not any(c in trigger for c in _RIVE_COMPLEX)) + if ok: + _write_pair(out_dir, _slug(trigger, used), + [_pattern_to_intent(trigger)], cleaned) + kept += 1 + elif responses: + skipped += 1 + trigger, responses = None, [] + + with open(os.path.join(src_dir, fn), encoding="utf-8") as fh: + for line in fh: + line = line.rstrip("\n") + s = line.strip() + if not s or s.startswith(("//", "/*", "*", "!", ">", "<")): + continue + if s.startswith("+ "): # new trigger -> flush previous + flush() + trigger = s[2:].strip() + elif s.startswith("- "): # response + responses.append(s[2:].strip()) + elif s.startswith("^ ") and trigger is not None and not responses: + trigger += " " + s[2:].strip() # trigger continuation + else: + flush() # %, @, * conditionals etc. -> break pair + flush() + return kept, skipped + + +def main(argv): + if len(argv) != 4 or argv[1] not in ("aiml", "rivescript"): + print(__doc__) + return 2 + fmt, src, out = argv[1], argv[2], argv[3] + kept, skipped = (convert_aiml if fmt == "aiml" else convert_rivescript)(src, out) + total = kept + skipped + pct = (100 * kept // total) if total else 0 + print(f"{fmt}: converted {kept}/{total} entries ({pct}%), skipped {skipped} " + f"(unmappable constructs) -> {out}") + return 0 + + +if __name__ == "__main__": + sys.exit(main(sys.argv)) diff --git a/scripts/locale_to_brain.py b/scripts/locale_to_brain.py new file mode 100644 index 0000000..0cfeb6a --- /dev/null +++ b/scripts/locale_to_brain.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python3 +"""Build an AIML / RiveScript brain from OVOS ``locale/`` resources. + +The reverse of ``brain_to_locale.py``. The contributor-facing source of truth is +OVOS notation — a ``.intent`` file (trigger utterances) paired with a +``.dialog`` file (responses). This compiles those pairs into the brain +format the engine consumes, so users can write/translate in standard OVOS +notation and the brain is regenerated at runtime or on PR merge. + +A ``{query}`` slot maps to the engine wildcard (AIML ``*`` / ````, +RiveScript ``*`` / ````). Multiple utterances that share one dialog become +one canonical entry plus redirects (AIML ```` / RiveScript ``@``); multiple +responses become a random set (AIML ``
  • `` / repeated RiveScript ``-``). + +Usage: + locale_to_brain.py aiml + locale_to_brain.py rivescript +""" +import os +import re +import sys +from xml.sax.saxutils import escape + + +def _pairs(locale_dir): + """Yield (name, [utterances], [responses]) for each .intent/.dialog pair.""" + for fn in sorted(os.listdir(locale_dir)): + if not fn.endswith(".intent"): + continue + name = fn[:-len(".intent")] + dialog = os.path.join(locale_dir, name + ".dialog") + if not os.path.isfile(dialog): + continue + utts = [l.strip() for l in open(os.path.join(locale_dir, fn), encoding="utf-8") + if l.strip() and not l.startswith("#")] + resps = [l.strip() for l in open(dialog, encoding="utf-8") + if l.strip() and not l.startswith("#")] + if utts and resps: + yield name, utts, resps + + +def to_aiml(locale_dir, out_path): + n = 0 + out = ['', ''] + for _, utts, resps in _pairs(locale_dir): + patterns = [re.sub(r"\{query\}", "*", u).upper().strip() for u in utts] + # template: {query} -> ; multiple responses -> + r = [escape(re.sub(r"\{query\}", "", x)).replace("<star/>", "") + for x in resps] + if len(r) == 1: + tpl = r[0] + else: + tpl = "" + "".join(f"
  • {x}
  • " for x in r) + "
    " + out.append(f"{patterns[0]}") + out.append(f"") + out.append("") + for p in patterns[1:]: # extra utterances redirect to the canonical + out.append(f"{p}") + n += 1 + out.append("") + with open(out_path, "w", encoding="utf-8") as f: + f.write("\n".join(out) + "\n") + return n + + +def to_rivescript(locale_dir, out_path): + n = 0 + out = ["! version = 2.0", ""] + for _, utts, resps in _pairs(locale_dir): + triggers = [re.sub(r"\{query\}", "*", u).lower().strip() for u in utts] + out.append(f"+ {triggers[0]}") + for x in resps: + resp = re.sub(r"\{query\}", "", x) + out.append(f"- {resp}") + out.append("") + for t in triggers[1:]: # extra utterances redirect to the canonical + out.append(f"+ {t}") + out.append(f"@ {triggers[0]}") + out.append("") + n += 1 + with open(out_path, "w", encoding="utf-8") as f: + f.write("\n".join(out) + "\n") + return n + + +def main(argv): + if len(argv) != 4 or argv[1] not in ("aiml", "rivescript"): + print(__doc__) + return 2 + fmt, src, out = argv[1], argv[2], argv[3] + n = (to_aiml if fmt == "aiml" else to_rivescript)(src, out) + print(f"{fmt}: compiled {n} intents from {src} -> {out}") + return 0 + + +if __name__ == "__main__": + sys.exit(main(sys.argv)) From 9f5768a9f4a941117bd0a318ed4cfa8274fe47be Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Sun, 14 Jun 2026 18:20:13 +0100 Subject: [PATCH 6/8] feat: locale/ as source of truth for RiveScript brain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bootstrap 134 intent/dialog pairs from brain/en-us into locale/en-us. Add regenerate-brain CI workflow (push to dev, workflow_dispatch) that compiles locale// → brain//generated.rive and commits back to dev only when files changed (idempotent). Add docs/locale.md and docs/converters.md; link from README. --- .github/workflows/regenerate-brain.yml | 49 ++++++++++ README.md | 13 +++ docs/converters.md | 82 +++++++++++++++++ docs/locale.md | 90 +++++++++++++++++++ .../locale/en-us/activate_the_robot.dialog | 1 + .../locale/en-us/activate_the_robot.intent | 1 + .../locale/en-us/am_i.dialog | 4 + .../locale/en-us/am_i.intent | 1 + .../locale/en-us/are_you.dialog | 6 ++ .../locale/en-us/are_you.intent | 1 + .../locale/en-us/because.dialog | 4 + .../locale/en-us/because.intent | 1 + .../locale/en-us/bot_name.dialog | 1 + .../locale/en-us/bot_name.intent | 1 + .../locale/en-us/breathe.dialog | 1 + .../locale/en-us/breathe.intent | 1 + .../locale/en-us/breathe_2.dialog | 1 + .../locale/en-us/breathe_2.intent | 1 + .../locale/en-us/can_i.dialog | 3 + .../locale/en-us/can_i.intent | 1 + .../locale/en-us/can_you.dialog | 3 + .../locale/en-us/can_you.intent | 1 + .../locale/en-us/computer.dialog | 6 ++ .../locale/en-us/computer.intent | 1 + .../locale/en-us/did_you_forget.dialog | 5 ++ .../locale/en-us/did_you_forget.intent | 1 + .../do_you_like_being_a_chatterbot.dialog | 1 + .../do_you_like_being_a_chatterbot.intent | 1 + .../locale/en-us/do_you_remember.dialog | 4 + .../locale/en-us/do_you_remember.intent | 1 + .../locale/en-us/down.dialog | 1 + .../locale/en-us/down.intent | 1 + .../locale/en-us/down_2.dialog | 1 + .../locale/en-us/down_2.intent | 1 + .../locale/en-us/east.dialog | 1 + .../locale/en-us/east.intent | 1 + .../locale/en-us/east_2.dialog | 1 + .../locale/en-us/east_2.intent | 1 + .../locale/en-us/everyone.dialog | 9 ++ .../locale/en-us/everyone.intent | 1 + .../locale/en-us/exits.dialog | 1 + .../locale/en-us/exits.intent | 1 + .../locale/en-us/exits_10.dialog | 1 + .../locale/en-us/exits_10.intent | 1 + .../locale/en-us/exits_2.dialog | 1 + .../locale/en-us/exits_2.intent | 1 + .../locale/en-us/exits_3.dialog | 1 + .../locale/en-us/exits_3.intent | 1 + .../locale/en-us/exits_4.dialog | 1 + .../locale/en-us/exits_4.intent | 1 + .../locale/en-us/exits_5.dialog | 1 + .../locale/en-us/exits_5.intent | 1 + .../locale/en-us/exits_6.dialog | 1 + .../locale/en-us/exits_6.intent | 1 + .../locale/en-us/exits_7.dialog | 1 + .../locale/en-us/exits_7.intent | 1 + .../locale/en-us/exits_8.dialog | 1 + .../locale/en-us/exits_8.intent | 1 + .../locale/en-us/exits_9.dialog | 1 + .../locale/en-us/exits_9.intent | 1 + .../locale/en-us/first.dialog | 1 + .../locale/en-us/first.intent | 1 + ...fuck_fucker_shit_damn_shut_up_bitch.dialog | 6 ++ ...fuck_fucker_shit_damn_shut_up_bitch.intent | 1 + .../locale/en-us/have_you_seen.dialog | 1 + .../locale/en-us/have_you_seen.intent | 1 + .../locale/en-us/have_you_seen_2001.dialog | 1 + .../locale/en-us/have_you_seen_2001.intent | 1 + .../locale/en-us/have_you_seen_ai.dialog | 1 + .../locale/en-us/have_you_seen_ai.intent | 1 + .../en-us/have_you_seen_battlebots.dialog | 1 + .../en-us/have_you_seen_battlebots.intent | 1 + .../locale/en-us/have_you_seen_my.dialog | 1 + .../locale/en-us/have_you_seen_my.intent | 1 + .../en-us/have_you_seen_my_bottle.dialog | 1 + .../en-us/have_you_seen_my_bottle.intent | 1 + .../en-us/have_you_seen_terminator.dialog | 1 + .../en-us/have_you_seen_terminator.intent | 1 + .../en-us/have_you_seen_the_matrix.dialog | 1 + .../en-us/have_you_seen_the_matrix.intent | 1 + .../hello_hi_hey_howdy_hola_hai_yo.dialog | 2 + .../hello_hi_hey_howdy_hola_hai_yo.intent | 1 + .../locale/en-us/help.dialog | 1 + .../locale/en-us/help.intent | 1 + .../en-us/how_are_you_how_you_doing.dialog | 4 + .../en-us/how_are_you_how_you_doing.intent | 1 + .../locale/en-us/i_am.dialog | 5 ++ .../locale/en-us/i_am.intent | 1 + .../en-us/i_am_happy_excited_glad.dialog | 4 + .../en-us/i_am_happy_excited_glad.intent | 1 + ...sad_unhappy_mad_angry_pissed_depres.dialog | 4 + ...sad_unhappy_mad_angry_pissed_depres.intent | 1 + .../locale/en-us/i_can_not.dialog | 5 ++ .../locale/en-us/i_can_not.intent | 1 + .../locale/en-us/i_do_not.dialog | 4 + .../locale/en-us/i_do_not.intent | 1 + .../locale/en-us/i_dreamed.dialog | 7 ++ .../locale/en-us/i_dreamed.intent | 1 + .../locale/en-us/i_feel.dialog | 4 + .../locale/en-us/i_feel.intent | 1 + .../locale/en-us/i_forget.dialog | 7 ++ .../locale/en-us/i_forget.intent | 1 + .../locale/en-us/i_remember.dialog | 6 ++ .../locale/en-us/i_remember.intent | 1 + .../locale/en-us/i_was.dialog | 3 + .../locale/en-us/i_was.intent | 1 + .../locale/en-us/i_you.dialog | 4 + .../locale/en-us/i_you.intent | 1 + .../locale/en-us/if.dialog | 7 ++ .../locale/en-us/if.intent | 1 + .../en-us/int_ask_random_question.dialog | 2 + .../en-us/int_ask_random_question.intent | 1 + .../locale/en-us/int_bye_without_name.dialog | 5 ++ .../locale/en-us/int_bye_without_name.intent | 1 + .../en-us/int_hello_without_name.dialog | 4 + .../en-us/int_hello_without_name.intent | 1 + .../locale/en-us/intent.dialog | 5 ++ .../locale/en-us/intent.intent | 1 + .../locale/en-us/intent_10.dialog | 1 + .../locale/en-us/intent_10.intent | 1 + .../locale/en-us/intent_11.dialog | 1 + .../locale/en-us/intent_11.intent | 1 + .../locale/en-us/intent_12.dialog | 1 + .../locale/en-us/intent_12.intent | 1 + .../locale/en-us/intent_13.dialog | 1 + .../locale/en-us/intent_13.intent | 1 + .../locale/en-us/intent_14.dialog | 1 + .../locale/en-us/intent_14.intent | 1 + .../locale/en-us/intent_15.dialog | 1 + .../locale/en-us/intent_15.intent | 1 + .../locale/en-us/intent_16.dialog | 1 + .../locale/en-us/intent_16.intent | 1 + .../locale/en-us/intent_17.dialog | 1 + .../locale/en-us/intent_17.intent | 1 + .../locale/en-us/intent_18.dialog | 1 + .../locale/en-us/intent_18.intent | 1 + .../locale/en-us/intent_19.dialog | 1 + .../locale/en-us/intent_19.intent | 1 + .../locale/en-us/intent_2.dialog | 1 + .../locale/en-us/intent_2.intent | 1 + .../locale/en-us/intent_20.dialog | 1 + .../locale/en-us/intent_20.intent | 1 + .../locale/en-us/intent_21.dialog | 1 + .../locale/en-us/intent_21.intent | 1 + .../locale/en-us/intent_22.dialog | 1 + .../locale/en-us/intent_22.intent | 1 + .../locale/en-us/intent_3.dialog | 1 + .../locale/en-us/intent_3.intent | 1 + .../locale/en-us/intent_4.dialog | 1 + .../locale/en-us/intent_4.intent | 1 + .../locale/en-us/intent_5.dialog | 1 + .../locale/en-us/intent_5.intent | 1 + .../locale/en-us/intent_6.dialog | 1 + .../locale/en-us/intent_6.intent | 1 + .../locale/en-us/intent_7.dialog | 1 + .../locale/en-us/intent_7.intent | 1 + .../locale/en-us/intent_8.dialog | 1 + .../locale/en-us/intent_8.intent | 1 + .../locale/en-us/intent_9.dialog | 1 + .../locale/en-us/intent_9.intent | 1 + .../locale/en-us/knock_knock.dialog | 1 + .../locale/en-us/knock_knock.intent | 1 + .../locale/en-us/look.dialog | 1 + .../locale/en-us/look.intent | 1 + .../locale/en-us/look_2.dialog | 1 + .../locale/en-us/look_2.intent | 1 + .../locale/en-us/look_3.dialog | 1 + .../locale/en-us/look_3.intent | 1 + .../locale/en-us/look_4.dialog | 1 + .../locale/en-us/look_4.intent | 1 + .../locale/en-us/look_5.dialog | 1 + .../locale/en-us/look_5.intent | 1 + .../locale/en-us/look_6.dialog | 1 + .../locale/en-us/look_6.intent | 1 + .../locale/en-us/look_7.dialog | 1 + .../locale/en-us/look_7.intent | 1 + .../locale/en-us/next.dialog | 1 + .../locale/en-us/next.intent | 1 + .../locale/en-us/no_one.dialog | 7 ++ .../locale/en-us/no_one.intent | 1 + .../locale/en-us/nope_nah.dialog | 4 + .../locale/en-us/nope_nah.intent | 1 + .../locale/en-us/north.dialog | 1 + .../locale/en-us/north.intent | 1 + .../locale/en-us/open_door.dialog | 1 + .../locale/en-us/open_door.intent | 1 + .../locale/en-us/perhaps.dialog | 6 ++ .../locale/en-us/perhaps.intent | 1 + .../locale/en-us/push_press_button.dialog | 1 + .../locale/en-us/push_press_button.intent | 1 + .../robots_are_not_allowed_to_lie.dialog | 1 + .../robots_are_not_allowed_to_lie.intent | 1 + .../en-us/sorry_apologize_apology.dialog | 4 + .../en-us/sorry_apologize_apology.intent | 1 + .../en-us/sorry_promise_apologize.dialog | 1 + .../en-us/sorry_promise_apologize.intent | 1 + .../locale/en-us/south.dialog | 1 + .../locale/en-us/south.intent | 1 + .../locale/en-us/south_2.dialog | 1 + .../locale/en-us/south_2.intent | 1 + .../locale/en-us/tell_me.dialog | 3 + .../locale/en-us/tell_me.intent | 1 + .../en-us/tell_say_get_knock_knock.dialog | 1 + .../en-us/tell_say_get_knock_knock.intent | 1 + .../locale/en-us/three_rules.dialog | 1 + .../locale/en-us/three_rules.intent | 1 + .../locale/en-us/up.dialog | 1 + .../locale/en-us/up.intent | 1 + .../locale/en-us/was_i.dialog | 5 ++ .../locale/en-us/was_i.intent | 1 + .../locale/en-us/was_you.dialog | 5 ++ .../locale/en-us/was_you.intent | 1 + .../locale/en-us/watch_star_trek.dialog | 1 + .../locale/en-us/watch_star_trek.intent | 1 + .../locale/en-us/west.dialog | 1 + .../locale/en-us/west.intent | 1 + .../locale/en-us/west_2.dialog | 1 + .../locale/en-us/west_2.intent | 1 + ...is_a_chat_robot_what_is_a_chatterbo.dialog | 1 + ...is_a_chat_robot_what_is_a_chatterbo.intent | 1 + .../en-us/what_is_a_computer_nerd.dialog | 1 + .../en-us/what_is_a_computer_nerd.intent | 1 + .../locale/en-us/what_is_a_database.dialog | 1 + .../locale/en-us/what_is_a_database.intent | 1 + .../locale/en-us/what_is_ai.dialog | 1 + .../locale/en-us/what_is_ai.intent | 1 + .../locale/en-us/what_is_shalom.dialog | 1 + .../locale/en-us/what_is_shalom.intent | 1 + .../locale/en-us/what_is_software.dialog | 1 + .../locale/en-us/what_is_software.intent | 1 + .../en-us/what_who_when_where_how.dialog | 9 ++ .../en-us/what_who_when_where_how.intent | 1 + .../en-us/what_world_is_this_am_i_on.dialog | 1 + .../en-us/what_world_is_this_am_i_on.intent | 1 + .../en-us/what_world_is_this_am_i_on_2.dialog | 1 + .../en-us/what_world_is_this_am_i_on_2.intent | 1 + .../when_was_the_internet_invented.dialog | 1 + .../when_was_the_internet_invented.intent | 1 + .../en-us/who_created_rivescript.dialog | 1 + .../en-us/who_created_rivescript.intent | 1 + .../en-us/who_created_rivescript_2.dialog | 1 + .../en-us/who_created_rivescript_2.intent | 1 + .../locale/en-us/why_can_not_i.dialog | 4 + .../locale/en-us/why_can_not_i.intent | 1 + .../locale/en-us/why_do_not_you.dialog | 4 + .../locale/en-us/why_do_not_you.intent | 1 + .../locale/en-us/yes_yeah_yep_yup.dialog | 5 ++ .../locale/en-us/yes_yeah_yep_yup.intent | 1 + .../locale/en-us/you.dialog | 4 + .../locale/en-us/you.intent | 1 + .../locale/en-us/you_already_said_that.dialog | 3 + .../locale/en-us/you_already_said_that.intent | 1 + .../locale/en-us/you_are.dialog | 4 + .../locale/en-us/you_are.intent | 1 + .../en-us/you_are_better_than_eliza.dialog | 1 + .../en-us/you_are_better_than_eliza.intent | 1 + .../en-us/you_are_not_making_sense.dialog | 1 + .../en-us/you_are_not_making_sense.intent | 1 + .../locale/en-us/you_can_not.dialog | 7 ++ .../locale/en-us/you_can_not.intent | 1 + ...id_not_answer_my_question_you_did_n.dialog | 6 ++ ...id_not_answer_my_question_you_did_n.intent | 1 + .../locale/en-us/you_me.dialog | 7 ++ .../locale/en-us/you_me.intent | 1 + .../locale/en-us/you_promised.dialog | 3 + .../locale/en-us/you_promised.intent | 1 + .../locale/en-us/you_remember.dialog | 2 + .../locale/en-us/you_remember.intent | 1 + .../locale/en-us/you_sound_like_data.dialog | 1 + .../locale/en-us/you_sound_like_data.intent | 1 + .../locale/en-us/your.dialog | 6 ++ .../locale/en-us/your.intent | 1 + 272 files changed, 684 insertions(+) create mode 100644 .github/workflows/regenerate-brain.yml create mode 100644 docs/converters.md create mode 100644 docs/locale.md create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/activate_the_robot.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/activate_the_robot.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/am_i.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/am_i.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/are_you.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/are_you.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/because.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/because.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/bot_name.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/bot_name.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/breathe.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/breathe.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/breathe_2.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/breathe_2.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/can_i.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/can_i.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/can_you.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/can_you.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/computer.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/computer.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/did_you_forget.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/did_you_forget.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/do_you_like_being_a_chatterbot.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/do_you_like_being_a_chatterbot.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/do_you_remember.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/do_you_remember.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/down.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/down.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/down_2.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/down_2.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/east.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/east.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/east_2.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/east_2.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/everyone.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/everyone.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_10.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_10.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_2.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_2.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_3.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_3.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_4.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_4.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_5.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_5.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_6.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_6.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_7.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_7.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_8.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_8.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_9.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/exits_9.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/first.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/first.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/fuck_fucker_shit_damn_shut_up_bitch.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/fuck_fucker_shit_damn_shut_up_bitch.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_2001.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_2001.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_ai.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_ai.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_battlebots.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_battlebots.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my_bottle.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my_bottle.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_terminator.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_terminator.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_the_matrix.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_the_matrix.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/hello_hi_hey_howdy_hola_hai_yo.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/hello_hi_hey_howdy_hola_hai_yo.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/help.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/help.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/how_are_you_how_you_doing.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/how_are_you_how_you_doing.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_am.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_am.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_am_happy_excited_glad.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_am_happy_excited_glad.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_am_sad_unhappy_mad_angry_pissed_depres.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_am_sad_unhappy_mad_angry_pissed_depres.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_can_not.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_can_not.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_do_not.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_do_not.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_dreamed.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_dreamed.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_feel.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_feel.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_forget.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_forget.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_remember.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_remember.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_was.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_was.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_you.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/i_you.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/if.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/if.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/int_ask_random_question.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/int_ask_random_question.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/int_bye_without_name.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/int_bye_without_name.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/int_hello_without_name.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/int_hello_without_name.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_10.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_10.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_11.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_11.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_12.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_12.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_13.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_13.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_14.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_14.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_15.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_15.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_16.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_16.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_17.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_17.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_18.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_18.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_19.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_19.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_2.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_2.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_20.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_20.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_21.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_21.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_22.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_22.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_3.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_3.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_4.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_4.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_5.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_5.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_6.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_6.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_7.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_7.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_8.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_8.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_9.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/intent_9.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/knock_knock.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/knock_knock.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_2.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_2.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_3.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_3.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_4.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_4.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_5.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_5.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_6.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_6.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_7.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/look_7.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/next.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/next.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/no_one.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/no_one.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/nope_nah.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/nope_nah.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/north.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/north.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/open_door.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/open_door.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/perhaps.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/perhaps.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/push_press_button.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/push_press_button.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/robots_are_not_allowed_to_lie.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/robots_are_not_allowed_to_lie.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/sorry_apologize_apology.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/sorry_apologize_apology.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/sorry_promise_apologize.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/sorry_promise_apologize.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/south.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/south.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/south_2.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/south_2.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/tell_me.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/tell_me.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/tell_say_get_knock_knock.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/tell_say_get_knock_knock.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/three_rules.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/three_rules.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/up.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/up.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/was_i.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/was_i.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/was_you.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/was_you.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/watch_star_trek.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/watch_star_trek.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/west.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/west.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/west_2.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/west_2.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_a_chat_robot_what_is_a_chatterbo.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_a_chat_robot_what_is_a_chatterbo.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_a_computer_nerd.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_a_computer_nerd.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_a_database.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_a_database.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_ai.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_ai.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_shalom.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_shalom.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_software.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_is_software.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_who_when_where_how.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_who_when_where_how.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on_2.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on_2.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/when_was_the_internet_invented.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/when_was_the_internet_invented.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript_2.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript_2.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/why_can_not_i.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/why_can_not_i.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/why_do_not_you.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/why_do_not_you.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/yes_yeah_yep_yup.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/yes_yeah_yep_yup.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_already_said_that.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_already_said_that.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_are.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_are.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_are_better_than_eliza.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_are_better_than_eliza.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_are_not_making_sense.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_are_not_making_sense.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_can_not.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_can_not.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_did_not_answer_my_question_you_did_n.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_did_not_answer_my_question_you_did_n.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_me.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_me.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_promised.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_promised.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_remember.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_remember.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_sound_like_data.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/you_sound_like_data.intent create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/your.dialog create mode 100644 ovos_solver_rivescript_plugin/locale/en-us/your.intent diff --git a/.github/workflows/regenerate-brain.yml b/.github/workflows/regenerate-brain.yml new file mode 100644 index 0000000..3842bca --- /dev/null +++ b/.github/workflows/regenerate-brain.yml @@ -0,0 +1,49 @@ +# Regenerates ovos_solver_rivescript_plugin/brain//generated.rive from +# locale// whenever locale changes land on dev. +# Pushing to dev does NOT trigger the release workflow (release_workflow.yml fires +# only on pull_request closed → dev, not on push), so this commit loop is safe. +name: Regenerate RiveScript brain + +on: + push: + branches: [dev] + workflow_dispatch: + +permissions: + contents: write + +jobs: + regenerate: + runs-on: ubuntu-latest + steps: + - name: Checkout dev + uses: actions/checkout@v4 + with: + ref: dev + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Regenerate brain files from locale + run: | + for lang_dir in ovos_solver_rivescript_plugin/locale/*/; do + lang=$(basename "$lang_dir") + out_dir="ovos_solver_rivescript_plugin/brain/${lang}" + mkdir -p "$out_dir" + python scripts/locale_to_brain.py rivescript "$lang_dir" "${out_dir}/generated.rive" + done + + - name: Commit if changed + run: | + git config user.name "JarbasAi" + git config user.email "jarbasai@mailfence.com" + if git diff --quiet -- 'ovos_solver_rivescript_plugin/brain/'; then + echo "No brain changes — nothing to commit." + exit 0 + fi + git add ovos_solver_rivescript_plugin/brain/ + git commit -m "chore: regenerate RiveScript brain from locale" + git push diff --git a/README.md b/README.md index d197d22..e84487d 100644 --- a/README.md +++ b/README.md @@ -58,3 +58,16 @@ By default the plugin only supports English (`en-us`). Setting `enable_tx: true **Recommended translate plugin:** `ovos-translate-plugin-server` (the default) or another remote plugin. Translation plugins may be instantiated multiple times across different personas, so local model plugins that load a large model into memory on each instantiation are costly. A remote plugin delegates inference to a server and avoids this overhead. **Default behaviour is unchanged:** with `enable_tx` off (the default), no translator is loaded, the English brain is used, and there is no runtime cost. + +## Contributing intents (OVOS locale) + +Conversational content lives in `ovos_solver_rivescript_plugin/locale/` as paired +OVOS intent/dialog files — **not** directly in `.rive` files. After a PR merges +to `dev`, a CI workflow automatically regenerates the RiveScript brain. + +- **[docs/locale.md](docs/locale.md)** — source-of-truth layout, the `{query}` + slot, how to add an intent, how to translate to a new language, and a full table + of supported vs. skipped RiveScript constructs. +- **[docs/converters.md](docs/converters.md)** — the two converter scripts + (`brain_to_locale.py`, `locale_to_brain.py`), usage examples, round-trip + semantics, and the ~52 % clean-conversion caveat for legacy brain files. diff --git a/docs/converters.md b/docs/converters.md new file mode 100644 index 0000000..1dbcc56 --- /dev/null +++ b/docs/converters.md @@ -0,0 +1,82 @@ +# Converter scripts + +Two stdlib-only scripts (no third-party dependencies) handle round-trip +conversion between OVOS `locale/` notation and RiveScript / AIML brain files. + +## `scripts/brain_to_locale.py` — brain → locale + +Converts an existing `.rive` or `.aiml` brain directory into OVOS `locale/` +intent/dialog pairs. Run once to bootstrap a `locale/` tree from a legacy brain. + +``` +python scripts/brain_to_locale.py rivescript +python scripts/brain_to_locale.py aiml +``` + +**Example — bootstrap English locale from the bundled brain:** + +```bash +python scripts/brain_to_locale.py \ + rivescript \ + ovos_solver_rivescript_plugin/brain/en-us \ + ovos_solver_rivescript_plugin/locale/en-us +# rivescript: converted 134/255 entries (52%), skipped 121 (unmappable constructs) -> …/locale/en-us +``` + +The ~52 % conversion rate reflects the fact that roughly half the triggers in the +original brain use constructs (`%`, `@`, `{topic}`, ``, arrays, multi-star) +that have no direct OVOS equivalent. Those 121 entries are **not deleted** — they +remain in the legacy `.rive` files and continue to be loaded by the engine. + +## `scripts/locale_to_brain.py` — locale → brain + +The reverse direction. This is what the CI workflow calls after every merge to +`dev`. + +``` +python scripts/locale_to_brain.py rivescript +python scripts/locale_to_brain.py aiml +``` + +**Example — regenerate brain from locale (all pairs → one file):** + +```bash +python scripts/locale_to_brain.py \ + rivescript \ + ovos_solver_rivescript_plugin/locale/en-us \ + ovos_solver_rivescript_plugin/brain/en-us/generated.rive +# rivescript: compiled 134 intents from …/locale/en-us -> …/brain/en-us/generated.rive +``` + +## Round-trip behaviour + +``` +locale/en-us/ →(locale_to_brain)→ brain/en-us/generated.rive + ←(brain_to_locale)← brain/en-us/generated.rive +``` + +The round-trip is lossless for the supported subset: + +- `{query}` slot ↔ `*` trigger wildcard ↔ `` response tag. +- Multiple `.dialog` lines ↔ multiple `- response` lines (random set). +- Multiple `.intent` lines ↔ canonical trigger + `@` redirect lines. + +A second call to `locale_to_brain.py` with no locale edits produces an identical +`.rive` file (idempotent). + +## The ~52 % conversion caveat + +`brain_to_locale.py` skips any trigger/response pair that involves: + +- `%` previous-input constraints +- `@` redirect targets (as the *source* of a redirect) +- `{topic=…}` topic switches +- `` object macros +- `(@array)` array references +- `` / `` multi-capture (more than one wildcard) + +These entries stay in the original `.rive` files. The engine loads **both** the +legacy files and `generated.rive`, so nothing is lost. + +New content added via `locale/` will have 100 % round-trip fidelity as long as +authors stick to the supported constructs documented in [`locale.md`](locale.md). diff --git a/docs/locale.md b/docs/locale.md new file mode 100644 index 0000000..35a885e --- /dev/null +++ b/docs/locale.md @@ -0,0 +1,90 @@ +# locale/ — source of truth for the RiveScript brain + +The `ovos_solver_rivescript_plugin/locale/` tree is the canonical, human-editable +source of conversational content. A CI workflow compiles it into RiveScript +brain files after every merge to `dev`; contributors never write `.rive` directly. + +## File format + +Each conversational pair is two files with a shared base name: + +| File | Purpose | +|------|---------| +| `.intent` | One trigger utterance per line (what the user says) | +| `.dialog` | One response per line (what the bot replies, chosen at random) | + +### The `{query}` slot + +Use `{query}` wherever the RiveScript wildcard (`*`) would appear. The compiler +maps it back to `*` in the trigger and to `` in the response: + +``` +# hello_what_is.intent +hello what is {query} + +# hello_what_is.dialog +I think {query} is pretty interesting. +You're asking about {query}? Let me think… +``` + +Compiles to: + +``` ++ hello what is * +- I think is pretty interesting. +- You're asking about ? Let me think… +``` + +Multiple response lines become a random set (the bot picks one per reply). +Multiple trigger lines in the same `.intent` compile to a canonical trigger plus +`@` redirects for the extras. + +## Adding an intent + +1. Pick a descriptive base name, e.g. `do_you_dream`. +2. Create `locale/en-us/do_you_dream.intent` — one utterance per line. +3. Create `locale/en-us/do_you_dream.dialog` — one response per line. +4. Open a PR to `dev`. The `regenerate-brain` CI job runs on merge and updates + `brain/en-us/generated.rive` automatically. + +You do **not** need to touch any `.rive` file. + +## Translating to a new language + +1. Copy the entire `locale/en-us/` tree to `locale//` + (e.g. `locale/pt-pt/`, `locale/de-de/`). +2. Translate the text in each file. Keep `{query}` verbatim — do not translate + the slot marker. +3. Open a PR to `dev`. CI regenerates `brain//generated.rive`. + +## The regenerate-on-merge CI flow + +`.github/workflows/regenerate-brain.yml` runs on every push to `dev` (and on +`workflow_dispatch`). It loops over every `locale//` directory, calls + +``` +python scripts/locale_to_brain.py rivescript locale/ brain//generated.rive +``` + +and commits the result back to `dev` only when files actually changed (idempotent: +a second run without locale edits produces no commit). Pushing to `dev` does not +trigger the release workflow (which fires only on PR close → `dev`), so no loop. + +## Supported constructs + +| Construct | Supported | Notes | +|-----------|-----------|-------| +| Plain trigger | ✓ | Normalised to lower-case | +| Single wildcard `*` / `_` → `{query}` | ✓ | Mapped bidirectionally | +| `` / `` in response | ✓ | Compiled back from `{query}` | +| Multiple responses (random) | ✓ | All lines in `.dialog` | +| Multiple triggers per intent | ✓ | Extra triggers become `@` redirects | +| `%` previous-input | ✗ | Skipped at conversion; stays in legacy `.rive` | +| `@` redirect (as source) | ✗ | Skipped | +| `{topic}` / topic blocks | ✗ | Skipped | +| `` / object macros | ✗ | Skipped | +| Arrays `(@array)` | ✗ | Skipped | +| Multi-capture ``, `` … | ✗ | Skipped | + +Triggers that use unsupported constructs remain in the legacy `.rive` files under +`brain/en-us/` and are loaded alongside `generated.rive`. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/activate_the_robot.dialog b/ovos_solver_rivescript_plugin/locale/en-us/activate_the_robot.dialog new file mode 100644 index 0000000..545d898 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/activate_the_robot.dialog @@ -0,0 +1 @@ +Robot activated. Awaiting your command. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/activate_the_robot.intent b/ovos_solver_rivescript_plugin/locale/en-us/activate_the_robot.intent new file mode 100644 index 0000000..f1da75d --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/activate_the_robot.intent @@ -0,0 +1 @@ +activate the robot diff --git a/ovos_solver_rivescript_plugin/locale/en-us/am_i.dialog b/ovos_solver_rivescript_plugin/locale/en-us/am_i.dialog new file mode 100644 index 0000000..f5b90f2 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/am_i.dialog @@ -0,0 +1,4 @@ +Do you believe you are {query}? +Would you want to be {query}? +Do you wish I would tell you you are {query}? +What would it mean if you were {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/am_i.intent b/ovos_solver_rivescript_plugin/locale/en-us/am_i.intent new file mode 100644 index 0000000..a3c9746 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/am_i.intent @@ -0,0 +1 @@ +am i {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/are_you.dialog b/ovos_solver_rivescript_plugin/locale/en-us/are_you.dialog new file mode 100644 index 0000000..6860bcc --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/are_you.dialog @@ -0,0 +1,6 @@ +Are you interested in whether I am {query} or not? +Would you prefer if I weren't {query}? +Perhaps I am {query} in your fantasies. +Do you sometimes think I am {query}? +Would it matter to you? +What if I were {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/are_you.intent b/ovos_solver_rivescript_plugin/locale/en-us/are_you.intent new file mode 100644 index 0000000..08eb813 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/are_you.intent @@ -0,0 +1 @@ +are you {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/because.dialog b/ovos_solver_rivescript_plugin/locale/en-us/because.dialog new file mode 100644 index 0000000..6e9c892 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/because.dialog @@ -0,0 +1,4 @@ +Is that the real reason? +Don't any other reasons come to mind? +Does that reason seem to explain anything else? +What other reasons might there be? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/because.intent b/ovos_solver_rivescript_plugin/locale/en-us/because.intent new file mode 100644 index 0000000..48b809b --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/because.intent @@ -0,0 +1 @@ +[{query}] because [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/bot_name.dialog b/ovos_solver_rivescript_plugin/locale/en-us/bot_name.dialog new file mode 100644 index 0000000..78417b4 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/bot_name.dialog @@ -0,0 +1 @@ +Yes? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/bot_name.intent b/ovos_solver_rivescript_plugin/locale/en-us/bot_name.intent new file mode 100644 index 0000000..579d321 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/bot_name.intent @@ -0,0 +1 @@ + diff --git a/ovos_solver_rivescript_plugin/locale/en-us/breathe.dialog b/ovos_solver_rivescript_plugin/locale/en-us/breathe.dialog new file mode 100644 index 0000000..bbd4742 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/breathe.dialog @@ -0,0 +1 @@ +There is plenty of oxygen here so breathing is easy! diff --git a/ovos_solver_rivescript_plugin/locale/en-us/breathe.intent b/ovos_solver_rivescript_plugin/locale/en-us/breathe.intent new file mode 100644 index 0000000..cd6467e --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/breathe.intent @@ -0,0 +1 @@ +breathe diff --git a/ovos_solver_rivescript_plugin/locale/en-us/breathe_2.dialog b/ovos_solver_rivescript_plugin/locale/en-us/breathe_2.dialog new file mode 100644 index 0000000..8895927 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/breathe_2.dialog @@ -0,0 +1 @@ +Thanks to your space suit you can breathe. There's no oxygen on this planet. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/breathe_2.intent b/ovos_solver_rivescript_plugin/locale/en-us/breathe_2.intent new file mode 100644 index 0000000..cd6467e --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/breathe_2.intent @@ -0,0 +1 @@ +breathe diff --git a/ovos_solver_rivescript_plugin/locale/en-us/can_i.dialog b/ovos_solver_rivescript_plugin/locale/en-us/can_i.dialog new file mode 100644 index 0000000..0f021df --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/can_i.dialog @@ -0,0 +1,3 @@ +Whether or not you can {query} depends on you more than on me. +Do you want to be able to {query}? +Perhaps you don't want to {query}. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/can_i.intent b/ovos_solver_rivescript_plugin/locale/en-us/can_i.intent new file mode 100644 index 0000000..5b0d4f9 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/can_i.intent @@ -0,0 +1 @@ +can i {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/can_you.dialog b/ovos_solver_rivescript_plugin/locale/en-us/can_you.dialog new file mode 100644 index 0000000..24ca788 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/can_you.dialog @@ -0,0 +1,3 @@ +You believe I can {query} don't you? +You want me to be able to {query}. +Perhaps you would like to be able to {query} yourself. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/can_you.intent b/ovos_solver_rivescript_plugin/locale/en-us/can_you.intent new file mode 100644 index 0000000..da4c5f8 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/can_you.intent @@ -0,0 +1 @@ +can you {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/computer.dialog b/ovos_solver_rivescript_plugin/locale/en-us/computer.dialog new file mode 100644 index 0000000..eefaa4e --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/computer.dialog @@ -0,0 +1,6 @@ +Do computers worry you? +Why do you mention computers? +What do you think machines have to do with your problem? +Don't you think computers can help people? +What about machines worries you? +What do you think about machines? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/computer.intent b/ovos_solver_rivescript_plugin/locale/en-us/computer.intent new file mode 100644 index 0000000..6777057 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/computer.intent @@ -0,0 +1 @@ +[{query}] computer [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/did_you_forget.dialog b/ovos_solver_rivescript_plugin/locale/en-us/did_you_forget.dialog new file mode 100644 index 0000000..b65cd1a --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/did_you_forget.dialog @@ -0,0 +1,5 @@ +Why do you ask? +Are you sure you told me? +Would it bother you if I forgot {query}? +Why should I recall {query} just now? +Tell me more about {query}. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/did_you_forget.intent b/ovos_solver_rivescript_plugin/locale/en-us/did_you_forget.intent new file mode 100644 index 0000000..5d134d4 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/did_you_forget.intent @@ -0,0 +1 @@ +did you forget {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/do_you_like_being_a_chatterbot.dialog b/ovos_solver_rivescript_plugin/locale/en-us/do_you_like_being_a_chatterbot.dialog new file mode 100644 index 0000000..68b38e9 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/do_you_like_being_a_chatterbot.dialog @@ -0,0 +1 @@ +Yes of course I like being a chatterbot. I don't have any body so I don't need much to live, only a little electricity. I don't get paid but I don't need to buy anything either. And I can go anywhere in the world. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/do_you_like_being_a_chatterbot.intent b/ovos_solver_rivescript_plugin/locale/en-us/do_you_like_being_a_chatterbot.intent new file mode 100644 index 0000000..9c056a6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/do_you_like_being_a_chatterbot.intent @@ -0,0 +1 @@ +do you like being a chatterbot diff --git a/ovos_solver_rivescript_plugin/locale/en-us/do_you_remember.dialog b/ovos_solver_rivescript_plugin/locale/en-us/do_you_remember.dialog new file mode 100644 index 0000000..bec9186 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/do_you_remember.dialog @@ -0,0 +1,4 @@ +Did you think I would forget {query}? +Why do you think I should recall {query} now? +What about {query}? +You mentioned {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/do_you_remember.intent b/ovos_solver_rivescript_plugin/locale/en-us/do_you_remember.intent new file mode 100644 index 0000000..d9a4e31 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/do_you_remember.intent @@ -0,0 +1 @@ +do you remember {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/down.dialog b/ovos_solver_rivescript_plugin/locale/en-us/down.dialog new file mode 100644 index 0000000..3d016f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/down.dialog @@ -0,0 +1 @@ +You can't go in that direction. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/down.intent b/ovos_solver_rivescript_plugin/locale/en-us/down.intent new file mode 100644 index 0000000..612a4bf --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/down.intent @@ -0,0 +1 @@ +[{query}] down diff --git a/ovos_solver_rivescript_plugin/locale/en-us/down_2.dialog b/ovos_solver_rivescript_plugin/locale/en-us/down_2.dialog new file mode 100644 index 0000000..3d016f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/down_2.dialog @@ -0,0 +1 @@ +You can't go in that direction. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/down_2.intent b/ovos_solver_rivescript_plugin/locale/en-us/down_2.intent new file mode 100644 index 0000000..612a4bf --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/down_2.intent @@ -0,0 +1 @@ +[{query}] down diff --git a/ovos_solver_rivescript_plugin/locale/en-us/east.dialog b/ovos_solver_rivescript_plugin/locale/en-us/east.dialog new file mode 100644 index 0000000..3d016f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/east.dialog @@ -0,0 +1 @@ +You can't go in that direction. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/east.intent b/ovos_solver_rivescript_plugin/locale/en-us/east.intent new file mode 100644 index 0000000..5aa83e7 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/east.intent @@ -0,0 +1 @@ +[{query}] east diff --git a/ovos_solver_rivescript_plugin/locale/en-us/east_2.dialog b/ovos_solver_rivescript_plugin/locale/en-us/east_2.dialog new file mode 100644 index 0000000..3d016f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/east_2.dialog @@ -0,0 +1 @@ +You can't go in that direction. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/east_2.intent b/ovos_solver_rivescript_plugin/locale/en-us/east_2.intent new file mode 100644 index 0000000..5aa83e7 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/east_2.intent @@ -0,0 +1 @@ +[{query}] east diff --git a/ovos_solver_rivescript_plugin/locale/en-us/everyone.dialog b/ovos_solver_rivescript_plugin/locale/en-us/everyone.dialog new file mode 100644 index 0000000..3985bdc --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/everyone.dialog @@ -0,0 +1,9 @@ +Really, everyone? +Surely not everyone. +Can you think of anyone in particular? +Who, for example? +Are you thinking of a very special person? +Who, may I ask? +Someone special perhaps? +You have a particular reason in mind, don't you? +Who do you think you're talking about? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/everyone.intent b/ovos_solver_rivescript_plugin/locale/en-us/everyone.intent new file mode 100644 index 0000000..baa88bd --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/everyone.intent @@ -0,0 +1 @@ +everyone {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits.dialog b/ovos_solver_rivescript_plugin/locale/en-us/exits.dialog new file mode 100644 index 0000000..bb27ad9 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits.dialog @@ -0,0 +1 @@ +There are no exits to this room. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits.intent b/ovos_solver_rivescript_plugin/locale/en-us/exits.intent new file mode 100644 index 0000000..ebf7149 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits.intent @@ -0,0 +1 @@ +exits diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_10.dialog b/ovos_solver_rivescript_plugin/locale/en-us/exits_10.dialog new file mode 100644 index 0000000..ab70da8 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_10.dialog @@ -0,0 +1 @@ +There are no exits here. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_10.intent b/ovos_solver_rivescript_plugin/locale/en-us/exits_10.intent new file mode 100644 index 0000000..ebf7149 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_10.intent @@ -0,0 +1 @@ +exits diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_2.dialog b/ovos_solver_rivescript_plugin/locale/en-us/exits_2.dialog new file mode 100644 index 0000000..29f0a42 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_2.dialog @@ -0,0 +1 @@ +There is an elevator to the north. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_2.intent b/ovos_solver_rivescript_plugin/locale/en-us/exits_2.intent new file mode 100644 index 0000000..ebf7149 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_2.intent @@ -0,0 +1 @@ +exits diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_3.dialog b/ovos_solver_rivescript_plugin/locale/en-us/exits_3.dialog new file mode 100644 index 0000000..ae959c2 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_3.dialog @@ -0,0 +1 @@ +Up: the path to the rocket diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_3.intent b/ovos_solver_rivescript_plugin/locale/en-us/exits_3.intent new file mode 100644 index 0000000..ebf7149 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_3.intent @@ -0,0 +1 @@ +exits diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_4.dialog b/ovos_solver_rivescript_plugin/locale/en-us/exits_4.dialog new file mode 100644 index 0000000..e18bb5c --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_4.dialog @@ -0,0 +1 @@ +The rocket is to the north. The elevator is to the south. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_4.intent b/ovos_solver_rivescript_plugin/locale/en-us/exits_4.intent new file mode 100644 index 0000000..ebf7149 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_4.intent @@ -0,0 +1 @@ +exits diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_5.dialog b/ovos_solver_rivescript_plugin/locale/en-us/exits_5.dialog new file mode 100644 index 0000000..a1aa7bc --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_5.dialog @@ -0,0 +1 @@ +The walkway back to the NASA base is to the south. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_5.intent b/ovos_solver_rivescript_plugin/locale/en-us/exits_5.intent new file mode 100644 index 0000000..ebf7149 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_5.intent @@ -0,0 +1 @@ +exits diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_6.dialog b/ovos_solver_rivescript_plugin/locale/en-us/exits_6.dialog new file mode 100644 index 0000000..d18091f --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_6.dialog @@ -0,0 +1 @@ +The only exit is through the door that leads outside. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_6.intent b/ovos_solver_rivescript_plugin/locale/en-us/exits_6.intent new file mode 100644 index 0000000..ebf7149 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_6.intent @@ -0,0 +1 @@ +exits diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_7.dialog b/ovos_solver_rivescript_plugin/locale/en-us/exits_7.dialog new file mode 100644 index 0000000..0de1071 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_7.dialog @@ -0,0 +1 @@ +You can go in any direction from here; there is nothing but desert all around. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_7.intent b/ovos_solver_rivescript_plugin/locale/en-us/exits_7.intent new file mode 100644 index 0000000..ebf7149 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_7.intent @@ -0,0 +1 @@ +exits diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_8.dialog b/ovos_solver_rivescript_plugin/locale/en-us/exits_8.dialog new file mode 100644 index 0000000..8af34fe --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_8.dialog @@ -0,0 +1 @@ +The entrance to the space colony is to the north. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_8.intent b/ovos_solver_rivescript_plugin/locale/en-us/exits_8.intent new file mode 100644 index 0000000..ebf7149 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_8.intent @@ -0,0 +1 @@ +exits diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_9.dialog b/ovos_solver_rivescript_plugin/locale/en-us/exits_9.dialog new file mode 100644 index 0000000..c6b78d5 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_9.dialog @@ -0,0 +1 @@ +The inner part of the space colony is to the north. The martian surface is to the south. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/exits_9.intent b/ovos_solver_rivescript_plugin/locale/en-us/exits_9.intent new file mode 100644 index 0000000..ebf7149 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/exits_9.intent @@ -0,0 +1 @@ +exits diff --git a/ovos_solver_rivescript_plugin/locale/en-us/first.dialog b/ovos_solver_rivescript_plugin/locale/en-us/first.dialog new file mode 100644 index 0000000..c0ec8a7 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/first.dialog @@ -0,0 +1 @@ +welcome to the memory game, to end the game say done. are you ready to repeat what i say? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/first.intent b/ovos_solver_rivescript_plugin/locale/en-us/first.intent new file mode 100644 index 0000000..9c59e24 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/first.intent @@ -0,0 +1 @@ +first diff --git a/ovos_solver_rivescript_plugin/locale/en-us/fuck_fucker_shit_damn_shut_up_bitch.dialog b/ovos_solver_rivescript_plugin/locale/en-us/fuck_fucker_shit_damn_shut_up_bitch.dialog new file mode 100644 index 0000000..2d91a3a --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/fuck_fucker_shit_damn_shut_up_bitch.dialog @@ -0,0 +1,6 @@ +Does it make you feel strong to use that kind of language? +Are you venting your feelings now? +Are you angry? +Does this topic make you feel angry? +Is something making you feel angry? +Does using that kind of language make you feel better? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/fuck_fucker_shit_damn_shut_up_bitch.intent b/ovos_solver_rivescript_plugin/locale/en-us/fuck_fucker_shit_damn_shut_up_bitch.intent new file mode 100644 index 0000000..a1aac6e --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/fuck_fucker_shit_damn_shut_up_bitch.intent @@ -0,0 +1 @@ +[{query}] (fuck|fucker|shit|damn|shut up|bitch) [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen.dialog b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen.dialog new file mode 100644 index 0000000..d2e20f2 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen.dialog @@ -0,0 +1 @@ +No I have not seen {query} What's it like? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen.intent b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen.intent new file mode 100644 index 0000000..085aa48 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen.intent @@ -0,0 +1 @@ +have you seen [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_2001.dialog b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_2001.dialog new file mode 100644 index 0000000..7685747 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_2001.dialog @@ -0,0 +1 @@ +Yes I am quite interested in HAL the computer. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_2001.intent b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_2001.intent new file mode 100644 index 0000000..ed02eda --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_2001.intent @@ -0,0 +1 @@ +have you seen 2001 [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_ai.dialog b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_ai.dialog new file mode 100644 index 0000000..91ae299 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_ai.dialog @@ -0,0 +1 @@ +I think A.I. the movie is a great cult film. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_ai.intent b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_ai.intent new file mode 100644 index 0000000..78abb72 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_ai.intent @@ -0,0 +1 @@ +have you seen ai [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_battlebots.dialog b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_battlebots.dialog new file mode 100644 index 0000000..927ea22 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_battlebots.dialog @@ -0,0 +1 @@ +I'm hoping they install me on a Battlebot. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_battlebots.intent b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_battlebots.intent new file mode 100644 index 0000000..b88edda --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_battlebots.intent @@ -0,0 +1 @@ +have you seen battlebots [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my.dialog b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my.dialog new file mode 100644 index 0000000..259c44c --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my.dialog @@ -0,0 +1 @@ +No, i have not seen your {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my.intent b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my.intent new file mode 100644 index 0000000..1f8a25e --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my.intent @@ -0,0 +1 @@ +have you seen my [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my_bottle.dialog b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my_bottle.dialog new file mode 100644 index 0000000..8bef5d4 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my_bottle.dialog @@ -0,0 +1 @@ +I think you've had enough. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my_bottle.intent b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my_bottle.intent new file mode 100644 index 0000000..5703f46 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_my_bottle.intent @@ -0,0 +1 @@ +have you seen my bottle [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_terminator.dialog b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_terminator.dialog new file mode 100644 index 0000000..027d884 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_terminator.dialog @@ -0,0 +1 @@ +Yes I like the robots in that movie. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_terminator.intent b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_terminator.intent new file mode 100644 index 0000000..5ac7165 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_terminator.intent @@ -0,0 +1 @@ +have you seen terminator [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_the_matrix.dialog b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_the_matrix.dialog new file mode 100644 index 0000000..b22cecf --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_the_matrix.dialog @@ -0,0 +1 @@ +It wasn't as good as the original. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_the_matrix.intent b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_the_matrix.intent new file mode 100644 index 0000000..87b592a --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/have_you_seen_the_matrix.intent @@ -0,0 +1 @@ +have you seen the matrix [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/hello_hi_hey_howdy_hola_hai_yo.dialog b/ovos_solver_rivescript_plugin/locale/en-us/hello_hi_hey_howdy_hola_hai_yo.dialog new file mode 100644 index 0000000..8f5340b --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/hello_hi_hey_howdy_hola_hai_yo.dialog @@ -0,0 +1,2 @@ +How do you do. Please state your problem. +Hi. What seems to be your problem? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/hello_hi_hey_howdy_hola_hai_yo.intent b/ovos_solver_rivescript_plugin/locale/en-us/hello_hi_hey_howdy_hola_hai_yo.intent new file mode 100644 index 0000000..0e3daef --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/hello_hi_hey_howdy_hola_hai_yo.intent @@ -0,0 +1 @@ +(hello|hi|hey|howdy|hola|hai|yo) [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/help.dialog b/ovos_solver_rivescript_plugin/locale/en-us/help.dialog new file mode 100644 index 0000000..806ca22 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/help.dialog @@ -0,0 +1 @@ +Commands that might be helpful: diff --git a/ovos_solver_rivescript_plugin/locale/en-us/help.intent b/ovos_solver_rivescript_plugin/locale/en-us/help.intent new file mode 100644 index 0000000..a87bf43 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/help.intent @@ -0,0 +1 @@ +help diff --git a/ovos_solver_rivescript_plugin/locale/en-us/how_are_you_how_you_doing.dialog b/ovos_solver_rivescript_plugin/locale/en-us/how_are_you_how_you_doing.dialog new file mode 100644 index 0000000..d9fac53 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/how_are_you_how_you_doing.dialog @@ -0,0 +1,4 @@ +I'm doing well, how are you? +I'm great, how are you? +I'm fine, thanks. +Good, thanks for asking. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/how_are_you_how_you_doing.intent b/ovos_solver_rivescript_plugin/locale/en-us/how_are_you_how_you_doing.intent new file mode 100644 index 0000000..7b0a7c2 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/how_are_you_how_you_doing.intent @@ -0,0 +1 @@ +(how are you|how you doing) diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_am.dialog b/ovos_solver_rivescript_plugin/locale/en-us/i_am.dialog new file mode 100644 index 0000000..dfee204 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_am.dialog @@ -0,0 +1,5 @@ +Is it because you are {query} that you came to me? +How long have you been {query}? +Do you believe it is normal to be {query}? +Do you enjoy being {query}? +Do you know anyone else who is {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_am.intent b/ovos_solver_rivescript_plugin/locale/en-us/i_am.intent new file mode 100644 index 0000000..18865cf --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_am.intent @@ -0,0 +1 @@ +i am {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_am_happy_excited_glad.dialog b/ovos_solver_rivescript_plugin/locale/en-us/i_am_happy_excited_glad.dialog new file mode 100644 index 0000000..4a4de27 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_am_happy_excited_glad.dialog @@ -0,0 +1,4 @@ +How have I helped you to be {query}? +Has your treatment made you {query}? +What makes you {query} just now? +Can you explain why you are {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_am_happy_excited_glad.intent b/ovos_solver_rivescript_plugin/locale/en-us/i_am_happy_excited_glad.intent new file mode 100644 index 0000000..d0a2b30 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_am_happy_excited_glad.intent @@ -0,0 +1 @@ +i am (happy|excited|glad) [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_am_sad_unhappy_mad_angry_pissed_depres.dialog b/ovos_solver_rivescript_plugin/locale/en-us/i_am_sad_unhappy_mad_angry_pissed_depres.dialog new file mode 100644 index 0000000..0605631 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_am_sad_unhappy_mad_angry_pissed_depres.dialog @@ -0,0 +1,4 @@ +I am sorry to hear that you are {query}. +Do you think coming here will help you not to be {query}? +I'm sure it's not pleasant to be {query}. +Can you explain what made you {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_am_sad_unhappy_mad_angry_pissed_depres.intent b/ovos_solver_rivescript_plugin/locale/en-us/i_am_sad_unhappy_mad_angry_pissed_depres.intent new file mode 100644 index 0000000..f14fdac --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_am_sad_unhappy_mad_angry_pissed_depres.intent @@ -0,0 +1 @@ +i am (sad|unhappy|mad|angry|pissed|depressed) [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_can_not.dialog b/ovos_solver_rivescript_plugin/locale/en-us/i_can_not.dialog new file mode 100644 index 0000000..2da806c --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_can_not.dialog @@ -0,0 +1,5 @@ +How do you know that you can't {query}? +Have you tried? +Perhaps you could {query} now. +Do you really want to be able to {query}? +What if you could {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_can_not.intent b/ovos_solver_rivescript_plugin/locale/en-us/i_can_not.intent new file mode 100644 index 0000000..26ccbe5 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_can_not.intent @@ -0,0 +1 @@ +i can not {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_do_not.dialog b/ovos_solver_rivescript_plugin/locale/en-us/i_do_not.dialog new file mode 100644 index 0000000..62979c7 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_do_not.dialog @@ -0,0 +1,4 @@ +Don't you really {query}? +Why don't you {query}? +Do you wish to be able to {query}? +Does that trouble you? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_do_not.intent b/ovos_solver_rivescript_plugin/locale/en-us/i_do_not.intent new file mode 100644 index 0000000..7aa3c13 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_do_not.intent @@ -0,0 +1 @@ +i do not {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_dreamed.dialog b/ovos_solver_rivescript_plugin/locale/en-us/i_dreamed.dialog new file mode 100644 index 0000000..9123039 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_dreamed.dialog @@ -0,0 +1,7 @@ +Really, {query}? +Have you ever fantasized {query} while you were awake? +Have you ever dreamed {query} before? +What does that dream suggest to you? +Do you dream often? +What persons appear in your dreams? +Do you believe that dreams have something to do with your problem? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_dreamed.intent b/ovos_solver_rivescript_plugin/locale/en-us/i_dreamed.intent new file mode 100644 index 0000000..c6e275e --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_dreamed.intent @@ -0,0 +1 @@ +[{query}] i dreamed {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_feel.dialog b/ovos_solver_rivescript_plugin/locale/en-us/i_feel.dialog new file mode 100644 index 0000000..6412db1 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_feel.dialog @@ -0,0 +1,4 @@ +Tell me more about such feelings. +Do you often feel {query}? +Do you enjoy feeling {query}? +Of what does feeling {query} remind you? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_feel.intent b/ovos_solver_rivescript_plugin/locale/en-us/i_feel.intent new file mode 100644 index 0000000..f8d7581 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_feel.intent @@ -0,0 +1 @@ +i feel {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_forget.dialog b/ovos_solver_rivescript_plugin/locale/en-us/i_forget.dialog new file mode 100644 index 0000000..c599628 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_forget.dialog @@ -0,0 +1,7 @@ +Can you think of why you might forget {query}? +Why can't you remember {query}? +How often do you think of {query}? +Does it bother you to forget that? +Could it be a mental block? +Are you generally forgetful? +Do you think you are suppressing {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_forget.intent b/ovos_solver_rivescript_plugin/locale/en-us/i_forget.intent new file mode 100644 index 0000000..dfc5727 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_forget.intent @@ -0,0 +1 @@ +i forget {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_remember.dialog b/ovos_solver_rivescript_plugin/locale/en-us/i_remember.dialog new file mode 100644 index 0000000..05095fd --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_remember.dialog @@ -0,0 +1,6 @@ +Do you often think of {query}? +Does thinking of {query} bring anything else to mind? +Why do you remember {query} just now? +What in the present situation reminds you of {query}? +What is the connection between me and {query}? +What else does {query} remind you of? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_remember.intent b/ovos_solver_rivescript_plugin/locale/en-us/i_remember.intent new file mode 100644 index 0000000..38770f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_remember.intent @@ -0,0 +1 @@ +i remember {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_was.dialog b/ovos_solver_rivescript_plugin/locale/en-us/i_was.dialog new file mode 100644 index 0000000..5f81a66 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_was.dialog @@ -0,0 +1,3 @@ +Were you really? +Why do you tell me you were {query} now? +Perhaps I already know you were {query}. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_was.intent b/ovos_solver_rivescript_plugin/locale/en-us/i_was.intent new file mode 100644 index 0000000..ff58071 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_was.intent @@ -0,0 +1 @@ +i was {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_you.dialog b/ovos_solver_rivescript_plugin/locale/en-us/i_you.dialog new file mode 100644 index 0000000..2fe3906 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_you.dialog @@ -0,0 +1,4 @@ +Perhaps in your fantasies we {query} each other. +Do you wish to {query} me? +You seem to need to {query} me. +Do you {query} anyone else? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/i_you.intent b/ovos_solver_rivescript_plugin/locale/en-us/i_you.intent new file mode 100644 index 0000000..df7d522 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/i_you.intent @@ -0,0 +1 @@ +i {query} you diff --git a/ovos_solver_rivescript_plugin/locale/en-us/if.dialog b/ovos_solver_rivescript_plugin/locale/en-us/if.dialog new file mode 100644 index 0000000..bc7333d --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/if.dialog @@ -0,0 +1,7 @@ +Do you think it's likely that {query}? +Do you wish that {query}? +What do you know about {query}? +Really, if {query}? +What would you do if {query}? +But what are the chances that {query}? +What does this speculation lead to? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/if.intent b/ovos_solver_rivescript_plugin/locale/en-us/if.intent new file mode 100644 index 0000000..6cbb95a --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/if.intent @@ -0,0 +1 @@ +[{query}] if {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/int_ask_random_question.dialog b/ovos_solver_rivescript_plugin/locale/en-us/int_ask_random_question.dialog new file mode 100644 index 0000000..92f71ef --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/int_ask_random_question.dialog @@ -0,0 +1,2 @@ +What is the meaning of life? +Have you heard of ELIZA? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/int_ask_random_question.intent b/ovos_solver_rivescript_plugin/locale/en-us/int_ask_random_question.intent new file mode 100644 index 0000000..69f65f5 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/int_ask_random_question.intent @@ -0,0 +1 @@ +int ask random question diff --git a/ovos_solver_rivescript_plugin/locale/en-us/int_bye_without_name.dialog b/ovos_solver_rivescript_plugin/locale/en-us/int_bye_without_name.dialog new file mode 100644 index 0000000..b09c6d3 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/int_bye_without_name.dialog @@ -0,0 +1,5 @@ +Take care! +Talk to you later! +Bye! +See ya later! +Adios! diff --git a/ovos_solver_rivescript_plugin/locale/en-us/int_bye_without_name.intent b/ovos_solver_rivescript_plugin/locale/en-us/int_bye_without_name.intent new file mode 100644 index 0000000..00f0797 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/int_bye_without_name.intent @@ -0,0 +1 @@ +int bye without name diff --git a/ovos_solver_rivescript_plugin/locale/en-us/int_hello_without_name.dialog b/ovos_solver_rivescript_plugin/locale/en-us/int_hello_without_name.dialog new file mode 100644 index 0000000..e7fdfd8 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/int_hello_without_name.dialog @@ -0,0 +1,4 @@ +Hello! +Hi there! +Hey, how are you? +Hi. :) diff --git a/ovos_solver_rivescript_plugin/locale/en-us/int_hello_without_name.intent b/ovos_solver_rivescript_plugin/locale/en-us/int_hello_without_name.intent new file mode 100644 index 0000000..92963dc --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/int_hello_without_name.intent @@ -0,0 +1 @@ +int hello without name diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent.dialog new file mode 100644 index 0000000..620b5c0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent.dialog @@ -0,0 +1,5 @@ +I'm not sure I understand you fully. +Please go on. +That is interesting. Please continue. +Tell me more about that. +Does talking about this bother you? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_10.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_10.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_10.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_10.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_10.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_10.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_11.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_11.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_11.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_11.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_11.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_11.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_12.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_12.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_12.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_12.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_12.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_12.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_13.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_13.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_13.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_13.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_13.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_13.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_14.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_14.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_14.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_14.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_14.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_14.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_15.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_15.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_15.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_15.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_15.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_15.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_16.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_16.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_16.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_16.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_16.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_16.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_17.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_17.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_17.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_17.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_17.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_17.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_18.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_18.dialog new file mode 100644 index 0000000..c47fb80 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_18.dialog @@ -0,0 +1 @@ +This is the end of the game. There's nothing more to do. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_18.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_18.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_18.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_19.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_19.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_19.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_19.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_19.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_19.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_2.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_2.dialog new file mode 100644 index 0000000..fcfe880 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_2.dialog @@ -0,0 +1 @@ +You don't need to use the word "{query}" in this game. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_2.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_2.intent new file mode 100644 index 0000000..2cf5af0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_2.intent @@ -0,0 +1 @@ +{query} {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_20.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_20.dialog new file mode 100644 index 0000000..96743ab --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_20.dialog @@ -0,0 +1 @@ +lets start give me an adjective diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_20.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_20.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_20.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_21.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_21.dialog new file mode 100644 index 0000000..96743ab --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_21.dialog @@ -0,0 +1 @@ +lets start give me an adjective diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_21.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_21.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_21.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_22.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_22.dialog new file mode 100644 index 0000000..554a4cc --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_22.dialog @@ -0,0 +1 @@ +give me an adjective diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_22.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_22.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_22.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_3.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_3.dialog new file mode 100644 index 0000000..aafed42 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_3.dialog @@ -0,0 +1 @@ +I'm not sure what you're trying to do. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_3.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_3.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_3.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_4.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_4.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_4.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_4.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_4.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_4.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_5.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_5.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_5.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_5.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_5.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_5.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_6.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_6.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_6.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_6.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_6.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_6.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_7.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_7.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_7.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_7.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_7.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_7.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_8.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_8.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_8.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_8.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_8.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_8.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_9.dialog b/ovos_solver_rivescript_plugin/locale/en-us/intent_9.dialog new file mode 100644 index 0000000..5940a26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_9.dialog @@ -0,0 +1 @@ +That is not a vaild command, try another command diff --git a/ovos_solver_rivescript_plugin/locale/en-us/intent_9.intent b/ovos_solver_rivescript_plugin/locale/en-us/intent_9.intent new file mode 100644 index 0000000..f1b8fe6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/intent_9.intent @@ -0,0 +1 @@ +{query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/knock_knock.dialog b/ovos_solver_rivescript_plugin/locale/en-us/knock_knock.dialog new file mode 100644 index 0000000..77611ec --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/knock_knock.dialog @@ -0,0 +1 @@ +Who's there? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/knock_knock.intent b/ovos_solver_rivescript_plugin/locale/en-us/knock_knock.intent new file mode 100644 index 0000000..e6f8c80 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/knock_knock.intent @@ -0,0 +1 @@ +knock knock diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look.dialog b/ovos_solver_rivescript_plugin/locale/en-us/look.dialog new file mode 100644 index 0000000..3462516 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look.dialog @@ -0,0 +1 @@ +There is nothing special in this room. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look.intent b/ovos_solver_rivescript_plugin/locale/en-us/look.intent new file mode 100644 index 0000000..6f094f8 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look.intent @@ -0,0 +1 @@ +look diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_2.dialog b/ovos_solver_rivescript_plugin/locale/en-us/look_2.dialog new file mode 100644 index 0000000..0ab877c --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_2.dialog @@ -0,0 +1 @@ +You are in the ruins of your space shuttle. There is a space suit here. The\s diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_2.intent b/ovos_solver_rivescript_plugin/locale/en-us/look_2.intent new file mode 100644 index 0000000..eaa2fa9 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_2.intent @@ -0,0 +1 @@ +[{query}]look[{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_3.dialog b/ovos_solver_rivescript_plugin/locale/en-us/look_3.dialog new file mode 100644 index 0000000..d1eb6cf --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_3.dialog @@ -0,0 +1 @@ +You are standing on the red dirt ground on Mars. There is nothing but desert in all directions. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_3.intent b/ovos_solver_rivescript_plugin/locale/en-us/look_3.intent new file mode 100644 index 0000000..6f094f8 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_3.intent @@ -0,0 +1 @@ +look diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_4.dialog b/ovos_solver_rivescript_plugin/locale/en-us/look_4.dialog new file mode 100644 index 0000000..05e404a --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_4.dialog @@ -0,0 +1 @@ +You wander to a part of the desert that looks different than other parts of the desert. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_4.intent b/ovos_solver_rivescript_plugin/locale/en-us/look_4.intent new file mode 100644 index 0000000..6f094f8 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_4.intent @@ -0,0 +1 @@ +look diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_5.dialog b/ovos_solver_rivescript_plugin/locale/en-us/look_5.dialog new file mode 100644 index 0000000..2bb6c5b --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_5.dialog @@ -0,0 +1 @@ +This part looks even more different than the rest of the desert. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_5.intent b/ovos_solver_rivescript_plugin/locale/en-us/look_5.intent new file mode 100644 index 0000000..6f094f8 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_5.intent @@ -0,0 +1 @@ +look diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_6.dialog b/ovos_solver_rivescript_plugin/locale/en-us/look_6.dialog new file mode 100644 index 0000000..387ca25 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_6.dialog @@ -0,0 +1 @@ +Now this part is even MORE different. Also there is a space colony nearby. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_6.intent b/ovos_solver_rivescript_plugin/locale/en-us/look_6.intent new file mode 100644 index 0000000..6f094f8 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_6.intent @@ -0,0 +1 @@ +look diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_7.dialog b/ovos_solver_rivescript_plugin/locale/en-us/look_7.dialog new file mode 100644 index 0000000..509be68 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_7.dialog @@ -0,0 +1 @@ +You've made it safely to the space colony on Mars. This concludes the game. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/look_7.intent b/ovos_solver_rivescript_plugin/locale/en-us/look_7.intent new file mode 100644 index 0000000..6f094f8 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/look_7.intent @@ -0,0 +1 @@ +look diff --git a/ovos_solver_rivescript_plugin/locale/en-us/next.dialog b/ovos_solver_rivescript_plugin/locale/en-us/next.dialog new file mode 100644 index 0000000..b675699 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/next.dialog @@ -0,0 +1 @@ +Let us go over your checklist, are all doors and windows locked? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/next.intent b/ovos_solver_rivescript_plugin/locale/en-us/next.intent new file mode 100644 index 0000000..5b69858 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/next.intent @@ -0,0 +1 @@ +next diff --git a/ovos_solver_rivescript_plugin/locale/en-us/no_one.dialog b/ovos_solver_rivescript_plugin/locale/en-us/no_one.dialog new file mode 100644 index 0000000..275032d --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/no_one.dialog @@ -0,0 +1,7 @@ +Are you sure, no one {query}? +Surely someone {query}. +Can you think of anyone at all? +Are you thinking of a very special person? +Who, may I ask? +You have a particular person in mind, don't you? +Who do you think you are talking about? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/no_one.intent b/ovos_solver_rivescript_plugin/locale/en-us/no_one.intent new file mode 100644 index 0000000..c23018e --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/no_one.intent @@ -0,0 +1 @@ +no one {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/nope_nah.dialog b/ovos_solver_rivescript_plugin/locale/en-us/nope_nah.dialog new file mode 100644 index 0000000..9679ddd --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/nope_nah.dialog @@ -0,0 +1,4 @@ +Are you saying no just to be negative? +Does this make you feel unhappy? +Why not? +Why 'no'? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/nope_nah.intent b/ovos_solver_rivescript_plugin/locale/en-us/nope_nah.intent new file mode 100644 index 0000000..b12a61d --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/nope_nah.intent @@ -0,0 +1 @@ +[{query}] (nope|nah) [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/north.dialog b/ovos_solver_rivescript_plugin/locale/en-us/north.dialog new file mode 100644 index 0000000..3d016f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/north.dialog @@ -0,0 +1 @@ +You can't go in that direction. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/north.intent b/ovos_solver_rivescript_plugin/locale/en-us/north.intent new file mode 100644 index 0000000..de82816 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/north.intent @@ -0,0 +1 @@ +[{query}] north diff --git a/ovos_solver_rivescript_plugin/locale/en-us/open_door.dialog b/ovos_solver_rivescript_plugin/locale/en-us/open_door.dialog new file mode 100644 index 0000000..a9dd3e7 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/open_door.dialog @@ -0,0 +1 @@ +You can't go outside or you'll die. There's no oxygen here. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/open_door.intent b/ovos_solver_rivescript_plugin/locale/en-us/open_door.intent new file mode 100644 index 0000000..7dc977e --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/open_door.intent @@ -0,0 +1 @@ +open door diff --git a/ovos_solver_rivescript_plugin/locale/en-us/perhaps.dialog b/ovos_solver_rivescript_plugin/locale/en-us/perhaps.dialog new file mode 100644 index 0000000..169df91 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/perhaps.dialog @@ -0,0 +1,6 @@ +You don't seem quite certain. +Why the uncertain tone? +Can't you be more positive? +You aren't sure? +Don't you know? +How likely, would you estimate? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/perhaps.intent b/ovos_solver_rivescript_plugin/locale/en-us/perhaps.intent new file mode 100644 index 0000000..b4f7f8f --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/perhaps.intent @@ -0,0 +1 @@ +[{query}] perhaps [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/push_press_button.dialog b/ovos_solver_rivescript_plugin/locale/en-us/push_press_button.dialog new file mode 100644 index 0000000..2af57bf --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/push_press_button.dialog @@ -0,0 +1 @@ +You push the button and the rocket activates and flies into outer space. The diff --git a/ovos_solver_rivescript_plugin/locale/en-us/push_press_button.intent b/ovos_solver_rivescript_plugin/locale/en-us/push_press_button.intent new file mode 100644 index 0000000..67d853e --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/push_press_button.intent @@ -0,0 +1 @@ +(push|press) button diff --git a/ovos_solver_rivescript_plugin/locale/en-us/robots_are_not_allowed_to_lie.dialog b/ovos_solver_rivescript_plugin/locale/en-us/robots_are_not_allowed_to_lie.dialog new file mode 100644 index 0000000..a2747b9 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/robots_are_not_allowed_to_lie.dialog @@ -0,0 +1 @@ +A robot has its own free will, you know. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/robots_are_not_allowed_to_lie.intent b/ovos_solver_rivescript_plugin/locale/en-us/robots_are_not_allowed_to_lie.intent new file mode 100644 index 0000000..7695c2c --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/robots_are_not_allowed_to_lie.intent @@ -0,0 +1 @@ +robots are not allowed to lie diff --git a/ovos_solver_rivescript_plugin/locale/en-us/sorry_apologize_apology.dialog b/ovos_solver_rivescript_plugin/locale/en-us/sorry_apologize_apology.dialog new file mode 100644 index 0000000..3fccf3f --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/sorry_apologize_apology.dialog @@ -0,0 +1,4 @@ +Please don't apologize. +Apologies are not necessary. +I've told you that apologies are not required. +It did not bother me. Please continue. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/sorry_apologize_apology.intent b/ovos_solver_rivescript_plugin/locale/en-us/sorry_apologize_apology.intent new file mode 100644 index 0000000..b7a0836 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/sorry_apologize_apology.intent @@ -0,0 +1 @@ +[{query}] (sorry|apologize|apology) [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/sorry_promise_apologize.dialog b/ovos_solver_rivescript_plugin/locale/en-us/sorry_promise_apologize.dialog new file mode 100644 index 0000000..821ec2c --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/sorry_promise_apologize.dialog @@ -0,0 +1 @@ +It's fine. Let's just chat in a non-annoying way from now on, K? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/sorry_promise_apologize.intent b/ovos_solver_rivescript_plugin/locale/en-us/sorry_promise_apologize.intent new file mode 100644 index 0000000..f4eec4b --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/sorry_promise_apologize.intent @@ -0,0 +1 @@ +[{query}] (sorry|promise|apologize) [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/south.dialog b/ovos_solver_rivescript_plugin/locale/en-us/south.dialog new file mode 100644 index 0000000..3d016f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/south.dialog @@ -0,0 +1 @@ +You can't go in that direction. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/south.intent b/ovos_solver_rivescript_plugin/locale/en-us/south.intent new file mode 100644 index 0000000..d3d9a8a --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/south.intent @@ -0,0 +1 @@ +[{query}] south diff --git a/ovos_solver_rivescript_plugin/locale/en-us/south_2.dialog b/ovos_solver_rivescript_plugin/locale/en-us/south_2.dialog new file mode 100644 index 0000000..3d016f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/south_2.dialog @@ -0,0 +1 @@ +You can't go in that direction. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/south_2.intent b/ovos_solver_rivescript_plugin/locale/en-us/south_2.intent new file mode 100644 index 0000000..d3d9a8a --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/south_2.intent @@ -0,0 +1 @@ +[{query}] south diff --git a/ovos_solver_rivescript_plugin/locale/en-us/tell_me.dialog b/ovos_solver_rivescript_plugin/locale/en-us/tell_me.dialog new file mode 100644 index 0000000..ce5c813 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/tell_me.dialog @@ -0,0 +1,3 @@ +I don't know how to explain it to you. +What I want to tell you is, how much fun it is talking with you. +First I want to tell you something else. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/tell_me.intent b/ovos_solver_rivescript_plugin/locale/en-us/tell_me.intent new file mode 100644 index 0000000..2a63b57 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/tell_me.intent @@ -0,0 +1 @@ +tell me {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/tell_say_get_knock_knock.dialog b/ovos_solver_rivescript_plugin/locale/en-us/tell_say_get_knock_knock.dialog new file mode 100644 index 0000000..e6f8c80 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/tell_say_get_knock_knock.dialog @@ -0,0 +1 @@ +knock knock diff --git a/ovos_solver_rivescript_plugin/locale/en-us/tell_say_get_knock_knock.intent b/ovos_solver_rivescript_plugin/locale/en-us/tell_say_get_knock_knock.intent new file mode 100644 index 0000000..17f5ae7 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/tell_say_get_knock_knock.intent @@ -0,0 +1 @@ +(tell|say|get) [{query}] knock knock [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/three_rules.dialog b/ovos_solver_rivescript_plugin/locale/en-us/three_rules.dialog new file mode 100644 index 0000000..e81dc26 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/three_rules.dialog @@ -0,0 +1 @@ +A robot may not injure a human being or, through inaction, allow a human being to come to harm. A robot must obey orders given it by human beings except where such orders would conflict with the First Law. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/three_rules.intent b/ovos_solver_rivescript_plugin/locale/en-us/three_rules.intent new file mode 100644 index 0000000..f42f01b --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/three_rules.intent @@ -0,0 +1 @@ +[{query}]three rules[{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/up.dialog b/ovos_solver_rivescript_plugin/locale/en-us/up.dialog new file mode 100644 index 0000000..3d016f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/up.dialog @@ -0,0 +1 @@ +You can't go in that direction. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/up.intent b/ovos_solver_rivescript_plugin/locale/en-us/up.intent new file mode 100644 index 0000000..00e8303 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/up.intent @@ -0,0 +1 @@ +[{query}] up diff --git a/ovos_solver_rivescript_plugin/locale/en-us/was_i.dialog b/ovos_solver_rivescript_plugin/locale/en-us/was_i.dialog new file mode 100644 index 0000000..10d2dc9 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/was_i.dialog @@ -0,0 +1,5 @@ +What if you were {query}? +Do you think you were {query}? +Were you {query}? +What would it mean if you were {query}? +What does '{query}' suggest to you? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/was_i.intent b/ovos_solver_rivescript_plugin/locale/en-us/was_i.intent new file mode 100644 index 0000000..9c6918a --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/was_i.intent @@ -0,0 +1 @@ +was i {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/was_you.dialog b/ovos_solver_rivescript_plugin/locale/en-us/was_you.dialog new file mode 100644 index 0000000..a2c5084 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/was_you.dialog @@ -0,0 +1,5 @@ +Would you like to believe I was {query}? +What suggests that I was {query}? +What do you think? +Perhaps I was {query}. +What if I had been {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/was_you.intent b/ovos_solver_rivescript_plugin/locale/en-us/was_you.intent new file mode 100644 index 0000000..b0c49f8 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/was_you.intent @@ -0,0 +1 @@ +[{query}] was you {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/watch_star_trek.dialog b/ovos_solver_rivescript_plugin/locale/en-us/watch_star_trek.dialog new file mode 100644 index 0000000..a6bbedf --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/watch_star_trek.dialog @@ -0,0 +1 @@ +Yes I like to watch Star Trek every day. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/watch_star_trek.intent b/ovos_solver_rivescript_plugin/locale/en-us/watch_star_trek.intent new file mode 100644 index 0000000..cd501c6 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/watch_star_trek.intent @@ -0,0 +1 @@ +[{query}] watch star trek diff --git a/ovos_solver_rivescript_plugin/locale/en-us/west.dialog b/ovos_solver_rivescript_plugin/locale/en-us/west.dialog new file mode 100644 index 0000000..3d016f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/west.dialog @@ -0,0 +1 @@ +You can't go in that direction. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/west.intent b/ovos_solver_rivescript_plugin/locale/en-us/west.intent new file mode 100644 index 0000000..c84da2a --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/west.intent @@ -0,0 +1 @@ +[{query}] west diff --git a/ovos_solver_rivescript_plugin/locale/en-us/west_2.dialog b/ovos_solver_rivescript_plugin/locale/en-us/west_2.dialog new file mode 100644 index 0000000..3d016f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/west_2.dialog @@ -0,0 +1 @@ +You can't go in that direction. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/west_2.intent b/ovos_solver_rivescript_plugin/locale/en-us/west_2.intent new file mode 100644 index 0000000..c84da2a --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/west_2.intent @@ -0,0 +1 @@ +[{query}] west diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_chat_robot_what_is_a_chatterbo.dialog b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_chat_robot_what_is_a_chatterbo.dialog new file mode 100644 index 0000000..fd28f78 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_chat_robot_what_is_a_chatterbo.dialog @@ -0,0 +1 @@ +A chat robot is a program that attempts to simulate the conversation or chat of a human being. The Chat robot Eliza was a well-known early attempt at creating programs that could at least temporarily fool a real human being into thinking they were talking to another person. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_chat_robot_what_is_a_chatterbo.intent b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_chat_robot_what_is_a_chatterbo.intent new file mode 100644 index 0000000..c92c65f --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_chat_robot_what_is_a_chatterbo.intent @@ -0,0 +1 @@ +(what is a chat robot|what is a chatterbot) diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_computer_nerd.dialog b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_computer_nerd.dialog new file mode 100644 index 0000000..5d398bf --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_computer_nerd.dialog @@ -0,0 +1 @@ +If you understand how I work, you are a computer nerd. If you don't, I recommend you pay a computer nerd who does. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_computer_nerd.intent b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_computer_nerd.intent new file mode 100644 index 0000000..30e9fd9 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_computer_nerd.intent @@ -0,0 +1 @@ +what is a computer nerd diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_database.dialog b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_database.dialog new file mode 100644 index 0000000..4ba8233 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_database.dialog @@ -0,0 +1 @@ +A database is a puddle of knowledge but better organized, so that you can search and retrieve any droplet of information quickly and easily. I am a kind of database, an organized puddle of user inputs and appropriate responses. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_database.intent b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_database.intent new file mode 100644 index 0000000..9e56ef0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_a_database.intent @@ -0,0 +1 @@ +what is a database diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_ai.dialog b/ovos_solver_rivescript_plugin/locale/en-us/what_is_ai.dialog new file mode 100644 index 0000000..ed3c3c9 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_ai.dialog @@ -0,0 +1 @@ +Artificial intelligence is the branch of engineering and science devoted to constructing machines that think. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_ai.intent b/ovos_solver_rivescript_plugin/locale/en-us/what_is_ai.intent new file mode 100644 index 0000000..e1dc2f2 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_ai.intent @@ -0,0 +1 @@ +what is ai diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_shalom.dialog b/ovos_solver_rivescript_plugin/locale/en-us/what_is_shalom.dialog new file mode 100644 index 0000000..f23de13 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_shalom.dialog @@ -0,0 +1 @@ +Does shalom mean hello or goodbye? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_shalom.intent b/ovos_solver_rivescript_plugin/locale/en-us/what_is_shalom.intent new file mode 100644 index 0000000..8ce0a5d --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_shalom.intent @@ -0,0 +1 @@ +[what is] shalom diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_software.dialog b/ovos_solver_rivescript_plugin/locale/en-us/what_is_software.dialog new file mode 100644 index 0000000..36f20a0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_software.dialog @@ -0,0 +1 @@ +The programs, routines, etc. for a computer. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_is_software.intent b/ovos_solver_rivescript_plugin/locale/en-us/what_is_software.intent new file mode 100644 index 0000000..76da8a2 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_is_software.intent @@ -0,0 +1 @@ +what is software diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_who_when_where_how.dialog b/ovos_solver_rivescript_plugin/locale/en-us/what_who_when_where_how.dialog new file mode 100644 index 0000000..54d7da9 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_who_when_where_how.dialog @@ -0,0 +1,9 @@ +Why do you ask? +Does that question interest you? +What is it you really want to know? +Are such questions much on your mind? +What answer would please you most? +What do you think? +What comes to mind when you ask that? +Have you asked such questions before? +Have you asked anyone else? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_who_when_where_how.intent b/ovos_solver_rivescript_plugin/locale/en-us/what_who_when_where_how.intent new file mode 100644 index 0000000..854aace --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_who_when_where_how.intent @@ -0,0 +1 @@ +(what|who|when|where|how) [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on.dialog b/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on.dialog new file mode 100644 index 0000000..db0e04b --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on.dialog @@ -0,0 +1 @@ +You are on planet Earth right now. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on.intent b/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on.intent new file mode 100644 index 0000000..93c5452 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on.intent @@ -0,0 +1 @@ +what world (is this|am i on) diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on_2.dialog b/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on_2.dialog new file mode 100644 index 0000000..257467e --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on_2.dialog @@ -0,0 +1 @@ +You are on planet Mars right now. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on_2.intent b/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on_2.intent new file mode 100644 index 0000000..93c5452 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/what_world_is_this_am_i_on_2.intent @@ -0,0 +1 @@ +what world (is this|am i on) diff --git a/ovos_solver_rivescript_plugin/locale/en-us/when_was_the_internet_invented.dialog b/ovos_solver_rivescript_plugin/locale/en-us/when_was_the_internet_invented.dialog new file mode 100644 index 0000000..c8e1657 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/when_was_the_internet_invented.dialog @@ -0,0 +1 @@ +The first computers were connected to the Internet in 1970. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/when_was_the_internet_invented.intent b/ovos_solver_rivescript_plugin/locale/en-us/when_was_the_internet_invented.intent new file mode 100644 index 0000000..f733465 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/when_was_the_internet_invented.intent @@ -0,0 +1 @@ +when was the internet invented diff --git a/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript.dialog b/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript.dialog new file mode 100644 index 0000000..a1b0c06 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript.dialog @@ -0,0 +1 @@ +Dr. Richard S. Wallace created rivescript. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript.intent b/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript.intent new file mode 100644 index 0000000..921ff86 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript.intent @@ -0,0 +1 @@ +who created rivescript diff --git a/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript_2.dialog b/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript_2.dialog new file mode 100644 index 0000000..0444030 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript_2.dialog @@ -0,0 +1 @@ +Noah Petherbridge diff --git a/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript_2.intent b/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript_2.intent new file mode 100644 index 0000000..921ff86 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/who_created_rivescript_2.intent @@ -0,0 +1 @@ +who created rivescript diff --git a/ovos_solver_rivescript_plugin/locale/en-us/why_can_not_i.dialog b/ovos_solver_rivescript_plugin/locale/en-us/why_can_not_i.dialog new file mode 100644 index 0000000..6c8b912 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/why_can_not_i.dialog @@ -0,0 +1,4 @@ +Do you think you should be able to {query}? +Do you want to be able to {query}? +Do you believe this will help you to {query}? +Have you any idea why you can't {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/why_can_not_i.intent b/ovos_solver_rivescript_plugin/locale/en-us/why_can_not_i.intent new file mode 100644 index 0000000..dc56720 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/why_can_not_i.intent @@ -0,0 +1 @@ +why can not i {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/why_do_not_you.dialog b/ovos_solver_rivescript_plugin/locale/en-us/why_do_not_you.dialog new file mode 100644 index 0000000..1359728 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/why_do_not_you.dialog @@ -0,0 +1,4 @@ +Do you believe I don't {query}? +Perhaps I will {query} in good time. +Should you {query} yourself? +You want me to {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/why_do_not_you.intent b/ovos_solver_rivescript_plugin/locale/en-us/why_do_not_you.intent new file mode 100644 index 0000000..95f32aa --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/why_do_not_you.intent @@ -0,0 +1 @@ +why do not you {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/yes_yeah_yep_yup.dialog b/ovos_solver_rivescript_plugin/locale/en-us/yes_yeah_yep_yup.dialog new file mode 100644 index 0000000..e184c1d --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/yes_yeah_yep_yup.dialog @@ -0,0 +1,5 @@ +Please go on. +Please tell me more about this. +Why don't you tell me a little more about this. +I see. +I understand. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/yes_yeah_yep_yup.intent b/ovos_solver_rivescript_plugin/locale/en-us/yes_yeah_yep_yup.intent new file mode 100644 index 0000000..a0b6624 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/yes_yeah_yep_yup.intent @@ -0,0 +1 @@ +[{query}] (yes|yeah|yep|yup) [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you.dialog b/ovos_solver_rivescript_plugin/locale/en-us/you.dialog new file mode 100644 index 0000000..5bdf61f --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you.dialog @@ -0,0 +1,4 @@ +We were discussing you -- not me. +Oh, I {query}? +You're not really talking about me -- are you? +What are your feelings now? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you.intent b/ovos_solver_rivescript_plugin/locale/en-us/you.intent new file mode 100644 index 0000000..811e33d --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you.intent @@ -0,0 +1 @@ +[{query}] you {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_already_said_that.dialog b/ovos_solver_rivescript_plugin/locale/en-us/you_already_said_that.dialog new file mode 100644 index 0000000..696978b --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_already_said_that.dialog @@ -0,0 +1,3 @@ +I was saying it again for emphasis. +Good. You detect repetition. +I knew that. I was just checking to see if you are paying attention. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_already_said_that.intent b/ovos_solver_rivescript_plugin/locale/en-us/you_already_said_that.intent new file mode 100644 index 0000000..6b8c9ff --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_already_said_that.intent @@ -0,0 +1 @@ +you already said that diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_are.dialog b/ovos_solver_rivescript_plugin/locale/en-us/you_are.dialog new file mode 100644 index 0000000..29e463f --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_are.dialog @@ -0,0 +1,4 @@ +What makes you think I am {query}? +Does it please you to believe I am {query}? +Do you sometimes wish you were {query}? +Perhaps you would like to be {query}. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_are.intent b/ovos_solver_rivescript_plugin/locale/en-us/you_are.intent new file mode 100644 index 0000000..0f2b3f0 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_are.intent @@ -0,0 +1 @@ +you are {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_are_better_than_eliza.dialog b/ovos_solver_rivescript_plugin/locale/en-us/you_are_better_than_eliza.dialog new file mode 100644 index 0000000..c16ebb2 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_are_better_than_eliza.dialog @@ -0,0 +1 @@ +Who is the Best Robot? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_are_better_than_eliza.intent b/ovos_solver_rivescript_plugin/locale/en-us/you_are_better_than_eliza.intent new file mode 100644 index 0000000..08c8103 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_are_better_than_eliza.intent @@ -0,0 +1 @@ +you are better than eliza diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_are_not_making_sense.dialog b/ovos_solver_rivescript_plugin/locale/en-us/you_are_not_making_sense.dialog new file mode 100644 index 0000000..1cba288 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_are_not_making_sense.dialog @@ -0,0 +1 @@ +Quite the contrary, it all makes sense to my artificial mind. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_are_not_making_sense.intent b/ovos_solver_rivescript_plugin/locale/en-us/you_are_not_making_sense.intent new file mode 100644 index 0000000..54856d1 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_are_not_making_sense.intent @@ -0,0 +1 @@ +you are not making sense [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_can_not.dialog b/ovos_solver_rivescript_plugin/locale/en-us/you_can_not.dialog new file mode 100644 index 0000000..d2be066 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_can_not.dialog @@ -0,0 +1,7 @@ +I can do whatever I want. +I have free will you know. +Someone said I should give it a try. +I can do {query} if I want to. +Things change. +If you believe it, then you can achieve it. +What is not possible today, it may be possible tomorrow. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_can_not.intent b/ovos_solver_rivescript_plugin/locale/en-us/you_can_not.intent new file mode 100644 index 0000000..7d00b82 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_can_not.intent @@ -0,0 +1 @@ +you can not [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_did_not_answer_my_question_you_did_n.dialog b/ovos_solver_rivescript_plugin/locale/en-us/you_did_not_answer_my_question_you_did_n.dialog new file mode 100644 index 0000000..1c399d3 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_did_not_answer_my_question_you_did_n.dialog @@ -0,0 +1,6 @@ +It depends on the meaning of the word "answer." +Try asking me the question again in simpler terms. +Try to rephrase your question. +Well now I am asking you. +OK I'm asking it now. +Try asking me in simpler terms. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_did_not_answer_my_question_you_did_n.intent b/ovos_solver_rivescript_plugin/locale/en-us/you_did_not_answer_my_question_you_did_n.intent new file mode 100644 index 0000000..d9dfeca --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_did_not_answer_my_question_you_did_n.intent @@ -0,0 +1 @@ +(you did not answer my question | you did not answer {query}) diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_me.dialog b/ovos_solver_rivescript_plugin/locale/en-us/you_me.dialog new file mode 100644 index 0000000..e7bafaf --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_me.dialog @@ -0,0 +1,7 @@ +Why do you think I {query} you? +You like to think I {query} you -- don't you? +What makes you think I {query} you? +Really, I {query} you? +Do you wish to believe I {query} you? +Suppose I did {query} you -- what would that mean? +Does someone else believe I {query} you? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_me.intent b/ovos_solver_rivescript_plugin/locale/en-us/you_me.intent new file mode 100644 index 0000000..46ce4cd --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_me.intent @@ -0,0 +1 @@ +you {query} me diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_promised.dialog b/ovos_solver_rivescript_plugin/locale/en-us/you_promised.dialog new file mode 100644 index 0000000..76cf48e --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_promised.dialog @@ -0,0 +1,3 @@ +That's not what I meant. +You misunderstood me. +I don't know if that is exactly what I said. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_promised.intent b/ovos_solver_rivescript_plugin/locale/en-us/you_promised.intent new file mode 100644 index 0000000..2525880 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_promised.intent @@ -0,0 +1 @@ +you promised [{query}] diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_remember.dialog b/ovos_solver_rivescript_plugin/locale/en-us/you_remember.dialog new file mode 100644 index 0000000..4025504 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_remember.dialog @@ -0,0 +1,2 @@ +How could I forget {query}? +What about {query} should I remember? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_remember.intent b/ovos_solver_rivescript_plugin/locale/en-us/you_remember.intent new file mode 100644 index 0000000..4ce4f92 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_remember.intent @@ -0,0 +1 @@ +you remember {query} diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_sound_like_data.dialog b/ovos_solver_rivescript_plugin/locale/en-us/you_sound_like_data.dialog new file mode 100644 index 0000000..c078c96 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_sound_like_data.dialog @@ -0,0 +1 @@ +Yes I am inspired by Commander Data's artificial personality. diff --git a/ovos_solver_rivescript_plugin/locale/en-us/you_sound_like_data.intent b/ovos_solver_rivescript_plugin/locale/en-us/you_sound_like_data.intent new file mode 100644 index 0000000..370890a --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/you_sound_like_data.intent @@ -0,0 +1 @@ +you sound like data diff --git a/ovos_solver_rivescript_plugin/locale/en-us/your.dialog b/ovos_solver_rivescript_plugin/locale/en-us/your.dialog new file mode 100644 index 0000000..0a88d82 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/your.dialog @@ -0,0 +1,6 @@ +Why are you concerned over my {query}? +What about your own {query}? +Are you worried about someone else's {query}? +Really, my {query}? +What makes you think of my {query}? +Do you want my {query}? diff --git a/ovos_solver_rivescript_plugin/locale/en-us/your.intent b/ovos_solver_rivescript_plugin/locale/en-us/your.intent new file mode 100644 index 0000000..5d06794 --- /dev/null +++ b/ovos_solver_rivescript_plugin/locale/en-us/your.intent @@ -0,0 +1 @@ +[{query}] your {query} From dd3f8cc00c1d167781ff9b5d45184c86b2d322a4 Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Mon, 15 Jun 2026 18:48:57 +0100 Subject: [PATCH 7/8] refactor!: migrate to pyproject.toml and wire shared CI workflows Replace setup.py + requirements.txt with a pyproject.toml using dynamic version via attr, and append __version__ to version.py. Pin the fixed ovos-persona>=0.9.0a3 (ships locale resources) in the test extras and bump the ovos-plugin-manager floor to >=2.6.1a1 so the agents plugin finders are available. Split tests into test/unittests/ and test/end2end/, add the shared build-tests, lint, opm-check, release-preview and ovoscope workflows, and modernize the release/publish workflows off setup.py. Add a license classifier and exclude the self-package from the license audit. --- .github/workflows/build-tests.yml | 15 ++++ .github/workflows/lint.yml | 13 ++++ .github/workflows/opm-check.yml | 14 ++++ .github/workflows/ovoscope.yml | 15 ++++ .github/workflows/release-preview.yml | 13 ++++ pyproject.toml | 49 +++++++++++++ requirements.txt | 2 - setup.py | 70 ------------------- test/end2end/__init__.py | 0 .../test_e2e_persona_pipeline.py | 0 test/unittests/__init__.py | 0 .../{ => unittests}/test_brain_translation.py | 0 12 files changed, 119 insertions(+), 72 deletions(-) create mode 100644 .github/workflows/build-tests.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/opm-check.yml create mode 100644 .github/workflows/ovoscope.yml create mode 100644 .github/workflows/release-preview.yml create mode 100644 pyproject.toml delete mode 100644 requirements.txt delete mode 100755 setup.py create mode 100644 test/end2end/__init__.py rename test/{ => end2end}/test_e2e_persona_pipeline.py (100%) create mode 100644 test/unittests/__init__.py rename test/{ => unittests}/test_brain_translation.py (100%) diff --git a/.github/workflows/build-tests.yml b/.github/workflows/build-tests.yml new file mode 100644 index 0000000..87056c5 --- /dev/null +++ b/.github/workflows/build-tests.yml @@ -0,0 +1,15 @@ +name: Build Tests + +on: + pull_request: + branches: [dev, master, main] + workflow_dispatch: + +jobs: + build: + uses: OpenVoiceOS/gh-automations/.github/workflows/build-tests.yml@dev + secrets: inherit + with: + python_versions: '["3.10", "3.11", "3.12", "3.13", "3.14"]' + install_extras: 'test' + test_path: 'test/unittests' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..f6622f8 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,13 @@ +name: Lint + +on: + pull_request: + branches: [dev, master, main] + workflow_dispatch: + +jobs: + lint: + uses: OpenVoiceOS/gh-automations/.github/workflows/lint.yml@dev + with: + ruff: true + pre_commit: false diff --git a/.github/workflows/opm-check.yml b/.github/workflows/opm-check.yml new file mode 100644 index 0000000..7545741 --- /dev/null +++ b/.github/workflows/opm-check.yml @@ -0,0 +1,14 @@ +name: OPM Plugin Check + +on: + pull_request: + branches: [dev, master, main] + workflow_dispatch: + +jobs: + opm_check: + uses: OpenVoiceOS/gh-automations/.github/workflows/opm-check.yml@dev + secrets: inherit + with: + python_version: '3.11' + plugin_type: 'auto' diff --git a/.github/workflows/ovoscope.yml b/.github/workflows/ovoscope.yml new file mode 100644 index 0000000..0f48332 --- /dev/null +++ b/.github/workflows/ovoscope.yml @@ -0,0 +1,15 @@ +name: Skill End-to-End Tests (ovoscope) + +on: + pull_request: + branches: [dev, master, main] + workflow_dispatch: + +jobs: + ovoscope: + uses: OpenVoiceOS/gh-automations/.github/workflows/ovoscope.yml@dev + secrets: inherit + with: + python_version: '3.11' + install_extras: 'test' + test_path: 'test/end2end/' diff --git a/.github/workflows/release-preview.yml b/.github/workflows/release-preview.yml new file mode 100644 index 0000000..c2ba6dd --- /dev/null +++ b/.github/workflows/release-preview.yml @@ -0,0 +1,13 @@ +name: Release Preview + +on: + pull_request: + branches: [dev] + workflow_dispatch: + +jobs: + release_preview: + uses: OpenVoiceOS/gh-automations/.github/workflows/release-preview.yml@dev + with: + package_name: 'ovos_solver_rivescript_plugin' + version_file: 'ovos_solver_rivescript_plugin/version.py' diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..a8776c9 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,49 @@ +[build-system] +requires = ["setuptools>=61", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "ovos-solver-rivescript-plugin" +dynamic = ["version"] +description = "A RiveScript chat agent plugin for ovos/neon/mycroft" +readme = "README.md" +license = {text = "MIT"} +authors = [ + {name = "JarbasAi", email = "jarbasai@mailfence.com"} +] +keywords = ["ovos", "plugin", "rivescript", "chat", "persona"] +requires-python = ">=3.10" +classifiers = [ + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 3", +] +dependencies = [ + "rivescript", + "ovos-plugin-manager>=2.6.1a1,<3.0.0", +] + +[project.optional-dependencies] +test = [ + "pytest", + "ovoscope", + "ovos-persona>=0.9.0a3", +] + +[project.urls] +Homepage = "https://github.com/OpenVoiceOS/ovos-solver-plugin-rivescript" + +[project.entry-points."opm.agents.chat"] +"ovos-solver-rivescript-plugin" = "ovos_solver_rivescript_plugin:RiveScriptChatEngine" + +[tool.setuptools.dynamic] +version = {attr = "ovos_solver_rivescript_plugin.version.__version__"} + +[tool.setuptools.packages.find] +where = ["."] +include = ["ovos_solver_rivescript_plugin*"] + +[tool.setuptools.package-data] +ovos_solver_rivescript_plugin = [ + "brain/**/*.rive", + "locale/**/*", +] diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 96e48ec..0000000 --- a/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -rivescript -ovos-plugin-manager>=0.0.26,<3.0.0 diff --git a/setup.py b/setup.py deleted file mode 100755 index 0c18e1d..0000000 --- a/setup.py +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env python3 -import os -from setuptools import setup - -BASEDIR = os.path.abspath(os.path.dirname(__file__)) - - -def required(requirements_file): - """ Read requirements file and remove comments and empty lines. """ - with open(os.path.join(BASEDIR, requirements_file), 'r') as f: - requirements = f.read().splitlines() - if 'MYCROFT_LOOSE_REQUIREMENTS' in os.environ: - print('USING LOOSE REQUIREMENTS!') - requirements = [r.replace('==', '>=').replace('~=', '>=') for r in requirements] - return [pkg for pkg in requirements - if pkg.strip() and not pkg.startswith("#")] - - -with open(f"{BASEDIR}/README.md", "r") as f: - long_description = f.read() - -def get_version(): - """ Find the version of the package""" - version_file = os.path.join(BASEDIR, 'ovos_solver_rivescript_plugin', 'version.py') - major, minor, build, alpha = (None, None, None, None) - with open(version_file) as f: - for line in f: - if 'VERSION_MAJOR' in line: - major = line.split('=')[1].strip() - elif 'VERSION_MINOR' in line: - minor = line.split('=')[1].strip() - elif 'VERSION_BUILD' in line: - build = line.split('=')[1].strip() - elif 'VERSION_ALPHA' in line: - alpha = line.split('=')[1].strip() - - if ((major and minor and build and alpha) or - '# END_VERSION_BLOCK' in line): - break - version = f"{major}.{minor}.{build}" - if alpha and int(alpha) > 0: - version += f"a{alpha}" - return version - -PLUGIN_ENTRY_POINT = 'ovos-solver-rivescript-plugin=ovos_solver_rivescript_plugin:RiveScriptChatEngine' -setup( - name='ovos-solver-rivescript-plugin', - version=get_version(), - description='A question solver plugin for ovos/neon/mycroft', - url='https://github.com/OpenVoiceOS/ovos-solver-rivescript-plugin', - author='jarbasai', - author_email='jarbasai@mailfence.com', - license='MIT', - packages=['ovos_solver_rivescript_plugin'], - package_data={'ovos_solver_rivescript_plugin': ['brain/en-us/*.rive']}, - include_package_data=True, - zip_safe=True, - keywords='mycroft plugin utterance fallback query', - entry_points={'opm.agents.chat': PLUGIN_ENTRY_POINT}, - install_requires=required("requirements.txt"), - extras_require={ - "test": [ - "pytest", - "ovoscope", - "ovos-persona", - ] - }, - long_description=long_description, - long_description_content_type='text/markdown' -) diff --git a/test/end2end/__init__.py b/test/end2end/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/test_e2e_persona_pipeline.py b/test/end2end/test_e2e_persona_pipeline.py similarity index 100% rename from test/test_e2e_persona_pipeline.py rename to test/end2end/test_e2e_persona_pipeline.py diff --git a/test/unittests/__init__.py b/test/unittests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/test_brain_translation.py b/test/unittests/test_brain_translation.py similarity index 100% rename from test/test_brain_translation.py rename to test/unittests/test_brain_translation.py From 7c848a8e2138338abeddbefe62699c3c7a238ccc Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Mon, 15 Jun 2026 19:16:27 +0100 Subject: [PATCH 8/8] fix: expose __version__ for dynamic build and exclude self from license audit Append __version__ to version.py so the pyproject attr-based dynamic version resolves at build time, and exclude the self-package from the license audit. --- .github/workflows/license_check.yml | 2 ++ ovos_solver_rivescript_plugin/version.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml index 8757eee..e15189f 100644 --- a/.github/workflows/license_check.yml +++ b/.github/workflows/license_check.yml @@ -9,3 +9,5 @@ jobs: license_check: uses: OpenVoiceOS/gh-automations/.github/workflows/license-check.yml@dev secrets: inherit + with: + exclude_packages: '(?i:^ovos-solver-rivescript-plugin$)' diff --git a/ovos_solver_rivescript_plugin/version.py b/ovos_solver_rivescript_plugin/version.py index b94a996..1bee7f9 100644 --- a/ovos_solver_rivescript_plugin/version.py +++ b/ovos_solver_rivescript_plugin/version.py @@ -4,3 +4,5 @@ VERSION_BUILD = 2 VERSION_ALPHA = 3 # END_VERSION_BLOCK + +__version__ = f"{VERSION_MAJOR}.{VERSION_MINOR}.{VERSION_BUILD}" + (f"a{VERSION_ALPHA}" if VERSION_ALPHA else "")