use-computer 0.0.32__tar.gz → 0.0.34__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.32 → use_computer-0.0.34}/PKG-INFO +1 -1
  2. {use_computer-0.0.32 → use_computer-0.0.34}/pyproject.toml +1 -1
  3. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/base/agent.py +6 -2
  4. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/environment/platforms/windows.py +38 -0
  5. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/resources/recording.py +8 -2
  6. {use_computer-0.0.32 → use_computer-0.0.34}/.env.example +0 -0
  7. {use_computer-0.0.32 → use_computer-0.0.34}/.gitignore +0 -0
  8. {use_computer-0.0.32 → use_computer-0.0.34}/.pre-commit-config.yaml +0 -0
  9. {use_computer-0.0.32 → use_computer-0.0.34}/README.md +0 -0
  10. {use_computer-0.0.32 → use_computer-0.0.34}/scripts/smoke_wheel.py +0 -0
  11. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/__init__.py +0 -0
  12. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/accessibility.py +0 -0
  13. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/__init__.py +0 -0
  14. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/base/__init__.py +0 -0
  15. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/base/actions.py +0 -0
  16. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/base/artifacts.py +0 -0
  17. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/base/desktop.py +0 -0
  18. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/base/final_state.py +0 -0
  19. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/base/prompts.py +0 -0
  20. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/base/recordings.py +0 -0
  21. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/base/sandbox.py +0 -0
  22. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/base/screenshots.py +0 -0
  23. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/base/trajectory.py +0 -0
  24. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/core.py +0 -0
  25. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/debug/README.md +0 -0
  26. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/debug/__init__.py +0 -0
  27. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/debug/actions.py +0 -0
  28. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/debug/agent.py +0 -0
  29. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/debug/models.py +0 -0
  30. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/ios/__init__.py +0 -0
  31. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/ios/agent.py +0 -0
  32. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/ios/tools.py +0 -0
  33. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/prompts/anthropic.txt +0 -0
  34. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/prompts/gemini.txt +0 -0
  35. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/prompts/ios.txt +0 -0
  36. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/prompts/openai.txt +0 -0
  37. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/prompts/pyautogui.txt +0 -0
  38. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/providers/__init__.py +0 -0
  39. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/providers/anthropic.py +0 -0
  40. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/providers/gemini.py +0 -0
  41. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/providers/generic.py +0 -0
  42. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/providers/openai.py +0 -0
  43. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/agents/types.py +0 -0
  44. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/ax_transpile.py +0 -0
  45. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/client.py +0 -0
  46. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/display.py +0 -0
  47. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/errors.py +0 -0
  48. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/__init__.py +0 -0
  49. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/agents.py +0 -0
  50. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/environment/__init__.py +0 -0
  51. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/environment/gateway.py +0 -0
  52. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/environment/platforms/__init__.py +0 -0
  53. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/environment/platforms/ios.py +0 -0
  54. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/environment/platforms/macos.py +0 -0
  55. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/environment/platforms/ubuntu.py +0 -0
  56. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/environment/setup_files.py +0 -0
  57. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/environment/use_computer.py +0 -0
  58. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/environment/utils/__init__.py +0 -0
  59. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/harbor/environment/utils/verifier.py +0 -0
  60. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/ios/__init__.py +0 -0
  61. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/ios/apps.py +0 -0
  62. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/ios/environment.py +0 -0
  63. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/ios/input.py +0 -0
  64. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/macos/__init__.py +0 -0
  65. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/macos/keyboard.py +0 -0
  66. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/macos/mouse.py +0 -0
  67. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/models.py +0 -0
  68. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/parsers.py +0 -0
  69. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/py.typed +0 -0
  70. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/recording.py +0 -0
  71. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/resources/__init__.py +0 -0
  72. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/resources/accessibility.py +0 -0
  73. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/resources/display.py +0 -0
  74. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/resources/screenshot.py +0 -0
  75. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/retry.py +0 -0
  76. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/sandbox.py +0 -0
  77. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/screenshot.py +0 -0
  78. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/simulators.py +0 -0
  79. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/__init__.py +0 -0
  80. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/pre_command.ps1 +0 -0
  81. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/pre_command.sh +0 -0
  82. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/task.toml +0 -0
  83. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/test_ios.sh +0 -0
  84. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/test_ios_nograder.sh +0 -0
  85. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/test_macos.sh +0 -0
  86. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/test_macos_check.sh +0 -0
  87. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/test_macos_nograder.sh +0 -0
  88. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/test_ubuntu.sh +0 -0
  89. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/test_ubuntu_check.sh +0 -0
  90. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/test_ubuntu_nograder.sh +0 -0
  91. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/test_windows.sh +0 -0
  92. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/test_windows_check.sh +0 -0
  93. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/tasks/templates/test_windows_nograder.sh +0 -0
  94. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/windows/__init__.py +0 -0
  95. {use_computer-0.0.32 → use_computer-0.0.34}/use_computer/windows/shell.py +0 -0
  96. {use_computer-0.0.32 → use_computer-0.0.34}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: use-computer
