orgo 0.0.21__tar.gz → 0.0.23__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orgo
3
- Version: 0.0.21
3
+ Version: 0.0.23
4
4
  Summary: Computers for AI agents
5
5
  Author: Orgo Team
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "orgo"
7
- version = "0.0.21"
7
+ version = "0.0.23"
8
8
  description = "Computers for AI agents"
9
9
  authors = [{name = "Orgo Team"}]
10
10
  license = {text = "MIT"}
@@ -101,6 +101,19 @@ class ApiClient:
101
101
  "button": "left", "x": x, "y": y, "double": True
102
102
  })
103
103
 
104
+ def drag(self, project_id: str, start_x: int, start_y: int,
105
+ end_x: int, end_y: int, button: str = "left",
106
+ duration: float = 0.5) -> Dict[str, Any]:
107
+ """Perform a drag operation from start to end coordinates"""
108
+ return self._request("POST", f"computers/{project_id}/drag", {
109
+ "start_x": start_x,
110
+ "start_y": start_y,
111
+ "end_x": end_x,
112
+ "end_y": end_y,
113
+ "button": button,
114
+ "duration": duration
115
+ })
116
+
104
117
  def scroll(self, project_id: str, direction: str, amount: int) -> Dict[str, Any]:
105
118
  return self._request("POST", f"computers/{project_id}/scroll", {
106
119
  "direction": direction, "amount": amount
@@ -21,6 +21,7 @@ class Computer:
21
21
  config: Optional[Dict[str, Any]] = None,
22
22
  base_api_url: Optional[str] = None,
23
23
  ram: Optional[Literal[2, 4]] = None,
24
+ memory: Optional[Literal[2, 4]] = None,
24
25
  cpu: Optional[Literal[2, 4]] = None):
25
26
  """
26
27
  Initialize an Orgo virtual computer.
@@ -31,12 +32,19 @@ class Computer:
31
32
  config: Configuration for new computer (optional)
32
33
  base_api_url: Custom API URL (optional)
33
34
  ram: RAM in GB for new computer (2 or 4) - only used when creating
35
+ memory: Alternative parameter for RAM in GB (2 or 4) - only used when creating
34
36
  cpu: CPU cores for new computer (2 or 4) - only used when creating
37
+
38
+ Note: If both ram and memory are provided, ram takes precedence.
35
39
  """
36
40
  self.api_key = api_key or os.environ.get("ORGO_API_KEY")
37
41
  self.base_api_url = base_api_url
38
42
  self.api = ApiClient(self.api_key, self.base_api_url)
39
43
 
44
+ # Handle memory parameter as an alias for ram
45
+ if ram is None and memory is not None:
46
+ ram = memory
47
+
40
48
  # Look for a saved project ID if none was provided
41
49
  if project_id is None:
42
50
  project_id = ProjectManager.load_project_id()
@@ -45,9 +53,9 @@ class Computer:
45
53
  try:
46
54
  self.project_id = project_id
47
55
  self._info = self.api.connect_computer(project_id)
48
- # Log if ram/cpu were provided but ignored
49
- if ram is not None or cpu is not None:
50
- logger.info("Note: ram and cpu parameters are ignored when connecting to existing computer")
56
+ # Log if ram/memory/cpu were provided but ignored
57
+ if ram is not None or memory is not None or cpu is not None:
58
+ logger.info("Note: ram, memory, and cpu parameters are ignored when connecting to existing computer")
51
59
  except (RequestException, ValueError) as e:
52
60
  logger.warning(f"Could not connect to saved project {project_id}: {e}")
53
61
  self._create_new_computer(config, ram, cpu)
@@ -60,7 +68,7 @@ class Computer:
60
68
  """Create a new computer instance and save its ID"""
61
69
  # Validate ram and cpu values if provided
62
70
  if ram is not None and ram not in [2, 4]:
63
- raise ValueError("ram must be either 2 or 4 GB")
71
+ raise ValueError("ram/memory must be either 2 or 4 GB")
64
72
  if cpu is not None and cpu not in [2, 4]:
65
73
  raise ValueError("cpu must be either 2 or 4 cores")
66
74
 
@@ -124,6 +132,24 @@ class Computer:
124
132
  """Perform double click at specified coordinates"""
125
133
  return self.api.double_click(self.project_id, x, y)
126
134
 
135
+ def drag(self, start_x: int, start_y: int, end_x: int, end_y: int,
136
+ button: str = "left", duration: float = 0.5) -> Dict[str, Any]:
137
+ """
138
+ Perform a smooth drag operation from start to end coordinates.
139
+
140
+ Args:
141
+ start_x: Starting X coordinate
142
+ start_y: Starting Y coordinate
143
+ end_x: Ending X coordinate
144
+ end_y: Ending Y coordinate
145
+ button: Mouse button to use ("left" or "right", default: "left")
146
+ duration: Duration of the drag in seconds (0.1 to 5.0, default: 0.5)
147
+
148
+ Returns:
149
+ Dict with operation result
150
+ """
151
+ return self.api.drag(self.project_id, start_x, start_y, end_x, end_y, button, duration)
152
+
127
153
  def scroll(self, direction: str = "down", amount: int = 1) -> Dict[str, Any]:
128
154
  """Scroll in specified direction and amount"""
129
155
  return self.api.scroll(self.project_id, direction, amount)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orgo
3
- Version: 0.0.21
3
+ Version: 0.0.23
4
4
  Summary: Computers for AI agents
5
5
  Author: Orgo Team
6
6
  License: MIT
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes