use-computer 0.0.28__tar.gz → 0.0.30__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.28 → use_computer-0.0.30}/PKG-INFO +15 -4
  2. {use_computer-0.0.28 → use_computer-0.0.30}/README.md +12 -2
  3. {use_computer-0.0.28 → use_computer-0.0.30}/pyproject.toml +3 -2
  4. use_computer-0.0.30/scripts/smoke_wheel.py +132 -0
  5. {use_computer-0.0.28 → use_computer-0.0.30}/uv.lock +2 -0
  6. {use_computer-0.0.28 → use_computer-0.0.30}/.env.example +0 -0
  7. {use_computer-0.0.28 → use_computer-0.0.30}/.gitignore +0 -0
  8. {use_computer-0.0.28 → use_computer-0.0.30}/.pre-commit-config.yaml +0 -0
  9. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/__init__.py +0 -0
  10. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/accessibility.py +0 -0
  11. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/__init__.py +0 -0
  12. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/base/__init__.py +0 -0
  13. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/base/actions.py +0 -0
  14. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/base/agent.py +0 -0
  15. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/base/artifacts.py +0 -0
  16. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/base/desktop.py +0 -0
  17. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/base/final_state.py +0 -0
  18. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/base/prompts.py +0 -0
  19. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/base/recordings.py +0 -0
  20. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/base/sandbox.py +0 -0
  21. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/base/screenshots.py +0 -0
  22. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/base/trajectory.py +0 -0
  23. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/core.py +0 -0
  24. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/debug/README.md +0 -0
  25. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/debug/__init__.py +0 -0
  26. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/debug/actions.py +0 -0
  27. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/debug/agent.py +0 -0
  28. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/debug/models.py +0 -0
  29. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/ios/__init__.py +0 -0
  30. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/ios/agent.py +0 -0
  31. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/ios/tools.py +0 -0
  32. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/prompts/anthropic.txt +0 -0
  33. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/prompts/gemini.txt +0 -0
  34. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/prompts/ios.txt +0 -0
  35. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/prompts/openai.txt +0 -0
  36. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/prompts/pyautogui.txt +0 -0
  37. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/providers/__init__.py +0 -0
  38. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/providers/anthropic.py +0 -0
  39. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/providers/gemini.py +0 -0
  40. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/providers/generic.py +0 -0
  41. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/providers/openai.py +0 -0
  42. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/agents/types.py +0 -0
  43. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/ax_transpile.py +0 -0
  44. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/client.py +0 -0
  45. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/display.py +0 -0
  46. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/errors.py +0 -0
  47. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/__init__.py +0 -0
  48. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/agents.py +0 -0
  49. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/environment/__init__.py +0 -0
  50. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/environment/gateway.py +0 -0
  51. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/environment/platforms/__init__.py +0 -0
  52. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/environment/platforms/ios.py +0 -0
  53. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/environment/platforms/macos.py +0 -0
  54. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/environment/platforms/ubuntu.py +0 -0
  55. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/environment/platforms/windows.py +0 -0
  56. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/environment/setup_files.py +0 -0
  57. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/environment/use_computer.py +0 -0
  58. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/environment/utils/__init__.py +0 -0
  59. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/harbor/environment/utils/verifier.py +0 -0
  60. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/ios/__init__.py +0 -0
  61. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/ios/apps.py +0 -0
  62. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/ios/environment.py +0 -0
  63. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/ios/input.py +0 -0
  64. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/macos/__init__.py +0 -0
  65. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/macos/keyboard.py +0 -0
  66. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/macos/mouse.py +0 -0
  67. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/models.py +0 -0
  68. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/parsers.py +0 -0
  69. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/py.typed +0 -0
  70. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/recording.py +0 -0
  71. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/resources/__init__.py +0 -0
  72. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/resources/accessibility.py +0 -0
  73. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/resources/display.py +0 -0
  74. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/resources/recording.py +0 -0
  75. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/resources/screenshot.py +0 -0
  76. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/retry.py +0 -0
  77. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/sandbox.py +0 -0
  78. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/screenshot.py +0 -0
  79. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/simulators.py +0 -0
  80. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/__init__.py +0 -0
  81. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/pre_command.ps1 +0 -0
  82. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/pre_command.sh +0 -0
  83. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/task.toml +0 -0
  84. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/test_ios.sh +0 -0
  85. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/test_ios_nograder.sh +0 -0
  86. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/test_macos.sh +0 -0
  87. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/test_macos_check.sh +0 -0
  88. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/test_macos_nograder.sh +0 -0
  89. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/test_ubuntu.sh +0 -0
  90. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/test_ubuntu_check.sh +0 -0
  91. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/test_ubuntu_nograder.sh +0 -0
  92. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/test_windows.sh +0 -0
  93. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/test_windows_check.sh +0 -0
  94. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/tasks/templates/test_windows_nograder.sh +0 -0
  95. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/windows/__init__.py +0 -0
  96. {use_computer-0.0.28 → use_computer-0.0.30}/use_computer/windows/shell.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: use-computer
