Skip to content

Commit a15e48c

Browse files
Merge pull request #242 from askui/chore/default_tools
Adds Default tool Lists for Agents
2 parents f13564e + b17d9f7 commit a15e48c

15 files changed

Lines changed: 58 additions & 49 deletions

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ unfixable = []
183183
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
184184

185185
[tool.ruff.lint.per-file-ignores]
186-
"src/askui/agent.py" = ["E501"]
186+
"src/askui/computer_agent.py" = ["E501"]
187187
"src/askui/android_agent.py" = ["E501"]
188188
"src/askui/locators/locators.py" = ["E501"]
189189
"src/askui/locators/relatable.py" = ["E501", "SLF001"]

src/askui/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77

88
os.environ["FASTMCP_EXPERIMENTAL_ENABLE_NEW_OPENAPI_PARSER"] = "true"
99

10-
from .agent import ComputerAgent, VisionAgent
1110
from .agent_base import Agent
1211
from .agent_settings import AgentSettings
12+
from .computer_agent import ComputerAgent, VisionAgent
1313
from .locators import Locator
1414
from .models import (
1515
Base64ImageSourceParam,

src/askui/agent_base.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -878,3 +878,7 @@ def __exit__(
878878
traceback: types.TracebackType | None,
879879
) -> None:
880880
self.close()
881+
882+
@staticmethod
883+
def get_default_tools() -> list[Tool]:
884+
return []

src/askui/android_agent.py

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -81,23 +81,7 @@ def __init__(
8181
super().__init__(
8282
reporter=reporter,
8383
retry=retry,
84-
tools=[
85-
AndroidScreenshotTool(),
86-
AndroidTapTool(),
87-
AndroidTypeTool(),
88-
AndroidDragAndDropTool(),
89-
AndroidKeyTapEventTool(),
90-
AndroidSwipeTool(),
91-
AndroidKeyCombinationTool(),
92-
AndroidShellTool(),
93-
AndroidSelectDeviceBySerialNumberTool(),
94-
AndroidSelectDisplayByUniqueIDTool(),
95-
AndroidGetConnectedDevicesSerialNumbersTool(),
96-
AndroidGetConnectedDisplaysInfosTool(),
97-
AndroidGetCurrentConnectedDeviceInfosTool(),
98-
ExceptionTool(),
99-
]
100-
+ (act_tools or []),
84+
tools=self.get_default_tools() + (act_tools or []),
10185
agent_os=self.os,
10286
settings=settings,
10387
callbacks=callbacks,
@@ -357,6 +341,25 @@ def set_device_by_serial_number(
357341
)
358342
self.os.set_device_by_serial_number(device_sn)
359343

344+
@staticmethod
345+
def get_default_tools() -> list[Tool]:
346+
return [
347+
AndroidScreenshotTool(),
348+
AndroidTapTool(),
349+
AndroidTypeTool(),
350+
AndroidDragAndDropTool(),
351+
AndroidKeyTapEventTool(),
352+
AndroidSwipeTool(),
353+
AndroidKeyCombinationTool(),
354+
AndroidShellTool(),
355+
AndroidSelectDeviceBySerialNumberTool(),
356+
AndroidSelectDisplayByUniqueIDTool(),
357+
AndroidGetConnectedDevicesSerialNumbersTool(),
358+
AndroidGetConnectedDisplaysInfosTool(),
359+
AndroidGetCurrentConnectedDeviceInfosTool(),
360+
ExceptionTool(),
361+
]
362+
360363

361364
class AndroidVisionAgent(AndroidAgent):
362365
def __init__(self, *args, **kwargs) -> None: # type: ignore
Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -92,25 +92,7 @@ def __init__(
9292
super().__init__(
9393
reporter=reporter,
9494
retry=retry,
95-
tools=[
96-
ExceptionTool(),
97-
ComputerGetSystemInfoTool(),
98-
ComputerGetMousePositionTool(),
99-
ComputerKeyboardPressedTool(),
100-
ComputerKeyboardReleaseTool(),
101-
ComputerKeyboardTapTool(),
102-
ComputerMouseClickTool(),
103-
ComputerMouseHoldDownTool(),
104-
ComputerMouseReleaseTool(),
105-
ComputerMouseScrollTool(),
106-
ComputerMoveMouseTool(),
107-
ComputerScreenshotTool(),
108-
ComputerTypeTool(),
109-
ComputerListDisplaysTool(),
110-
ComputerRetrieveActiveDisplayTool(),
111-
ComputerSetActiveDisplayTool(),
112-
]
113-
+ (act_tools or []),
95+
tools=self.get_default_tools() + (act_tools or []),
11496
agent_os=self.tools.os,
11597
settings=settings,
11698
callbacks=callbacks,
@@ -508,6 +490,27 @@ def cli(
508490
)
509491
self.tools.os.run_command(command)
510492

493+
@staticmethod
494+
def get_default_tools() -> list[Tool]:
495+
return [
496+
ExceptionTool(),
497+
ComputerGetSystemInfoTool(),
498+
ComputerGetMousePositionTool(),
499+
ComputerKeyboardPressedTool(),
500+
ComputerKeyboardReleaseTool(),
501+
ComputerKeyboardTapTool(),
502+
ComputerMouseClickTool(),
503+
ComputerMouseHoldDownTool(),
504+
ComputerMouseReleaseTool(),
505+
ComputerMouseScrollTool(),
506+
ComputerMoveMouseTool(),
507+
ComputerScreenshotTool(),
508+
ComputerTypeTool(),
509+
ComputerListDisplaysTool(),
510+
ComputerRetrieveActiveDisplayTool(),
511+
ComputerSetActiveDisplayTool(),
512+
]
513+
511514

512515
class VisionAgent(ComputerAgent):
513516
def __init__(self, *args, **kwargs) -> None: # type: ignore

src/askui/web_agent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from pydantic import ConfigDict, validate_call
22

3-
from askui.agent import ComputerAgent
3+
from askui import ComputerAgent
44
from askui.agent_settings import AgentSettings
55
from askui.models.shared.settings import (
66
ActSettings,

tests/e2e/agent/conftest.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
import pytest
77
from typing_extensions import override
88

9-
from askui import AgentSettings
10-
from askui.agent import ComputerAgent
9+
from askui import AgentSettings, ComputerAgent
1110
from askui.locators.locators import Locator
1211
from askui.locators.serializers import AskUiLocatorSerializer
1312
from askui.model_providers.detection_provider import DetectionProvider

tests/e2e/agent/test_act.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from askui.agent import ComputerAgent
1+
from askui import ComputerAgent
22

33

44
def test_act(

tests/e2e/agent/test_act_caching.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import tempfile
55
from pathlib import Path
66

7-
from askui.agent import ComputerAgent
7+
from askui import ComputerAgent
88
from askui.models.shared.settings import CacheExecutionSettings, CachingSettings
99

1010

tests/e2e/agent/test_agent_offset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from PIL import Image as PILImage
77

8-
from askui.agent import ComputerAgent
8+
from askui import ComputerAgent
99
from askui.locators import Element
1010

1111
if TYPE_CHECKING:

0 commit comments

Comments
 (0)