Skip to content

chore(hermes-memory): prepare for the Hermes plugin catalog (DX-3182) - #83

Open
CahidArda wants to merge 1 commit into
mainfrom
dx-3182-hermes-catalog-prep
Open

CahidArda wants to merge 1 commit into
mainfrom
dx-3182-hermes-catalog-prep

Conversation

@CahidArda

Copy link
Copy Markdown
Collaborator

Gets python/hermes-memory ready to be listed in the Hermes plugin catalog. Today it only works as a pip entry point, which the catalog doesn't use. Rules: catalog submission guide · plugin-catalog/README.md · memory provider guide

What each change is for:

  • plugin.yaml: the catalog requires "a plugin.yaml manifest plus at least one entrypoint Hermes loads" at the pinned commit (guide, "Before you submit"). It includes requires_hermes: ">=0.19" because rule 14 says to "declare the same floor in plugin.yaml as well, because older Hermes versions enforce only that one". It also includes requires_env for the two Upstash credentials. Name upstash = the existing entry-point / memory.provider name.
  • __init__.py at the plugin root: this is the Python entrypoint a directory install imports (__init__.py # MemoryProvider implementation + register() in the memory provider guide's directory layout). It re-exports register from src/upstash_hermes_memory, so the code isn't duplicated. The wheel is unchanged.
  • upstash-redis>=1.8.0,<2: rule 10 says "bare floors (>=X with no upper bound) and floors on the newest release get a request for the oldest API-compatible floor plus an upper bound". 1.8.0 is still the newest release, so a reviewer may also ask for a lower floor.
  • README telemetry section: rule 13 says risky behaviour, telemetry included, must be disclosed in the README and the PR. ⚠️ The same rule says "Telemetry and usage reporting are opt-in", and ours is on by default (a tag in the Upstash-Telemetry-Sdk header, off with UPSTASH_DISABLE_TELEMETRY). Expect a reviewer to ask us to flip it.
  • sync-version.mjs + test: stamps the release version into plugin.yaml too, so the manifest can't drift from PyPI (rule 14: "version matches the pinned code").
  • root pyproject.toml: ruff N999 ignore for python/*/__init__.py (the folder name is hyphenated) and pytest --import-mode=importlib (the new root __init__.py made the default mode fail to import python/hermes-memory).

Verified: pnpm py:lint, pnpm py:test (29 passed, 19 Redis tests skipped without creds), sync-version.mjs --check, wheel contents unchanged. hermes plugins validate <dir> --install-deps from hermes-agent main passes every check (manifest, loadable, capability probe, security scan: safe, no core override).

Next, by a human: once this merges, open a PR to NousResearch/hermes-agent adding plugin-catalog/upstash.yaml with subdir: python/hermes-memory and the merge commit's full SHA.

Linear: https://linear.app/upstash/issue/DX-3182/agentkit-add-python-package-support-to-the-monorepo

🤖 Generated with Claude Code

Copilot AI balanced review requested due to automatic review settings October 28, 2026 13:44
@linear-code

linear-code Bot commented Oct 28, 2026

Copy link
Copy Markdown

DX-3182

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The package lacks a root-level provider registration hook, preventing catalog-only installs from activating memory.provider: upstash.

1 open issue
What changed in this PR

Prepares the existing Python memory provider for Hermes plugin catalog installation alongside its pip entry point.

Changes:

  • Adds a plugin manifest and directory entry point.
  • Caps the Redis dependency below version 2 and documents telemetry behavior.
  • Extends release-version synchronization and adjusts Python tooling for the plugin layout.
File Description
uv.lock Records the Redis dependency upper bound.
scripts/​sync-version.mjs Synchronizes optional plugin manifest versions.
python/​hermes-memory/​tests/​test_version.py Checks manifest and package version alignment.
python/​hermes-memory/​README.md Discloses telemetry and its opt-out setting.
python/​hermes-memory/​pyproject.toml Caps upstash-redis below version 2.
python/​hermes-memory/​plugin.yaml Declares plugin identity, Hermes compatibility, and required credentials.
python/​hermes-memory/​__init__.py Adds the directory-install entry point.
pyproject.toml Adjusts lint and test imports for plugin roots.
CLAUDE.md Documents plugin manifest version synchronization.
.changeset/​hermes-catalog-prep.md Records the Python package patch release.

Review effort: Balanced

Comment on lines +1 to +10
"""Entry point for directory installs (the Hermes plugin catalog).

The catalog clones this directory and imports its `__init__.py`, so it re-exports `register` from
the package under `src/`. pip installs skip this file and use the `hermes_agent.memory_providers`
entry point in pyproject.toml.
"""

from .src.upstash_hermes_memory import register

__all__ = ["register"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants