import pyperclip from browser_use.agent.views import ActionResult from browser_use.browser.context import BrowserContext from browser_use.controller.service import Controller class CustomController(Controller): def __init__(self): super().__init__() self._register_custom_actions() def _register_custom_actions(self): @self.registry.action("Copy text to clipboard") def copy_to_clipboard(text: str): try: pyperclip.copy(text) return ActionResult(extracted_content=text) except Exception as e: return ActionResult(error=f"Failed to copy text to clipboard: {str(e)}") @self.registry.action("Paste text from clipboard", requires_browser=True) async def paste_from_clipboard(browser: BrowserContext): try: text = pyperclip.paste() page = await browser.get_current_page() if not page: return ActionResult(error="No active page found in browser.") await page.keyboard.type(text) return ActionResult(extracted_content=text) except Exception as e: return ActionResult(error=f"Failed to paste text from clipboard: {str(e)}")