3
- Version: 0.0.28
3
+ Version: 0.0.30
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
7
- Project-URL: Repository, https://github.com/josancamon19/use-computer-python
7
+ Project-URL: Repository, https://github.com/josancamon19/use-computer-sdk
8
8
  Author: use.computer
9
9
  Keywords: automation,computer-use,ios,macos,sandbox,ubuntu,vnc,windows
10
10
  Classifier: Development Status :: 3 - Alpha
@@ -39,6 +39,7 @@ Provides-Extra: agents-openai
39
39
  Requires-Dist: openai>=1; extra == 'agents-openai'
40
40
  Requires-Dist: pillow>=10; extra == 'agents-openai'
41
41
  Provides-Extra: harbor
42
+ Requires-Dist: harbor>=0.4.0; (python_version >= '3.12') and extra == 'harbor'
42
43
  Requires-Dist: pyyaml>=6; extra == 'harbor'
43
44
  Requires-Dist: tomli>=2; extra == 'harbor'
44
45
  Description-Content-Type: text/markdown
@@ -55,11 +56,21 @@ export USE_COMPUTER_API_KEY=mk_live_...
55
56
  Optional agent and Harbor integrations are installed explicitly:
56
57
 
57
58
  ```bash
59
+ pip install "use-computer[agents]" # shared agent helpers + debug agent
58
60
  pip install "use-computer[agents-openai]" # or agents-anthropic / agents-gemini / agents-litellm / agents-all
59
- pip install "use-computer[harbor]" # SDK Harbor adapter deps only; install Harbor separately until it is published
61
+ pip install "use-computer[harbor]" # Harbor environment adapter (Python 3.12+)
60
62
  pip install "use-computer[harbor,agents-all]" # Harbor adapter plus all provider deps
61
63
  ```
62
64
 
65
+ Base installs only the SDK client and `httpx`. The `agents-*` extras install
66
+ model-provider dependencies; `harbor` installs Harbor plus the environment
67
+ adapter dependencies, but no provider SDKs.
68
+
69
+ ```python
70
+ from use_computer.agents import AnthropicComputerAgent
71
+ from use_computer.harbor.environment import UseComputerEnvironment
72
+ ```
73
+
63
74
  ```python
64
75
  from use_computer import Computer, SandboxType, SimulatorFamily
65
76
 
@@ -185,7 +196,7 @@ visionOS yet. Use it for read-only flows for now.
185
196
  | [`examples/_9_seeding.py`](examples/_9_seeding.py) | typed setup: files, hosts, open URLs/apps |
186
197
  | [`examples/_10_snapshots.py`](examples/_10_snapshots.py) | snapshot seeded Ubuntu/Windows desktop state |
187
198
 
188
- For agent loops and evals: [use-computer-cookbook](https://github.com/josancamon19/use-computer-cookbook).
199
+ 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.
189
200
 
190
201
  ## Skill for AI coding assistants
191
202
 
@@ -10,11 +10,21 @@ export USE_COMPUTER_API_KEY=mk_live_...
10
10
  Optional agent and Harbor integrations are installed explicitly:
11
11
 
12
12
  ```bash
13
+ pip install "use-computer[agents]" # shared agent helpers + debug agent
13
14
  pip install "use-computer[agents-openai]" # or agents-anthropic / agents-gemini / agents-litellm / agents-all
14
- pip install "use-computer[harbor]" # SDK Harbor adapter deps only; install Harbor separately until it is published
15
+ pip install "use-computer[harbor]" # Harbor environment adapter (Python 3.12+)
15
16
  pip install "use-computer[harbor,agents-all]" # Harbor adapter plus all provider deps
