droidrun 0.3.10.dev6__tar.gz → 0.3.10.dev8__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.3.10.dev6 → droidrun-0.3.10.dev8}/PKG-INFO +1 -1
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/codeact/codeact_agent.py +3 -4
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/context/task_manager.py +0 -1
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/droid/droid_agent.py +1 -3
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/droid/events.py +2 -2
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/manager/__init__.py +1 -1
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/utils/executer.py +11 -10
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/utils/llm_picker.py +1 -1
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/app_cards/app_card_provider.py +0 -1
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/app_cards/providers/composite_provider.py +4 -4
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/app_cards/providers/local_provider.py +1 -2
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/app_cards/providers/server_provider.py +1 -1
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/cli/main.py +10 -14
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/config_manager/config_manager.py +0 -1
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/macro/cli.py +0 -1
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/tools/adb.py +23 -365
- droidrun-0.3.10.dev8/droidrun/tools/portal_client.py +434 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/pyproject.toml +1 -1
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/uv.lock +2 -189
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/.github/workflows/bounty.yml +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/.github/workflows/publish.yml +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/.gitignore +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/.python-version +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/CHANGELOG.md +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/CONTRIBUTING.md +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/LICENSE +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/MANIFEST.in +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/README.md +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/config/app_cards/README.md +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/config/app_cards/app_cards.json +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/config/app_cards/gmail.md +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/config/prompts/codeact/system.jinja2 +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/config/prompts/codeact/user.jinja2 +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/config/prompts/executor/rev1.jinja2 +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/config/prompts/executor/system.jinja2 +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/config/prompts/manager/rev1.jinja2 +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/config/prompts/manager/system.jinja2 +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/config_example.yaml +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/.generated-files.txt +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/docs.json +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/favicon.png +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/logo/dark.svg +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/logo/light.svg +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v1/concepts/agent.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v1/concepts/android-control.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v1/concepts/portal-app.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v1/overview.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v1/quickstart.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v2/concepts/agent.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v2/concepts/android-control.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v2/concepts/planning.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v2/concepts/portal-app.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v2/concepts/tracing.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v2/overview.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v2/quickstart.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/concepts/agent.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/concepts/android-tools.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/concepts/models.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/concepts/portal-app.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/guides/cli.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/guides/gemini.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/guides/ollama.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/guides/openailike.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/guides/overview.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/guides/telemetry.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/images/portal_apk.png +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/overview.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/quickstart.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/sdk/adb-tools.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/sdk/base-tools.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/sdk/droid-agent.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/docs/v3/sdk/ios-tools.mdx +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/__main__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/codeact/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/codeact/events.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/common/constants.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/common/events.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/context/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/context/episodic_memory.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/droid/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/executor/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/executor/events.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/executor/executor_agent.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/executor/prompts.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/manager/events.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/manager/manager_agent.py +4 -4
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/manager/prompts.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/oneflows/app_starter_workflow.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/oneflows/text_manipulator.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/usage.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/utils/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/utils/async_utils.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/utils/chat_utils.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/utils/device_state_formatter.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/utils/inference.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/utils/message_utils.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/utils/tools.py +1 -1
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/agent/utils/trajectory.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/app_cards/providers/__init__.py +1 -1
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/cli/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/cli/logs.py +4 -4
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/config_manager/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/config_manager/path_resolver.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/config_manager/prompt_loader.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/macro/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/macro/__main__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/macro/replay.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/portal.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/telemetry/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/telemetry/events.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/telemetry/phoenix.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/telemetry/tracker.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/tools/__init__.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/tools/ios.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/tools/tools.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/gen-docs-sdk-ref.sh +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/setup.py +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/static/droidrun-dark.png +0 -0
- {droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/static/droidrun.png +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: droidrun
|
3
|
-
Version: 0.3.10.
|
3
|
+
Version: 0.3.10.dev8
|
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
|
@@ -3,7 +3,7 @@ import json
|
|
3
3
|
import logging
|
4
4
|
import re
|
5
5
|
import time
|
6
|
-
from typing import
|
6
|
+
from typing import TYPE_CHECKING, List, Optional, Union
|
7
7
|
|
8
8
|
from llama_index.core.base.llms.types import ChatMessage, ChatResponse
|
9
9
|
from llama_index.core.llms.llm import LLM
|
@@ -23,9 +23,8 @@ from droidrun.agent.common.events import RecordUIStateEvent, ScreenshotEvent
|
|
23
23
|
from droidrun.agent.context.episodic_memory import EpisodicMemory, EpisodicMemoryStep
|
24
24
|
from droidrun.agent.usage import get_usage_from_response
|
25
25
|
from droidrun.agent.utils import chat_utils
|
26
|
-
from droidrun.agent.utils.executer import SimpleCodeExecutor, ExecuterState
|
27
26
|
from droidrun.agent.utils.device_state_formatter import format_device_state
|
28
|
-
|
27
|
+
from droidrun.agent.utils.executer import ExecuterState, SimpleCodeExecutor
|
29
28
|
from droidrun.agent.utils.tools import (
|
30
29
|
ATOMIC_ACTION_SIGNATURES,
|
31
30
|
build_custom_tool_descriptions,
|
@@ -489,7 +488,7 @@ Now, describe the next step you will take to address the original goal: {goal}""
|
|
489
488
|
try:
|
490
489
|
state = self.tools.get_state()
|
491
490
|
a11y_tree = state.get("a11y_tree", "")
|
492
|
-
phone_state = state.get("phone_state", "")
|
491
|
+
phone_state = state.get("phone_state", "") # noqa: F841
|
493
492
|
except Exception as e:
|
494
493
|
raise Exception(f"Failed to capture final UI state: {e}") from e
|
495
494
|
|
@@ -32,7 +32,7 @@ from droidrun.agent.droid.events import (
|
|
32
32
|
)
|
33
33
|
from droidrun.agent.executor import ExecutorAgent
|
34
34
|
from droidrun.agent.manager import ManagerAgent
|
35
|
-
from droidrun.agent.utils.tools import ATOMIC_ACTION_SIGNATURES
|
35
|
+
from droidrun.agent.utils.tools import ATOMIC_ACTION_SIGNATURES, open_app
|
36
36
|
from droidrun.agent.utils.trajectory import Trajectory
|
37
37
|
from droidrun.config_manager.config_manager import (
|
38
38
|
AgentConfig,
|
@@ -43,8 +43,6 @@ from droidrun.config_manager.config_manager import (
|
|
43
43
|
ToolsConfig,
|
44
44
|
TracingConfig,
|
45
45
|
)
|
46
|
-
|
47
|
-
from droidrun.agent.utils.tools import open_app
|
48
46
|
from droidrun.telemetry import (
|
49
47
|
DroidAgentFinalizeEvent,
|
50
48
|
DroidAgentInitEvent,
|
@@ -14,7 +14,7 @@ import asyncio
|
|
14
14
|
from typing import Dict, List
|
15
15
|
|
16
16
|
from llama_index.core.workflow import Event
|
17
|
-
from pydantic import BaseModel, Field
|
17
|
+
from pydantic import BaseModel, ConfigDict, Field
|
18
18
|
|
19
19
|
from droidrun.agent.context import Task
|
20
20
|
|
@@ -47,7 +47,7 @@ class DroidAgentState(BaseModel):
|
|
47
47
|
"""
|
48
48
|
State model for DroidAgent workflow - shared across parent and child workflows.
|
49
49
|
"""
|
50
|
-
|
50
|
+
model_config = ConfigDict(arbitrary_types_allowed=True)
|
51
51
|
# Task context
|
52
52
|
instruction: str = ""
|
53
53
|
# App Cards
|
@@ -3,7 +3,7 @@ Manager Agent - Planning and reasoning workflow.
|
|
3
3
|
"""
|
4
4
|
|
5
5
|
from droidrun.agent.droid.events import ManagerInputEvent, ManagerPlanEvent
|
6
|
-
from droidrun.agent.manager.events import
|
6
|
+
from droidrun.agent.manager.events import ManagerInternalPlanEvent, ManagerThinkingEvent
|
7
7
|
from droidrun.agent.manager.manager_agent import ManagerAgent
|
8
8
|
from droidrun.agent.manager.prompts import parse_manager_response
|
9
9
|
|
@@ -1,9 +1,10 @@
|
|
1
|
-
import io
|
2
1
|
import contextlib
|
3
|
-
import
|
2
|
+
import io
|
4
3
|
import logging
|
5
|
-
|
4
|
+
import traceback
|
6
5
|
from asyncio import AbstractEventLoop
|
6
|
+
from typing import Any, Dict, Optional
|
7
|
+
|
7
8
|
from pydantic import BaseModel
|
8
9
|
|
9
10
|
logger = logging.getLogger("droidrun")
|
@@ -11,7 +12,7 @@ logger = logging.getLogger("droidrun")
|
|
11
12
|
class ExecuterState(BaseModel):
|
12
13
|
"""State object for the code executor."""
|
13
14
|
ui_state: Optional[Any] = None
|
14
|
-
|
15
|
+
|
15
16
|
class Config:
|
16
17
|
arbitrary_types_allowed = True
|
17
18
|
|
@@ -70,7 +71,7 @@ class SimpleCodeExecutor:
|
|
70
71
|
self.locals = locals
|
71
72
|
self.loop = loop
|
72
73
|
self.use_same_scope = use_same_scope
|
73
|
-
|
74
|
+
|
74
75
|
if self.use_same_scope:
|
75
76
|
# If using the same scope, merge globals and locals
|
76
77
|
self.globals = self.locals = {
|
@@ -85,7 +86,7 @@ class SimpleCodeExecutor:
|
|
85
86
|
"""
|
86
87
|
# Update UI state
|
87
88
|
self.globals['ui_state'] = ui_state
|
88
|
-
|
89
|
+
|
89
90
|
# Capture stdout and stderr
|
90
91
|
stdout = io.StringIO()
|
91
92
|
stderr = io.StringIO()
|
@@ -111,7 +112,7 @@ class SimpleCodeExecutor:
|
|
111
112
|
async def execute(self, state: ExecuterState, code: str) -> str:
|
112
113
|
"""
|
113
114
|
Execute Python code and capture output and return values.
|
114
|
-
|
115
|
+
|
115
116
|
Runs the code in a separate thread to prevent blocking.
|
116
117
|
|
117
118
|
Args:
|
@@ -123,7 +124,7 @@ class SimpleCodeExecutor:
|
|
123
124
|
"""
|
124
125
|
# Get UI state from the state object
|
125
126
|
ui_state = state.ui_state
|
126
|
-
|
127
|
+
|
127
128
|
# Run the execution in a thread pool executor
|
128
129
|
output = await self.loop.run_in_executor(
|
129
130
|
None,
|
@@ -131,5 +132,5 @@ class SimpleCodeExecutor:
|
|
131
132
|
code,
|
132
133
|
ui_state
|
133
134
|
)
|
134
|
-
|
135
|
-
return output
|
135
|
+
|
136
|
+
return output
|
{droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/app_cards/providers/composite_provider.py
RENAMED
@@ -7,9 +7,9 @@ Tries server first, falls back to local if server fails or returns empty.
|
|
7
7
|
import logging
|
8
8
|
from typing import Dict
|
9
9
|
|
10
|
-
from droidrun.
|
11
|
-
from droidrun.
|
12
|
-
from droidrun.
|
10
|
+
from droidrun.app_cards.app_card_provider import AppCardProvider
|
11
|
+
from droidrun.app_cards.providers.local_provider import LocalAppCardProvider
|
12
|
+
from droidrun.app_cards.providers.server_provider import ServerAppCardProvider
|
13
13
|
|
14
14
|
logger = logging.getLogger("droidrun")
|
15
15
|
|
@@ -65,7 +65,7 @@ class CompositeAppCardProvider(AppCardProvider):
|
|
65
65
|
server_result = await self.server_provider.load_app_card(package_name, instruction)
|
66
66
|
|
67
67
|
if server_result:
|
68
|
-
return server_result
|
68
|
+
return server_result
|
69
69
|
|
70
70
|
# Server failed or returned empty, try local
|
71
71
|
logger.debug(f"Composite provider: falling back to local for {package_name}")
|
{droidrun-0.3.10.dev6 → droidrun-0.3.10.dev8}/droidrun/app_cards/providers/local_provider.py
RENAMED
@@ -6,10 +6,9 @@ Loads app cards from local filesystem using app_cards.json mapping.
|
|
6
6
|
|
7
7
|
import json
|
8
8
|
import logging
|
9
|
-
from pathlib import Path
|
10
9
|
from typing import Dict
|
11
10
|
|
12
|
-
from droidrun.
|
11
|
+
from droidrun.app_cards.app_card_provider import AppCardProvider
|
13
12
|
from droidrun.config_manager.path_resolver import PathResolver
|
14
13
|
|
15
14
|
logger = logging.getLogger("droidrun")
|
@@ -16,13 +16,14 @@ from rich.console import Console
|
|
16
16
|
from droidrun.agent.droid import DroidAgent
|
17
17
|
from droidrun.agent.utils.llm_picker import load_llm, load_llms_from_profiles
|
18
18
|
from droidrun.cli.logs import LogHandler
|
19
|
+
from droidrun.config_manager import ConfigManager
|
19
20
|
from droidrun.config_manager.config_manager import (
|
20
21
|
AgentConfig,
|
21
22
|
CodeActConfig,
|
22
|
-
ManagerConfig,
|
23
|
-
ExecutorConfig,
|
24
23
|
DeviceConfig,
|
24
|
+
ExecutorConfig,
|
25
25
|
LoggingConfig,
|
26
|
+
ManagerConfig,
|
26
27
|
ToolsConfig,
|
27
28
|
TracingConfig,
|
28
29
|
)
|
@@ -37,8 +38,6 @@ from droidrun.portal import (
|
|
37
38
|
)
|
38
39
|
from droidrun.telemetry import print_telemetry_message
|
39
40
|
from droidrun.tools import AdbTools, IOSTools
|
40
|
-
from droidrun.config_manager import ConfigManager
|
41
|
-
|
42
41
|
|
43
42
|
# Suppress all warnings
|
44
43
|
warnings.filterwarnings("ignore")
|
@@ -556,18 +555,15 @@ def run(
|
|
556
555
|
)
|
557
556
|
finally:
|
558
557
|
# Disable DroidRun keyboard after execution
|
558
|
+
# Note: Port forwards are managed automatically and persist until device disconnect
|
559
559
|
try:
|
560
560
|
if not (ios if ios is not None else False):
|
561
|
-
|
562
|
-
if
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
# Cleanup tools
|
568
|
-
del tools
|
569
|
-
except Exception as disable_e:
|
570
|
-
click.echo(f"Warning: Failed to disable DroidRun keyboard: {disable_e}")
|
561
|
+
device_obj = adb.device(device)
|
562
|
+
if device_obj:
|
563
|
+
device_obj.shell("ime disable com.droidrun.portal/.DroidrunKeyboardIME")
|
564
|
+
except Exception:
|
565
|
+
click.echo("Failed to disable DroidRun keyboard")
|
566
|
+
pass
|
571
567
|
|
572
568
|
|
573
569
|
@cli.command()
|