cyberdesk 0.2.2__py3-none-any.whl → 0.2.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of cyberdesk might be problematic. Click here for more details.

Files changed (138) hide show
  1. cyberdesk/__init__.py +7 -7
  2. cyberdesk/actions.py +37 -37
  3. cyberdesk/client.py +74 -74
  4. cyberdesk/types.py +49 -49
  5. {cyberdesk-0.2.2.dist-info → cyberdesk-0.2.4.dist-info}/METADATA +14 -5
  6. cyberdesk-0.2.4.dist-info/RECORD +136 -0
  7. {cyberdesk-0.2.2.dist-info → cyberdesk-0.2.4.dist-info}/WHEEL +1 -1
  8. {cyberdesk-0.2.2.dist-info → cyberdesk-0.2.4.dist-info}/licenses/LICENSE +20 -20
  9. cyberdesk-0.2.4.dist-info/top_level.txt +2 -0
  10. openapi_client/api_reference_client/__init__.py +8 -0
  11. openapi_client/api_reference_client/api/__init__.py +1 -0
  12. openapi_client/api_reference_client/api/desktop/__init__.py +1 -0
  13. openapi_client/api_reference_client/api/desktop/get_v1_desktop_id.py +293 -0
  14. openapi_client/api_reference_client/api/desktop/post_v1_desktop.py +294 -0
  15. openapi_client/api_reference_client/api/desktop/post_v1_desktop_id_bash_action.py +307 -0
  16. openapi_client/api_reference_client/api/desktop/post_v1_desktop_id_computer_action.py +419 -0
  17. openapi_client/api_reference_client/api/desktop/post_v1_desktop_id_stop.py +288 -0
  18. openapi_client/api_reference_client/client.py +268 -0
  19. openapi_client/api_reference_client/errors.py +16 -0
  20. openapi_client/api_reference_client/models/__init__.py +249 -0
  21. openapi_client/api_reference_client/models/get_v1_desktop_id_response_200.py +104 -0
  22. openapi_client/api_reference_client/models/get_v1_desktop_id_response_200_status.py +11 -0
  23. openapi_client/api_reference_client/models/get_v1_desktop_id_response_400.py +69 -0
  24. openapi_client/api_reference_client/models/get_v1_desktop_id_response_400_status.py +8 -0
  25. openapi_client/api_reference_client/models/get_v1_desktop_id_response_401.py +69 -0
  26. openapi_client/api_reference_client/models/get_v1_desktop_id_response_401_status.py +8 -0
  27. openapi_client/api_reference_client/models/get_v1_desktop_id_response_403.py +69 -0
  28. openapi_client/api_reference_client/models/get_v1_desktop_id_response_403_status.py +8 -0
  29. openapi_client/api_reference_client/models/get_v1_desktop_id_response_404.py +69 -0
  30. openapi_client/api_reference_client/models/get_v1_desktop_id_response_404_status.py +8 -0
  31. openapi_client/api_reference_client/models/get_v1_desktop_id_response_409.py +69 -0
  32. openapi_client/api_reference_client/models/get_v1_desktop_id_response_409_status.py +8 -0
  33. openapi_client/api_reference_client/models/get_v1_desktop_id_response_429.py +69 -0
  34. openapi_client/api_reference_client/models/get_v1_desktop_id_response_429_status.py +8 -0
  35. openapi_client/api_reference_client/models/get_v1_desktop_id_response_500.py +69 -0
  36. openapi_client/api_reference_client/models/get_v1_desktop_id_response_500_status.py +8 -0
  37. openapi_client/api_reference_client/models/get_v1_desktop_id_response_502.py +69 -0
  38. openapi_client/api_reference_client/models/get_v1_desktop_id_response_502_status.py +8 -0
  39. openapi_client/api_reference_client/models/post_v1_desktop_body.py +59 -0
  40. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_body.py +59 -0
  41. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_200.py +79 -0
  42. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_400.py +69 -0
  43. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_400_status.py +8 -0
  44. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_401.py +69 -0
  45. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_401_status.py +8 -0
  46. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_403.py +69 -0
  47. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_403_status.py +8 -0
  48. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_404.py +69 -0
  49. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_404_status.py +8 -0
  50. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_409.py +69 -0
  51. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_409_status.py +8 -0
  52. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_429.py +69 -0
  53. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_429_status.py +8 -0
  54. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_500.py +69 -0
  55. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_500_status.py +8 -0
  56. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_502.py +69 -0
  57. openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_502_status.py +8 -0
  58. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_click_mouse_action.py +133 -0
  59. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_click_mouse_action_button.py +10 -0
  60. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_click_mouse_action_click_type.py +10 -0
  61. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_click_mouse_action_type.py +8 -0
  62. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_drag_mouse_action.py +98 -0
  63. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_drag_mouse_action_end.py +71 -0
  64. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_drag_mouse_action_start.py +71 -0
  65. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_drag_mouse_action_type.py +8 -0
  66. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_get_cursor_position_action.py +64 -0
  67. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_get_cursor_position_action_type.py +8 -0
  68. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_move_mouse_action.py +80 -0
  69. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_move_mouse_action_type.py +8 -0
  70. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_press_keys_action.py +109 -0
  71. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_press_keys_action_key_action_type.py +10 -0
  72. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_press_keys_action_type.py +8 -0
  73. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_200.py +79 -0
  74. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_400.py +71 -0
  75. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_400_status.py +8 -0
  76. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_401.py +71 -0
  77. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_401_status.py +8 -0
  78. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_403.py +71 -0
  79. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_403_status.py +8 -0
  80. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_404.py +71 -0
  81. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_404_status.py +8 -0
  82. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_409.py +71 -0
  83. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_409_status.py +8 -0
  84. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_429.py +71 -0
  85. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_429_status.py +8 -0
  86. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_500.py +71 -0
  87. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_500_status.py +8 -0
  88. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_502.py +71 -0
  89. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_502_status.py +8 -0
  90. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_screenshot_action.py +63 -0
  91. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_screenshot_action_type.py +8 -0
  92. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_scroll_action.py +81 -0
  93. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_scroll_action_direction.py +11 -0
  94. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_scroll_action_type.py +8 -0
  95. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_type_text_action.py +71 -0
  96. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_type_text_action_type.py +8 -0
  97. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_wait_action.py +70 -0
  98. openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_wait_action_type.py +8 -0
  99. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_200.py +62 -0
  100. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_200_status.py +11 -0
  101. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_400.py +69 -0
  102. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_400_status.py +8 -0
  103. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_401.py +69 -0
  104. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_401_status.py +8 -0
  105. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_403.py +69 -0
  106. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_403_status.py +8 -0
  107. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_404.py +69 -0
  108. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_404_status.py +8 -0
  109. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_409.py +69 -0
  110. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_409_status.py +8 -0
  111. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_429.py +69 -0
  112. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_429_status.py +8 -0
  113. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_500.py +69 -0
  114. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_500_status.py +8 -0
  115. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_502.py +69 -0
  116. openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_502_status.py +8 -0
  117. openapi_client/api_reference_client/models/post_v1_desktop_response_200.py +70 -0
  118. openapi_client/api_reference_client/models/post_v1_desktop_response_200_status.py +11 -0
  119. openapi_client/api_reference_client/models/post_v1_desktop_response_400.py +69 -0
  120. openapi_client/api_reference_client/models/post_v1_desktop_response_400_status.py +8 -0
  121. openapi_client/api_reference_client/models/post_v1_desktop_response_401.py +69 -0
  122. openapi_client/api_reference_client/models/post_v1_desktop_response_401_status.py +8 -0
  123. openapi_client/api_reference_client/models/post_v1_desktop_response_403.py +69 -0
  124. openapi_client/api_reference_client/models/post_v1_desktop_response_403_status.py +8 -0
  125. openapi_client/api_reference_client/models/post_v1_desktop_response_404.py +69 -0
  126. openapi_client/api_reference_client/models/post_v1_desktop_response_404_status.py +8 -0
  127. openapi_client/api_reference_client/models/post_v1_desktop_response_409.py +69 -0
  128. openapi_client/api_reference_client/models/post_v1_desktop_response_409_status.py +8 -0
  129. openapi_client/api_reference_client/models/post_v1_desktop_response_429.py +69 -0
  130. openapi_client/api_reference_client/models/post_v1_desktop_response_429_status.py +8 -0
  131. openapi_client/api_reference_client/models/post_v1_desktop_response_500.py +69 -0
  132. openapi_client/api_reference_client/models/post_v1_desktop_response_500_status.py +8 -0
  133. openapi_client/api_reference_client/models/post_v1_desktop_response_502.py +69 -0
  134. openapi_client/api_reference_client/models/post_v1_desktop_response_502_status.py +8 -0
  135. openapi_client/api_reference_client/py.typed +1 -0
  136. openapi_client/api_reference_client/types.py +46 -0
  137. cyberdesk-0.2.2.dist-info/RECORD +0 -9
  138. cyberdesk-0.2.2.dist-info/top_level.txt +0 -1
