use-computer 0.0.34__tar.gz → 0.0.36__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.
Files changed (96) hide show
  1. {use_computer-0.0.34 → use_computer-0.0.36}/PKG-INFO +15 -2
  2. {use_computer-0.0.34 → use_computer-0.0.36}/README.md +14 -1
  3. {use_computer-0.0.34 → use_computer-0.0.36}/pyproject.toml +1 -1
  4. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/sandbox.py +16 -0
  5. {use_computer-0.0.34 → use_computer-0.0.36}/.env.example +0 -0
  6. {use_computer-0.0.34 → use_computer-0.0.36}/.gitignore +0 -0
  7. {use_computer-0.0.34 → use_computer-0.0.36}/.pre-commit-config.yaml +0 -0
  8. {use_computer-0.0.34 → use_computer-0.0.36}/scripts/smoke_wheel.py +0 -0
  9. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/__init__.py +0 -0
  10. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/accessibility.py +0 -0
  11. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/__init__.py +0 -0
  12. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/base/__init__.py +0 -0
  13. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/base/actions.py +0 -0
  14. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/base/agent.py +0 -0
  15. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/base/artifacts.py +0 -0
  16. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/base/desktop.py +0 -0
  17. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/base/final_state.py +0 -0
  18. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/base/prompts.py +0 -0
  19. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/base/recordings.py +0 -0
  20. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/base/sandbox.py +0 -0
  21. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/base/screenshots.py +0 -0
  22. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/base/trajectory.py +0 -0
  23. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/core.py +0 -0
  24. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/debug/README.md +0 -0
  25. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/debug/__init__.py +0 -0
  26. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/debug/actions.py +0 -0
  27. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/debug/agent.py +0 -0
  28. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/debug/models.py +0 -0
  29. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/ios/__init__.py +0 -0
  30. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/ios/agent.py +0 -0
  31. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/ios/tools.py +0 -0
  32. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/prompts/anthropic.txt +0 -0
  33. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/prompts/gemini.txt +0 -0
  34. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/prompts/ios.txt +0 -0
  35. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/prompts/openai.txt +0 -0
  36. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/prompts/pyautogui.txt +0 -0
  37. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/providers/__init__.py +0 -0
  38. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/providers/anthropic.py +0 -0
  39. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/providers/gemini.py +0 -0
  40. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/providers/generic.py +0 -0
  41. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/providers/openai.py +0 -0
  42. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/agents/types.py +0 -0
  43. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/ax_transpile.py +0 -0
  44. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/client.py +0 -0
  45. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/display.py +0 -0
  46. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/errors.py +0 -0
  47. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/__init__.py +0 -0
  48. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/agents.py +0 -0
  49. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/environment/__init__.py +0 -0
  50. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/environment/gateway.py +0 -0
  51. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/environment/platforms/__init__.py +0 -0
  52. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/environment/platforms/ios.py +0 -0
  53. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/environment/platforms/macos.py +0 -0
  54. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/environment/platforms/ubuntu.py +0 -0
  55. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/environment/platforms/windows.py +0 -0
  56. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/environment/setup_files.py +0 -0
  57. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/environment/use_computer.py +0 -0
  58. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/environment/utils/__init__.py +0 -0
  59. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/harbor/environment/utils/verifier.py +0 -0
  60. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/ios/__init__.py +0 -0
  61. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/ios/apps.py +0 -0
  62. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/ios/environment.py +0 -0
  63. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/ios/input.py +0 -0
  64. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/macos/__init__.py +0 -0
  65. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/macos/keyboard.py +0 -0
  66. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/macos/mouse.py +0 -0
  67. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/models.py +0 -0
  68. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/parsers.py +0 -0
  69. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/py.typed +0 -0
  70. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/recording.py +0 -0
  71. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/resources/__init__.py +0 -0
  72. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/resources/accessibility.py +0 -0
  73. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/resources/display.py +0 -0
  74. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/resources/recording.py +0 -0
  75. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/resources/screenshot.py +0 -0
  76. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/retry.py +0 -0
  77. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/screenshot.py +0 -0
  78. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/simulators.py +0 -0
  79. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/__init__.py +0 -0
  80. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/pre_command.ps1 +0 -0
  81. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/pre_command.sh +0 -0
  82. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/task.toml +0 -0
  83. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/test_ios.sh +0 -0
  84. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/test_ios_nograder.sh +0 -0
  85. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/test_macos.sh +0 -0
  86. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/test_macos_check.sh +0 -0
  87. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/test_macos_nograder.sh +0 -0
  88. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/test_ubuntu.sh +0 -0
  89. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/test_ubuntu_check.sh +0 -0
  90. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/test_ubuntu_nograder.sh +0 -0
  91. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/test_windows.sh +0 -0
  92. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/test_windows_check.sh +0 -0
  93. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/tasks/templates/test_windows_nograder.sh +0 -0
  94. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/windows/__init__.py +0 -0
  95. {use_computer-0.0.34 → use_computer-0.0.36}/use_computer/windows/shell.py +0 -0
  96. {use_computer-0.0.34 → use_computer-0.0.36}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: use-computer
