feat!: modernize onto the HiveMind bus-client 2.x stack - #30
Conversation
Dependencies / packaging: - consolidate requirements.txt into pyproject [project.dependencies]; drop requirements.txt + MANIFEST.in (pyproject is the single source of truth) - bump the whole graph to the bus-client 2.x stack via prerelease floor pins (no --pre): hivemind-bus-client>=0.9.2a1, ovos-bus-client>=2.0.0a3, ovos-spec-tools>=0.8.0a1, hivemind-presence>=0.0.2a2 - rename the test extra to [e2e] (hivescope>=0.5.2a1, hivemind-core>=4.6.2a1, policy plugins); keep a [test] alias and add a [license] extra Test layout: - consolidate to a single tests/ directory; drop the stale test/ dir and the redundant license_tests.py (covered by the shared license-check workflow) - remove dead importlib/skipif machinery from the bridge conformance test (the policy stack is now a hard [e2e] dependency) - add tests/e2e/test_cli_client.py: boot a real hivemind-core master in-process over hivescope's loopback WebSocket and drive the real JarbasCliTerminal over a real HiveMessageBusClient; stdin/stdout I/O is mocked (no TTY, loopback only) CI: - build_tests installs the [e2e] extra instead of pre_install_pip pins - wire missing shared gh-automations workflows @dev: lint, coverage, pip_audit, release_preview, repo_health Docs: - refresh README (install-from-source, bus-client 2.x note, testing) and add docs/development.md; drop the stale lowercase readme.md - fix bare except in __main__.py; add .gitignore and untrack committed pyc Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 23 minutes and 40 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (4)
📒 Files selected for processing (19)
✨ 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 done the heavy lifting! Here are the check results. 🏋️♂️I've aggregated the results of the automated checks for this PR below. 📋 Repo HealthEvaluating the repository's overall condition. 📋 ✅ All required files present. Latest Version: ✅ ⚖️ License CheckA detailed legal audit of your PR. 📖 ✅ No license violations found. Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed. 🏷️ Release PreviewChecking if we've met all our release criteria. ✅ Caution Breaking change — this PR will bump the MAJOR version ( Current:
✅ PR title follows conventional commit format. 🚀 Release Channel Compatibility Predicted next version:
🔍 LintThe latest findings are now at your fingertips. ⌨️ ✅ ruff: no issues 📊 CoverageQuantifying the invisible strength of your code. 💪 ❌ 27.5% total coverage Per-file coverage (3 files)
Full report: download the 🔨 Build TestsAssembling the puzzle pieces of your PR. 🧩 ✅ All versions pass
The bits must flow. 🌊 |
Modernizes the terminal client onto the bus-client 2.x stack and the shared CI.
Dependencies & packaging
requirements.txtintopyproject.toml[project.dependencies]; deletedrequirements.txt+MANIFEST.in(pyproject is the single source of truth). Nosetup.py/setup.cfgexisted.--pre):hivemind-bus-client>=0.9.2a1,hivemind-presence>=0.0.2a2,ovos-bus-client>=2.0.0a3,ovos-spec-tools>=0.8.0a1testextra to[e2e](hivescope>=0.5.2a1,hivemind-core>=4.6.2a1,hivemind-plugin-manager>=0.6.0a1,hivemind-ovos-agent-plugin>=0.3.0a1), kept a[test]alias, added a[license]extra.uv pip compile --prerelease=allow --extra e2e→ resolves toovos-bus-client==2.2.0a1,hivescope==0.5.2a1,hivemind-core==4.6.7a1. No torch/ovos-audio heaviness (62 packages, thin client).Single test directory
test/dir. Dropped the redundantlicense_tests.py(license compliance is handled by the sharedlicense-checkworkflow, as in sibling repos).importlib/skipifmachinery fromtest_bridge1_conformance.py— the policy stack is now a hard[e2e]dependency, so nothing is skipped to dodge deps.End-to-end coverage
tests/e2e/test_cli_client.py(9 tests) + acli_harnessfixture: boots a realhivemind-coremaster in-process over hivescope's loopback WebSocket and drives the realJarbasCliTerminalover a realHiveMessageBusClient. Asserts a typed utterance reaches the hub's agent bus and aspeakfrom the hub is rendered back. Terminal I/O is mocked: stdin via thesay()path (noinput()/TTY), stdout by replacingterminal.speak. No network beyond loopback; noimportorskip/skipif.Workflows (all shared gh-automations @dev)
build_tests: now installs the[e2e]extra instead ofpre_install_pippins.lint,coverage,pip_audit,release_preview,repo_health(alongside existing license/publish/release).Docs
docs/development.md; removed the stale lowercasereadme.md.Local:
pytest tests/→ 19 passed, 1 skipped, 2 xfailed;ruff checkclean;python -m buildOK.🤖 Generated with Claude Code