From 8baef75e6e9d990dda2dee840f06df8e03678134 Mon Sep 17 00:00:00 2001 From: f-trycua Date: Sun, 16 Mar 2025 16:06:32 +0100 Subject: [PATCH 1/2] Add Cua Preview --- .cursorignore | 233 +++++ .github/workflows/publish-agent.yml | 162 +++ .github/workflows/publish-all.yml | 227 ++++ .github/workflows/publish-computer-server.yml | 80 ++ .github/workflows/publish-computer.yml | 148 +++ .github/workflows/publish-core.yml | 63 ++ .github/workflows/publish-omniparser.yml | 67 ++ .github/workflows/publish-pylume.yml | 67 ++ .github/workflows/publish-som.yml | 67 ++ .github/workflows/reusable-publish.yml | 269 +++++ .gitignore | 188 +++- .vscode/launch.json | 241 ----- .vscode/lume.code-workspace | 319 ++++++ .vscode/py.code-workspace | 292 ++++++ .vscode/tasks.json | 18 - CONTRIBUTING.md | 6 +- LICENSE => LICENSE.md | 2 +- README.md | 179 ++-- docs/Developer-Guide.md | 147 +++ docs/FAQ.md | 53 +- docs/Telemetry.md | 74 ++ examples/agent_examples.py | 99 ++ examples/computer_examples.py | 97 ++ examples/pylume_examples.py | 98 ++ examples/som_examples.py | 437 ++++++++ examples/utils.py | 55 + img/agent.png | Bin 0 -> 1157339 bytes img/computer.png | Bin 0 -> 1724097 bytes libs/agent/README.md | 74 ++ libs/agent/agent/README.md | 63 ++ libs/agent/agent/__init__.py | 56 + libs/agent/agent/core/README.md | 101 ++ libs/agent/agent/core/__init__.py | 34 + libs/agent/agent/core/agent.py | 252 +++++ libs/agent/agent/core/base_agent.py | 164 +++ libs/agent/agent/core/callbacks.py | 147 +++ libs/agent/agent/core/computer_agent.py | 69 ++ libs/agent/agent/core/experiment.py | 232 +++++ libs/agent/agent/core/factory.py | 102 ++ libs/agent/agent/core/loop.py | 244 +++++ libs/agent/agent/core/messages.py | 245 +++++ libs/agent/agent/core/telemetry.py | 130 +++ libs/agent/agent/core/tools/__init__.py | 21 + libs/agent/agent/core/tools/base.py | 74 ++ libs/agent/agent/core/tools/bash.py | 52 + libs/agent/agent/core/tools/collection.py | 46 + libs/agent/agent/core/tools/computer.py | 113 ++ libs/agent/agent/core/tools/edit.py | 67 ++ libs/agent/agent/core/tools/manager.py | 56 + libs/agent/agent/providers/__init__.py | 4 + .../agent/providers/anthropic/__init__.py | 6 + .../agent/providers/anthropic/api/client.py | 219 ++++ .../agent/providers/anthropic/api/logging.py | 150 +++ .../providers/anthropic/callbacks/manager.py | 55 + libs/agent/agent/providers/anthropic/loop.py | 521 ++++++++++ .../providers/anthropic/messages/manager.py | 110 ++ .../agent/providers/anthropic/prompts.py | 20 + .../providers/anthropic/tools/__init__.py | 33 + .../agent/providers/anthropic/tools/base.py | 88 ++ .../agent/providers/anthropic/tools/bash.py | 163 +++ .../providers/anthropic/tools/collection.py | 34 + .../providers/anthropic/tools/computer.py | 550 ++++++++++ .../agent/providers/anthropic/tools/edit.py | 326 ++++++ .../providers/anthropic/tools/manager.py | 54 + .../agent/providers/anthropic/tools/run.py | 42 + libs/agent/agent/providers/anthropic/types.py | 16 + libs/agent/agent/providers/omni/__init__.py | 27 + libs/agent/agent/providers/omni/callbacks.py | 78 ++ .../agent/providers/omni/clients/anthropic.py | 99 ++ .../agent/providers/omni/clients/base.py | 44 + .../agent/providers/omni/clients/groq.py | 101 ++ .../agent/providers/omni/clients/openai.py | 159 +++ .../agent/providers/omni/clients/utils.py | 25 + libs/agent/agent/providers/omni/experiment.py | 273 +++++ .../agent/agent/providers/omni/image_utils.py | 106 ++ libs/agent/agent/providers/omni/loop.py | 965 ++++++++++++++++++ libs/agent/agent/providers/omni/messages.py | 171 ++++ libs/agent/agent/providers/omni/parser.py | 252 +++++ libs/agent/agent/providers/omni/prompts.py | 64 ++ .../agent/providers/omni/tool_manager.py | 91 ++ .../agent/providers/omni/tools/__init__.py | 13 + libs/agent/agent/providers/omni/tools/bash.py | 69 ++ .../agent/providers/omni/tools/computer.py | 216 ++++ .../agent/providers/omni/tools/manager.py | 83 ++ libs/agent/agent/providers/omni/types.py | 46 + libs/agent/agent/providers/omni/utils.py | 155 +++ .../agent/providers/omni/visualization.py | 130 +++ libs/agent/agent/telemetry.py | 21 + libs/agent/agent/types/__init__.py | 26 + libs/agent/agent/types/base.py | 53 + libs/agent/agent/types/messages.py | 36 + libs/agent/agent/types/tools.py | 32 + libs/agent/poetry.toml | 2 + libs/agent/pyproject.toml | 103 ++ libs/agent/tests/test_agent.py | 91 ++ libs/computer-server/README.md | 38 + .../computer_server/__init__.py | 20 + libs/computer-server/computer_server/cli.py | 59 ++ .../computer_server/handlers/base.py | 120 +++ .../computer_server/handlers/factory.py | 49 + .../computer_server/handlers/macos.py | 654 ++++++++++++ libs/computer-server/computer_server/main.py | 123 +++ .../computer-server/computer_server/server.py | 93 ++ libs/computer-server/examples/__init__.py | 3 + .../computer-server/examples/usage_example.py | 76 ++ libs/computer-server/pyproject.toml | 75 ++ libs/computer-server/run_server.py | 16 + libs/computer-server/test_connection.py | 72 ++ libs/computer/README.md | 66 ++ libs/computer/computer/__init__.py | 47 + libs/computer/computer/computer.py | 515 ++++++++++ libs/computer/computer/interface/__init__.py | 13 + libs/computer/computer/interface/base.py | 190 ++++ libs/computer/computer/interface/factory.py | 32 + libs/computer/computer/interface/linux.py | 27 + libs/computer/computer/interface/macos.py | 548 ++++++++++ libs/computer/computer/interface/models.py | 97 ++ libs/computer/computer/logger.py | 84 ++ libs/computer/computer/models.py | 35 + libs/computer/computer/telemetry.py | 117 +++ libs/computer/computer/utils.py | 101 ++ libs/computer/poetry.toml | 2 + libs/computer/pyproject.toml | 56 + libs/computer/tests/test_computer.py | 18 + libs/core/README.md | 28 + libs/core/core/__init__.py | 3 + libs/core/core/telemetry/__init__.py | 29 + libs/core/core/telemetry/client.py | 233 +++++ libs/core/core/telemetry/models.py | 37 + libs/core/core/telemetry/posthog_client.py | 338 ++++++ libs/core/core/telemetry/telemetry.py | 311 ++++++ libs/core/pdm.lock | 411 ++++++++ libs/core/poetry.toml | 2 + libs/core/pyproject.toml | 57 ++ libs/core/tests/test_posthog_telemetry.py | 154 +++ libs/core/tests/test_telemetry.py | 169 +++ libs/lume/CONTRIBUTING.md | 39 + .../lume/Package.resolved | 0 Package.swift => libs/lume/Package.swift | 0 libs/lume/README.md | 175 ++++ {docs => libs/lume/docs}/API-Reference.md | 0 {docs => libs/lume/docs}/Development.md | 0 libs/lume/docs/FAQ.md | 55 + libs/lume/img/cli.png | Bin 0 -> 382457 bytes libs/lume/img/logo_black.png | Bin 0 -> 4799 bytes libs/lume/img/logo_white.png | Bin 0 -> 4260 bytes .../lume/resources}/lume.entitlements | 0 .../lume/scripts}/build/build-debug.sh | 0 .../scripts}/build/build-release-notarized.sh | 0 .../lume/scripts}/build/build-release.sh | 0 .../lume/scripts}/ghcr/pull-ghcr.sh | 0 .../lume/scripts}/ghcr/push-ghcr.sh | 0 {src => libs/lume/src}/Commands/Clone.swift | 0 {src => libs/lume/src}/Commands/Create.swift | 0 {src => libs/lume/src}/Commands/Delete.swift | 0 {src => libs/lume/src}/Commands/Get.swift | 0 {src => libs/lume/src}/Commands/IPSW.swift | 0 {src => libs/lume/src}/Commands/Images.swift | 0 {src => libs/lume/src}/Commands/List.swift | 0 .../src}/Commands/Options/FormatOption.swift | 0 {src => libs/lume/src}/Commands/Prune.swift | 0 {src => libs/lume/src}/Commands/Pull.swift | 0 {src => libs/lume/src}/Commands/Run.swift | 0 {src => libs/lume/src}/Commands/Serve.swift | 0 {src => libs/lume/src}/Commands/Set.swift | 0 {src => libs/lume/src}/Commands/Stop.swift | 0 .../ImageContainerRegistry.swift | 0 .../src}/ContainerRegistry/ImageList.swift | 0 .../ContainerRegistry/ImagesPrinter.swift | 0 {src => libs/lume/src}/Errors/Errors.swift | 0 {src => libs/lume/src}/FileSystem/Home.swift | 0 .../lume/src}/FileSystem/VMConfig.swift | 0 .../lume/src}/FileSystem/VMDirectory.swift | 0 {src => libs/lume/src}/LumeController.swift | 0 {src => libs/lume/src}/Main.swift | 0 {src => libs/lume/src}/Server/HTTP.swift | 0 {src => libs/lume/src}/Server/Handlers.swift | 0 {src => libs/lume/src}/Server/Requests.swift | 0 {src => libs/lume/src}/Server/Responses.swift | 0 {src => libs/lume/src}/Server/Server.swift | 0 .../lume/src}/Utils/CommandRegistry.swift | 0 .../lume/src}/Utils/CommandUtils.swift | 0 {src => libs/lume/src}/Utils/Logger.swift | 0 .../lume/src}/Utils/NetworkUtils.swift | 0 {src => libs/lume/src}/Utils/Path.swift | 0 .../lume/src}/Utils/ProcessRunner.swift | 0 .../lume/src}/Utils/ProgressLogger.swift | 0 {src => libs/lume/src}/Utils/String.swift | 0 {src => libs/lume/src}/Utils/Utils.swift | 0 {src => libs/lume/src}/VM/DarwinVM.swift | 0 {src => libs/lume/src}/VM/LinuxVM.swift | 0 {src => libs/lume/src}/VM/VM.swift | 0 {src => libs/lume/src}/VM/VMDetails.swift | 0 .../lume/src}/VM/VMDetailsPrinter.swift | 0 .../lume/src}/VM/VMDisplayResolution.swift | 0 {src => libs/lume/src}/VM/VMFactory.swift | 0 .../lume/src}/VNC/PassphraseGenerator.swift | 0 {src => libs/lume/src}/VNC/VNCService.swift | 0 .../src}/Virtualization/DHCPLeaseParser.swift | 0 .../Virtualization/DarwinImageLoader.swift | 0 .../Virtualization/ImageLoaderFactory.swift | 0 .../VMVirtualizationService.swift | 0 {tests => libs/lume/tests}/Mocks/MockVM.swift | 0 .../Mocks/MockVMVirtualizationService.swift | 0 .../lume/tests}/Mocks/MockVNCService.swift | 0 .../tests}/VM/VMDetailsPrinterTests.swift | 0 {tests => libs/lume/tests}/VMTests.swift | 0 .../tests}/VMVirtualizationServiceTests.swift | 0 .../lume/tests}/VNCServiceTests.swift | 0 libs/pylume/README.md | 51 + libs/pylume/__init__.py | 9 + libs/pylume/pylume/__init__.py | 66 ++ libs/pylume/pylume/client.py | 112 ++ libs/pylume/pylume/exceptions.py | 36 + libs/pylume/pylume/lume | Bin 0 -> 2990288 bytes libs/pylume/pylume/models.py | 136 +++ libs/pylume/pylume/pylume.py | 308 ++++++ libs/pylume/pylume/server.py | 404 ++++++++ libs/pylume/pyproject.toml | 78 ++ libs/pylume/tests/__init__.py | 3 + libs/pylume/tests/test_basic.py | 20 + libs/som/README.md | 184 ++++ libs/som/poetry.toml | 2 + libs/som/pyproject.toml | 81 ++ libs/som/som/__init__.py | 23 + libs/som/som/detect.py | 430 ++++++++ libs/som/som/detection.py | 240 +++++ libs/som/som/models.py | 119 +++ libs/som/som/ocr.py | 162 +++ libs/som/som/util/utils.py | 190 ++++ libs/som/som/visualization.py | 274 +++++ libs/som/tests/test_omniparser.py | 13 + notebooks/agent_nb.ipynb | 229 +++++ notebooks/computer_nb.ipynb | 506 +++++++++ notebooks/computer_server_nb.ipynb | 117 +++ notebooks/pylume_nb.ipynb | 348 +++++++ pyproject.toml | 86 ++ pyrightconfig.json | 24 + scripts/build.sh | 117 +++ scripts/cleanup.sh | 85 ++ 240 files changed, 21368 insertions(+), 424 deletions(-) create mode 100644 .cursorignore create mode 100644 .github/workflows/publish-agent.yml create mode 100644 .github/workflows/publish-all.yml create mode 100644 .github/workflows/publish-computer-server.yml create mode 100644 .github/workflows/publish-computer.yml create mode 100644 .github/workflows/publish-core.yml create mode 100644 .github/workflows/publish-omniparser.yml create mode 100644 .github/workflows/publish-pylume.yml create mode 100644 .github/workflows/publish-som.yml create mode 100644 .github/workflows/reusable-publish.yml delete mode 100644 .vscode/launch.json create mode 100644 .vscode/lume.code-workspace create mode 100644 .vscode/py.code-workspace delete mode 100644 .vscode/tasks.json rename LICENSE => LICENSE.md (97%) create mode 100644 docs/Developer-Guide.md create mode 100644 docs/Telemetry.md create mode 100644 examples/agent_examples.py create mode 100644 examples/computer_examples.py create mode 100644 examples/pylume_examples.py create mode 100644 examples/som_examples.py create mode 100644 examples/utils.py create mode 100644 img/agent.png create mode 100644 img/computer.png create mode 100644 libs/agent/README.md create mode 100644 libs/agent/agent/README.md create mode 100644 libs/agent/agent/__init__.py create mode 100644 libs/agent/agent/core/README.md create mode 100644 libs/agent/agent/core/__init__.py create mode 100644 libs/agent/agent/core/agent.py create mode 100644 libs/agent/agent/core/base_agent.py create mode 100644 libs/agent/agent/core/callbacks.py create mode 100644 libs/agent/agent/core/computer_agent.py create mode 100644 libs/agent/agent/core/experiment.py create mode 100644 libs/agent/agent/core/factory.py create mode 100644 libs/agent/agent/core/loop.py create mode 100644 libs/agent/agent/core/messages.py create mode 100644 libs/agent/agent/core/telemetry.py create mode 100644 libs/agent/agent/core/tools/__init__.py create mode 100644 libs/agent/agent/core/tools/base.py create mode 100644 libs/agent/agent/core/tools/bash.py create mode 100644 libs/agent/agent/core/tools/collection.py create mode 100644 libs/agent/agent/core/tools/computer.py create mode 100644 libs/agent/agent/core/tools/edit.py create mode 100644 libs/agent/agent/core/tools/manager.py create mode 100644 libs/agent/agent/providers/__init__.py create mode 100644 libs/agent/agent/providers/anthropic/__init__.py create mode 100644 libs/agent/agent/providers/anthropic/api/client.py create mode 100644 libs/agent/agent/providers/anthropic/api/logging.py create mode 100644 libs/agent/agent/providers/anthropic/callbacks/manager.py create mode 100644 libs/agent/agent/providers/anthropic/loop.py create mode 100644 libs/agent/agent/providers/anthropic/messages/manager.py create mode 100644 libs/agent/agent/providers/anthropic/prompts.py create mode 100644 libs/agent/agent/providers/anthropic/tools/__init__.py create mode 100644 libs/agent/agent/providers/anthropic/tools/base.py create mode 100644 libs/agent/agent/providers/anthropic/tools/bash.py create mode 100644 libs/agent/agent/providers/anthropic/tools/collection.py create mode 100644 libs/agent/agent/providers/anthropic/tools/computer.py create mode 100644 libs/agent/agent/providers/anthropic/tools/edit.py create mode 100644 libs/agent/agent/providers/anthropic/tools/manager.py create mode 100644 libs/agent/agent/providers/anthropic/tools/run.py create mode 100644 libs/agent/agent/providers/anthropic/types.py create mode 100644 libs/agent/agent/providers/omni/__init__.py create mode 100644 libs/agent/agent/providers/omni/callbacks.py create mode 100644 libs/agent/agent/providers/omni/clients/anthropic.py create mode 100644 libs/agent/agent/providers/omni/clients/base.py create mode 100644 libs/agent/agent/providers/omni/clients/groq.py create mode 100644 libs/agent/agent/providers/omni/clients/openai.py create mode 100644 libs/agent/agent/providers/omni/clients/utils.py create mode 100644 libs/agent/agent/providers/omni/experiment.py create mode 100644 libs/agent/agent/providers/omni/image_utils.py create mode 100644 libs/agent/agent/providers/omni/loop.py create mode 100644 libs/agent/agent/providers/omni/messages.py create mode 100644 libs/agent/agent/providers/omni/parser.py create mode 100644 libs/agent/agent/providers/omni/prompts.py create mode 100644 libs/agent/agent/providers/omni/tool_manager.py create mode 100644 libs/agent/agent/providers/omni/tools/__init__.py create mode 100644 libs/agent/agent/providers/omni/tools/bash.py create mode 100644 libs/agent/agent/providers/omni/tools/computer.py create mode 100644 libs/agent/agent/providers/omni/tools/manager.py create mode 100644 libs/agent/agent/providers/omni/types.py create mode 100644 libs/agent/agent/providers/omni/utils.py create mode 100644 libs/agent/agent/providers/omni/visualization.py create mode 100644 libs/agent/agent/telemetry.py create mode 100644 libs/agent/agent/types/__init__.py create mode 100644 libs/agent/agent/types/base.py create mode 100644 libs/agent/agent/types/messages.py create mode 100644 libs/agent/agent/types/tools.py create mode 100644 libs/agent/poetry.toml create mode 100644 libs/agent/pyproject.toml create mode 100644 libs/agent/tests/test_agent.py create mode 100644 libs/computer-server/README.md create mode 100644 libs/computer-server/computer_server/__init__.py create mode 100644 libs/computer-server/computer_server/cli.py create mode 100644 libs/computer-server/computer_server/handlers/base.py create mode 100644 libs/computer-server/computer_server/handlers/factory.py create mode 100644 libs/computer-server/computer_server/handlers/macos.py create mode 100644 libs/computer-server/computer_server/main.py create mode 100644 libs/computer-server/computer_server/server.py create mode 100644 libs/computer-server/examples/__init__.py create mode 100644 libs/computer-server/examples/usage_example.py create mode 100644 libs/computer-server/pyproject.toml create mode 100755 libs/computer-server/run_server.py create mode 100755 libs/computer-server/test_connection.py create mode 100644 libs/computer/README.md create mode 100644 libs/computer/computer/__init__.py create mode 100644 libs/computer/computer/computer.py create mode 100644 libs/computer/computer/interface/__init__.py create mode 100644 libs/computer/computer/interface/base.py create mode 100644 libs/computer/computer/interface/factory.py create mode 100644 libs/computer/computer/interface/linux.py create mode 100644 libs/computer/computer/interface/macos.py create mode 100644 libs/computer/computer/interface/models.py create mode 100644 libs/computer/computer/logger.py create mode 100644 libs/computer/computer/models.py create mode 100644 libs/computer/computer/telemetry.py create mode 100644 libs/computer/computer/utils.py create mode 100644 libs/computer/poetry.toml create mode 100644 libs/computer/pyproject.toml create mode 100644 libs/computer/tests/test_computer.py create mode 100644 libs/core/README.md create mode 100644 libs/core/core/__init__.py create mode 100644 libs/core/core/telemetry/__init__.py create mode 100644 libs/core/core/telemetry/client.py create mode 100644 libs/core/core/telemetry/models.py create mode 100644 libs/core/core/telemetry/posthog_client.py create mode 100644 libs/core/core/telemetry/telemetry.py create mode 100644 libs/core/pdm.lock create mode 100644 libs/core/poetry.toml create mode 100644 libs/core/pyproject.toml create mode 100644 libs/core/tests/test_posthog_telemetry.py create mode 100644 libs/core/tests/test_telemetry.py create mode 100644 libs/lume/CONTRIBUTING.md rename Package.resolved => libs/lume/Package.resolved (100%) rename Package.swift => libs/lume/Package.swift (100%) create mode 100644 libs/lume/README.md rename {docs => libs/lume/docs}/API-Reference.md (100%) rename {docs => libs/lume/docs}/Development.md (100%) create mode 100644 libs/lume/docs/FAQ.md create mode 100644 libs/lume/img/cli.png create mode 100644 libs/lume/img/logo_black.png create mode 100644 libs/lume/img/logo_white.png rename {resources => libs/lume/resources}/lume.entitlements (100%) rename {scripts => libs/lume/scripts}/build/build-debug.sh (100%) rename {scripts => libs/lume/scripts}/build/build-release-notarized.sh (100%) rename {scripts => libs/lume/scripts}/build/build-release.sh (100%) rename {scripts => libs/lume/scripts}/ghcr/pull-ghcr.sh (100%) rename {scripts => libs/lume/scripts}/ghcr/push-ghcr.sh (100%) rename {src => libs/lume/src}/Commands/Clone.swift (100%) rename {src => libs/lume/src}/Commands/Create.swift (100%) rename {src => libs/lume/src}/Commands/Delete.swift (100%) rename {src => libs/lume/src}/Commands/Get.swift (100%) rename {src => libs/lume/src}/Commands/IPSW.swift (100%) rename {src => libs/lume/src}/Commands/Images.swift (100%) rename {src => libs/lume/src}/Commands/List.swift (100%) rename {src => libs/lume/src}/Commands/Options/FormatOption.swift (100%) rename {src => libs/lume/src}/Commands/Prune.swift (100%) rename {src => libs/lume/src}/Commands/Pull.swift (100%) rename {src => libs/lume/src}/Commands/Run.swift (100%) rename {src => libs/lume/src}/Commands/Serve.swift (100%) rename {src => libs/lume/src}/Commands/Set.swift (100%) rename {src => libs/lume/src}/Commands/Stop.swift (100%) rename {src => libs/lume/src}/ContainerRegistry/ImageContainerRegistry.swift (100%) rename {src => libs/lume/src}/ContainerRegistry/ImageList.swift (100%) rename {src => libs/lume/src}/ContainerRegistry/ImagesPrinter.swift (100%) rename {src => libs/lume/src}/Errors/Errors.swift (100%) rename {src => libs/lume/src}/FileSystem/Home.swift (100%) rename {src => libs/lume/src}/FileSystem/VMConfig.swift (100%) rename {src => libs/lume/src}/FileSystem/VMDirectory.swift (100%) rename {src => libs/lume/src}/LumeController.swift (100%) rename {src => libs/lume/src}/Main.swift (100%) rename {src => libs/lume/src}/Server/HTTP.swift (100%) rename {src => libs/lume/src}/Server/Handlers.swift (100%) rename {src => libs/lume/src}/Server/Requests.swift (100%) rename {src => libs/lume/src}/Server/Responses.swift (100%) rename {src => libs/lume/src}/Server/Server.swift (100%) rename {src => libs/lume/src}/Utils/CommandRegistry.swift (100%) rename {src => libs/lume/src}/Utils/CommandUtils.swift (100%) rename {src => libs/lume/src}/Utils/Logger.swift (100%) rename {src => libs/lume/src}/Utils/NetworkUtils.swift (100%) rename {src => libs/lume/src}/Utils/Path.swift (100%) rename {src => libs/lume/src}/Utils/ProcessRunner.swift (100%) rename {src => libs/lume/src}/Utils/ProgressLogger.swift (100%) rename {src => libs/lume/src}/Utils/String.swift (100%) rename {src => libs/lume/src}/Utils/Utils.swift (100%) rename {src => libs/lume/src}/VM/DarwinVM.swift (100%) rename {src => libs/lume/src}/VM/LinuxVM.swift (100%) rename {src => libs/lume/src}/VM/VM.swift (100%) rename {src => libs/lume/src}/VM/VMDetails.swift (100%) rename {src => libs/lume/src}/VM/VMDetailsPrinter.swift (100%) rename {src => libs/lume/src}/VM/VMDisplayResolution.swift (100%) rename {src => libs/lume/src}/VM/VMFactory.swift (100%) rename {src => libs/lume/src}/VNC/PassphraseGenerator.swift (100%) rename {src => libs/lume/src}/VNC/VNCService.swift (100%) rename {src => libs/lume/src}/Virtualization/DHCPLeaseParser.swift (100%) rename {src => libs/lume/src}/Virtualization/DarwinImageLoader.swift (100%) rename {src => libs/lume/src}/Virtualization/ImageLoaderFactory.swift (100%) rename {src => libs/lume/src}/Virtualization/VMVirtualizationService.swift (100%) rename {tests => libs/lume/tests}/Mocks/MockVM.swift (100%) rename {tests => libs/lume/tests}/Mocks/MockVMVirtualizationService.swift (100%) rename {tests => libs/lume/tests}/Mocks/MockVNCService.swift (100%) rename {tests => libs/lume/tests}/VM/VMDetailsPrinterTests.swift (100%) rename {tests => libs/lume/tests}/VMTests.swift (100%) rename {tests => libs/lume/tests}/VMVirtualizationServiceTests.swift (100%) rename {tests => libs/lume/tests}/VNCServiceTests.swift (100%) create mode 100644 libs/pylume/README.md create mode 100644 libs/pylume/__init__.py create mode 100644 libs/pylume/pylume/__init__.py create mode 100644 libs/pylume/pylume/client.py create mode 100644 libs/pylume/pylume/exceptions.py create mode 100755 libs/pylume/pylume/lume create mode 100644 libs/pylume/pylume/models.py create mode 100644 libs/pylume/pylume/pylume.py create mode 100644 libs/pylume/pylume/server.py create mode 100644 libs/pylume/pyproject.toml create mode 100644 libs/pylume/tests/__init__.py create mode 100644 libs/pylume/tests/test_basic.py create mode 100644 libs/som/README.md create mode 100644 libs/som/poetry.toml create mode 100644 libs/som/pyproject.toml create mode 100644 libs/som/som/__init__.py create mode 100644 libs/som/som/detect.py create mode 100644 libs/som/som/detection.py create mode 100644 libs/som/som/models.py create mode 100644 libs/som/som/ocr.py create mode 100644 libs/som/som/util/utils.py create mode 100644 libs/som/som/visualization.py create mode 100644 libs/som/tests/test_omniparser.py create mode 100644 notebooks/agent_nb.ipynb create mode 100644 notebooks/computer_nb.ipynb create mode 100644 notebooks/computer_server_nb.ipynb create mode 100644 notebooks/pylume_nb.ipynb create mode 100644 pyproject.toml create mode 100644 pyrightconfig.json create mode 100755 scripts/build.sh create mode 100755 scripts/cleanup.sh diff --git a/.cursorignore b/.cursorignore new file mode 100644 index 00000000..12e8e403 --- /dev/null +++ b/.cursorignore @@ -0,0 +1,233 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +!libs/lume/scripts/build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Scripts +server/scripts/ + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# Ruff stuff: +.ruff_cache/ + +# PyPI configuration file +.pypirc + +# Conda +.conda/ + +# Local environment +.env.local + +# macOS DS_Store +.DS_Store + +weights/ +weights/icon_detect/ +weights/icon_detect/model.pt +weights/icon_detect/model.pt.zip +weights/icon_detect/model.pt.zip.part* + +libs/omniparser/weights/icon_detect/model.pt + +# Example test data and output +examples/test_data/ +examples/output/ + +/screenshots/ + +/experiments/ + +/logs/ + +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +.swiftpm/ +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ +# +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts +Carthage/Build/ + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Ignore folder +ignore + +# .release +.release/ \ No newline at end of file diff --git a/.github/workflows/publish-agent.yml b/.github/workflows/publish-agent.yml new file mode 100644 index 00000000..1566880b --- /dev/null +++ b/.github/workflows/publish-agent.yml @@ -0,0 +1,162 @@ +name: Publish Agent Package + +on: + push: + tags: + - 'agent-v*' + workflow_dispatch: + inputs: + version: + description: 'Version to publish (without v prefix)' + required: true + default: '0.1.0' + workflow_call: + inputs: + version: + description: 'Version to publish' + required: true + type: string + +# Adding permissions at workflow level +permissions: + contents: write + +jobs: + prepare: + runs-on: macos-latest + outputs: + version: ${{ steps.get-version.outputs.version }} + computer_version: ${{ steps.update-deps.outputs.computer_version }} + som_version: ${{ steps.update-deps.outputs.som_version }} + core_version: ${{ steps.update-deps.outputs.core_version }} + steps: + - uses: actions/checkout@v4 + + - name: Determine version + id: get-version + run: | + if [ "${{ github.event_name }}" == "push" ]; then + # Extract version from tag (for package-specific tags) + if [[ "${{ github.ref }}" =~ ^refs/tags/agent-v([0-9]+\.[0-9]+\.[0-9]+) ]]; then + VERSION=${BASH_REMATCH[1]} + else + echo "Invalid tag format for agent" + exit 1 + fi + elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + # Use version from workflow dispatch + VERSION=${{ github.event.inputs.version }} + else + # Use version from workflow_call + VERSION=${{ inputs.version }} + fi + echo "VERSION=$VERSION" + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Update dependencies to latest versions + id: update-deps + run: | + cd libs/agent + + # Install required package for PyPI API access + pip install requests + + # Create a more robust Python script for PyPI version checking + cat > get_latest_versions.py << 'EOF' + import requests + import json + import sys + + def get_package_version(package_name, fallback="0.1.0"): + try: + response = requests.get(f'https://pypi.org/pypi/{package_name}/json') + print(f"API Response Status for {package_name}: {response.status_code}", file=sys.stderr) + + if response.status_code != 200: + print(f"API request failed for {package_name}, using fallback version", file=sys.stderr) + return fallback + + data = json.loads(response.text) + + if 'info' not in data: + print(f"Missing 'info' key in API response for {package_name}, using fallback version", file=sys.stderr) + return fallback + + return data['info']['version'] + except Exception as e: + print(f"Error fetching version for {package_name}: {str(e)}", file=sys.stderr) + return fallback + + # Get latest versions + print(get_package_version('cua-computer')) + print(get_package_version('cua-som')) + print(get_package_version('cua-core')) + EOF + + # Execute the script to get the versions + VERSIONS=($(python get_latest_versions.py)) + LATEST_COMPUTER=${VERSIONS[0]} + LATEST_SOM=${VERSIONS[1]} + LATEST_CORE=${VERSIONS[2]} + + echo "Latest cua-computer version: $LATEST_COMPUTER" + echo "Latest cua-som version: $LATEST_SOM" + echo "Latest cua-core version: $LATEST_CORE" + + # Output the versions for the next job + echo "computer_version=$LATEST_COMPUTER" >> $GITHUB_OUTPUT + echo "som_version=$LATEST_SOM" >> $GITHUB_OUTPUT + echo "core_version=$LATEST_CORE" >> $GITHUB_OUTPUT + + # Determine major version for version constraint + COMPUTER_MAJOR=$(echo $LATEST_COMPUTER | cut -d. -f1) + SOM_MAJOR=$(echo $LATEST_SOM | cut -d. -f1) + CORE_MAJOR=$(echo $LATEST_CORE | cut -d. -f1) + + NEXT_COMPUTER_MAJOR=$((COMPUTER_MAJOR + 1)) + NEXT_SOM_MAJOR=$((SOM_MAJOR + 1)) + NEXT_CORE_MAJOR=$((CORE_MAJOR + 1)) + + # Update dependencies in pyproject.toml + if [[ "$OSTYPE" == "darwin"* ]]; then + # macOS version of sed needs an empty string for -i + sed -i '' "s/\"cua-computer>=.*,<.*\"/\"cua-computer>=$LATEST_COMPUTER,<$NEXT_COMPUTER_MAJOR.0.0\"/" pyproject.toml + sed -i '' "s/\"cua-som>=.*,<.*\"/\"cua-som>=$LATEST_SOM,<$NEXT_SOM_MAJOR.0.0\"/" pyproject.toml + sed -i '' "s/\"cua-core>=.*,<.*\"/\"cua-core>=$LATEST_CORE,<$NEXT_CORE_MAJOR.0.0\"/" pyproject.toml + else + # Linux version + sed -i "s/\"cua-computer>=.*,<.*\"/\"cua-computer>=$LATEST_COMPUTER,<$NEXT_COMPUTER_MAJOR.0.0\"/" pyproject.toml + sed -i "s/\"cua-som>=.*,<.*\"/\"cua-som>=$LATEST_SOM,<$NEXT_SOM_MAJOR.0.0\"/" pyproject.toml + sed -i "s/\"cua-core>=.*,<.*\"/\"cua-core>=$LATEST_CORE,<$NEXT_CORE_MAJOR.0.0\"/" pyproject.toml + fi + + # Display the updated dependencies + echo "Updated dependencies in pyproject.toml:" + grep -E "cua-computer|cua-som|cua-core" pyproject.toml + + publish: + needs: prepare + uses: ./.github/workflows/reusable-publish.yml + with: + package_name: "agent" + package_dir: "libs/agent" + version: ${{ needs.prepare.outputs.version }} + is_lume_package: false + base_package_name: "cua-agent" + secrets: + PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} + + set-env-variables: + needs: [prepare, publish] + runs-on: macos-latest + steps: + - name: Set environment variables for use in other jobs + run: | + echo "COMPUTER_VERSION=${{ needs.prepare.outputs.computer_version }}" >> $GITHUB_ENV + echo "SOM_VERSION=${{ needs.prepare.outputs.som_version }}" >> $GITHUB_ENV + echo "CORE_VERSION=${{ needs.prepare.outputs.core_version }}" >> $GITHUB_ENV \ No newline at end of file diff --git a/.github/workflows/publish-all.yml b/.github/workflows/publish-all.yml new file mode 100644 index 00000000..f7e7e405 --- /dev/null +++ b/.github/workflows/publish-all.yml @@ -0,0 +1,227 @@ +name: Publish All Packages + +on: + push: + tags: + - 'v*' # For global releases (vX.Y.Z format) + workflow_dispatch: + inputs: + version: + description: 'Version to publish (without v prefix)' + required: true + default: '0.1.0' + packages: + description: 'Packages to publish (comma-separated)' + required: false + default: 'core,pylume,computer,som,agent,computer-server' + +# Adding permissions at workflow level +permissions: + contents: write + +jobs: + setup: + runs-on: macos-latest + outputs: + version: ${{ steps.get-version.outputs.version }} + publish_core: ${{ steps.set-packages.outputs.publish_core }} + publish_pylume: ${{ steps.set-packages.outputs.publish_pylume }} + publish_computer: ${{ steps.set-packages.outputs.publish_computer }} + publish_som: ${{ steps.set-packages.outputs.publish_som }} + publish_agent: ${{ steps.set-packages.outputs.publish_agent }} + publish_computer_server: ${{ steps.set-packages.outputs.publish_computer_server }} + steps: + - name: Determine version + id: get-version + run: | + if [ "${{ github.event_name }}" == "push" ]; then + # Extract version from tag (for global releases) + if [[ "${{ github.ref }}" =~ ^refs/tags/v([0-9]+\.[0-9]+\.[0-9]+) ]]; then + VERSION=${BASH_REMATCH[1]} + else + echo "Invalid tag format for global release" + exit 1 + fi + else + # Use version from workflow dispatch + VERSION=${{ github.event.inputs.version }} + fi + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Using version: $VERSION" + + - name: Determine packages to publish + id: set-packages + run: | + # Default to all packages for tag-based releases + if [ "${{ github.event_name }}" == "push" ]; then + PACKAGES="core,pylume,computer,som,agent,computer-server" + else + # Use packages from workflow dispatch + PACKAGES="${{ github.event.inputs.packages }}" + fi + + # Set individual flags for each package + echo "publish_core=$(echo $PACKAGES | grep -q "core" && echo "true" || echo "false")" >> $GITHUB_OUTPUT + echo "publish_pylume=$(echo $PACKAGES | grep -q "pylume" && echo "true" || echo "false")" >> $GITHUB_OUTPUT + echo "publish_computer=$(echo $PACKAGES | grep -q "computer" && echo "true" || echo "false")" >> $GITHUB_OUTPUT + echo "publish_som=$(echo $PACKAGES | grep -q "som" && echo "true" || echo "false")" >> $GITHUB_OUTPUT + echo "publish_agent=$(echo $PACKAGES | grep -q "agent" && echo "true" || echo "false")" >> $GITHUB_OUTPUT + echo "publish_computer_server=$(echo $PACKAGES | grep -q "computer-server" && echo "true" || echo "false")" >> $GITHUB_OUTPUT + + echo "Publishing packages: $PACKAGES" + + publish-core: + needs: setup + if: ${{ needs.setup.outputs.publish_core == 'true' }} + uses: ./.github/workflows/publish-core.yml + with: + version: ${{ needs.setup.outputs.version }} + secrets: inherit + + # Add a delay to ensure PyPI has registered the new core version + wait-for-core: + needs: [setup, publish-core] + if: ${{ needs.setup.outputs.publish_core == 'true' && (needs.setup.outputs.publish_computer == 'true' || needs.setup.outputs.publish_agent == 'true') }} + runs-on: macos-latest + steps: + - name: Wait for PyPI to update + run: | + echo "Waiting for PyPI to register the new core version..." + sleep 60 # Wait 60 seconds for PyPI to update its index + + publish-pylume: + needs: setup + if: ${{ needs.setup.outputs.publish_pylume == 'true' }} + uses: ./.github/workflows/publish-pylume.yml + with: + version: ${{ needs.setup.outputs.version }} + secrets: inherit + + # Add a delay to ensure PyPI has registered the new pylume version + wait-for-pylume: + needs: [setup, publish-pylume] + if: ${{ needs.setup.outputs.publish_pylume == 'true' && (needs.setup.outputs.publish_computer == 'true' || needs.setup.outputs.publish_som == 'true') }} + runs-on: macos-latest + steps: + - name: Wait for PyPI to update + run: | + echo "Waiting for PyPI to register the new pylume version..." + sleep 60 # Wait 60 seconds for PyPI to update its index + + publish-computer: + needs: [setup, publish-core, publish-pylume, wait-for-core, wait-for-pylume] + if: ${{ needs.setup.outputs.publish_computer == 'true' }} + uses: ./.github/workflows/publish-computer.yml + with: + version: ${{ needs.setup.outputs.version }} + secrets: inherit + + publish-som: + needs: [setup, publish-pylume, wait-for-pylume] + if: ${{ needs.setup.outputs.publish_som == 'true' }} + uses: ./.github/workflows/publish-som.yml + with: + version: ${{ needs.setup.outputs.version }} + secrets: inherit + + # Add a delay to ensure PyPI has registered the new computer and som versions + wait-for-deps: + needs: [setup, publish-computer, publish-som] + if: ${{ (needs.setup.outputs.publish_computer == 'true' || needs.setup.outputs.publish_som == 'true') && needs.setup.outputs.publish_agent == 'true' }} + runs-on: macos-latest + steps: + - name: Wait for PyPI to update + run: | + echo "Waiting for PyPI to register new dependency versions..." + sleep 60 # Wait 60 seconds for PyPI to update its index + + publish-agent: + needs: [setup, publish-core, publish-computer, publish-som, wait-for-core, wait-for-deps] + if: ${{ needs.setup.outputs.publish_agent == 'true' }} + uses: ./.github/workflows/publish-agent.yml + with: + version: ${{ needs.setup.outputs.version }} + secrets: inherit + + publish-computer-server: + needs: [setup, publish-computer] + if: ${{ needs.setup.outputs.publish_computer_server == 'true' }} + uses: ./.github/workflows/publish-computer-server.yml + with: + version: ${{ needs.setup.outputs.version }} + secrets: inherit + + # Create a global release for the entire CUA project + create-global-release: + needs: [setup, publish-core, publish-pylume, publish-computer, publish-som, publish-agent, publish-computer-server] + if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') }} + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + + - name: Create Summary Release Notes + id: release_notes + run: | + VERSION=${{ needs.setup.outputs.version }} + + # Create the release notes file + echo "# CUA v${VERSION} Release" > release_notes.md + echo "" >> release_notes.md + echo "This is a global release of the Computer Universal Automation (CUA) project." >> release_notes.md + echo "" >> release_notes.md + + echo "## Released Packages" >> release_notes.md + echo "" >> release_notes.md + + # Add links to individual package releases + if [[ "${{ needs.setup.outputs.publish_core }}" == "true" ]]; then + echo "- [cua-core v${VERSION}](https://github.com/${{ github.repository }}/releases/tag/core-v${VERSION})" >> release_notes.md + fi + + if [[ "${{ needs.setup.outputs.publish_pylume }}" == "true" ]]; then + echo "- [pylume v${VERSION}](https://github.com/${{ github.repository }}/releases/tag/pylume-v${VERSION})" >> release_notes.md + fi + + if [[ "${{ needs.setup.outputs.publish_computer }}" == "true" ]]; then + echo "- [cua-computer v${VERSION}](https://github.com/${{ github.repository }}/releases/tag/computer-v${VERSION})" >> release_notes.md + fi + + if [[ "${{ needs.setup.outputs.publish_som }}" == "true" ]]; then + echo "- [cua-som v${VERSION}](https://github.com/${{ github.repository }}/releases/tag/som-v${VERSION})" >> release_notes.md + fi + + if [[ "${{ needs.setup.outputs.publish_agent }}" == "true" ]]; then + echo "- [cua-agent v${VERSION}](https://github.com/${{ github.repository }}/releases/tag/agent-v${VERSION})" >> release_notes.md + fi + + if [[ "${{ needs.setup.outputs.publish_computer_server }}" == "true" ]]; then + echo "- [cua-computer-server v${VERSION}](https://github.com/${{ github.repository }}/releases/tag/computer-server-v${VERSION})" >> release_notes.md + fi + + echo "" >> release_notes.md + echo "## Installation" >> release_notes.md + echo "" >> release_notes.md + echo "### Core Libraries" >> release_notes.md + echo "```bash" >> release_notes.md + echo "pip install cua-core==${VERSION}" >> release_notes.md + echo "pip install cua-computer==${VERSION}" >> release_notes.md + echo "pip install pylume==${VERSION}" >> release_notes.md + echo "```" >> release_notes.md + echo "" >> release_notes.md + echo "### Agent with SOM (Recommended)" >> release_notes.md + echo "```bash" >> release_notes.md + echo "pip install cua-agent[som]==${VERSION}" >> release_notes.md + echo "```" >> release_notes.md + + echo "Release notes created:" + cat release_notes.md + + - name: Create GitHub Global Release + uses: softprops/action-gh-release@v1 + with: + name: "CUA v${{ needs.setup.outputs.version }}" + body_path: release_notes.md + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/publish-computer-server.yml b/.github/workflows/publish-computer-server.yml new file mode 100644 index 00000000..15eca348 --- /dev/null +++ b/.github/workflows/publish-computer-server.yml @@ -0,0 +1,80 @@ +name: Publish Computer Server Package + +on: + push: + tags: + - 'computer-server-v*' + workflow_dispatch: + inputs: + version: + description: 'Version to publish (without v prefix)' + required: true + default: '0.1.0' + workflow_call: + inputs: + version: + description: 'Version to publish' + required: true + type: string + outputs: + version: + description: "The version that was published" + value: ${{ jobs.prepare.outputs.version }} + +# Adding permissions at workflow level +permissions: + contents: write + +jobs: + prepare: + runs-on: macos-latest + outputs: + version: ${{ steps.get-version.outputs.version }} + steps: + - uses: actions/checkout@v4 + + - name: Determine version + id: get-version + run: | + if [ "${{ github.event_name }}" == "push" ]; then + # Extract version from tag (for package-specific tags) + if [[ "${{ github.ref }}" =~ ^refs/tags/computer-server-v([0-9]+\.[0-9]+\.[0-9]+) ]]; then + VERSION=${BASH_REMATCH[1]} + else + echo "Invalid tag format for computer-server" + exit 1 + fi + elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + # Use version from workflow dispatch + VERSION=${{ github.event.inputs.version }} + else + # Use version from workflow_call + VERSION=${{ inputs.version }} + fi + echo "VERSION=$VERSION" + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + publish: + needs: prepare + uses: ./.github/workflows/reusable-publish.yml + with: + package_name: "computer-server" + package_dir: "libs/computer-server" + version: ${{ needs.prepare.outputs.version }} + is_lume_package: false + base_package_name: "cua-computer-server" + secrets: + PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} + + set-env-variables: + needs: [prepare, publish] + runs-on: macos-latest + steps: + - name: Set environment variables for use in other jobs + run: | + echo "COMPUTER_VERSION=${{ needs.prepare.outputs.version }}" >> $GITHUB_ENV \ No newline at end of file diff --git a/.github/workflows/publish-computer.yml b/.github/workflows/publish-computer.yml new file mode 100644 index 00000000..9175907e --- /dev/null +++ b/.github/workflows/publish-computer.yml @@ -0,0 +1,148 @@ +name: Publish Computer Package + +on: + push: + tags: + - 'computer-v*' + workflow_dispatch: + inputs: + version: + description: 'Version to publish (without v prefix)' + required: true + default: '0.1.0' + workflow_call: + inputs: + version: + description: 'Version to publish' + required: true + type: string + +# Adding permissions at workflow level +permissions: + contents: write + +jobs: + prepare: + runs-on: macos-latest + outputs: + version: ${{ steps.get-version.outputs.version }} + pylume_version: ${{ steps.update-deps.outputs.pylume_version }} + core_version: ${{ steps.update-deps.outputs.core_version }} + steps: + - uses: actions/checkout@v4 + + - name: Determine version + id: get-version + run: | + if [ "${{ github.event_name }}" == "push" ]; then + # Extract version from tag (for package-specific tags) + if [[ "${{ github.ref }}" =~ ^refs/tags/computer-v([0-9]+\.[0-9]+\.[0-9]+) ]]; then + VERSION=${BASH_REMATCH[1]} + else + echo "Invalid tag format for computer" + exit 1 + fi + elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + # Use version from workflow dispatch + VERSION=${{ github.event.inputs.version }} + else + # Use version from workflow_call + VERSION=${{ inputs.version }} + fi + echo "VERSION=$VERSION" + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Update dependencies to latest versions + id: update-deps + run: | + cd libs/computer + # Install required package for PyPI API access + pip install requests + + # Create a more robust Python script for PyPI version checking + cat > get_latest_versions.py << 'EOF' + import requests + import json + import sys + + def get_package_version(package_name, fallback="0.1.0"): + try: + response = requests.get(f'https://pypi.org/pypi/{package_name}/json') + print(f"API Response Status for {package_name}: {response.status_code}", file=sys.stderr) + + if response.status_code != 200: + print(f"API request failed for {package_name}, using fallback version", file=sys.stderr) + return fallback + + data = json.loads(response.text) + + if 'info' not in data: + print(f"Missing 'info' key in API response for {package_name}, using fallback version", file=sys.stderr) + return fallback + + return data['info']['version'] + except Exception as e: + print(f"Error fetching version for {package_name}: {str(e)}", file=sys.stderr) + return fallback + + # Get latest versions + print(get_package_version('pylume')) + print(get_package_version('cua-core')) + EOF + + # Execute the script to get the versions + VERSIONS=($(python get_latest_versions.py)) + LATEST_PYLUME=${VERSIONS[0]} + LATEST_CORE=${VERSIONS[1]} + + echo "Latest pylume version: $LATEST_PYLUME" + echo "Latest cua-core version: $LATEST_CORE" + + # Output the versions for the next job + echo "pylume_version=$LATEST_PYLUME" >> $GITHUB_OUTPUT + echo "core_version=$LATEST_CORE" >> $GITHUB_OUTPUT + + # Determine major version for version constraint + CORE_MAJOR=$(echo $LATEST_CORE | cut -d. -f1) + NEXT_CORE_MAJOR=$((CORE_MAJOR + 1)) + + # Update dependencies in pyproject.toml + if [[ "$OSTYPE" == "darwin"* ]]; then + # macOS version of sed needs an empty string for -i + sed -i '' "s/\"pylume>=.*\"/\"pylume>=$LATEST_PYLUME\"/" pyproject.toml + sed -i '' "s/\"cua-core>=.*,<.*\"/\"cua-core>=$LATEST_CORE,<$NEXT_CORE_MAJOR.0.0\"/" pyproject.toml + else + # Linux version + sed -i "s/\"pylume>=.*\"/\"pylume>=$LATEST_PYLUME\"/" pyproject.toml + sed -i "s/\"cua-core>=.*,<.*\"/\"cua-core>=$LATEST_CORE,<$NEXT_CORE_MAJOR.0.0\"/" pyproject.toml + fi + + # Display the updated dependencies + echo "Updated dependencies in pyproject.toml:" + grep -E "pylume|cua-core" pyproject.toml + + publish: + needs: prepare + uses: ./.github/workflows/reusable-publish.yml + with: + package_name: "computer" + package_dir: "libs/computer" + version: ${{ needs.prepare.outputs.version }} + is_lume_package: false + base_package_name: "cua-computer" + secrets: + PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} + + set-env-variables: + needs: [prepare, publish] + runs-on: macos-latest + steps: + - name: Set environment variables for use in other jobs + run: | + echo "PYLUME_VERSION=${{ needs.prepare.outputs.pylume_version }}" >> $GITHUB_ENV + echo "CORE_VERSION=${{ needs.prepare.outputs.core_version }}" >> $GITHUB_ENV \ No newline at end of file diff --git a/.github/workflows/publish-core.yml b/.github/workflows/publish-core.yml new file mode 100644 index 00000000..4f868f26 --- /dev/null +++ b/.github/workflows/publish-core.yml @@ -0,0 +1,63 @@ +name: Publish Core Package + +on: + push: + tags: + - 'core-v*' + workflow_dispatch: + inputs: + version: + description: 'Version to publish (without v prefix)' + required: true + default: '0.1.0' + workflow_call: + inputs: + version: + description: 'Version to publish' + required: true + type: string + +# Adding permissions at workflow level +permissions: + contents: write + +jobs: + prepare: + runs-on: macos-latest + outputs: + version: ${{ steps.get-version.outputs.version }} + steps: + - uses: actions/checkout@v4 + + - name: Determine version + id: get-version + run: | + if [ "${{ github.event_name }}" == "push" ]; then + # Extract version from tag (for package-specific tags) + if [[ "${{ github.ref }}" =~ ^refs/tags/core-v([0-9]+\.[0-9]+\.[0-9]+) ]]; then + VERSION=${BASH_REMATCH[1]} + else + echo "Invalid tag format for core" + exit 1 + fi + elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + # Use version from workflow dispatch + VERSION=${{ github.event.inputs.version }} + else + # Use version from workflow_call + VERSION=${{ inputs.version }} + fi + echo "VERSION=$VERSION" + echo "version=$VERSION" >> $GITHUB_OUTPUT + + publish: + needs: prepare + uses: ./.github/workflows/reusable-publish.yml + with: + package_name: "core" + package_dir: "libs/core" + version: ${{ needs.prepare.outputs.version }} + is_lume_package: false + base_package_name: "cua-core" + secrets: + PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/publish-omniparser.yml b/.github/workflows/publish-omniparser.yml new file mode 100644 index 00000000..8a8227f9 --- /dev/null +++ b/.github/workflows/publish-omniparser.yml @@ -0,0 +1,67 @@ +name: Publish OmniParser Package + +on: + push: + tags: + - 'omniparser-v*' + workflow_dispatch: + inputs: + version: + description: 'Version to publish (without v prefix)' + required: true + default: '0.1.0' + workflow_call: + inputs: + version: + description: 'Version to publish' + required: true + type: string + outputs: + version: + description: "The version that was published" + value: ${{ jobs.determine-version.outputs.version }} + +# Adding permissions at workflow level +permissions: + contents: write + +jobs: + determine-version: + runs-on: macos-latest + outputs: + version: ${{ steps.get-version.outputs.version }} + steps: + - uses: actions/checkout@v4 + + - name: Determine version + id: get-version + run: | + if [ "${{ github.event_name }}" == "push" ]; then + # Extract version from tag (for package-specific tags) + if [[ "${{ github.ref }}" =~ ^refs/tags/omniparser-v([0-9]+\.[0-9]+\.[0-9]+) ]]; then + VERSION=${BASH_REMATCH[1]} + else + echo "Invalid tag format for omniparser" + exit 1 + fi + elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + # Use version from workflow dispatch + VERSION=${{ github.event.inputs.version }} + else + # Use version from workflow_call + VERSION=${{ inputs.version }} + fi + echo "VERSION=$VERSION" + echo "version=$VERSION" >> $GITHUB_OUTPUT + + publish: + needs: determine-version + uses: ./.github/workflows/reusable-publish.yml + with: + package_name: "omniparser" + package_dir: "libs/omniparser" + version: ${{ needs.determine-version.outputs.version }} + is_lume_package: false + base_package_name: "cua-omniparser" + secrets: + PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/publish-pylume.yml b/.github/workflows/publish-pylume.yml new file mode 100644 index 00000000..dddde233 --- /dev/null +++ b/.github/workflows/publish-pylume.yml @@ -0,0 +1,67 @@ +name: Publish Pylume Package + +on: + push: + tags: + - 'pylume-v*' + workflow_dispatch: + inputs: + version: + description: 'Version to publish (without v prefix)' + required: true + default: '0.1.0' + workflow_call: + inputs: + version: + description: 'Version to publish' + required: true + type: string + outputs: + version: + description: "The version that was published" + value: ${{ jobs.determine-version.outputs.version }} + +# Adding permissions at workflow level +permissions: + contents: write + +jobs: + determine-version: + runs-on: macos-latest + outputs: + version: ${{ steps.get-version.outputs.version }} + steps: + - uses: actions/checkout@v4 + + - name: Determine version + id: get-version + run: | + if [ "${{ github.event_name }}" == "push" ]; then + # Extract version from tag (for package-specific tags) + if [[ "${{ github.ref }}" =~ ^refs/tags/pylume-v([0-9]+\.[0-9]+\.[0-9]+) ]]; then + VERSION=${BASH_REMATCH[1]} + else + echo "Invalid tag format for pylume" + exit 1 + fi + elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + # Use version from workflow dispatch + VERSION=${{ github.event.inputs.version }} + else + # Use version from workflow_call + VERSION=${{ inputs.version }} + fi + echo "VERSION=$VERSION" + echo "version=$VERSION" >> $GITHUB_OUTPUT + + publish: + needs: determine-version + uses: ./.github/workflows/reusable-publish.yml + with: + package_name: "pylume" + package_dir: "libs/pylume" + version: ${{ needs.determine-version.outputs.version }} + is_lume_package: true + base_package_name: "pylume" + secrets: + PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/publish-som.yml b/.github/workflows/publish-som.yml new file mode 100644 index 00000000..04ea9bb8 --- /dev/null +++ b/.github/workflows/publish-som.yml @@ -0,0 +1,67 @@ +name: Publish SOM Package + +on: + push: + tags: + - 'som-v*' + workflow_dispatch: + inputs: + version: + description: 'Version to publish (without v prefix)' + required: true + default: '0.1.0' + workflow_call: + inputs: + version: + description: 'Version to publish' + required: true + type: string + outputs: + version: + description: "The version that was published" + value: ${{ jobs.determine-version.outputs.version }} + +# Adding permissions at workflow level +permissions: + contents: write + +jobs: + determine-version: + runs-on: macos-latest + outputs: + version: ${{ steps.get-version.outputs.version }} + steps: + - uses: actions/checkout@v4 + + - name: Determine version + id: get-version + run: | + if [ "${{ github.event_name }}" == "push" ]; then + # Extract version from tag (for package-specific tags) + if [[ "${{ github.ref }}" =~ ^refs/tags/som-v([0-9]+\.[0-9]+\.[0-9]+) ]]; then + VERSION=${BASH_REMATCH[1]} + else + echo "Invalid tag format for som" + exit 1 + fi + elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + # Use version from workflow dispatch + VERSION=${{ github.event.inputs.version }} + else + # Use version from workflow_call + VERSION=${{ inputs.version }} + fi + echo "VERSION=$VERSION" + echo "version=$VERSION" >> $GITHUB_OUTPUT + + publish: + needs: determine-version + uses: ./.github/workflows/reusable-publish.yml + with: + package_name: "som" + package_dir: "libs/som" # Updated to the new directory name + version: ${{ needs.determine-version.outputs.version }} + is_lume_package: false + base_package_name: "cua-som" + secrets: + PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/reusable-publish.yml b/.github/workflows/reusable-publish.yml new file mode 100644 index 00000000..02e2aa0c --- /dev/null +++ b/.github/workflows/reusable-publish.yml @@ -0,0 +1,269 @@ +name: Reusable Package Publish Workflow + +on: + workflow_call: + inputs: + package_name: + description: 'Name of the package (e.g. pylume, computer, agent)' + required: true + type: string + package_dir: + description: 'Directory containing the package relative to workspace root (e.g. libs/pylume)' + required: true + type: string + version: + description: 'Version to publish' + required: true + type: string + is_lume_package: + description: 'Whether this package includes the lume binary' + required: false + type: boolean + default: false + base_package_name: + description: 'PyPI package name (e.g. pylume, cua-agent)' + required: true + type: string + secrets: + PYPI_TOKEN: + required: true + outputs: + version: + description: "The version that was published" + value: ${{ jobs.build-and-publish.outputs.version }} + +jobs: + build-and-publish: + runs-on: macos-latest + permissions: + contents: write # This permission is needed for creating releases + outputs: + version: ${{ steps.set-version.outputs.version }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Full history for release creation + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Create root pdm.lock file + run: | + # Create an empty pdm.lock file in the root + touch pdm.lock + + - name: Install PDM + uses: pdm-project/setup-pdm@v3 + with: + python-version: '3.10' + cache: true + + - name: Set version + id: set-version + run: | + echo "VERSION=${{ inputs.version }}" >> $GITHUB_ENV + echo "version=${{ inputs.version }}" >> $GITHUB_OUTPUT + + - name: Initialize PDM in package directory + run: | + # Make sure we're working with a properly initialized PDM project + cd ${{ inputs.package_dir }} + + # Create pdm.lock if it doesn't exist + if [ ! -f "pdm.lock" ]; then + echo "No pdm.lock found, initializing PDM project..." + pdm lock + fi + + - name: Set version in package + run: | + cd ${{ inputs.package_dir }} + # Replace pdm bump with direct edit of pyproject.toml + if [[ "$OSTYPE" == "darwin"* ]]; then + # macOS version of sed needs an empty string for -i + sed -i '' "s/version = \".*\"/version = \"$VERSION\"/" pyproject.toml + else + # Linux version + sed -i "s/version = \".*\"/version = \"$VERSION\"/" pyproject.toml + fi + # Verify version was updated + echo "Updated version in pyproject.toml:" + grep "version =" pyproject.toml + + # Conditional step for lume binary download (only for pylume package) + - name: Download and setup lume binary + if: inputs.is_lume_package + run: | + # Install required packages + pip install requests + + # Create a simple Python script for better error handling + cat > get_lume_version.py << 'EOF' + import requests, re, json, sys + try: + response = requests.get('https://api.github.com/repos/trycua/lume/releases/latest') + sys.stderr.write(f"API Status Code: {response.status_code}\n") + sys.stderr.write(f"API Response: {response.text}\n") + data = json.loads(response.text) + if 'tag_name' not in data: + sys.stderr.write(f"Warning: tag_name not found in API response. Keys: {list(data.keys())}\n") + print('0.1.9') + else: + tag_name = data['tag_name'] + match = re.match(r'v(\d+\.\d+\.\d+)', tag_name) + if match: + print(match.group(1)) + else: + sys.stderr.write("Error: Could not parse version from tag\n") + print('0.1.9') + except Exception as e: + sys.stderr.write(f"Error fetching release info: {str(e)}\n") + print('0.1.9') + EOF + + # Execute the script to get the version + LUME_VERSION=$(python get_lume_version.py) + echo "Using lume version: $LUME_VERSION" + + # Create a temporary directory for extraction + mkdir -p temp_lume + + # Download the lume release (silently) + echo "Downloading lume version v${LUME_VERSION}..." + curl -sL "https://github.com/trycua/lume/releases/download/v${LUME_VERSION}/lume.tar.gz" -o temp_lume/lume.tar.gz + + # Extract the tar file (ignore ownership and suppress warnings) + cd temp_lume && tar --no-same-owner -xzf lume.tar.gz + + # Make the binary executable + chmod +x lume + + # Copy the lume binary to the correct location in the pylume package + mkdir -p "${GITHUB_WORKSPACE}/${{ inputs.package_dir }}/pylume" + cp lume "${GITHUB_WORKSPACE}/${{ inputs.package_dir }}/pylume/lume" + + # Verify the binary exists and is executable + test -x "${GITHUB_WORKSPACE}/${{ inputs.package_dir }}/pylume/lume" || { echo "lume binary not found or not executable"; exit 1; } + + # Cleanup + cd "${GITHUB_WORKSPACE}" && rm -rf temp_lume + + # Save the lume version for reference + echo "LUME_VERSION=${LUME_VERSION}" >> $GITHUB_ENV + + - name: Build and publish + env: + PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} + run: | + cd ${{ inputs.package_dir }} + # Build with PDM + pdm build + + # For pylume package, verify the binary is in the wheel + if [ "${{ inputs.is_lume_package }}" = "true" ]; then + python -m pip install wheel + wheel unpack dist/*.whl --dest temp_wheel + echo "Listing contents of wheel directory:" + find temp_wheel -type f + test -f temp_wheel/pylume-*/pylume/lume || { echo "lume binary not found in wheel"; exit 1; } + rm -rf temp_wheel + echo "Publishing ${{ inputs.base_package_name }} ${VERSION} with lume ${LUME_VERSION}" + else + echo "Publishing ${{ inputs.base_package_name }} ${VERSION}" + fi + + # Install and use twine directly instead of PDM publish + echo "Installing twine for direct publishing..." + pip install twine + + echo "Publishing to PyPI using twine..." + TWINE_USERNAME="__token__" TWINE_PASSWORD="$PYPI_TOKEN" python -m twine upload dist/* + + # Save the wheel file path for the release + WHEEL_FILE=$(ls dist/*.whl | head -1) + echo "WHEEL_FILE=${WHEEL_FILE}" >> $GITHUB_ENV + + - name: Prepare Simple Release Notes + if: startsWith(github.ref, 'refs/tags/') + run: | + # Create release notes based on package type + echo "# ${{ inputs.base_package_name }} v${VERSION}" > release_notes.md + echo "" >> release_notes.md + + if [ "${{ inputs.package_name }}" = "pylume" ]; then + echo "## Python SDK for lume - run macOS and Linux VMs on Apple Silicon" >> release_notes.md + echo "" >> release_notes.md + echo "This package provides Python bindings for the lume virtualization tool." >> release_notes.md + echo "" >> release_notes.md + echo "## Dependencies" >> release_notes.md + echo "* lume binary: v${LUME_VERSION}" >> release_notes.md + elif [ "${{ inputs.package_name }}" = "computer" ]; then + echo "## Computer control library for the Computer Universal Automation (CUA) project" >> release_notes.md + echo "" >> release_notes.md + echo "## Dependencies" >> release_notes.md + echo "* pylume: ${PYLUME_VERSION:-latest}" >> release_notes.md + elif [ "${{ inputs.package_name }}" = "agent" ]; then + echo "## Dependencies" >> release_notes.md + echo "* cua-computer: ${COMPUTER_VERSION:-latest}" >> release_notes.md + echo "* cua-som: ${SOM_VERSION:-latest}" >> release_notes.md + echo "" >> release_notes.md + echo "## Installation Options" >> release_notes.md + echo "" >> release_notes.md + echo "### Basic installation with Anthropic" >> release_notes.md + echo '```bash' >> release_notes.md + echo "pip install cua-agent[anthropic]==${VERSION}" >> release_notes.md + echo '```' >> release_notes.md + echo "" >> release_notes.md + echo "### With SOM (recommended)" >> release_notes.md + echo '```bash' >> release_notes.md + echo "pip install cua-agent[som]==${VERSION}" >> release_notes.md + echo '```' >> release_notes.md + echo "" >> release_notes.md + echo "### All features" >> release_notes.md + echo '```bash' >> release_notes.md + echo "pip install cua-agent[all]==${VERSION}" >> release_notes.md + echo '```' >> release_notes.md + elif [ "${{ inputs.package_name }}" = "som" ]; then + echo "## Computer Vision and OCR library for detecting and analyzing UI elements" >> release_notes.md + echo "" >> release_notes.md + echo "This package provides enhanced UI understanding capabilities through computer vision and OCR." >> release_notes.md + elif [ "${{ inputs.package_name }}" = "computer-server" ]; then + echo "## Computer Server for the Computer Universal Automation (CUA) project" >> release_notes.md + echo "" >> release_notes.md + echo "A FastAPI-based server implementation for computer control." >> release_notes.md + echo "" >> release_notes.md + echo "## Dependencies" >> release_notes.md + echo "* cua-computer: ${COMPUTER_VERSION:-latest}" >> release_notes.md + echo "" >> release_notes.md + echo "## Usage" >> release_notes.md + echo '```bash' >> release_notes.md + echo "# Run the server" >> release_notes.md + echo "cua-computer-server" >> release_notes.md + echo '```' >> release_notes.md + fi + + # Add installation section if not agent (which has its own installation section) + if [ "${{ inputs.package_name }}" != "agent" ]; then + echo "" >> release_notes.md + echo "## Installation" >> release_notes.md + echo '```bash' >> release_notes.md + echo "pip install ${{ inputs.base_package_name }}==${VERSION}" >> release_notes.md + echo '```' >> release_notes.md + fi + + echo "Release notes created:" + cat release_notes.md + + - name: Create GitHub Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + name: "${{ inputs.base_package_name }} v${{ env.VERSION }}" + body_path: release_notes.md + files: ${{ inputs.package_dir }}/${{ env.WHEEL_FILE }} + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 244c29a3..0d151783 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,175 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +!libs/lume/scripts/build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Scripts +server/scripts/ + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# Ruff stuff: +.ruff_cache/ + +# PyPI configuration file +.pypirc + +# Conda +.conda/ + +# Local environment +.env.local + +# macOS DS_Store +.DS_Store + +weights/ +weights/icon_detect/ +weights/icon_detect/model.pt +weights/icon_detect/model.pt.zip +weights/icon_detect/model.pt.zip.part* + +libs/omniparser/weights/icon_detect/model.pt + +# Example test data and output +examples/test_data/ +examples/output/ + +/screenshots/ + +/experiments/ + +/logs/ + # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -.DS_Store - ## User settings xcuserdata/ @@ -29,8 +195,7 @@ playground.xcworkspace # # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata # hence it is not needed unless you have added a package configuration file to your project -# .swiftpm - +.swiftpm/ .build/ # CocoaPods @@ -48,7 +213,6 @@ playground.xcworkspace # # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts - Carthage/Build/ # fastlane @@ -57,20 +221,22 @@ Carthage/Build/ # Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/#source-control - fastlane/report.xml fastlane/Preview.html fastlane/screenshots/**/*.png fastlane/test_output -# Local environment variables -.env.local - # Ignore folder ignore # .release .release/ -# Swift Package Manager -.swiftpm/ +# Shared folder +shared + +# Trajectories +trajectories/ + +# Installation ID Storage +.storage/ \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 4f5b8ce7..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,241 +0,0 @@ -{ - "configurations": [ - { - "type": "bashdb", - "request": "launch", - "name": "Bash-Debug (select script from list of sh files)", - "cwd": "${workspaceFolder}", - "program": "${command:SelectScriptName}", - "pathBash": "/opt/homebrew/bin/bash", - "args": [] - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "serve" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume serve", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "create", - "macos-vm", - "--cpu", - "4", - "--memory", - "4GB", - "--disk-size", - "40GB", - "--ipsw", - "/Users//Downloads/UniversalMac_15.2_24C101_Restore.ipsw" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume create --os macos --ipsw 'path/to/ipsw' (macos)", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "create", - "macos-vm", - "--cpu", - "4", - "--memory", - "4GB", - "--disk-size", - "20GB", - "--ipsw", - "latest" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume create --os macos --ipsw latest (macos)", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "create", - "linux-vm", - "--os", - "linux", - "--cpu", - "4", - "--memory", - "4GB", - "--disk-size", - "20GB" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume create --os linux (linux)", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "pull", - "macos-sequoia-vanilla:15.2", - "--name", - "macos-vm-cloned" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume pull (macos)", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "run", - "macos-vm", - "--shared-dir", - "/Users//repos/trycua/lume/shared_folder:rw", - "--start-vnc" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume run (macos)", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "run", - "linux-vm", - "--start-vnc", - "--mount", - "/Users//Downloads/ubuntu-24.04.1-live-server-arm64.iso" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume run with setup mount (linux)", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "run", - "linux-vm", - "--start-vnc" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume run (linux)", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "get", - "macos-vm" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume get (macos)", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "ls" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume ls", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "images" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume images", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "sourceLanguages": [ - "swift" - ], - "args": [ - "stop", - "macos-vm" - ], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume stop (macos)", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "build-debug" - }, - { - "type": "lldb", - "request": "launch", - "args": [], - "cwd": "${workspaceFolder:lume}", - "name": "Debug lume", - "program": "${workspaceFolder:lume}/.build/debug/lume", - "preLaunchTask": "swift: Build Debug lume" - }, - { - "type": "lldb", - "request": "launch", - "args": [], - "cwd": "${workspaceFolder:lume}", - "name": "Release lume", - "program": "${workspaceFolder:lume}/.build/release/lume", - "preLaunchTask": "swift: Build Release lume" - } - ] -} \ No newline at end of file diff --git a/.vscode/lume.code-workspace b/.vscode/lume.code-workspace new file mode 100644 index 00000000..a6d28d7e --- /dev/null +++ b/.vscode/lume.code-workspace @@ -0,0 +1,319 @@ +{ + "folders": [ + { + "name": "lume", + "path": "../libs/lume" + } + ], + "settings": { + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true + }, + "swift.path.swift_driver_bin": "/usr/bin/swift", + "swift.enableLanguageServer": true, + "files.associations": { + "*.swift": "swift" + }, + "[swift]": { + "editor.formatOnSave": true, + "editor.detectIndentation": true, + "editor.tabSize": 4 + }, + "swift.path": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin", + "swift.swiftEnvironmentVariables": { + "DEVELOPER_DIR": "/Applications/Xcode.app" + }, + "lldb.library": "/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/LLDB", + "lldb.launch.expressions": "native" + }, + "tasks": { + "version": "2.0.0", + "tasks": [ + { + "label": "build-debug", + "type": "shell", + "command": "${workspaceFolder:lume}/scripts/build/build-debug.sh", + "options": { + "cwd": "${workspaceFolder:lume}" + }, + "group": { + "kind": "build", + "isDefault": true + }, + "presentation": { + "reveal": "silent", + "panel": "shared" + }, + "problemMatcher": [] + }, + { + "label": "swift: Build Debug lume", + "type": "shell", + "command": "${workspaceFolder:lume}/scripts/build/build-debug.sh", + "options": { + "cwd": "${workspaceFolder:lume}" + }, + "group": "build", + "presentation": { + "reveal": "silent", + "panel": "shared" + }, + "problemMatcher": [] + } + ] + }, + "launch": { + "configurations": [ + { + "type": "bashdb", + "request": "launch", + "name": "Bash-Debug (select script from list of sh files)", + "cwd": "${workspaceFolder}", + "program": "${command:SelectScriptName}", + "pathBash": "/opt/homebrew/bin/bash", + "args": [] + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "serve" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume serve", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "create", + "macos-vm", + "--cpu", + "4", + "--memory", + "4GB", + "--disk-size", + "40GB", + "--ipsw", + "/Users//Downloads/UniversalMac_15.2_24C101_Restore.ipsw" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume create --os macos --ipsw 'path/to/ipsw' (macos)", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "create", + "macos-vm", + "--cpu", + "4", + "--memory", + "4GB", + "--disk-size", + "20GB", + "--ipsw", + "latest" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume create --os macos --ipsw latest (macos)", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "create", + "linux-vm", + "--os", + "linux", + "--cpu", + "4", + "--memory", + "4GB", + "--disk-size", + "20GB" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume create --os linux (linux)", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "pull", + "macos-sequoia-vanilla:15.2", + "--name", + "macos-vm-cloned" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume pull (macos)", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "run", + "macos-vm", + "--shared-dir", + "/Users//repos/trycua/lume/shared_folder:rw", + "--start-vnc" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume run (macos)", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "run", + "linux-vm", + "--start-vnc", + "--mount", + "/Users//Downloads/ubuntu-24.04.1-live-server-arm64.iso" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume run with setup mount (linux)", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "run", + "linux-vm", + "--start-vnc" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume run (linux)", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "get", + "macos-vm" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume get (macos)", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "ls" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume ls", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "images" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume images", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "sourceLanguages": [ + "swift" + ], + "args": [ + "stop", + "macos-vm" + ], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume stop (macos)", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "build-debug" + }, + { + "type": "lldb", + "request": "launch", + "args": [], + "cwd": "${workspaceFolder:lume}", + "name": "Debug lume", + "program": "${workspaceFolder:lume}/.build/debug/lume", + "preLaunchTask": "swift: Build Debug lume" + }, + { + "type": "lldb", + "request": "launch", + "args": [], + "cwd": "${workspaceFolder:lume}", + "name": "Release lume", + "program": "${workspaceFolder:lume}/.build/release/lume", + "preLaunchTask": "swift: Build Release lume" + }, + { + "type": "bashdb", + "request": "launch", + "name": "Bash-Debug (select script)", + "cwd": "${workspaceFolder:lume}", + "program": "${command:SelectScriptName}", + "pathBash": "/opt/homebrew/bin/bash", + "args": [] + } + ] + } +} \ No newline at end of file diff --git a/.vscode/py.code-workspace b/.vscode/py.code-workspace new file mode 100644 index 00000000..6adef38b --- /dev/null +++ b/.vscode/py.code-workspace @@ -0,0 +1,292 @@ +{ + "folders": [ + { + "name": "cua-root", + "path": ".." + }, + { + "name": "computer", + "path": "../libs/computer" + }, + { + "name": "agent", + "path": "../libs/agent" + }, + { + "name": "som", + "path": "../libs/som" + }, + { + "name": "computer-server", + "path": "../libs/computer-server" + }, + { + "name": "pylume", + "path": "../libs/pylume" + }, + { + "name": "core", + "path": "../libs/core" + } + ], + "settings": { + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/__pycache__": true, + "**/.pytest_cache": true, + "**/*.pyc": true + }, + "python.testing.pytestEnabled": true, + "python.testing.unittestEnabled": false, + "python.testing.nosetestsEnabled": false, + "python.testing.pytestArgs": [ + "libs" + ], + "python.analysis.extraPaths": [ + "${workspaceFolder:cua-root}/libs/core", + "${workspaceFolder:cua-root}/libs/computer", + "${workspaceFolder:cua-root}/libs/agent", + "${workspaceFolder:cua-root}/libs/som", + "${workspaceFolder:cua-root}/libs/pylume", + "${workspaceFolder:cua-root}/.vscode/typings" + ], + "python.envFile": "${workspaceFolder:cua-root}/.env", + "python.defaultInterpreterPath": "${workspaceFolder:cua-root}/.venv/bin/python", + "python.analysis.diagnosticMode": "workspace", + "python.analysis.typeCheckingMode": "basic", + "python.analysis.autoSearchPaths": true, + "python.analysis.stubPath": "${workspaceFolder:cua-root}/.vscode/typings", + "python.analysis.indexing": false, + "python.analysis.exclude": [ + "**/node_modules/**", + "**/__pycache__/**", + "**/.*/**", + "**/venv/**", + "**/.venv/**", + "**/dist/**", + "**/build/**", + ".pdm-build/**", + "**/.git/**", + "examples/**", + "notebooks/**", + "logs/**", + "screenshots/**" + ], + "python.analysis.packageIndexDepths": [ + { + "name": "computer", + "depth": 2 + }, + { + "name": "agent", + "depth": 2 + }, + { + "name": "som", + "depth": 2 + }, + { + "name": "pylume", + "depth": 2 + }, + { + "name": "core", + "depth": 2 + } + ], + "python.autoComplete.extraPaths": [ + "${workspaceFolder:cua-root}/libs/core", + "${workspaceFolder:cua-root}/libs/computer", + "${workspaceFolder:cua-root}/libs/agent", + "${workspaceFolder:cua-root}/libs/som", + "${workspaceFolder:cua-root}/libs/pylume" + ], + "python.languageServer": "Pylance", + "[python]": { + "editor.formatOnSave": true, + "editor.defaultFormatter": "ms-python.black-formatter", + "editor.codeActionsOnSave": { + "source.organizeImports": "explicit" + } + }, + "files.associations": { + "examples/computer_examples.py": "python", + "examples/agent_examples.py": "python" + }, + "python.interpreterPaths": { + "examples/computer_examples.py": "${workspaceFolder}/libs/computer/.venv/bin/python", + "examples/agent_examples.py": "${workspaceFolder}/libs/agent/.venv/bin/python" + } + }, + "tasks": { + "version": "2.0.0", + "tasks": [ + { + "label": "Build Dependencies", + "type": "shell", + "command": "${workspaceFolder}/scripts/build.sh", + "presentation": { + "reveal": "always", + "panel": "new", + "clear": true + }, + "group": { + "kind": "build", + "isDefault": true + }, + "options": { + "shell": { + "executable": "/bin/bash", + "args": ["-l", "-c"] + } + }, + "problemMatcher": [] + } + ] + }, + "launch": { + "version": "0.2.0", + "configurations": [ + { + "name": "Run Computer Examples", + "type": "debugpy", + "request": "launch", + "program": "examples/computer_examples.py", + "console": "integratedTerminal", + "justMyCode": true, + "python": "${workspaceFolder:cua-root}/.venv/bin/python", + "cwd": "${workspaceFolder:cua-root}", + "env": { + "PYTHONPATH": "${workspaceFolder:cua-root}/libs/core:${workspaceFolder:cua-root}/libs/computer:${workspaceFolder:cua-root}/libs/agent:${workspaceFolder:cua-root}/libs/som:${workspaceFolder:cua-root}/libs/pylume" + } + }, + { + "name": "Run Agent Examples", + "type": "debugpy", + "request": "launch", + "program": "examples/agent_examples.py", + "console": "integratedTerminal", + "justMyCode": false, + "python": "${workspaceFolder:cua-root}/.venv/bin/python", + "cwd": "${workspaceFolder:cua-root}", + "env": { + "PYTHONPATH": "${workspaceFolder:cua-root}/libs/core:${workspaceFolder:cua-root}/libs/computer:${workspaceFolder:cua-root}/libs/agent:${workspaceFolder:cua-root}/libs/som:${workspaceFolder:cua-root}/libs/pylume" + } + }, + { + "name": "Run PyLume Examples", + "type": "debugpy", + "request": "launch", + "program": "examples/pylume_examples.py", + "console": "integratedTerminal", + "justMyCode": true, + "python": "${workspaceFolder:cua-root}/.venv/bin/python", + "cwd": "${workspaceFolder:cua-root}", + "env": { + "PYTHONPATH": "${workspaceFolder:cua-root}/libs/core:${workspaceFolder:cua-root}/libs/computer:${workspaceFolder:cua-root}/libs/agent:${workspaceFolder:cua-root}/libs/som:${workspaceFolder:cua-root}/libs/pylume" + } + }, + { + "name": "SOM: Run Experiments (No OCR)", + "type": "debugpy", + "request": "launch", + "program": "examples/som_examples.py", + "args": [ + "examples/test_data", + "--output-dir", "examples/output", + "--ocr", "none", + "--mode", "experiment" + ], + "console": "integratedTerminal", + "justMyCode": false, + "python": "${workspaceFolder:cua-root}/.venv/bin/python", + "cwd": "${workspaceFolder:cua-root}", + "env": { + "PYTHONPATH": "${workspaceFolder:cua-root}/libs/core:${workspaceFolder:cua-root}/libs/computer:${workspaceFolder:cua-root}/libs/agent:${workspaceFolder:cua-root}/libs/som:${workspaceFolder:cua-root}/libs/pylume" + } + }, + { + "name": "SOM: Run Experiments (EasyOCR)", + "type": "debugpy", + "request": "launch", + "program": "examples/som_examples.py", + "args": [ + "examples/test_data", + "--output-dir", "examples/output", + "--ocr", "easyocr", + "--mode", "experiment" + ], + "console": "integratedTerminal", + "justMyCode": false, + "python": "${workspaceFolder:cua-root}/.venv/bin/python", + "cwd": "${workspaceFolder:cua-root}", + "env": { + "PYTHONPATH": "${workspaceFolder:cua-root}/libs/core:${workspaceFolder:cua-root}/libs/computer:${workspaceFolder:cua-root}/libs/agent:${workspaceFolder:cua-root}/libs/som:${workspaceFolder:cua-root}/libs/pylume" + } + }, + { + "name": "Run Computer Server", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/libs/computer-server/run_server.py", + "console": "integratedTerminal", + "justMyCode": true, + "python": "${workspaceFolder:cua-root}/.venv/bin/python", + "cwd": "${workspaceFolder:cua-root}", + "env": { + "PYTHONPATH": "${workspaceFolder:cua-root}/libs/core:${workspaceFolder:cua-root}/libs/computer:${workspaceFolder:cua-root}/libs/agent:${workspaceFolder:cua-root}/libs/som:${workspaceFolder:cua-root}/libs/pylume" + } + }, + { + "name": "Run Computer Server with Args", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/libs/computer-server/run_server.py", + "args": [ + "--host", "0.0.0.0", + "--port", "8000", + "--log-level", "debug" + ], + "console": "integratedTerminal", + "justMyCode": false, + "python": "${workspaceFolder:cua-root}/.venv/bin/python", + "cwd": "${workspaceFolder:cua-root}", + "env": { + "PYTHONPATH": "${workspaceFolder:cua-root}/libs/core:${workspaceFolder:cua-root}/libs/computer-server" + } + } + ] + }, + "compounds": [ + { + "name": "Run Computer Examples + Server", + "configurations": ["Run Computer Examples", "Run Computer Server"], + "stopAll": true, + "presentation": { + "group": "Computer", + "order": 1 + } + }, + { + "name": "Run Server with Keep-Alive Client", + "configurations": ["Run Computer Server", "Test Server Connection (Keep Alive)"], + "stopAll": true, + "presentation": { + "group": "Computer", + "order": 2 + } + } + ], + "inputs": [ + { + "id": "imagePath", + "type": "promptString", + "description": "Path to the image file or directory for icon detection", + "default": "${workspaceFolder}/examples/test_data" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 0640efba..00000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build-debug", - "type": "shell", - "command": "${workspaceFolder:lume}/scripts/build/build-debug.sh", - "group": { - "kind": "build", - "isDefault": true - }, - "presentation": { - "reveal": "silent" - }, - "problemMatcher": [] - } - ] -} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6c51a416..5a479add 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# Contributing to lume +# Contributing to cua -We deeply appreciate your interest in contributing to lume! Whether you're reporting bugs, suggesting enhancements, improving docs, or submitting pull requests, your contributions help improve the project for everyone. +We deeply appreciate your interest in contributing to cua! Whether you're reporting bugs, suggesting enhancements, improving docs, or submitting pull requests, your contributions help improve the project for everyone. ## Reporting Bugs @@ -34,6 +34,6 @@ Documentation improvements are always welcome. You can: - Improve API documentation - Add tutorials or guides -For detailed instructions on setting up your development environment and submitting code contributions, please see our [Development.md](docs/Development.md) guide. +For detailed instructions on setting up your development environment and submitting code contributions, please see our [Developer-Guide.md](docs/Developer-Guide.md) guide. Feel free to join our [Discord community](https://discord.com/invite/mVnXXpdE85) to discuss ideas or get help with your contributions. \ No newline at end of file diff --git a/LICENSE b/LICENSE.md similarity index 97% rename from LICENSE rename to LICENSE.md index dc94027f..3ae3445c 100644 --- a/LICENSE +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 trycua +Copyright (c) 2025 trycua Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 438380a8..f390d869 100644 --- a/README.md +++ b/README.md @@ -1,145 +1,82 @@
-