3
- Version: 0.0.34
3
+ Version: 0.0.36
4
4
  Summary: Python SDK for use.computer sandboxes across macOS, iOS simulators, Windows, and Ubuntu
5
5
  Project-URL: Homepage, https://use.computer
6
6
  Project-URL: Documentation, https://api.use.computer/docs
@@ -56,6 +56,18 @@ from use_computer.agents import AnthropicComputerAgent
56
56
  from use_computer.harbor.environment import UseComputerEnvironment
57
57
  ```
58
58
 
59
+ In Harbor job YAML, use the SDK paths directly:
60
+
61
+ ```yaml
62
+ environment:
63
+ import_path: use_computer.harbor.environment:UseComputerEnvironment
64
+ kwargs:
65
+ platform: macos
66
+ agents:
67
+ - import_path: use_computer.harbor.agents:AnthropicCUAAgent
68
+ model_name: anthropic/claude-sonnet-4-6
69
+ ```
70
+
59
71
  ```python
60
72
  from use_computer import Computer, SandboxType, SimulatorFamily
61
73
 
@@ -70,6 +82,7 @@ with Computer().create(type=SandboxType.IOS, family=SimulatorFamily.TV) as tv:
70
82
 
71
83
  with Computer().create(type=SandboxType.IOS) as ios:
72
84
  ios.input.long_press(120, 300, duration=1.0)
85
+ print(ios.exec("simctl getenv $UDID HOME").stdout) # CoreSimulator exec, not SSH
73
86
  ```
74
87
 
75
88
  ### Windows (Beta)
@@ -181,7 +194,7 @@ visionOS yet. Use it for read-only flows for now.
181
194
  | [`examples/_9_seeding.py`](examples/_9_seeding.py) | typed setup: files, hosts, open URLs/apps |
182
195
  | [`examples/_10_snapshots.py`](examples/_10_snapshots.py) | snapshot seeded Ubuntu/Windows desktop state |
183
196
 
184
- For agent loops and evals: [use-computer-cookbook](https://github.com/josancamon19/use-computer-cookbook). Its Harbor job YAMLs use `use_computer.harbor.environment` and `use_computer.harbor.agents` as the canonical import paths.
197
+ For agent loops and evals: [use-computer-cookbook](https://github.com/josancamon19/use-computer-cookbook). Its Harbor job YAMLs use `use_computer.harbor.environment:UseComputerEnvironment` and `use_computer.harbor.agents:*` as the canonical import paths.
185
198
 
186
199
  ## Skill for AI coding assistants
187
200
 
@@ -24,6 +24,18 @@ from use_computer.agents import AnthropicComputerAgent
24
24
  from use_computer.harbor.environment import UseComputerEnvironment
25
25
  ```