16
17
  ```
17
18
 
19
+ Base installs only the SDK client and `httpx`. The `agents-*` extras install
20
+ model-provider dependencies; `harbor` installs Harbor plus the environment
21
+ adapter dependencies, but no provider SDKs.
22
+
23
+ ```python
24
+ from use_computer.agents import AnthropicComputerAgent
25
+ from use_computer.harbor.environment import UseComputerEnvironment
26
+ ```
27
+
18
28
  ```python
19
29
  from use_computer import Computer, SandboxType, SimulatorFamily
20
30
 
@@ -140,7 +150,7 @@ visionOS yet. Use it for read-only flows for now.
140
150
  | [`examples/_9_seeding.py`](examples/_9_seeding.py) | typed setup: files, hosts, open URLs/apps |
141
151
  | [`examples/_10_snapshots.py`](examples/_10_snapshots.py) | snapshot seeded Ubuntu/Windows desktop state |
142
152
 
143
- For agent loops and evals: [use-computer-cookbook](https://github.com/josancamon19/use-computer-cookbook).
153
+ 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.
144
154
 
145
155
  ## Skill for AI coding assistants
146
156
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "use-computer"
7
- version = "0.0.28"
7
+ version = "0.0.30"
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"
@@ -37,6 +37,7 @@ agents-all = [
37
37
  "google-genai>=1",
38
38
  ]
39
39
  harbor = [
40
+ "harbor>=0.4.0; python_version >= '3.12'",
40
41
  "PyYAML>=6",
41
42
  "tomli>=2",
42
43
  ]
@@ -61,7 +62,7 @@ dev = [
61
62
  [project.urls]
62
63
  Homepage = "https://use.computer"
63
64
  Documentation = "https://api.use.computer/docs"
64
- Repository = "https://github.com/josancamon19/use-computer-python"
65
+ Repository = "https://github.com/josancamon19/use-computer-sdk"
65
66
 
66
67
  [tool.hatch.build.targets.wheel]
67
68
  packages = ["use_computer"]
@@ -0,0 +1,132 @@
1
+ """Smoke-test the built wheel in clean environments."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import argparse
6
+ import subprocess
7
+ import sys
8
+ import tempfile
9
+ import zipfile
10
+ from pathlib import Path
11
+
12
+ BASE_SMOKE = r"""
13
+ import importlib.util
14
+ import use_computer
15
+
16
+ def has(name):
17
+ try:
18
+ return importlib.util.find_spec(name) is not None
19
+ except ModuleNotFoundError:
20
+ return False
21
+
22
+ assert "site-packages" in (use_computer.__file__ or ""), use_computer.__file__
23
+ for name in ["PIL", "openai", "anthropic", "google.genai", "litellm", "harbor", "yaml", "tomli"]:
24
+ assert not has(name), name
25
+ """
26
+
27
+ AGENTS_SMOKE = r"""
28
+ import importlib
29
+ import importlib.util
30
+
31
+ assert importlib.util.find_spec("PIL") is not None
32
+ for path in ["use_computer.agents", "use_computer.agents.debug"]:
33
+ importlib.import_module(path)
34
+ """
35
+
36
+ HARBOR_SMOKE = r"""
37
+ import importlib
38
+ import importlib.util
39
+
40
+ for name in ["harbor", "yaml", "tomli"]:
41
+ assert importlib.util.find_spec(name) is not None, name
42
+ for path in ["use_computer.harbor.environment", "use_computer.harbor.agents"]:
43
+ importlib.import_module(path)
44
+ """
45
+
46
+
47
+ def main() -> None:
48
+ parser = argparse.ArgumentParser()
49
+ parser.add_argument("wheel", type=Path)
50
+ args = parser.parse_args()
51
+
52
+ wheel = args.wheel.resolve()
53
+ if not wheel.name.endswith(".whl"):
54
+ raise SystemExit(f"expected a wheel path, got {wheel}")
55
+
56
+ _check_wheel_contents(wheel)
57
+ _check_metadata(wheel)
58
+ _smoke_install(wheel, None, BASE_SMOKE)
59
+ _smoke_install(wheel, "agents", AGENTS_SMOKE)
60
+ _smoke_install(wheel, "harbor", HARBOR_SMOKE)
61
+
62
+
63
+ def _check_wheel_contents(wheel: Path) -> None:
64
+ with zipfile.ZipFile(wheel) as archive:
65
+ names = set(archive.namelist())
66
+
67
+ required = {
68
+ "use_computer/py.typed",
69
+ "use_computer/agents/prompts/anthropic.txt",
70
+ "use_computer/agents/prompts/gemini.txt",
71
+ "use_computer/agents/prompts/ios.txt",
72
+ "use_computer/agents/prompts/openai.txt",
73
+ "use_computer/agents/prompts/pyautogui.txt",
74
+ "use_computer/harbor/environment/use_computer.py",
75
+ "use_computer/harbor/agents.py",
76
+ }
77
+ missing = sorted(required - names)
78
+ if missing:
79
+ raise SystemExit(f"wheel is missing files: {missing}")
80
+
81
+ forbidden = [name for name in names if "__pycache__" in name or name.startswith("tests/")]
82
+ if forbidden:
83
+ raise SystemExit(f"wheel contains generated/test files: {sorted(forbidden)[:10]}")
84
+
85
+
86
+ def _check_metadata(wheel: Path) -> None:
87
+ with zipfile.ZipFile(wheel) as archive:
88
+ metadata_name = next(
89
+ name for name in archive.namelist() if name.endswith(".dist-info/METADATA")
90
+ )
91
+ metadata = archive.read(metadata_name).decode()
92
+
93
+ required = [
94
+ "Provides-Extra: agents",
95
+ "Provides-Extra: agents-openai",
96
+ "Provides-Extra: agents-anthropic",
97
+ "Provides-Extra: agents-litellm",
98
+ "Provides-Extra: agents-gemini",
99
+ "Provides-Extra: agents-all",
100
+ "Provides-Extra: harbor",
101
+ "Requires-Dist: pillow>=10; extra == 'agents'",
102
+ ]
103
+ missing = [line for line in required if line not in metadata]
104
+ if missing:
105
+ raise SystemExit(f"wheel metadata is missing: {missing}")
106
+
107
+ harbor_lines = [
108
+ line for line in metadata.splitlines() if line.startswith("Requires-Dist: harbor>=0.4.0;")
109
+ ]
110
+ if not any(
111
+ "python_version >= '3.12'" in line and "extra == 'harbor'" in line for line in harbor_lines
112
+ ):
113
+ raise SystemExit("wheel metadata is missing the Python 3.12+ Harbor extra")
114
+
115
+
116
+ def _smoke_install(wheel: Path, extra: str | None, code: str) -> None:
117
+ with tempfile.TemporaryDirectory(prefix="use-computer-wheel-") as tmp:
118
+ tmp_path = Path(tmp)
119
+ venv = tmp_path / "venv"
120
+ _run(["uv", "venv", "--python", sys.executable, str(venv)], cwd=tmp_path)
121
+ python = venv / ("Scripts/python.exe" if sys.platform == "win32" else "bin/python")
122
+ requirement = f"{wheel}[{extra}]" if extra else str(wheel)
123
+ _run(["uv", "pip", "install", "--python", str(python), requirement], cwd=tmp_path)
124
+ _run([str(python), "-c", code], cwd=tmp_path)
125
+
126
+
127
+ def _run(cmd: list[str], *, cwd: Path) -> None:
128
+ subprocess.run(cmd, cwd=cwd, check=True)
129
+
130
+
131
+ if __name__ == "__main__":
132
+ main()
@@ -4795,6 +4795,7 @@ agents-openai = [
4795
4795
  { name = "pillow" },
4796
4796
  ]
4797
4797
  harbor = [
4798
+ { name = "harbor", marker = "python_full_version >= '3.12'" },
4798
4799
  { name = "pyyaml" },
4799
4800
  { name = "tomli" },
4800
4801
  ]
@@ -4822,6 +4823,7 @@ requires-dist = [
4822
4823
  { name = "anthropic", marker = "extra == 'agents-anthropic'", specifier = ">=0.86" },
4823
4824
  { name = "google-genai", marker = "extra == 'agents-all'", specifier = ">=1" },
4824
4825
  { name = "google-genai", marker = "extra == 'agents-gemini'", specifier = ">=1" },
4826
+ { name = "harbor", marker = "python_full_version >= '3.12' and extra == 'harbor'", specifier = ">=0.4.0" },
4825
4827
  { name = "httpx", specifier = ">=0.27" },
4826
4828
  { name = "litellm", marker = "extra == 'agents-all'", specifier = ">=1" },
4827
4829
  { name = "litellm", marker = "extra == 'agents-litellm'", specifier = ">=1" },
File without changes