Same migration shape as Molecule-AI/hermes-channel-molecule@754d162. NousResearch/hermes-agent#17751 (merged 2026-04-30) shipped a comprehensive pluggable-platform system with: - ctx.register_platform(name, label, adapter_factory, check_fn, ...) - Open Platform enum (Platform('molecule-a2a') via _missing_()) Pre-#17751 forks (incl. the patched hermes-agent baked into template-hermes' Dockerfile today) expose ctx.register_platform_adapter + closed Platform + PluginPlatformIdentifier instead. Detect at runtime in both register() and the adapter's super().__init__ identity arg so the same wheel installs cleanly on both shapes. template-hermes can now drop its hermes-agent fork install and use upstream main once the in-container tests pass on stock hermes-agent. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
"""Hermes plugin: Molecule A2A platform adapter.
|
|
|
|
Loaded by hermes_cli.plugins via the ``hermes_agent.plugins`` entry
|
|
point. The ``register`` callable below is invoked with a PluginContext;
|
|
it claims the platform name ``molecule-a2a`` so that GatewayConfig
|
|
routes ``platforms.molecule-a2a`` config blocks to this adapter.
|
|
"""
|
|
|
|
from .adapter import MoleculeA2APlatformAdapter, check_molecule_a2a_requirements
|
|
|
|
__all__ = [
|
|
"MoleculeA2APlatformAdapter",
|
|
"check_molecule_a2a_requirements",
|
|
"register",
|
|
]
|
|
|
|
|
|
def register(ctx) -> None:
|
|
"""Plugin entry point — dual-mode for upstream + legacy fork APIs.
|
|
|
|
Upstream NousResearch/hermes-agent#17751 (merged 2026-04-30) shipped
|
|
``ctx.register_platform(name, label, adapter_factory, check_fn, ...)``.
|
|
Pre-#17751 forks expose ``ctx.register_platform_adapter(name,
|
|
adapter_class, requirements_check)`` instead — narrower signature,
|
|
no factory. Detect at runtime so the same wheel installs cleanly on
|
|
both.
|
|
"""
|
|
if hasattr(ctx, "register_platform"):
|
|
ctx.register_platform(
|
|
name="molecule-a2a",
|
|
label="Molecule A2A",
|
|
adapter_factory=lambda cfg: MoleculeA2APlatformAdapter(cfg),
|
|
check_fn=check_molecule_a2a_requirements,
|
|
install_hint=(
|
|
"configure platforms.molecule-a2a in config.yaml; "
|
|
"in-container hermes only — for external hermes use "
|
|
"Molecule-AI/hermes-channel-molecule instead"
|
|
),
|
|
)
|
|
elif hasattr(ctx, "register_platform_adapter"):
|
|
ctx.register_platform_adapter(
|
|
name="molecule-a2a",
|
|
adapter_class=MoleculeA2APlatformAdapter,
|
|
requirements_check=check_molecule_a2a_requirements,
|
|
)
|
|
else:
|
|
raise RuntimeError(
|
|
"hermes-platform-molecule-a2a: this hermes-agent version "
|
|
"exposes neither register_platform (upstream #17751+) nor "
|
|
"register_platform_adapter (legacy fork) — cannot register"
|
|
)
|