26
26
 
27
+ In Harbor job YAML, use the SDK paths directly:
28
+
29
+ ```yaml
30
+ environment:
31
+ import_path: use_computer.harbor.environment:UseComputerEnvironment
32
+ kwargs:
33
+ platform: macos
34
+ agents:
35
+ - import_path: use_computer.harbor.agents:AnthropicCUAAgent
36
+ model_name: anthropic/claude-sonnet-4-6
37
+ ```
38
+
27
39
  ```python
28
40
  from use_computer import Computer, SandboxType, SimulatorFamily
29
41
 
@@ -38,6 +50,7 @@ with Computer().create(type=SandboxType.IOS, family=SimulatorFamily.TV) as tv:
38
50
 
39
51
  with Computer().create(type=SandboxType.IOS) as ios:
40
52
  ios.input.long_press(120, 300, duration=1.0)
53
+ print(ios.exec("simctl getenv $UDID HOME").stdout) # CoreSimulator exec, not SSH
41
54
  ```
42
55
 
43
56
  ### Windows (Beta)
@@ -149,7 +162,7 @@ visionOS yet. Use it for read-only flows for now.
149
162
  | [`examples/_9_seeding.py`](examples/_9_seeding.py) | typed setup: files, hosts, open URLs/apps |
150
163
  | [`examples/_10_snapshots.py`](examples/_10_snapshots.py) | snapshot seeded Ubuntu/Windows desktop state |
151
164
 
152
- For agent loops and evals: [use-computer-cookbook](https://github.com/josancamon19/use-computer-cookbook). Its Harbor job YAMLs use `use_computer.harbor.environment` and `use_computer.harbor.agents` as the canonical import paths.
165
+ For agent loops and evals: [use-computer-cookbook](https://github.com/josancamon19/use-computer-cookbook). Its Harbor job YAMLs use `use_computer.harbor.environment:UseComputerEnvironment` and `use_computer.harbor.agents:*` as the canonical import paths.
153
166
 
154
167
  ## Skill for AI coding assistants
155
168
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "use-computer"
7
- version = "0.0.34"
7
+ version = "0.0.36"
8
8
  description = "Python SDK for use.computer sandboxes across macOS, iOS simulators, Windows, and Ubuntu"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -292,6 +292,14 @@ class IOSSandbox(Sandbox):
292
292
  self.apps = Apps(http, self._prefix)
293
293
  self.environment = Environment(http, self._prefix)
294
294
 
295
+ def exec(self, command: str, timeout: int = 120) -> ExecResult:
296
+ """Run a non-interactive CoreSimulator command/script; this is not SSH."""
297
+ resp = self._http.post(
298
+ f"{self._prefix}/exec", json={"command": command, "timeout": timeout}, timeout=timeout
299
+ )
300
+ resp.raise_for_status()
301
+ return ExecResult.from_dict(resp.json())
302
+
295
303
 
296
304
  @dataclass
297
305
  class HostRedirect:
@@ -689,6 +697,14 @@ class AsyncIOSSandbox(AsyncSandbox):
689
697
  self.apps = AsyncApps(http, self._prefix)
690
698
  self.environment = AsyncEnvironment(http, self._prefix)
691
699
 
700
+ async def exec(self, command: str, timeout: int = 120) -> ExecResult:
701
+ """Run a non-interactive CoreSimulator command/script; this is not SSH."""
702
+ resp = await self._http.post(
703
+ f"{self._prefix}/exec", json={"command": command, "timeout": timeout}, timeout=timeout
704
+ )
705
+ resp.raise_for_status()
706
+ return ExecResult.from_dict(resp.json())
707
+
692
708
 
693
709
  class AsyncWindowsSandbox(_AsyncSeeding, _NoAxeAccessibility, AsyncSandbox):
694
710
  """Async Windows VM sandbox — see WindowsSandbox."""
File without changes
File without changes