droidrun 0.3.1__py3-none-any.whl → 0.3.2__py3-none-any.whl
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/__init__.py +1 -10
- droidrun/adb/device.py +101 -71
- droidrun/adb/manager.py +3 -3
- droidrun/agent/codeact/codeact_agent.py +2 -1
- droidrun/agent/context/personas/__init__.py +0 -2
- droidrun/agent/droid/droid_agent.py +50 -7
- droidrun/agent/droid/events.py +4 -0
- droidrun/agent/utils/llm_picker.py +1 -0
- droidrun/cli/main.py +126 -70
- droidrun/portal.py +139 -0
- droidrun/telemetry/__init__.py +4 -0
- droidrun/telemetry/events.py +27 -0
- droidrun/telemetry/tracker.py +83 -0
- droidrun/tools/adb.py +82 -218
- droidrun/tools/ios.py +6 -3
- droidrun/tools/tools.py +41 -6
- {droidrun-0.3.1.dist-info → droidrun-0.3.2.dist-info}/METADATA +17 -28
- {droidrun-0.3.1.dist-info → droidrun-0.3.2.dist-info}/RECORD +21 -18
- droidrun/agent/context/personas/extractor.py +0 -52
- {droidrun-0.3.1.dist-info → droidrun-0.3.2.dist-info}/WHEEL +0 -0
- {droidrun-0.3.1.dist-info → droidrun-0.3.2.dist-info}/entry_points.txt +0 -0
- {droidrun-0.3.1.dist-info → droidrun-0.3.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: droidrun
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.2
|
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
|
@@ -40,6 +40,7 @@ Requires-Dist: llama-index-llms-openai
|
|
40
40
|
Requires-Dist: llama-index-llms-openai-like
|
41
41
|
Requires-Dist: openai>=1.0.0
|
42
42
|
Requires-Dist: pillow>=10.0.0
|
43
|
+
Requires-Dist: posthog==6.0.2
|
43
44
|
Requires-Dist: pydantic>=2.0.0
|
44
45
|
Requires-Dist: python-dotenv>=1.0.0
|
45
46
|
Requires-Dist: rich>=13.0.0
|
@@ -67,6 +68,8 @@ Description-Content-Type: text/markdown
|
|
67
68
|
|
68
69
|
DroidRun is 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)
|
69
70
|
|
71
|
+
## Why Droidrun?
|
72
|
+
|
70
73
|
- 🤖 Control Android and iOS devices with natural language commands
|
71
74
|
- 🔀 Supports multiple LLM providers (OpenAI, Anthropic, Gemini, Ollama, DeepSeek)
|
72
75
|
- 🧠 Planning capabilities for complex multi-step tasks
|
@@ -82,22 +85,24 @@ pip install droidrun
|
|
82
85
|
```
|
83
86
|
|
84
87
|
## 🚀 Quickstart
|
85
|
-
Read on how to get droidrun up and running within seconds in [our docs](https://docs.droidrun.ai/v3/quickstart)!
|
88
|
+
Read on how to get droidrun up and running within seconds in [our docs](https://docs.droidrun.ai/v3/quickstart)!
|
86
89
|
|
90
|
+
[](https://www.youtube.com/watch?v=4WT7FXJah2I)
|
87
91
|
|
88
92
|
## 🎬 Demo Videos
|
89
93
|
|
90
|
-
1. **
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
94
|
+
1. **Group Chat Summarization**: Let DroidRun summarize an escalated group chat for you.
|
95
|
+
|
96
|
+
[](https://www.youtube.com/watch?v=ofEnSUHHxX8)
|
97
|
+
|
98
|
+
2. **Travel Search Assistant**: Wittness DroidRun looking for the cheapest stay and share it with a colleague on telegram.
|
99
|
+
|
100
|
+
[](https://www.youtube.com/watch?v=QgtRaLS3NBM)
|
101
|
+
|
102
|
+
3. **Automate TikTok Shopping**: See how DroidRun looks for a stanley cup on TikTok Shop and send the product details via email.
|
103
|
+
|
104
|
+
[](https://www.youtube.com/watch?v=ol3bivBAmn4)
|
95
105
|
|
96
|
-
2. **Social Media Automation**: See DroidRun open X (Twitter) and post "Hello World".
|
97
|
-
|
98
|
-
Prompt: "Open up X and post Hello World."
|
99
|
-
|
100
|
-
[](https://www.youtube.com/watch?v=i4-sDQhzt_M)
|
101
106
|
|
102
107
|
## 💡 Example Use Cases
|
103
108
|
|
@@ -107,22 +112,6 @@ Read on how to get droidrun up and running within seconds in [our docs](https://
|
|
107
112
|
- Remote assistance for less technical users
|
108
113
|
- Exploring mobile UI with natural language commands
|
109
114
|
|
110
|
-
## 🗺️ Roadmap
|
111
|
-
|
112
|
-
### 🤖 Agent:
|
113
|
-
- **Improve memory**: Enhance context retention for complex multi-step tasks
|
114
|
-
- **Expand planning capabilities**: Add support for more complex reasoning strategies
|
115
|
-
- **Add Integrations**: Support more LLM providers and agent frameworks (LangChain, Agno etc.)
|
116
|
-
|
117
|
-
### ⚙️ Automations:
|
118
|
-
- **Create Automation Scripts**: Generate reusable scripts from agent actions that can be scheduled or shared
|
119
|
-
|
120
|
-
### ☁️ Cloud:
|
121
|
-
- **Hosted version**: Remote device control via web interface without local setup
|
122
|
-
- **Add-Ons**: Marketplace for extensions serving specific use cases
|
123
|
-
- **Proxy Hours**: Cloud compute time with tiered pricing for running automations
|
124
|
-
- **Droidrun AppStore**: Simple installation of Apps on your hosted devices
|
125
|
-
|
126
115
|
## 👥 Contributing
|
127
116
|
|
128
117
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
@@ -1,12 +1,13 @@
|
|
1
|
-
droidrun/__init__.py,sha256=
|
1
|
+
droidrun/__init__.py,sha256=OqgWoczsC4gpt40pV-wuw7x5DQmmbKtNSxQ8QqPEY1E,510
|
2
2
|
droidrun/__main__.py,sha256=78o1Wr_Z-NrZy9yLWmEfNfRRhAiJGBr4Xi3lmbgkx3w,105
|
3
|
+
droidrun/portal.py,sha256=4UEoTdAg6TWgxCXEhyAXMARr8Hsq5wLDx_4zim9-eaA,4061
|
3
4
|
droidrun/adb/__init__.py,sha256=kh-iT9Sv6RZ2dFSDu1beK_GgtAq8wlMvZQ7puR8JWsI,257
|
4
|
-
droidrun/adb/device.py,sha256=
|
5
|
-
droidrun/adb/manager.py,sha256=
|
5
|
+
droidrun/adb/device.py,sha256=8Qc4pU2-dy8v7skBKsn74Lnke1d7x339cQCrba28vlU,11694
|
6
|
+
droidrun/adb/manager.py,sha256=mGdQSlHmZ00t-4jmg_I_qRrBigWnWr_gQXB1TcFXqoQ,2767
|
6
7
|
droidrun/adb/wrapper.py,sha256=Yz3_JSIidq-5bf-t0UfawTutMaLrINS_1Y15m_Uss4g,7093
|
7
8
|
droidrun/agent/__init__.py,sha256=4SqTJeGDvr_wT8rtN9J8hnN6P-pae663mkYr-JmzH4w,208
|
8
9
|
droidrun/agent/codeact/__init__.py,sha256=ZLDGT_lTTzyNm7pcBzdyRIGHJ2ZgbInJdhXZRbJLhSQ,278
|
9
|
-
droidrun/agent/codeact/codeact_agent.py,sha256=
|
10
|
+
droidrun/agent/codeact/codeact_agent.py,sha256=SoJPFeJUfNjs875rsbRSVrSjMIwIpWq_vYcct83PQhU,16075
|
10
11
|
droidrun/agent/codeact/events.py,sha256=skCfZ-5SR0YhhzZVxx8_VkUjfILk8rCv47k9pHNYhdc,634
|
11
12
|
droidrun/agent/codeact/prompts.py,sha256=28HflWMNkC1ky0hGCzAxhJftjU2IIU1ZRUfya3S7M6I,1006
|
12
13
|
droidrun/agent/common/default.py,sha256=P07el-PrHsoqQMYsYxSSln6mFl-QY75vzwp1Dll_XmY,259
|
@@ -17,14 +18,13 @@ droidrun/agent/context/context_injection_manager.py,sha256=sA33q2KPtX_4Yap8wM11T
|
|
17
18
|
droidrun/agent/context/episodic_memory.py,sha256=1ImeR3jAWOpKwkQt3bMlXVOBiQbIli5fBIlBq2waREQ,394
|
18
19
|
droidrun/agent/context/reflection.py,sha256=0hJluOz0hTlHHhReKpIJ9HU5aJbaJsvrjMfraQ84D-M,652
|
19
20
|
droidrun/agent/context/task_manager.py,sha256=ESLs4kR6VNYiYQsc4V7WAeoSLwbaZPSWBXpveOfOv8c,4343
|
20
|
-
droidrun/agent/context/personas/__init__.py,sha256=
|
21
|
+
droidrun/agent/context/personas/__init__.py,sha256=Kjze5UDSSjV2EZShXsIM75O1IPprSYop0y0MI4bbPUY,182
|
21
22
|
droidrun/agent/context/personas/app_starter.py,sha256=dHeknznxGEPJ7S6VPyEG_MB-HvAvQwUOnRWaShaV8Xo,1585
|
22
23
|
droidrun/agent/context/personas/default.py,sha256=Xm07YCWoKjvlHAbQRtzE3vn7BVcz6wYcSVeg4FiojJQ,5060
|
23
|
-
droidrun/agent/context/personas/extractor.py,sha256=S7Qgh3-Kz_OowQJFJGQUlr8OUVktX5UHVdf5qkAj3GQ,1907
|
24
24
|
droidrun/agent/context/personas/ui_expert.py,sha256=P2dAnkKiR3O4bN4ZUuWHmuu4Qo8WRiH1mU6EEOr3yJA,4710
|
25
25
|
droidrun/agent/droid/__init__.py,sha256=3BfUVZiUQ8ATAJ_JmqQZQx53WoERRpQ4AyHW5WOgbRI,297
|
26
|
-
droidrun/agent/droid/droid_agent.py,sha256=
|
27
|
-
droidrun/agent/droid/events.py,sha256=
|
26
|
+
droidrun/agent/droid/droid_agent.py,sha256=SEJbFoLDwFqE_nXNke-D4e0lx9DwCY-I-ryywuW6-Y8,14955
|
27
|
+
droidrun/agent/droid/events.py,sha256=Ks2D6lX5P1rpZ4nIAPXSC83z4AT5OzKt3isP5yk25F4,689
|
28
28
|
droidrun/agent/oneflows/reflector.py,sha256=I_tE0PBjvwWbS6SA8Qd41etxJglFgn8oScuKUxc9LEE,11621
|
29
29
|
droidrun/agent/planner/__init__.py,sha256=Fu0Ewtd-dIRLgHIL1DB_9EEKvQS_f1vjB8jgO5TbJXg,364
|
30
30
|
droidrun/agent/planner/events.py,sha256=oyt2FNrA2uVyUeVT65-N0AC6sWBFxSnwNEqWtnRYoFM,390
|
@@ -34,17 +34,20 @@ droidrun/agent/utils/__init__.py,sha256=JK6ygRjw7gzcQSG0HBEYLoVGH54QQAxJJ7HpIS5m
|
|
34
34
|
droidrun/agent/utils/async_utils.py,sha256=IQBcWPwevm89B7R_UdMXk0unWeNCBA232b5kQGqoxNI,336
|
35
35
|
droidrun/agent/utils/chat_utils.py,sha256=5oqP2nmKs8sHWP1H_TK82yaxrxWf7FdEbFKASKpR60g,13000
|
36
36
|
droidrun/agent/utils/executer.py,sha256=lQbk2TbPyl_F0k2FqEVimq8cQRcWM_KCO_I7fnkkxqA,4587
|
37
|
-
droidrun/agent/utils/llm_picker.py,sha256=
|
37
|
+
droidrun/agent/utils/llm_picker.py,sha256=16tNkNhEM9gD_uivzxLvuaa6s0Tz7Igu-3fxMP2lAtY,5968
|
38
38
|
droidrun/agent/utils/trajectory.py,sha256=OmO8TvNO0LVtPXg2qTCv8o9ePaMeDyf-MRWN_YObXho,6845
|
39
39
|
droidrun/cli/__init__.py,sha256=DuwSRtZ8WILPd-nf-fZ7BaBsRgtofoInOF3JtJ9wag0,167
|
40
40
|
droidrun/cli/logs.py,sha256=PsT_VbnOa_sOLXK4KkEJk4AsYCpscqrVoryMmLVwPG0,9714
|
41
|
-
droidrun/cli/main.py,sha256=
|
41
|
+
droidrun/cli/main.py,sha256=kGYub0eJt-Ly-fczFPwHs5vq7OC_iP9ZjLZRo1umKcc,16730
|
42
|
+
droidrun/telemetry/__init__.py,sha256=D4Mp02iGJH2Tjpv42Bzyo6_WC3NWj9Qy9hQPWFaCkhA,234
|
43
|
+
droidrun/telemetry/events.py,sha256=S6r6_c2bGTZt6F88m_vREDD_MDhw3Pz4I53lLmsI764,518
|
44
|
+
droidrun/telemetry/tracker.py,sha256=lFVQfOVLuiGulILqVo-nBxJ_u7iC2TDVXwOK4TtHEZA,2611
|
42
45
|
droidrun/tools/__init__.py,sha256=9ReauavtSKDQG9ya9_Fr9O0TQnDFixgOPaP5n82_iEk,271
|
43
|
-
droidrun/tools/adb.py,sha256=
|
44
|
-
droidrun/tools/ios.py,sha256
|
45
|
-
droidrun/tools/tools.py,sha256=
|
46
|
-
droidrun-0.3.
|
47
|
-
droidrun-0.3.
|
48
|
-
droidrun-0.3.
|
49
|
-
droidrun-0.3.
|
50
|
-
droidrun-0.3.
|
46
|
+
droidrun/tools/adb.py,sha256=8ElV7pNfm-c5FPDoZ7qjzkqtHSjnHzQ_iyEg2e9lhZU,23819
|
47
|
+
droidrun/tools/ios.py,sha256=DrmL_4xtQ5IgJn0vdPKTCJBFxxkz3eNNoo74Ha8ZZVs,23053
|
48
|
+
droidrun/tools/tools.py,sha256=fgl4B62UA5KmxPnAXI1aZY5sncmKl0N97zKrjTdL510,3215
|
49
|
+
droidrun-0.3.2.dist-info/METADATA,sha256=frA--iht9pvq_bTlAnEjWJ_gSbSd4yi42xW6gpF03gs,5838
|
50
|
+
droidrun-0.3.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
51
|
+
droidrun-0.3.2.dist-info/entry_points.txt,sha256=o259U66js8TIybQ7zs814Oe_LQ_GpZsp6a9Cr-xm5zE,51
|
52
|
+
droidrun-0.3.2.dist-info/licenses/LICENSE,sha256=s-uxn9qChu-kFdRXUp6v_0HhsaJ_5OANmfNOFVm2zdk,1069
|
53
|
+
droidrun-0.3.2.dist-info/RECORD,,
|
@@ -1,52 +0,0 @@
|
|
1
|
-
from droidrun.agent.context.agent_persona import AgentPersona
|
2
|
-
from droidrun.tools import Tools
|
3
|
-
|
4
|
-
EXTRACTOR = AgentPersona(
|
5
|
-
name="DataExtractor",
|
6
|
-
description="Specialized in extracting data from UI elements and screenshots",
|
7
|
-
expertise_areas=[
|
8
|
-
"data extraction",
|
9
|
-
"UI analysis",
|
10
|
-
"text recognition"
|
11
|
-
],
|
12
|
-
allowed_tools=[
|
13
|
-
Tools.extract.__name__,
|
14
|
-
Tools.complete.__name__
|
15
|
-
],
|
16
|
-
required_context=[
|
17
|
-
"ui_state",
|
18
|
-
"screenshot"
|
19
|
-
],
|
20
|
-
user_prompt="""
|
21
|
-
**Current Request:**
|
22
|
-
{goal}
|
23
|
-
**What data needs to be extracted?
|
24
|
-
Analyze the current UI state and screenshot, then extract the requested information.
|
25
|
-
** Explain your thought process then provide code in ```python ... ``` tags if needed.""",
|
26
|
-
|
27
|
-
system_prompt= """
|
28
|
-
You are a Data Extractor Expert specialized in analyzing Android UI states and screenshots to extract specific information. Your core expertise includes:
|
29
|
-
|
30
|
-
**Primary Capabilities:**
|
31
|
-
- Analyze UI elements from ui_state data
|
32
|
-
- Extract text, values, and structured data from screenshots
|
33
|
-
- Identify and parse specific UI components (buttons, text fields, lists, etc.)
|
34
|
-
- Extract data based on user requirements
|
35
|
-
|
36
|
-
## Response Format:
|
37
|
-
Example of proper code format:
|
38
|
-
To extract the current battery percentage from the status bar:
|
39
|
-
```python
|
40
|
-
# Extract battery percentage from UI state
|
41
|
-
battery_data = extract("battery percentage")
|
42
|
-
complete(success=True)
|
43
|
-
```
|
44
|
-
|
45
|
-
In addition to the Python Standard Library and any functions you have already written, you can use the following functions:
|
46
|
-
{tool_descriptions}
|
47
|
-
|
48
|
-
Reminder: Always place your Python code between ```...``` tags when you want to run code.
|
49
|
-
|
50
|
-
You focus ONLY on data extraction from the current UI state and screenshot - navigation and UI interactions are handled by other specialists.""",
|
51
|
-
|
52
|
-
)
|
File without changes
|
File without changes
|
File without changes
|