| from abc import abstractmethod
|
| from dataclasses import dataclass
|
|
|
| from openhands.events.action import Action
|
| from openhands.events.observation import Observation
|
|
|
|
|
| class Plugin:
|
| """Base class for a plugin.
|
|
|
| This will be initialized by the runtime client, which will run inside docker.
|
| """
|
|
|
| name: str
|
|
|
| @abstractmethod
|
| async def initialize(self, username: str):
|
| """Initialize the plugin."""
|
| pass
|
|
|
| @abstractmethod
|
| async def run(self, action: Action) -> Observation:
|
| """Run the plugin for a given action."""
|
| pass
|
|
|
|
|
| @dataclass
|
| class PluginRequirement:
|
| """Requirement for a plugin."""
|
|
|
| name: str
|
|
|