Add Memory Gateway agent plugin
This commit is contained in:
73
plugins/memory-gateway-agent/scripts/hermes_smoke_check.py
Normal file
73
plugins/memory-gateway-agent/scripts/hermes_smoke_check.py
Normal file
@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env python3
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib.util
|
||||
import json
|
||||
import sys
|
||||
import types
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class FakeHermesContext:
|
||||
def __init__(self) -> None:
|
||||
self.registered_tools = []
|
||||
self.registered_hooks = []
|
||||
|
||||
def register_tool(self, name, toolset, schema, handler, **kwargs):
|
||||
self.registered_tools.append(
|
||||
{
|
||||
"name": name,
|
||||
"toolset": toolset,
|
||||
"schema": schema,
|
||||
"handler_callable": callable(handler),
|
||||
"kwargs": kwargs,
|
||||
}
|
||||
)
|
||||
|
||||
def register_hook(self, hook_name, callback):
|
||||
self.registered_hooks.append({"name": hook_name, "handler_callable": callable(callback)})
|
||||
|
||||
|
||||
def load_plugin_module():
|
||||
plugin_dir = Path(__file__).resolve().parents[1]
|
||||
init_file = plugin_dir / "__init__.py"
|
||||
module_name = "hermes_plugins.memory_gateway_agent_smoke"
|
||||
if "hermes_plugins" not in sys.modules:
|
||||
parent = types.ModuleType("hermes_plugins")
|
||||
parent.__path__ = []
|
||||
sys.modules["hermes_plugins"] = parent
|
||||
spec = importlib.util.spec_from_file_location(
|
||||
module_name,
|
||||
init_file,
|
||||
submodule_search_locations=[str(plugin_dir)],
|
||||
)
|
||||
if spec is None or spec.loader is None:
|
||||
raise RuntimeError("Cannot create plugin module spec")
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
module.__package__ = module_name
|
||||
module.__path__ = [str(plugin_dir)]
|
||||
sys.modules[module_name] = module
|
||||
spec.loader.exec_module(module)
|
||||
return module
|
||||
|
||||
|
||||
def main() -> None:
|
||||
module = load_plugin_module()
|
||||
ctx = FakeHermesContext()
|
||||
module.register(ctx)
|
||||
print(
|
||||
json.dumps(
|
||||
{
|
||||
"ok": True,
|
||||
"has_register": callable(getattr(module, "register", None)),
|
||||
"registered_tools": ctx.registered_tools,
|
||||
"registered_hooks": ctx.registered_hooks,
|
||||
},
|
||||
ensure_ascii=False,
|
||||
indent=2,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user