test: full-pipeline persona e2e via ovoscope - #12
Conversation
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>
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
I've completed the automated review of your changes. 📑I've aggregated the results of the automated checks for this PR below. ⚖️ License CheckEnsuring 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
Copyright (c) 2022 Phil Ewels Permission is hereby granted, free of charge, to any person obtaining a copy The above copyright notice and this permission notice shall be included in all THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed. 🔍 LintA detailed summary of the latest automation run. 📝 ❌ ruff: issues found — see job log 🏷️ Release PreviewEvaluating the impact of these changes on our release schedule. 📉 Current:
✅ PR title follows conventional commit format. 🚀 Release Channel Compatibility Predicted next version:
🔌 Plugin DetectionI've verified the plugin's 'fallback' behavior. 🪜 ❌ Plugin Status: ERRORS (2) Plugin Info:
Plugin Types: agents.chat OPM Detection:
Entry Point Validation:
⊘ No Issues:
🔨 Build TestsEnsuring the foundation is solid for these changes. 🏛️ ✅ All versions pass
🔌 Skill Tests (ovoscope)Viewing the skill through the Ovoscope lens! 🔬 ✅ 6/6 passed ✅ TestRivescriptPerSessionMemory — 4/4 🚌 Bus CoverageEnsuring no event path is left in the shadows. 🌑 Your automated companion in the OpenVoiceOS journey. 🤝 |
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.
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.