Skip to content

Commit f18e657

Browse files
add computer connect tool for chat
1 parent 7f3de08 commit f18e657

File tree

5 files changed

+32
-31
lines changed

5 files changed

+32
-31
lines changed

src/askui/chat/api/mcp_servers/computer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from askui.tools.askui.askui_controller import AskUiControllerClient
44
from askui.tools.computer import (
5+
ComputerConnectTool,
56
ComputerDisconnectTool,
67
ComputerGetMousePositionTool,
78
ComputerKeyboardPressedTool,
@@ -13,7 +14,6 @@
1314
ComputerMouseReleaseTool,
1415
ComputerMouseScrollTool,
1516
ComputerMoveMouseTool,
16-
ComputerReconnectTool,
1717
ComputerRetrieveActiveDisplayTool,
1818
ComputerScreenshotTool,
1919
ComputerSetActiveDisplayTool,
@@ -41,7 +41,7 @@
4141
ComputerScreenshotTool(COMPUTER_AGENT_OS_FACADE),
4242
ComputerSetActiveDisplayTool(COMPUTER_AGENT_OS_FACADE),
4343
ComputerTypeTool(COMPUTER_AGENT_OS_FACADE),
44-
ComputerReconnectTool(COMPUTER_AGENT_OS_FACADE),
44+
ComputerConnectTool(COMPUTER_AGENT_OS_FACADE),
4545
ComputerDisconnectTool(COMPUTER_AGENT_OS_FACADE),
4646
]
4747

src/askui/chat/migrations/shared/assistants/seeds.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
),
2626
tools=[
2727
"computer_disconnect",
28-
"computer_reconnect",
28+
"computer_connect",
2929
"computer_mouse_click",
3030
"computer_get_mouse_position",
3131
"computer_keyboard_pressed",

src/askui/tools/computer/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from .connect_tool import ComputerConnectTool
12
from .disconnect_tool import ComputerDisconnectTool
23
from .get_mouse_position_tool import ComputerGetMousePositionTool
34
from .keyboard_pressed_tool import ComputerKeyboardPressedTool
@@ -9,14 +10,13 @@
910
from .mouse_release_tool import ComputerMouseReleaseTool
1011
from .mouse_scroll_tool import ComputerMouseScrollTool
1112
from .move_mouse_tool import ComputerMoveMouseTool
12-
from .reconnect_tool import ComputerReconnectTool
1313
from .retrieve_active_display_tool import ComputerRetrieveActiveDisplayTool
1414
from .screenshot_tool import ComputerScreenshotTool
1515
from .set_active_display_tool import ComputerSetActiveDisplayTool
1616
from .type_tool import ComputerTypeTool
1717

1818
__all__ = [
19-
"ComputerReconnectTool",
19+
"ComputerConnectTool",
2020
"ComputerDisconnectTool",
2121
"ComputerGetMousePositionTool",
2222
"ComputerKeyboardPressedTool",
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from askui.models.shared import ComputerBaseTool
2+
from askui.tools.computer_agent_os_facade import ComputerAgentOsFacade
3+
4+
5+
class ComputerConnectTool(ComputerBaseTool):
6+
"""Computer Connect Tool"""
7+
8+
def __init__(self, agent_os: ComputerAgentOsFacade | None = None) -> None:
9+
super().__init__(
10+
name="computer_connect",
11+
description=(
12+
"Connect to the agent OS controller to enable computer control. "
13+
"Useful for establishing an initial connection or reconnecting "
14+
"after controller errors. If already connected, this will "
15+
"disconnect and reconnect, which may cause previous configuration "
16+
"to be lost (e.g., selected display must be reconfigured)."
17+
"Must be used once before any other computer tools are used."
18+
),
19+
agent_os=agent_os,
20+
)
21+
22+
def __call__(self) -> str:
23+
try:
24+
self.agent_os.disconnect()
25+
finally:
26+
self.agent_os.connect()
27+
return "Agent OS controller was connected." # noqa: B012

src/askui/tools/computer/reconnect_tool.py

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)