Skip to content

Commit 835860a

Browse files
feat: change default of is_cacheable flag to False
1 parent d79a5cd commit 835860a

30 files changed

Lines changed: 58 additions & 12 deletions

src/askui/models/shared/tools.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -199,15 +199,14 @@ def name(self, value: str) -> None:
199199
"""Sets the base name of the tool."""
200200
self.base_name = value
201201

202-
@property
203-
def is_cacheable(self) -> bool:
204-
"""Whether this tool's actions can be cached and replayed.
205-
206-
Returns False by default. Override in subclasses for tools
207-
that produce deterministic results and where side-effects during
208-
replay are unlikely or tolerable.
209-
"""
210-
return False
202+
is_cacheable: bool = Field(
203+
default=False,
204+
description=(
205+
"Whether this tool's actions can be cached and replayed. "
206+
"False by default. Set to True for tools that produce deterministic "
207+
"results and where side-effects during replay are unlikely or tolerable."
208+
),
209+
)
211210

212211
def to_params(
213212
self,

src/askui/tools/android/tools.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None) -> None:
2828
agent_os=agent_os,
2929
required_tags=[ToolTags.SCALED_AGENT_OS.value],
3030
)
31+
self.is_cacheable = True
3132

3233
@override
3334
def __call__(self) -> tuple[str, Image.Image]:
@@ -83,6 +84,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None) -> None:
8384
agent_os=agent_os,
8485
required_tags=[ToolTags.SCALED_AGENT_OS.value],
8586
)
87+
self.is_cacheable = True
8688

8789
@override
8890
def __call__(
@@ -134,6 +136,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None) -> None:
134136
},
135137
agent_os=agent_os,
136138
)
139+
self.is_cacheable = True
137140

138141
@override
139142
def __call__(self, text: str) -> str:
@@ -191,6 +194,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None) -> None:
191194
agent_os=agent_os,
192195
required_tags=[ToolTags.SCALED_AGENT_OS.value],
193196
)
197+
self.is_cacheable = True
194198

195199
@override
196200
def __call__(self, x1: int, y1: int, x2: int, y2: int, duration: int = 1000) -> str:
@@ -224,6 +228,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None) -> None:
224228
},
225229
agent_os=agent_os,
226230
)
231+
self.is_cacheable = True
227232

228233
@override
229234
def __call__(self, key_name: ANDROID_KEY) -> str:
@@ -298,6 +303,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None) -> None:
298303
agent_os=agent_os,
299304
required_tags=[ToolTags.SCALED_AGENT_OS.value],
300305
)
306+
self.is_cacheable = True
301307

302308
@override
303309
def __call__(self, x1: int, y1: int, x2: int, y2: int, duration: int = 1000) -> str:
@@ -354,6 +360,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None) -> None:
354360
},
355361
agent_os=agent_os,
356362
)
363+
self.is_cacheable = True
357364

358365
@override
359366
def __call__(self, keys: list[ANDROID_KEY], duration: int = 100) -> str:
@@ -397,6 +404,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None) -> None:
397404
},
398405
agent_os=agent_os,
399406
)
407+
self.is_cacheable = True
400408

401409
@override
402410
def __call__(self, command: str) -> str:
@@ -415,6 +423,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None):
415423
description="Can be used to get all connected devices serial numbers.",
416424
agent_os=agent_os,
417425
)
426+
self.is_cacheable = True
418427

419428
@override
420429
def __call__(self) -> str:
@@ -434,6 +443,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None):
434443
"current selected device.",
435444
agent_os=agent_os,
436445
)
446+
self.is_cacheable = True
437447

438448
@override
439449
def __call__(self) -> str:
@@ -455,6 +465,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None):
455465
""",
456466
agent_os=agent_os,
457467
)
468+
self.is_cacheable = True
458469

459470
@override
460471
def __call__(self) -> str:
@@ -488,6 +499,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None):
488499
},
489500
agent_os=agent_os,
490501
)
502+
self.is_cacheable = True
491503

492504
@override
493505
def __call__(self, device_sn: str) -> str:
@@ -516,6 +528,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None):
516528
},
517529
agent_os=agent_os,
518530
)
531+
self.is_cacheable = True
519532

520533
@override
521534
def __call__(self, display_unique_id: int) -> str:
@@ -536,6 +549,7 @@ def __init__(self, agent_os: AndroidAgentOsFacade | None = None):
536549
""",
537550
agent_os=agent_os,
538551
)
552+
self.is_cacheable = True
539553

540554
@override
541555
def __call__(self) -> str:

src/askui/tools/caching_tools.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ def __init__(self, cache_dir: str, trajectories_format: str = ".json") -> None:
3232
)
3333
self._cache_dir = Path(cache_dir)
3434
self._trajectories_format = trajectories_format
35+
self.is_cacheable = True
3536

3637
@override
3738
@validate_call

src/askui/tools/computer/connect_tool.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ def __init__(self, agent_os: AgentOs | None = None) -> None:
1818
),
1919
agent_os=agent_os,
2020
)
21+
self.is_cacheable = True
2122

2223
def __call__(self) -> str:
2324
try:

src/askui/tools/computer/disconnect_tool.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ def __init__(self, agent_os: AgentOs | None = None) -> None:
1515
),
1616
agent_os=agent_os,
1717
)
18+
self.is_cacheable = True
1819

1920
def __call__(self) -> str:
2021
self.agent_os.disconnect()

src/askui/tools/computer/get_mouse_position_tool.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ def __init__(self, agent_os: ComputerAgentOsFacade | None = None) -> None:
1212
agent_os=agent_os,
1313
required_tags=[ToolTags.SCALED_AGENT_OS.value],
1414
)
15+
self.is_cacheable = True
1516

1617
def __call__(self) -> str:
1718
cursor_position = self.agent_os.get_mouse_position()

src/askui/tools/computer/keyboard_pressed_tool.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def __init__(self, agent_os: AgentOs | None = None) -> None:
3434
},
3535
agent_os=agent_os,
3636
)
37+
self.is_cacheable = True
3738

3839
def __call__(
3940
self,

src/askui/tools/computer/keyboard_release_tool.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def __init__(self, agent_os: AgentOs | None = None) -> None:
3434
},
3535
agent_os=agent_os,
3636
)
37+
self.is_cacheable = True
3738

3839
def __call__(
3940
self,

src/askui/tools/computer/keyboard_tap_tool.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def __init__(self, agent_os: AgentOs | None = None) -> None:
4242
},
4343
agent_os=agent_os,
4444
)
45+
self.is_cacheable = True
4546

4647
def __call__(
4748
self,

src/askui/tools/computer/list_displays_tool.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ def __init__(self, agent_os: AgentOs | None = None) -> None:
1111
""",
1212
agent_os=agent_os,
1313
)
14+
self.is_cacheable = True
1415

1516
def __call__(self) -> str:
1617
return self.agent_os.list_displays().model_dump_json(

0 commit comments

Comments
 (0)