feat(plugins): list ReMe and align manifest install support
This commit is contained in:
@@ -20,6 +20,7 @@ from hermes_cli._subprocess_compat import noninteractive_git_env
|
||||
from hermes_cli.cli_output import line_input
|
||||
from hermes_cli.config import cfg_get
|
||||
from hermes_cli.plugin_capabilities import _child_dict
|
||||
from hermes_cli.plugins_manifest import SUPPORTED_MANIFEST_VERSION
|
||||
from hermes_cli.secret_prompt import masked_secret_prompt
|
||||
from utils import atomic_write_text
|
||||
|
||||
@@ -165,10 +166,6 @@ def _scan_plugin_tree(plugin_dir: Path, identifier: str, *, force: bool, scan_de
|
||||
return result
|
||||
|
||||
|
||||
# Highest ``manifest_version`` this installer understands; breaking schema changes bump it.
|
||||
_SUPPORTED_MANIFEST_VERSION = 1
|
||||
|
||||
|
||||
def _plugins_dir() -> Path:
|
||||
"""Return the user plugins directory, creating it if needed."""
|
||||
plugins = get_hermes_home() / "plugins"
|
||||
@@ -595,11 +592,11 @@ def _check_manifest_version(manifest: dict, plugin_name: str) -> None:
|
||||
raise PluginOperationError(
|
||||
f"Plugin '{plugin_name}' has invalid manifest_version '{mv}' (expected an integer).",
|
||||
) from None
|
||||
if mv_int > _SUPPORTED_MANIFEST_VERSION:
|
||||
if mv_int > SUPPORTED_MANIFEST_VERSION:
|
||||
from hermes_cli.config import recommended_update_command
|
||||
raise PluginOperationError(
|
||||
f"Plugin '{plugin_name}' requires manifest_version {mv}, "
|
||||
f"but this installer only supports up to {_SUPPORTED_MANIFEST_VERSION}. "
|
||||
f"but this installer only supports up to {SUPPORTED_MANIFEST_VERSION}. "
|
||||
f"Run {recommended_update_command()} to update Hermes.",
|
||||
) from None
|
||||
|
||||
|
||||
15
plugin-catalog/reme.yaml
Normal file
15
plugin-catalog/reme.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
name: reme
|
||||
repo: https://github.com/agentscope-ai/ReMe
|
||||
sha: 9ebe17a89d41c599a1c0cef6a67810ba2711717c
|
||||
subdir: integrations/hermes_agent
|
||||
description: Local-first, file-native long-term memory with HTTP and embedded ReMe backends.
|
||||
maintainer: agentscope-ai
|
||||
tier: community
|
||||
category: memory
|
||||
requires_hermes: ">=0.21"
|
||||
docs_url: https://github.com/agentscope-ai/ReMe/tree/main/integrations/hermes_agent
|
||||
capabilities:
|
||||
provides_tools: []
|
||||
provides_hooks: []
|
||||
provides_middleware: []
|
||||
requires_env: []
|
||||
@@ -18,6 +18,7 @@ from hermes_cli.plugins import (
|
||||
resolve_plugin_load_order,
|
||||
validate_config_schema,
|
||||
)
|
||||
from hermes_cli.plugins_cmd import PluginOperationError, _check_manifest_version
|
||||
|
||||
|
||||
def _write_plugin(base, name, manifest_extra=None, register_body="pass"):
|
||||
@@ -85,6 +86,19 @@ class TestV1Regression:
|
||||
|
||||
|
||||
class TestV2Parsing:
|
||||
def test_installer_accepts_the_manifest_version_the_loader_supports(self):
|
||||
_check_manifest_version(
|
||||
{"manifest_version": SUPPORTED_MANIFEST_VERSION},
|
||||
"modern",
|
||||
)
|
||||
|
||||
def test_installer_rejects_future_manifest_versions(self):
|
||||
with pytest.raises(PluginOperationError, match="only supports up to"):
|
||||
_check_manifest_version(
|
||||
{"manifest_version": SUPPORTED_MANIFEST_VERSION + 1},
|
||||
"future",
|
||||
)
|
||||
|
||||
def test_v2_fields_parse(self, hermes_home):
|
||||
_write_plugin(
|
||||
hermes_home / "plugins", "modern",
|
||||
|
||||
Reference in New Issue
Block a user