Spaces:
Sleeping
Sleeping
# coding: utf-8 | |
# Copyright (c) 2025 inclusionAI. | |
import json | |
from examples.tools.tool_action import AndroidAction | |
from aworld.core.tool.action_factory import ActionFactory | |
from aworld.core.common import ActionModel, ActionResult | |
from examples.tools.android.action.adb_controller import ADBController | |
from examples.tools.android.config.android_action_space import AndroidActionParamEnum | |
from aworld.core.tool.action import ExecutableAction | |
class Tap(ExecutableAction): | |
def act(self, action: ActionModel, **kwargs) -> ActionResult: | |
controller: ADBController = kwargs.get('controller') | |
tap_index = action.params[AndroidActionParamEnum.TAP_INDEX.value] | |
if tap_index is None: | |
raise Exception(f'Invalid action: {action}') | |
controller.tap(tap_index) | |
return ActionResult(content="", keep=True) | |
class InputText(ExecutableAction): | |
def act(self, action: ActionModel, **kwargs) -> ActionResult: | |
controller: ADBController = kwargs.get('controller') | |
input_text = action.params[AndroidActionParamEnum.INPUT_TEXT.value] | |
if input_text is None: | |
raise Exception(f'Invalid action: {action}') | |
controller.text(input_text) | |
return ActionResult(content="", keep=True) | |
class LongPress(ExecutableAction): | |
def act(self, action: ActionModel, **kwargs) -> ActionResult: | |
controller: ADBController = kwargs.get('controller') | |
long_press_index = action.params[AndroidActionParamEnum.LONG_PRESS_INDEX.value] | |
if long_press_index is None: | |
raise Exception(f'Invalid action: {action}') | |
controller.long_press(long_press_index) | |
return ActionResult(content="", keep=True) | |
class Swipe(ExecutableAction): | |
def act(self, action: ActionModel, **kwargs) -> ActionResult: | |
controller: ADBController = kwargs.get('controller') | |
swipe_start_index = action.params[AndroidActionParamEnum.SWIPE_START_INDEX.value] | |
direction = action.params[AndroidActionParamEnum.DIRECTION.value] | |
dist = action.params.get(AndroidActionParamEnum.DIST.value, None) | |
if swipe_start_index is None or direction is None: | |
raise Exception(f'Invalid action: {action}') | |
if dist: | |
controller.swipe(swipe_start_index, direction, dist) | |
else: | |
controller.swipe(swipe_start_index, direction) | |
return ActionResult(content="", keep=True) | |
class Done(ExecutableAction): | |
def act(self, action: ActionModel, **kwargs) -> ActionResult: | |
output_dict = action.model_dump(exclude={'success'}) | |
return ActionResult(is_done=True, success=True, content=json.dumps(output_dict)) | |