Skip to content

test: full-pipeline persona e2e via ovoscope - #12

Draft
JarbasAl wants to merge 8 commits into
devfrom
test/e2e-persona-pipeline
Draft

test: full-pipeline persona e2e via ovoscope#12
JarbasAl wants to merge 8 commits into
devfrom
test/e2e-persona-pipeline

Conversation

@JarbasAl

Copy link
Copy Markdown
Member

Adds test/test_e2e_persona_pipeline.py with 6 tests covering the full OVOS intent pipeline via ovoscope + ovos-persona-pipeline-plugin. Uses bundled en-us brain (RiveBot persona). No network, no keys. Adds test extras to setup.py. All 6 passed locally.

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 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 13, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c6520ccd-3cef-40aa-9c4a-dc18d071be6a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch test/e2e-persona-pipeline

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Jun 14, 2026

Copy link
Copy Markdown

I've completed the automated review of your changes. 📑

I've aggregated the results of the automated checks for this PR below.

⚖️ License Check

Ensuring our license headers are up to date for 2024. 📅

✅ No license violations found (47 packages).

License distribution: 13× MIT License, 9× MIT, 6× Apache Software License, 5× Apache-2.0, 2× BSD-3-Clause, 2× ISC License (ISCL), 2× PSF-2.0, 2× Python Software Foundation License, +6 more

Full breakdown — 47 packages
Package Version License URL
annotated-types 0.7.0 MIT License link
audioop-lts 0.2.2 PSF-2.0 link
build 1.5.0 MIT link
certifi 2026.5.20 Mozilla Public License 2.0 (MPL 2.0) link
charset-normalizer 3.4.7 MIT link
click 8.4.1 BSD-3-Clause link
combo_lock 0.3.1 Apache-2.0 link
filelock 3.29.4 MIT link
idna 3.18 BSD-3-Clause link
importlib_metadata 9.0.0 Apache-2.0 link
json-database 0.10.1 MIT link
kthread 0.2.3 MIT License link
langcodes 3.5.1 MIT License link
markdown-it-py 4.2.0 MIT License link
mdurl 0.1.2 MIT License link
memory-tempfile 2.2.3 MIT License link
ovos-config 2.1.1 Apache-2.0 link
ovos-plugin-manager 2.6.1a1 Apache-2.0 link
ovos-solver-rivescript-plugin 0.0.2a3 MIT License link
ovos-spec-tools 0.8.0a2 Apache Software License link
ovos-utils 0.8.5 Apache-2.0 link
ovos_bus_client 1.5.0 Apache Software License link
packaging 26.2 Apache-2.0 OR BSD-2-Clause link
pexpect 4.9.0 ISC License (ISCL) link
ptyprocess 0.7.0 ISC License (ISCL) link
pydantic 2.13.4 MIT link
pydantic_core 2.46.4 MIT link
pyee 12.1.1 MIT License link
Pygments 2.20.0 BSD-2-Clause link
pyproject_hooks 1.2.0 MIT License link
python-dateutil 2.9.0.post0 Apache Software License; BSD License link
PyYAML 6.0.3 MIT License link
quebra-frases 0.3.7 Apache Software License link
regex 2026.5.9 Apache-2.0 AND CNRI-Python link
requests 2.34.2 Apache Software License link
rich 13.9.4 MIT License link
rich-click 1.9.8 MIT License

Copyright (c) 2022 Phil Ewels

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
| link |
| rivescript | 1.15.0 | MIT License | link |
| six | 1.17.0 | MIT License | link |
| standard-aifc | 3.13.0 | Python Software Foundation License | link |
| standard-chunk | 3.13.0 | Python Software Foundation License | link |
| typing-inspection | 0.4.2 | MIT | link |
| typing_extensions | 4.15.0 | PSF-2.0 | link |
| urllib3 | 2.7.0 | MIT | link |
| watchdog | 6.0.0 | Apache Software License | link |
| websocket-client | 1.9.0 | Apache Software License | link |
| zipp | 4.1.0 | MIT | link |

Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed.

🔍 Lint

A detailed summary of the latest automation run. 📝

ruff: issues found — see job log

🏷️ Release Preview

Evaluating the impact of these changes on our release schedule. 📉

Current: 0.0.2a3Next: 0.0.2a4

Signal Value
Label (none)
PR title test: full-pipeline persona e2e via ovoscope
Bump alpha

✅ PR title follows conventional commit format.


🚀 Release Channel Compatibility

Predicted next version: 0.0.2a4

Channel Status Note Current Constraint
Stable Not in channel -
Testing Not in channel -
Alpha Compatible ovos-solver-rivescript-plugin>=0.0.2a2

🔌 Plugin Detection

I've verified the plugin's 'fallback' behavior. 🪜

Plugin Status: ERRORS (2)

Plugin Info:

  • Name: ovos-solver-rivescript-plugin
  • Description: A RiveScript chat agent plugin for ovos/neon/mycroft

Plugin Types: agents.chat

OPM Detection:

Plugin Type Wheel Editable
agents.chat

Entry Point Validation:

Entry Point Type Import Interface
ovos-solver-rivescript-plugin agents.chat ✅ 2071ms

⊘ No settingsmeta.json
requires-python >=3.10 — running Python 3.11

Issues:

  • ❌ OPM could not detect opm.agents.chat
  • ❌ Import time for ovos-solver-rivescript-plugin exceeds 500ms (2071ms)
  • ⚠️ No settingsmeta.json found

🔨 Build Tests

Ensuring the foundation is solid for these changes. 🏛️

✅ All versions pass

Python Build Install Tests
3.10
3.11
3.12
3.13
3.14

🔌 Skill Tests (ovoscope)

Viewing the skill through the Ovoscope lens! 🔬

6/6 passed

TestRivescriptPerSessionMemory — 4/4
TestRivescriptPersonaSpeaksThroughPipeline — 2/2

🚌 Bus Coverage

Ensuring no event path is left in the shadows. 🌑

⚠️ Bus coverage report unavailable — check the job log.


Your automated companion in the OpenVoiceOS journey. 🤝

JarbasAl and others added 6 commits June 14, 2026 15:44
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.
… 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/<lang>-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 <noreply@anthropic.com>
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).
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/<lang>/ → brain/<lang>/generated.rive and commits back
to dev only when files changed (idempotent).
Add docs/locale.md and docs/converters.md; link from README.
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.
…se 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant