From 301f9f2f5d280795a1bfd3353d7b768f1dd7cb1a Mon Sep 17 00:00:00 2001 From: stackone-dev Date: Sun, 1 Mar 2026 17:34:21 -0500 Subject: [PATCH] feat: add tool and plugin system for agent actions --- src/plugins/system.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/plugins/system.py diff --git a/src/plugins/system.py b/src/plugins/system.py new file mode 100644 index 0000000..9284d17 --- /dev/null +++ b/src/plugins/system.py @@ -0,0 +1,33 @@ +# PLUGIN SYSTEM FOR AGENT TOOL USAGE +# Flexible plugin architecture with hot-reload support + +import absc +from typing import Any, Callable, List, Dict + +class PluginInterface(abc.ABC): + "Base interface for all plugins" + @abc.abstractmethod + def get_name(self) -> str: + pass + + @abc.abstractmethod + def execute(self, *args, **kwargs) -> Any: + pass + +class PluginManager: + def __init__(self): + self.plugins = {} + self.plugin_paths = [] + + def register_plugin(self, plugin: PluginInterface) -> None: + "Register a plugin for use in agent actions" + self.plugins[plugin.get_name()] = plugin + + def hot_reload(self, plugin_name: str) -> None: + "Reload a specific plugin without restarting the agent" + if plugin_name in self.plugins: + del self.plugins[plugin_name] + # Reimport the plugin module + + def get_plugin(self, name: str) -> PluginInterface: + return self.plugins.get(name)