Merge pull request #122125 from NousResearch/fix/drop-stale-hindsight-extra
fix(pm): hermes update no longer fails on the stale hindsight extra (#122071, salvage #122092)
This commit is contained in:
4
.github/workflows/tests-os.yml
vendored
4
.github/workflows/tests-os.yml
vendored
@@ -84,7 +84,7 @@ jobs:
|
||||
# the verified Git pin once, before per-file parallelism; otherwise
|
||||
# each isolated PowerShell stage races to download/extract the archive.
|
||||
packages: ${{ matrix.marker == 'windows' && 'git,ripgrep' || 'ripgrep' }}
|
||||
extras: '["all", "telegram", "anthropic", "mistral", "fal", "modal", "daytona", "hindsight", "parallel-web"]'
|
||||
extras: '["all", "telegram", "anthropic", "mistral", "fal", "modal", "daytona", "parallel-web"]'
|
||||
test-environment: 'true'
|
||||
prune-python-cache: true
|
||||
|
||||
@@ -194,7 +194,7 @@ jobs:
|
||||
uses: ./.github/actions/setup-pm
|
||||
with:
|
||||
packages: git,ripgrep
|
||||
extras: '["all", "telegram", "anthropic", "mistral", "fal", "modal", "daytona", "hindsight", "parallel-web"]'
|
||||
extras: '["all", "telegram", "anthropic", "mistral", "fal", "modal", "daytona", "parallel-web"]'
|
||||
test-environment: 'true'
|
||||
prune-python-cache: true
|
||||
|
||||
|
||||
4
.github/workflows/tests.yml
vendored
4
.github/workflows/tests.yml
vendored
@@ -44,7 +44,7 @@ jobs:
|
||||
- name: Set up locked Python and test dependencies
|
||||
uses: ./.github/actions/setup-pm
|
||||
with:
|
||||
extras: '["all", "anthropic", "bedrock", "mistral", "fal", "modal", "daytona", "hindsight", "parallel-web"]'
|
||||
extras: '["all", "anthropic", "bedrock", "mistral", "fal", "modal", "daytona", "parallel-web"]'
|
||||
test-environment: 'true'
|
||||
prune-python-cache: true
|
||||
|
||||
@@ -143,7 +143,7 @@ jobs:
|
||||
uses: ./.github/actions/setup-pm
|
||||
with:
|
||||
toolchain: all
|
||||
extras: '["all", "anthropic", "bedrock", "mistral", "fal", "modal", "daytona", "hindsight", "parallel-web"]'
|
||||
extras: '["all", "anthropic", "bedrock", "mistral", "fal", "modal", "daytona", "parallel-web"]'
|
||||
test-environment: 'true'
|
||||
prune-python-cache: true
|
||||
|
||||
|
||||
@@ -259,13 +259,6 @@ FROM runtime_base AS python_deps
|
||||
# Health export is enabled. Collector and observability-backend dependencies
|
||||
# remain external and are not part of the Hermes production image.
|
||||
#
|
||||
# The hindsight memory provider's client (hindsight-client) is baked in
|
||||
# for the same reason: it lazy-installs into /opt/hermes/.venv at first
|
||||
# use, which lives inside the (immutable) image layer rather than the
|
||||
# mounted /opt/data volume, so it is lost on every container recreate /
|
||||
# image update and recall/retain then fails with
|
||||
# `ModuleNotFoundError: No module named 'hindsight_client'` (#38128).
|
||||
#
|
||||
# The Matrix gateway's deps ([matrix] extra) are baked in because
|
||||
# python-olm (transitive via mautrix[encryption]) builds from source on
|
||||
# Python/image combinations without usable wheels. The Docker image is
|
||||
@@ -283,7 +276,7 @@ RUN touch ./README.md
|
||||
RUN python3 -m pm.build_env --source /opt/hermes --python /usr/local/bin/python3 \
|
||||
--out /opt/hermes/.venv --no-install-project --sealed \
|
||||
--extra all --extra messaging --extra otlp --extra anthropic --extra bedrock \
|
||||
--extra azure-identity --extra hindsight --extra matrix --extra google-chat
|
||||
--extra azure-identity --extra matrix --extra google-chat
|
||||
|
||||
# Icons render on the runtime environment: Pillow and resvg-py are core
|
||||
# dependencies. A stage of its own so the frontend stage keeps building its
|
||||
|
||||
@@ -421,7 +421,7 @@ json.dump(sorted(leaf_paths(DEFAULT_CONFIG)), sys.stdout, indent=2)
|
||||
# IS the default package, so a launcher that pinned the plain
|
||||
# default would look correct while it shipped a second
|
||||
# runtime to anyone who customises theirs.
|
||||
extraDependencyGroups = [ "hindsight" ];
|
||||
extraDependencyGroups = [ "honcho" ];
|
||||
backend = {
|
||||
mode = "serve";
|
||||
port = 9231;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# callPackage auto-wires nixpkgs args; flake inputs are passed explicitly.
|
||||
# Users override via:
|
||||
# pkgs.hermes-agent.override { extraPythonPackages = [...]; }
|
||||
# pkgs.hermes-agent.override { extraDependencyGroups = [ "hindsight" ]; }
|
||||
# pkgs.hermes-agent.override { extraDependencyGroups = [ "honcho" ]; }
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
|
||||
@@ -474,10 +474,10 @@ let
|
||||
dependencies — no PYTHONPATH patching or collision risk.
|
||||
|
||||
Use this for optional extras already declared in hermes-agent's
|
||||
pyproject.toml (e.g. "hindsight", "honcho", "voice").
|
||||
pyproject.toml (e.g. "honcho", "voice").
|
||||
Use extraPythonPackages for external packages not in pyproject.toml.
|
||||
'';
|
||||
example = [ "hindsight" ];
|
||||
example = [ "honcho" ];
|
||||
};
|
||||
|
||||
# ── Service behaviour ──────────────────────────────────────────────
|
||||
|
||||
@@ -58,7 +58,6 @@
|
||||
"fal"
|
||||
"feishu"
|
||||
"firecrawl"
|
||||
"hindsight"
|
||||
"honcho"
|
||||
"messaging"
|
||||
"modal"
|
||||
|
||||
@@ -41,7 +41,6 @@ ANCHORS: dict[str, str | tuple[str, ...]] = {
|
||||
"wake-porcupine": "pvporcupine",
|
||||
"fal": "fal_client",
|
||||
"honcho": "honcho",
|
||||
"hindsight": "hindsight_client",
|
||||
"supermemory": "supermemory",
|
||||
"mem0": "mem0",
|
||||
"messaging": "telegram",
|
||||
|
||||
@@ -254,7 +254,6 @@ piper = [
|
||||
modal = ["modal==1.3.4"]
|
||||
daytona = ["daytona==0.155.0"]
|
||||
vercel = ["vercel==0.7.2"]
|
||||
hindsight = ["hindsight-client==0.6.1"]
|
||||
google-meet = ["playwright==1.62.0", "websockets==15.0.1"]
|
||||
messaging = [
|
||||
"python-telegram-bot[webhooks]==22.8",
|
||||
@@ -362,7 +361,7 @@ google-chat = [
|
||||
doc-extract = ["firecrawl-anydoc==0.2.4"]
|
||||
trace-upload = ["huggingface-hub==1.24.0"]
|
||||
# Cloud memory providers are opt-in PM extras. They stay outside [all],
|
||||
# like honcho/hindsight, so a quarantined release cannot break fresh installs.
|
||||
# like honcho, so a quarantined release cannot break fresh installs.
|
||||
supermemory = ["supermemory==3.50.0"]
|
||||
# mem0ai pulls qdrant-client → grpcio, which has no win_arm64 wheel — same
|
||||
# win32-arm64 gate as google-chat. mem0 is lazy-installed, so on arm64 the
|
||||
@@ -723,7 +722,6 @@ google-auth-httplib2 = false
|
||||
google-auth-oauthlib = false
|
||||
google-cloud-pubsub = false
|
||||
h2 = false
|
||||
hindsight-client = false
|
||||
honcho-ai = false
|
||||
httplib2 = false
|
||||
httpx = false
|
||||
|
||||
@@ -126,7 +126,6 @@ def test_available_missing_module():
|
||||
|
||||
|
||||
@pytest.mark.parametrize(("extra", "module"), [
|
||||
("hindsight", "hindsight_client"),
|
||||
("teams", "microsoft_teams.apps"),
|
||||
])
|
||||
def test_available_counts_sys_modules_fakes(monkeypatch, extra, module):
|
||||
@@ -230,6 +229,7 @@ def test_legacy_selection_carries_extras_the_main_era_venv_lazily_installed(monk
|
||||
(site / "google").mkdir()
|
||||
(site / "google" / "auth").mkdir()
|
||||
(site / "exa_py.cpython-311-x86_64-linux-gnu.so").write_bytes(b"")
|
||||
(site / "hindsight_client").mkdir()
|
||||
|
||||
selection = extras.legacy_selection(tmp_path)
|
||||
|
||||
@@ -237,6 +237,7 @@ def test_legacy_selection_carries_extras_the_main_era_venv_lazily_installed(monk
|
||||
assert {"fal", "telegram", "vertex", "exa"} <= set(selection)
|
||||
assert "messaging" not in selection
|
||||
assert "piper" not in selection
|
||||
assert "hindsight" not in selection # Catalog plugin owns this dependency, not a core extra.
|
||||
assert extras.legacy_selection(tmp_path / "no-venv") == ["all"]
|
||||
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ def test_lazy_installable_extras_excluded_from_all():
|
||||
"telegram", "discord",
|
||||
"wake", "wake-openwakeword", "wake-sherpa", "wake-porcupine",
|
||||
"google-chat",
|
||||
"honcho", "hindsight",
|
||||
"honcho",
|
||||
"supermemory", "mem0",
|
||||
"mistral", # mistralai — Voxtral STT/TTS, lazy-installed (stt.mistral / tts.mistral)
|
||||
}
|
||||
|
||||
24
uv.lock
generated
24
uv.lock
generated
@@ -112,7 +112,6 @@ google-auth-httplib2 = false
|
||||
psutil = false
|
||||
python-telegram-bot = false
|
||||
jinja2 = false
|
||||
hindsight-client = false
|
||||
sounddevice = false
|
||||
alibabacloud-dingtalk = false
|
||||
dingtalk-stream = false
|
||||
@@ -2442,9 +2441,6 @@ google-meet = [
|
||||
{ name = "playwright" },
|
||||
{ name = "websockets" },
|
||||
]
|
||||
hindsight = [
|
||||
{ name = "hindsight-client" },
|
||||
]
|
||||
homeassistant = [
|
||||
{ name = "aiohttp" },
|
||||
]
|
||||
@@ -2686,7 +2682,6 @@ requires-dist = [
|
||||
{ name = "hermes-agent", extras = ["web"], marker = "extra == 'all'" },
|
||||
{ name = "hermes-agent", extras = ["web"], marker = "extra == 'termux-all'" },
|
||||
{ name = "hermes-agent", extras = ["youtube"], marker = "extra == 'all'" },
|
||||
{ name = "hindsight-client", marker = "extra == 'hindsight'", specifier = "==0.6.1" },
|
||||
{ name = "honcho-ai", marker = "extra == 'honcho'", specifier = "==2.2.0" },
|
||||
{ name = "httplib2", marker = "extra == 'google'", specifier = "==0.32.0" },
|
||||
{ name = "httptools", marker = "python_full_version >= '3.14'", specifier = ">=0.6.3,<0.9" },
|
||||
@@ -2788,7 +2783,7 @@ requires-dist = [
|
||||
{ name = "winrt-windows-services-store", marker = "python_full_version >= '3.14' and sys_platform == 'win32'", specifier = ">=3.2.1,<4" },
|
||||
{ name = "youtube-transcript-api", marker = "extra == 'youtube'", specifier = "==1.2.4" },
|
||||
]
|
||||
provides-extras = ["uvloop", "anthropic", "exa", "firecrawl", "parallel-web", "ddgs", "fal", "edge-tts", "neutts", "kittentts", "piper", "modal", "daytona", "vercel", "hindsight", "google-meet", "messaging", "cron", "slack", "matrix", "wecom", "tts-premium", "voice", "wake", "honcho", "telegram", "discord", "stt-whisper", "audio-io", "silk", "wake-openwakeword", "wake-sherpa", "wake-porcupine", "google-chat", "doc-extract", "trace-upload", "supermemory", "mem0", "vision", "pty", "mcp", "nemo-relay", "homeassistant", "sms", "teams", "computer-use", "acp", "mistral", "otlp", "langfuse", "bedrock", "vertex", "azure-identity", "termux", "termux-all", "dingtalk", "feishu", "google", "youtube", "web", "all"]
|
||||
provides-extras = ["uvloop", "anthropic", "exa", "firecrawl", "parallel-web", "ddgs", "fal", "edge-tts", "neutts", "kittentts", "piper", "modal", "daytona", "vercel", "google-meet", "messaging", "cron", "slack", "matrix", "wecom", "tts-premium", "voice", "wake", "honcho", "telegram", "discord", "stt-whisper", "audio-io", "silk", "wake-openwakeword", "wake-sherpa", "wake-porcupine", "google-chat", "doc-extract", "trace-upload", "supermemory", "mem0", "vision", "pty", "mcp", "nemo-relay", "homeassistant", "sms", "teams", "computer-use", "acp", "mistral", "otlp", "langfuse", "bedrock", "vertex", "azure-identity", "termux", "termux-all", "dingtalk", "feishu", "google", "youtube", "web", "all"]
|
||||
|
||||
[package.metadata.requires-dev]
|
||||
dev = [
|
||||
@@ -2831,23 +2826,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/73/63/ca511b6f802f28cf3489b280fe77475bcca8de85e81a6299d7916b5b5555/hf_xet-1.6.0-cp38-abi3-win_arm64.whl", hash = "sha256:3dc3e35441ba395006af5aaacc40ef2e603c51ef46c3530b9156185f00935ea3", size = 3859359, upload-time = "2026-08-03T22:33:11.725Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hindsight-client"
|
||||
version = "0.6.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "aiohttp" },
|
||||
{ name = "aiohttp-retry" },
|
||||
{ name = "pydantic" },
|
||||
{ name = "python-dateutil" },
|
||||
{ name = "typing-extensions" },
|
||||
{ name = "urllib3" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/33/26/8b8efa4be21fc3ba12ade3b1353d87f9837ec0d3ec2607e8adbf85bc9c63/hindsight_client-0.6.1.tar.gz", hash = "sha256:314d0bb9e13622e15586ba1586a799726d405b27bc20d78872474b5d6d96cd51", size = 99833, upload-time = "2026-05-08T13:01:23.537Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/24/4f/a1d0bc33ef933ecc52e76dc1514163594d25836a5d303c256a61bb61445d/hindsight_client-0.6.1-py3-none-any.whl", hash = "sha256:9fdda176ab50f7cec8d7339c6608c148f0cd9ad7e65d9d76192f2db730bc330a", size = 249379, upload-time = "2026-05-08T13:01:22.035Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "honcho-ai"
|
||||
version = "2.2.0"
|
||||
|
||||
Reference in New Issue
Block a user