80 lines
1.9 KiB
Python
80 lines
1.9 KiB
Python
"""
|
|
Base plugin class for MaxClaw Agent
|
|
"""
|
|
from abc import ABC, abstractmethod
|
|
from typing import List, Dict, Any, Optional
|
|
from langchain.tools import Tool
|
|
|
|
|
|
class BasePlugin(ABC):
|
|
"""Base class for MaxClaw plugins"""
|
|
|
|
def __init__(self, name: str, version: str = "1.0.0", description: str = ""):
|
|
"""
|
|
Initialize plugin
|
|
|
|
Args:
|
|
name: Plugin name
|
|
version: Plugin version
|
|
description: Plugin description
|
|
"""
|
|
self.name = name
|
|
self.version = version
|
|
self.description = description
|
|
self.enabled = True
|
|
|
|
@abstractmethod
|
|
def get_tools(self) -> List[Tool]:
|
|
"""
|
|
Get tools provided by this plugin
|
|
|
|
Returns:
|
|
List of tools
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_commands(self) -> Dict[str, callable]:
|
|
"""
|
|
Get commands provided by this plugin
|
|
|
|
Returns:
|
|
Dictionary mapping command names to functions
|
|
"""
|
|
pass
|
|
|
|
def on_load(self):
|
|
"""Called when plugin is loaded"""
|
|
pass
|
|
|
|
def on_unload(self):
|
|
"""Called when plugin is unloaded"""
|
|
pass
|
|
|
|
def get_info(self) -> Dict[str, Any]:
|
|
"""
|
|
Get plugin information
|
|
|
|
Returns:
|
|
Dictionary with plugin info
|
|
"""
|
|
return {
|
|
"name": self.name,
|
|
"version": self.version,
|
|
"description": self.description,
|
|
"enabled": self.enabled,
|
|
"tools_count": len(self.get_tools()),
|
|
"commands_count": len(self.get_commands())
|
|
}
|
|
|
|
def enable(self):
|
|
"""Enable the plugin"""
|
|
self.enabled = True
|
|
|
|
def disable(self):
|
|
"""Disable the plugin"""
|
|
self.enabled = False
|
|
|
|
def is_enabled(self) -> bool:
|
|
"""Check if plugin is enabled"""
|
|
return self.enabled |