5645169c8f
Surgical reapply of #53505 by @LeonSGP43 onto current main (stale-base cherry-pick conflicted in main.py): - _refresh_active_memory_provider_dependencies() in hermes_cli/main.py, wired into BOTH the git-pull update path (after lazy refresh) and the ZIP update path — the provider's plugin.yaml bridge packages are not in extras or LAZY_DEPS, so the core reinstall could strip/downgrade them and the update flow never healed them (#53272 mem0ai). - _install_dependencies(force=True) in memory_setup.py: hand every declared spec to the resolver on update so missing AND version-drifted packages are restored (no-op when satisfied). - Skip guards: no provider / builtin store / memory.enabled=false. Widened beyond the original PR for the #70636 half: - _provider_pip_dependencies(): mode-aware expansion — Hindsight in local/local_embedded mode needs hindsight-all (daemon + embedder), not just the declared hindsight-client; setup installs it but plugin.yaml can't express it, so update-time healing previously missed hindsight-embed and the daemon stayed broken. - Spec-aware import probing: version ranges in pip_dependencies (mem0ai>=2.0.10,<3) no longer break the pip-name -> import-name mapping. Fixes #53272. Fixes the hindsight-embed half of #70636.