use-computer 0.0.35__tar.gz → 0.0.37__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.35 → use_computer-0.0.37}/PKG-INFO +4 -1
  2. {use_computer-0.0.35 → use_computer-0.0.37}/README.md +3 -0
  3. {use_computer-0.0.35 → use_computer-0.0.37}/pyproject.toml +1 -1
  4. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/sandbox.py +16 -0
  5. {use_computer-0.0.35 → use_computer-0.0.37}/.env.example +0 -0
  6. {use_computer-0.0.35 → use_computer-0.0.37}/.gitignore +0 -0
  7. {use_computer-0.0.35 → use_computer-0.0.37}/.pre-commit-config.yaml +0 -0
  8. {use_computer-0.0.35 → use_computer-0.0.37}/scripts/smoke_wheel.py +0 -0
  9. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/__init__.py +0 -0
  10. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/accessibility.py +0 -0
  11. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/__init__.py +0 -0
  12. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/base/__init__.py +0 -0
  13. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/base/actions.py +0 -0
  14. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/base/agent.py +0 -0
  15. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/base/artifacts.py +0 -0
  16. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/base/desktop.py +0 -0
  17. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/base/final_state.py +0 -0
  18. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/base/prompts.py +0 -0
  19. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/base/recordings.py +0 -0
  20. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/base/sandbox.py +0 -0
  21. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/base/screenshots.py +0 -0
  22. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/base/trajectory.py +0 -0
  23. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/core.py +0 -0
  24. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/debug/README.md +0 -0
  25. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/debug/__init__.py +0 -0
  26. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/debug/actions.py +0 -0
  27. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/debug/agent.py +0 -0
  28. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/debug/models.py +0 -0
  29. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/ios/__init__.py +0 -0
  30. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/ios/agent.py +0 -0
  31. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/ios/tools.py +0 -0
  32. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/prompts/anthropic.txt +0 -0
  33. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/prompts/gemini.txt +0 -0
  34. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/prompts/ios.txt +0 -0
  35. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/prompts/openai.txt +0 -0
  36. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/prompts/pyautogui.txt +0 -0
  37. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/providers/__init__.py +0 -0
  38. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/providers/anthropic.py +0 -0
  39. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/providers/gemini.py +0 -0
  40. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/providers/generic.py +0 -0
  41. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/providers/openai.py +0 -0
  42. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/agents/types.py +0 -0
  43. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/ax_transpile.py +0 -0
  44. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/client.py +0 -0
  45. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/display.py +0 -0
  46. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/errors.py +0 -0
  47. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/__init__.py +0 -0
  48. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/agents.py +0 -0
  49. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/environment/__init__.py +0 -0
  50. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/environment/gateway.py +0 -0
  51. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/environment/platforms/__init__.py +0 -0
  52. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/environment/platforms/ios.py +0 -0
  53. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/environment/platforms/macos.py +0 -0
  54. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/environment/platforms/ubuntu.py +0 -0
  55. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/environment/platforms/windows.py +0 -0
  56. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/environment/setup_files.py +0 -0
  57. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/environment/use_computer.py +0 -0
  58. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/environment/utils/__init__.py +0 -0
  59. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/harbor/environment/utils/verifier.py +0 -0
  60. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/ios/__init__.py +0 -0
  61. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/ios/apps.py +0 -0
  62. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/ios/environment.py +0 -0
  63. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/ios/input.py +0 -0
  64. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/macos/__init__.py +0 -0
  65. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/macos/keyboard.py +0 -0
  66. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/macos/mouse.py +0 -0
  67. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/models.py +0 -0
  68. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/parsers.py +0 -0
  69. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/py.typed +0 -0
  70. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/recording.py +0 -0
  71. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/resources/__init__.py +0 -0
  72. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/resources/accessibility.py +0 -0
  73. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/resources/display.py +0 -0
  74. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/resources/recording.py +0 -0
  75. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/resources/screenshot.py +0 -0
  76. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/retry.py +0 -0
  77. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/screenshot.py +0 -0
  78. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/simulators.py +0 -0
  79. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/__init__.py +0 -0
  80. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/pre_command.ps1 +0 -0
  81. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/pre_command.sh +0 -0
  82. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/task.toml +0 -0
  83. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/test_ios.sh +0 -0
  84. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/test_ios_nograder.sh +0 -0
  85. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/test_macos.sh +0 -0
  86. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/test_macos_check.sh +0 -0
  87. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/test_macos_nograder.sh +0 -0
  88. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/test_ubuntu.sh +0 -0
  89. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/test_ubuntu_check.sh +0 -0
  90. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/test_ubuntu_nograder.sh +0 -0
  91. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/test_windows.sh +0 -0
  92. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/test_windows_check.sh +0 -0
  93. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/tasks/templates/test_windows_nograder.sh +0 -0
  94. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/windows/__init__.py +0 -0
  95. {use_computer-0.0.35 → use_computer-0.0.37}/use_computer/windows/shell.py +0 -0
  96. {use_computer-0.0.35 → use_computer-0.0.37}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: use-computer
3
- Version: 0.0.35
3
+ Version: 0.0.37
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
@@ -82,6 +82,7 @@ with Computer().create(type=SandboxType.IOS, family=SimulatorFamily.TV) as tv:
82
82
 
83
83
  with Computer().create(type=SandboxType.IOS) as ios:
84
84
  ios.input.long_press(120, 300, duration=1.0)
85
+ print(ios.exec("simctl getenv $UDID HOME").stdout) # CoreSimulator exec, not SSH
85
86
  ```
86
87
 
87
88
  ### Windows (Beta)
@@ -167,6 +168,8 @@ unless you need to pin raw CoreSimulator identifiers. Raw strings like
167
168
  iPhone 17 Pro on the latest installed iOS runtime.
168
169
  Known-incompatible simulator types are filtered from family selection,
169
170
  including the non-4K Apple Vision Pro type on current fleet runtimes.
171
+ For iOS app installs, upload the `.app` / `.ipa` first and pass the same path
172
+ to `sandbox.apps.install(path)`; files are staged on the simulator host.
170
173
 
171
174
  ### Per-family input
172
175
 
@@ -50,6 +50,7 @@ with Computer().create(type=SandboxType.IOS, family=SimulatorFamily.TV) as tv:
50
50
 
51
51
  with Computer().create(type=SandboxType.IOS) as ios:
52
52
  ios.input.long_press(120, 300, duration=1.0)
53
+ print(ios.exec("simctl getenv $UDID HOME").stdout) # CoreSimulator exec, not SSH
53
54
  ```
54
55
 
55
56
  ### Windows (Beta)
@@ -135,6 +136,8 @@ unless you need to pin raw CoreSimulator identifiers. Raw strings like
135
136
  iPhone 17 Pro on the latest installed iOS runtime.
136
137
  Known-incompatible simulator types are filtered from family selection,
137
138
  including the non-4K Apple Vision Pro type on current fleet runtimes.
139
+ For iOS app installs, upload the `.app` / `.ipa` first and pass the same path
140
+ to `sandbox.apps.install(path)`; files are staged on the simulator host.
138
141
 
139
142
  ### Per-family input
140
143
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "use-computer"
7
- version = "0.0.35"
7
+ version = "0.0.37"
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