3
- Version: 0.0.32
3
+ Version: 0.0.34
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "use-computer"
7
- version = "0.0.32"
7
+ version = "0.0.34"
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"
@@ -211,9 +211,13 @@ class BaseCUAAgent(RecordingMixin, FinalStateMixin, ArtifactCaptureMixin):
211
211
  fire_in_process=None,
212
212
  ) -> AgentRunResult:
213
213
  """Run against an AsyncSandbox without Harbor."""
214
+ resolved_logs_dir = Path(logs_dir).resolve() if logs_dir else self.logs_dir
215
+ resolved_task_dir = (
216
+ Path(task_dir).resolve() if task_dir else self.task_dir or resolved_logs_dir / "task"
217
+ )
214
218
  options = AgentRunOptions(
215
- logs_dir=Path(logs_dir).resolve() if logs_dir else self.logs_dir,
216
- task_dir=Path(task_dir).resolve() if task_dir else self.task_dir,
219
+ logs_dir=resolved_logs_dir,
220
+ task_dir=resolved_task_dir,
217
221
  platform=str(platform),
218
222
  max_steps=max_steps,
219
223
  fire_in_process=fire_in_process,
@@ -50,6 +50,31 @@ $profileFile = Join-Path $profileDir 'registrymodifications.xcu'
50
50
  '@ | Set-Content -Path $profileFile -Encoding UTF8
51
51
  """
52
52
 
53
+ _BENCHMARK_USER_ALIAS_COMMAND = r"""
54
+ $profile = [Environment]::GetFolderPath('UserProfile')
55
+ foreach ($name in @('Docker', 'User')) {
56
+ $alias = Join-Path 'C:\Users' $name
57
+ if ($alias -ieq $profile) {
58
+ continue
59
+ }
60
+
61
+ if (Test-Path -LiteralPath $alias) {
62
+ $item = Get-Item -LiteralPath $alias -Force
63
+ $targets = @($item.Target)
64
+ if ($item.LinkType -eq 'Junction' -and $targets -contains $profile) {
65
+ continue
66
+ }
67
+ $backup = "$alias.harbor-backup"
68
+ if (Test-Path -LiteralPath $backup) {
69
+ Remove-Item -LiteralPath $backup -Recurse -Force
70
+ }
71
+ Move-Item -LiteralPath $alias -Destination $backup -Force
72
+ }
73
+
74
+ New-Item -ItemType Junction -Path $alias -Target $profile -Force | Out-Null
75
+ }
76
+ """
77
+
53
78
 
54
79
  async def exec_on_vm(
55
80
  env: Any,
@@ -135,6 +160,7 @@ async def exec_local(
135
160
  async def run_windows_setup(env: Any) -> None:
136
161
  setup_dir = env._task_dir / "tests" / "setup"
137
162
 
163
+ await _ensure_benchmark_user_aliases(env)
138
164
  await _configure_libreoffice_defaults(env)
139
165
 
140
166
  for setup_file in read_setup_files(setup_dir):
@@ -193,6 +219,18 @@ async def _configure_libreoffice_defaults(env: Any) -> None:
193
219
  )
194
220
 
195
221
 
222
+ async def _ensure_benchmark_user_aliases(env: Any) -> None:
223
+ await _with_agent_retry(
224
+ env,
225
+ "benchmark user aliases",
226
+ lambda: env.windows_sandbox.shell.run(
227
+ _BENCHMARK_USER_ALIAS_COMMAND,
228
+ shell="powershell",
229
+ timeout=30,
230
+ ),
231
+ )
232
+
233
+
196
234
  async def _with_agent_retry(env: Any, label: str, op):
197
235
  attempts = 4
198
236
  for attempt in range(1, attempts + 1):
@@ -19,7 +19,10 @@ class Recording:
19
19
  return RecordingInfo.from_dict(resp.json())
20
20
 
21
21
  def stop(self, recording_id: str) -> RecordingInfo:
22
- resp = self._http.post(f"{self._prefix}/recording/stop", json={"id": recording_id})
22
+ resp = self._http.post(
23
+ f"{self._prefix}/recording/stop",
24
+ json={"id": recording_id, "recording_id": recording_id},
25
+ )
23
26
  resp.raise_for_status()
24
27
  return RecordingInfo.from_dict(resp.json())
25
28
 
@@ -62,7 +65,10 @@ class AsyncRecording:
62
65
  return RecordingInfo.from_dict(resp.json())
63
66
 
64
67
  async def stop(self, recording_id: str) -> RecordingInfo:
65
- resp = await self._http.post(f"{self._prefix}/recording/stop", json={"id": recording_id})
68
+ resp = await self._http.post(
69
+ f"{self._prefix}/recording/stop",
70
+ json={"id": recording_id, "recording_id": recording_id},
71
+ )
66
72
  resp.raise_for_status()
67
73
  return RecordingInfo.from_dict(resp.json())
68
74
 
File without changes
File without changes
File without changes