use-computer 0.0.28__tar.gz → 0.0.29__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.29}/PKG-INFO +3 -2
  2. {use_computer-0.0.28 → use_computer-0.0.29}/README.md +1 -1
  3. {use_computer-0.0.28 → use_computer-0.0.29}/pyproject.toml +2 -1
  4. use_computer-0.0.29/scripts/smoke_wheel.py +132 -0
  5. {use_computer-0.0.28 → use_computer-0.0.29}/uv.lock +2 -0
  6. {use_computer-0.0.28 → use_computer-0.0.29}/.env.example +0 -0
  7. {use_computer-0.0.28 → use_computer-0.0.29}/.gitignore +0 -0
  8. {use_computer-0.0.28 → use_computer-0.0.29}/.pre-commit-config.yaml +0 -0
  9. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/__init__.py +0 -0
  10. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/accessibility.py +0 -0
  11. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/__init__.py +0 -0
  12. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/base/__init__.py +0 -0
  13. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/base/actions.py +0 -0
  14. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/base/agent.py +0 -0
  15. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/base/artifacts.py +0 -0
  16. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/base/desktop.py +0 -0
  17. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/base/final_state.py +0 -0
  18. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/base/prompts.py +0 -0
  19. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/base/recordings.py +0 -0
  20. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/base/sandbox.py +0 -0
  21. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/base/screenshots.py +0 -0
  22. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/base/trajectory.py +0 -0
  23. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/core.py +0 -0
  24. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/debug/README.md +0 -0
  25. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/debug/__init__.py +0 -0
  26. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/debug/actions.py +0 -0
  27. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/debug/agent.py +0 -0
  28. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/debug/models.py +0 -0
  29. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/ios/__init__.py +0 -0
  30. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/ios/agent.py +0 -0
  31. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/ios/tools.py +0 -0
  32. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/prompts/anthropic.txt +0 -0
  33. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/prompts/gemini.txt +0 -0
  34. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/prompts/ios.txt +0 -0
  35. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/prompts/openai.txt +0 -0
  36. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/prompts/pyautogui.txt +0 -0
  37. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/providers/__init__.py +0 -0
  38. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/providers/anthropic.py +0 -0
  39. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/providers/gemini.py +0 -0
  40. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/providers/generic.py +0 -0
  41. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/providers/openai.py +0 -0
  42. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/agents/types.py +0 -0
  43. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/ax_transpile.py +0 -0
  44. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/client.py +0 -0
  45. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/display.py +0 -0
  46. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/errors.py +0 -0
  47. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/__init__.py +0 -0
  48. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/agents.py +0 -0
  49. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/environment/__init__.py +0 -0
  50. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/environment/gateway.py +0 -0
  51. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/environment/platforms/__init__.py +0 -0
  52. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/environment/platforms/ios.py +0 -0
  53. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/environment/platforms/macos.py +0 -0
  54. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/environment/platforms/ubuntu.py +0 -0
  55. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/environment/platforms/windows.py +0 -0
  56. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/environment/setup_files.py +0 -0
  57. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/environment/use_computer.py +0 -0
  58. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/environment/utils/__init__.py +0 -0
  59. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/harbor/environment/utils/verifier.py +0 -0
  60. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/ios/__init__.py +0 -0
  61. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/ios/apps.py +0 -0
  62. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/ios/environment.py +0 -0
  63. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/ios/input.py +0 -0
  64. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/macos/__init__.py +0 -0
  65. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/macos/keyboard.py +0 -0
  66. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/macos/mouse.py +0 -0
  67. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/models.py +0 -0
  68. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/parsers.py +0 -0
  69. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/py.typed +0 -0
  70. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/recording.py +0 -0
  71. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/resources/__init__.py +0 -0
  72. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/resources/accessibility.py +0 -0
  73. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/resources/display.py +0 -0
  74. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/resources/recording.py +0 -0
  75. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/resources/screenshot.py +0 -0
  76. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/retry.py +0 -0
  77. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/sandbox.py +0 -0
  78. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/screenshot.py +0 -0
  79. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/simulators.py +0 -0
  80. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/__init__.py +0 -0
  81. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/pre_command.ps1 +0 -0
  82. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/pre_command.sh +0 -0
  83. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/task.toml +0 -0
  84. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/test_ios.sh +0 -0
  85. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/test_ios_nograder.sh +0 -0
  86. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/test_macos.sh +0 -0
  87. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/test_macos_check.sh +0 -0
  88. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/test_macos_nograder.sh +0 -0
  89. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/test_ubuntu.sh +0 -0
  90. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/test_ubuntu_check.sh +0 -0
  91. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/test_ubuntu_nograder.sh +0 -0
  92. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/test_windows.sh +0 -0
  93. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/test_windows_check.sh +0 -0
  94. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/tasks/templates/test_windows_nograder.sh +0 -0
  95. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/windows/__init__.py +0 -0
  96. {use_computer-0.0.28 → use_computer-0.0.29}/use_computer/windows/shell.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: use-computer
3
- Version: 0.0.28
3
+ Version: 0.0.29
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
@@ -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
@@ -56,7 +57,7 @@ Optional agent and Harbor integrations are installed explicitly:
56
57
 
57
58
  ```bash
58
59
  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
60
+ pip install "use-computer[harbor]" # Harbor environment adapter (Python 3.12+)
60
61
  pip install "use-computer[harbor,agents-all]" # Harbor adapter plus all provider deps
61
62
  ```
62
63
 
@@ -11,7 +11,7 @@ Optional agent and Harbor integrations are installed explicitly:
11
11
 
12
12
  ```bash
13
13
  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
14
+ pip install "use-computer[harbor]" # Harbor environment adapter (Python 3.12+)
15
15
  pip install "use-computer[harbor,agents-all]" # Harbor adapter plus all provider deps
16
16
  ```
17
17
 
@@ -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.29"
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
  ]
@@ -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