Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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 `AgentOs` instance.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
TypeError: If the agent OS is not an `AgentOs` instance.
TypeError: If the agent OS is not an `PlaywrightAgentOs` instance.

"""
if not isinstance(agent_os, AgentOs):
raise AgentOsTypeError(
expected_type=AgentOs,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if not isinstance(agent_os, AgentOs):
raise AgentOsTypeError(
expected_type=AgentOs,
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