-
- - - - Shows my svg - -
+ + + + Cua logo + - [![Swift 6](https://img.shields.io/badge/Swift_6-F54A2A?logo=swift&logoColor=white&labelColor=F54A2A)](#) + + + [![Python](https://img.shields.io/badge/Python-333333?logo=python&logoColor=white&labelColor=333333)](#) + [![Swift](https://img.shields.io/badge/Swift-F05138?logo=swift&logoColor=white)](#) [![macOS](https://img.shields.io/badge/macOS-000000?logo=apple&logoColor=F0F0F0)](#) - [![Homebrew](https://img.shields.io/badge/Homebrew-FBB040?logo=homebrew&logoColor=fff)](#install) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?&logo=discord&logoColor=white)](https://discord.com/invite/mVnXXpdE85) - [![All Contributors](https://img.shields.io/github/all-contributors/trycua/lume?color=ee8449&style=flat-square)](#contributors) -

+# Cua -**lume** is a lightweight Command Line Interface and local API server to create, run and manage macOS and Linux virtual machines (VMs) with near-native performance on Apple Silicon, using Apple's `Virtualization.Framework`. +Create and run high-performance macOS and Linux VMs on Apple Silicon, with built-in support for AI agents. -### Run prebuilt macOS images in just 1 step +## Libraries -
-lume cli -
+| Library | Description | Installation | Version | +|---------|-------------|--------------|---------| +| [**Lume**](./libs/lume/README.md) | CLI for running macOS/Linux VMs with near-native performance using Apple's `Virtualization.Framework`. | `brew install lume` | [![brew](https://img.shields.io/badge/brew-0.1.10-333333)](https://formulae.brew.sh/formula/lume) | +| [**Computer**](./libs/computer/README.md) | Computer-Use Interface (CUI) framework for interacting with macOS/Linux sandboxes | `pip install cua-computer` | [![PyPI](https://img.shields.io/pypi/v/cua-computer?color=333333)](https://pypi.org/project/cua-computer/) | +| [**Agent**](./libs/agent/README.md) | Computer-Use Agent (CUA) framework for running agentic workflows in macOS/Linux dedicated sandboxes | `pip install cua-agent` | [![PyPI](https://img.shields.io/pypi/v/cua-agent?color=333333)](https://pypi.org/project/cua-agent/) | +## Lume -```bash -lume run macos-sequoia-vanilla:latest -``` - -For a python interface, check out [pylume](https://github.com/trycua/pylume). - -## Usage - -```bash -lume - -Commands: - lume create Create a new macOS or Linux VM - lume run Run a VM - lume ls List all VMs - lume get Get detailed information about a VM - lume set Modify VM configuration - lume stop Stop a running VM - lume delete Delete a VM - lume pull Pull a macOS image from container registry - lume clone Clone an existing VM - lume images List available macOS images in local cache - lume ipsw Get the latest macOS restore image URL - lume prune Remove cached images - lume serve Start the API server - -Options: - --help Show help [boolean] - --version Show version number [boolean] - -Command Options: - create: - --os Operating system to install (macOS or linux, default: macOS) - --cpu Number of CPU cores (default: 4) - --memory Memory size, e.g., 8GB (default: 4GB) - --disk-size Disk size, e.g., 50GB (default: 40GB) - --display Display resolution (default: 1024x768) - --ipsw Path to IPSW file or 'latest' for macOS VMs - - run: - --no-display Do not start the VNC client app - --shared-dir Share directory with VM (format: path[:ro|rw]) - --mount For Linux VMs only, attach a read-only disk image - --registry Container registry URL (default: ghcr.io) - --organization Organization to pull from (default: trycua) - --vnc-port Port to use for the VNC server (default: 0 for auto-assign) - --recovery-mode For MacOS VMs only, start VM in recovery mode (default: false) - - set: - --cpu New number of CPU cores (e.g., 4) - --memory New memory size (e.g., 8192MB or 8GB) - --disk-size New disk size (e.g., 40960MB or 40GB) - --display New display resolution in format WIDTHxHEIGHT (e.g., 1024x768) - - delete: - --force Force deletion without confirmation - - pull: - --registry Container registry URL (default: ghcr.io) - --organization Organization to pull from (default: trycua) - - serve: - --port Port to listen on (default: 3000) -``` - -## Install - -```bash -brew tap trycua/lume -brew install lume -``` - -You can also download the `lume.pkg.tar.gz` archive from the [latest release](https://github.com/trycua/lume/releases), extract it, and install the package manually. - -## Prebuilt Images - -Pre-built images are available in the registry [ghcr.io/trycua](https://github.com/orgs/trycua/packages). -These images come with an SSH server pre-configured and auto-login enabled. - -For the security of your VM, change the default password `lume` immediately after your first login. - -| Image | Tag | Description | Size | -|-------|------------|-------------|------| -| `macos-sequoia-vanilla` | `latest`, `15.2` | macOS Sequoia 15.2 | 40GB | -| `macos-sequoia-xcode` | `latest`, `15.2` | macOS Sequoia 15.2 with Xcode command line tools | 50GB | -| `ubuntu-noble-vanilla` | `latest`, `24.04.1` | [Ubuntu Server for ARM 24.04.1 LTS](https://ubuntu.com/download/server/arm) with Ubuntu Desktop | 20GB | - -For additional disk space, resize the VM disk after pulling the image using the `lume set --disk-size ` command. - -## Local API Server - -`lume` exposes a local HTTP API server that listens on `http://localhost:3000/lume`, enabling automated management of VMs. - -```bash -lume serve -``` - -For detailed API documentation, please refer to [API Reference](docs/API-Reference.md). +**Originally looking for Lume?** If you're here for the original Lume project, it's now part of this monorepo. Simply install with `brew` and refer to its [documentation](./libs/lume/README.md). ## Docs -- [API Reference](docs/API-Reference.md) -- [Development](docs/Development.md) -- [FAQ](docs/FAQ.md) +For optimal onboarding, we recommend starting with the [Computer](./libs/computer/README.md) documentation to cover the core functionality of the Computer sandbox, then exploring the [Agent](./libs/agent/README.md) documentation to understand Cua's AI agent capabilities, and finally working through the Notebook examples to try out the Computer-Use interface and agent. + +- [Computer](./libs/computer/README.md) +- [Agent](./libs/agent/README.md) +- [Notebooks](./notebooks/) + +## Demos + +Demos of the Computer-Use Agent in action. Share your most impressive demos in Cua's [Discord community](https://discord.com/invite/mVnXXpdE85)! + +
+AI-Gradio: multi-app workflow requiring browser, VS Code and terminal access +
+
+ +
+ +
+ +
+Notebook: Fix GitHub issue in Cursor +
+
+ +
+ +
+ +## Accessory Libraries + +| Library | Description | Installation | Version | +|---------|-------------|--------------|---------| +| [**Core**](./libs/core/README.md) | Core functionality and utilities used by other Cua packages | `pip install cua-core` | [![PyPI](https://img.shields.io/pypi/v/cua-core?color=333333)](https://pypi.org/project/cua-core/) | +| [**PyLume**](./libs/pylume/README.md) | Python bindings for Lume | `pip install pylume` | [![PyPI](https://img.shields.io/pypi/v/pylume?color=333333)](https://pypi.org/project/pylume/) | +| [**Computer Server**](./libs/computer-server/README.md) | Server component for the Computer-Use Interface (CUI) framework | `pip install cua-computer-server` | [![PyPI](https://img.shields.io/pypi/v/cua-computer-server?color=333333)](https://pypi.org/project/cua-computer-server/) | +| [**SOM**](./libs/som/README.md) | Self-of-Mark library for Agent | `pip install cua-som` | [![PyPI](https://img.shields.io/pypi/v/cua-som?color=333333)](https://pypi.org/project/cua-som/) | ## Contributing -We welcome and greatly appreciate contributions to lume! Whether you're improving documentation, adding new features, fixing bugs, or adding new VM images, your efforts help make lume better for everyone. For detailed instructions on how to contribute, please refer to our [Contributing Guidelines](CONTRIBUTING.md). +We welcome and greatly appreciate contributions to Cua! Whether you're improving documentation, adding new features, fixing bugs, or adding new VM images, your efforts help make lume better for everyone. For detailed instructions on how to contribute, please refer to our [Contributing Guidelines](CONTRIBUTING.md). Join our [Discord community](https://discord.com/invite/mVnXXpdE85) to discuss ideas or get assistance. ## License -lume is open-sourced under the MIT License - see the [LICENSE](LICENSE) file for details. +Cua is open-sourced under the MIT License - see the [LICENSE](LICENSE) file for details. ## Trademarks @@ -147,7 +84,7 @@ Apple, macOS, and Apple Silicon are trademarks of Apple Inc. Ubuntu and Canonica ## Stargazers over time -[![Stargazers over time](https://starchart.cc/trycua/lume.svg?variant=adaptive)](https://starchart.cc/trycua/lume) +[![Stargazers over time](https://starchart.cc/trycua/cua.svg?variant=adaptive)](https://starchart.cc/trycua/cua) ## Contributors diff --git a/docs/Developer-Guide.md b/docs/Developer-Guide.md new file mode 100644 index 00000000..6fd95fce --- /dev/null +++ b/docs/Developer-Guide.md @@ -0,0 +1,147 @@ +## Developer Guide + +### Project Structure + +The project is organized as a monorepo with these main packages: +- `libs/core/` - Base package with telemetry support +- `libs/pylume/` - Python bindings for Lume +- `libs/computer/` - Core computer interaction library +- `libs/agent/` - AI agent library with multi-provider support +- `libs/som/` - Computer vision and NLP processing library (formerly omniparser) +- `libs/computer-server/` - Server implementation for computer control +- `libs/lume/` - Swift implementation for enhanced macOS integration + +Each package has its own virtual environment and dependencies, managed through PDM. + +### Local Development Setup + +1. Clone the repository: +```bash +git clone https://github.com/trycua/cua.git +cd cua +``` + +2. Create a `.env.local` file in the root directory with your API keys: +```bash +# Required for Anthropic provider +ANTHROPIC_API_KEY=your_anthropic_key_here + +# Required for OpenAI provider +OPENAI_API_KEY=your_openai_key_here +``` + +3. Run the build script to set up all packages: +```bash +./scripts/build.sh +``` + +This will: +- Create a virtual environment for the project +- Install all packages in development mode +- Set up the correct Python path +- Install development tools + +4. Open the workspace in VSCode or Cursor: +```bash +# Using VSCode or Cursor +code .vscode/py.code-workspace + +# For Lume (Swift) development +code .vscode/lume.code-workspace +``` + +Using the workspace file is strongly recommended as it: +- Sets up correct Python environments for each package +- Configures proper import paths +- Enables debugging configurations +- Maintains consistent settings across packages + +### Cleanup and Reset + +If you need to clean up the environment and start fresh: + +```bash +./scripts/cleanup.sh +``` + +This will: +- Remove all virtual environments +- Clean Python cache files and directories +- Remove build artifacts +- Clean PDM-related files +- Reset environment configurations + +### Package Virtual Environments + +The build script creates a shared virtual environment for all packages. The workspace configuration automatically handles import paths with the correct Python path settings. + +### Running Examples + +The Python workspace includes launch configurations for all packages: + +- "Run Computer Examples" - Runs computer examples +- "Run Computer API Server" - Runs the computer-server +- "Run Omni Agent Examples" - Runs agent examples +- "SOM" configurations - Various settings for running SOM + +To run examples: +1. Open the workspace file (`.vscode/py.code-workspace`) +2. Press F5 or use the Run/Debug view +3. Select the desired configuration + +The workspace also includes compound launch configurations: +- "Run Computer Examples + Server" - Runs both the Computer Examples and Server simultaneously + +## Release and Publishing Process + +This monorepo contains multiple Python packages that can be published to PyPI. The packages +have dependencies on each other in the following order: + +1. `pylume` - Base package for VM management +2. `cua-computer` - Computer control interface (depends on pylume) +3. `cua-som` - Parser for UI elements (independent, formerly omniparser) +4. `cua-agent` - AI agent (depends on cua-computer and optionally cua-som) +5. `computer-server` - Server component installed on the sandbox + +#### Workflow Structure + +The publishing process is managed by these GitHub workflow files: + +- **Package-specific workflows**: + - `.github/workflows/publish-pylume.yml` + - `.github/workflows/publish-computer.yml` + - `.github/workflows/publish-som.yml` + - `.github/workflows/publish-agent.yml` + - `.github/workflows/publish-computer-server.yml` + +- **Coordinator workflow**: + - `.github/workflows/publish-all.yml` - Manages global releases and manual selections + +### Version Management + +#### Special Considerations for Pylume + +The `pylume` package requires special handling as it incorporates the binary executable from the [lume repository](https://github.com/trycua/lume): + +- When releasing `pylume`, ensure the version matches a corresponding release in the lume repository +- The workflow automatically downloads the matching lume binary and includes it in the pylume package +- If you need to release a new version of pylume, make sure to coordinate with a matching lume release + +## Development Workspaces + +This monorepo includes multiple VS Code workspace configurations to optimize the development experience based on which components you're working with: + +### Available Workspace Files + +- **[py.code-workspace](.vscode/py.code-workspace)**: For Python package development (Computer, Agent, SOM, etc.) +- **[lume.code-workspace](.vscode/lume.code-workspace)**: For Swift-based Lume development + +To open a specific workspace: + +```bash +# For Python development +code .vscode/py.code-workspace + +# For Lume (Swift) development +code .vscode/lume.code-workspace +``` \ No newline at end of file diff --git a/docs/FAQ.md b/docs/FAQ.md index 9150fbb5..a342f6c0 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,55 +1,50 @@ # FAQs -### Where are the VMs stored? +### Why a local sandbox? -VMs are stored in `~/.lume`. +A local sandbox is a dedicated environment that is isolated from the rest of the system. As AI agents rapidly evolve towards 70-80% success rates on average tasks, having a controlled and secure environment becomes crucial. Cua's Computer-Use AI agents run in a local sandbox to ensure reliability, safety, and controlled execution. -### How are images cached? +Benefits of using a local sandbox rather than running the Computer-Use AI agent in the host system: -Images are cached in `~/.lume/cache`. When doing `lume pull `, it will check if the image is already cached. If not, it will download the image and cache it, removing any older versions. +- **Reliability**: The sandbox provides a reproducible environment - critical for benchmarking and debugging agent behavior. Frameworks like [OSWorld](https://github.com/xlang-ai/OSWorld), [Simular AI](https://github.com/simular-ai/Agent-S), Microsoft's [OmniTool](https://github.com/microsoft/OmniParser/tree/master/omnitool), [WindowsAgentArena](https://github.com/microsoft/WindowsAgentArena) and more are using Computer-Use AI agents running in local sandboxes. +- **Safety & Isolation**: The sandbox is isolated from the rest of the system, protecting sensitive data and system resources. As CUA agent capabilities grow, this isolation becomes increasingly important for preventing potential safety breaches. +- **Control**: The sandbox can be easily monitored and terminated if needed, providing oversight for autonomous agent operation. -### Are VM disks taking up all the disk space? +### Where are the sandbox images stored? + +Sandbox are stored in `~/.lume`, and cached images are stored in `~/.lume/cache`. + +### Which image is Computer using? + +Computer uses an optimized macOS image for Computer-Use interactions, with pre-installed apps and settings for optimal performance. +The image is available on our [ghcr registry](https://github.com/orgs/trycua/packages/container/package/macos-sequoia-cua). + +### Are Sandbox disks taking up all the disk space? No, macOS uses sparse files, which only allocate space as needed. For example, VM disks totaling 50 GB may only use 20 GB on disk. -### How do I get the latest macOS restore image URL? - -```bash -lume ipsw -``` - ### How do I delete a VM? ```bash lume delete ``` -### How to Install macOS from an IPSW Image +### How do I troubleshoot Computer not connecting to lume daemon? -#### Create a new macOS VM using the latest supported IPSW image: -Run the following command to create a new macOS virtual machine using the latest available IPSW image: +If you're experiencing connection issues between Computer and the lume daemon, it could be because the port 3000 (used by lume) is already in use by an orphaned process. You can diagnose this issue with: ```bash -lume create --os macos --ipsw latest +sudo lsof -i :3000 ``` -#### Create a new macOS VM using a specific IPSW image: -To create a macOS virtual machine from an older or specific IPSW file, first download the desired IPSW (UniversalMac) from a trusted source. - -Then, use the downloaded IPSW path: +This command will show all processes using port 3000. If you see a lume process already running, you can terminate it with: ```bash -lume create --os macos --ipsw +kill ``` -### How do I install a custom Linux image? +Where `` is the process ID shown in the output of the `lsof` command. After terminating the process, run `lume serve` again to start the lume daemon. -The process for creating a custom Linux image differs than macOS, with IPSW restore files not being used. You need to create a linux VM first, then mount a setup image file to the VM for the first boot. +### What information does Cua track? -```bash -lume create --os linux - -lume run --mount - -lume run -``` +Cua tracks anonymized usage and error report statistics; we ascribe to Posthog's approach as detailed [here](https://posthog.com/blog/open-source-telemetry-ethical). If you would like to opt out of sending anonymized info, you can set `telemetry_enabled` to false in the Computer or Agent constructor. Check out our [Telemetry](Telemetry.md) documentation for more details. diff --git a/docs/Telemetry.md b/docs/Telemetry.md new file mode 100644 index 00000000..01731287 --- /dev/null +++ b/docs/Telemetry.md @@ -0,0 +1,74 @@ +# Telemetry in CUA + +This document explains how telemetry works in CUA libraries and how you can control it. + +CUA tracks anonymized usage and error report statistics; we ascribe to Posthog's approach as detailed [here](https://posthog.com/blog/open-source-telemetry-ethical). If you would like to opt out of sending anonymized info, you can set `telemetry_enabled` to false. + +## What telemetry data we collect + +CUA libraries collect minimal anonymous usage data to help improve our software. The telemetry data we collect is specifically limited to: + +- Basic system information: + - Operating system (e.g., 'darwin', 'win32', 'linux') + - Python version (e.g., '3.10.0') +- Module initialization events: + - When a module (like 'computer' or 'agent') is imported + - Version of the module being used + +We do NOT collect: +- Personal information +- Contents of files +- Specific text being typed +- Actual screenshots or screen contents +- User-specific identifiers +- API keys +- File contents +- Application data or content +- User interactions with the computer +- Information about files being accessed + +## Controlling Telemetry + +We are committed to transparency and user control over telemetry. There are two ways to control telemetry: + +## 1. Environment Variable (Global Control) + +Telemetry is enabled by default. To disable telemetry, set the `CUA_TELEMETRY_ENABLED` environment variable to a falsy value (`0`, `false`, `no`, or `off`): + +```bash +# Disable telemetry before running your script +export CUA_TELEMETRY_ENABLED=false + +# Or as part of the command +CUA_TELEMETRY_ENABLED=1 python your_script.py + +``` +Or from Python: +```python +import os +os.environ["CUA_TELEMETRY_ENABLED"] = "false" +``` + +## 2. Instance-Level Control + +You can control telemetry for specific CUA instances by setting `telemetry_enabled` when creating them: + +```python +# Disable telemetry for a specific Computer instance +computer = Computer(telemetry_enabled=False) + +# Enable telemetry for a specific Agent instance +agent = ComputerAgent(telemetry_enabled=True) +``` + +You can check if telemetry is enabled for an instance: + +```python +print(computer.telemetry_enabled) # Will print True or False +``` + +Note that telemetry settings must be configured during initialization and cannot be changed after the object is created. + +## Transparency + +We believe in being transparent about the data we collect. If you have any questions about our telemetry practices, please open an issue on our GitHub repository. \ No newline at end of file diff --git a/examples/agent_examples.py b/examples/agent_examples.py new file mode 100644 index 00000000..ebcb1070 --- /dev/null +++ b/examples/agent_examples.py @@ -0,0 +1,99 @@ +"""Example demonstrating the ComputerAgent capabilities with the Omni provider.""" + +import os +import asyncio +import logging +import traceback +from pathlib import Path +from datetime import datetime +import signal + +from computer import Computer + +# Import the unified agent class and types +from agent import ComputerAgent, AgentLoop, LLMProvider, LLM + +# Import utility functions +from utils import load_dotenv_files, handle_sigint + +# Set up logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +async def run_omni_agent_example(): + """Run example of using the ComputerAgent with OpenAI and Omni provider.""" + print(f"\n=== Example: ComputerAgent with OpenAI and Omni provider ===") + try: + # Create Computer instance with default parameters + computer = Computer(verbosity=logging.DEBUG) + + # Create agent with loop and provider + agent = ComputerAgent( + computer=computer, + # loop=AgentLoop.OMNI, + loop=AgentLoop.ANTHROPIC, + # model=LLM(provider=LLMProvider.OPENAI, name="gpt-4.5-preview"), + model=LLM(provider=LLMProvider.ANTHROPIC, name="claude-3-7-sonnet-20250219"), + save_trajectory=True, + trajectory_dir=str(Path("trajectories")), + only_n_most_recent_images=3, + verbosity=logging.INFO, + ) + + tasks = [ + """ +1. Look for a repository named trycua/lume on GitHub. +2. Check the open issues, open the most recent one and read it. +3. Clone the repository in users/lume/projects if it doesn't exist yet. +4. Open the repository with an app named Cursor (on the dock, black background and white cube icon). +5. From Cursor, open Composer if not already open. +6. Focus on the Composer text area, then write and submit a task to help resolve the GitHub issue. +""" + ] + + async with agent: + for i, task in enumerate(tasks, 1): + print(f"\nExecuting task {i}/{len(tasks)}: {task}") + async for result in agent.run(task): + # Check if result has the expected structure + if "role" in result and "content" in result and "metadata" in result: + title = result["metadata"].get("title", "Screen Analysis") + content = result["content"] + else: + title = result.get("metadata", {}).get("title", "Screen Analysis") + content = result.get("content", str(result)) + + print(f"\n{title}") + print(content) + print(f"Task {i} completed") + + except Exception as e: + logger.error(f"Error in run_anthropic_agent_example: {e}") + traceback.print_exc() + raise + finally: + # Clean up resources + if computer and computer._initialized: + try: + await computer.stop() + except Exception as e: + logger.warning(f"Error stopping computer: {e}") + + +def main(): + """Run the Anthropic agent example.""" + try: + load_dotenv_files() + + # Register signal handler for graceful exit + signal.signal(signal.SIGINT, handle_sigint) + + asyncio.run(run_omni_agent_example()) + except Exception as e: + print(f"Error running example: {e}") + traceback.print_exc() + + +if __name__ == "__main__": + main() diff --git a/examples/computer_examples.py b/examples/computer_examples.py new file mode 100644 index 00000000..b5e9fc84 --- /dev/null +++ b/examples/computer_examples.py @@ -0,0 +1,97 @@ +import os +import asyncio +from pathlib import Path +import sys +import json +import traceback + +# Load environment variables from .env file +project_root = Path(__file__).parent.parent +env_file = project_root / ".env" +print(f"Loading environment from: {env_file}") +from dotenv import load_dotenv + +load_dotenv(env_file) + +# Add paths to sys.path if needed +pythonpath = os.environ.get("PYTHONPATH", "") +for path in pythonpath.split(":"): + if path and path not in sys.path: + sys.path.append(path) + print(f"Added to sys.path: {path}") + +from computer.computer import Computer +from computer.logger import LogLevel +from computer.utils import get_image_size + + +async def main(): + try: + print("\n=== Using direct initialization ===") + computer = Computer( + display="1024x768", # Higher resolution + memory="8GB", # More memory + cpu="4", # More CPU cores + os="macos", + verbosity=LogLevel.NORMAL, # Use QUIET to suppress most logs + use_host_computer_server=False, + ) + try: + await computer.run() + + await computer.interface.hotkey("command", "space") + + # res = await computer.interface.run_command("touch ./Downloads/empty_file") + # print(f"Run command result: {res}") + + accessibility_tree = await computer.interface.get_accessibility_tree() + print(f"Accessibility tree: {accessibility_tree}") + + # Screen Actions Examples + print("\n=== Screen Actions ===") + screenshot = await computer.interface.screenshot() + with open("screenshot_direct.png", "wb") as f: + f.write(screenshot) + + screen_size = await computer.interface.get_screen_size() + print(f"Screen size: {screen_size}") + + # Demonstrate coordinate conversion + center_x, center_y = 733, 736 + print(f"Center in screen coordinates: ({center_x}, {center_y})") + + screenshot_center = await computer.to_screenshot_coordinates(center_x, center_y) + print(f"Center in screenshot coordinates: {screenshot_center}") + + screen_center = await computer.to_screen_coordinates(*screenshot_center) + print(f"Back to screen coordinates: {screen_center}") + + # Mouse Actions Examples + print("\n=== Mouse Actions ===") + await computer.interface.move_cursor(100, 100) + await computer.interface.left_click() + await computer.interface.right_click(300, 300) + await computer.interface.double_click(400, 400) + + # Keyboard Actions Examples + print("\n=== Keyboard Actions ===") + await computer.interface.type_text("Hello, World!") + await computer.interface.press_key("enter") + + # Clipboard Actions Examples + print("\n=== Clipboard Actions ===") + await computer.interface.set_clipboard("Test clipboard") + content = await computer.interface.copy_to_clipboard() + print(f"Clipboard content: {content}") + + finally: + # Important to clean up resources + pass + # await computer.stop() + except Exception as e: + print(f"Error in main: {e}") + traceback.print_exc() + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/examples/pylume_examples.py b/examples/pylume_examples.py new file mode 100644 index 00000000..6700c99b --- /dev/null +++ b/examples/pylume_examples.py @@ -0,0 +1,98 @@ +import asyncio +from pylume import ( + PyLume, + ImageRef, + VMRunOpts, + SharedDirectory, + VMConfig, + VMUpdateOpts +) + +async def main(): + """Example usage of PyLume.""" + async with PyLume(port=3000, use_existing_server=False, debug=True) as pylume: + + # Get latest IPSW URL + print("\n=== Getting Latest IPSW URL ===") + url = await pylume.get_latest_ipsw_url() + print("Latest IPSW URL:", url) + + # Create a new VM + print("\n=== Creating a new VM ===") + vm_config = VMConfig( + name="lume-vm-new", + os="macOS", + cpu=2, + memory="4GB", + disk_size="64GB", + display="1024x768", + ipsw="latest" + ) + await pylume.create_vm(vm_config) + + # Get latest IPSW URL + print("\n=== Getting Latest IPSW URL ===") + url = await pylume.get_latest_ipsw_url() + print("Latest IPSW URL:", url) + + # List available images + print("\n=== Listing Available Images ===") + images = await pylume.get_images() + print("Available Images:", images) + + # List all VMs to verify creation + print("\n=== Listing All VMs ===") + vms = await pylume.list_vms() + print("VMs:", vms) + + # Get specific VM details + print("\n=== Getting VM Details ===") + vm = await pylume.get_vm("lume-vm") + print("VM Details:", vm) + + # Update VM settings + print("\n=== Updating VM Settings ===") + update_opts = VMUpdateOpts( + cpu=8, + memory="4GB" + ) + await pylume.update_vm("lume-vm", update_opts) + + # Pull an image + image_ref = ImageRef( + image="macos-sequoia-vanilla", + tag="latest", + registry="ghcr.io", + organization="trycua" + ) + await pylume.pull_image(image_ref, name="lume-vm-pulled") + + # Run with shared directory + run_opts = VMRunOpts( + no_display=False, + shared_directories=[ + SharedDirectory( + host_path="~/shared", + read_only=False + ) + ] + ) + await pylume.run_vm("lume-vm", run_opts) + + # Or simpler: + await pylume.run_vm("lume-vm") + + # Clone VM + print("\n=== Cloning VM ===") + await pylume.clone_vm("lume-vm", "lume-vm-cloned") + + # Stop VM + print("\n=== Stopping VM ===") + await pylume.stop_vm("lume-vm") + + # Delete VM + print("\n=== Deleting VM ===") + await pylume.delete_vm("lume-vm-cloned") + +if __name__ == '__main__': + asyncio.run(main()) diff --git a/examples/som_examples.py b/examples/som_examples.py new file mode 100644 index 00000000..75b798ac --- /dev/null +++ b/examples/som_examples.py @@ -0,0 +1,437 @@ +#!/usr/bin/env python3 +""" +Example script demonstrating the usage of OmniParser's UI element detection functionality. +This script shows how to: +1. Initialize the OmniParser +2. Load and process images +3. Visualize detection results +4. Compare performance between CPU and MPS (Apple Silicon) +""" + +import argparse +import logging +import sys +from pathlib import Path +import time +from PIL import Image +from typing import Dict, Any, List, Optional +import numpy as np +import io +import base64 +import glob +import os + +# Load environment variables from .env file +project_root = Path(__file__).parent.parent +env_file = project_root / ".env" +print(f"Loading environment from: {env_file}") +from dotenv import load_dotenv + +load_dotenv(env_file) + +# Add paths to sys.path if needed +pythonpath = os.environ.get("PYTHONPATH", "") +for path in pythonpath.split(":"): + if path and path not in sys.path: + sys.path.append(path) + print(f"Added to sys.path: {path}") + +# Add the libs directory to the path to find som +libs_path = project_root / "libs" +if str(libs_path) not in sys.path: + sys.path.append(str(libs_path)) + print(f"Added to sys.path: {libs_path}") + +from som import OmniParser, ParseResult, IconElement, TextElement +from som.models import UIElement, ParserMetadata, BoundingBox + +# Configure logging +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + datefmt="%Y-%m-%d %H:%M:%S", +) +logger = logging.getLogger(__name__) + + +def setup_logging(): + """Configure logging with a nice format.""" + logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(levelname)s - %(message)s", + datefmt="%Y-%m-%d %H:%M:%S", + ) + + +class Timer: + """Enhanced context manager for timing code blocks.""" + + def __init__(self, name: str, logger): + self.name = name + self.logger = logger + self.start_time: float = 0.0 + self.elapsed_time: float = 0.0 + + def __enter__(self): + self.start_time = time.time() + return self + + def __exit__(self, *args): + self.elapsed_time = time.time() - self.start_time + self.logger.info(f"{self.name}: {self.elapsed_time:.3f}s") + return False + + +def image_to_bytes(image: Image.Image) -> bytes: + """Convert PIL Image to PNG bytes.""" + buf = io.BytesIO() + image.save(buf, format="PNG") + return buf.getvalue() + + +def process_image( + parser: OmniParser, image_path: str, output_dir: Path, use_ocr: bool = False +) -> None: + """Process a single image and save the result.""" + try: + # Load image + logger.info(f"Processing image: {image_path}") + image = Image.open(image_path).convert("RGB") + logger.info(f"Image loaded successfully, size: {image.size}") + + # Create output filename + input_filename = Path(image_path).stem + output_path = output_dir / f"{input_filename}_analyzed.png" + + # Convert image to PNG bytes + image_bytes = image_to_bytes(image) + + # Process image + with Timer(f"Processing {input_filename}", logger): + result = parser.parse(image_bytes, use_ocr=use_ocr) + logger.info( + f"Found {result.metadata.num_icons} icons and {result.metadata.num_text} text elements" + ) + + # Save the annotated image + logger.info(f"Saving annotated image to: {output_path}") + try: + # Save image from base64 + img_data = base64.b64decode(result.annotated_image_base64) + img = Image.open(io.BytesIO(img_data)) + img.save(output_path) + + # Print detailed results + logger.info("\nDetected Elements:") + for elem in result.elements: + if isinstance(elem, IconElement): + logger.info( + f"Icon: confidence={elem.confidence:.3f}, bbox={elem.bbox.coordinates}" + ) + elif isinstance(elem, TextElement): + logger.info( + f"Text: '{elem.content}', confidence={elem.confidence:.3f}, bbox={elem.bbox.coordinates}" + ) + + # Verify file exists and log size + if output_path.exists(): + logger.info( + f"Successfully saved image. File size: {output_path.stat().st_size} bytes" + ) + else: + logger.error(f"Failed to verify file at {output_path}") + except Exception as e: + logger.error(f"Error saving image: {str(e)}", exc_info=True) + + except Exception as e: + logger.error(f"Error processing image {image_path}: {str(e)}", exc_info=True) + + +def run_detection_benchmark( + input_path: str, + output_dir: Path, + use_ocr: bool = False, + box_threshold: float = 0.01, + iou_threshold: float = 0.1, +): + """Run detection benchmark on images.""" + logger.info( + f"Starting benchmark with OCR enabled: {use_ocr}, box_threshold: {box_threshold}, iou_threshold: {iou_threshold}" + ) + + try: + # Initialize parser + logger.info("Initializing OmniParser...") + parser = OmniParser() + + # Create output directory + output_dir.mkdir(parents=True, exist_ok=True) + logger.info(f"Output directory created at: {output_dir}") + + # Get list of PNG files + if os.path.isdir(input_path): + image_files = glob.glob(os.path.join(input_path, "*.png")) + else: + image_files = [input_path] + + logger.info(f"Found {len(image_files)} images to process") + + # Process each image with specified thresholds + for image_path in image_files: + try: + # Load image + logger.info(f"Processing image: {image_path}") + image = Image.open(image_path).convert("RGB") + logger.info(f"Image loaded successfully, size: {image.size}") + + # Create output filename + input_filename = Path(image_path).stem + output_path = output_dir / f"{input_filename}_analyzed.png" + + # Convert image to PNG bytes + image_bytes = image_to_bytes(image) + + # Process image with specified thresholds + with Timer(f"Processing {input_filename}", logger): + result = parser.parse( + image_bytes, + use_ocr=use_ocr, + box_threshold=box_threshold, + iou_threshold=iou_threshold, + ) + logger.info( + f"Found {result.metadata.num_icons} icons and {result.metadata.num_text} text elements" + ) + + # Save the annotated image + logger.info(f"Saving annotated image to: {output_path}") + try: + # Save image from base64 + img_data = base64.b64decode(result.annotated_image_base64) + img = Image.open(io.BytesIO(img_data)) + img.save(output_path) + + # Print detailed results + logger.info("\nDetected Elements:") + for elem in result.elements: + if isinstance(elem, IconElement): + logger.info( + f"Icon: confidence={elem.confidence:.3f}, bbox={elem.bbox.coordinates}" + ) + elif isinstance(elem, TextElement): + logger.info( + f"Text: '{elem.content}', confidence={elem.confidence:.3f}, bbox={elem.bbox.coordinates}" + ) + + # Verify file exists and log size + if output_path.exists(): + logger.info( + f"Successfully saved image. File size: {output_path.stat().st_size} bytes" + ) + else: + logger.error(f"Failed to verify file at {output_path}") + except Exception as e: + logger.error(f"Error saving image: {str(e)}", exc_info=True) + + except Exception as e: + logger.error(f"Error processing image {image_path}: {str(e)}", exc_info=True) + + except Exception as e: + logger.error(f"Benchmark failed: {str(e)}", exc_info=True) + raise + + +def run_experiments(input_path: str, output_dir: Path, use_ocr: bool = False): + """Run experiments with different threshold combinations.""" + # Define threshold values to test + box_thresholds = [0.01, 0.05, 0.1, 0.3] + iou_thresholds = [0.05, 0.1, 0.2, 0.5] + + logger.info("Starting threshold experiments...") + logger.info("Box thresholds to test: %s", box_thresholds) + logger.info("IOU thresholds to test: %s", iou_thresholds) + + # Create results directory for this experiment + timestamp = time.strftime("%Y%m%d-%H%M%S") + ocr_suffix = "_ocr" if use_ocr else "_no_ocr" + exp_dir = output_dir / f"experiment_{timestamp}{ocr_suffix}" + exp_dir.mkdir(parents=True, exist_ok=True) + + # Create a summary file + summary_file = exp_dir / "results_summary.txt" + with open(summary_file, "w") as f: + f.write("Threshold Experiments Results\n") + f.write("==========================\n\n") + f.write(f"Input: {input_path}\n") + f.write(f"OCR Enabled: {use_ocr}\n") + f.write(f"Date: {time.strftime('%Y-%m-%d %H:%M:%S')}\n\n") + f.write("Results:\n") + f.write("-" * 80 + "\n") + f.write( + f"{'Box Thresh':^10} | {'IOU Thresh':^10} | {'Num Icons':^10} | {'Num Text':^10} | {'Time (s)':^10}\n" + ) + f.write("-" * 80 + "\n") + + # Initialize parser once for all experiments + parser = OmniParser() + + # Run experiments with each combination + for box_thresh in box_thresholds: + for iou_thresh in iou_thresholds: + logger.info(f"\nTesting box_threshold={box_thresh}, iou_threshold={iou_thresh}") + + # Create directory for this combination + combo_dir = exp_dir / f"box_{box_thresh}_iou_{iou_thresh}" + combo_dir.mkdir(exist_ok=True) + + try: + # Process each image + if os.path.isdir(input_path): + image_files = glob.glob(os.path.join(input_path, "*.png")) + else: + image_files = [input_path] + + total_icons = 0 + total_text = 0 + total_time = 0 + + for image_path in image_files: + # Load and process image + image = Image.open(image_path).convert("RGB") + image_bytes = image_to_bytes(image) + + # Process with current thresholds + with Timer(f"Processing {Path(image_path).stem}", logger) as t: + result = parser.parse( + image_bytes, + use_ocr=use_ocr, + box_threshold=box_thresh, + iou_threshold=iou_thresh, + ) + + # Save annotated image + output_path = combo_dir / f"{Path(image_path).stem}_analyzed.png" + img_data = base64.b64decode(result.annotated_image_base64) + img = Image.open(io.BytesIO(img_data)) + img.save(output_path) + + # Update totals + total_icons += result.metadata.num_icons + total_text += result.metadata.num_text + total_time += t.elapsed_time + + # Log detailed results + detail_file = combo_dir / f"{Path(image_path).stem}_details.txt" + with open(detail_file, "w") as detail_f: + detail_f.write(f"Results for {Path(image_path).name}\n") + detail_f.write("-" * 40 + "\n") + detail_f.write(f"Number of icons: {result.metadata.num_icons}\n") + detail_f.write( + f"Number of text elements: {result.metadata.num_text}\n\n" + ) + + detail_f.write("Icon Detections:\n") + icon_count = 1 + text_count = ( + result.metadata.num_icons + 1 + ) # Text boxes start after icons + + # First list all icons + for elem in result.elements: + if isinstance(elem, IconElement): + detail_f.write(f"Box #{icon_count}: Icon\n") + detail_f.write(f" - Confidence: {elem.confidence:.3f}\n") + detail_f.write( + f" - Coordinates: {elem.bbox.coordinates}\n" + ) + icon_count += 1 + + if use_ocr: + detail_f.write("\nText Detections:\n") + for elem in result.elements: + if isinstance(elem, TextElement): + detail_f.write(f"Box #{text_count}: Text\n") + detail_f.write(f" - Content: '{elem.content}'\n") + detail_f.write( + f" - Confidence: {elem.confidence:.3f}\n" + ) + detail_f.write( + f" - Coordinates: {elem.bbox.coordinates}\n" + ) + text_count += 1 + + # Write summary for this combination + avg_time = total_time / len(image_files) + f.write( + f"{box_thresh:^10.3f} | {iou_thresh:^10.3f} | {total_icons:^10d} | {total_text:^10d} | {avg_time:^10.3f}\n" + ) + + except Exception as e: + logger.error( + f"Error in experiment box={box_thresh}, iou={iou_thresh}: {str(e)}" + ) + f.write( + f"{box_thresh:^10.3f} | {iou_thresh:^10.3f} | {'ERROR':^10s} | {'ERROR':^10s} | {'ERROR':^10s}\n" + ) + + # Write summary footer + f.write("-" * 80 + "\n") + f.write("\nExperiment completed successfully!\n") + + logger.info(f"\nExperiment results saved to {exp_dir}") + logger.info(f"Summary file: {summary_file}") + + +def main(): + """Main entry point.""" + parser = argparse.ArgumentParser(description="Run OmniParser benchmark") + parser.add_argument("input_path", help="Path to input image or directory containing images") + parser.add_argument( + "--output-dir", default="examples/output", help="Output directory for annotated images" + ) + parser.add_argument( + "--ocr", + choices=["none", "easyocr"], + default="none", + help="OCR engine to use (default: none)", + ) + parser.add_argument( + "--mode", + choices=["single", "experiment"], + default="single", + help="Run mode: single run or threshold experiments (default: single)", + ) + parser.add_argument( + "--box-threshold", + type=float, + default=0.01, + help="Confidence threshold for detection (default: 0.01)", + ) + parser.add_argument( + "--iou-threshold", + type=float, + default=0.1, + help="IOU threshold for Non-Maximum Suppression (default: 0.1)", + ) + args = parser.parse_args() + + logger.info(f"Starting OmniParser with arguments: {args}") + use_ocr = args.ocr != "none" + output_dir = Path(args.output_dir) + + try: + if args.mode == "experiment": + run_experiments(args.input_path, output_dir, use_ocr) + else: + run_detection_benchmark( + args.input_path, output_dir, use_ocr, args.box_threshold, args.iou_threshold + ) + except Exception as e: + logger.error(f"Process failed: {str(e)}", exc_info=True) + return 1 + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/examples/utils.py b/examples/utils.py new file mode 100644 index 00000000..759b0b6e --- /dev/null +++ b/examples/utils.py @@ -0,0 +1,55 @@ +"""Utility functions for example scripts.""" + +import os +import sys +import signal +from pathlib import Path +from typing import Optional + + +def load_env_file(path: Path) -> bool: + """Load environment variables from a file. + + Args: + path: Path to the .env file + + Returns: + True if file was loaded successfully, False otherwise + """ + if not path.exists(): + return False + + print(f"Loading environment from {path}") + with open(path, "r") as f: + for line in f: + line = line.strip() + if not line or line.startswith("#"): + continue + + key, value = line.split("=", 1) + os.environ[key] = value + + return True + + +def load_dotenv_files(): + """Load environment variables from .env files. + + Tries to load from .env.local first, then .env if .env.local doesn't exist. + """ + # Get the project root directory (parent of the examples directory) + project_root = Path(__file__).parent.parent + + # Try loading .env.local first, then .env if .env.local doesn't exist + env_local_path = project_root / ".env.local" + env_path = project_root / ".env" + + # Load .env.local if it exists, otherwise try .env + if not load_env_file(env_local_path): + load_env_file(env_path) + + +def handle_sigint(signum, frame): + """Handle SIGINT (Ctrl+C) gracefully.""" + print("\nExiting gracefully...") + sys.exit(0) diff --git a/img/agent.png b/img/agent.png new file mode 100644 index 0000000000000000000000000000000000000000..bcca23585f55ea2dcf5f32e69f22d901cf6b3cfe GIT binary patch literal 1157339 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