Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/askui/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
from .multi_device_agent import MultiDeviceAgent

try:
from .web_agent import WebVisionAgent
from .web_agent import WebAgent, WebVisionAgent
from .web_testing_agent import WebTestingAgent

_WEB_AGENTS_AVAILABLE = True
Expand Down Expand Up @@ -113,4 +113,4 @@
__all__ += ["AndroidAgent", "AndroidVisionAgent", "MultiDeviceAgent"]

if _WEB_AGENTS_AVAILABLE:
__all__ += ["WebVisionAgent", "WebTestingAgent"]
__all__ += ["WebAgent", "WebVisionAgent", "WebTestingAgent"]
2 changes: 2 additions & 0 deletions src/askui/models/shared/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
from .android_base_tool import AndroidBaseTool
from .computer_base_tool import ComputerBaseTool
from .playwright_base_tool import PlaywrightBaseTool
from .tool_tags import ToolTags

__all__ = [
"AndroidBaseTool",
"ComputerBaseTool",
"PlaywrightBaseTool",
"ToolTags",
]
57 changes: 57 additions & 0 deletions src/askui/models/shared/playwright_base_tool.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
from typing import Any

from askui.models.shared.tool_tags import ToolTags
from askui.models.shared.tools import ToolWithAgentOS
from askui.tools.agent_os import AgentOs
from askui.tools.agent_os_type_error import AgentOsTypeError
from askui.tools.android.agent_os import AndroidAgentOs
from askui.tools.playwright.agent_os import PlaywrightAgentOs


class PlaywrightBaseTool(ToolWithAgentOS):
"""Tool base class that has an the Playwright AgentOs available."""

def __init__(
self,
agent_os: AgentOs | None = None,
required_tags: list[str] | None = None,
**kwargs: Any,
) -> None:
super().__init__(
required_tags=[ToolTags.PLAYWRIGHT.value] + (required_tags or []),
agent_os=agent_os,
**kwargs,
)

@property
def agent_os(self) -> PlaywrightAgentOs:
"""Get the agent OS.

Returns:
PlaywrightAgentOs: The Playwright agent OS instance.
"""
agent_os = super().agent_os
if not isinstance(agent_os, PlaywrightAgentOs):
raise AgentOsTypeError(
expected_type=PlaywrightAgentOs,
actual_type=type(agent_os),
)
return agent_os

@agent_os.setter
def agent_os(self, agent_os: AgentOs | AndroidAgentOs | PlaywrightAgentOs) -> None:
"""Set the agent OS.

Args:
agent_os (AgentOs | AndroidAgentOs | PlaywrightAgentOs): The agent OS
instance to set.

Raises:
TypeError: If the agent OS is not an `PlaywrightAgentOs` instance.
"""
if not isinstance(agent_os, PlaywrightAgentOs):
raise AgentOsTypeError(
expected_type=PlaywrightAgentOs,
actual_type=type(agent_os),
)
self._agent_os = agent_os
1 change: 1 addition & 0 deletions src/askui/models/shared/tool_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ class ToolTags(str, Enum):
ANDROID = "android"
COMPUTER = "computer"
SCALED_AGENT_OS = "scaled_agent_os"
PLAYWRIGHT = "playwright"
Loading
Loading