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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: droidrun
3
- Version: 0.3.1
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
+ [![Quickstart Video](https://img.youtube.com/vi/4WT7FXJah2I/0.jpg)](https://www.youtube.com/watch?v=4WT7FXJah2I)
87
91
 
88
92
  ## 🎬 Demo Videos
89
93
 
90
- 1. **Shopping Assistant**: Watch how DroidRun searches Amazon for headphones and sends the top 3 products to a colleague on WhatsApp.
91
-
92
- Prompt: "Go to Amazon, search for headphones and write the top 3 products to my colleague on WhatsApp."
93
-
94
- [![Shopping Assistant Demo](https://img.youtube.com/vi/VQK3JcifgwU/0.jpg)](https://www.youtube.com/watch?v=VQK3JcifgwU)
94
+ 1. **Group Chat Summarization**: Let DroidRun summarize an escalated group chat for you.
95
+
96
+ [![Group Chat Summarizer](https://img.youtube.com/vi/ofEnSUHHxX8/0.jpg)](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
+ [![Travel Search Assistant](https://img.youtube.com/vi/QgtRaLS3NBM/0.jpg)](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
+ [![TikTok Shopping Assistant](https://img.youtube.com/vi/ol3bivBAmn4/0.jpg)](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
- [![Social Media Automation Demo](https://img.youtube.com/vi/i4-sDQhzt_M/0.jpg)](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=ERliGcmgGJpyTs7SukYD28tgRccxn6hPG8JPsH0ezZA,840
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=fAKXR5Qmqzz7q3KD2VCcW6dG3NsDLfG9zd56B5kswL4,11004
5
- droidrun/adb/manager.py,sha256=g7TuEOCnMTavHzCMtr3u6TPBhmZwE98CW9vBwdhdyyg,2728
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=z0c10d1vk2PBciYbHLwnYlEopvwZzJhXkXqjJuUI0v4,16045
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=tUDIM_9Kim3ki6ZXpwcvPHPSa2cCHNMLdNW4lyJr4gM,231
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=ELPQOpRYQcnB64rLOoVPk12GHuQ_EFs7fMH-7t0LeQM,13365
27
- droidrun/agent/droid/events.py,sha256=bpUhJnbaIH86r8hfUsbHub465v-xYOsIyHWNN8g4TCs,576
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=adktsU2-GhYzZ0djOhO_TyFhUE8aGirzJy36A_EvnXU,5919
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=3VP5cZ0a7bKcNnqwMQ8mBvaprPcjgM7394WBRdkKDKU,15059
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=1Nv8tkmgqGlOZJYe39W5SGwdqnEjrxN7szsLQ_BkWqo,30137
44
- droidrun/tools/ios.py,sha256=-fq4VNJFVTkR4xtUW9IVyUXwqnhsJWda_fik3II2EGg,22885
45
- droidrun/tools/tools.py,sha256=EH3hzrVUHEkTUT-PF2s9NHyNntV9xoNXskmNBcZwLm4,2385
46
- droidrun-0.3.1.dist-info/METADATA,sha256=8lZqTnD2aoQOcpRKn6TL7rC0IdshMhAUAnyY9QWCKmQ,6344
47
- droidrun-0.3.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
48
- droidrun-0.3.1.dist-info/entry_points.txt,sha256=o259U66js8TIybQ7zs814Oe_LQ_GpZsp6a9Cr-xm5zE,51
49
- droidrun-0.3.1.dist-info/licenses/LICENSE,sha256=s-uxn9qChu-kFdRXUp6v_0HhsaJ_5OANmfNOFVm2zdk,1069
50
- droidrun-0.3.1.dist-info/RECORD,,
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
- )