cyberdesk/__init__.py CHANGED
@@ -1,8 +1,8 @@
1
- from .client import CyberdeskClient
2
- from .types import (
3
- GetDesktopParams,
4
- LaunchDesktopParams,
5
- TerminateDesktopParams,
6
- ExecuteComputerActionParams,
7
- ExecuteBashActionParams,
1
+ from .client import CyberdeskClient
2
+ from .types import (
3
+ GetDesktopParams,
4
+ LaunchDesktopParams,
5
+ TerminateDesktopParams,
6
+ ExecuteComputerActionParams,
7
+ ExecuteBashActionParams,
8
8
  )
cyberdesk/actions.py CHANGED
@@ -1,38 +1,38 @@
1
- from .types import (
2
- PostV1DesktopIdComputerActionClickMouseAction,
3
- PostV1DesktopIdComputerActionDragMouseAction,
4
- PostV1DesktopIdComputerActionGetCursorPositionAction,
5
- PostV1DesktopIdComputerActionMoveMouseAction,
6
- PostV1DesktopIdComputerActionPressKeysAction,
7
- PostV1DesktopIdComputerActionScreenshotAction,
8
- PostV1DesktopIdComputerActionScrollAction,
9
- PostV1DesktopIdComputerActionTypeTextAction,
10
- PostV1DesktopIdComputerActionWaitAction,
11
- )
12
-
13
- def click_mouse(x: int, y: int, button: str = "left") -> PostV1DesktopIdComputerActionClickMouseAction:
14
- return PostV1DesktopIdComputerActionClickMouseAction(type="click_mouse", x=x, y=y, button=button)
15
-
16
- def drag_mouse(start_x: int, start_y: int, end_x: int, end_y: int, button: str = "left") -> PostV1DesktopIdComputerActionDragMouseAction:
17
- return PostV1DesktopIdComputerActionDragMouseAction(type="drag_mouse", start_x=start_x, start_y=start_y, end_x=end_x, end_y=end_y, button=button)
18
-
19
- def get_cursor_position() -> PostV1DesktopIdComputerActionGetCursorPositionAction:
20
- return PostV1DesktopIdComputerActionGetCursorPositionAction(type="get_cursor_position")
21
-
22
- def move_mouse(x: int, y: int) -> PostV1DesktopIdComputerActionMoveMouseAction:
23
- return PostV1DesktopIdComputerActionMoveMouseAction(type="move_mouse", x=x, y=y)
24
-
25
- def press_keys(keys: list[str]) -> PostV1DesktopIdComputerActionPressKeysAction:
26
- return PostV1DesktopIdComputerActionPressKeysAction(type="press_keys", keys=keys)
27
-
28
- def screenshot() -> PostV1DesktopIdComputerActionScreenshotAction:
29
- return PostV1DesktopIdComputerActionScreenshotAction(type="screenshot")
30
-
31
- def scroll(dx: int, dy: int) -> PostV1DesktopIdComputerActionScrollAction:
32
- return PostV1DesktopIdComputerActionScrollAction(type="scroll", dx=dx, dy=dy)
33
-
34
- def type_text(text: str) -> PostV1DesktopIdComputerActionTypeTextAction:
35
- return PostV1DesktopIdComputerActionTypeTextAction(type="type", text=text)
36
-
37
- def wait(ms: int) -> PostV1DesktopIdComputerActionWaitAction:
1
+ from .types import (
2
+ PostV1DesktopIdComputerActionClickMouseAction,
3
+ PostV1DesktopIdComputerActionDragMouseAction,
4
+ PostV1DesktopIdComputerActionGetCursorPositionAction,
5
+ PostV1DesktopIdComputerActionMoveMouseAction,
6
+ PostV1DesktopIdComputerActionPressKeysAction,
7
+ PostV1DesktopIdComputerActionScreenshotAction,
8
+ PostV1DesktopIdComputerActionScrollAction,
9
+ PostV1DesktopIdComputerActionTypeTextAction,
10
+ PostV1DesktopIdComputerActionWaitAction,
11
+ )
12
+
13
+ def click_mouse(x: int, y: int, button: str = "left") -> PostV1DesktopIdComputerActionClickMouseAction:
14
+ return PostV1DesktopIdComputerActionClickMouseAction(type="click_mouse", x=x, y=y, button=button)
15
+
16
+ def drag_mouse(start_x: int, start_y: int, end_x: int, end_y: int, button: str = "left") -> PostV1DesktopIdComputerActionDragMouseAction:
17
+ return PostV1DesktopIdComputerActionDragMouseAction(type="drag_mouse", start_x=start_x, start_y=start_y, end_x=end_x, end_y=end_y, button=button)
18
+
19
+ def get_cursor_position() -> PostV1DesktopIdComputerActionGetCursorPositionAction:
20
+ return PostV1DesktopIdComputerActionGetCursorPositionAction(type="get_cursor_position")
21
+
22
+ def move_mouse(x: int, y: int) -> PostV1DesktopIdComputerActionMoveMouseAction:
23
+ return PostV1DesktopIdComputerActionMoveMouseAction(type="move_mouse", x=x, y=y)
24
+
25
+ def press_keys(keys: list[str]) -> PostV1DesktopIdComputerActionPressKeysAction:
26
+ return PostV1DesktopIdComputerActionPressKeysAction(type="press_keys", keys=keys)
27
+
28
+ def screenshot() -> PostV1DesktopIdComputerActionScreenshotAction:
29
+ return PostV1DesktopIdComputerActionScreenshotAction(type="screenshot")
30
+
31
+ def scroll(dx: int, dy: int) -> PostV1DesktopIdComputerActionScrollAction:
32
+ return PostV1DesktopIdComputerActionScrollAction(type="scroll", dx=dx, dy=dy)
33
+
34
+ def type_text(text: str) -> PostV1DesktopIdComputerActionTypeTextAction:
35
+ return PostV1DesktopIdComputerActionTypeTextAction(type="type", text=text)
36
+
37
+ def wait(ms: int) -> PostV1DesktopIdComputerActionWaitAction:
38
38
  return PostV1DesktopIdComputerActionWaitAction(type="wait", ms=ms)
cyberdesk/client.py CHANGED
@@ -1,75 +1,75 @@
1
- """
2
- Cyberdesk Python SDK wrapper client.
3
- """
4
-
5
- from .types import (
6
- GetDesktopParams,
7
- TerminateDesktopParams,
8
- ExecuteBashActionParams,
9
- ComputerActionModel,
10
- )
11
- from openapi_client.api_reference_client.client import Client
12
- from openapi_client.api_reference_client.api.desktop import (
13
- get_v1_desktop_id,
14
- post_v1_desktop,
15
- post_v1_desktop_id_stop,
16
- post_v1_desktop_id_computer_action,
17
- post_v1_desktop_id_bash_action,
18
- )
19
- from openapi_client.api_reference_client.models import (
20
- PostV1DesktopBody,
21
- PostV1DesktopIdBashActionBody,
22
- )
23
-
24
- class CyberdeskClient:
25
- """
26
- Wrapper client for the Cyberdesk API.
27
- Provides both synchronous and asynchronous methods.
28
- """
29
- def __init__(self, api_key: str, base_url: str = "https://api.cyberdesk.io"):
30
- self.api_key = api_key
31
- self.client = Client(base_url=base_url, headers={"x-api-key": api_key})
32
-
33
- def get_desktop(self, id: GetDesktopParams):
34
- """Synchronous: Get details of a specific desktop instance."""
35
- return get_v1_desktop_id.sync(id=id, client=self.client, x_api_key=self.api_key)
36
-
37
- async def async_get_desktop(self, id: GetDesktopParams):
38
- """Async: Get details of a specific desktop instance. Use with 'await'."""
39
- return await get_v1_desktop_id.asyncio(id=id, client=self.client, x_api_key=self.api_key)
40
-
41
- def launch_desktop(self, timeout_ms: int = None):
42
- """Synchronous: Create a new virtual desktop instance."""
43
- body = PostV1DesktopBody(timeout_ms=timeout_ms) if timeout_ms is not None else PostV1DesktopBody()
44
- return post_v1_desktop.sync(client=self.client, body=body, x_api_key=self.api_key)
45
-
46
- async def async_launch_desktop(self, timeout_ms: int = None):
47
- """Async: Create a new virtual desktop instance. Use with 'await'."""
48
- body = PostV1DesktopBody(timeout_ms=timeout_ms) if timeout_ms is not None else PostV1DesktopBody()
49
- return await post_v1_desktop.asyncio(client=self.client, body=body, x_api_key=self.api_key)
50
-
51
- def terminate_desktop(self, id: TerminateDesktopParams):
52
- """Synchronous: Stop a running desktop instance."""
53
- return post_v1_desktop_id_stop.sync(id=id, client=self.client, x_api_key=self.api_key)
54
-
55
- async def async_terminate_desktop(self, id: TerminateDesktopParams):
56
- """Async: Stop a running desktop instance. Use with 'await'."""
57
- return await post_v1_desktop_id_stop.asyncio(id=id, client=self.client, x_api_key=self.api_key)
58
-
59
- def execute_computer_action(self, id: GetDesktopParams, action: ComputerActionModel):
60
- """Synchronous: Perform an action on the desktop (mouse, keyboard, etc)."""
61
- return post_v1_desktop_id_computer_action.sync(id=id, client=self.client, body=action, x_api_key=self.api_key)
62
-
63
- async def async_execute_computer_action(self, id: GetDesktopParams, action: ComputerActionModel):
64
- """Async: Perform an action on the desktop (mouse, keyboard, etc). Use with 'await'."""
65
- return await post_v1_desktop_id_computer_action.asyncio(id=id, client=self.client, body=action, x_api_key=self.api_key)
66
-
67
- def execute_bash_action(self, id: GetDesktopParams, command: ExecuteBashActionParams):
68
- """Synchronous: Execute a bash command on the desktop."""
69
- body = PostV1DesktopIdBashActionBody(command=command)
70
- return post_v1_desktop_id_bash_action.sync(id=id, client=self.client, body=body, x_api_key=self.api_key)
71
-
72
- async def async_execute_bash_action(self, id: GetDesktopParams, command: ExecuteBashActionParams):
73
- """Async: Execute a bash command on the desktop. Use with 'await'."""
74
- body = PostV1DesktopIdBashActionBody(command=command)
1
+ """
2
+ Cyberdesk Python SDK wrapper client.
3
+ """
4
+
5
+ from .types import (
6
+ GetDesktopParams,
7
+ TerminateDesktopParams,
8
+ ExecuteBashActionParams,
9
+ ComputerActionModel,
10
+ )
11
+ from openapi_client.api_reference_client.client import Client
12
+ from openapi_client.api_reference_client.api.desktop import (
13
+ get_v1_desktop_id,
14
+ post_v1_desktop,
15
+ post_v1_desktop_id_stop,
16
+ post_v1_desktop_id_computer_action,
17
+ post_v1_desktop_id_bash_action,
18
+ )
19
+ from openapi_client.api_reference_client.models import (
20
+ PostV1DesktopBody,
21
+ PostV1DesktopIdBashActionBody,
22
+ )
23
+
24
+ class CyberdeskClient:
25
+ """
26
+ Wrapper client for the Cyberdesk API.
27
+ Provides both synchronous and asynchronous methods.
28
+ """
29
+ def __init__(self, api_key: str, base_url: str = "https://api.cyberdesk.io"):
30
+ self.api_key = api_key
31
+ self.client = Client(base_url=base_url, headers={"x-api-key": api_key})
32
+
33
+ def get_desktop(self, id: GetDesktopParams):
34
+ """Synchronous: Get details of a specific desktop instance."""
35
+ return get_v1_desktop_id.sync(id=id, client=self.client, x_api_key=self.api_key)
36
+
37
+ async def async_get_desktop(self, id: GetDesktopParams):
38
+ """Async: Get details of a specific desktop instance. Use with 'await'."""
39
+ return await get_v1_desktop_id.asyncio(id=id, client=self.client, x_api_key=self.api_key)
40
+
41
+ def launch_desktop(self, timeout_ms: int = None):
42
+ """Synchronous: Create a new virtual desktop instance."""
43
+ body = PostV1DesktopBody(timeout_ms=timeout_ms) if timeout_ms is not None else PostV1DesktopBody()
44
+ return post_v1_desktop.sync(client=self.client, body=body, x_api_key=self.api_key)
45
+
46
+ async def async_launch_desktop(self, timeout_ms: int = None):
47
+ """Async: Create a new virtual desktop instance. Use with 'await'."""
48
+ body = PostV1DesktopBody(timeout_ms=timeout_ms) if timeout_ms is not None else PostV1DesktopBody()
49
+ return await post_v1_desktop.asyncio(client=self.client, body=body, x_api_key=self.api_key)
50
+
51
+ def terminate_desktop(self, id: TerminateDesktopParams):
52
+ """Synchronous: Stop a running desktop instance."""
53
+ return post_v1_desktop_id_stop.sync(id=id, client=self.client, x_api_key=self.api_key)
54
+
55
+ async def async_terminate_desktop(self, id: TerminateDesktopParams):
56
+ """Async: Stop a running desktop instance. Use with 'await'."""
57
+ return await post_v1_desktop_id_stop.asyncio(id=id, client=self.client, x_api_key=self.api_key)
58
+
59
+ def execute_computer_action(self, id: GetDesktopParams, action: ComputerActionModel):
60
+ """Synchronous: Perform an action on the desktop (mouse, keyboard, etc)."""
61
+ return post_v1_desktop_id_computer_action.sync(id=id, client=self.client, body=action, x_api_key=self.api_key)
62
+
63
+ async def async_execute_computer_action(self, id: GetDesktopParams, action: ComputerActionModel):
64
+ """Async: Perform an action on the desktop (mouse, keyboard, etc). Use with 'await'."""
65
+ return await post_v1_desktop_id_computer_action.asyncio(id=id, client=self.client, body=action, x_api_key=self.api_key)
66
+
67
+ def execute_bash_action(self, id: GetDesktopParams, command: ExecuteBashActionParams):
68
+ """Synchronous: Execute a bash command on the desktop."""
69
+ body = PostV1DesktopIdBashActionBody(command=command)
70
+ return post_v1_desktop_id_bash_action.sync(id=id, client=self.client, body=body, x_api_key=self.api_key)
71
+
72
+ async def async_execute_bash_action(self, id: GetDesktopParams, command: ExecuteBashActionParams):
73
+ """Async: Execute a bash command on the desktop. Use with 'await'."""
74
+ body = PostV1DesktopIdBashActionBody(command=command)
75
75
  return await post_v1_desktop_id_bash_action.asyncio(id=id, client=self.client, body=body, x_api_key=self.api_key)
cyberdesk/types.py CHANGED
@@ -1,50 +1,50 @@
1
- from openapi_client.api_reference_client.models import (
2
- PostV1DesktopBody,
3
- PostV1DesktopIdComputerActionClickMouseAction,
4
- PostV1DesktopIdComputerActionDragMouseAction,
5
- PostV1DesktopIdComputerActionGetCursorPositionAction,
6
- PostV1DesktopIdComputerActionMoveMouseAction,
7
- PostV1DesktopIdComputerActionPressKeysAction,
8
- PostV1DesktopIdComputerActionScreenshotAction,
9
- PostV1DesktopIdComputerActionScrollAction,
10
- PostV1DesktopIdComputerActionTypeTextAction,
11
- PostV1DesktopIdComputerActionWaitAction,
12
- )
13
- from typing import Union
14
-
15
- # Named parameter types for SDK methods
16
- GetDesktopParams = str # Desktop ID
17
- LaunchDesktopParams = PostV1DesktopBody
18
- TerminateDesktopParams = str # Desktop ID
19
- ExecuteBashActionParams = str # Command string
20
-
21
- # Strongly-typed union for all computer action models
22
- ComputerActionModel = Union[
23
- PostV1DesktopIdComputerActionClickMouseAction,
24
- PostV1DesktopIdComputerActionDragMouseAction,
25
- PostV1DesktopIdComputerActionGetCursorPositionAction,
26
- PostV1DesktopIdComputerActionMoveMouseAction,
27
- PostV1DesktopIdComputerActionPressKeysAction,
28
- PostV1DesktopIdComputerActionScreenshotAction,
29
- PostV1DesktopIdComputerActionScrollAction,
30
- PostV1DesktopIdComputerActionTypeTextAction,
31
- PostV1DesktopIdComputerActionWaitAction,
32
- ]
33
-
34
- # Re-export action models for ergonomic imports
35
- __all__ = [
36
- "GetDesktopParams",
37
- "LaunchDesktopParams",
38
- "TerminateDesktopParams",
39
- "ExecuteBashActionParams",
40
- "ComputerActionModel",
41
- "PostV1DesktopIdComputerActionClickMouseAction",
42
- "PostV1DesktopIdComputerActionDragMouseAction",
43
- "PostV1DesktopIdComputerActionGetCursorPositionAction",
44
- "PostV1DesktopIdComputerActionMoveMouseAction",
45
- "PostV1DesktopIdComputerActionPressKeysAction",
46
- "PostV1DesktopIdComputerActionScreenshotAction",
47
- "PostV1DesktopIdComputerActionScrollAction",
48
- "PostV1DesktopIdComputerActionTypeTextAction",
49
- "PostV1DesktopIdComputerActionWaitAction",
1
+ from openapi_client.api_reference_client.models import (
2
+ PostV1DesktopBody,
3
+ PostV1DesktopIdComputerActionClickMouseAction,
4
+ PostV1DesktopIdComputerActionDragMouseAction,
5
+ PostV1DesktopIdComputerActionGetCursorPositionAction,
6
+ PostV1DesktopIdComputerActionMoveMouseAction,
7
+ PostV1DesktopIdComputerActionPressKeysAction,
8
+ PostV1DesktopIdComputerActionScreenshotAction,
9
+ PostV1DesktopIdComputerActionScrollAction,
10
+ PostV1DesktopIdComputerActionTypeTextAction,
11
+ PostV1DesktopIdComputerActionWaitAction,
12
+ )
13
+ from typing import Union
14
+
15
+ # Named parameter types for SDK methods
16
+ GetDesktopParams = str # Desktop ID
17
+ LaunchDesktopParams = PostV1DesktopBody
18
+ TerminateDesktopParams = str # Desktop ID
19
+ ExecuteBashActionParams = str # Command string
20
+
21
+ # Strongly-typed union for all computer action models
22
+ ComputerActionModel = Union[
23
+ PostV1DesktopIdComputerActionClickMouseAction,
24
+ PostV1DesktopIdComputerActionDragMouseAction,
25
+ PostV1DesktopIdComputerActionGetCursorPositionAction,
26
+ PostV1DesktopIdComputerActionMoveMouseAction,
27
+ PostV1DesktopIdComputerActionPressKeysAction,
28
+ PostV1DesktopIdComputerActionScreenshotAction,
29
+ PostV1DesktopIdComputerActionScrollAction,
30
+ PostV1DesktopIdComputerActionTypeTextAction,
31
+ PostV1DesktopIdComputerActionWaitAction,
32
+ ]
33
+
34
+ # Re-export action models for ergonomic imports
35
+ __all__ = [
36
+ "GetDesktopParams",
37
+ "LaunchDesktopParams",
38
+ "TerminateDesktopParams",
39
+ "ExecuteBashActionParams",
40
+ "ComputerActionModel",
41
+ "PostV1DesktopIdComputerActionClickMouseAction",
42
+ "PostV1DesktopIdComputerActionDragMouseAction",
43
+ "PostV1DesktopIdComputerActionGetCursorPositionAction",
44
+ "PostV1DesktopIdComputerActionMoveMouseAction",
45
+ "PostV1DesktopIdComputerActionPressKeysAction",
46
+ "PostV1DesktopIdComputerActionScreenshotAction",
47
+ "PostV1DesktopIdComputerActionScrollAction",
48
+ "PostV1DesktopIdComputerActionTypeTextAction",
49
+ "PostV1DesktopIdComputerActionWaitAction",
50
50
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cyberdesk
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: The official Python SDK for Cyberdesk
5
5
  Author-email: Cyberdesk Team <dev@cyberdesk.io>
6
6
  License-Expression: MIT
@@ -176,13 +176,22 @@ To build and publish this package to [PyPI](https://pypi.org/project/cyberdesk/)
176
176
  uv pip install .[dev]
177
177
  ```
178
178
 
179
- 3. **Build the package:**
179
+ 3. **Bump the version number** in `pyproject.toml` (e.g., `version = "0.2.4"`).
180
+
181
+ 4. **Clean your `dist/` directory** before building to avoid 'File already exists' errors:
182
+ ```bash
183
+ rm -rf dist/*
184
+ # On Windows PowerShell:
185
+ Remove-Item dist\* -Force
186
+ ```
187
+
188
+ 5. **Build the package:**
180
189
  ```bash
181
190
  python -m build
182
191
  ```
183
192
  This creates a `dist/` directory with `.whl` and `.tar.gz` files.
184
193
 
185
- 4. **(Recommended) Set up a `.pypirc` file for easy publishing:**
194
+ 6. **(Recommended) Set up a `.pypirc` file for easy publishing:**
186
195
  - Create a file named `.pypirc` in your home directory (e.g., `C:\Users\yourname\.pypirc` on Windows or `~/.pypirc` on Linux/macOS).
187
196
  - Add:
188
197
  ```ini
@@ -195,14 +204,14 @@ To build and publish this package to [PyPI](https://pypi.org/project/cyberdesk/)
195
204
  password = pypi-AgEIcH... # <-- paste your API token here
196
205
  ```
197
206
 
198
- 5. **Publish to PyPI:**
207
+ 7. **Publish to PyPI:**
199
208
  ```bash
200
209
  twine upload dist/*
201
210
  ```
202
211
  - If you set up `.pypirc`, you won't be prompted for credentials.
203
212
  - If not, enter `__token__` as the username and paste your API token as the password.
204
213
 
205
- 6. **Verify:**
214
+ 8. **Verify:**
206
215
  - Visit https://pypi.org/project/cyberdesk/ to see your published package.
207
216
  - Try installing it in a fresh environment:
208
217
  ```bash
@@ -0,0 +1,136 @@
1
+ cyberdesk/__init__.py,sha256=y9_g5NSt6hLmLsYLZuueIrRdQ_iT4EcAbbYwxPrjaHg,196
2
+ cyberdesk/actions.py,sha256=O8AV9hsPMvhSn2qZHaSuGfjMaAJeLoHdnd10LT_4_Ws,2069
3
+ cyberdesk/client.py,sha256=kxtkdh7AjNuXU8u2rAGhHQTuUKRLyXvX_h7jtdgLzrk,3807
4
+ cyberdesk/types.py,sha256=5jJSShzk3G8DqT0uRc8NFMlSru46tP9q3KJXcZhNRhc,1975
5
+ cyberdesk-0.2.4.dist-info/licenses/LICENSE,sha256=06Op63FCwGhuUOz__M8IZW5sxd29WxyGC4X5-Uih7IQ,1071
6
+ openapi_client/api_reference_client/__init__.py,sha256=AKzi7ml3W37ADpacR564Q0j8Vsls9eFRsccqBgVWUNk,164
7
+ openapi_client/api_reference_client/client.py,sha256=fXqcOZ8-Gse8ibdNn29cB93rozF_LAmSuofr5fMH0bw,12687
8
+ openapi_client/api_reference_client/errors.py,sha256=DqMs2X8xF-YlxOWUYdkm_1wiQyDOKtWzYSiETtsXGjg,562
9
+ openapi_client/api_reference_client/py.typed,sha256=8ZJUsxZiuOy1oJeVhsTWQhTG_6pTVHVXk5hJL79ebTk,25
10
+ openapi_client/api_reference_client/types.py,sha256=4Noqx0va9oEOqpp6miwyq9Y-nW4lGrd_ClvJbEXi5To,1051
11
+ openapi_client/api_reference_client/api/__init__.py,sha256=GCPQJE2iGdVomChl14_FL-DSQChE95io8x6OWHFkv5k,46
12
+ openapi_client/api_reference_client/api/desktop/__init__.py,sha256=YhYv6-Rvm9iFFDhMpnqfNDGwKr5JI_J1tcUsLLUCWQg,57
13
+ openapi_client/api_reference_client/api/desktop/get_v1_desktop_id.py,sha256=SYPQlmDLOOi8UmC6VVf2oG6uHpD96sH4ONp1iqzfuZ0,10032
14
+ openapi_client/api_reference_client/api/desktop/post_v1_desktop.py,sha256=G2OqGf5FskGiS4k8Gnm5VsYYyXlJJXYjRcL-7m-bd9k,9670
15
+ openapi_client/api_reference_client/api/desktop/post_v1_desktop_id_bash_action.py,sha256=-JBAg42bRz3NNvclLOdxfVUKnMO2i07t0IeObxGPyBE,11704
16
+ openapi_client/api_reference_client/api/desktop/post_v1_desktop_id_computer_action.py,sha256=RH4FyPGj6TD01V8C_acn5cyQAhqlnuMvUsZ5iPvMAmI,18729
17
+ openapi_client/api_reference_client/api/desktop/post_v1_desktop_id_stop.py,sha256=aK0PNNBxe-NH8Uwq9QDXhRUkN-7ZvmeTvHyKDjTq2Os,10188
18
+ openapi_client/api_reference_client/models/__init__.py,sha256=RqgWUcMXoZH3_dfeUfWusYiD7jUct0-VkD8JeeFxp6w,16250
19
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_200.py,sha256=ZNonGXj2jOFPRY8rOCXTCrc5kOC_oCHCSeh9pe1I_Ps,3482
20
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_200_status.py,sha256=4SIj8rUeXo2EvBs8IQb5QxwrR5K_2HTyGqNhUFz3phc,245
21
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_400.py,sha256=Jqdv09BJBszJ1pmjDVweJNxmLWJpE7Q5zceJFBJhJQE,2050
22
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_400_status.py,sha256=evpVIuhUbTRTdcGGegVzrA76DZ5CxgfA9zqTCEUJUB8,164
23
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_401.py,sha256=eQwcrc5MVFXgKX19ZeIOee0_GHvthF-tE6y-0dgHsLg,2050
24
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_401_status.py,sha256=4YzLZxe-kr_BBNNLKDCVv8TFN_P_dTHqiPjrmJrcgcA,164
25
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_403.py,sha256=RanL7GnddFUfrePhQBNl1g5gkrl-DFsCHq4C2ZXrTBU,2050
26
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_403_status.py,sha256=S2iCiA8Vo3qgw9zTWRWS-QXMeWgausqje9I4A5FOGH4,164
27
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_404.py,sha256=chjs4fQaYJHn8jKSDADsc0GbqJjFXGz9VYAh3OZyxMg,2050
28
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_404_status.py,sha256=vTNw_cX8-4xNsWB7GJwKqsE58SohSbXbSnl3BMnA8-0,164
29
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_409.py,sha256=eYv54AMEYZYZuw5dpxYi69wW9jEDRn08n-pDO_mYyC8,2050
30
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_409_status.py,sha256=Wurg3Q3Q9JI5WArXIxMBqZcC077Fxujvn0Zf5hBHuwE,164
31
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_429.py,sha256=Ja7WFx2XysSk9W_meUyMEkuHGVaCHir9csR5ZQxYfvM,2050
32
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_429_status.py,sha256=nxX_tOLSp-QaU0XUulzPLGEWHpwVr1DLxKxyrL2lI0M,164
33
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_500.py,sha256=ZqOAxC7zscGRDtFdQCN6Q7gCLPBzuYab_JrH0P2wz_M,2050
34
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_500_status.py,sha256=FsMTtKc7gx6S8X8E0mUQe6W98hCiOslun66OiiDbH-o,164
35
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_502.py,sha256=BZzvf7F6qmZscvNQSAjzIdoIxYQUjfOB19YFAouBGfk,2050
36
+ openapi_client/api_reference_client/models/get_v1_desktop_id_response_502_status.py,sha256=drloPhnHjtGZaCfXIsfzI5Xg9D39lw-X-rokQEbXQ5g,164
37
+ openapi_client/api_reference_client/models/post_v1_desktop_body.py,sha256=tdGdaQnEUJHE8cr_rzsy54woGudpJez9GAxPR_QQR3Y,1751
38
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_body.py,sha256=y19nQCNlNqQBQhZSvtrfcPZTnOIrkbPxH9W-X7Ynu5Q,1686
39
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_200.py,sha256=A1cSJfYiVtU-gQZkoVoYpQNR1-N-lew7-sFzknFQ_kg,2695
40
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_400.py,sha256=kiW8Mp_ImyCQ1mMGVtMXzNZBllqBCqDlF6wBgvCZuIw,2168
41
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_400_status.py,sha256=4ijaQBB3kuLjNAnJRhKQfWxvn5oLATusClSqSHyNgA0,175
42
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_401.py,sha256=2QSdUyX_PNza1yzgDsjMWABByUt2W38UIHIXH8B2FMc,2168
43
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_401_status.py,sha256=-iEWJuT1bDMC-qrKjt3IvkP2O0nhDuiipeujZOkHkT4,175
44
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_403.py,sha256=OgSMuhOKht79hOlnvk7pchZBy42B7bbbQI5Sl9RJdtI,2168
45
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_403_status.py,sha256=Wco_doJjpmsgyB99-Vy3num2gKj3gWPq44DB0AAMLJ4,175
46
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_404.py,sha256=d7yKUQxGuUrdhoycGynM-ys4xBYHsLkKW7Vk6XvwJcs,2168
47
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_404_status.py,sha256=5YlT8aa7mWxrLQxG9zwIZDFOPo8BBGjbsqfEOP9egw0,175
48
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_409.py,sha256=bjzzJf9urzYlEcHxLHx7mXh2TLVos-66rriMQd4uiVI,2168
49
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_409_status.py,sha256=GB907g-1LzhjhVMMLw1b2MVti01wKgA2QBiuaELIT2w,175
50
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_429.py,sha256=4AwEEQ_i-Qouul89omd1V-TYkLKqLlpIULn4djFhmno,2168
51
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_429_status.py,sha256=VSiGCwjgc_6FDJcbY5REt3m3UhU7ln96cfrYTOg__zc,175
52
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_500.py,sha256=q0DZdB-lv1Rc6_4Y0vxoGu6Q35zDYuAia4x2njgETTY,2168
53
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_500_status.py,sha256=sxGSxXCiiB7rRnP_43U3sySKHdl5SV1OVPR4WNwFqMI,175
54
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_502.py,sha256=vPg_qbar9eYP-Fwji5iCqwDQi4i6oYOgC46GcfOhe1s,2168
55
+ openapi_client/api_reference_client/models/post_v1_desktop_id_bash_action_response_502_status.py,sha256=VaIm86WHFPvOM9dMu_f7fXs4Kgqtp0YNN6ujTXqeB1U,175
56
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_click_mouse_action.py,sha256=rQ4Pwp-b7CyrXOsmgl5gZHQChcKeNpwl_Q1LvmfkbLw,5150
57
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_click_mouse_action_button.py,sha256=I1aup2Ab9J6BD0a2ugh7vD0jFC-FvwWysTCmZsqp_o0,226
58
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_click_mouse_action_click_type.py,sha256=uxO5n1yrvpRCoX_qVl-vwNz90KLqzoGHXtvWh0KAbYU,221
59
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_click_mouse_action_type.py,sha256=fdO3Q2xQI1KNMsXRpbidEvWbj0_ec3MGBzp0F6kAbU4,194
60
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_drag_mouse_action.py,sha256=wJa2lP-XHZ1z50dfZh0opb5Acd6j8C7ODHspKWFW3ls,3529
61
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_drag_mouse_action_end.py,sha256=xBHpxQFwnVag4I0NQQ9Tkdgjyrg7HoegZghysNyY5uc,1962
62
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_drag_mouse_action_start.py,sha256=cEpRrgS-G-wBIhzXtzGO-1ERGOAn7oxalQ09iv7EDkg,1974
63
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_drag_mouse_action_type.py,sha256=8A7ePvmKD2E07gxSuOpfgb4j2u28PnphcoKmiTMVhPs,191
64
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_get_cursor_position_action.py,sha256=Pw4u1eMMXUQeFr_IGxQdZjMS2R7ZHVwujqPouXk0Rek,2143
65
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_get_cursor_position_action_type.py,sha256=N4olBYgiY-dXvtD89ifKPrD_VWcJBGbORPOtspSMnfA,217
66
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_move_mouse_action.py,sha256=akQ1Cs7t4MKMU10VXN5bBIWd_fw6Rn2sD5cln6Ej9Io,2381
67
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_move_mouse_action_type.py,sha256=Zr49qIpcHNPYOLl0uvkjm60X6xO6jY2yo64wAG91lVI,191
68
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_press_keys_action.py,sha256=7b9r8CdzOVebwhMxsjDxZXtekqQ1FnoehBJNCOQL7qY,4016
69
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_press_keys_action_key_action_type.py,sha256=DTWR50I3gdrOtr7e7MeUbzdCoRaatZ_Ult2etHQGaQw,224
70
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_press_keys_action_type.py,sha256=8y-C2AA-vlvkhPH6rRLXEo7Bx73r9bVV4g-xvKwVAek,191
71
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_200.py,sha256=EBSa-lq6HaZ_JaN6xQ3phfw2aT3-UfRpJYTOksSJsd8,2715
72
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_400.py,sha256=_55AEUpTmBNm2PvRpPN2uQHoPk9jt2dpcvJIZIg8wHE,2219
73
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_400_status.py,sha256=WISapM6v7WVcr5aBz10Ks7H-BDFaPBTLkXVehCBuCXs,179
74
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_401.py,sha256=8D78FpAWOdARQqvwl0tCPLLgHq_Y51xugyAK-A9dTgQ,2219
75
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_401_status.py,sha256=ikZeHX_xdRlgDg-2vGw0SkSEH0H1ZS7qS2nqFRjk65I,179
76
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_403.py,sha256=K3WjGl8dPBLUZorqlan_i70g26ZROL9NoYBJEGUIzEI,2219
77
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_403_status.py,sha256=juicM5d3_i5biULD6i_Zfml3Mcga-Ch9TSLFjEPSiUg,179
78
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_404.py,sha256=lcdjOpM5bLSrWZLHB5YSFel1OdxhV6K1YSh5UQF5kWE,2219
79
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_404_status.py,sha256=MCaIwhC2Wm7jTZis42y7elKU6_5Eainb_IT9Xunq9wI,179
80
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_409.py,sha256=6aiOvksYcDBCwi3IQW-tEM9DMceqzRaMwEh2M4UJJV4,2219
81
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_409_status.py,sha256=atVn3J20qFcN5jLFbqvkrXzN9AvQpaSocg2Is5adofM,179
82
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_429.py,sha256=v1MqUi92gYIeFFL1FH64Nc2TvFdf_6oY_4grlqnG5zc,2219
83
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_429_status.py,sha256=6HLwWt87ukxKwfIn3lqhhihi-VmWF1aJAsUipC9D23g,179
84
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_500.py,sha256=cKmNuQmE1RJq4NXpesQWXBmmiZYDxwFgnFhb-6c2elQ,2219
85
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_500_status.py,sha256=XvrxiDxxx3FrjnDnqdGC2IrEse3AEAf5O-9FJ-TXiaM,179
86
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_502.py,sha256=fr710QIK6snS6xPDen8ccPpZ3422i_1JOJyc1g_ikdc,2219
87
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_response_502_status.py,sha256=Bu5qUbIP5-IQ6Lv9_BOzIQWwrSGdyuFkuGpqPuOADZw,179
88
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_screenshot_action.py,sha256=9vNz0a3gCFKGSBKnOlZ98rzx3ah-WBudkT8b-HRNCMo,2038
89
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_screenshot_action_type.py,sha256=R1n84Hg1Rl13k7AmWj1cJz0_AA8zmMgbXDL40ptpL64,192
90
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_scroll_action.py,sha256=X9WI8ZV55oKC2db2ddAhuwAzJA0AV2dZCn4b-PxQDtQ,2756
91
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_scroll_action_direction.py,sha256=0HNlAFw6UQEBZggnAdbYXd2Xjuxj4f_9OMgqdcPiJKM,236
92
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_scroll_action_type.py,sha256=eN6a9-42xXIRlN1-SdhL6n6zIEsAj2MJCjVxVq-J4xM,180
93
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_type_text_action.py,sha256=__M4hjolmCnGuxemNA9jf8WKoAYG04qhm8BgOMWwNVU,2212
94
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_type_text_action_type.py,sha256=B5Z6vtmhb-K0-swluYU0TgjV94wOw3cPrTkElbVUR7M,178
95
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_wait_action.py,sha256=tZd_17bHaNlLQ0CfqnWqRP42E866n96JgW6bJcgKELM,2162
96
+ openapi_client/api_reference_client/models/post_v1_desktop_id_computer_action_wait_action_type.py,sha256=Kd_PzKJJLWAkvs8mOchN3J3bhoULO-QxsUZOWvh4dEM,174
97
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_200.py,sha256=IC5qBRxUNqfiKvqDUkMyZv0JyWjQCDMKdrdUlH-gkdg,1921
98
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_200_status.py,sha256=IQF6suA1LVAXsuNZowH_-vdaFrKt5oigqwpgbTpShMs,250
99
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_400.py,sha256=OU9pDpI2nFYdyhO1R3FfWugbUMP4T8z6ljUcun7YCAE,2104
100
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_400_status.py,sha256=X72j3VKjM12j3WqQ7kP0IPRLq6dNK6iTJayL5uX6i5s,169
101
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_401.py,sha256=bpWv1Lemm5S-nVt-CgN7Ck5dZL2DK_NqwJBpuyntbVk,2104
102
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_401_status.py,sha256=DAv5PEucQt776pmKldRhDaEzns3Z_YtFrwy4NtTcIaQ,169
103
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_403.py,sha256=AIAUtecvtoyWMssXjf2P9ulQ8Ly4ENGpGSSsRyogrXk,2104
104
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_403_status.py,sha256=Ymk913fK00THmbhY0S_KyXWq8uhh9TMBRttJZXTKEkg,169
105
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_404.py,sha256=7cP0upoV6JHVwiiWfdGOMfCiFxuT_fVLCYSN9D28XWk,2104
106
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_404_status.py,sha256=ahAN0kLT76ztQri3sPoryxIAYY7z_8T-owdfk4VhG2A,169
107
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_409.py,sha256=oCqpYAimrQvy-oR0y8WnHNufounywAb_HQ5Qy3btRT4,2104
108
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_409_status.py,sha256=IY8JHFqt5HweQ50i2FiQLshqNigWgrCcDRGYgjIKqN8,169
109
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_429.py,sha256=WjGQQZtRUx3omfBus4bEUZuKlUmK6g1JblT7PdA4-ZM,2104
110
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_429_status.py,sha256=dCI1MDlA5-lDhqeRGbgEOARpWFgozZK9IEJqN9o2-X0,169
111
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_500.py,sha256=L8Pdr_RHEStPKpdGfimZPjr7eTXGFjWBWJ62odPgMs8,2104
112
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_500_status.py,sha256=9RYNrXQtdIIW14dVowIRdOARkqtXt_d4tx5TmM8XE9Y,169
113
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_502.py,sha256=y_xRwz1kqbKcSYjmN9TopnrSLPaGd_vIEcmlEN3SXow,2104
114
+ openapi_client/api_reference_client/models/post_v1_desktop_id_stop_response_502_status.py,sha256=Cz_pLICgHdLenv1neoQain9vVLntaBoZXXC29N2vG1Y,169
115
+ openapi_client/api_reference_client/models/post_v1_desktop_response_200.py,sha256=-2X5v0iGs0KuJC2xwmDa0r-5NstpfdJIRDNyx-6i-60,2064
116
+ openapi_client/api_reference_client/models/post_v1_desktop_response_200_status.py,sha256=3VwEYlDQMjyd-fQZOXtuRWmPKgiTk70yX8bXXUPjqYQ,244
117
+ openapi_client/api_reference_client/models/post_v1_desktop_response_400.py,sha256=wzc6GmzZDW8ViZSj68ta12_WmxaCghsDfQ7H1wJVDy0,2036
118
+ openapi_client/api_reference_client/models/post_v1_desktop_response_400_status.py,sha256=l61VF8WXZyo4nWmajulCyxqNMBYTetOCQNwiZhti5Ug,163
119
+ openapi_client/api_reference_client/models/post_v1_desktop_response_401.py,sha256=D1bj_w3efqWmuAobaK-a3LRxsVzInagSfNME_DGNAQU,2036
120
+ openapi_client/api_reference_client/models/post_v1_desktop_response_401_status.py,sha256=TImthUQqaO_dRgGxAPyOnWA2LC9BYKiGaxp2BujcHZs,163
121
+ openapi_client/api_reference_client/models/post_v1_desktop_response_403.py,sha256=8IL1Gk3gbS8gSHufKZ7J9smIDhwp0cmgaiw6p6sSV7w,2036
122
+ openapi_client/api_reference_client/models/post_v1_desktop_response_403_status.py,sha256=0sJCC8Dgk-rG_M2pk_40zcAoz6oR6IqOa4wVGsRy3hc,163
123
+ openapi_client/api_reference_client/models/post_v1_desktop_response_404.py,sha256=uC70-eGyWg-3HO4anzrnP5cxQ8a-KhTYRdsRzBxvK04,2036
124
+ openapi_client/api_reference_client/models/post_v1_desktop_response_404_status.py,sha256=0l_mVRILdeims3VqqanAzqKsejF8AIIfWYgLzr9mHZc,163
125
+ openapi_client/api_reference_client/models/post_v1_desktop_response_409.py,sha256=tRUhH8bKQJXmNygRE6uq0haDACeLuq9m6knE0wOBSyc,2036
126
+ openapi_client/api_reference_client/models/post_v1_desktop_response_409_status.py,sha256=tvCMCpDfVBtdhdazQFraVsWlMgs7BkjRHUQwT8uoaV4,163
127
+ openapi_client/api_reference_client/models/post_v1_desktop_response_429.py,sha256=8KoxMlDhpGTYGGuPHieIaWqD-SJYKwEXg_avob7JDN8,2036
128
+ openapi_client/api_reference_client/models/post_v1_desktop_response_429_status.py,sha256=HJmqCSKbNurhsKQgWwlWPPxvssAQZK9h_huY3Sx3q9Y,163
129
+ openapi_client/api_reference_client/models/post_v1_desktop_response_500.py,sha256=--be4PcUFAAZXBIuZDnRCd_ghymvHVW37IXrKtG1WQM,2036
130
+ openapi_client/api_reference_client/models/post_v1_desktop_response_500_status.py,sha256=xZ16zTTNQmzXJ_kGwZ0Dpzgfb3pYAfXgvSybiTohs1M,163
131
+ openapi_client/api_reference_client/models/post_v1_desktop_response_502.py,sha256=AtVm799Itz2A2-cQOwHu-1japGSXVvMDUTETLDvTrAI,2036
132
+ openapi_client/api_reference_client/models/post_v1_desktop_response_502_status.py,sha256=y45sxeHU0bzaR2hkDQLLUN-NGr3OtJ_ofqdywlL6kZA,163
133
+ cyberdesk-0.2.4.dist-info/METADATA,sha256=JB90v5sps7mDP26w0Ets2pndO1wG0Iy_6AuCXndLPeQ,6404
134
+ cyberdesk-0.2.4.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
135
+ cyberdesk-0.2.4.dist-info/top_level.txt,sha256=qTYHZHVHh3VClNPQsiFFA8p8tmJgFGhq9G1COd-pX_A,25
136
+ cyberdesk-0.2.4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.3.1)
2
+ Generator: setuptools (80.4.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 Cyberdesk Team
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Cyberdesk Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.
@@ -0,0 +1,2 @@
1
+ cyberdesk
2
+ openapi_client
@@ -0,0 +1,8 @@
1
+ """A client library for accessing API Reference"""
2
+
3
+ from .client import AuthenticatedClient, Client
4
+
5
+ __all__ = (
6
+ "AuthenticatedClient",
7
+ "Client",
8
+ )
@@ -0,0 +1 @@
1
+ """Contains methods for accessing the API"""
@@ -0,0 +1 @@
1
+ """Contains endpoint functions for accessing the API"""