mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-20 15:33:54 +00:00
fix(honcho): update SDK and restore CI coverage
This commit is contained in:
parent
1c051d1df9
commit
29e0471708
7 changed files with 22 additions and 17 deletions
|
|
@ -510,21 +510,21 @@ def _ensure_sdk_installed() -> bool:
|
|||
pass
|
||||
|
||||
print(" honcho-ai is not installed.")
|
||||
answer = _prompt("Install it now? (honcho-ai>=2.0.1)", default="y")
|
||||
answer = _prompt("Install it now? (honcho-ai==2.2.0)", default="y")
|
||||
if answer.lower() not in {"y", "yes"}:
|
||||
print(" Skipping install. Run: pip install 'honcho-ai>=2.0.1'\n")
|
||||
print(" Skipping install. Run: pip install 'honcho-ai==2.2.0'\n")
|
||||
return False
|
||||
|
||||
print(" Installing honcho-ai...", flush=True)
|
||||
from hermes_cli.tools_config import _pip_install
|
||||
|
||||
result = _pip_install(["honcho-ai>=2.0.1"])
|
||||
result = _pip_install(["honcho-ai==2.2.0"])
|
||||
if result.returncode == 0:
|
||||
print(" Installed.\n")
|
||||
return True
|
||||
else:
|
||||
print(f" Install failed:\n{(result.stderr or '').strip()}")
|
||||
print(" Run manually: uv pip install 'honcho-ai>=2.0.1'\n")
|
||||
print(" Run manually: uv pip install 'honcho-ai==2.2.0'\n")
|
||||
return False
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -183,7 +183,7 @@ pty = [
|
|||
# any existing `pip install hermes-agent[pty]` invocations resolve cleanly
|
||||
# without pulling in extra packages.
|
||||
]
|
||||
honcho = ["honcho-ai==2.0.1"]
|
||||
honcho = ["honcho-ai==2.2.0"]
|
||||
# Cloud memory providers — opt-in, lazy-installed via tools/lazy_deps.py
|
||||
# (memory.supermemory / memory.mem0) at first use. Exact pins MUST match the
|
||||
# LAZY_DEPS pins (enforced by tests/test_project_metadata.py). Deliberately
|
||||
|
|
|
|||
|
|
@ -87,6 +87,8 @@ AUTHOR_MAP = {
|
|||
"iganapolsky@gmail.com": "IgorGanapolsky", # PR #62125 salvage (compaction anti-thrash threshold verification)
|
||||
"275853971+aeyeopsdev@users.noreply.github.com": "aeyeopsdev", # PRs #36035/#36068 salvage (google-chat: http inbound without pubsub; clarify cards)
|
||||
"tturney1@gmail.com": "TheTom", # PR #62696 salvage (gateway: expand @ context references under runtime/session model resolution)
|
||||
"1822947159@qq.com": "ljy-2000", # PR #62204 adopted in #62282
|
||||
"xwolf.live@gmail.com": "vizi0uz", # PR #59795 adopted in #62282
|
||||
"wilsonkinyuam@gmail.com": "WilsonKinyua", # PR #62052 (tui: persist unflushed conversations on disconnect/restart)
|
||||
"humphreysun98@gmail.com": "HumphreySun98", # PR #61142 salvage (web: null web/backend config value guards)
|
||||
"sonxi@nous.local": "17324393074", # PR #53196 salvage (tools_config: known_plugin_toolsets null guard; commit under unlinked local identity)
|
||||
|
|
|
|||
|
|
@ -22,6 +22,9 @@ def _configured_hybrid_config() -> _FakeHonchoConfig:
|
|||
base_url="http://127.0.0.1:8000",
|
||||
recall_mode="hybrid",
|
||||
init_on_session_start=False,
|
||||
injection_frequency="every-turn",
|
||||
context_cadence=1,
|
||||
dialectic_cadence=1,
|
||||
dialectic_depth=1,
|
||||
dialectic_depth_levels=None,
|
||||
reasoning_heuristic=True,
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ class TestSpecSafety:
|
|||
@pytest.mark.parametrize("spec", [
|
||||
"mistralai>=2.3.0,<3",
|
||||
"elevenlabs>=1.0,<2",
|
||||
"honcho-ai>=2.0.1,<3",
|
||||
"honcho-ai>=2.2.0,<3",
|
||||
"boto3>=1.35.0,<2",
|
||||
"mautrix[encryption]>=0.20,<1",
|
||||
"google-api-python-client>=2.100,<3",
|
||||
|
|
@ -253,13 +253,13 @@ class TestIsSatisfiedVersionAware:
|
|||
monkeypatch.setattr(_md, "version", _version)
|
||||
|
||||
def test_exact_pin_match_returns_true(self, monkeypatch):
|
||||
self._fake_version(monkeypatch, {"honcho-ai": "2.0.1"})
|
||||
assert ld._is_satisfied("honcho-ai==2.0.1") is True
|
||||
self._fake_version(monkeypatch, {"honcho-ai": "2.2.0"})
|
||||
assert ld._is_satisfied("honcho-ai==2.2.0") is True
|
||||
|
||||
def test_exact_pin_mismatch_returns_false(self, monkeypatch):
|
||||
# Installed 2.0.0, spec requires 2.0.1 → False (needs upgrade).
|
||||
self._fake_version(monkeypatch, {"honcho-ai": "2.0.0"})
|
||||
assert ld._is_satisfied("honcho-ai==2.0.1") is False
|
||||
# Installed 2.1.2, spec requires 2.2.0 → False (needs upgrade).
|
||||
self._fake_version(monkeypatch, {"honcho-ai": "2.1.2"})
|
||||
assert ld._is_satisfied("honcho-ai==2.2.0") is False
|
||||
|
||||
def test_range_within_returns_true(self, monkeypatch):
|
||||
self._fake_version(monkeypatch, {"slack-bolt": "1.27.0"})
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ LAZY_DEPS: dict[str, tuple[str, ...]] = {
|
|||
"image.fal": ("fal-client==0.13.1",),
|
||||
|
||||
# ─── Memory providers ──────────────────────────────────────────────────
|
||||
"memory.honcho": ("honcho-ai==2.0.1",),
|
||||
"memory.honcho": ("honcho-ai==2.2.0",),
|
||||
"memory.hindsight": ("hindsight-client==0.6.1",),
|
||||
# supermemory + mem0 are opt-in cloud memory providers with their own
|
||||
# SDKs. On the published Docker image the agent venv is sealed
|
||||
|
|
@ -495,7 +495,7 @@ def _pkg_name_from_spec(spec: str) -> str:
|
|||
def _specifier_from_spec(spec: str) -> str:
|
||||
"""Extract just the version-specifier portion of a pip spec.
|
||||
|
||||
``"honcho-ai==2.0.1"`` → ``"==2.0.1"``
|
||||
``"honcho-ai==2.2.0"`` → ``"==2.2.0"``
|
||||
``"mautrix[encryption]>=0.20,<1"`` → ``">=0.20,<1"``
|
||||
``"package"`` → ``""`` (no version constraint)
|
||||
"""
|
||||
|
|
|
|||
8
uv.lock
generated
8
uv.lock
generated
|
|
@ -1791,7 +1791,7 @@ requires-dist = [
|
|||
{ 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.0.1" },
|
||||
{ name = "honcho-ai", marker = "extra == 'honcho'", specifier = "==2.2.0" },
|
||||
{ name = "httpx", extras = ["socks"], specifier = "==0.28.1" },
|
||||
{ name = "jinja2", specifier = "==3.1.6" },
|
||||
{ name = "lark-oapi", marker = "extra == 'feishu'", specifier = "==1.6.8" },
|
||||
|
|
@ -1898,16 +1898,16 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "honcho-ai"
|
||||
version = "2.0.1"
|
||||
version = "2.2.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "httpx" },
|
||||
{ name = "pydantic" },
|
||||
{ name = "typing-extensions", marker = "python_full_version < '3.12'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/93/30/d30ba159404050d53b4b1b1c4477f9591f43af18758be1fb7dab6afbfe7d/honcho_ai-2.0.1.tar.gz", hash = "sha256:6fdeebf9454e62bc523d57888e50359e67baafdb21f68621f9c14e08dc00623a", size = 46732, upload-time = "2026-02-09T21:03:26.99Z" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/f2/1d/322649dbc8e9b21726a3a3e9b6a4975f2d122ca4b2450612f9ff2a9023b6/honcho_ai-2.2.0.tar.gz", hash = "sha256:16e16825afac51f2fdd59670dd4a6e44d04a3fa2c8eb466b1767dcc96706b7a0", size = 49979, upload-time = "2026-07-02T17:04:33.13Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/e2/de/83fda0c057cfa11d6b5ed532623184591aa7dcff4a067934ba6811026229/honcho_ai-2.0.1-py3-none-any.whl", hash = "sha256:94887e61d59f353e1e1e20b395858040780f5d67ca1e9d450538646544e4e42f", size = 56780, upload-time = "2026-02-09T21:03:25.992Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d0/c6/66af5f7ba3d75796f4523eac1e069fbdc759c3f0b8adab9fb7ae04e15784/honcho_ai-2.2.0-py3-none-any.whl", hash = "sha256:32f098a4c8bcfe4288f0994ddab0bc52a68dc87069d0f2ce2c8758ee2a1761f2", size = 60305, upload-time = "2026-07-02T17:04:33.967Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue