fix: add missing hindsight dependencies for local_embedded mode - #17851
fix: add missing hindsight dependencies for local_embedded mode#17851yesxcv wants to merge 1 commit into
Conversation
The plugin.yaml only declared hindsight-client, but the local_embedded code path also needs hindsight-embed (for daemon_embed_manager) and hindsight-all (for HindsightEmbedded client class). Without these, hermes memory status reports 'not available' even when the daemon is healthy, and HindsightEmbedded import fails at runtime.
nicoloboschi
left a comment
There was a problem hiding this comment.
if you use cloud or self hosted, this change is going to bloat your venv for nothing
teknium1
left a comment
There was a problem hiding this comment.
Thanks for tracing the local-embedded dependency path. The reported manual-configuration failure remains relevant: current main disables local_embedded when _check_local_runtime() cannot import its runtime (plugins/memory/hindsight/__init__.py:1269-1280).
Problems
- The manifest is installed before mode selection (
hermes_cli/memory_setup.py:276-283), so adding both packages topip_dependenciesinstalls the local stack for cloud andlocal_externalusers too. Current Hindsight setup intentionally installshindsight-allonly afterlocal_embeddedis selected (plugins/memory/hindsight/__init__.py:793-801). hindsight-allalready depends onhindsight-embedaccording to its PyPI metadata, so the separatehindsight-embedmanifest entry is redundant.- The diff adds no regression test for the manually configured missing-runtime path.
Suggested changes
- Rework this as a mode-aware recovery/install path rather than an unconditional manifest union.
- Add tests for manual local configuration plus cloud/local_external non-regression.
Automated hermes-sweeper review.
| description: "Hindsight — long-term memory with knowledge graph, entity resolution, and multi-strategy retrieval." | ||
| pip_dependencies: | ||
| - "hindsight-client>=0.4.22" | ||
| - "hindsight-embed>=0.5.0" |
There was a problem hiding this comment.
_install_dependencies() runs before this provider selects its mode (hermes_cli/memory_setup.py:276-283), so this makes cloud and local_external setups install the embedded stack too. hindsight-all already depends on hindsight-embed; please preserve the existing mode-aware install path instead of adding it to the unconditional manifest.
Summary
plugins/memory/hindsight/plugin.yamlonly declaredhindsight-clientas a dependency, but thelocal_embeddedcode path actually imports from two more packages:hindsight-embed→hindsight_embed.daemon_embed_manager(line 86, 1003)hindsight-all→hindsight.HindsightEmbedded(line 766)Without these,
_install_dependencies()skips them,_check_local_runtime()fails, andhermes memory statusreports "not available" even when the daemon is healthy.Fix
Added
hindsight-embed>=0.5.0andhindsight-all>=0.5.0topip_dependencies.Test Plan
hermes memory statusshows "available ✓"from hindsight import HindsightEmbeddedsucceedsimport hindsight_embed.daemon_embed_managersucceeds