minitap-mobile-use 2.7.1__py3-none-any.whl → 2.7.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.
Potentially problematic release.
This version of minitap-mobile-use might be problematic. Click here for more details.
- minitap/mobile_use/agents/cortex/cortex.py +2 -6
- minitap/mobile_use/agents/executor/executor.py +2 -6
- minitap/mobile_use/agents/executor/tool_node.py +31 -6
- minitap/mobile_use/agents/hopper/hopper.py +2 -6
- minitap/mobile_use/agents/orchestrator/orchestrator.py +2 -6
- minitap/mobile_use/agents/outputter/outputter.py +2 -4
- minitap/mobile_use/agents/planner/planner.py +2 -2
- minitap/mobile_use/agents/screen_analyzer/screen_analyzer.py +2 -6
- minitap/mobile_use/config.py +1 -1
- minitap/mobile_use/graph/graph.py +6 -2
- minitap/mobile_use/sdk/builders/agent_config_builder.py +16 -9
- minitap/mobile_use/services/llm.py +0 -2
- {minitap_mobile_use-2.7.1.dist-info → minitap_mobile_use-2.7.2.dist-info}/METADATA +1 -1
- {minitap_mobile_use-2.7.1.dist-info → minitap_mobile_use-2.7.2.dist-info}/RECORD +16 -16
- {minitap_mobile_use-2.7.1.dist-info → minitap_mobile_use-2.7.2.dist-info}/WHEEL +0 -0
- {minitap_mobile_use-2.7.1.dist-info → minitap_mobile_use-2.7.2.dist-info}/entry_points.txt +0 -0
|
@@ -73,12 +73,8 @@ class CortexNode:
|
|
|
73
73
|
ctx=self.ctx, name="cortex", use_fallback=True, temperature=1
|
|
74
74
|
).with_structured_output(CortexOutput)
|
|
75
75
|
response: CortexOutput = await with_fallback(
|
|
76
|
-
main_call=lambda: invoke_llm_with_timeout_message(
|
|
77
|
-
|
|
78
|
-
),
|
|
79
|
-
fallback_call=lambda: invoke_llm_with_timeout_message(
|
|
80
|
-
llm_fallback.ainvoke(messages), agent_name="Cortex (Fallback)"
|
|
81
|
-
),
|
|
76
|
+
main_call=lambda: invoke_llm_with_timeout_message(llm.ainvoke(messages)),
|
|
77
|
+
fallback_call=lambda: invoke_llm_with_timeout_message(llm_fallback.ainvoke(messages)),
|
|
82
78
|
) # type: ignore
|
|
83
79
|
|
|
84
80
|
EMPTY_STRING_TOKENS = ["{}", "[]", "null", "", "None"]
|
|
@@ -65,12 +65,8 @@ class ExecutorNode:
|
|
|
65
65
|
llm = llm.bind_tools(**llm_bind_tools_kwargs)
|
|
66
66
|
llm_fallback = llm_fallback.bind_tools(**llm_bind_tools_kwargs)
|
|
67
67
|
response = await with_fallback(
|
|
68
|
-
main_call=lambda: invoke_llm_with_timeout_message(
|
|
69
|
-
|
|
70
|
-
),
|
|
71
|
-
fallback_call=lambda: invoke_llm_with_timeout_message(
|
|
72
|
-
llm_fallback.ainvoke(messages), agent_name="Executor (Fallback)"
|
|
73
|
-
),
|
|
68
|
+
main_call=lambda: invoke_llm_with_timeout_message(llm.ainvoke(messages)),
|
|
69
|
+
fallback_call=lambda: invoke_llm_with_timeout_message(llm_fallback.ainvoke(messages)),
|
|
74
70
|
)
|
|
75
71
|
return await state.asanitize_update(
|
|
76
72
|
ctx=self.ctx,
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
|
|
3
|
-
from
|
|
4
|
-
|
|
5
|
-
from typing import override
|
|
6
|
-
from langchain_core.runnables import RunnableConfig
|
|
7
|
-
from langgraph.store.base import BaseStore
|
|
2
|
+
import copy
|
|
3
|
+
from typing import Any, override
|
|
4
|
+
|
|
8
5
|
from langchain_core.messages import AnyMessage, ToolCall, ToolMessage
|
|
6
|
+
from langchain_core.runnables import RunnableConfig
|
|
9
7
|
from langgraph.prebuilt import ToolNode
|
|
8
|
+
from langgraph.store.base import BaseStore
|
|
9
|
+
from langgraph.types import Command
|
|
10
|
+
from pydantic import BaseModel
|
|
11
|
+
|
|
12
|
+
from minitap.mobile_use.utils.logger import get_logger
|
|
13
|
+
|
|
14
|
+
logger = get_logger(__name__)
|
|
10
15
|
|
|
11
16
|
|
|
12
17
|
class ExecutorToolNode(ToolNode):
|
|
@@ -67,6 +72,26 @@ class ExecutorToolNode(ToolNode):
|
|
|
67
72
|
message=f"Unexpected tool output type: {type(output)}",
|
|
68
73
|
)
|
|
69
74
|
failed = True
|
|
75
|
+
|
|
76
|
+
call_without_state = copy.deepcopy(call)
|
|
77
|
+
if "args" in call_without_state and "state" in call_without_state["args"]:
|
|
78
|
+
del call_without_state["args"]["state"]
|
|
79
|
+
if failed:
|
|
80
|
+
error_msg = ""
|
|
81
|
+
try:
|
|
82
|
+
if isinstance(output, ToolMessage):
|
|
83
|
+
error_msg = output.content
|
|
84
|
+
elif isinstance(output, Command):
|
|
85
|
+
tool_msg = self._get_tool_message(output)
|
|
86
|
+
error_msg = tool_msg.content
|
|
87
|
+
except Exception:
|
|
88
|
+
error_msg = "Could not extract error details"
|
|
89
|
+
|
|
90
|
+
logger.info(f"❌ Tool call failed: {call_without_state}")
|
|
91
|
+
logger.info(f" Error: {error_msg}")
|
|
92
|
+
else:
|
|
93
|
+
logger.info("✅ Tool call succeeded: " + str(call_without_state))
|
|
94
|
+
|
|
70
95
|
outputs.append(output)
|
|
71
96
|
return self._combine_tool_outputs(outputs, input_type) # type: ignore
|
|
72
97
|
|
|
@@ -37,11 +37,7 @@ async def hopper(
|
|
|
37
37
|
ctx=ctx, name="hopper", is_utils=True, use_fallback=True, temperature=0
|
|
38
38
|
).with_structured_output(HopperOutput)
|
|
39
39
|
response: HopperOutput = await with_fallback(
|
|
40
|
-
main_call=lambda: invoke_llm_with_timeout_message(
|
|
41
|
-
|
|
42
|
-
),
|
|
43
|
-
fallback_call=lambda: invoke_llm_with_timeout_message(
|
|
44
|
-
llm_fallback.ainvoke(messages), agent_name="Hopper (Fallback)"
|
|
45
|
-
),
|
|
40
|
+
main_call=lambda: invoke_llm_with_timeout_message(llm.ainvoke(messages)),
|
|
41
|
+
fallback_call=lambda: invoke_llm_with_timeout_message(llm_fallback.ainvoke(messages)),
|
|
46
42
|
) # type: ignore
|
|
47
43
|
return response
|
|
@@ -81,12 +81,8 @@ class OrchestratorNode:
|
|
|
81
81
|
ctx=self.ctx, name="orchestrator", use_fallback=True, temperature=1
|
|
82
82
|
).with_structured_output(OrchestratorOutput)
|
|
83
83
|
response: OrchestratorOutput = await with_fallback(
|
|
84
|
-
main_call=lambda: invoke_llm_with_timeout_message(
|
|
85
|
-
|
|
86
|
-
),
|
|
87
|
-
fallback_call=lambda: invoke_llm_with_timeout_message(
|
|
88
|
-
llm_fallback.ainvoke(messages), agent_name="Orchestrator (Fallback)"
|
|
89
|
-
),
|
|
84
|
+
main_call=lambda: invoke_llm_with_timeout_message(llm.ainvoke(messages)),
|
|
85
|
+
fallback_call=lambda: invoke_llm_with_timeout_message(llm_fallback.ainvoke(messages)),
|
|
90
86
|
) # type: ignore
|
|
91
87
|
if response.needs_replaning:
|
|
92
88
|
thoughts = [response.reason]
|
|
@@ -68,11 +68,9 @@ async def outputter(
|
|
|
68
68
|
structured_llm_fallback = llm_fallback.with_structured_output(schema)
|
|
69
69
|
|
|
70
70
|
response = await with_fallback(
|
|
71
|
-
main_call=lambda: invoke_llm_with_timeout_message(
|
|
72
|
-
structured_llm.ainvoke(messages), agent_name="Outputter"
|
|
73
|
-
),
|
|
71
|
+
main_call=lambda: invoke_llm_with_timeout_message(structured_llm.ainvoke(messages)),
|
|
74
72
|
fallback_call=lambda: invoke_llm_with_timeout_message(
|
|
75
|
-
structured_llm_fallback.ainvoke(messages)
|
|
73
|
+
structured_llm_fallback.ainvoke(messages)
|
|
76
74
|
),
|
|
77
75
|
) # type: ignore
|
|
78
76
|
if isinstance(response, BaseModel):
|
|
@@ -52,10 +52,10 @@ class PlannerNode:
|
|
|
52
52
|
).with_structured_output(PlannerOutput)
|
|
53
53
|
response: PlannerOutput = await with_fallback(
|
|
54
54
|
main_call=lambda: invoke_llm_with_timeout_message(
|
|
55
|
-
llm.ainvoke(messages),
|
|
55
|
+
llm.ainvoke(messages),
|
|
56
56
|
),
|
|
57
57
|
fallback_call=lambda: invoke_llm_with_timeout_message(
|
|
58
|
-
llm_fallback.ainvoke(messages),
|
|
58
|
+
llm_fallback.ainvoke(messages),
|
|
59
59
|
),
|
|
60
60
|
) # type: ignore
|
|
61
61
|
subgoals_plan = [
|
|
@@ -101,11 +101,7 @@ async def screen_analyzer(ctx: MobileUseContext, screenshot_base64: str, prompt:
|
|
|
101
101
|
llm_fallback = get_llm(ctx=ctx, name="screen_analyzer", use_fallback=True, temperature=0)
|
|
102
102
|
|
|
103
103
|
response = await with_fallback(
|
|
104
|
-
main_call=lambda: invoke_llm_with_timeout_message(
|
|
105
|
-
|
|
106
|
-
),
|
|
107
|
-
fallback_call=lambda: invoke_llm_with_timeout_message(
|
|
108
|
-
llm_fallback.ainvoke(messages), agent_name="ScreenAnalyzer (Fallback)"
|
|
109
|
-
),
|
|
104
|
+
main_call=lambda: invoke_llm_with_timeout_message(llm.ainvoke(messages)),
|
|
105
|
+
fallback_call=lambda: invoke_llm_with_timeout_message(llm_fallback.ainvoke(messages)),
|
|
110
106
|
)
|
|
111
107
|
return response.content # type: ignore
|
minitap/mobile_use/config.py
CHANGED
|
@@ -86,7 +86,7 @@ def record_events(output_path: Path | None, events: list[str] | BaseModel | Any)
|
|
|
86
86
|
else:
|
|
87
87
|
events_content = json.dumps(events, indent=2)
|
|
88
88
|
|
|
89
|
-
with open(output_path, "w") as f:
|
|
89
|
+
with open(output_path, "w", encoding="utf-8") as f:
|
|
90
90
|
f.write(events_content)
|
|
91
91
|
|
|
92
92
|
|
|
@@ -96,10 +96,14 @@ def post_executor_gate(
|
|
|
96
96
|
if isinstance(last_message, AIMessage):
|
|
97
97
|
tool_calls = getattr(last_message, "tool_calls", None)
|
|
98
98
|
if tool_calls and len(tool_calls) > 0:
|
|
99
|
-
logger.info("
|
|
99
|
+
logger.info("[executor] Executing " + str(len(tool_calls)) + " tool calls:")
|
|
100
|
+
for tool_call in tool_calls:
|
|
101
|
+
logger.info("-------------")
|
|
102
|
+
logger.info("[executor] - " + str(tool_call) + "\n")
|
|
103
|
+
logger.info("-------------")
|
|
100
104
|
return "invoke_tools"
|
|
101
105
|
else:
|
|
102
|
-
logger.info("
|
|
106
|
+
logger.info("[executor] ❌ No tool calls found")
|
|
103
107
|
return "skip"
|
|
104
108
|
|
|
105
109
|
|
|
@@ -46,7 +46,7 @@ class AgentConfigBuilder:
|
|
|
46
46
|
self._servers: ServerConfig = get_default_servers()
|
|
47
47
|
self._graph_config_callbacks: Callbacks = None
|
|
48
48
|
|
|
49
|
-
def add_profile(self, profile: AgentProfile) -> "AgentConfigBuilder":
|
|
49
|
+
def add_profile(self, profile: AgentProfile, validate: bool = True) -> "AgentConfigBuilder":
|
|
50
50
|
"""
|
|
51
51
|
Add an agent profile to the mobile-use agent.
|
|
52
52
|
|
|
@@ -54,10 +54,15 @@ class AgentConfigBuilder:
|
|
|
54
54
|
profile: The agent profile to add
|
|
55
55
|
"""
|
|
56
56
|
self._agent_profiles[profile.name] = profile
|
|
57
|
-
|
|
57
|
+
if validate:
|
|
58
|
+
profile.llm_config.validate_providers()
|
|
58
59
|
return self
|
|
59
60
|
|
|
60
|
-
def add_profiles(
|
|
61
|
+
def add_profiles(
|
|
62
|
+
self,
|
|
63
|
+
profiles: list[AgentProfile],
|
|
64
|
+
validate: bool = True,
|
|
65
|
+
) -> "AgentConfigBuilder":
|
|
61
66
|
"""
|
|
62
67
|
Add multiple agent profiles to the mobile-use agent.
|
|
63
68
|
|
|
@@ -65,8 +70,7 @@ class AgentConfigBuilder:
|
|
|
65
70
|
profiles: List of agent profiles to add
|
|
66
71
|
"""
|
|
67
72
|
for profile in profiles:
|
|
68
|
-
self.add_profile(profile=profile)
|
|
69
|
-
profile.llm_config.validate_providers()
|
|
73
|
+
self.add_profile(profile=profile, validate=validate)
|
|
70
74
|
return self
|
|
71
75
|
|
|
72
76
|
def with_default_profile(self, profile: str | AgentProfile) -> "AgentConfigBuilder":
|
|
@@ -162,7 +166,7 @@ class AgentConfigBuilder:
|
|
|
162
166
|
self._graph_config_callbacks = callbacks
|
|
163
167
|
return self
|
|
164
168
|
|
|
165
|
-
def build(self) -> AgentConfig:
|
|
169
|
+
def build(self, validate_profiles: bool = True) -> AgentConfig:
|
|
166
170
|
"""
|
|
167
171
|
Build the mobile-use AgentConfig object.
|
|
168
172
|
|
|
@@ -185,14 +189,17 @@ class AgentConfigBuilder:
|
|
|
185
189
|
elif isinstance(self._default_profile, AgentProfile):
|
|
186
190
|
default_profile = self._default_profile
|
|
187
191
|
if default_profile.name not in self._agent_profiles:
|
|
188
|
-
self.add_profile(default_profile)
|
|
192
|
+
self.add_profile(default_profile, validate=validate_profiles)
|
|
189
193
|
elif nb_profiles <= 0:
|
|
190
|
-
llm_config =
|
|
194
|
+
llm_config = (
|
|
195
|
+
get_default_minitap_llm_config(validate=validate_profiles)
|
|
196
|
+
or get_default_llm_config()
|
|
197
|
+
)
|
|
191
198
|
default_profile = AgentProfile(
|
|
192
199
|
name=DEFAULT_PROFILE_NAME,
|
|
193
200
|
llm_config=llm_config,
|
|
194
201
|
)
|
|
195
|
-
self.add_profile(default_profile)
|
|
202
|
+
self.add_profile(default_profile, validate=validate_profiles)
|
|
196
203
|
elif nb_profiles == 1:
|
|
197
204
|
# Select the only one available
|
|
198
205
|
default_profile = next(iter(self._agent_profiles.values()))
|
|
@@ -28,7 +28,6 @@ user_messages_logger = get_logger(__name__)
|
|
|
28
28
|
|
|
29
29
|
async def invoke_llm_with_timeout_message[T](
|
|
30
30
|
llm_call: Coroutine[Any, Any, T],
|
|
31
|
-
agent_name: str,
|
|
32
31
|
timeout_seconds: int = 10,
|
|
33
32
|
) -> T:
|
|
34
33
|
"""
|
|
@@ -36,7 +35,6 @@ async def invoke_llm_with_timeout_message[T](
|
|
|
36
35
|
|
|
37
36
|
Args:
|
|
38
37
|
llm_call: The coroutine of the LLM call to execute.
|
|
39
|
-
agent_name: The name of the agent making the call (for the message).
|
|
40
38
|
timeout_seconds: The delay in seconds before displaying the message.
|
|
41
39
|
|
|
42
40
|
Returns:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: minitap-mobile-use
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.2
|
|
4
4
|
Summary: AI-powered multi-agent system that automates real Android and iOS devices through low-level control using LangGraph.
|
|
5
5
|
Author: Pierre-Louis Favreau, Jean-Pierre Lo, Nicolas Dehandschoewercker
|
|
6
6
|
License: MIT License
|
|
@@ -1,46 +1,46 @@
|
|
|
1
1
|
minitap/mobile_use/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
|
2
2
|
minitap/mobile_use/agents/contextor/contextor.py,sha256=6c40c226a08219eaac34e763931d3cca2b4b2f3650afe09fd1b5f37880647969,1357
|
|
3
3
|
minitap/mobile_use/agents/cortex/cortex.md,sha256=5ecc65b221f93f4b6daf50a88936bb0e585a7213ddca12e30710754f55a65f84,16321
|
|
4
|
-
minitap/mobile_use/agents/cortex/cortex.py,sha256=
|
|
4
|
+
minitap/mobile_use/agents/cortex/cortex.py,sha256=abfed90942dda397953fc54c7dbf07bd28d59cdab8cf6c2250569cd2a3bb76b2,5718
|
|
5
5
|
minitap/mobile_use/agents/cortex/types.py,sha256=04c4c91f55a587b0c3e612243d7bf1fca7328f65a7d13999df4708d6a81b54dc,945
|
|
6
6
|
minitap/mobile_use/agents/executor/executor.md,sha256=a7b922203cc80b068e6a0a79b298757c8a11f45e1add84c04f026e4c351336ea,3756
|
|
7
|
-
minitap/mobile_use/agents/executor/executor.py,sha256=
|
|
8
|
-
minitap/mobile_use/agents/executor/tool_node.py,sha256=
|
|
7
|
+
minitap/mobile_use/agents/executor/executor.py,sha256=5c15e49ba0eb3f663bc679880ae28deca1f769936790c42ba739f2a9f0e81934,3252
|
|
8
|
+
minitap/mobile_use/agents/executor/tool_node.py,sha256=e36eaee821a7425eacf95f688cf8c340925f0b824d7d01d3c303a8528337f63f,4866
|
|
9
9
|
minitap/mobile_use/agents/executor/utils.py,sha256=74cf2287053cd4fc763835870e5ae029ca36f6cd0ca7d50678ad05d52ab265b7,368
|
|
10
10
|
minitap/mobile_use/agents/hopper/hopper.md,sha256=a1764bc43c9b53b3bfe0584abbf0ff7b6e3f516faab3f368fa27bfd9090b5770,1555
|
|
11
|
-
minitap/mobile_use/agents/hopper/hopper.py,sha256=
|
|
11
|
+
minitap/mobile_use/agents/hopper/hopper.py,sha256=8901c6cefab94a981b3a1214047187a8925dbc0447bd38751bd72e2a46536719,1553
|
|
12
12
|
minitap/mobile_use/agents/orchestrator/human.md,sha256=6559026aa921b7ad7dddcf3dfcd5d9930252edd6484d60ea92ff6ca97ed028fc,229
|
|
13
13
|
minitap/mobile_use/agents/orchestrator/orchestrator.md,sha256=cc1a353c577f2eef42d9a528178ccc2c0a4a144a907a29878f9efe57e83b12fa,2546
|
|
14
|
-
minitap/mobile_use/agents/orchestrator/orchestrator.py,sha256=
|
|
14
|
+
minitap/mobile_use/agents/orchestrator/orchestrator.py,sha256=4c3bfc13bb6ffaf68a29f32df6cbe419cbf124c1e2abce6ef12d7f0af98660e1,5378
|
|
15
15
|
minitap/mobile_use/agents/orchestrator/types.py,sha256=f53dfdc99e8d50888ac1cde5f7f90ba5c87837a8eee8dd8efa31f2640394433c,335
|
|
16
16
|
minitap/mobile_use/agents/outputter/human.md,sha256=6b9b45c640b163554524b1aec4cd97134c628eeb8557a32e23c8f966d32f642e,771
|
|
17
|
-
minitap/mobile_use/agents/outputter/outputter.py,sha256=
|
|
17
|
+
minitap/mobile_use/agents/outputter/outputter.py,sha256=570f996114deb9d9b12ea77db8586d5a5a3dac1238d3044d3a7860db1003d69e,3250
|
|
18
18
|
minitap/mobile_use/agents/outputter/test_outputter.py,sha256=907b517c486f82a384a364e0bd202c00e8e8082c138461f6eead0e25c2779ba9,5538
|
|
19
19
|
minitap/mobile_use/agents/planner/human.md,sha256=cb37be2af568918e60238eaa785837178a3ba8f8112de86850d9a62914c18314,222
|
|
20
20
|
minitap/mobile_use/agents/planner/planner.md,sha256=6c003612c7ad2fece469e6f439751643a69e6559e604d1f8a5e14663fae04a4b,4527
|
|
21
|
-
minitap/mobile_use/agents/planner/planner.py,sha256=
|
|
21
|
+
minitap/mobile_use/agents/planner/planner.py,sha256=c8786393a7f5245786976abc73304d2a19d7d40fb72a26a56e2d6a3a0345074c,3241
|
|
22
22
|
minitap/mobile_use/agents/planner/types.py,sha256=e8acf3c2d1505286a138b6f7c3ef36f397d154953311d0875e3ef35152653e7f,1496
|
|
23
23
|
minitap/mobile_use/agents/planner/utils.py,sha256=88b4b039e09cea254615ff3d0bc8951c3717a68702742e913a0176ecfbcaf495,2315
|
|
24
24
|
minitap/mobile_use/agents/screen_analyzer/human.md,sha256=1421b0cf68507ebc2c4df6b76e4d4e738b9ebee4d4691cc8d623680b6f33dfef,352
|
|
25
|
-
minitap/mobile_use/agents/screen_analyzer/screen_analyzer.py,sha256=
|
|
25
|
+
minitap/mobile_use/agents/screen_analyzer/screen_analyzer.py,sha256=639247622e4a90f6a339c3589c4ac6a9a23f08097009e035a3d5ba62abe6012c,3956
|
|
26
26
|
minitap/mobile_use/agents/summarizer/summarizer.py,sha256=56c2c7d5d48f4ba045b1401538db78b2ddbd43280389ed4cbc58ecd1da0c7610,1083
|
|
27
27
|
minitap/mobile_use/clients/device_hardware_client.py,sha256=9593380a7a3df32f02aa22717678c25e91367df26b1743abde9e57aec5dc2474,857
|
|
28
28
|
minitap/mobile_use/clients/ios_client.py,sha256=74b417bbfba597a50c534d76065aa160efdf3810a16fd5c1f74323a4a705fcab,1629
|
|
29
29
|
minitap/mobile_use/clients/screen_api_client.py,sha256=3615dc65d25c38b4d8dc5512f9adb3bcf69dca7a0298a472a6812f604a275c47,2019
|
|
30
|
-
minitap/mobile_use/config.py,sha256=
|
|
30
|
+
minitap/mobile_use/config.py,sha256=02275a3c23a417fb610bb6432c3222b043009f205b03d68e0bed5df5c85a7ec3,13636
|
|
31
31
|
minitap/mobile_use/constants.py,sha256=3acd9d6ade5bc772e902b3473f3ba12ddd04e7306963ca2bae49d1132d89ba46,95
|
|
32
32
|
minitap/mobile_use/context.py,sha256=2e212588a8a7caf58460fead0cae195c6386b7301026bbb2d78fe56c263ce6c3,2131
|
|
33
33
|
minitap/mobile_use/controllers/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
|
34
34
|
minitap/mobile_use/controllers/mobile_command_controller.py,sha256=e1eadfa0d4555a04174baa520b7c8f01ff83d1c8cbc90edf4c7052408cec337b,20361
|
|
35
35
|
minitap/mobile_use/controllers/platform_specific_commands_controller.py,sha256=84061d2a44ad8eed985f339866a4eb9456d7b9007ecf2ce6277e08335cf8f564,3274
|
|
36
36
|
minitap/mobile_use/controllers/types.py,sha256=c4dd6b266dd8f157ca1e6a211369ba8e7f65d3fda72b0742bda1128eefd99473,2935
|
|
37
|
-
minitap/mobile_use/graph/graph.py,sha256=
|
|
37
|
+
minitap/mobile_use/graph/graph.py,sha256=94dbac498a77eab3fbb413182ec4c3272c353837f71268344e150a2c00a9747e,6012
|
|
38
38
|
minitap/mobile_use/graph/state.py,sha256=1903f49772be7f9725e69718194a7be953203f882ec5e26211a5db6fdc569478,3596
|
|
39
39
|
minitap/mobile_use/main.py,sha256=1405a13eab2c3b86b148bb9678e829447522753a10572935fc1e3ed3bbce6878,3927
|
|
40
40
|
minitap/mobile_use/sdk/__init__.py,sha256=4e5555c0597242b9523827194a2500b9c6d7e5c04b1ccd2056c9b1f4d42a31cd,318
|
|
41
41
|
minitap/mobile_use/sdk/agent.py,sha256=a1380a32b14784ce3cdcd7deaca2ffd643491bc23372297a24798a53bc7a1a37,30579
|
|
42
42
|
minitap/mobile_use/sdk/builders/__init__.py,sha256=d6c96d39b80900a114698ef205ab5061a541f33bfa99c456d9345e5adb8ff6ff,424
|
|
43
|
-
minitap/mobile_use/sdk/builders/agent_config_builder.py,sha256=
|
|
43
|
+
minitap/mobile_use/sdk/builders/agent_config_builder.py,sha256=4b8ed9eb84d9093f18166e4c4f99e3da6941cf374c9c112cb3c37ea0fadcfe02,7917
|
|
44
44
|
minitap/mobile_use/sdk/builders/index.py,sha256=64336ac3b3dea4673a48e95b8c5ac4196ecd5d2196380377d102593d0a1dc138,442
|
|
45
45
|
minitap/mobile_use/sdk/builders/task_request_builder.py,sha256=9e6cf7afb68af986d6a81487179bb79d28f63047a068725d92996dbcbe753376,6857
|
|
46
46
|
minitap/mobile_use/sdk/constants.py,sha256=436ba0700c6cf37ac0c9e3995a5f5a0d54ca87af72686eb9667a2c6a96e30f68,292
|
|
@@ -64,7 +64,7 @@ minitap/mobile_use/servers/start_servers.py,sha256=2155d744726ac64c38b38e2e589e1
|
|
|
64
64
|
minitap/mobile_use/servers/stop_servers.py,sha256=04a409a17fc0323209301fe28fbb037d71e41e5422eb369640f9f329aae312f5,7064
|
|
65
65
|
minitap/mobile_use/servers/utils.py,sha256=f3cc85da39f8d60cb840001be418562de7db95462370db9b79e96d884abe5c17,294
|
|
66
66
|
minitap/mobile_use/services/accessibility.py,sha256=42bcbe81b427ee6f6e82bcfe420fc40630db950bda354e3e433c2dda2e159628,3404
|
|
67
|
-
minitap/mobile_use/services/llm.py,sha256=
|
|
67
|
+
minitap/mobile_use/services/llm.py,sha256=1a7921fdf9430fe8f18a515f8b537e9773a445e0182b09992751073e2f55f1e5,7055
|
|
68
68
|
minitap/mobile_use/tools/index.py,sha256=3b09ac41efb38a339ed4dd265c37aca85bd56f26938df45a6723b9b06071a3ca,2294
|
|
69
69
|
minitap/mobile_use/tools/mobile/back.py,sha256=8b909e412c8ad382e339b8c89171bf1363398a95a5c96126f79ee2f24e3c2ed1,1816
|
|
70
70
|
minitap/mobile_use/tools/mobile/erase_one_char.py,sha256=a125933619614b621479c514c8e29a7ec6b504b1e7ab1be13603a744f32322d6,1985
|
|
@@ -96,7 +96,7 @@ minitap/mobile_use/utils/shell_utils.py,sha256=b35ae7f863379adb86c9ba0f9b3b9d495
|
|
|
96
96
|
minitap/mobile_use/utils/test_ui_hierarchy.py,sha256=96c1549c05b4f7254a22d57dbd40aea860756f1e0b9d8cc24319383643448422,5911
|
|
97
97
|
minitap/mobile_use/utils/time.py,sha256=41bfaabb3751de11443ccb4a3f1f53d5ebacc7744c72e32695fdcc3d23f17d49,160
|
|
98
98
|
minitap/mobile_use/utils/ui_hierarchy.py,sha256=f3370518035d9daf02c08042a9e28ad564f4fc81a2b268103b9a7f8bc5c61d11,3797
|
|
99
|
-
minitap_mobile_use-2.7.
|
|
100
|
-
minitap_mobile_use-2.7.
|
|
101
|
-
minitap_mobile_use-2.7.
|
|
102
|
-
minitap_mobile_use-2.7.
|
|
99
|
+
minitap_mobile_use-2.7.2.dist-info/WHEEL,sha256=ab6157bc637547491fb4567cd7ddf26b04d63382916ca16c29a5c8e94c9c9ef7,79
|
|
100
|
+
minitap_mobile_use-2.7.2.dist-info/entry_points.txt,sha256=663a29cfd551a4eaa0f27335f0bd7e4a732a4e39c76b68ef5c8dc444d4a285fa,60
|
|
101
|
+
minitap_mobile_use-2.7.2.dist-info/METADATA,sha256=5d363ea1b75c0ae699cf85b94fa2ccb86b97af30dc3f382638e4c3f907bda627,11995
|
|
102
|
+
minitap_mobile_use-2.7.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|