minitap-mobile-use 2.0.0__py3-none-any.whl → 2.1.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.

Potentially problematic release.


This version of minitap-mobile-use might be problematic. Click here for more details.

Files changed (74) hide show
  1. minitap/mobile_use/agents/cortex/cortex.md +19 -10
  2. minitap/mobile_use/agents/cortex/cortex.py +15 -2
  3. minitap/mobile_use/agents/cortex/types.py +2 -4
  4. minitap/mobile_use/agents/executor/executor.md +20 -15
  5. minitap/mobile_use/agents/executor/executor.py +6 -18
  6. minitap/mobile_use/agents/executor/tool_node.py +105 -0
  7. minitap/mobile_use/agents/hopper/hopper.md +2 -10
  8. minitap/mobile_use/agents/hopper/hopper.py +4 -9
  9. minitap/mobile_use/agents/orchestrator/human.md +3 -4
  10. minitap/mobile_use/agents/orchestrator/orchestrator.md +25 -7
  11. minitap/mobile_use/agents/orchestrator/orchestrator.py +56 -56
  12. minitap/mobile_use/agents/orchestrator/types.py +5 -8
  13. minitap/mobile_use/agents/outputter/outputter.py +1 -2
  14. minitap/mobile_use/agents/planner/planner.md +25 -15
  15. minitap/mobile_use/agents/planner/planner.py +7 -1
  16. minitap/mobile_use/agents/planner/types.py +10 -5
  17. minitap/mobile_use/agents/planner/utils.py +11 -0
  18. minitap/mobile_use/agents/summarizer/summarizer.py +2 -1
  19. minitap/mobile_use/clients/device_hardware_client.py +3 -0
  20. minitap/mobile_use/config.py +16 -14
  21. minitap/mobile_use/constants.py +1 -0
  22. minitap/mobile_use/context.py +3 -4
  23. minitap/mobile_use/controllers/mobile_command_controller.py +37 -26
  24. minitap/mobile_use/controllers/platform_specific_commands_controller.py +3 -4
  25. minitap/mobile_use/graph/graph.py +10 -31
  26. minitap/mobile_use/graph/state.py +34 -14
  27. minitap/mobile_use/main.py +11 -8
  28. minitap/mobile_use/sdk/agent.py +78 -63
  29. minitap/mobile_use/sdk/builders/agent_config_builder.py +23 -11
  30. minitap/mobile_use/sdk/builders/task_request_builder.py +9 -9
  31. minitap/mobile_use/sdk/examples/smart_notification_assistant.py +1 -2
  32. minitap/mobile_use/sdk/types/agent.py +10 -5
  33. minitap/mobile_use/sdk/types/task.py +19 -18
  34. minitap/mobile_use/sdk/utils.py +1 -1
  35. minitap/mobile_use/servers/config.py +1 -2
  36. minitap/mobile_use/servers/device_hardware_bridge.py +3 -4
  37. minitap/mobile_use/servers/start_servers.py +4 -4
  38. minitap/mobile_use/servers/stop_servers.py +12 -18
  39. minitap/mobile_use/services/llm.py +4 -2
  40. minitap/mobile_use/tools/index.py +11 -7
  41. minitap/mobile_use/tools/mobile/back.py +8 -12
  42. minitap/mobile_use/tools/mobile/clear_text.py +277 -0
  43. minitap/mobile_use/tools/mobile/copy_text_from.py +8 -12
  44. minitap/mobile_use/tools/mobile/erase_one_char.py +56 -0
  45. minitap/mobile_use/tools/mobile/find_packages.py +69 -0
  46. minitap/mobile_use/tools/mobile/input_text.py +55 -32
  47. minitap/mobile_use/tools/mobile/launch_app.py +8 -12
  48. minitap/mobile_use/tools/mobile/long_press_on.py +9 -13
  49. minitap/mobile_use/tools/mobile/open_link.py +8 -12
  50. minitap/mobile_use/tools/mobile/paste_text.py +8 -12
  51. minitap/mobile_use/tools/mobile/press_key.py +8 -12
  52. minitap/mobile_use/tools/mobile/stop_app.py +9 -13
  53. minitap/mobile_use/tools/mobile/swipe.py +8 -12
  54. minitap/mobile_use/tools/mobile/take_screenshot.py +8 -12
  55. minitap/mobile_use/tools/mobile/tap.py +9 -13
  56. minitap/mobile_use/tools/mobile/wait_for_animation_to_end.py +9 -13
  57. minitap/mobile_use/tools/tool_wrapper.py +1 -23
  58. minitap/mobile_use/tools/utils.py +86 -0
  59. minitap/mobile_use/utils/cli_helpers.py +1 -2
  60. minitap/mobile_use/utils/cli_selection.py +5 -6
  61. minitap/mobile_use/utils/decorators.py +21 -20
  62. minitap/mobile_use/utils/logger.py +3 -4
  63. minitap/mobile_use/utils/media.py +1 -1
  64. minitap/mobile_use/utils/recorder.py +11 -10
  65. minitap/mobile_use/utils/ui_hierarchy.py +98 -3
  66. {minitap_mobile_use-2.0.0.dist-info → minitap_mobile_use-2.1.0.dist-info}/METADATA +12 -2
  67. minitap_mobile_use-2.1.0.dist-info/RECORD +96 -0
  68. minitap/mobile_use/agents/executor/executor_context_cleaner.py +0 -27
  69. minitap/mobile_use/tools/mobile/erase_text.py +0 -124
  70. minitap/mobile_use/tools/mobile/list_packages.py +0 -78
  71. minitap/mobile_use/tools/mobile/run_flow.py +0 -57
  72. minitap_mobile_use-2.0.0.dist-info/RECORD +0 -95
  73. {minitap_mobile_use-2.0.0.dist-info → minitap_mobile_use-2.1.0.dist-info}/WHEEL +0 -0
  74. {minitap_mobile_use-2.0.0.dist-info → minitap_mobile_use-2.1.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,96 @@
1
+ minitap/mobile_use/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
2
+ minitap/mobile_use/agents/contextor/contextor.py,sha256=d7c98771a9173281c1660a2ee965149d4f70ecf7005cf75fa89eb1e9a9f2b660,1673
3
+ minitap/mobile_use/agents/cortex/cortex.md,sha256=69358852474f65144486fc60196b17bdc5f99d2891fbb4cae26fd2331260f6ba,5598
4
+ minitap/mobile_use/agents/cortex/cortex.py,sha256=232dfe2e2dbbfbc34873875ee32cf5f9d4156f6b9afc9d9d9146addd102be40c,4896
5
+ minitap/mobile_use/agents/cortex/types.py,sha256=c33f2277752644d2185d84add03a493adaa530096d046d73366ab9121d99b946,361
6
+ minitap/mobile_use/agents/executor/executor.md,sha256=800003af904d346ab0a6b8a205c0332930161a8c997ede584097a40e8f1ac478,2806
7
+ minitap/mobile_use/agents/executor/executor.py,sha256=be92742d91296650288c12e83f8065589d8eab7aeaa977a47c34ed25879a9bb6,2771
8
+ minitap/mobile_use/agents/executor/tool_node.py,sha256=2ad729ede393882460ae3d180ac1c0e1ab1688f40b2017220aad1b059f6485c5,3900
9
+ minitap/mobile_use/agents/executor/utils.py,sha256=1a387d30047d3be05b5e550433866abe4388222b3f95d1360847870155ef8f12,368
10
+ minitap/mobile_use/agents/hopper/hopper.md,sha256=2e9333ece8f6b76401ac2cce98ca06a025faa5dba6bacbbc344793ddf42292d0,362
11
+ minitap/mobile_use/agents/hopper/hopper.py,sha256=1c015cc911f225c9cb26415e0852d5905ded8e715fb928ad2595143870a781e3,1324
12
+ minitap/mobile_use/agents/orchestrator/human.md,sha256=6559026aa921b7ad7dddcf3dfcd5d9930252edd6484d60ea92ff6ca97ed028fc,229
13
+ minitap/mobile_use/agents/orchestrator/orchestrator.md,sha256=cc1a353c577f2eef42d9a528178ccc2c0a4a144a907a29878f9efe57e83b12fa,2546
14
+ minitap/mobile_use/agents/orchestrator/orchestrator.py,sha256=83524eefe8fc1d9639a2ffeb270dfed9e2a2b15af93e6e1d3d41d8e7c5b74951,4656
15
+ minitap/mobile_use/agents/orchestrator/types.py,sha256=f53dfdc99e8d50888ac1cde5f7f90ba5c87837a8eee8dd8efa31f2640394433c,335
16
+ minitap/mobile_use/agents/outputter/human.md,sha256=6b9b45c640b163554524b1aec4cd97134c628eeb8557a32e23c8f966d32f642e,771
17
+ minitap/mobile_use/agents/outputter/outputter.py,sha256=0539cd1bfa307c6e24136488a0481128da17c37f20128e63388b5c4aea5aae50,2750
18
+ minitap/mobile_use/agents/outputter/test_outputter.py,sha256=4c52988f8f29159657707a0e11500610f3987cac6390b17edec23f09ddfcc0ff,3334
19
+ minitap/mobile_use/agents/planner/human.md,sha256=cb37be2af568918e60238eaa785837178a3ba8f8112de86850d9a62914c18314,222
20
+ minitap/mobile_use/agents/planner/planner.md,sha256=41c973c8d34a6c24c81b275f725fc447d58805dcea1900f4285c5980502fc756,3337
21
+ minitap/mobile_use/agents/planner/planner.py,sha256=0b8c92857847d390d98efb8d1130762883e46ea4dfc354ea3352e45450913771,2686
22
+ minitap/mobile_use/agents/planner/types.py,sha256=da551df70ae4ae574670bd8d79c4da1a82be88c24216034d6841a83d85c0c43c,1392
23
+ minitap/mobile_use/agents/planner/utils.py,sha256=11731d0382bf88ef77b38aaf75873486f293343cdd048372c57e626c652b4a22,1839
24
+ minitap/mobile_use/agents/summarizer/summarizer.py,sha256=3e1e92f9259c040487992636786f972dffe0a38d309a8c3758c9ff1aeff2f62c,1070
25
+ minitap/mobile_use/clients/device_hardware_client.py,sha256=9593380a7a3df32f02aa22717678c25e91367df26b1743abde9e57aec5dc2474,857
26
+ minitap/mobile_use/clients/ios_client.py,sha256=332bf47ac01bbd5bf6178a59eea7c7a30fed944f30907caea5388178f312d36b,1452
27
+ minitap/mobile_use/clients/screen_api_client.py,sha256=3615dc65d25c38b4d8dc5512f9adb3bcf69dca7a0298a472a6812f604a275c47,2019
28
+ minitap/mobile_use/config.py,sha256=d5bd2bf71f229d57757bf8375b5caf858b4964178507ecb855942bb197646fdd,9399
29
+ minitap/mobile_use/constants.py,sha256=3acd9d6ade5bc772e902b3473f3ba12ddd04e7306963ca2bae49d1132d89ba46,95
30
+ minitap/mobile_use/context.py,sha256=fa4e43fb580db86c2ed707b1464d8363ead57332b40ea5688e0731ad57a40558,1747
31
+ minitap/mobile_use/controllers/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
32
+ minitap/mobile_use/controllers/mobile_command_controller.py,sha256=1ea22f569affae3d82ea74afd37629898cf3d10b3bdf6cb1a7671d1a09f2c000,12206
33
+ minitap/mobile_use/controllers/platform_specific_commands_controller.py,sha256=8b4fc30108c242da41fd998751dbfd5e6a69e2957a2dbbe5d6fc43d6b55f727e,2705
34
+ minitap/mobile_use/graph/graph.py,sha256=c7b412e725b096eca8f212d704c3faf91d77eea4131f1fae7af1ee39bc57cdae,4269
35
+ minitap/mobile_use/graph/state.py,sha256=cfe67d15833efa18b28a86293bc5c713ff8c777778b0552bb6e25fa7070534aa,3371
36
+ minitap/mobile_use/main.py,sha256=51a826974071997d7ca1d6913e199c7844633e483db0471f3c294688be028834,3743
37
+ minitap/mobile_use/sdk/__init__.py,sha256=4e5555c0597242b9523827194a2500b9c6d7e5c04b1ccd2056c9b1f4d42a31cd,318
38
+ minitap/mobile_use/sdk/agent.py,sha256=43b198cfabdffa28add7f1b77046704ee28da74da92b710dc8bb265c8df16472,20898
39
+ minitap/mobile_use/sdk/builders/__init__.py,sha256=d6c96d39b80900a114698ef205ab5061a541f33bfa99c456d9345e5adb8ff6ff,424
40
+ minitap/mobile_use/sdk/builders/agent_config_builder.py,sha256=d963ab932fa78117eef3ea4a2503c34b872f7b865c1a2e25b20e7fa5072e466b,7600
41
+ minitap/mobile_use/sdk/builders/index.py,sha256=64336ac3b3dea4673a48e95b8c5ac4196ecd5d2196380377d102593d0a1dc138,442
42
+ minitap/mobile_use/sdk/builders/task_request_builder.py,sha256=9e6cf7afb68af986d6a81487179bb79d28f63047a068725d92996dbcbe753376,6857
43
+ minitap/mobile_use/sdk/constants.py,sha256=436ba0700c6cf37ac0c9e3995a5f5a0d54ca87af72686eb9667a2c6a96e30f68,292
44
+ minitap/mobile_use/sdk/examples/README.md,sha256=b6780de3025b1897ad2ef42fa968f2a69b82f929465807f9590c4e9321dab6e6,2306
45
+ minitap/mobile_use/sdk/examples/__init__.py,sha256=c23868a2ca7e9b76e80d6835fe93c10e13ea8f2287dd6e785511b8ac30354e9b,46
46
+ minitap/mobile_use/sdk/examples/simple_photo_organizer.py,sha256=8ad1cebb5281e3663264560bd15b090add41d2821b1db77e4cbc829860c98df8,2606
47
+ minitap/mobile_use/sdk/examples/smart_notification_assistant.py,sha256=1d00658dc30c7bce5ef68369f982cd2d1932f53e2e2da6ded70cea13dc669c72,6362
48
+ minitap/mobile_use/sdk/types/__init__.py,sha256=5dd148d83bf6261ac8ac60c994e2496b5bf535591d0835807d5fe394fd85a954,1014
49
+ minitap/mobile_use/sdk/types/agent.py,sha256=390d5c642b3480f4a2203ddd28ec115c785f2576bec81e82e4db3c129399c020,2260
50
+ minitap/mobile_use/sdk/types/exceptions.py,sha256=56ac3f749730740951448b1b0f200be21331dc0800916a87587b21e7850120a5,2288
51
+ minitap/mobile_use/sdk/types/task.py,sha256=74743a398b63af62383528d5906824ae8aaba1e1885c75414b347623d7931f12,5837
52
+ minitap/mobile_use/sdk/utils.py,sha256=493c77e43fcb58535eef43416716a3283488577c127060de5c0317d0b737b01f,945
53
+ minitap/mobile_use/servers/config.py,sha256=8a4a6bce23e2093d047a91e135e2f88627f76ac12177d071f25a3ca739b3afeb,575
54
+ minitap/mobile_use/servers/device_hardware_bridge.py,sha256=80b93fe1bd8ea9100ac198a83f0aea2c40565a11e810acff9785bbd3f3b31f37,7174
55
+ minitap/mobile_use/servers/device_screen_api.py,sha256=63bf866f17cde4ab97631b710080866b8427225d3857b2351ab83db38a9c5107,5064
56
+ minitap/mobile_use/servers/start_servers.py,sha256=1e86dc0fcbdf6e6570ae68c7097145e754f3c3448ca813d415b3e5ebb74db828,5037
57
+ minitap/mobile_use/servers/stop_servers.py,sha256=9a3dc2eafb3c13e420248b1844694c80112be32f0d336f54ecc1015cb6f27be9,7127
58
+ minitap/mobile_use/servers/utils.py,sha256=db5d26153a169ab141556337db3693adc1bf8522943316656bdeb05dbf95465b,394
59
+ minitap/mobile_use/services/accessibility.py,sha256=42bcbe81b427ee6f6e82bcfe420fc40630db950bda354e3e433c2dda2e159628,3404
60
+ minitap/mobile_use/services/llm.py,sha256=c3e99290431bcdcbf81cbffd08bf3abbd4a3760c20cb0873278c418df0d28b0f,3724
61
+ minitap/mobile_use/tools/index.py,sha256=db61053f24beb88952cc34be37336defd8ebf5e1fec0ecf81e2439a76b29bde1,2449
62
+ minitap/mobile_use/tools/mobile/back.py,sha256=cf1053b22c4fbeb1c219578563d6d857425dcdff08af690149c6e52a0e29c195,1792
63
+ minitap/mobile_use/tools/mobile/clear_text.py,sha256=28e9af14cbb62be3a8221e7b1e7645e9bc22f40202d84c6047874809137cd927,9316
64
+ minitap/mobile_use/tools/mobile/copy_text_from.py,sha256=723d7563e19d05060da0071aedfb620ce36bfb90931fcb815ab8d01be7ed9dd5,2716
65
+ minitap/mobile_use/tools/mobile/erase_one_char.py,sha256=e8c0a519a235271fa1cb785fe711e63e9ca14f4d33a61fbb39af04ec9bf18211,1960
66
+ minitap/mobile_use/tools/mobile/find_packages.py,sha256=78f3051f40307ba75655fbffe6fe3fc3954f158eb8ceb0d270cb81a5e807d81d,2554
67
+ minitap/mobile_use/tools/mobile/input_text.py,sha256=6a0b48ac79ad908fd6229a63fe17f7c5f26fb0e7466632700efd5db40393bda5,3199
68
+ minitap/mobile_use/tools/mobile/launch_app.py,sha256=e1879333c0eae92b22ec3c147edd26dfe41252bf8049e5954a0b72d5a8b8f650,2027
69
+ minitap/mobile_use/tools/mobile/long_press_on.py,sha256=b59bf885a10e7468069e5523eb7d23bfa6d41efc7d0521f7622e4dd2260fe879,2194
70
+ minitap/mobile_use/tools/mobile/open_link.py,sha256=ad363f83b254a8e3e5969b4d8b90ef4e1fc4eceacc9c976e02a3e110e80ad23f,1875
71
+ minitap/mobile_use/tools/mobile/paste_text.py,sha256=dc126297f174cdcdfc6f6d148fdb6a96ecb7813926e441ce0631e963b196b448,2101
72
+ minitap/mobile_use/tools/mobile/press_key.py,sha256=a22d416279c33f2e843aaf28e4466a7eeae59aa690312c8866b62a3f84b57d5b,1939
73
+ minitap/mobile_use/tools/mobile/stop_app.py,sha256=8fc1cf5682232d670270a7e909f365a795150643eac5310f042d792b79e7c0c0,2062
74
+ minitap/mobile_use/tools/mobile/swipe.py,sha256=4d0da8c0db0995598a9a74ebfc5e7fdc176abc8e5277fd8d5f588de864947dda,1878
75
+ minitap/mobile_use/tools/mobile/take_screenshot.py,sha256=8762be82e0fb55549f1271a8e4c7b25040f906d21ed19f52121a616e70eb9bb0,2271
76
+ minitap/mobile_use/tools/mobile/tap.py,sha256=d7a3de2ddb78b051b22d7886553d75bab13562abfc8562957c15fb16dd484a0a,2297
77
+ minitap/mobile_use/tools/mobile/wait_for_animation_to_end.py,sha256=967d0df11dfb073dde6308761e9795e02c93ee2b0cbe17caf6edbe4a8beea28a,2493
78
+ minitap/mobile_use/tools/tool_wrapper.py,sha256=166d9c4b7950e66407eb397a81d88354779ee3056a8dc7ad1bf160a3aa54580c,334
79
+ minitap/mobile_use/tools/utils.py,sha256=bf6924e3d9e5338c2e04d88fd0ad9ed03a0c02058b62373025fa4b3a805712ae,2694
80
+ minitap/mobile_use/utils/cli_helpers.py,sha256=1c53b6ea6cd2ba861302b182944c6a3a31dac27e316bca2c65cd6a3ca3256e81,1720
81
+ minitap/mobile_use/utils/cli_selection.py,sha256=62e949bf075e984b5d23b4a9880ff2bccf8f9e0f7ccb48120030a6a82075352b,4788
82
+ minitap/mobile_use/utils/conversations.py,sha256=8f1d924300ec3f6f7c71510c21e3011b75caca5b1fff06fdaccb377c3cde24ec,914
83
+ minitap/mobile_use/utils/decorators.py,sha256=0bb30fb4f5d5cef0aef45643e68e199d39910f1d771eb4086f3e083d566c16a5,3591
84
+ minitap/mobile_use/utils/errors.py,sha256=6c5566484cff48ce1eb168c3cbe93d6e5365457828f59616a15147598feef769,156
85
+ minitap/mobile_use/utils/file.py,sha256=1ca968613452a273b23e4f58460ab39f87255b02cdb6fb8ca04f4e628b346070,315
86
+ minitap/mobile_use/utils/logger.py,sha256=011fe08c39b111997ec685b9f0b378761607e35ac049234b5e86c2b58f29bbe3,5633
87
+ minitap/mobile_use/utils/media.py,sha256=29fa7f009a0f2bd60de2a9eba4a90e6eecc91cc67c2736b753506d48ab2bf5eb,2228
88
+ minitap/mobile_use/utils/recorder.py,sha256=83dcb953b9caf00bf3e4853c3eee447166e1279e7ceefbbeb25d93e932ec698d,1937
89
+ minitap/mobile_use/utils/requests_utils.py,sha256=5c3a2e2aff7c521cd6a43b74c084e2244e1ff55065a5b722e6e251c6419861fd,1168
90
+ minitap/mobile_use/utils/shell_utils.py,sha256=b35ae7f863379adb86c9ba0f9b3b9d4954118d12aef1ffed0bc260b32d73d857,650
91
+ minitap/mobile_use/utils/time.py,sha256=41bfaabb3751de11443ccb4a3f1f53d5ebacc7744c72e32695fdcc3d23f17d49,160
92
+ minitap/mobile_use/utils/ui_hierarchy.py,sha256=b52acd081ac18169dab94b7187c6ffed4db72d4e4b7f56aeca9ef5b81166c4e0,3630
93
+ minitap_mobile_use-2.1.0.dist-info/WHEEL,sha256=ab6157bc637547491fb4567cd7ddf26b04d63382916ca16c29a5c8e94c9c9ef7,79
94
+ minitap_mobile_use-2.1.0.dist-info/entry_points.txt,sha256=663a29cfd551a4eaa0f27335f0bd7e4a732a4e39c76b68ef5c8dc444d4a285fa,60
95
+ minitap_mobile_use-2.1.0.dist-info/METADATA,sha256=95abc6db29ea323284374508c8faba3fd6cf83db998a2a45b82585af354b8ab2,10574
96
+ minitap_mobile_use-2.1.0.dist-info/RECORD,,
@@ -1,27 +0,0 @@
1
- from langchain_core.messages.ai import AIMessage
2
- from minitap.mobile_use.graph.state import State
3
- from minitap.mobile_use.utils.decorators import wrap_with_callbacks
4
- from minitap.mobile_use.utils.logger import get_logger
5
-
6
- logger = get_logger(__name__)
7
-
8
-
9
- @wrap_with_callbacks(
10
- before=lambda: logger.info("Starting Executor Context Cleaner..."),
11
- on_success=lambda _: logger.success("Executor Context Cleaner"),
12
- on_failure=lambda _: logger.error("Executor Context Cleaner"),
13
- )
14
- async def executor_context_cleaner_node(state: State):
15
- """Clears the executor context."""
16
- update: dict = {
17
- "executor_failed": False,
18
- "executor_retrigger": False,
19
- }
20
- if len(state.executor_messages) > 0 and isinstance(state.executor_messages[-1], AIMessage):
21
- last_executor_message = state.executor_messages[-1]
22
- if len(last_executor_message.tool_calls) > 0:
23
- # A previous tool call raised an uncaught exception -> sanitize the executor messages
24
- tool_error_message = state.messages[-1]
25
- logger.error("Tool call failed with error: " + str(tool_error_message.content))
26
- update["executor_messages"] = [tool_error_message]
27
- return update
@@ -1,124 +0,0 @@
1
- from typing import Optional
2
-
3
- from langchain_core.messages import ToolMessage
4
- from langchain_core.tools import tool
5
- from langchain_core.tools.base import InjectedToolCallId
6
- from langgraph.prebuilt import InjectedState
7
- from langgraph.types import Command
8
- from typing_extensions import Annotated
9
-
10
- from minitap.mobile_use.controllers.mobile_command_controller import (
11
- ScreenDataResponse,
12
- WaitTimeout,
13
- get_screen_data,
14
- wait_for_animation_to_end,
15
- )
16
- from minitap.mobile_use.controllers.mobile_command_controller import (
17
- erase_text as erase_text_controller,
18
- )
19
- from minitap.mobile_use.graph.state import State
20
- from minitap.mobile_use.tools.tool_wrapper import ExecutorMetadata, ToolWrapper
21
- from minitap.mobile_use.utils.ui_hierarchy import find_element_by_resource_id
22
- from minitap.mobile_use.context import MobileUseContext
23
-
24
-
25
- def get_erase_text_tool(ctx: MobileUseContext):
26
- @tool
27
- def erase_text(
28
- tool_call_id: Annotated[str, InjectedToolCallId],
29
- state: Annotated[State, InjectedState],
30
- agent_thought: str,
31
- input_text_resource_id: str,
32
- executor_metadata: Optional[ExecutorMetadata],
33
- nb_chars: Optional[int] = None,
34
- ):
35
- """
36
- Erases up to `nb_chars` characters from the currently selected text field (default: 50).
37
-
38
- iOS Note:
39
- This may be flaky on iOS. As a workaround:
40
- - long_press_on("<input id>")
41
- - tap_on("Select All")
42
- - erase_text()
43
-
44
- Matches 'clearText' in search.
45
- """
46
- # value of text key from input_text_ressource_id
47
- latest_ui_hierarchy = state.latest_ui_hierarchy
48
- previous_text_value = None
49
- new_text_value = None
50
- nb_char_erased = -1
51
- if latest_ui_hierarchy is not None:
52
- text_input_element = find_element_by_resource_id(
53
- ui_hierarchy=latest_ui_hierarchy, resource_id=input_text_resource_id
54
- )
55
- if text_input_element:
56
- previous_text_value = text_input_element.get("text", None)
57
-
58
- output = erase_text_controller(ctx=ctx, nb_chars=nb_chars)
59
- has_failed = output is not None
60
-
61
- wait_for_animation_to_end(ctx=ctx, timeout=WaitTimeout.MEDIUM)
62
-
63
- screen_data: ScreenDataResponse = get_screen_data(screen_api_client=ctx.screen_api_client)
64
- latest_ui_hierarchy = screen_data.elements
65
-
66
- if not has_failed and latest_ui_hierarchy is not None:
67
- text_input_element = find_element_by_resource_id(
68
- ui_hierarchy=latest_ui_hierarchy, resource_id=input_text_resource_id
69
- )
70
- if text_input_element:
71
- new_text_value = text_input_element.get("text", None)
72
-
73
- if previous_text_value is not None and new_text_value is not None:
74
- if previous_text_value == new_text_value:
75
- has_failed = True
76
- output = (
77
- "Unable to erase text: text is very likely a placeholder."
78
- " Thus, assuming the text input is empty."
79
- )
80
- else:
81
- nb_char_erased = len(previous_text_value) - len(new_text_value)
82
- tool_message = ToolMessage(
83
- tool_call_id=tool_call_id,
84
- content=erase_text_wrapper.on_failure_fn(output)
85
- if has_failed
86
- else erase_text_wrapper.on_success_fn(
87
- nb_char_erased=nb_char_erased, new_text_value=new_text_value
88
- ),
89
- additional_kwargs={"error": output} if has_failed else {},
90
- )
91
-
92
- return Command(
93
- update=erase_text_wrapper.handle_executor_state_fields(
94
- ctx=ctx,
95
- state=state,
96
- executor_metadata=executor_metadata,
97
- tool_message=tool_message,
98
- is_failure=has_failed,
99
- updates={
100
- "agents_thoughts": [agent_thought],
101
- "messages": [tool_message],
102
- },
103
- ),
104
- )
105
-
106
- return erase_text
107
-
108
-
109
- def format_success_message(nb_char_erased: int, new_text_value: Optional[str]):
110
- output = ""
111
- if nb_char_erased == -1:
112
- output = "Text erased successfully."
113
- else:
114
- output = f"Text erased successfully. {nb_char_erased} characters were erased."
115
- if new_text_value is not None:
116
- output += f" New text in the input is {new_text_value}."
117
- return output
118
-
119
-
120
- erase_text_wrapper = ToolWrapper(
121
- tool_fn_getter=get_erase_text_tool,
122
- on_success_fn=format_success_message,
123
- on_failure_fn=lambda output: "Failed to erase text. " + output,
124
- )
@@ -1,78 +0,0 @@
1
- from typing import Optional
2
-
3
- from langchain_core.messages import ToolMessage
4
- from langchain_core.tools import tool
5
- from langchain_core.tools.base import InjectedToolCallId
6
- from langgraph.prebuilt import InjectedState
7
- from langgraph.types import Command
8
- from minitap.mobile_use.agents.hopper.hopper import HopperOutput, hopper
9
- from minitap.mobile_use.context import MobileUseContext
10
- from minitap.mobile_use.controllers.platform_specific_commands_controller import (
11
- list_packages as list_packages_command,
12
- )
13
- from minitap.mobile_use.graph.state import State
14
- from minitap.mobile_use.tools.tool_wrapper import ExecutorMetadata, ToolWrapper
15
- from typing_extensions import Annotated
16
-
17
-
18
- def get_list_packages_tool(ctx: MobileUseContext):
19
- @tool
20
- async def list_packages(
21
- tool_call_id: Annotated[str, InjectedToolCallId],
22
- state: Annotated[State, InjectedState],
23
- agent_thought: str,
24
- executor_metadata: Optional[ExecutorMetadata],
25
- ) -> Command:
26
- """
27
- Lists all the applications on the device.
28
- Outputs the full package names list (android) or bundle ids list (IOS).
29
- """
30
- output: str = list_packages_command(ctx=ctx)
31
- has_failed = False
32
-
33
- try:
34
- hopper_output: HopperOutput = await hopper(
35
- ctx=ctx,
36
- initial_goal=state.initial_goal,
37
- messages=state.messages,
38
- data=output,
39
- )
40
- tool_message = ToolMessage(
41
- tool_call_id=tool_call_id,
42
- content=list_packages_wrapper.on_success_fn()
43
- + ": "
44
- + hopper_output.step
45
- + ": "
46
- + hopper_output.output,
47
- )
48
- except Exception as e:
49
- print("Failed to extract insights from data: " + str(e))
50
- tool_message = ToolMessage(
51
- tool_call_id=tool_call_id,
52
- content=list_packages_wrapper.on_failure_fn(),
53
- additional_kwargs={"output": output},
54
- )
55
- has_failed = True
56
-
57
- return Command(
58
- update=list_packages_wrapper.handle_executor_state_fields(
59
- ctx=ctx,
60
- state=state,
61
- executor_metadata=executor_metadata,
62
- tool_message=tool_message,
63
- is_failure=has_failed,
64
- updates={
65
- "agents_thoughts": [agent_thought],
66
- "messages": [tool_message],
67
- },
68
- ),
69
- )
70
-
71
- return list_packages
72
-
73
-
74
- list_packages_wrapper = ToolWrapper(
75
- tool_fn_getter=get_list_packages_tool,
76
- on_success_fn=lambda: "Packages listed successfully.",
77
- on_failure_fn=lambda: "Failed to list packages.",
78
- )
@@ -1,57 +0,0 @@
1
- from typing import Optional
2
- from langchain_core.messages import ToolMessage
3
- from langchain_core.tools import tool
4
- from langchain_core.tools.base import InjectedToolCallId
5
- from langgraph.prebuilt import InjectedState
6
- from langgraph.types import Command
7
- from minitap.mobile_use.context import MobileUseContext
8
- from minitap.mobile_use.controllers.mobile_command_controller import run_flow as run_flow_controller
9
- from minitap.mobile_use.graph.state import State
10
- from minitap.mobile_use.tools.tool_wrapper import ExecutorMetadata, ToolWrapper
11
- from typing_extensions import Annotated
12
-
13
-
14
- def get_run_flow_tool(ctx: MobileUseContext):
15
- @tool
16
- def run_flow(
17
- tool_call_id: Annotated[str, InjectedToolCallId],
18
- state: Annotated[State, InjectedState],
19
- agent_thought: str,
20
- flow_steps: list,
21
- executor_metadata: Optional[ExecutorMetadata],
22
- dry_run: bool = False,
23
- ):
24
- """
25
- Run a flow i.e, a sequence of commands.
26
- """
27
- output = run_flow_controller(ctx=ctx, flow_steps=flow_steps, dry_run=dry_run)
28
- has_failed = output is not None
29
- tool_message = ToolMessage(
30
- tool_call_id=tool_call_id,
31
- content=run_flow_wrapper.on_failure_fn()
32
- if has_failed
33
- else run_flow_wrapper.on_success_fn(),
34
- additional_kwargs={"error": output} if has_failed else {},
35
- )
36
- return Command(
37
- update=run_flow_wrapper.handle_executor_state_fields(
38
- ctx=ctx,
39
- state=state,
40
- executor_metadata=executor_metadata,
41
- tool_message=tool_message,
42
- is_failure=has_failed,
43
- updates={
44
- "agents_thoughts": [agent_thought],
45
- "messages": [tool_message],
46
- },
47
- ),
48
- )
49
-
50
- return run_flow
51
-
52
-
53
- run_flow_wrapper = ToolWrapper(
54
- tool_fn_getter=get_run_flow_tool,
55
- on_success_fn=lambda: "Flow run successfully.",
56
- on_failure_fn=lambda: "Failed to run flow.",
57
- )
@@ -1,95 +0,0 @@
1
- minitap/mobile_use/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
2
- minitap/mobile_use/agents/contextor/contextor.py,sha256=d7c98771a9173281c1660a2ee965149d4f70ecf7005cf75fa89eb1e9a9f2b660,1673
3
- minitap/mobile_use/agents/cortex/cortex.md,sha256=a51e032bbcc456ccee50883f176cb857c20241a2b2b63012213835434dcdfe60,4646
4
- minitap/mobile_use/agents/cortex/cortex.py,sha256=efdc52d7ccb06fe00c607408144b7b26cca1b2b7241d38b47d78620898d667b6,4264
5
- minitap/mobile_use/agents/cortex/types.py,sha256=19b8601c6dae8dae6259c027b63be541a9dc293e4d141e46f11f621ec35e45dc,399
6
- minitap/mobile_use/agents/executor/executor.md,sha256=5d80434859d7899ceb4d07bf8b8aa1d32d43febb312e97a8966c3c6fba04ca17,2911
7
- minitap/mobile_use/agents/executor/executor.py,sha256=20cbb293622cfdfff77ae6cf1c39f06977e41ecd251369c44c221fb7cee46947,3405
8
- minitap/mobile_use/agents/executor/executor_context_cleaner.py,sha256=b813652ee951473df1a731741b7cf026addc7462f3668364464f518448309722,1211
9
- minitap/mobile_use/agents/executor/utils.py,sha256=1a387d30047d3be05b5e550433866abe4388222b3f95d1360847870155ef8f12,368
10
- minitap/mobile_use/agents/hopper/hopper.md,sha256=d80ca663c3404efa4612e8a70cc66e25ad36e66adee7ecd15a67a91aebd92610,732
11
- minitap/mobile_use/agents/hopper/hopper.py,sha256=39a4976a044fdc505e0980c415877f8c1723bdcb6e75e53123897bec49753963,1426
12
- minitap/mobile_use/agents/orchestrator/human.md,sha256=212c6d15d99e6d7294ad37bbf64707a7d9669d279c69c56b331db5582c7694aa,186
13
- minitap/mobile_use/agents/orchestrator/orchestrator.md,sha256=159e6adfe5ee54529f76a4a1462c10418d690efefe0c0cd87c23584b02b4b96d,1242
14
- minitap/mobile_use/agents/orchestrator/orchestrator.py,sha256=b0335056e117389592ee0bc0b1596c5f376b57f7ffa7a705334ce701a0fd0a8c,4391
15
- minitap/mobile_use/agents/orchestrator/types.py,sha256=11ebb2317b5e65816d623499d4e445c705320bc7be06ef67ea95d0e38eaccd7d,244
16
- minitap/mobile_use/agents/outputter/human.md,sha256=6b9b45c640b163554524b1aec4cd97134c628eeb8557a32e23c8f966d32f642e,771
17
- minitap/mobile_use/agents/outputter/outputter.py,sha256=fd6143776e916439f39d823bf6860e3138d1d191b89d60d8cc809fbb49bd3808,2792
18
- minitap/mobile_use/agents/outputter/test_outputter.py,sha256=4c52988f8f29159657707a0e11500610f3987cac6390b17edec23f09ddfcc0ff,3334
19
- minitap/mobile_use/agents/planner/human.md,sha256=cb37be2af568918e60238eaa785837178a3ba8f8112de86850d9a62914c18314,222
20
- minitap/mobile_use/agents/planner/planner.md,sha256=6c1945332a8606a71497829c55808eca951b386a5bfb4430a231f39d905bff7e,2568
21
- minitap/mobile_use/agents/planner/planner.py,sha256=ac85084c8967ec63fc66d404eba2b4f0dad59b7512bd0bc9928d2b4289208a75,2408
22
- minitap/mobile_use/agents/planner/types.py,sha256=1d434d15fb3b401331ae9a41b37638907f55d70e8dcc7963d046ecab3d7acab6,1202
23
- minitap/mobile_use/agents/planner/utils.py,sha256=5032789152b4824458a96acef17d4b865dcf451e80005d3e42d75f936965b3b5,1486
24
- minitap/mobile_use/agents/summarizer/summarizer.py,sha256=63899afe2c9c7ecbba4d1d6fdf18c865a2310cfe76e4c6c9b31e74d6746eb5b7,1070
25
- minitap/mobile_use/clients/device_hardware_client.py,sha256=1b3e2601715296444b8e0166cb8654ab0051f1b74a32d93bb55d29e4179440ea,734
26
- minitap/mobile_use/clients/ios_client.py,sha256=332bf47ac01bbd5bf6178a59eea7c7a30fed944f30907caea5388178f312d36b,1452
27
- minitap/mobile_use/clients/screen_api_client.py,sha256=3615dc65d25c38b4d8dc5512f9adb3bcf69dca7a0298a472a6812f604a275c47,2019
28
- minitap/mobile_use/config.py,sha256=4aa7a41d8968ca4e815467b91664a5e835d200d2e99483e141c71a24896d3a31,9427
29
- minitap/mobile_use/constants.py,sha256=93639619ee5e0e1c228a00356c074f044561132d75a902c560b9832768c7651b,51
30
- minitap/mobile_use/context.py,sha256=8bed4b88c01c84a3686aebaa3b66454cc705f000d694ecd2ea73753be29b0c01,1792
31
- minitap/mobile_use/controllers/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
32
- minitap/mobile_use/controllers/mobile_command_controller.py,sha256=6096f559354f9a8b37b1d76fd2d29ad8ae7fad1bdf585b9d789e48aa8794998e,11760
33
- minitap/mobile_use/controllers/platform_specific_commands_controller.py,sha256=3d62496216bd6e16a7127fda866a1eddd9086c6d5d19a23a997dc44f56d6e8f4,2745
34
- minitap/mobile_use/graph/graph.py,sha256=5a44c5b571416656c6a6763fbff5035f57232ba98dcdee965db0fea5525d20bf,4855
35
- minitap/mobile_use/graph/state.py,sha256=42b17c5c52d1bb1f5b6e20e456f60baa322087367107925d624e339a28fb17d6,2972
36
- minitap/mobile_use/main.py,sha256=91c068961fbe3ca6d896796c5814dfa80cd0b16436c0e8dabebfe520e3d24205,3605
37
- minitap/mobile_use/sdk/__init__.py,sha256=4e5555c0597242b9523827194a2500b9c6d7e5c04b1ccd2056c9b1f4d42a31cd,318
38
- minitap/mobile_use/sdk/agent.py,sha256=b32aa85b9a6426e414786373ba6ac62a192e0e5d73926037a1a2197ed7a80cd5,20109
39
- minitap/mobile_use/sdk/builders/__init__.py,sha256=d6c96d39b80900a114698ef205ab5061a541f33bfa99c456d9345e5adb8ff6ff,424
40
- minitap/mobile_use/sdk/builders/agent_config_builder.py,sha256=88b9104443c1e2fe90d3f6bb3bfa9222091a72f209cf1234a4e9b52eb743a73f,7233
41
- minitap/mobile_use/sdk/builders/index.py,sha256=64336ac3b3dea4673a48e95b8c5ac4196ecd5d2196380377d102593d0a1dc138,442
42
- minitap/mobile_use/sdk/builders/task_request_builder.py,sha256=739f7886cbcc87602f83f5fa37f5da049323a7754f2254840bedc1f74abe19d2,6906
43
- minitap/mobile_use/sdk/constants.py,sha256=436ba0700c6cf37ac0c9e3995a5f5a0d54ca87af72686eb9667a2c6a96e30f68,292
44
- minitap/mobile_use/sdk/examples/README.md,sha256=b6780de3025b1897ad2ef42fa968f2a69b82f929465807f9590c4e9321dab6e6,2306
45
- minitap/mobile_use/sdk/examples/__init__.py,sha256=c23868a2ca7e9b76e80d6835fe93c10e13ea8f2287dd6e785511b8ac30354e9b,46
46
- minitap/mobile_use/sdk/examples/simple_photo_organizer.py,sha256=8ad1cebb5281e3663264560bd15b090add41d2821b1db77e4cbc829860c98df8,2606
47
- minitap/mobile_use/sdk/examples/smart_notification_assistant.py,sha256=bf43241c33b882069d5845a6f0ea78038e4c484299893ce8345cebc5836a4e0c,6386
48
- minitap/mobile_use/sdk/types/__init__.py,sha256=5dd148d83bf6261ac8ac60c994e2496b5bf535591d0835807d5fe394fd85a954,1014
49
- minitap/mobile_use/sdk/types/agent.py,sha256=f8af16989d3d1d5b5cfc18e78e5762d37f30df3788663f3fb1b774621227c6b1,2133
50
- minitap/mobile_use/sdk/types/exceptions.py,sha256=56ac3f749730740951448b1b0f200be21331dc0800916a87587b21e7850120a5,2288
51
- minitap/mobile_use/sdk/types/task.py,sha256=d94e69dd0c58ecc8b613969dd223b45177a174b8a54f97f3a1cbf251517f31be,5915
52
- minitap/mobile_use/sdk/utils.py,sha256=c32794fa7877062963c9fc035625668506b5ae05ae06aa47364356103fdce690,950
53
- minitap/mobile_use/servers/config.py,sha256=b77296e56b8a0a3211bff4795d473cdc5fd58b31d3acaa8f9d920e6e4bed68f9,606
54
- minitap/mobile_use/servers/device_hardware_bridge.py,sha256=ac446958157e7049dbf6eda6c8a55d710a28c221cb0042f271f63033186a2780,7211
55
- minitap/mobile_use/servers/device_screen_api.py,sha256=63bf866f17cde4ab97631b710080866b8427225d3857b2351ab83db38a9c5107,5064
56
- minitap/mobile_use/servers/start_servers.py,sha256=04fd57f629c39bfa012af6d953280567c7b9eb1fa1ad055b5d1f3c792a9b22f5,5056
57
- minitap/mobile_use/servers/stop_servers.py,sha256=47c3dd2466a5dce9e6300226a25e505a00a4710d4f2ec3a92d0fdaf1ff11b0d4,7564
58
- minitap/mobile_use/servers/utils.py,sha256=db5d26153a169ab141556337db3693adc1bf8522943316656bdeb05dbf95465b,394
59
- minitap/mobile_use/services/accessibility.py,sha256=42bcbe81b427ee6f6e82bcfe420fc40630db950bda354e3e433c2dda2e159628,3404
60
- minitap/mobile_use/services/llm.py,sha256=de49162b21afcf17396f98633cec1ff001814143145eff06e4dced18f5848acf,3665
61
- minitap/mobile_use/tools/index.py,sha256=e7635124296215de6594f410812efedae73025e0a7085fb60b4908f3ea29e4f7,2309
62
- minitap/mobile_use/tools/mobile/back.py,sha256=c98bada46ba3d09b326499a14d3fb365fada2f20dd51e73f2f2d7239c7bec282,1925
63
- minitap/mobile_use/tools/mobile/copy_text_from.py,sha256=dae382f19f91f45f59f767649f79f79440945207bee63b35b9d61abcf5c8dea2,2859
64
- minitap/mobile_use/tools/mobile/erase_text.py,sha256=0486e94926eb21618d5f1feb9be940e46ca757904f16c95f481652e4a7622cb1,4612
65
- minitap/mobile_use/tools/mobile/input_text.py,sha256=9b0e349145e555b308ae4bb29df40ba38b2d9529b8c3c59bfb3353d2e4a8c746,2507
66
- minitap/mobile_use/tools/mobile/launch_app.py,sha256=c7b8495920c8a7633245a8f8d207028b72d02e795d08cc382ea6b7810eb588f0,2166
67
- minitap/mobile_use/tools/mobile/list_packages.py,sha256=88d7db8b54bd7f52b83722cfb4dd74064de2aa2269f82077ed7e2842e391489a,2749
68
- minitap/mobile_use/tools/mobile/long_press_on.py,sha256=71fc373170af94321ce737bb479a026140ac03f2a5db4e4ad2ac9d0358fd2003,2339
69
- minitap/mobile_use/tools/mobile/open_link.py,sha256=d00d722753a39908f96a66027f8e4bbc079686f0b1ea17bcfb9f8dc16af219a2,2013
70
- minitap/mobile_use/tools/mobile/paste_text.py,sha256=2242a5385c1fbb219b88160bccfc0f76f1d6a32d8e8981978fac081b936e2e58,2240
71
- minitap/mobile_use/tools/mobile/press_key.py,sha256=2f6e8f2dfe25f3f08265b04d7f769b006b0745a0a231546837bac53ba780fa4b,2077
72
- minitap/mobile_use/tools/mobile/run_flow.py,sha256=ac1c1ccf1abaa0689474ea770d2855fec129882df4ce32b7d263e712ea838700,2040
73
- minitap/mobile_use/tools/mobile/stop_app.py,sha256=59c18291cd919898115790dd745b86e0007c39906faadf56dc9173bb31dd0e43,2202
74
- minitap/mobile_use/tools/mobile/swipe.py,sha256=4e5f614f70c7929647316481bd4aa1f3bcb1317e313a9322bb4bec22a66091f6,2012
75
- minitap/mobile_use/tools/mobile/take_screenshot.py,sha256=6b59b7b2e9f054bbf4845cce6411e3f39d393e2b28a914ce9e3078cfa0741f40,2415
76
- minitap/mobile_use/tools/mobile/tap.py,sha256=7528fb878993452709d3d1548d4b1ce110dd83ca93cbf6ea6a82ef83794c0ddd,2432
77
- minitap/mobile_use/tools/mobile/wait_for_animation_to_end.py,sha256=c3eb61e0713524a1c65288dfd97ce5f11dafbf0b98f015b3e85845b97c18d2b0,2650
78
- minitap/mobile_use/tools/tool_wrapper.py,sha256=c6d8dd5430731de5a69f7cb98b6b850551595a9310a3ef98d527093c590e0dfb,1077
79
- minitap/mobile_use/utils/cli_helpers.py,sha256=00578e45bfa71a6b332026572bbf255716f40f0499dd8a246f075f801bce7c7d,1751
80
- minitap/mobile_use/utils/cli_selection.py,sha256=8cbdb9559f4f3d40ae3ad5287239050cfc7ca826ecf2cb488c8c6d255dab0cd3,4828
81
- minitap/mobile_use/utils/conversations.py,sha256=8f1d924300ec3f6f7c71510c21e3011b75caca5b1fff06fdaccb377c3cde24ec,914
82
- minitap/mobile_use/utils/decorators.py,sha256=c88b4ab78724cb97d4c8d40c6049e874293e8d0c0ee6cb0131aa869d9b205810,3631
83
- minitap/mobile_use/utils/errors.py,sha256=6c5566484cff48ce1eb168c3cbe93d6e5365457828f59616a15147598feef769,156
84
- minitap/mobile_use/utils/file.py,sha256=1ca968613452a273b23e4f58460ab39f87255b02cdb6fb8ca04f4e628b346070,315
85
- minitap/mobile_use/utils/logger.py,sha256=ff75d4e373cc750ba4cdaee6c86139841420c44e8ad291f7f3afc77367dc7daa,5695
86
- minitap/mobile_use/utils/media.py,sha256=cd51b2f1c268aca2dd56439a97d761765454a92e9598d76c0a86f62185b990f9,2233
87
- minitap/mobile_use/utils/recorder.py,sha256=4bd4ffd51370c610da582fee4567dfeda8ad661379ec99c715cd0ed5e016c146,2133
88
- minitap/mobile_use/utils/requests_utils.py,sha256=5c3a2e2aff7c521cd6a43b74c084e2244e1ff55065a5b722e6e251c6419861fd,1168
89
- minitap/mobile_use/utils/shell_utils.py,sha256=b35ae7f863379adb86c9ba0f9b3b9d4954118d12aef1ffed0bc260b32d73d857,650
90
- minitap/mobile_use/utils/time.py,sha256=41bfaabb3751de11443ccb4a3f1f53d5ebacc7744c72e32695fdcc3d23f17d49,160
91
- minitap/mobile_use/utils/ui_hierarchy.py,sha256=0465fdbad394252ba2d02c6227f8095b82ee3ad0970a4cb3cf5c22e8f5b1de71,1005
92
- minitap_mobile_use-2.0.0.dist-info/WHEEL,sha256=ab6157bc637547491fb4567cd7ddf26b04d63382916ca16c29a5c8e94c9c9ef7,79
93
- minitap_mobile_use-2.0.0.dist-info/entry_points.txt,sha256=663a29cfd551a4eaa0f27335f0bd7e4a732a4e39c76b68ef5c8dc444d4a285fa,60
94
- minitap_mobile_use-2.0.0.dist-info/METADATA,sha256=1ff980fbce9f5fdecce85c88f5d44319b48993f5471ee35e67e9930398ca386d,10363
95
- minitap_mobile_use-2.0.0.dist-info/RECORD,,