droidrun 0.5.1.dev1__tar.gz → 0.5.1.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/PKG-INFO +1 -1
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/droid/droid_agent.py +10 -1
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/driver/base.py +3 -1
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/driver/cloud.py +13 -2
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/pyproject.toml +1 -1
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/uv.lock +1 -1
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/.dockerignore +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/.github/workflows/black.yml +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/.github/workflows/bounty.yml +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/.github/workflows/claude-code-review.yml +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/.github/workflows/claude.yml +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/.github/workflows/docker.yml +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/.github/workflows/publish.yml +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/.gitignore +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/.python-version +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/CHANGELOG.md +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/CONTRIBUTING.md +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/Dockerfile +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/LICENSE +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/MANIFEST.in +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/README.md +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/SKILL.md +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/ favicon.svg +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/custom.css +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/docs.json +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/favicon-dark.png +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/favicon.png +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/logo/dark.png +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/logo/light.png +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/concepts/agent.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/concepts/android-tools.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/concepts/models.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/concepts/portal-app.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/guides/cli.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/guides/gemini.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/guides/ollama.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/guides/openailike.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/guides/overview.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/guides/telemetry.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/images/portal_apk.png +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/overview.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v3/quickstart.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/concepts/architecture.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/concepts/events-and-workflows.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/concepts/prompts.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/concepts/scripter-agent.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/concepts/shared-state.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/features/app-cards.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/features/credentials.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/features/custom-tools.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/features/custom-variables.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/features/structured-output.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/features/telemetry.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/features/tracing.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/guides/cli.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/guides/device-setup.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/guides/docker.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/guides/migration-v3-to-v4.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/guides/overview.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/overview.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/quickstart.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/sdk/adb-tools.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/sdk/base-tools.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/sdk/configuration.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/sdk/droid-agent.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/sdk/ios-tools.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v4/sdk/reference.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/concepts/architecture.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/concepts/events-and-workflows.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/concepts/prompts.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/concepts/scripter-agent.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/concepts/shared-state.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/features/app-cards.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/features/credentials.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/features/custom-tools.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/features/custom-variables.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/features/structured-output.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/features/telemetry.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/features/tracing.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/guides/cli.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/guides/device-setup.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/guides/docker.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/guides/overview.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/overview.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/quickstart.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/sdk/adb-tools.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/sdk/base-tools.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/sdk/configuration.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/sdk/droid-agent.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/sdk/ios-tools.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/docs/v5/sdk/reference.mdx +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/__main__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/action_context.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/action_result.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/codeact/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/codeact/codeact_agent.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/codeact/events.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/codeact/tools_agent.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/codeact/xml_parser.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/common/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/common/constants.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/common/events.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/droid/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/droid/events.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/droid/state.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/executor/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/executor/events.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/executor/executor_agent.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/executor/prompts.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/external/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/external/autoglm.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/external/mai_ui.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/manager/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/manager/events.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/manager/manager_agent.py +24 -24
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/manager/prompts.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/manager/stateless_manager_agent.py +18 -18
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/oneflows/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/oneflows/app_starter_workflow.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/oneflows/structured_output_agent.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/oneflows/text_manipulator.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/scripter/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/scripter/events.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/scripter/scripter_agent.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/tool_registry.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/trajectory/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/trajectory/writer.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/usage.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/actions.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/chat_utils.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/code_checker.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/executer.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/inference.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/llm_loader.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/llm_picker.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/prompt_resolver.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/signatures.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/tracing_setup.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/utils/trajectory.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/app_cards/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/app_cards/app_card_provider.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/app_cards/providers/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/app_cards/providers/composite_provider.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/app_cards/providers/local_provider.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/app_cards/providers/server_provider.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/doctor.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/event_handler.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/logs.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/main.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/app.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/commands.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/css/advanced_tab.tcss +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/css/app.tcss +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/css/models_tab.tcss +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/css/settings_screen.tcss +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/settings/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/settings/advanced_tab.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/settings/agent_tab.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/settings/data.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/settings/models_tab.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/settings/section.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/settings/settings_screen.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/widgets/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/widgets/command_dropdown.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/widgets/device_picker.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/widgets/input_bar.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/widgets/log_view.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/cli/tui/widgets/status_bar.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/app_cards/README.md +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/app_cards/app_cards.json +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/app_cards/gmail.md +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/credentials_example.yaml +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/prompts/codeact/system.jinja2 +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/prompts/codeact/tools_system.jinja2 +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/prompts/codeact/tools_user.jinja2 +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/prompts/codeact/user.jinja2 +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/prompts/executor/rev1.jinja2 +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/prompts/executor/system.jinja2 +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/prompts/manager/rev1.jinja2 +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/prompts/manager/stateless.jinja2 +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/prompts/manager/system.jinja2 +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/prompts/manager/trained.jinja2 +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config/prompts/scripter/system.jinja2 +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config_example.yaml +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config_manager/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config_manager/config_manager.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config_manager/env_keys.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config_manager/loader.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config_manager/migrations/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config_manager/migrations/v002_add_code_exec.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config_manager/migrations/v003_add_auto_setup.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config_manager/path_resolver.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config_manager/prompt_loader.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/config_manager/safe_execution.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/credential_manager/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/credential_manager/credential_manager.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/credential_manager/file_credential_manager.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/log_handlers.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/macro/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/macro/__main__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/macro/cli.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/macro/replay.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/mcp/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/mcp/adapter.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/mcp/client.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/mcp/config.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/portal.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/telemetry/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/telemetry/events.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/telemetry/langfuse_processor.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/telemetry/phoenix.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/telemetry/tracker.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/android/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/android/portal_client.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/driver/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/driver/android.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/driver/ios.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/driver/recording.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/driver/stealth.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/filters/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/filters/base.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/filters/concise_filter.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/filters/detailed_filter.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/formatters/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/formatters/base.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/formatters/indexed_formatter.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/helpers/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/helpers/coordinate.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/helpers/element_search.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/helpers/geometry.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/ios/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/ui/__init__.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/ui/ios_provider.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/ui/provider.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/ui/state.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/tools/ui/stealth_state.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/gen-docs-sdk-ref.sh +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/setup.py +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/static/droidrun-dark.png +0 -0
- {droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/static/droidrun.png +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: droidrun
|
|
3
|
-
Version: 0.5.1.
|
|
3
|
+
Version: 0.5.1.dev3
|
|
4
4
|
Summary: A framework for controlling Android devices through LLM agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/droidrun/droidrun
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/droidrun/droidrun/issues
|
|
@@ -1085,7 +1085,7 @@ class DroidAgent(Workflow):
|
|
|
1085
1085
|
if self.config.logging.debug:
|
|
1086
1086
|
logger.error(traceback.format_exc())
|
|
1087
1087
|
|
|
1088
|
-
# Capture final screenshot (independent of trajectory persistence)
|
|
1088
|
+
# Capture final screenshot and UI state (independent of trajectory persistence)
|
|
1089
1089
|
vision_any = (
|
|
1090
1090
|
self.config.agent.manager.vision
|
|
1091
1091
|
or self.config.agent.executor.vision
|
|
@@ -1111,6 +1111,15 @@ class DroidAgent(Workflow):
|
|
|
1111
1111
|
except Exception as e:
|
|
1112
1112
|
logger.warning(f"Failed to capture final screenshot: {e}")
|
|
1113
1113
|
|
|
1114
|
+
try:
|
|
1115
|
+
ui_state = await self.state_provider.get_state()
|
|
1116
|
+
ctx.write_event_to_stream(
|
|
1117
|
+
RecordUIStateEvent(ui_state=ui_state.elements)
|
|
1118
|
+
)
|
|
1119
|
+
logger.debug("📋 Final UI state captured")
|
|
1120
|
+
except Exception as e:
|
|
1121
|
+
logger.warning(f"Failed to capture final UI state: {e}")
|
|
1122
|
+
|
|
1114
1123
|
# Save trajectory to disk
|
|
1115
1124
|
if self.config.logging.save_trajectory != "none":
|
|
1116
1125
|
# Populate macro data from RecordingDriver log
|
|
@@ -52,7 +52,9 @@ class DeviceDriver:
|
|
|
52
52
|
"""Swipe from (x1, y1) to (x2, y2)."""
|
|
53
53
|
raise NotImplementedError
|
|
54
54
|
|
|
55
|
-
async def input_text(
|
|
55
|
+
async def input_text(
|
|
56
|
+
self, text: str, clear: bool = False, stealth: bool = False, wpm: int = 0,
|
|
57
|
+
) -> bool:
|
|
56
58
|
"""Type *text* into the currently focused field.
|
|
57
59
|
|
|
58
60
|
Returns ``True`` on success, ``False`` on failure.
|
|
@@ -115,10 +115,21 @@ class CloudDriver(DeviceDriver):
|
|
|
115
115
|
)
|
|
116
116
|
)
|
|
117
117
|
|
|
118
|
-
async def input_text(
|
|
118
|
+
async def input_text(
|
|
119
|
+
self, text: str, clear: bool = False, stealth: bool = False, wpm: int = 0,
|
|
120
|
+
) -> bool:
|
|
121
|
+
extra_body: dict = {}
|
|
122
|
+
if stealth:
|
|
123
|
+
extra_body["stealth"] = True
|
|
124
|
+
if wpm:
|
|
125
|
+
extra_body["wpm"] = wpm
|
|
119
126
|
await self._call(
|
|
120
127
|
self._client.devices.keyboard.write(
|
|
121
|
-
self.device_id,
|
|
128
|
+
self.device_id,
|
|
129
|
+
text=text,
|
|
130
|
+
clear=clear,
|
|
131
|
+
extra_body=extra_body or None,
|
|
132
|
+
**self._display_kw,
|
|
122
133
|
)
|
|
123
134
|
)
|
|
124
135
|
return True
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -387,6 +387,30 @@ class ManagerAgent(Workflow):
|
|
|
387
387
|
"""Gather context and prepare manager prompt."""
|
|
388
388
|
logger.debug("💬 Preparing manager context...")
|
|
389
389
|
|
|
390
|
+
# Capture screenshot if needed
|
|
391
|
+
screenshot = None
|
|
392
|
+
if self.vision or self._stream_screenshots or self.save_trajectory != "none":
|
|
393
|
+
try:
|
|
394
|
+
screenshot = await self.action_ctx.driver.screenshot()
|
|
395
|
+
|
|
396
|
+
if screenshot:
|
|
397
|
+
ctx.write_event_to_stream(ScreenshotEvent(screenshot=screenshot))
|
|
398
|
+
parent_span = trace.get_current_span()
|
|
399
|
+
record_langfuse_screenshot(
|
|
400
|
+
screenshot,
|
|
401
|
+
parent_span=parent_span,
|
|
402
|
+
screenshots_enabled=bool(
|
|
403
|
+
self.tracing_config
|
|
404
|
+
and self.tracing_config.langfuse_screenshots
|
|
405
|
+
),
|
|
406
|
+
vision_enabled=self.vision,
|
|
407
|
+
)
|
|
408
|
+
logger.debug("📸 Screenshot captured for Manager")
|
|
409
|
+
except DeviceDisconnectedError:
|
|
410
|
+
raise
|
|
411
|
+
except Exception as e:
|
|
412
|
+
logger.warning(f"Failed to capture screenshot: {e}")
|
|
413
|
+
|
|
390
414
|
# Get and format device state
|
|
391
415
|
ui_state = await self.state_provider.get_state()
|
|
392
416
|
self.action_ctx.ui = ui_state
|
|
@@ -422,30 +446,6 @@ class ManagerAgent(Workflow):
|
|
|
422
446
|
else:
|
|
423
447
|
self.shared_state.app_card = ""
|
|
424
448
|
|
|
425
|
-
# Capture screenshot if needed
|
|
426
|
-
screenshot = None
|
|
427
|
-
if self.vision or self._stream_screenshots or self.save_trajectory != "none":
|
|
428
|
-
try:
|
|
429
|
-
screenshot = await self.action_ctx.driver.screenshot()
|
|
430
|
-
|
|
431
|
-
if screenshot:
|
|
432
|
-
ctx.write_event_to_stream(ScreenshotEvent(screenshot=screenshot))
|
|
433
|
-
parent_span = trace.get_current_span()
|
|
434
|
-
record_langfuse_screenshot(
|
|
435
|
-
screenshot,
|
|
436
|
-
parent_span=parent_span,
|
|
437
|
-
screenshots_enabled=bool(
|
|
438
|
-
self.tracing_config
|
|
439
|
-
and self.tracing_config.langfuse_screenshots
|
|
440
|
-
),
|
|
441
|
-
vision_enabled=self.vision,
|
|
442
|
-
)
|
|
443
|
-
logger.debug("📸 Screenshot captured for Manager")
|
|
444
|
-
except DeviceDisconnectedError:
|
|
445
|
-
raise
|
|
446
|
-
except Exception as e:
|
|
447
|
-
logger.warning(f"Failed to capture screenshot: {e}")
|
|
448
|
-
|
|
449
449
|
# Detect text manipulation mode
|
|
450
450
|
focused_text_clean = self.shared_state.focused_text.replace("'", "").strip()
|
|
451
451
|
has_text_to_modify = focused_text_clean != ""
|
|
File without changes
|
{droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/manager/stateless_manager_agent.py
RENAMED
|
@@ -175,24 +175,6 @@ class StatelessManagerAgent(Workflow):
|
|
|
175
175
|
async def prepare_context(
|
|
176
176
|
self, ctx: Context, ev: StartEvent
|
|
177
177
|
) -> ManagerContextEvent:
|
|
178
|
-
ui_state = await self.state_provider.get_state()
|
|
179
|
-
self.action_ctx.ui = ui_state
|
|
180
|
-
|
|
181
|
-
self.shared_state.previous_formatted_device_state = (
|
|
182
|
-
self.shared_state.formatted_device_state
|
|
183
|
-
)
|
|
184
|
-
self.shared_state.formatted_device_state = ui_state.formatted_text
|
|
185
|
-
self.shared_state.focused_text = ui_state.focused_text
|
|
186
|
-
self.shared_state.a11y_tree = ui_state.elements
|
|
187
|
-
self.shared_state.phone_state = ui_state.phone_state
|
|
188
|
-
|
|
189
|
-
self.shared_state.update_current_app(
|
|
190
|
-
package_name=ui_state.phone_state.get("packageName", "Unknown"),
|
|
191
|
-
activity_name=ui_state.phone_state.get("currentApp", "Unknown"),
|
|
192
|
-
)
|
|
193
|
-
|
|
194
|
-
ctx.write_event_to_stream(RecordUIStateEvent(ui_state=ui_state.elements))
|
|
195
|
-
|
|
196
178
|
screenshot = None
|
|
197
179
|
if self.vision or self.save_trajectory != "none":
|
|
198
180
|
try:
|
|
@@ -215,6 +197,24 @@ class StatelessManagerAgent(Workflow):
|
|
|
215
197
|
except Exception as e:
|
|
216
198
|
logger.warning(f"Failed to capture screenshot: {e}")
|
|
217
199
|
|
|
200
|
+
ui_state = await self.state_provider.get_state()
|
|
201
|
+
self.action_ctx.ui = ui_state
|
|
202
|
+
|
|
203
|
+
self.shared_state.previous_formatted_device_state = (
|
|
204
|
+
self.shared_state.formatted_device_state
|
|
205
|
+
)
|
|
206
|
+
self.shared_state.formatted_device_state = ui_state.formatted_text
|
|
207
|
+
self.shared_state.focused_text = ui_state.focused_text
|
|
208
|
+
self.shared_state.a11y_tree = ui_state.elements
|
|
209
|
+
self.shared_state.phone_state = ui_state.phone_state
|
|
210
|
+
|
|
211
|
+
self.shared_state.update_current_app(
|
|
212
|
+
package_name=ui_state.phone_state.get("packageName", "Unknown"),
|
|
213
|
+
activity_name=ui_state.phone_state.get("currentApp", "Unknown"),
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
ctx.write_event_to_stream(RecordUIStateEvent(ui_state=ui_state.elements))
|
|
217
|
+
|
|
218
218
|
focused_text_clean = self.shared_state.focused_text.replace("'", "").strip()
|
|
219
219
|
has_text_to_modify = focused_text_clean != ""
|
|
220
220
|
|
|
File without changes
|
|
File without changes
|
{droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/agent/oneflows/structured_output_agent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{droidrun-0.5.1.dev1 → droidrun-0.5.1.dev3}/droidrun/app_cards/providers/composite_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|