droidrun 0.5.1.dev3__tar.gz → 0.5.3__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.dev3 → droidrun-0.5.3}/PKG-INFO +2 -8
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/README.md +1 -7
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/SKILL.md +4 -4
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/concepts/architecture.mdx +3 -18
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/concepts/events-and-workflows.mdx +12 -50
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/concepts/prompts.mdx +3 -12
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/concepts/shared-state.mdx +4 -4
- droidrun-0.5.3/docs/docs.json +119 -0
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/features/app-cards.mdx +4 -4
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/features/credentials.mdx +8 -8
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/features/custom-tools.mdx +3 -3
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/features/custom-variables.mdx +10 -11
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/features/structured-output.mdx +10 -10
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/features/tracing.mdx +9 -9
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/guides/cli.mdx +67 -37
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/guides/device-setup.mdx +12 -12
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/guides/docker.mdx +3 -3
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/guides/overview.mdx +4 -4
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/overview.mdx +9 -9
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/quickstart.mdx +7 -7
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/sdk/adb-tools.mdx +15 -17
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/sdk/base-tools.mdx +10 -9
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/sdk/configuration.mdx +26 -133
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/sdk/droid-agent.mdx +72 -38
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/sdk/ios-tools.mdx +16 -16
- {droidrun-0.5.1.dev3/docs/v5 → droidrun-0.5.3/docs}/sdk/reference.mdx +2 -2
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/__init__.py +2 -6
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/__main__.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/droid/droid_agent.py +78 -282
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/droid/events.py +0 -37
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/droid/state.py +3 -19
- droidrun-0.5.3/droidrun/agent/external/README.md +131 -0
- droidrun-0.5.3/droidrun/agent/external/__init__.py +91 -0
- droidrun-0.5.3/droidrun/agent/fast_agent/__init__.py +3 -0
- droidrun-0.5.3/droidrun/agent/fast_agent/events.py +45 -0
- droidrun-0.5.1.dev3/droidrun/agent/codeact/tools_agent.py → droidrun-0.5.3/droidrun/agent/fast_agent/fast_agent.py +6 -9
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/manager/manager_agent.py +2 -26
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/manager/stateless_manager_agent.py +2 -9
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/tool_registry.py +3 -4
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/utils/__init__.py +1 -8
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/utils/actions.py +5 -16
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/utils/chat_utils.py +1 -34
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/utils/llm_loader.py +14 -18
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/utils/llm_picker.py +3 -3
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/utils/prompt_resolver.py +1 -2
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/utils/signatures.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/utils/tracing_setup.py +32 -10
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/utils/trajectory.py +2 -2
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/__init__.py +1 -1
- droidrun-0.5.3/droidrun/cli/device_commands.py +276 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/doctor.py +27 -9
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/event_handler.py +1 -56
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/logs.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/main.py +42 -23
- droidrun-0.5.3/droidrun/cli/tui/__init__.py +12 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/app.py +4 -4
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/css/app.tcss +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/settings/data.py +11 -16
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config/app_cards/README.md +3 -3
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config/credentials_example.yaml +2 -2
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config/prompts/manager/rev1.jinja2 +0 -67
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config/prompts/manager/stateless.jinja2 +0 -11
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config/prompts/manager/system.jinja2 +0 -63
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config/prompts/manager/trained.jinja2 +0 -4
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config_example.yaml +15 -148
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config_manager/__init__.py +2 -14
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config_manager/config_manager.py +13 -58
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config_manager/loader.py +7 -7
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config_manager/migrations/__init__.py +1 -1
- droidrun-0.5.3/droidrun/config_manager/migrations/v004_remove_deprecated_agents.py +41 -0
- droidrun-0.5.3/droidrun/config_manager/migrations/v005_remove_external_agents.py +15 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config_manager/path_resolver.py +2 -2
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/credential_manager/__init__.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/log_handlers.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/macro/__init__.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/macro/__main__.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/macro/cli.py +5 -2
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/macro/replay.py +17 -4
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/mcp/__init__.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/mcp/adapter.py +3 -3
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/portal.py +5 -5
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/telemetry/events.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/telemetry/langfuse_processor.py +5 -9
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/telemetry/phoenix.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/telemetry/tracker.py +2 -2
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/__init__.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/android/portal_client.py +131 -21
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/driver/__init__.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/driver/android.py +17 -3
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/driver/base.py +11 -3
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/driver/cloud.py +38 -14
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/driver/ios.py +18 -17
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/driver/recording.py +7 -3
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/driver/stealth.py +4 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/filters/concise_filter.py +1 -1
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/formatters/indexed_formatter.py +3 -3
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/ui/__init__.py +1 -1
- droidrun-0.5.3/droidrun/tools/ui/provider.py +222 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/pyproject.toml +1 -1
- droidrun-0.5.3/static/droidrun-dark.png +0 -0
- droidrun-0.5.3/static/droidrun.png +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/uv.lock +1 -1
- droidrun-0.5.1.dev3/CHANGELOG.md +0 -54
- droidrun-0.5.1.dev3/docs/docs.json +0 -244
- droidrun-0.5.1.dev3/docs/v3/concepts/agent.mdx +0 -123
- droidrun-0.5.1.dev3/docs/v3/concepts/android-tools.mdx +0 -103
- droidrun-0.5.1.dev3/docs/v3/concepts/models.mdx +0 -31
- droidrun-0.5.1.dev3/docs/v3/concepts/portal-app.mdx +0 -54
- droidrun-0.5.1.dev3/docs/v3/guides/cli.mdx +0 -171
- droidrun-0.5.1.dev3/docs/v3/guides/gemini.mdx +0 -92
- droidrun-0.5.1.dev3/docs/v3/guides/ollama.mdx +0 -114
- droidrun-0.5.1.dev3/docs/v3/guides/openailike.mdx +0 -106
- droidrun-0.5.1.dev3/docs/v3/guides/overview.mdx +0 -58
- droidrun-0.5.1.dev3/docs/v3/guides/telemetry.mdx +0 -36
- droidrun-0.5.1.dev3/docs/v3/images/portal_apk.png +0 -0
- droidrun-0.5.1.dev3/docs/v3/overview.mdx +0 -35
- droidrun-0.5.1.dev3/docs/v3/quickstart.mdx +0 -95
- droidrun-0.5.1.dev3/docs/v4/concepts/architecture.mdx +0 -134
- droidrun-0.5.1.dev3/docs/v4/concepts/events-and-workflows.mdx +0 -436
- droidrun-0.5.1.dev3/docs/v4/concepts/prompts.mdx +0 -325
- droidrun-0.5.1.dev3/docs/v4/concepts/scripter-agent.mdx +0 -159
- droidrun-0.5.1.dev3/docs/v4/concepts/shared-state.mdx +0 -54
- droidrun-0.5.1.dev3/docs/v4/features/app-cards.mdx +0 -288
- droidrun-0.5.1.dev3/docs/v4/features/credentials.mdx +0 -244
- droidrun-0.5.1.dev3/docs/v4/features/custom-tools.mdx +0 -386
- droidrun-0.5.1.dev3/docs/v4/features/custom-variables.mdx +0 -204
- droidrun-0.5.1.dev3/docs/v4/features/structured-output.mdx +0 -274
- droidrun-0.5.1.dev3/docs/v4/features/tracing.mdx +0 -243
- droidrun-0.5.1.dev3/docs/v4/guides/cli.mdx +0 -475
- droidrun-0.5.1.dev3/docs/v4/guides/device-setup.mdx +0 -437
- droidrun-0.5.1.dev3/docs/v4/guides/docker.mdx +0 -141
- droidrun-0.5.1.dev3/docs/v4/guides/migration-v3-to-v4.mdx +0 -674
- droidrun-0.5.1.dev3/docs/v4/guides/overview.mdx +0 -47
- droidrun-0.5.1.dev3/docs/v4/overview.mdx +0 -52
- droidrun-0.5.1.dev3/docs/v4/quickstart.mdx +0 -173
- droidrun-0.5.1.dev3/docs/v4/sdk/adb-tools.mdx +0 -873
- droidrun-0.5.1.dev3/docs/v4/sdk/base-tools.mdx +0 -550
- droidrun-0.5.1.dev3/docs/v4/sdk/configuration.mdx +0 -694
- droidrun-0.5.1.dev3/docs/v4/sdk/droid-agent.mdx +0 -430
- droidrun-0.5.1.dev3/docs/v4/sdk/ios-tools.mdx +0 -634
- droidrun-0.5.1.dev3/docs/v4/sdk/reference.mdx +0 -49
- droidrun-0.5.1.dev3/docs/v5/concepts/scripter-agent.mdx +0 -162
- droidrun-0.5.1.dev3/docs/v5/features/telemetry.mdx +0 -45
- droidrun-0.5.1.dev3/droidrun/agent/codeact/__init__.py +0 -4
- droidrun-0.5.1.dev3/droidrun/agent/codeact/codeact_agent.py +0 -522
- droidrun-0.5.1.dev3/droidrun/agent/codeact/events.py +0 -84
- droidrun-0.5.1.dev3/droidrun/agent/external/__init__.py +0 -41
- droidrun-0.5.1.dev3/droidrun/agent/external/autoglm.py +0 -1119
- droidrun-0.5.1.dev3/droidrun/agent/external/mai_ui.py +0 -819
- droidrun-0.5.1.dev3/droidrun/agent/oneflows/text_manipulator.py +0 -215
- droidrun-0.5.1.dev3/droidrun/agent/scripter/__init__.py +0 -7
- droidrun-0.5.1.dev3/droidrun/agent/scripter/events.py +0 -46
- droidrun-0.5.1.dev3/droidrun/agent/scripter/scripter_agent.py +0 -331
- droidrun-0.5.1.dev3/droidrun/agent/utils/code_checker.py +0 -36
- droidrun-0.5.1.dev3/droidrun/agent/utils/executer.py +0 -231
- droidrun-0.5.1.dev3/droidrun/cli/tui/__init__.py +0 -12
- droidrun-0.5.1.dev3/droidrun/config/prompts/codeact/system.jinja2 +0 -124
- droidrun-0.5.1.dev3/droidrun/config/prompts/codeact/user.jinja2 +0 -5
- droidrun-0.5.1.dev3/droidrun/config/prompts/scripter/system.jinja2 +0 -86
- droidrun-0.5.1.dev3/droidrun/config_manager/safe_execution.py +0 -282
- droidrun-0.5.1.dev3/droidrun/tools/ui/provider.py +0 -122
- droidrun-0.5.1.dev3/static/droidrun-dark.png +0 -0
- droidrun-0.5.1.dev3/static/droidrun.png +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/.dockerignore +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/.github/workflows/black.yml +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/.github/workflows/bounty.yml +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/.github/workflows/claude-code-review.yml +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/.github/workflows/claude.yml +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/.github/workflows/docker.yml +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/.github/workflows/publish.yml +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/.gitignore +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/.python-version +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/CONTRIBUTING.md +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/Dockerfile +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/LICENSE +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/MANIFEST.in +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/docs/ favicon.svg +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/docs/custom.css +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/docs/favicon-dark.png +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/docs/favicon.png +0 -0
- {droidrun-0.5.1.dev3/docs/v4 → droidrun-0.5.3/docs}/features/telemetry.mdx +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/docs/logo/dark.png +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/docs/logo/light.png +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/action_context.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/action_result.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/common/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/common/constants.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/common/events.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/droid/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/executor/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/executor/events.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/executor/executor_agent.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/executor/prompts.py +0 -0
- {droidrun-0.5.1.dev3/droidrun/agent/codeact → droidrun-0.5.3/droidrun/agent/fast_agent}/xml_parser.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/manager/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/manager/events.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/manager/prompts.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/oneflows/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/oneflows/app_starter_workflow.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/oneflows/structured_output_agent.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/trajectory/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/trajectory/writer.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/usage.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/agent/utils/inference.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/app_cards/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/app_cards/app_card_provider.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/app_cards/providers/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/app_cards/providers/composite_provider.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/app_cards/providers/local_provider.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/app_cards/providers/server_provider.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/commands.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/css/advanced_tab.tcss +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/css/models_tab.tcss +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/css/settings_screen.tcss +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/settings/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/settings/advanced_tab.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/settings/agent_tab.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/settings/models_tab.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/settings/section.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/settings/settings_screen.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/widgets/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/widgets/command_dropdown.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/widgets/device_picker.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/widgets/input_bar.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/widgets/log_view.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/cli/tui/widgets/status_bar.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config/app_cards/app_cards.json +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config/app_cards/gmail.md +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config/prompts/executor/rev1.jinja2 +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config/prompts/executor/system.jinja2 +0 -0
- /droidrun-0.5.1.dev3/droidrun/config/prompts/codeact/tools_system.jinja2 → /droidrun-0.5.3/droidrun/config/prompts/fast_agent/system.jinja2 +0 -0
- /droidrun-0.5.1.dev3/droidrun/config/prompts/codeact/tools_user.jinja2 → /droidrun-0.5.3/droidrun/config/prompts/fast_agent/user.jinja2 +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config_manager/env_keys.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config_manager/migrations/v002_add_code_exec.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config_manager/migrations/v003_add_auto_setup.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/config_manager/prompt_loader.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/credential_manager/credential_manager.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/credential_manager/file_credential_manager.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/mcp/client.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/mcp/config.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/telemetry/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/android/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/filters/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/filters/base.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/filters/detailed_filter.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/formatters/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/formatters/base.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/helpers/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/helpers/coordinate.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/helpers/element_search.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/helpers/geometry.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/ios/__init__.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/ui/ios_provider.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/ui/state.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/droidrun/tools/ui/stealth_state.py +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/gen-docs-sdk-ref.sh +0 -0
- {droidrun-0.5.1.dev3 → droidrun-0.5.3}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: droidrun
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.3
|
|
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
|
|
@@ -71,7 +71,6 @@ Description-Content-Type: text/markdown
|
|
|
71
71
|
<img src="./static/droidrun.png" width="full">
|
|
72
72
|
</picture>
|
|
73
73
|
|
|
74
|
-
<h3 align="center"><em>DroidRun is not affiliated with, endorsed by, or sponsored by Google LLC or the Android Open Source Project. Android™ is a trademark of Google LLC.</em></h3>
|
|
75
74
|
|
|
76
75
|
<div align="center">
|
|
77
76
|
|
|
@@ -107,13 +106,8 @@ Description-Content-Type: text/markdown
|
|
|
107
106
|
|
|
108
107
|
|
|
109
108
|
|
|
110
|
-
|
|
109
|
+
Mobilerun is a cloud solution powered by Droidrun a powerful framework for controlling Android and iOS devices through LLM agents. It allows you to automate device interactions using natural language commands. [Checkout our benchmark results](https://droidrun.ai/benchmark)
|
|
111
110
|
|
|
112
|
-
## ⚖️ Disclaimer
|
|
113
|
-
|
|
114
|
-
Droidrun is an independent, open-source project and is not affiliated with, endorsed by, or sponsored by Google LLC or the Android Open Source Project. "Android" is a trademark of Google LLC. All other trademarks and brand names mentioned are the property of their respective owners. DroidRun is a third-party tool that interacts with the Android platform but is not part of the Android ecosystem.
|
|
115
|
-
|
|
116
|
-
## Why Droidrun?
|
|
117
111
|
|
|
118
112
|
- 🤖 Control Android and iOS devices with natural language commands
|
|
119
113
|
- 🔀 Supports multiple LLM providers (OpenAI, Anthropic, Gemini, Ollama, DeepSeek)
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
<img src="./static/droidrun.png" width="full">
|
|
5
5
|
</picture>
|
|
6
6
|
|
|
7
|
-
<h3 align="center"><em>DroidRun is not affiliated with, endorsed by, or sponsored by Google LLC or the Android Open Source Project. Android™ is a trademark of Google LLC.</em></h3>
|
|
8
7
|
|
|
9
8
|
<div align="center">
|
|
10
9
|
|
|
@@ -40,13 +39,8 @@
|
|
|
40
39
|
|
|
41
40
|
|
|
42
41
|
|
|
43
|
-
|
|
42
|
+
Mobilerun is a cloud solution powered by Droidrun a powerful framework for controlling Android and iOS devices through LLM agents. It allows you to automate device interactions using natural language commands. [Checkout our benchmark results](https://droidrun.ai/benchmark)
|
|
44
43
|
|
|
45
|
-
## ⚖️ Disclaimer
|
|
46
|
-
|
|
47
|
-
Droidrun is an independent, open-source project and is not affiliated with, endorsed by, or sponsored by Google LLC or the Android Open Source Project. "Android" is a trademark of Google LLC. All other trademarks and brand names mentioned are the property of their respective owners. DroidRun is a third-party tool that interacts with the Android platform but is not part of the Android ecosystem.
|
|
48
|
-
|
|
49
|
-
## Why Droidrun?
|
|
50
44
|
|
|
51
45
|
- 🤖 Control Android and iOS devices with natural language commands
|
|
52
46
|
- 🔀 Supports multiple LLM providers (OpenAI, Anthropic, Gemini, Ollama, DeepSeek)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: droidrun-docs
|
|
3
|
-
description:
|
|
3
|
+
description: Droidrun documentation reference. Use when users ask about Droidrun setup, configuration, SDK usage, CLI commands, device setup, agents, architecture, app cards, credentials, tracing, Docker, migration, structured output, or any Droidrun "how do I..." questions.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Droidrun
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Droidrun is an open-source (MIT) framework for controlling Android and iOS devices through LLM agents.
|
|
9
9
|
It enables mobile automation using natural language commands.
|
|
10
10
|
|
|
11
11
|
- **GitHub**: https://github.com/droidrun/droidrun
|
|
@@ -17,7 +17,7 @@ It enables mobile automation using natural language commands.
|
|
|
17
17
|
|
|
18
18
|
## Architecture
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Droidrun uses a multi-agent architecture coordinated by `DroidAgent`:
|
|
21
21
|
|
|
22
22
|
- **Reasoning mode** (`reasoning=True`): Manager plans → Executor acts → loop until done
|
|
23
23
|
- **Direct mode** (`reasoning=False`): CodeActAgent generates and executes Python code directly
|
|
@@ -9,7 +9,7 @@ Droidrun uses a **multi-agent architecture** where specialized agents work toget
|
|
|
9
9
|
|
|
10
10
|
```
|
|
11
11
|
DroidAgent (orchestrator)
|
|
12
|
-
├── Reasoning Mode: ManagerAgent → ExecutorAgent
|
|
12
|
+
├── Reasoning Mode: ManagerAgent → ExecutorAgent
|
|
13
13
|
└── Direct Mode: FastAgent
|
|
14
14
|
```
|
|
15
15
|
|
|
@@ -53,7 +53,7 @@ Executes atomic actions for each subgoal. Reasoning mode only.
|
|
|
53
53
|
### FastAgent (Direct Executor)
|
|
54
54
|
Uses XML tool-calling for device interaction. Direct mode only.
|
|
55
55
|
|
|
56
|
-
**Location**: `droidrun/agent/
|
|
56
|
+
**Location**: `droidrun/agent/fast_agent/fast_agent.py`
|
|
57
57
|
|
|
58
58
|
**Available Actions**:
|
|
59
59
|
```python
|
|
@@ -65,11 +65,6 @@ wait(duration), open_app(text),
|
|
|
65
65
|
remember(information), complete(success, reason)
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
### ScripterAgent (Off-Device)
|
|
69
|
-
Executes Python for API calls, file operations, and computations. Triggered by Manager when needed.
|
|
70
|
-
|
|
71
|
-
**Location**: `droidrun/agent/scripter/`
|
|
72
|
-
|
|
73
68
|
## Configuration
|
|
74
69
|
|
|
75
70
|
Configure different LLMs per agent:
|
|
@@ -84,11 +79,7 @@ llm_profiles:
|
|
|
84
79
|
model: gpt-4o
|
|
85
80
|
fast_agent:
|
|
86
81
|
provider: GoogleGenAI
|
|
87
|
-
model:
|
|
88
|
-
scripter:
|
|
89
|
-
provider: OpenAI
|
|
90
|
-
model: gpt-4o
|
|
91
|
-
|
|
82
|
+
model: gemini-3.1-flash-lite-preview
|
|
92
83
|
agent:
|
|
93
84
|
reasoning: true # Enable Manager/Executor workflow
|
|
94
85
|
max_steps: 15 # Maximum execution steps (global)
|
|
@@ -99,10 +90,6 @@ agent:
|
|
|
99
90
|
fast_agent:
|
|
100
91
|
vision: false
|
|
101
92
|
parallel_tools: true
|
|
102
|
-
safe_execution: false
|
|
103
|
-
scripter:
|
|
104
|
-
max_steps: 10 # Scripter-specific max steps
|
|
105
|
-
safe_execution: false
|
|
106
93
|
```
|
|
107
94
|
|
|
108
95
|
## When to Use Each Mode
|
|
@@ -123,7 +110,6 @@ All agents share `DroidAgentState` for coordination:
|
|
|
123
110
|
- Action history and outcomes
|
|
124
111
|
- Error tracking and recovery
|
|
125
112
|
- Memory and context
|
|
126
|
-
- Scripter results
|
|
127
113
|
- Current plan and progress
|
|
128
114
|
|
|
129
115
|
## Quick Reference
|
|
@@ -134,4 +120,3 @@ All agents share `DroidAgentState` for coordination:
|
|
|
134
120
|
| ManagerAgent | Planner | Strategy, recovery | Reasoning | `agent.manager.*` |
|
|
135
121
|
| ExecutorAgent | Actor | Action execution | Reasoning | `agent.executor.*` |
|
|
136
122
|
| FastAgent | Direct | Simple tasks | Direct | `agent.fast_agent.*` |
|
|
137
|
-
| ScripterAgent | Python Executor | APIs, files, data | Reasoning | `agent.scripter.*` |
|
|
@@ -5,9 +5,9 @@ description: "How to consume real-time events from DroidAgent execution."
|
|
|
5
5
|
|
|
6
6
|
## Overview
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Droidrun provides **real-time event streaming** that gives you visibility into agent execution as it happens. This allows you to build UIs, logging systems, or monitoring tools that react to agent actions in real-time.
|
|
9
9
|
|
|
10
|
-
Under the hood,
|
|
10
|
+
Under the hood, Droidrun uses [llama-index workflows](https://docs.llamaindex.ai/en/stable/understanding/workflows/) - an event-driven orchestration system that powers the agent architecture.
|
|
11
11
|
|
|
12
12
|
## Basic Usage
|
|
13
13
|
|
|
@@ -87,24 +87,16 @@ class ExecutorResultEvent(Event):
|
|
|
87
87
|
error: str
|
|
88
88
|
summary: str
|
|
89
89
|
|
|
90
|
-
#
|
|
91
|
-
class
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
task: str
|
|
96
|
-
message: str
|
|
97
|
-
success: bool
|
|
98
|
-
code_executions: int
|
|
99
|
-
|
|
100
|
-
# Text manipulation
|
|
101
|
-
class TextManipulatorInputEvent(Event):
|
|
102
|
-
task: str
|
|
90
|
+
# External user message events
|
|
91
|
+
class ExternalUserMessageAppliedEvent(Event):
|
|
92
|
+
message_ids: List[str]
|
|
93
|
+
consumer: str
|
|
94
|
+
step_number: int
|
|
103
95
|
|
|
104
|
-
class
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
96
|
+
class ExternalUserMessageDroppedEvent(Event):
|
|
97
|
+
message_ids: List[str]
|
|
98
|
+
reason: str
|
|
99
|
+
step_number: int
|
|
108
100
|
```
|
|
109
101
|
</Accordion>
|
|
110
102
|
|
|
@@ -182,32 +174,6 @@ class FastAgentEndEvent(Event):
|
|
|
182
174
|
```
|
|
183
175
|
</Accordion>
|
|
184
176
|
|
|
185
|
-
<Accordion title="Scripter Events (Internal)">
|
|
186
|
-
Internal to ScripterAgent, for off-device script execution.
|
|
187
|
-
|
|
188
|
-
```python
|
|
189
|
-
class ScripterInputEvent(Event):
|
|
190
|
-
pass
|
|
191
|
-
|
|
192
|
-
class ScripterThinkingEvent(Event):
|
|
193
|
-
thought: str
|
|
194
|
-
code: Optional[str] = None
|
|
195
|
-
full_response: str = ""
|
|
196
|
-
usage: Optional[UsageResult] = None
|
|
197
|
-
|
|
198
|
-
class ScripterExecutionEvent(Event):
|
|
199
|
-
code: str
|
|
200
|
-
|
|
201
|
-
class ScripterExecutionResultEvent(Event):
|
|
202
|
-
output: str
|
|
203
|
-
|
|
204
|
-
class ScripterEndEvent(Event):
|
|
205
|
-
message: str
|
|
206
|
-
success: bool
|
|
207
|
-
code_executions: int = 0
|
|
208
|
-
```
|
|
209
|
-
</Accordion>
|
|
210
|
-
|
|
211
177
|
<Accordion title="Common, Visual & Telemetry Events">
|
|
212
178
|
```python
|
|
213
179
|
# Common events (droidrun/agent/common/events.py)
|
|
@@ -362,10 +328,6 @@ async def monitor_execution(goal: str):
|
|
|
362
328
|
- Tool execution: `ToolExecutionEvent` (after every tool dispatch)
|
|
363
329
|
- Visual: `ScreenshotEvent`, `RecordUIStateEvent` (when enabled)
|
|
364
330
|
|
|
365
|
-
**ScripterAgent** (when triggered by `<script>` tags) emits:
|
|
366
|
-
- Coordination: `ScripterExecutorInputEvent`, `ScripterExecutorResultEvent`
|
|
367
|
-
- Internal Scripter: `ScripterInputEvent`, `ScripterThinkingEvent`, `ScripterExecutionEvent`, `ScripterExecutionResultEvent`, `ScripterEndEvent`
|
|
368
|
-
|
|
369
331
|
**All Modes** emit:
|
|
370
332
|
- Finalization: `FinalizeEvent`, `ResultEvent`
|
|
371
333
|
- Telemetry: `DroidAgentInitEvent`, `PackageVisitEvent`, `DroidAgentFinalizeEvent` (when telemetry enabled)
|
|
@@ -374,7 +336,7 @@ async def monitor_execution(goal: str):
|
|
|
374
336
|
|
|
375
337
|
**Coordination Events** - Used for workflow routing between agents (minimal data)
|
|
376
338
|
- Located in `droidrun/agent/droid/events.py`
|
|
377
|
-
- Examples: `ManagerPlanEvent`, `ExecutorResultEvent`, `
|
|
339
|
+
- Examples: `ManagerPlanEvent`, `ExecutorResultEvent`, `ExternalUserMessageAppliedEvent`
|
|
378
340
|
|
|
379
341
|
**Internal Events** - Used for streaming to frontend/logging (full debug data)
|
|
380
342
|
- Located in agent-specific event files
|
|
@@ -12,8 +12,7 @@ custom_prompts = {
|
|
|
12
12
|
"manager_system": "Your Jinja2 template here...",
|
|
13
13
|
"executor_system": "Another template...",
|
|
14
14
|
"fast_agent_system": "...",
|
|
15
|
-
"fast_agent_user": "..."
|
|
16
|
-
"scripter_system": "..."
|
|
15
|
+
"fast_agent_user": "..."
|
|
17
16
|
}
|
|
18
17
|
|
|
19
18
|
agent = DroidAgent(
|
|
@@ -41,7 +40,6 @@ agent = DroidAgent(
|
|
|
41
40
|
| `executor_system` | Executor | Action selection (only in reasoning mode) |
|
|
42
41
|
| `fast_agent_system` | FastAgent | Direct execution (always used) |
|
|
43
42
|
| `fast_agent_user` | FastAgent | Task input formatting (always used) |
|
|
44
|
-
| `scripter_system` | Scripter | Off-device Python execution (when enabled) |
|
|
45
43
|
|
|
46
44
|
## Context Variables
|
|
47
45
|
|
|
@@ -54,7 +52,6 @@ Each agent has access to different variables in its templates:
|
|
|
54
52
|
- `app_card` - App-specific guidance (empty if none available)
|
|
55
53
|
- `error_history` - List of recent failed actions with details
|
|
56
54
|
- `custom_tools_descriptions` - Custom tool documentation
|
|
57
|
-
- `scripter_execution_enabled` - Whether Scripter is available
|
|
58
55
|
- `available_secrets` - Available credential IDs
|
|
59
56
|
- `variables` - Custom variables passed to DroidAgent
|
|
60
57
|
- `output_schema` - Pydantic model schema (if provided)
|
|
@@ -83,12 +80,6 @@ Each agent has access to different variables in its templates:
|
|
|
83
80
|
- `goal` - Task description
|
|
84
81
|
- `variables` - Custom variables
|
|
85
82
|
|
|
86
|
-
### Scripter
|
|
87
|
-
|
|
88
|
-
- `task` - Task description from Manager
|
|
89
|
-
- `max_steps` - Maximum execution steps allowed
|
|
90
|
-
- `available_libraries` - Descriptions of available Python libraries
|
|
91
|
-
|
|
92
83
|
## Example: Custom Manager Prompt
|
|
93
84
|
|
|
94
85
|
```python
|
|
@@ -270,7 +261,7 @@ Follow instructions exactly. Do not make assumptions.
|
|
|
270
261
|
|
|
271
262
|
```python
|
|
272
263
|
from droidrun import DroidAgent
|
|
273
|
-
from droidrun.config_manager import
|
|
264
|
+
from droidrun.config_manager import DroidConfig
|
|
274
265
|
|
|
275
266
|
# E-commerce automation with custom prompts
|
|
276
267
|
ecommerce_prompts = {
|
|
@@ -308,7 +299,7 @@ Output:
|
|
|
308
299
|
"""
|
|
309
300
|
}
|
|
310
301
|
|
|
311
|
-
config =
|
|
302
|
+
config = DroidConfig()
|
|
312
303
|
agent = DroidAgent(
|
|
313
304
|
goal="Buy iPhone 15 Pro from Amazon",
|
|
314
305
|
config=config,
|
|
@@ -5,7 +5,7 @@ description: 'DroidAgentState - the coordination mechanism for multi-agent workf
|
|
|
5
5
|
|
|
6
6
|
## What is Shared State?
|
|
7
7
|
|
|
8
|
-
**DroidAgentState** is a Pydantic model that serves as the **central coordination mechanism** for
|
|
8
|
+
**DroidAgentState** is a Pydantic model that serves as the **central coordination mechanism** for Droidrun's multi-agent workflow. It's a shared data structure that all agents (Manager, Executor, FastAgent) can read from and write to.
|
|
9
9
|
|
|
10
10
|
Shared state enables:
|
|
11
11
|
- **Cross-agent communication**: Agents share information about actions, results, and errors
|
|
@@ -54,9 +54,9 @@ class DroidAgentState(BaseModel):
|
|
|
54
54
|
# Message history (for stateful agents)
|
|
55
55
|
message_history: List[ChatMessage] = [] # Preserves ThinkingBlock, ImageBlock, etc.
|
|
56
56
|
|
|
57
|
-
#
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
# External user messages (mid-run injection queue)
|
|
58
|
+
pending_user_messages: List[QueuedUserMessage] = [] # Queued external messages
|
|
59
|
+
workflow_completed: bool = False # Set True at finalization
|
|
60
60
|
|
|
61
61
|
# Custom variables
|
|
62
62
|
custom_variables: Dict = {} # User-defined data
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://mintlify.com/docs.json",
|
|
3
|
+
"theme": "almond",
|
|
4
|
+
"name": "Droidrun",
|
|
5
|
+
"colors": {
|
|
6
|
+
"primary": "#0D9373",
|
|
7
|
+
"light": "#07C983",
|
|
8
|
+
"dark": "#0D9373"
|
|
9
|
+
},
|
|
10
|
+
"favicon": {
|
|
11
|
+
"light": "/favicon.png",
|
|
12
|
+
"dark": "/favicon-dark.png"
|
|
13
|
+
},
|
|
14
|
+
"icons": {
|
|
15
|
+
"library": "lucide"
|
|
16
|
+
},
|
|
17
|
+
"styles": [
|
|
18
|
+
"/custom.css"
|
|
19
|
+
],
|
|
20
|
+
"integrations": {
|
|
21
|
+
"posthog": {
|
|
22
|
+
"apiKey": "phc_3BmiVdnS2Wvlm007eHGZLBPwRFCVVWzIZXbB0u3ZH1d",
|
|
23
|
+
"apiHost": "https://pineapple.droidrun.ai"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"navigation": {
|
|
27
|
+
"tabs": [
|
|
28
|
+
{
|
|
29
|
+
"tab": "Docs",
|
|
30
|
+
"icon": "book",
|
|
31
|
+
"groups": [
|
|
32
|
+
{
|
|
33
|
+
"group": "Introduction",
|
|
34
|
+
"pages": [
|
|
35
|
+
"/overview",
|
|
36
|
+
"/quickstart"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"group": "Features",
|
|
41
|
+
"pages": [
|
|
42
|
+
"/features/structured-output",
|
|
43
|
+
"/features/credentials",
|
|
44
|
+
"/features/app-cards",
|
|
45
|
+
"/features/custom-tools",
|
|
46
|
+
"/features/custom-variables",
|
|
47
|
+
"/features/tracing",
|
|
48
|
+
"/features/telemetry"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"group": "Guides",
|
|
53
|
+
"pages": [
|
|
54
|
+
"/guides/overview",
|
|
55
|
+
"/guides/device-setup",
|
|
56
|
+
"/guides/cli",
|
|
57
|
+
"/guides/docker"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"group": "Concepts",
|
|
62
|
+
"pages": [
|
|
63
|
+
"/concepts/architecture",
|
|
64
|
+
"/concepts/shared-state",
|
|
65
|
+
"/concepts/events-and-workflows",
|
|
66
|
+
"/concepts/prompts"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"group": "SDK Reference",
|
|
71
|
+
"pages": [
|
|
72
|
+
"/sdk/reference",
|
|
73
|
+
"/sdk/droid-agent",
|
|
74
|
+
"/sdk/adb-tools",
|
|
75
|
+
"/sdk/ios-tools",
|
|
76
|
+
"/sdk/base-tools",
|
|
77
|
+
"/sdk/configuration"
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"tab": "Cloud",
|
|
84
|
+
"icon": "cloud",
|
|
85
|
+
"href": "https://docs.mobilerun.ai"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"tab": "GitHub",
|
|
89
|
+
"icon": "github",
|
|
90
|
+
"href": "https://github.com/droidrun/droidrun"
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
"logo": {
|
|
95
|
+
"light": "/logo/light.png",
|
|
96
|
+
"dark": "/logo/dark.png",
|
|
97
|
+
"href": "https://droidrun.ai"
|
|
98
|
+
},
|
|
99
|
+
"navbar": {
|
|
100
|
+
"primary": {
|
|
101
|
+
"type": "button",
|
|
102
|
+
"label": "Join Discord",
|
|
103
|
+
"href": "https://discord.gg/gdekvkJFvn"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"footer": {
|
|
107
|
+
"socials": {
|
|
108
|
+
"github": "https://github.com/droidrun/droidrun",
|
|
109
|
+
"x": "https://x.com/droid_run",
|
|
110
|
+
"discord": "https://discord.gg/gdekvkJFvn",
|
|
111
|
+
"website": "https://droidrun.ai"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"errors": {
|
|
115
|
+
"404": {
|
|
116
|
+
"redirect": false
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -278,10 +278,10 @@ Loaded app card for com.google.android.gm from config/app_cards/gmail.md
|
|
|
278
278
|
|
|
279
279
|
## Related Documentation
|
|
280
280
|
|
|
281
|
-
- [CLI Usage](/
|
|
282
|
-
- [Configuration](/
|
|
283
|
-
- [Agent Architecture](/
|
|
284
|
-
- [Manager Agent](/
|
|
281
|
+
- [CLI Usage](/guides/cli) - Droidrun CLI command reference
|
|
282
|
+
- [Configuration](/sdk/configuration) - Configuration system details
|
|
283
|
+
- [Agent Architecture](/concepts/architecture) - How agents work
|
|
284
|
+
- [Manager Agent](/concepts/architecture#manageragent-planner) - Agent that uses app cards
|
|
285
285
|
|
|
286
286
|
---
|
|
287
287
|
|
|
@@ -17,7 +17,7 @@ Secure storage for passwords, API keys, and tokens.
|
|
|
17
17
|
|
|
18
18
|
```python
|
|
19
19
|
import asyncio
|
|
20
|
-
from droidrun import DroidAgent,
|
|
20
|
+
from droidrun import DroidAgent, DroidConfig
|
|
21
21
|
|
|
22
22
|
async def main():
|
|
23
23
|
# Define credentials directly
|
|
@@ -26,7 +26,7 @@ async def main():
|
|
|
26
26
|
"API_KEY": "sk-1234567890"
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
config =
|
|
29
|
+
config = DroidConfig()
|
|
30
30
|
|
|
31
31
|
agent = DroidAgent(
|
|
32
32
|
goal="Login to my app",
|
|
@@ -77,10 +77,10 @@ credentials:
|
|
|
77
77
|
3. **Use in code:**
|
|
78
78
|
|
|
79
79
|
```python
|
|
80
|
-
from droidrun import DroidAgent,
|
|
80
|
+
from droidrun import DroidAgent, DroidConfig
|
|
81
81
|
|
|
82
82
|
# Config loads credentials from file
|
|
83
|
-
config =
|
|
83
|
+
config = DroidConfig.from_yaml("config.yaml")
|
|
84
84
|
|
|
85
85
|
agent = DroidAgent(
|
|
86
86
|
goal="Login to Gmail",
|
|
@@ -121,7 +121,7 @@ The agent never sees the actual value - only the secret ID.
|
|
|
121
121
|
|
|
122
122
|
```python
|
|
123
123
|
import asyncio
|
|
124
|
-
from droidrun import DroidAgent,
|
|
124
|
+
from droidrun import DroidAgent, DroidConfig
|
|
125
125
|
|
|
126
126
|
async def main():
|
|
127
127
|
credentials = {
|
|
@@ -129,7 +129,7 @@ async def main():
|
|
|
129
129
|
"EMAIL_PASS": "secret_password"
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
config =
|
|
132
|
+
config = DroidConfig()
|
|
133
133
|
|
|
134
134
|
agent = DroidAgent(
|
|
135
135
|
goal="Open Gmail and login with my credentials",
|
|
@@ -244,6 +244,6 @@ Implement any custom secret storage backend.
|
|
|
244
244
|
|
|
245
245
|
## Related
|
|
246
246
|
|
|
247
|
-
See [Configuration Guide](/
|
|
247
|
+
See [Configuration Guide](/sdk/configuration) for credential setup.
|
|
248
248
|
|
|
249
|
-
See [Custom Variables](/
|
|
249
|
+
See [Custom Variables](/features/custom-variables) for non-sensitive data.
|
|
@@ -23,7 +23,7 @@ Simple custom tool without device access:
|
|
|
23
23
|
|
|
24
24
|
```python
|
|
25
25
|
import asyncio
|
|
26
|
-
from droidrun import DroidAgent,
|
|
26
|
+
from droidrun import DroidAgent, DroidConfig
|
|
27
27
|
|
|
28
28
|
def calculate_tax(amount: float, rate: float, **kwargs) -> str:
|
|
29
29
|
"""Calculate tax for a given amount."""
|
|
@@ -43,7 +43,7 @@ custom_tools = {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
async def main():
|
|
46
|
-
config =
|
|
46
|
+
config = DroidConfig()
|
|
47
47
|
|
|
48
48
|
agent = DroidAgent(
|
|
49
49
|
goal="Calculate tax for $100 at 8% rate",
|
|
@@ -395,4 +395,4 @@ agent = DroidAgent(
|
|
|
395
395
|
|
|
396
396
|
## Related
|
|
397
397
|
|
|
398
|
-
See [Agent Architecture](/
|
|
398
|
+
See [Agent Architecture](/concepts/architecture) for understanding shared state and custom tools integration.
|
|
@@ -12,7 +12,7 @@ Custom variables are accessible in:
|
|
|
12
12
|
## Quick Start
|
|
13
13
|
|
|
14
14
|
```python
|
|
15
|
-
from droidrun import DroidAgent,
|
|
15
|
+
from droidrun import DroidAgent, DroidConfig
|
|
16
16
|
|
|
17
17
|
# Define custom prompts that render variables
|
|
18
18
|
custom_prompts = {
|
|
@@ -29,7 +29,7 @@ Available variables:
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
# Create agent with variables
|
|
32
|
-
config =
|
|
32
|
+
config = DroidConfig()
|
|
33
33
|
|
|
34
34
|
agent = DroidAgent(
|
|
35
35
|
goal="Send email to recipient with subject",
|
|
@@ -64,7 +64,7 @@ When you pass `variables` to `DroidAgent`:
|
|
|
64
64
|
## Basic Usage
|
|
65
65
|
|
|
66
66
|
```python
|
|
67
|
-
from droidrun import DroidAgent,
|
|
67
|
+
from droidrun import DroidAgent, DroidConfig
|
|
68
68
|
|
|
69
69
|
# Define variables
|
|
70
70
|
variables = {
|
|
@@ -89,7 +89,7 @@ Use these variables when executing tasks.
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
# Create agent
|
|
92
|
-
config =
|
|
92
|
+
config = DroidConfig()
|
|
93
93
|
|
|
94
94
|
agent = DroidAgent(
|
|
95
95
|
goal="Send message to recipient",
|
|
@@ -109,7 +109,6 @@ Customize these prompts to render variables:
|
|
|
109
109
|
- `executor_system` - Executor agent system prompt
|
|
110
110
|
- `fast_agent_system` - FastAgent system prompt
|
|
111
111
|
- `fast_agent_user` - FastAgent user prompt
|
|
112
|
-
- `scripter_system` - Scripter agent system prompt
|
|
113
112
|
|
|
114
113
|
---
|
|
115
114
|
|
|
@@ -118,7 +117,7 @@ Customize these prompts to render variables:
|
|
|
118
117
|
Custom tools can access variables via the `ctx` keyword argument (an `ActionContext` instance injected automatically):
|
|
119
118
|
|
|
120
119
|
```python
|
|
121
|
-
from droidrun import DroidAgent,
|
|
120
|
+
from droidrun import DroidAgent, DroidConfig
|
|
122
121
|
|
|
123
122
|
async def send_notification(title: str, *, ctx, **kwargs):
|
|
124
123
|
"""Send a notification using channel from custom variables.
|
|
@@ -141,7 +140,7 @@ custom_tools = {
|
|
|
141
140
|
}
|
|
142
141
|
}
|
|
143
142
|
|
|
144
|
-
config =
|
|
143
|
+
config = DroidConfig()
|
|
145
144
|
|
|
146
145
|
agent = DroidAgent(
|
|
147
146
|
goal="Send notification with title 'Alert'",
|
|
@@ -191,12 +190,12 @@ agent = DroidAgent(
|
|
|
191
190
|
|
|
192
191
|
1. **Custom prompts required** - Default prompts don't render variables in agent context
|
|
193
192
|
2. **Direct access in tools** - Custom tools access `ctx.shared_state.custom_variables` via the `ActionContext`
|
|
194
|
-
3. **Available to all agents** - Manager, Executor, FastAgent
|
|
193
|
+
3. **Available to all agents** - Manager, Executor, FastAgent all receive variables
|
|
195
194
|
4. **Jinja2 templates** - Use `{% if variables %}` blocks in custom prompts
|
|
196
195
|
5. **Auto-injection** - `ctx` (ActionContext) is injected automatically by the tool registry
|
|
197
196
|
|
|
198
197
|
## Related Documentation
|
|
199
198
|
|
|
200
|
-
- [Custom Prompts](/
|
|
201
|
-
- [Custom Tools](/
|
|
202
|
-
- [DroidAgent SDK](/
|
|
199
|
+
- [Custom Prompts](/concepts/prompts) - How to customize agent prompts
|
|
200
|
+
- [Custom Tools](/features/custom-tools) - Creating custom tool functions
|
|
201
|
+
- [DroidAgent SDK](/sdk/droid-agent) - Complete API reference
|