minitap-mobile-use 2.6.0__py3-none-any.whl → 2.7.1__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.

@@ -240,7 +240,7 @@ def get_default_llm_config() -> LLMConfig:
240
240
  )
241
241
 
242
242
 
243
- def get_default_minitap_llm_config() -> LLMConfig | None:
243
+ def get_default_minitap_llm_config(validate: bool = True) -> LLMConfig | None:
244
244
  """
245
245
  Returns a default LLM config using the Minitap provider.
246
246
  Only returns a config if MINITAP_API_KEY is available.
@@ -248,7 +248,7 @@ def get_default_minitap_llm_config() -> LLMConfig | None:
248
248
  Returns:
249
249
  LLMConfig with minitap provider if API key is available, None otherwise
250
250
  """
251
- if not settings.MINITAP_API_KEY:
251
+ if validate and not settings.MINITAP_API_KEY:
252
252
  return None
253
253
 
254
254
  return LLMConfig(
@@ -53,6 +53,7 @@ from minitap.mobile_use.sdk.types.task import (
53
53
  AgentProfile,
54
54
  PlatformTaskInfo,
55
55
  PlatformTaskRequest,
56
+ CloudDevicePlatformTaskRequest,
56
57
  Task,
57
58
  TaskRequest,
58
59
  )
@@ -244,6 +245,9 @@ class Agent:
244
245
  else:
245
246
  raise PlatformServiceUninitializedError()
246
247
  task_info = await platform_service.create_task_run(request=request)
248
+ if isinstance(request, CloudDevicePlatformTaskRequest):
249
+ request.task_run_id = task_info.task_run.id
250
+ request.task_run_id_available_event.set()
247
251
  self._config.agent_profiles[task_info.llm_profile.name] = task_info.llm_profile
248
252
  request = task_info.task_request
249
253
  return await self._run_task(
@@ -23,6 +23,7 @@ from minitap.mobile_use.sdk.types.platform import (
23
23
  )
24
24
  from minitap.mobile_use.sdk.types.task import (
25
25
  AgentProfile,
26
+ CloudDevicePlatformTaskRequest,
26
27
  ManualTaskConfig,
27
28
  PlatformTaskInfo,
28
29
  PlatformTaskRequest,
@@ -60,6 +61,10 @@ class PlatformService:
60
61
 
61
62
  async def create_task_run(self, request: PlatformTaskRequest) -> PlatformTaskInfo:
62
63
  try:
64
+ virtual_mobile_id = None
65
+ if isinstance(request, CloudDevicePlatformTaskRequest):
66
+ virtual_mobile_id = request.virtual_mobile_id
67
+
63
68
  # Check if task is a string (fetch from platform) or ManualTaskConfig (create manually)
64
69
  if isinstance(request.task, str):
65
70
  # Fetch task from platform
@@ -87,7 +92,11 @@ class PlatformService:
87
92
  thoughts_output_path=request.thoughts_output_path,
88
93
  )
89
94
 
90
- task_run = await self._create_task_run(task=task, profile=profile)
95
+ task_run = await self._create_task_run(
96
+ task=task,
97
+ profile=profile,
98
+ virtual_mobile_id=virtual_mobile_id,
99
+ )
91
100
  else:
92
101
  # Create task manually from ManualTaskConfig
93
102
  logger.info(f"Creating manual task with goal: {request.task.goal}")
@@ -113,6 +122,7 @@ class PlatformService:
113
122
  task_run = await self._create_manual_task_run(
114
123
  manual_config=request.task,
115
124
  profile=profile,
125
+ virtual_mobile_id=virtual_mobile_id,
116
126
  )
117
127
 
118
128
  return PlatformTaskInfo(
@@ -244,12 +254,14 @@ class PlatformService:
244
254
  self,
245
255
  task: TaskResponse,
246
256
  profile: LLMProfileResponse,
257
+ virtual_mobile_id: str | None = None,
247
258
  ) -> TaskRunResponse:
248
259
  try:
249
260
  logger.info(f"Creating task run for task: {task.name}")
250
261
  task_run = CreateTaskRunRequest(
251
262
  task_id=task.id,
252
263
  llm_profile_id=profile.id,
264
+ virtual_mobile_id=virtual_mobile_id,
253
265
  )
254
266
  response = await self._client.post(url="v1/task-runs", json=task_run.model_dump())
255
267
  response.raise_for_status()
@@ -264,6 +276,7 @@ class PlatformService:
264
276
  self,
265
277
  manual_config: ManualTaskConfig,
266
278
  profile: LLMProfileResponse,
279
+ virtual_mobile_id: str | None = None,
267
280
  ) -> TaskRunResponse:
268
281
  """
269
282
  Create an orphan task run from a manual task configuration.
@@ -277,6 +290,7 @@ class PlatformService:
277
290
  "inputPrompt": manual_config.goal,
278
291
  "outputDescription": manual_config.output_description,
279
292
  "llmProfileId": profile.id,
293
+ "virtualMobileId": virtual_mobile_id,
280
294
  }
281
295
 
282
296
  response = await self._client.post(url="v1/task-runs/orphan", json=orphan_payload)
@@ -63,6 +63,7 @@ class CreateTaskRunRequest(BaseApiModel):
63
63
 
64
64
  task_id: str = Field(..., description="ID of the task to run")
65
65
  llm_profile_id: str = Field(..., description="LLM profile ID to use")
66
+ virtual_mobile_id: str | None = Field(None, description="Virtual mobile ID to use")
66
67
 
67
68
 
68
69
  class UpdateTaskRunStatusRequest(BaseApiModel):
@@ -2,12 +2,13 @@
2
2
  Task-related type definitions for the Mobile-use SDK.
3
3
  """
4
4
 
5
+ from asyncio import Event
5
6
  from collections.abc import Callable, Coroutine
6
7
  from datetime import datetime
7
8
  from pathlib import Path
8
9
  from typing import Any, TypeVar, overload
9
10
 
10
- from pydantic import BaseModel, Field
11
+ from pydantic import BaseModel, ConfigDict, Field
11
12
 
12
13
  from minitap.mobile_use.config import LLMConfig, get_default_llm_config
13
14
  from minitap.mobile_use.constants import RECURSION_LIMIT
@@ -135,6 +136,14 @@ class PlatformTaskRequest[TOutput](TaskRequestBase):
135
136
  api_key: str | None = None
136
137
 
137
138
 
139
+ class CloudDevicePlatformTaskRequest[TOutput](PlatformTaskRequest[TOutput]):
140
+ model_config = ConfigDict(arbitrary_types_allowed=True)
141
+
142
+ task_run_id_available_event: Event = Event()
143
+ task_run_id: str | None = None
144
+ virtual_mobile_id: str | None = None
145
+
146
+
138
147
  class TaskResult(BaseModel):
139
148
  """
140
149
  Result of a mobile automation task.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: minitap-mobile-use
3
- Version: 2.6.0
3
+ Version: 2.7.1
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
@@ -27,7 +27,7 @@ minitap/mobile_use/agents/summarizer/summarizer.py,sha256=56c2c7d5d48f4ba045b140
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=82ff1a57e66d86156efa7112ceeef6f710d22b69fa4e883e7e864e6f5707f746,13584
30
+ minitap/mobile_use/config.py,sha256=4d93a1a916e1a3a7e0664d2a5a2f651cdca50527994a3a5c4f000b5fe8d4013d,13618
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
@@ -38,7 +38,7 @@ minitap/mobile_use/graph/graph.py,sha256=24eab15a3540a6b63004eb82ca3577cd1da3f83
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
- minitap/mobile_use/sdk/agent.py,sha256=228fdba23e29794d878a42d598bf0ed3b8af5a8a4d1526d57a53966f24773d11,30345
41
+ minitap/mobile_use/sdk/agent.py,sha256=a1380a32b14784ce3cdcd7deaca2ffd643491bc23372297a24798a53bc7a1a37,30579
42
42
  minitap/mobile_use/sdk/builders/__init__.py,sha256=d6c96d39b80900a114698ef205ab5061a541f33bfa99c456d9345e5adb8ff6ff,424
43
43
  minitap/mobile_use/sdk/builders/agent_config_builder.py,sha256=542d7d06c677059c8f8e0bc27d95f2dce282b1cfe0320fa6f902bc2f9d08140d,7686
44
44
  minitap/mobile_use/sdk/builders/index.py,sha256=64336ac3b3dea4673a48e95b8c5ac4196ecd5d2196380377d102593d0a1dc138,442
@@ -50,12 +50,12 @@ minitap/mobile_use/sdk/examples/platform_manual_task_example.py,sha256=00f54d58f
50
50
  minitap/mobile_use/sdk/examples/platform_minimal_example.py,sha256=bdb86142f4bb5d95d54838fc6487bb06e5e21db5106385344138be1653071aea,1389
51
51
  minitap/mobile_use/sdk/examples/simple_photo_organizer.py,sha256=8ad1cebb5281e3663264560bd15b090add41d2821b1db77e4cbc829860c98df8,2606
52
52
  minitap/mobile_use/sdk/examples/smart_notification_assistant.py,sha256=ecab26c6fd2af59bb22dbc67f0eeb4a4a73e4394639b34fb2d44f04f218e2b61,8104
53
- minitap/mobile_use/sdk/services/platform.py,sha256=2a1f97efe06577b67c5880ebcfb8a855ba61bf30b5f7d3e1f2600ef60cbd9dce,11969
53
+ minitap/mobile_use/sdk/services/platform.py,sha256=516b17f5286f8cb7ef7d5f0d2b0af23b90b17588faa9f638ea5cdb4f3935e64e,12545
54
54
  minitap/mobile_use/sdk/types/__init__.py,sha256=433aff6b35f84a985633204edbbdaca9f2f61fb2b822630f9723c481b9bb5c10,1078
55
55
  minitap/mobile_use/sdk/types/agent.py,sha256=390d5c642b3480f4a2203ddd28ec115c785f2576bec81e82e4db3c129399c020,2260
56
56
  minitap/mobile_use/sdk/types/exceptions.py,sha256=684c0049c5af417edf7e46e515be14fd57a0614c81b06ed52f379bc9d0bbebf3,4499
57
- minitap/mobile_use/sdk/types/platform.py,sha256=df68f9b158542eb4d31c7151abf638a7f46502a27b90e7c5f0afc7c187485c3b,5207
58
- minitap/mobile_use/sdk/types/task.py,sha256=264e77bce958ee398252c7346dfa7ae896ea6dbbd98576f35d1a766c4926a189,8236
57
+ minitap/mobile_use/sdk/types/platform.py,sha256=6d1eefa6fb73aea1c574eeb24b05ee89d0119e6e01cdcd6022923df8f7d511e7,5295
58
+ minitap/mobile_use/sdk/types/task.py,sha256=3d44a07bca698b2bbfc18e240c0b4be74e6fb4422ab7ed0a9a9b411e903021b8,8539
59
59
  minitap/mobile_use/sdk/utils.py,sha256=647f1f4a463c3029c3b0eb3c33f7dd778d5f5fd9d293224f5474595a60e1de6f,967
60
60
  minitap/mobile_use/servers/config.py,sha256=8a4a6bce23e2093d047a91e135e2f88627f76ac12177d071f25a3ca739b3afeb,575
61
61
  minitap/mobile_use/servers/device_hardware_bridge.py,sha256=39c20834812d9929163affaedd0e285ab0b349948b3236156c04a3e0bf094272,7456
@@ -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.6.0.dist-info/WHEEL,sha256=ab6157bc637547491fb4567cd7ddf26b04d63382916ca16c29a5c8e94c9c9ef7,79
100
- minitap_mobile_use-2.6.0.dist-info/entry_points.txt,sha256=663a29cfd551a4eaa0f27335f0bd7e4a732a4e39c76b68ef5c8dc444d4a285fa,60
101
- minitap_mobile_use-2.6.0.dist-info/METADATA,sha256=a6c9faf5ffdd6b6710f3889953f4f4aae31a131c0d2a3ce6e0a1a3d4f5c7e1f8,11995
102
- minitap_mobile_use-2.6.0.dist-info/RECORD,,
99
+ minitap_mobile_use-2.7.1.dist-info/WHEEL,sha256=ab6157bc637547491fb4567cd7ddf26b04d63382916ca16c29a5c8e94c9c9ef7,79
100
+ minitap_mobile_use-2.7.1.dist-info/entry_points.txt,sha256=663a29cfd551a4eaa0f27335f0bd7e4a732a4e39c76b68ef5c8dc444d4a285fa,60
101
+ minitap_mobile_use-2.7.1.dist-info/METADATA,sha256=99668e39404908f08cf4a20437af8571551423b9c197d51553005cd5061edc0d,11995
102
+ minitap_mobile_use-2.7.1.dist-info/RECORD,,