droidrun 0.1.0__py3-none-any.whl → 0.3.0__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.
Files changed (58) hide show
  1. droidrun/__init__.py +22 -10
  2. droidrun/__main__.py +1 -2
  3. droidrun/adb/__init__.py +3 -3
  4. droidrun/adb/device.py +2 -2
  5. droidrun/adb/manager.py +2 -2
  6. droidrun/agent/__init__.py +5 -15
  7. droidrun/agent/codeact/__init__.py +11 -0
  8. droidrun/agent/codeact/codeact_agent.py +420 -0
  9. droidrun/agent/codeact/events.py +28 -0
  10. droidrun/agent/codeact/prompts.py +26 -0
  11. droidrun/agent/common/default.py +5 -0
  12. droidrun/agent/common/events.py +4 -0
  13. droidrun/agent/context/__init__.py +23 -0
  14. droidrun/agent/context/agent_persona.py +15 -0
  15. droidrun/agent/context/context_injection_manager.py +66 -0
  16. droidrun/agent/context/episodic_memory.py +15 -0
  17. droidrun/agent/context/personas/__init__.py +11 -0
  18. droidrun/agent/context/personas/app_starter.py +44 -0
  19. droidrun/agent/context/personas/default.py +95 -0
  20. droidrun/agent/context/personas/extractor.py +52 -0
  21. droidrun/agent/context/personas/ui_expert.py +107 -0
  22. droidrun/agent/context/reflection.py +20 -0
  23. droidrun/agent/context/task_manager.py +124 -0
  24. droidrun/agent/context/todo.txt +4 -0
  25. droidrun/agent/droid/__init__.py +13 -0
  26. droidrun/agent/droid/droid_agent.py +357 -0
  27. droidrun/agent/droid/events.py +28 -0
  28. droidrun/agent/oneflows/reflector.py +265 -0
  29. droidrun/agent/planner/__init__.py +13 -0
  30. droidrun/agent/planner/events.py +16 -0
  31. droidrun/agent/planner/planner_agent.py +268 -0
  32. droidrun/agent/planner/prompts.py +124 -0
  33. droidrun/agent/utils/__init__.py +3 -0
  34. droidrun/agent/utils/async_utils.py +17 -0
  35. droidrun/agent/utils/chat_utils.py +312 -0
  36. droidrun/agent/utils/executer.py +132 -0
  37. droidrun/agent/utils/llm_picker.py +147 -0
  38. droidrun/agent/utils/trajectory.py +184 -0
  39. droidrun/cli/__init__.py +1 -1
  40. droidrun/cli/logs.py +283 -0
  41. droidrun/cli/main.py +358 -149
  42. droidrun/run.py +105 -0
  43. droidrun/tools/__init__.py +4 -30
  44. droidrun/tools/adb.py +879 -0
  45. droidrun/tools/ios.py +594 -0
  46. droidrun/tools/tools.py +99 -0
  47. droidrun-0.3.0.dist-info/METADATA +149 -0
  48. droidrun-0.3.0.dist-info/RECORD +52 -0
  49. droidrun/agent/llm_reasoning.py +0 -567
  50. droidrun/agent/react_agent.py +0 -556
  51. droidrun/llm/__init__.py +0 -24
  52. droidrun/tools/actions.py +0 -854
  53. droidrun/tools/device.py +0 -29
  54. droidrun-0.1.0.dist-info/METADATA +0 -276
  55. droidrun-0.1.0.dist-info/RECORD +0 -20
  56. {droidrun-0.1.0.dist-info → droidrun-0.3.0.dist-info}/WHEEL +0 -0
  57. {droidrun-0.1.0.dist-info → droidrun-0.3.0.dist-info}/entry_points.txt +0 -0
  58. {droidrun-0.1.0.dist-info → droidrun-0.3.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,149 @@
1
+ Metadata-Version: 2.4
2
+ Name: droidrun
3
+ Version: 0.3.0
4
+ Summary: A framework for controlling Android devices through LLM agents
5
+ Project-URL: Homepage, https://github.com/droidrun/droidrun
6
+ Project-URL: Bug Tracker, https://github.com/droidrun/droidrun/issues
7
+ Project-URL: Documentation, https://docs.droidrun.ai/
8
+ Author-email: Niels Schmidt <niels.schmidt@droidrun.ai>
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: Information Technology
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Topic :: Communications :: Chat
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
22
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
+ Classifier: Topic :: Software Development :: Quality Assurance
24
+ Classifier: Topic :: Software Development :: Testing
25
+ Classifier: Topic :: Software Development :: Testing :: Acceptance
26
+ Classifier: Topic :: System :: Emulators
27
+ Classifier: Topic :: Utilities
28
+ Requires-Python: >=3.10
29
+ Requires-Dist: aiofiles>=23.0.0
30
+ Requires-Dist: anthropic>=0.7.0
31
+ Requires-Dist: arize-phoenix
32
+ Requires-Dist: click>=8.1.0
33
+ Requires-Dist: llama-index
34
+ Requires-Dist: llama-index-callbacks-arize-phoenix
35
+ Requires-Dist: llama-index-llms-anthropic
36
+ Requires-Dist: llama-index-llms-deepseek
37
+ Requires-Dist: llama-index-llms-gemini
38
+ Requires-Dist: llama-index-llms-ollama
39
+ Requires-Dist: llama-index-llms-openai
40
+ Requires-Dist: openai>=1.0.0
41
+ Requires-Dist: pillow>=10.0.0
42
+ Requires-Dist: pydantic>=2.0.0
43
+ Requires-Dist: python-dotenv>=1.0.0
44
+ Requires-Dist: rich>=13.0.0
45
+ Provides-Extra: dev
46
+ Requires-Dist: bandit>=1.7.0; extra == 'dev'
47
+ Requires-Dist: black>=23.0.0; extra == 'dev'
48
+ Requires-Dist: mypy>=1.0.0; extra == 'dev'
49
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
50
+ Requires-Dist: safety>=2.0.0; extra == 'dev'
51
+ Description-Content-Type: text/markdown
52
+
53
+ <picture>
54
+ <source media="(prefers-color-scheme: dark)" srcset="./static/droidrun-dark.png">
55
+ <source media="(prefers-color-scheme: light)" srcset="./static/droidrun.png">
56
+ <img src="./static/droidrun.png" width="full">
57
+ </picture>
58
+
59
+ [![GitHub stars](https://img.shields.io/github/stars/droidrun/droidrun?style=social)](https://github.com/droidrun/droidrun/stargazers)
60
+ [![Discord](https://img.shields.io/discord/1360219330318696488?color=7289DA&label=Discord&logo=discord&logoColor=white)](https://discord.gg/ZZbKEZZkwK)
61
+ [![Documentation](https://img.shields.io/badge/Documentation-📕-blue)](https://docs.droidrun.ai)
62
+ [![Benchmark](https://img.shields.io/badge/Benchmark-🏅-teal)](https://droidrun.ai/benchmark)
63
+ [![Twitter Follow](https://img.shields.io/twitter/follow/droid_run?style=social)](https://x.com/droid_run)
64
+
65
+
66
+
67
+ 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)
68
+
69
+ - 🤖 Control Android and iOS devices with natural language commands
70
+ - 🔀 Supports multiple LLM providers (OpenAI, Anthropic, Gemini, Ollama, DeepSeek)
71
+ - 🧠 Planning capabilities for complex multi-step tasks
72
+ - 💻 Easy to use CLI with enhanced debugging features
73
+ - 🐍 Extendable Python API for custom automations
74
+ - 📸 Screenshot analysis for visual understanding of the device
75
+ - 🫆 Execution tracing with Arize Phoenix
76
+
77
+ ## 📦 Installation
78
+
79
+ ```bash
80
+ pip install droidrun
81
+ ```
82
+
83
+ ## 🚀 Quickstart
84
+ Read on how to get droidrun up and running within seconds in [our docs](https://docs.droidrun.ai/v3/quickstart)!
85
+
86
+
87
+ ## 🎬 Demo Videos
88
+
89
+ 1. **Shopping Assistant**: Watch how DroidRun searches Amazon for headphones and sends the top 3 products to a colleague on WhatsApp.
90
+
91
+ Prompt: "Go to Amazon, search for headphones and write the top 3 products to my colleague on WhatsApp."
92
+
93
+ [![Shopping Assistant Demo](https://img.youtube.com/vi/VQK3JcifgwU/0.jpg)](https://www.youtube.com/watch?v=VQK3JcifgwU)
94
+
95
+ 2. **Social Media Automation**: See DroidRun open X (Twitter) and post "Hello World".
96
+
97
+ Prompt: "Open up X and post Hello World."
98
+
99
+ [![Social Media Automation Demo](https://img.youtube.com/vi/i4-sDQhzt_M/0.jpg)](https://www.youtube.com/watch?v=i4-sDQhzt_M)
100
+
101
+ ## 💡 Example Use Cases
102
+
103
+ - Automated UI testing of mobile applications
104
+ - Creating guided workflows for non-technical users
105
+ - Automating repetitive tasks on mobile devices
106
+ - Remote assistance for less technical users
107
+ - Exploring mobile UI with natural language commands
108
+
109
+ ## 🗺️ Roadmap
110
+
111
+ ### 🤖 Agent:
112
+ - **Improve memory**: Enhance context retention for complex multi-step tasks
113
+ - **Expand planning capabilities**: Add support for more complex reasoning strategies
114
+ - **Add Integrations**: Support more LLM providers and agent frameworks (LangChain, Agno etc.)
115
+
116
+ ### ⚙️ Automations:
117
+ - **Create Automation Scripts**: Generate reusable scripts from agent actions that can be scheduled or shared
118
+
119
+ ### ☁️ Cloud:
120
+ - **Hosted version**: Remote device control via web interface without local setup
121
+ - **Add-Ons**: Marketplace for extensions serving specific use cases
122
+ - **Proxy Hours**: Cloud compute time with tiered pricing for running automations
123
+ - **Droidrun AppStore**: Simple installation of Apps on your hosted devices
124
+
125
+ ## 👥 Contributing
126
+
127
+ Contributions are welcome! Please feel free to submit a Pull Request.
128
+
129
+ ## 📄 License
130
+
131
+ This project is licensed under the MIT License - see the LICENSE file for details.
132
+
133
+ ## Security Checks
134
+
135
+ To ensure the security of the codebase, we have integrated security checks using `bandit` and `safety`. These tools help identify potential security issues in the code and dependencies.
136
+
137
+ ### Running Security Checks
138
+
139
+ Before submitting any code, please run the following security checks:
140
+
141
+ 1. **Bandit**: A tool to find common security issues in Python code.
142
+ ```bash
143
+ bandit -r droidrun
144
+ ```
145
+
146
+ 2. **Safety**: A tool to check your installed dependencies for known security vulnerabilities.
147
+ ```bash
148
+ safety scan
149
+ ```
@@ -0,0 +1,52 @@
1
+ droidrun/__init__.py,sha256=ERliGcmgGJpyTs7SukYD28tgRccxn6hPG8JPsH0ezZA,840
2
+ droidrun/__main__.py,sha256=78o1Wr_Z-NrZy9yLWmEfNfRRhAiJGBr4Xi3lmbgkx3w,105
3
+ droidrun/run.py,sha256=79xRUb5OgAezXBiI1a4PLvdimfRiowcrhMF1eC9vcC0,3341
4
+ droidrun/adb/__init__.py,sha256=kh-iT9Sv6RZ2dFSDu1beK_GgtAq8wlMvZQ7puR8JWsI,257
5
+ droidrun/adb/device.py,sha256=fAKXR5Qmqzz7q3KD2VCcW6dG3NsDLfG9zd56B5kswL4,11004
6
+ droidrun/adb/manager.py,sha256=g7TuEOCnMTavHzCMtr3u6TPBhmZwE98CW9vBwdhdyyg,2728
7
+ droidrun/adb/wrapper.py,sha256=Yz3_JSIidq-5bf-t0UfawTutMaLrINS_1Y15m_Uss4g,7093
8
+ droidrun/agent/__init__.py,sha256=4SqTJeGDvr_wT8rtN9J8hnN6P-pae663mkYr-JmzH4w,208
9
+ droidrun/agent/codeact/__init__.py,sha256=ZLDGT_lTTzyNm7pcBzdyRIGHJ2ZgbInJdhXZRbJLhSQ,278
10
+ droidrun/agent/codeact/codeact_agent.py,sha256=NOOmyRaMn_AOeMSMNK6p86dStslTX5s9rn-bQWJ0Fh0,15647
11
+ droidrun/agent/codeact/events.py,sha256=skCfZ-5SR0YhhzZVxx8_VkUjfILk8rCv47k9pHNYhdc,634
12
+ droidrun/agent/codeact/prompts.py,sha256=28HflWMNkC1ky0hGCzAxhJftjU2IIU1ZRUfya3S7M6I,1006
13
+ droidrun/agent/common/default.py,sha256=P07el-PrHsoqQMYsYxSSln6mFl-QY75vzwp1Dll_XmY,259
14
+ droidrun/agent/common/events.py,sha256=axauKdrXFEeB1hpd0geazwBtJySnHsvLZV0u9F9OWZI,96
15
+ droidrun/agent/context/__init__.py,sha256=upSJilVQUwQYWJuGr_8QrmJaReV3SNAc_Z61wQZzbK4,697
16
+ droidrun/agent/context/agent_persona.py,sha256=Mxd4HTyirWD-aqNlka1hQBdS-0I-lXJr2AjPMwDMUo8,390
17
+ droidrun/agent/context/context_injection_manager.py,sha256=sA33q2KPtX_4Yap8wM11T6ewlZC_0FIbKPEc400SHrE,2188
18
+ droidrun/agent/context/episodic_memory.py,sha256=1ImeR3jAWOpKwkQt3bMlXVOBiQbIli5fBIlBq2waREQ,394
19
+ droidrun/agent/context/reflection.py,sha256=0hJluOz0hTlHHhReKpIJ9HU5aJbaJsvrjMfraQ84D-M,652
20
+ droidrun/agent/context/task_manager.py,sha256=ESLs4kR6VNYiYQsc4V7WAeoSLwbaZPSWBXpveOfOv8c,4343
21
+ droidrun/agent/context/todo.txt,sha256=pwcH0z4Ofic3fhZ2fekRMfjrxPIB8IybO4eqvSWWjgA,163
22
+ droidrun/agent/context/personas/__init__.py,sha256=tUDIM_9Kim3ki6ZXpwcvPHPSa2cCHNMLdNW4lyJr4gM,231
23
+ droidrun/agent/context/personas/app_starter.py,sha256=dHeknznxGEPJ7S6VPyEG_MB-HvAvQwUOnRWaShaV8Xo,1585
24
+ droidrun/agent/context/personas/default.py,sha256=8pWC34gdbySyTaRFVE3dFdwpOMW63G1EOjjcYP0BLGo,5023
25
+ droidrun/agent/context/personas/extractor.py,sha256=S7Qgh3-Kz_OowQJFJGQUlr8OUVktX5UHVdf5qkAj3GQ,1907
26
+ droidrun/agent/context/personas/ui_expert.py,sha256=P2dAnkKiR3O4bN4ZUuWHmuu4Qo8WRiH1mU6EEOr3yJA,4710
27
+ droidrun/agent/droid/__init__.py,sha256=3BfUVZiUQ8ATAJ_JmqQZQx53WoERRpQ4AyHW5WOgbRI,297
28
+ droidrun/agent/droid/droid_agent.py,sha256=M08l7WOu1NdTOPNErs0lNVUZC4UDNdS-FK0W5vJ1RqU,13222
29
+ droidrun/agent/droid/events.py,sha256=bpUhJnbaIH86r8hfUsbHub465v-xYOsIyHWNN8g4TCs,576
30
+ droidrun/agent/oneflows/reflector.py,sha256=I_tE0PBjvwWbS6SA8Qd41etxJglFgn8oScuKUxc9LEE,11621
31
+ droidrun/agent/planner/__init__.py,sha256=Fu0Ewtd-dIRLgHIL1DB_9EEKvQS_f1vjB8jgO5TbJXg,364
32
+ droidrun/agent/planner/events.py,sha256=oyt2FNrA2uVyUeVT65-N0AC6sWBFxSnwNEqWtnRYoFM,390
33
+ droidrun/agent/planner/planner_agent.py,sha256=MuCDer3ZfEXTpid-sCd5L4i1C3yHrWsSa8sRLwqq7IA,10050
34
+ droidrun/agent/planner/prompts.py,sha256=Ci7Oeu3J4TAhx-tKGPZ9l6Wb3a81FSqC8cWW4jW73HI,6046
35
+ droidrun/agent/utils/__init__.py,sha256=JK6ygRjw7gzcQSG0HBEYLoVGH54QQAxJJ7HpIS5mgyc,44
36
+ droidrun/agent/utils/async_utils.py,sha256=IQBcWPwevm89B7R_UdMXk0unWeNCBA232b5kQGqoxNI,336
37
+ droidrun/agent/utils/chat_utils.py,sha256=aZihuOE_sdkzniRHBF9QNZ1RF9IFOj06uyd6sglPumY,13241
38
+ droidrun/agent/utils/executer.py,sha256=lQbk2TbPyl_F0k2FqEVimq8cQRcWM_KCO_I7fnkkxqA,4587
39
+ droidrun/agent/utils/llm_picker.py,sha256=adktsU2-GhYzZ0djOhO_TyFhUE8aGirzJy36A_EvnXU,5919
40
+ droidrun/agent/utils/trajectory.py,sha256=OmO8TvNO0LVtPXg2qTCv8o9ePaMeDyf-MRWN_YObXho,6845
41
+ droidrun/cli/__init__.py,sha256=DuwSRtZ8WILPd-nf-fZ7BaBsRgtofoInOF3JtJ9wag0,167
42
+ droidrun/cli/logs.py,sha256=PsT_VbnOa_sOLXK4KkEJk4AsYCpscqrVoryMmLVwPG0,9714
43
+ droidrun/cli/main.py,sha256=bNwlhTdZcsqM-Q-SnFTqY4BzNTp_fGhGel67r_fbMHM,14344
44
+ droidrun/tools/__init__.py,sha256=9ReauavtSKDQG9ya9_Fr9O0TQnDFixgOPaP5n82_iEk,271
45
+ droidrun/tools/adb.py,sha256=YSStSGYa7SFCzmrZAb_hn5pOtpXzErnrP5HJyOCm5Ss,33984
46
+ droidrun/tools/ios.py,sha256=JMsBLAykeXsSvwHXvHmGinM9luPW63SpsI_u1IDPCx8,22822
47
+ droidrun/tools/tools.py,sha256=L9EKBk2_QxPZmmDVXfjmHwqkauwCawNnQuz9X29N8UE,2468
48
+ droidrun-0.3.0.dist-info/METADATA,sha256=QIbmadNT3BUyfINHZmtlOUZvtOPLthl-q9CfqkVgBJ4,6294
49
+ droidrun-0.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
50
+ droidrun-0.3.0.dist-info/entry_points.txt,sha256=o259U66js8TIybQ7zs814Oe_LQ_GpZsp6a9Cr-xm5zE,51
51
+ droidrun-0.3.0.dist-info/licenses/LICENSE,sha256=s-uxn9qChu-kFdRXUp6v_0HhsaJ_5OANmfNOFVm2zdk,1069
52
+ droidrun-0.3.0.dist-info/RECORD,,