droidrun 0.5.0.dev1__tar.gz → 0.5.0.dev2__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.0.dev1 → droidrun-0.5.0.dev2}/PKG-INFO +1 -1
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/features/custom-tools.mdx +1 -1
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/sdk/base-tools.mdx +4 -3
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/codeact/codeact_agent.py +1 -1
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/codeact/tools_agent.py +1 -1
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/droid/droid_agent.py +2 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/manager/manager_agent.py +1 -1
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/manager/stateless_manager_agent.py +1 -1
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/ui/ios_provider.py +4 -3
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/ui/provider.py +8 -3
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/pyproject.toml +1 -1
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/uv.lock +1 -1
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/.dockerignore +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/.github/workflows/black.yml +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/.github/workflows/bounty.yml +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/.github/workflows/claude-code-review.yml +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/.github/workflows/claude.yml +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/.github/workflows/docker.yml +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/.github/workflows/publish.yml +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/.gitignore +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/.python-version +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/CHANGELOG.md +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/CONTRIBUTING.md +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/Dockerfile +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/LICENSE +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/MANIFEST.in +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/README.md +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/SKILL.md +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/custom.css +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/docs.json +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/favicon.png +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/logo/dark.svg +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/logo/light.svg +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/concepts/agent.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/concepts/android-tools.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/concepts/models.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/concepts/portal-app.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/guides/cli.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/guides/gemini.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/guides/ollama.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/guides/openailike.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/guides/overview.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/guides/telemetry.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/images/portal_apk.png +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/overview.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v3/quickstart.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/concepts/architecture.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/concepts/events-and-workflows.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/concepts/prompts.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/concepts/scripter-agent.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/concepts/shared-state.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/features/app-cards.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/features/credentials.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/features/custom-tools.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/features/custom-variables.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/features/structured-output.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/features/telemetry.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/features/tracing.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/guides/cli.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/guides/device-setup.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/guides/docker.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/guides/migration-v3-to-v4.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/guides/overview.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/overview.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/quickstart.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/sdk/adb-tools.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/sdk/base-tools.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/sdk/configuration.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/sdk/droid-agent.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/sdk/ios-tools.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v4/sdk/reference.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/concepts/architecture.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/concepts/events-and-workflows.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/concepts/prompts.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/concepts/scripter-agent.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/concepts/shared-state.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/features/app-cards.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/features/credentials.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/features/custom-variables.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/features/structured-output.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/features/telemetry.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/features/tracing.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/guides/cli.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/guides/device-setup.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/guides/docker.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/guides/overview.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/overview.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/quickstart.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/sdk/adb-tools.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/sdk/configuration.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/sdk/droid-agent.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/sdk/ios-tools.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/docs/v5/sdk/reference.mdx +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/__main__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/action_context.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/action_result.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/codeact/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/codeact/events.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/codeact/xml_parser.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/common/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/common/constants.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/common/events.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/droid/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/droid/events.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/droid/state.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/executor/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/executor/events.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/executor/executor_agent.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/executor/prompts.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/external/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/external/autoglm.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/external/mai_ui.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/manager/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/manager/events.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/manager/prompts.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/oneflows/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/oneflows/app_starter_workflow.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/oneflows/structured_output_agent.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/oneflows/text_manipulator.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/scripter/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/scripter/events.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/scripter/scripter_agent.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/tool_registry.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/trajectory/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/trajectory/writer.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/usage.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/actions.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/chat_utils.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/code_checker.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/executer.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/inference.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/llm_loader.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/llm_picker.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/prompt_resolver.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/signatures.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/tracing_setup.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/utils/trajectory.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/app_cards/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/app_cards/app_card_provider.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/app_cards/providers/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/app_cards/providers/composite_provider.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/app_cards/providers/local_provider.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/app_cards/providers/server_provider.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/doctor.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/event_handler.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/logs.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/main.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/app.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/commands.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/css/advanced_tab.tcss +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/css/app.tcss +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/css/models_tab.tcss +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/css/settings_screen.tcss +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/settings/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/settings/advanced_tab.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/settings/agent_tab.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/settings/data.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/settings/models_tab.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/settings/section.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/settings/settings_screen.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/widgets/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/widgets/command_dropdown.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/widgets/device_picker.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/widgets/input_bar.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/widgets/log_view.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/cli/tui/widgets/status_bar.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/app_cards/README.md +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/app_cards/app_cards.json +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/app_cards/gmail.md +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/credentials_example.yaml +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/codeact/system.jinja2 +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/codeact/tools_system.jinja2 +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/codeact/tools_user.jinja2 +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/codeact/user.jinja2 +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/executor/rev1.jinja2 +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/executor/system.jinja2 +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/manager/rev1.jinja2 +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/manager/stateless.jinja2 +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/manager/system.jinja2 +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/manager/trained.jinja2 +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/scripter/system.jinja2 +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config_example.yaml +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config_manager/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config_manager/config_manager.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config_manager/env_keys.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config_manager/loader.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config_manager/migrations/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config_manager/migrations/v002_add_code_exec.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config_manager/path_resolver.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config_manager/prompt_loader.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config_manager/safe_execution.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/credential_manager/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/credential_manager/credential_manager.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/credential_manager/file_credential_manager.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/log_handlers.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/macro/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/macro/__main__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/macro/cli.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/macro/replay.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/mcp/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/mcp/adapter.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/mcp/client.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/mcp/config.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/portal.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/telemetry/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/telemetry/events.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/telemetry/langfuse_processor.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/telemetry/phoenix.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/telemetry/tracker.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/android/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/android/portal_client.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/driver/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/driver/android.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/driver/base.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/driver/cloud.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/driver/ios.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/driver/recording.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/driver/stealth.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/filters/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/filters/base.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/filters/concise_filter.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/filters/detailed_filter.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/formatters/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/formatters/base.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/formatters/indexed_formatter.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/helpers/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/helpers/coordinate.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/helpers/element_search.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/helpers/geometry.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/ios/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/ui/__init__.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/ui/state.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/tools/ui/stealth_state.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/gen-docs-sdk-ref.sh +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/setup.py +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/static/droidrun-dark.png +0 -0
- {droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/static/droidrun.png +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: droidrun
|
|
3
|
-
Version: 0.5.0.
|
|
3
|
+
Version: 0.5.0.dev2
|
|
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
|
|
@@ -109,7 +109,7 @@ async def screenshot_and_count(*, ctx, **kwargs) -> str:
|
|
|
109
109
|
screenshot = await ctx.driver.screenshot()
|
|
110
110
|
|
|
111
111
|
# Get UI state via the state provider
|
|
112
|
-
ui_state = await ctx.state_provider.get_state(
|
|
112
|
+
ui_state = await ctx.state_provider.get_state()
|
|
113
113
|
element_count = len(ui_state.elements) if ui_state else 0
|
|
114
114
|
|
|
115
115
|
return f"Screenshot taken. Found {element_count} UI elements"
|
|
@@ -99,7 +99,8 @@ All DeviceDriver implementations may provide these methods (check `supported` se
|
|
|
99
99
|
|
|
100
100
|
```python
|
|
101
101
|
class StateProvider:
|
|
102
|
-
|
|
102
|
+
def __init__(self, driver: DeviceDriver): ...
|
|
103
|
+
async def get_state(self) -> UIState: ...
|
|
103
104
|
```
|
|
104
105
|
|
|
105
106
|
Base class for state providers. Subclass to support different platforms.
|
|
@@ -298,8 +299,8 @@ async def my_action(param: str, *, ctx: ActionContext) -> ActionResult:
|
|
|
298
299
|
from droidrun.tools import AndroidStateProvider, AndroidDriver
|
|
299
300
|
|
|
300
301
|
# StateProvider handles fetching + parsing + retries
|
|
301
|
-
provider = AndroidStateProvider(tree_filter=my_filter, tree_formatter=my_formatter)
|
|
302
|
-
ui_state = await provider.get_state(
|
|
302
|
+
provider = AndroidStateProvider(driver, tree_filter=my_filter, tree_formatter=my_formatter)
|
|
303
|
+
ui_state = await provider.get_state()
|
|
303
304
|
|
|
304
305
|
# UIState provides element lookup
|
|
305
306
|
element = ui_state.get_element(5)
|
|
@@ -290,7 +290,7 @@ class CodeActAgent(Workflow):
|
|
|
290
290
|
|
|
291
291
|
# Get device state
|
|
292
292
|
try:
|
|
293
|
-
ui_state = await self.state_provider.get_state(
|
|
293
|
+
ui_state = await self.state_provider.get_state()
|
|
294
294
|
self.action_ctx.ui = ui_state
|
|
295
295
|
|
|
296
296
|
# Update shared state
|
|
@@ -240,7 +240,7 @@ class FastAgent(Workflow):
|
|
|
240
240
|
|
|
241
241
|
# Get device state
|
|
242
242
|
try:
|
|
243
|
-
ui_state = await self.state_provider.get_state(
|
|
243
|
+
ui_state = await self.state_provider.get_state()
|
|
244
244
|
self.action_ctx.ui = ui_state
|
|
245
245
|
|
|
246
246
|
# Update shared state
|
|
@@ -430,12 +430,14 @@ class DroidAgent(Workflow):
|
|
|
430
430
|
self.state_provider = self._injected_state_provider
|
|
431
431
|
elif is_ios:
|
|
432
432
|
self.state_provider = IOSStateProvider(
|
|
433
|
+
driver,
|
|
433
434
|
use_normalized=self.config.agent.use_normalized_coordinates,
|
|
434
435
|
)
|
|
435
436
|
else:
|
|
436
437
|
tree_filter = ConciseFilter() if vision_enabled else DetailedFilter()
|
|
437
438
|
tree_formatter = IndexedFormatter()
|
|
438
439
|
self.state_provider = AndroidStateProvider(
|
|
440
|
+
driver,
|
|
439
441
|
tree_filter=tree_filter,
|
|
440
442
|
tree_formatter=tree_formatter,
|
|
441
443
|
use_normalized=self.config.agent.use_normalized_coordinates,
|
|
@@ -377,7 +377,7 @@ class ManagerAgent(Workflow):
|
|
|
377
377
|
logger.debug("💬 Preparing manager context...")
|
|
378
378
|
|
|
379
379
|
# Get and format device state
|
|
380
|
-
ui_state = await self.state_provider.get_state(
|
|
380
|
+
ui_state = await self.state_provider.get_state()
|
|
381
381
|
self.action_ctx.ui = ui_state
|
|
382
382
|
|
|
383
383
|
# Update shared state (previous ← current, current ← new)
|
{droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/agent/manager/stateless_manager_agent.py
RENAMED
|
@@ -176,7 +176,7 @@ class StatelessManagerAgent(Workflow):
|
|
|
176
176
|
async def prepare_context(
|
|
177
177
|
self, ctx: Context, ev: StartEvent
|
|
178
178
|
) -> ManagerContextEvent:
|
|
179
|
-
ui_state = await self.state_provider.get_state(
|
|
179
|
+
ui_state = await self.state_provider.get_state()
|
|
180
180
|
self.action_ctx.ui = ui_state
|
|
181
181
|
|
|
182
182
|
self.shared_state.previous_formatted_device_state = (
|
|
@@ -48,12 +48,13 @@ class IOSStateProvider(StateProvider):
|
|
|
48
48
|
|
|
49
49
|
supported = {"element_index", "convert_point"}
|
|
50
50
|
|
|
51
|
-
def __init__(self, use_normalized: bool = False) -> None:
|
|
51
|
+
def __init__(self, driver: DeviceDriver, use_normalized: bool = False) -> None:
|
|
52
|
+
super().__init__(driver)
|
|
52
53
|
# TODO: normalized coordinates untested on iOS
|
|
53
54
|
self.use_normalized = use_normalized
|
|
54
55
|
|
|
55
|
-
async def get_state(self
|
|
56
|
-
raw = await driver.get_ui_tree()
|
|
56
|
+
async def get_state(self) -> UIState:
|
|
57
|
+
raw = await self.driver.get_ui_tree()
|
|
57
58
|
a11y_text = raw.get("a11y_raw", "")
|
|
58
59
|
phone_state = raw.get("phone_state", {})
|
|
59
60
|
|
|
@@ -26,7 +26,10 @@ class StateProvider:
|
|
|
26
26
|
|
|
27
27
|
supported: set[str] = set()
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
def __init__(self, driver: "DeviceDriver") -> None:
|
|
30
|
+
self.driver = driver
|
|
31
|
+
|
|
32
|
+
async def get_state(self) -> UIState:
|
|
30
33
|
raise NotImplementedError
|
|
31
34
|
|
|
32
35
|
|
|
@@ -41,17 +44,19 @@ class AndroidStateProvider(StateProvider):
|
|
|
41
44
|
|
|
42
45
|
def __init__(
|
|
43
46
|
self,
|
|
47
|
+
driver: "DeviceDriver",
|
|
44
48
|
tree_filter: "TreeFilter",
|
|
45
49
|
tree_formatter: "TreeFormatter",
|
|
46
50
|
use_normalized: bool = False,
|
|
47
51
|
stealth: bool = False,
|
|
48
52
|
) -> None:
|
|
53
|
+
super().__init__(driver)
|
|
49
54
|
self.tree_filter = tree_filter
|
|
50
55
|
self.tree_formatter = tree_formatter
|
|
51
56
|
self.use_normalized = use_normalized
|
|
52
57
|
self._ui_cls = StealthUIState if stealth else UIState
|
|
53
58
|
|
|
54
|
-
async def get_state(self
|
|
59
|
+
async def get_state(self) -> UIState:
|
|
55
60
|
max_retries = 3
|
|
56
61
|
last_error = None
|
|
57
62
|
|
|
@@ -59,7 +64,7 @@ class AndroidStateProvider(StateProvider):
|
|
|
59
64
|
try:
|
|
60
65
|
logger.debug(f"Getting state (attempt {attempt + 1}/{max_retries})")
|
|
61
66
|
|
|
62
|
-
combined_data = await driver.get_ui_tree()
|
|
67
|
+
combined_data = await self.driver.get_ui_tree()
|
|
63
68
|
|
|
64
69
|
if "error" in combined_data:
|
|
65
70
|
raise Exception(
|
|
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
|
{droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/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.0.dev1 → droidrun-0.5.0.dev2}/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
|
|
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.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/codeact/tools_system.jinja2
RENAMED
|
File without changes
|
{droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/codeact/tools_user.jinja2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config/prompts/manager/stateless.jinja2
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
|
{droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/config_manager/migrations/v002_add_code_exec.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/credential_manager/credential_manager.py
RENAMED
|
File without changes
|
{droidrun-0.5.0.dev1 → droidrun-0.5.0.dev2}/droidrun/credential_manager/file_credential_manager.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
|
|
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
|