appium-mcp 1.8.11 → 1.8.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +12 -3
  3. package/server.json +2 -2
  4. package/.github/dependabot.yml +0 -17
  5. package/.github/workflows/ci.yml +0 -44
  6. package/.github/workflows/pr-title.yml +0 -10
  7. package/.github/workflows/publish.yml +0 -66
  8. package/.gitmodules +0 -9
  9. package/.prettierignore +0 -29
  10. package/.prettierrc +0 -9
  11. package/.releaserc +0 -37
  12. package/docs/CONTRIBUTING.md +0 -424
  13. package/eslint.config.js +0 -23
  14. package/examples/android-gmail.md +0 -7
  15. package/examples/android-todo-app.md +0 -9
  16. package/jest.config.js +0 -23
  17. package/src/devicemanager/adb-manager.ts +0 -164
  18. package/src/devicemanager/ios-manager.ts +0 -145
  19. package/src/index.ts +0 -45
  20. package/src/locators/element-filter.ts +0 -136
  21. package/src/locators/generate-all-locators.ts +0 -150
  22. package/src/locators/locator-generation.ts +0 -657
  23. package/src/locators/source-parsing.ts +0 -149
  24. package/src/logger.ts +0 -11
  25. package/src/resources/caps.json +0 -697
  26. package/src/resources/index.ts +0 -8
  27. package/src/resources/java/template.ts +0 -83
  28. package/src/resources/submodules/appium/.github/PULL_REQUEST_TEMPLATE.md +0 -28
  29. package/src/resources/submodules/appium/CHANGELOG.md +0 -45
  30. package/src/resources/submodules/appium/CONDUCT.md +0 -48
  31. package/src/resources/submodules/appium/GOVERNANCE.md +0 -185
  32. package/src/resources/submodules/appium/IDEAS.md +0 -16
  33. package/src/resources/submodules/appium/README.md +0 -221
  34. package/src/resources/submodules/appium/ROADMAP.md +0 -30
  35. package/src/resources/submodules/appium/SPONSORS.md +0 -3
  36. package/src/resources/submodules/appium/docs/README.md +0 -6
  37. package/src/resources/submodules/appium/docs/payout.md +0 -35
  38. package/src/resources/submodules/appium/packages/appium/CHANGELOG.md +0 -1437
  39. package/src/resources/submodules/appium/packages/appium/README.md +0 -221
  40. package/src/resources/submodules/appium/packages/appium/docs/en/blog/index.md +0 -2
  41. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-appiumconf2024.md +0 -45
  42. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-browserstack-as-strategic-partner.md +0 -46
  43. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-headspin-as-development-partner.md +0 -47
  44. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-lambdatest-as-strategic-partner.md +0 -42
  45. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sauce-labs-as-strategic-partner.md +0 -36
  46. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sponsorship-program.md +0 -48
  47. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/appium3.md +0 -40
  48. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/hello-world.md +0 -15
  49. package/src/resources/submodules/appium/packages/appium/docs/en/contributing/index.md +0 -150
  50. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-docs.md +0 -86
  51. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-doctor-checks.md +0 -141
  52. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-drivers.md +0 -860
  53. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-plugins.md +0 -514
  54. package/src/resources/submodules/appium/packages/appium/docs/en/developing/config-system.md +0 -451
  55. package/src/resources/submodules/appium/packages/appium/docs/en/developing/index.md +0 -18
  56. package/src/resources/submodules/appium/packages/appium/docs/en/developing/sensitive.md +0 -49
  57. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/clients.md +0 -132
  58. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/drivers.md +0 -207
  59. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/index.md +0 -45
  60. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/plugins.md +0 -138
  61. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/tools.md +0 -83
  62. package/src/resources/submodules/appium/packages/appium/docs/en/guides/branch-testing.md +0 -57
  63. package/src/resources/submodules/appium/packages/appium/docs/en/guides/caching.md +0 -76
  64. package/src/resources/submodules/appium/packages/appium/docs/en/guides/caps.md +0 -275
  65. package/src/resources/submodules/appium/packages/appium/docs/en/guides/config.md +0 -98
  66. package/src/resources/submodules/appium/packages/appium/docs/en/guides/context.md +0 -44
  67. package/src/resources/submodules/appium/packages/appium/docs/en/guides/event-timing.md +0 -73
  68. package/src/resources/submodules/appium/packages/appium/docs/en/guides/execute-methods.md +0 -122
  69. package/src/resources/submodules/appium/packages/appium/docs/en/guides/grid.md +0 -166
  70. package/src/resources/submodules/appium/packages/appium/docs/en/guides/headers.md +0 -17
  71. package/src/resources/submodules/appium/packages/appium/docs/en/guides/log-filters.md +0 -86
  72. package/src/resources/submodules/appium/packages/appium/docs/en/guides/managing-exts.md +0 -87
  73. package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-1-to-2.md +0 -368
  74. package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-2-to-3.md +0 -464
  75. package/src/resources/submodules/appium/packages/appium/docs/en/guides/security.md +0 -89
  76. package/src/resources/submodules/appium/packages/appium/docs/en/guides/settings.md +0 -68
  77. package/src/resources/submodules/appium/packages/appium/docs/en/guides/tls.md +0 -42
  78. package/src/resources/submodules/appium/packages/appium/docs/en/index.md +0 -59
  79. package/src/resources/submodules/appium/packages/appium/docs/en/intro/appium.md +0 -202
  80. package/src/resources/submodules/appium/packages/appium/docs/en/intro/clients.md +0 -127
  81. package/src/resources/submodules/appium/packages/appium/docs/en/intro/drivers.md +0 -188
  82. package/src/resources/submodules/appium/packages/appium/docs/en/intro/history.md +0 -196
  83. package/src/resources/submodules/appium/packages/appium/docs/en/intro/index.md +0 -39
  84. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/index.md +0 -29
  85. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/install.md +0 -50
  86. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/next-steps.md +0 -23
  87. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/requirements.md +0 -29
  88. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-dotnet.md +0 -105
  89. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-java.md +0 -23
  90. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-js.md +0 -75
  91. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-py.md +0 -60
  92. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-rb.md +0 -83
  93. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/uiauto2-driver.md +0 -144
  94. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/appium.md +0 -394
  95. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/bidi.md +0 -70
  96. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/index.md +0 -30
  97. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/jsonwp.md +0 -214
  98. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/mjsonwp.md +0 -151
  99. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/others.md +0 -671
  100. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/plugins.md +0 -289
  101. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/webdriver.md +0 -1114
  102. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/env-vars.md +0 -31
  103. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/extensions.md +0 -239
  104. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/index.md +0 -35
  105. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/server.md +0 -76
  106. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/setup.md +0 -76
  107. package/src/resources/submodules/appium/packages/appium/docs/en/reference/index.md +0 -25
  108. package/src/resources/submodules/appium/packages/appium/docs/en/resources/index.md +0 -28
  109. package/src/resources/submodules/appium/packages/appium/docs/en/sponsors/index.md +0 -64
  110. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/index.md +0 -2
  111. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-appiumconf2024.md +0 -45
  112. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-browserstack-as-strategic-partner.md +0 -46
  113. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-headspin-as-development-partner.md +0 -47
  114. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-lambdatest-as-strategic-partner.md +0 -41
  115. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sauce-labs-as-strategic-partner.md +0 -36
  116. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sponsorship-program.md +0 -48
  117. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/appium3.md +0 -40
  118. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/hello-world.md +0 -15
  119. package/src/resources/submodules/appium/packages/appium/docs/ja/contributing/index.md +0 -158
  120. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-docs.md +0 -86
  121. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-doctor-checks.md +0 -141
  122. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-drivers.md +0 -866
  123. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-plugins.md +0 -520
  124. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/config-system.md +0 -468
  125. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/index.md +0 -18
  126. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/sensitive.md +0 -49
  127. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/clients.md +0 -143
  128. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/drivers.md +0 -219
  129. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/index.md +0 -45
  130. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/plugins.md +0 -140
  131. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/tools.md +0 -87
  132. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/branch-testing.md +0 -57
  133. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caching.md +0 -78
  134. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caps.md +0 -259
  135. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/config.md +0 -102
  136. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/context.md +0 -44
  137. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/event-timing.md +0 -75
  138. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/execute-methods.md +0 -142
  139. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/grid.md +0 -166
  140. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/headers.md +0 -17
  141. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/log-filters.md +0 -86
  142. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/managing-exts.md +0 -89
  143. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-1-to-2.md +0 -402
  144. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-2-to-3.md +0 -458
  145. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/security.md +0 -89
  146. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/settings.md +0 -70
  147. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/tls.md +0 -43
  148. package/src/resources/submodules/appium/packages/appium/docs/ja/index.md +0 -55
  149. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/appium.md +0 -191
  150. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/clients.md +0 -139
  151. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/drivers.md +0 -188
  152. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/history.md +0 -196
  153. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/index.md +0 -39
  154. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/index.md +0 -23
  155. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/install.md +0 -47
  156. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/next-steps.md +0 -19
  157. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/requirements.md +0 -29
  158. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-dotnet.md +0 -107
  159. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-java.md +0 -23
  160. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-js.md +0 -77
  161. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-py.md +0 -63
  162. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-rb.md +0 -85
  163. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/uiauto2-driver.md +0 -148
  164. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/appium.md +0 -395
  165. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/bidi.md +0 -71
  166. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/index.md +0 -30
  167. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/jsonwp.md +0 -215
  168. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/mjsonwp.md +0 -152
  169. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/others.md +0 -672
  170. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/plugins.md +0 -291
  171. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/webdriver.md +0 -1114
  172. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/env-vars.md +0 -31
  173. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/extensions.md +0 -240
  174. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/index.md +0 -35
  175. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/server.md +0 -76
  176. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/setup.md +0 -78
  177. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/index.md +0 -25
  178. package/src/resources/submodules/appium/packages/appium/docs/ja/resources/index.md +0 -28
  179. package/src/resources/submodules/appium/packages/appium/docs/ja/sponsors/index.md +0 -61
  180. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz-white.png +0 -0
  181. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz.png +0 -0
  182. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-white.png +0 -0
  183. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo.png +0 -0
  184. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-dark.png +0 -0
  185. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-light.png +0 -0
  186. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-dark.png +0 -0
  187. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-light.png +0 -0
  188. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-sauce.png +0 -0
  189. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/index.md +0 -2
  190. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-appiumconf2024.md +0 -45
  191. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-browserstack-as-strategic-partner.md +0 -46
  192. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-headspin-as-development-partner.md +0 -47
  193. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-lambdatest-as-strategic-partner.md +0 -41
  194. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sauce-labs-as-strategic-partner.md +0 -36
  195. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sponsorship-program.md +0 -48
  196. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/appium3.md +0 -40
  197. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/hello-world.md +0 -15
  198. package/src/resources/submodules/appium/packages/appium/docs/zh/contributing/index.md +0 -132
  199. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-docs.md +0 -86
  200. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-doctor-checks.md +0 -141
  201. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-drivers.md +0 -866
  202. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-plugins.md +0 -520
  203. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/config-system.md +0 -468
  204. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/index.md +0 -18
  205. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/sensitive.md +0 -49
  206. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/clients.md +0 -143
  207. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/drivers.md +0 -219
  208. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/index.md +0 -45
  209. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/plugins.md +0 -140
  210. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/tools.md +0 -87
  211. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/branch-testing.md +0 -57
  212. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caching.md +0 -78
  213. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caps.md +0 -284
  214. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/config.md +0 -102
  215. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/context.md +0 -44
  216. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/event-timing.md +0 -75
  217. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/execute-methods.md +0 -142
  218. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/grid.md +0 -166
  219. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/headers.md +0 -17
  220. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/log-filters.md +0 -86
  221. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/managing-exts.md +0 -89
  222. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-1-to-2.md +0 -410
  223. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-2-to-3.md +0 -459
  224. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/security.md +0 -89
  225. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/settings.md +0 -70
  226. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/tls.md +0 -43
  227. package/src/resources/submodules/appium/packages/appium/docs/zh/index.md +0 -54
  228. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/appium.md +0 -200
  229. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/clients.md +0 -139
  230. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/drivers.md +0 -188
  231. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/history.md +0 -196
  232. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/index.md +0 -39
  233. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/index.md +0 -23
  234. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/install.md +0 -47
  235. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/next-steps.md +0 -19
  236. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/requirements.md +0 -21
  237. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-dotnet.md +0 -99
  238. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-java.md +0 -20
  239. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-js.md +0 -62
  240. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-py.md +0 -57
  241. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-rb.md +0 -80
  242. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/uiauto2-driver.md +0 -148
  243. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/appium.md +0 -395
  244. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/bidi.md +0 -71
  245. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/index.md +0 -30
  246. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/jsonwp.md +0 -215
  247. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/mjsonwp.md +0 -152
  248. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/others.md +0 -672
  249. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/plugins.md +0 -291
  250. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/webdriver.md +0 -1114
  251. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/env-vars.md +0 -31
  252. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/extensions.md +0 -240
  253. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/index.md +0 -35
  254. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/server.md +0 -76
  255. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/setup.md +0 -78
  256. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/index.md +0 -25
  257. package/src/resources/submodules/appium/packages/appium/docs/zh/resources/index.md +0 -28
  258. package/src/resources/submodules/appium/packages/appium/docs/zh/sponsors/index.md +0 -61
  259. package/src/resources/submodules/appium/packages/appium/types/manifest/README.md +0 -30
  260. package/src/resources/submodules/appium/packages/base-driver/CHANGELOG.md +0 -1131
  261. package/src/resources/submodules/appium/packages/base-driver/README.md +0 -15
  262. package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/errors.md +0 -82
  263. package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/protocol-methods.md +0 -182
  264. package/src/resources/submodules/appium/packages/base-driver/static/appium.png +0 -0
  265. package/src/resources/submodules/appium/packages/base-plugin/CHANGELOG.md +0 -672
  266. package/src/resources/submodules/appium/packages/base-plugin/README.md +0 -15
  267. package/src/resources/submodules/appium/packages/docutils/CHANGELOG.md +0 -948
  268. package/src/resources/submodules/appium/packages/docutils/README.md +0 -27
  269. package/src/resources/submodules/appium/packages/driver-test-support/CHANGELOG.md +0 -717
  270. package/src/resources/submodules/appium/packages/driver-test-support/README.md +0 -112
  271. package/src/resources/submodules/appium/packages/eslint-config-appium-ts/CHANGELOG.md +0 -168
  272. package/src/resources/submodules/appium/packages/eslint-config-appium-ts/README.md +0 -33
  273. package/src/resources/submodules/appium/packages/execute-driver-plugin/CHANGELOG.md +0 -603
  274. package/src/resources/submodules/appium/packages/execute-driver-plugin/README.md +0 -42
  275. package/src/resources/submodules/appium/packages/fake-driver/CHANGELOG.md +0 -545
  276. package/src/resources/submodules/appium/packages/fake-driver/README.md +0 -7
  277. package/src/resources/submodules/appium/packages/fake-driver/lib/screen.png +0 -0
  278. package/src/resources/submodules/appium/packages/fake-plugin/CHANGELOG.md +0 -683
  279. package/src/resources/submodules/appium/packages/fake-plugin/README.md +0 -7
  280. package/src/resources/submodules/appium/packages/images-plugin/CHANGELOG.md +0 -602
  281. package/src/resources/submodules/appium/packages/images-plugin/README.md +0 -27
  282. package/src/resources/submodules/appium/packages/images-plugin/docs/find-by-image.md +0 -65
  283. package/src/resources/submodules/appium/packages/images-plugin/docs/image-comparison.md +0 -203
  284. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/appstore.png +0 -0
  285. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img1.png +0 -0
  286. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2.png +0 -0
  287. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2_part.png +0 -0
  288. package/src/resources/submodules/appium/packages/logger/CHANGELOG.md +0 -162
  289. package/src/resources/submodules/appium/packages/logger/README.md +0 -31
  290. package/src/resources/submodules/appium/packages/opencv/CHANGELOG.md +0 -384
  291. package/src/resources/submodules/appium/packages/opencv/README.md +0 -68
  292. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/appium-diagram.jpg +0 -0
  293. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc1.png +0 -0
  294. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc2.png +0 -0
  295. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc_rotated.png +0 -0
  296. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/findwaldo.jpg +0 -0
  297. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/number5.png +0 -0
  298. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/waldo.jpg +0 -0
  299. package/src/resources/submodules/appium/packages/plugin-test-support/CHANGELOG.md +0 -539
  300. package/src/resources/submodules/appium/packages/plugin-test-support/README.md +0 -49
  301. package/src/resources/submodules/appium/packages/relaxed-caps-plugin/CHANGELOG.md +0 -154
  302. package/src/resources/submodules/appium/packages/relaxed-caps-plugin/README.md +0 -35
  303. package/src/resources/submodules/appium/packages/schema/CHANGELOG.md +0 -271
  304. package/src/resources/submodules/appium/packages/schema/README.md +0 -50
  305. package/src/resources/submodules/appium/packages/storage-plugin/CHANGELOG.md +0 -73
  306. package/src/resources/submodules/appium/packages/storage-plugin/README.md +0 -83
  307. package/src/resources/submodules/appium/packages/strongbox/CHANGELOG.md +0 -94
  308. package/src/resources/submodules/appium/packages/strongbox/README.md +0 -96
  309. package/src/resources/submodules/appium/packages/support/CHANGELOG.md +0 -1054
  310. package/src/resources/submodules/appium/packages/support/README.md +0 -161
  311. package/src/resources/submodules/appium/packages/test-support/CHANGELOG.md +0 -712
  312. package/src/resources/submodules/appium/packages/test-support/README.md +0 -61
  313. package/src/resources/submodules/appium/packages/tsconfig/CHANGELOG.md +0 -131
  314. package/src/resources/submodules/appium/packages/tsconfig/README.md +0 -19
  315. package/src/resources/submodules/appium/packages/types/CHANGELOG.md +0 -793
  316. package/src/resources/submodules/appium/packages/types/README.md +0 -21
  317. package/src/resources/submodules/appium/packages/universal-xml-plugin/CHANGELOG.md +0 -435
  318. package/src/resources/submodules/appium/packages/universal-xml-plugin/README.md +0 -53
  319. package/src/resources/submodules/appium/renovate/README.md +0 -63
  320. package/src/resources/submodules/appium-uiautomator2-driver/CHANGELOG.md +0 -1204
  321. package/src/resources/submodules/appium-uiautomator2-driver/README.md +0 -2077
  322. package/src/resources/submodules/appium-uiautomator2-driver/docs/actions.md +0 -72
  323. package/src/resources/submodules/appium-uiautomator2-driver/docs/activity-startup.md +0 -47
  324. package/src/resources/submodules/appium-uiautomator2-driver/docs/android-appbundle.md +0 -69
  325. package/src/resources/submodules/appium-uiautomator2-driver/docs/android-mobile-gestures.md +0 -352
  326. package/src/resources/submodules/appium-uiautomator2-driver/docs/bidi.md +0 -50
  327. package/src/resources/submodules/appium-uiautomator2-driver/docs/capability-sets.md +0 -136
  328. package/src/resources/submodules/appium-uiautomator2-driver/docs/scheduled-actions.md +0 -155
  329. package/src/resources/submodules/appium-uiautomator2-driver/docs/uiautomator-uiselector.md +0 -51
  330. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/main.md +0 -95
  331. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen1.png +0 -0
  332. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen2.png +0 -0
  333. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/checkered-squares.png +0 -0
  334. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/start-button.png +0 -0
  335. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/stop-button.png +0 -0
  336. package/src/resources/submodules/appium-xcuitest-driver/.github/ISSUE_TEMPLATE.md +0 -4
  337. package/src/resources/submodules/appium-xcuitest-driver/CHANGELOG.md +0 -2594
  338. package/src/resources/submodules/appium-xcuitest-driver/README.md +0 -55
  339. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo-white.png +0 -0
  340. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo.png +0 -0
  341. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-plus-xctest.png +0 -0
  342. package/src/resources/submodules/appium-xcuitest-driver/docs/contributing.md +0 -45
  343. package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints-wda.md +0 -61
  344. package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints.md +0 -98
  345. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/keynote.png +0 -0
  346. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/on_my_iphone.png +0 -0
  347. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/top_files.png +0 -0
  348. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/attach-to-running-wda.md +0 -43
  349. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/audio-capture.md +0 -78
  350. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/capability-sets.md +0 -169
  351. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/ci-setup.md +0 -47
  352. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/clipboard.md +0 -47
  353. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/elements-lookup-troubleshooting.md +0 -158
  354. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/file-transfer.md +0 -147
  355. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/gestures.md +0 -52
  356. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/hybrid.md +0 -137
  357. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/input-events.md +0 -67
  358. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/install-certificate.md +0 -19
  359. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/multiple-xcode-versions.md +0 -37
  360. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/parallel-tests.md +0 -39
  361. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-prebuilt-wda.md +0 -135
  362. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-preinstalled-wda.md +0 -178
  363. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/touch-id.md +0 -33
  364. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/troubleshooting.md +0 -191
  365. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/tvos.md +0 -114
  366. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-custom-server.md +0 -283
  367. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-slowness.md +0 -231
  368. package/src/resources/submodules/appium-xcuitest-driver/docs/index.md +0 -36
  369. package/src/resources/submodules/appium-xcuitest-driver/docs/installation/index.md +0 -137
  370. package/src/resources/submodules/appium-xcuitest-driver/docs/overview.md +0 -19
  371. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/check-prov-prof.png +0 -0
  372. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/create-new-project.png +0 -0
  373. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/create-single-page.png +0 -0
  374. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/no-prov-prof.png +0 -0
  375. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/project-prov-prof.png +0 -0
  376. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/set-up-bundle.png +0 -0
  377. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/untrusted-dev.png +0 -0
  378. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-bundle-id.png +0 -0
  379. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-config.png +0 -0
  380. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-facebook-fail.png +0 -0
  381. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-facebook-succeed.png +0 -0
  382. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/index.md +0 -51
  383. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-basic-auto.md +0 -49
  384. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-basic-manual.md +0 -40
  385. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-full-manual.md +0 -50
  386. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-generic-manual.md +0 -49
  387. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/real-device-config.md +0 -100
  388. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/assets/images/useXctestrunFile.png +0 -0
  389. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/bidi.md +0 -75
  390. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/capabilities.md +0 -165
  391. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/commands.md +0 -490
  392. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/element-attributes.md +0 -27
  393. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/execute-methods.md +0 -2206
  394. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/ios-predicate.md +0 -196
  395. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/locator-strategies.md +0 -19
  396. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/scripts.md +0 -29
  397. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/security-flags.md +0 -22
  398. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/server-args.md +0 -16
  399. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/settings.md +0 -49
  400. package/src/resources/submodules/appium-xcuitest-driver/test/assets/TestApp-iphonesimulator.app/Default-568h@2x.png +0 -0
  401. package/src/resources/submodules/appium-xcuitest-driver/test/assets/test.png +0 -0
  402. package/src/schema.ts +0 -5
  403. package/src/scripts/simple-index-documentation.ts +0 -93
  404. package/src/scripts/simple-query-documentation.ts +0 -61
  405. package/src/server.ts +0 -40
  406. package/src/session-store.ts +0 -117
  407. package/src/tests/README.md +0 -83
  408. package/src/tests/__mocks__/@appium/support.ts +0 -30
  409. package/src/tests/generate-all-locators.test.ts +0 -178
  410. package/src/tests/screenshot.test.ts +0 -279
  411. package/src/tests/test-setup-wda.ts +0 -255
  412. package/src/tools/README.md +0 -179
  413. package/src/tools/app-management/activate-app.ts +0 -46
  414. package/src/tools/app-management/install-app.ts +0 -54
  415. package/src/tools/app-management/list-apps.ts +0 -87
  416. package/src/tools/app-management/terminate-app.ts +0 -56
  417. package/src/tools/app-management/uninstall-app.ts +0 -56
  418. package/src/tools/context/get-contexts.ts +0 -78
  419. package/src/tools/context/switch-context.ts +0 -106
  420. package/src/tools/documentation/answer-appium.ts +0 -73
  421. package/src/tools/documentation/index.ts +0 -98
  422. package/src/tools/documentation/reasoning-rag.ts +0 -435
  423. package/src/tools/documentation/sentence-transformers-embeddings.ts +0 -144
  424. package/src/tools/documentation/simple-pdf-indexer.ts +0 -508
  425. package/src/tools/documentation/uploads/documents.json +0 -1
  426. package/src/tools/index.ts +0 -159
  427. package/src/tools/interactions/click.ts +0 -50
  428. package/src/tools/interactions/double-tap.ts +0 -99
  429. package/src/tools/interactions/drag-and-drop.ts +0 -238
  430. package/src/tools/interactions/find.ts +0 -61
  431. package/src/tools/interactions/get-page-source.ts +0 -65
  432. package/src/tools/interactions/get-text.ts +0 -50
  433. package/src/tools/interactions/long-press.ts +0 -120
  434. package/src/tools/interactions/screenshot.ts +0 -119
  435. package/src/tools/interactions/set-value.ts +0 -54
  436. package/src/tools/ios/boot-simulator.ts +0 -88
  437. package/src/tools/ios/install-wda.ts +0 -277
  438. package/src/tools/ios/setup-wda.ts +0 -217
  439. package/src/tools/navigations/scroll-to-element.ts +0 -198
  440. package/src/tools/navigations/scroll.ts +0 -113
  441. package/src/tools/navigations/swipe.ts +0 -368
  442. package/src/tools/session/create-session.ts +0 -379
  443. package/src/tools/session/delete-session.ts +0 -56
  444. package/src/tools/session/select-device.ts +0 -326
  445. package/src/tools/session/select-platform.ts +0 -250
  446. package/src/tools/test-generation/generate-tests.ts +0 -48
  447. package/src/tools/test-generation/locators.ts +0 -101
  448. package/src/types/appium-ios-device.d.ts +0 -8
  449. package/src/types/appium-xcuitest-driver.d.ts +0 -5
  450. package/src/ui/mcp-ui-utils.ts +0 -1630
  451. package/tsconfig.json +0 -15
  452. package/tsconfig.tsbuildinfo +0 -1
@@ -1,326 +0,0 @@
1
- /**
2
- * Tool to select a specific device when multiple devices are available
3
- */
4
- import { ADBManager } from '../../devicemanager/adb-manager.js';
5
- import { IOSManager } from '../../devicemanager/ios-manager.js';
6
- import { z } from 'zod';
7
- import log from '../../logger.js';
8
- import {
9
- createUIResource,
10
- createDevicePickerUI,
11
- addUIResourceToResponse,
12
- } from '../../ui/mcp-ui-utils.js';
13
-
14
- // Store selected device globally
15
- let selectedDeviceUdid: string | null = null;
16
- let selectedDeviceType: 'simulator' | 'real' | null = null;
17
- let selectedDeviceInfo: any = null;
18
-
19
- export function getSelectedDevice(): string | null {
20
- return selectedDeviceUdid;
21
- }
22
-
23
- export function getSelectedDeviceType(): 'simulator' | 'real' | null {
24
- return selectedDeviceType;
25
- }
26
-
27
- export function getSelectedDeviceInfo(): any {
28
- return selectedDeviceInfo;
29
- }
30
-
31
- export function clearSelectedDevice(): void {
32
- selectedDeviceUdid = null;
33
- selectedDeviceType = null;
34
- selectedDeviceInfo = null;
35
- }
36
-
37
- /**
38
- * Get and validate Android devices
39
- */
40
- async function getAndroidDevices(): Promise<any[]> {
41
- const adb = await ADBManager.getInstance().initialize();
42
- const devices = await adb.getConnectedDevices();
43
-
44
- if (devices.length === 0) {
45
- throw new Error('No Android devices/emulators found');
46
- }
47
-
48
- return devices;
49
- }
50
-
51
- /**
52
- * Validate and select Android device by UDID
53
- */
54
- function selectAndroidDevice(deviceUdid: string, devices: any[]): void {
55
- const selectedDevice = devices.find((d) => d.udid === deviceUdid);
56
- if (!selectedDevice) {
57
- throw new Error(
58
- `Device with UDID "${deviceUdid}" not found. Available devices: ${devices.map((d) => d.udid).join(', ')}`
59
- );
60
- }
61
-
62
- selectedDeviceUdid = deviceUdid;
63
- log.info(`Device selected: ${deviceUdid}`);
64
- }
65
-
66
- /**
67
- * Format device selection response for Android
68
- */
69
- function formatAndroidSelectionResponse(deviceUdid: string): any {
70
- return {
71
- content: [
72
- {
73
- type: 'text',
74
- text: JSON.stringify(
75
- {
76
- message: `āœ… Device selected: ${deviceUdid}`,
77
- instructions:
78
- 'šŸš€ You can now create a session using the create_session tool with:',
79
- platform: 'android',
80
- capabilities: {
81
- 'appium:udid': deviceUdid,
82
- },
83
- },
84
- null,
85
- 2
86
- ),
87
- },
88
- ],
89
- };
90
- }
91
-
92
- /**
93
- * Format device list response for Android
94
- */
95
- function formatAndroidListResponse(devices: any[]): any {
96
- const deviceList = devices
97
- .map((device, index) => ` ${index + 1}. ${device.udid}`)
98
- .join('\n');
99
-
100
- const textResponse = {
101
- content: [
102
- {
103
- type: 'text',
104
- text: `šŸ“± Available Android devices/emulators (${devices.length}):\n${deviceList}\n\nāš ļø IMPORTANT: Please ask the user which device they want to use.\n\nOnce the user selects a device, call this tool again with the deviceUdid parameter set to their chosen device UDID.`,
105
- },
106
- ],
107
- };
108
-
109
- // Add interactive UI picker
110
- const uiResource = createUIResource(
111
- `ui://appium-mcp/device-picker/android-${Date.now()}`,
112
- createDevicePickerUI(devices, 'android')
113
- );
114
-
115
- return addUIResourceToResponse(textResponse, uiResource);
116
- }
117
-
118
- /**
119
- * Validate iOS device type
120
- */
121
- function validateIOSDeviceType(
122
- iosDeviceType: 'simulator' | 'real' | undefined
123
- ): void {
124
- if (!iosDeviceType) {
125
- throw new Error(
126
- "For iOS platform, iosDeviceType ('simulator' or 'real') is required"
127
- );
128
- }
129
- }
130
-
131
- /**
132
- * Get and validate iOS devices by type
133
- */
134
- async function getIOSDevices(
135
- iosDeviceType: 'simulator' | 'real'
136
- ): Promise<any[]> {
137
- const iosManager = IOSManager.getInstance();
138
- const devices = await iosManager.getDevicesByType(iosDeviceType);
139
-
140
- if (devices.length === 0) {
141
- throw new Error(
142
- `No iOS ${iosDeviceType === 'simulator' ? 'simulators' : 'devices'} found`
143
- );
144
- }
145
-
146
- return devices;
147
- }
148
-
149
- /**
150
- * Validate and select iOS device by UDID
151
- */
152
- function selectIOSDevice(
153
- deviceUdid: string,
154
- devices: any[],
155
- iosDeviceType: 'simulator' | 'real'
156
- ): any {
157
- const selectedDevice = devices.find((d) => d.udid === deviceUdid);
158
- if (!selectedDevice) {
159
- const deviceList = devices.map((d) => `${d.name} (${d.udid})`).join(', ');
160
- throw new Error(
161
- `Device with UDID "${deviceUdid}" not found. Available devices: ${deviceList}`
162
- );
163
- }
164
-
165
- selectedDeviceUdid = deviceUdid;
166
- selectedDeviceType = iosDeviceType;
167
- selectedDeviceInfo = selectedDevice;
168
- log.info(
169
- `iOS ${iosDeviceType} selected: ${selectedDevice.name} (${deviceUdid})`
170
- );
171
-
172
- return selectedDevice;
173
- }
174
-
175
- /**
176
- * Format device selection response for iOS
177
- */
178
- function formatIOSSelectionResponse(
179
- deviceName: string,
180
- deviceUdid: string
181
- ): any {
182
- return {
183
- content: [
184
- {
185
- type: 'text',
186
- text: JSON.stringify(
187
- {
188
- message: `āœ… Device selected: ${deviceName} (${deviceUdid})`,
189
- instructions:
190
- 'šŸš€ You can now call the setup_wda tool to setup WDA on the simulator.',
191
- platform: 'ios',
192
- capabilities: {
193
- 'appium:udid': deviceUdid,
194
- },
195
- },
196
- null,
197
- 2
198
- ),
199
- },
200
- ],
201
- };
202
- }
203
-
204
- /**
205
- * Format device list response for iOS
206
- */
207
- function formatIOSListResponse(
208
- devices: any[],
209
- iosDeviceType: 'simulator' | 'real'
210
- ): any {
211
- const deviceList = devices
212
- .map(
213
- (device, index) =>
214
- ` ${index + 1}. ${device.name} (${device.udid})${device.state ? ` - ${device.state}` : ''}`
215
- )
216
- .join('\n');
217
-
218
- const textResponse = {
219
- content: [
220
- {
221
- type: 'text',
222
- text: `šŸ“± Available iOS ${iosDeviceType === 'simulator' ? 'simulators' : 'devices'} (${devices.length}):\n${deviceList}\n\nāš ļø IMPORTANT: Please ask the user which device they want to use.\n\nOnce the user selects a device, call this tool again with the deviceUdid parameter set to their chosen device UDID.`,
223
- },
224
- ],
225
- };
226
-
227
- // Add interactive UI picker
228
- const uiResource = createUIResource(
229
- `ui://appium-mcp/device-picker/ios-${iosDeviceType}-${Date.now()}`,
230
- createDevicePickerUI(devices, 'ios', iosDeviceType)
231
- );
232
-
233
- return addUIResourceToResponse(textResponse, uiResource);
234
- }
235
-
236
- /**
237
- * Handle Android device selection
238
- */
239
- async function handleAndroidDeviceSelection(deviceUdid?: string): Promise<any> {
240
- const devices = await getAndroidDevices();
241
-
242
- if (deviceUdid) {
243
- selectAndroidDevice(deviceUdid, devices);
244
- return formatAndroidSelectionResponse(deviceUdid);
245
- }
246
-
247
- return formatAndroidListResponse(devices);
248
- }
249
-
250
- /**
251
- * Handle iOS device selection
252
- */
253
- async function handleIOSDeviceSelection(
254
- iosDeviceType: 'simulator' | 'real' | undefined,
255
- deviceUdid?: string
256
- ): Promise<any> {
257
- validateIOSDeviceType(iosDeviceType);
258
-
259
- const devices = await getIOSDevices(iosDeviceType!);
260
-
261
- if (deviceUdid) {
262
- const selectedDevice = selectIOSDevice(deviceUdid, devices, iosDeviceType!);
263
- return formatIOSSelectionResponse(selectedDevice.name, deviceUdid);
264
- }
265
-
266
- return formatIOSListResponse(devices, iosDeviceType!);
267
- }
268
-
269
- export default function selectDevice(server: any): void {
270
- server.addTool({
271
- name: 'select_device',
272
- description: `Select a specific device from available LOCAL devices. For LOCAL Appium servers ONLY.
273
- DO NOT use this tool for REMOTE Appium servers - remoteServerUrl indicates a remote server.
274
- WORKFLOW FOR LOCAL SERVERS:
275
- - Use this tool ONLY when select_platform returns multiple devices
276
- - For Android: Use before calling create_session if multiple devices are found
277
- - For iOS: Use before calling boot_simulator or create_session if multiple simulators/devices are found
278
- - Ask the user which device they want to use from the list provided
279
- WORKFLOW FOR REMOTE SERVERS:
280
- - SKIP this tool entirely
281
- - Device selection should be handled via capabilities in create_session (e.g., appium:deviceName, appium:udid)
282
- - The remote Appium server is already configured for specific device(s)
283
- `,
284
- parameters: z.object({
285
- platform: z
286
- .enum(['ios', 'android'])
287
- .describe(
288
- 'The platform to list devices for (must match previously selected platform)'
289
- ),
290
- iosDeviceType: z
291
- .enum(['simulator', 'real'])
292
- .optional()
293
- .describe(
294
- "For iOS only: Specify whether to use 'simulator' or 'real' device. REQUIRED when platform is 'ios'."
295
- ),
296
- deviceUdid: z
297
- .string()
298
- .optional()
299
- .describe(
300
- 'The UDID of the device selected by the user. If not provided, this tool will list available devices for the user to choose from.'
301
- ),
302
- }),
303
- annotations: {
304
- readOnlyHint: false,
305
- openWorldHint: false,
306
- },
307
- execute: async (args: any, context: any): Promise<any> => {
308
- try {
309
- const { platform, iosDeviceType, deviceUdid } = args;
310
-
311
- if (platform === 'android') {
312
- return await handleAndroidDeviceSelection(deviceUdid);
313
- } else if (platform === 'ios') {
314
- return await handleIOSDeviceSelection(iosDeviceType, deviceUdid);
315
- } else {
316
- throw new Error(
317
- `Invalid platform: ${platform}. Please choose 'android' or 'ios'.`
318
- );
319
- }
320
- } catch (error: any) {
321
- log.error('Error selecting device:', error);
322
- throw new Error(`Failed to select device: ${error.message}`);
323
- }
324
- },
325
- });
326
- }
@@ -1,250 +0,0 @@
1
- /**
2
- * Tool to select mobile platform before creating a session
3
- */
4
- import { ADBManager } from '../../devicemanager/adb-manager.js';
5
- import { IOSManager } from '../../devicemanager/ios-manager.js';
6
- import { z } from 'zod';
7
- import log from '../../logger.js';
8
-
9
- /**
10
- * Get and validate Android devices
11
- */
12
- async function getAndroidDevices(): Promise<any[]> {
13
- const adb = await ADBManager.getInstance().initialize();
14
- const devices = await adb.getConnectedDevices();
15
-
16
- if (devices.length === 0) {
17
- throw new Error('No Android devices/emulators found');
18
- }
19
-
20
- return devices;
21
- }
22
-
23
- /**
24
- * Format multiple Android devices response
25
- */
26
- function formatMultipleAndroidDevicesResponse(devices: any[]): any {
27
- const deviceList = devices
28
- .map((device, index) => ` ${index + 1}. ${device.udid}`)
29
- .join('\n');
30
-
31
- return {
32
- content: [
33
- {
34
- type: 'text',
35
- text: `āœ… Android platform selected\n\nāš ļø Multiple Android devices/emulators found (${devices.length}):\n${deviceList}\n\n🚨 IMPORTANT: You MUST use the select_device tool next to ask the user which device they want to use.\n\nDO NOT proceed to create_session until the user has selected a specific device using the select_device tool.`,
36
- },
37
- ],
38
- };
39
- }
40
-
41
- /**
42
- * Format single Android device response
43
- */
44
- function formatSingleAndroidDeviceResponse(deviceUdid: string): any {
45
- const platformInfo = `Android platform selected (Found device: ${deviceUdid})`;
46
- const nextSteps =
47
- `Found 1 Android device: ${deviceUdid}\n\n` +
48
- "You can now create an Android session using the create_session tool with platform='android'. Make sure you have:\n" +
49
- '• Android SDK installed\n' +
50
- '• Android device connected or emulator running\n' +
51
- '• USB debugging enabled (for real devices)';
52
-
53
- return {
54
- content: [
55
- {
56
- type: 'text',
57
- text: `āœ… ${platformInfo}\n\nšŸ“‹ Next Steps:\n${nextSteps}\n\nšŸš€ Ready to create a session? Use the create_session tool with platform='android'`,
58
- },
59
- ],
60
- };
61
- }
62
-
63
- /**
64
- * Validate macOS for iOS testing
65
- */
66
- function validateMacOSForIOS(): void {
67
- const iosManager = IOSManager.getInstance();
68
- if (!iosManager.isMac()) {
69
- throw new Error('iOS testing is only available on macOS');
70
- }
71
- }
72
-
73
- /**
74
- * Format iOS device type selection prompt
75
- */
76
- function formatIOSDeviceTypePrompt(): any {
77
- return {
78
- content: [
79
- {
80
- type: 'text',
81
- text: `āœ… iOS platform selected\n\nšŸ“± Please specify the device type:\n\nāš ļø IMPORTANT: You MUST call select_platform again with the iosDeviceType parameter.\n\nOptions:\n1. 'simulator' - Use iOS Simulator\n2. 'real' - Use real iOS device\n\nšŸš€ Call select_platform with:\n• platform='ios'\n• iosDeviceType='simulator' OR iosDeviceType='real'`,
82
- },
83
- ],
84
- };
85
- }
86
-
87
- /**
88
- * Get and validate iOS devices by type
89
- */
90
- async function getIOSDevices(
91
- iosDeviceType: 'simulator' | 'real'
92
- ): Promise<any[]> {
93
- const iosManager = IOSManager.getInstance();
94
- const devices = await iosManager.getDevicesByType(iosDeviceType);
95
-
96
- if (devices.length === 0) {
97
- const deviceTypeText =
98
- iosDeviceType === 'simulator' ? 'simulators' : 'real devices';
99
- const helpText =
100
- iosDeviceType === 'simulator'
101
- ? 'Please start an iOS simulator using Xcode or use "xcrun simctl boot <SIMULATOR_UDID>"'
102
- : 'Please connect an iOS device via USB and ensure it is trusted';
103
- throw new Error(`No iOS ${deviceTypeText} found. ${helpText}`);
104
- }
105
-
106
- return devices;
107
- }
108
-
109
- /**
110
- * Format multiple iOS devices response
111
- */
112
- function formatMultipleIOSDevicesResponse(
113
- devices: any[],
114
- iosDeviceType: 'simulator' | 'real'
115
- ): any {
116
- const deviceList = devices
117
- .map(
118
- (device, index) =>
119
- ` ${index + 1}. ${device.name} (${device.udid})${device.state ? ` - ${device.state}` : ''}`
120
- )
121
- .join('\n');
122
- const deviceTypeText =
123
- iosDeviceType === 'simulator' ? 'simulators' : 'devices';
124
-
125
- return {
126
- content: [
127
- {
128
- type: 'text',
129
- text: `āœ… iOS platform selected (${iosDeviceType})\n\nāš ļø Multiple iOS ${deviceTypeText} found (${devices.length}):\n${deviceList}\n\n🚨 IMPORTANT: You MUST use the select_device tool next to ask the user which device they want to use.\n\nDO NOT proceed to create_session until the user has selected a specific device using the select_device tool.`,
130
- },
131
- ],
132
- };
133
- }
134
-
135
- /**
136
- * Format single iOS device response
137
- */
138
- function formatSingleIOSDeviceResponse(
139
- device: any,
140
- iosDeviceType: 'simulator' | 'real'
141
- ): any {
142
- const platformInfo = `iOS ${iosDeviceType} selected (Found device: ${device.name} - ${device.udid})`;
143
- const nextSteps =
144
- `Found 1 iOS ${iosDeviceType}: ${device.name} (${device.udid})\n\n` +
145
- "You can now create an iOS session using the create_session tool with platform='ios'. Make sure you have:\n" +
146
- '• Xcode installed (macOS only)\n' +
147
- (iosDeviceType === 'simulator'
148
- ? '• iOS simulator running\n'
149
- : '• iOS device connected via USB\n• Developer certificates configured\n• Device trusted on your Mac\n');
150
-
151
- return {
152
- content: [
153
- {
154
- type: 'text',
155
- text: `āœ… ${platformInfo}\n\nšŸ“‹ Next Steps:\n${nextSteps}\n\nšŸš€ Ready to create a session? Use the create_session tool with platform='ios'`,
156
- },
157
- ],
158
- };
159
- }
160
-
161
- /**
162
- * Handle Android platform selection
163
- */
164
- async function handleAndroidPlatformSelection(): Promise<any> {
165
- const devices = await getAndroidDevices();
166
-
167
- if (devices.length > 1) {
168
- return formatMultipleAndroidDevicesResponse(devices);
169
- }
170
-
171
- return formatSingleAndroidDeviceResponse(devices[0].udid);
172
- }
173
-
174
- /**
175
- * Handle iOS platform selection
176
- */
177
- async function handleIOSPlatformSelection(
178
- iosDeviceType?: 'simulator' | 'real'
179
- ): Promise<any> {
180
- validateMacOSForIOS();
181
-
182
- if (!iosDeviceType) {
183
- return formatIOSDeviceTypePrompt();
184
- }
185
-
186
- const devices = await getIOSDevices(iosDeviceType);
187
-
188
- if (devices.length > 1) {
189
- return formatMultipleIOSDevicesResponse(devices, iosDeviceType);
190
- }
191
-
192
- return formatSingleIOSDeviceResponse(devices[0], iosDeviceType);
193
- }
194
-
195
- export default function selectPlatform(server: any): void {
196
- server.addTool({
197
- name: 'select_platform',
198
- description: `Select the mobile platform for LOCAL Appium servers ONLY.
199
- DO NOT use this tool if the user mentions a REMOTE Appium server URL (e.g., http://localhost:4723, http://192.168.1.100:4723, or any other server address).
200
- WORKFLOW FOR LOCAL SERVERS:
201
- 1. First, ASK THE USER which mobile platform they want to use (Android or iOS)
202
- 2. You MUST explicitly prompt the user to choose between Android or iOS
203
- 3. DO NOT assume or default to any platform
204
- 4. After platform selection, available devices will be listed
205
- 5. If multiple devices are available, use select_device to let the user choose
206
- 6. After device selection, proceed to create_session
207
- WORKFLOW FOR REMOTE SERVERS:
208
- If user provides a remote server URL, SKIP this tool entirely. Instead, infer the platform and device type from the user's request (e.g., 'ios xcuitest driver with iphone 17 simulator' means platform='ios') and call create_session directly with the remoteServerUrl parameter.
209
- `,
210
- parameters: z.object({
211
- platform: z
212
- .enum(['ios', 'android'])
213
- .describe(
214
- "REQUIRED: The platform chosen by the user - 'android' for Android devices/emulators or 'ios' for iOS devices/simulators. This must be based on the user's explicit choice, NOT a default assumption."
215
- ),
216
- iosDeviceType: z
217
- .enum(['simulator', 'real'])
218
- .optional()
219
- .describe(
220
- "For iOS only: Specify whether to use 'simulator' (iOS Simulator on macOS) or 'real' (physical iOS device). REQUIRED when platform is 'ios'."
221
- ),
222
- }),
223
- annotations: {
224
- readOnlyHint: false,
225
- openWorldHint: false,
226
- },
227
- execute: async (args: any, context: any): Promise<any> => {
228
- try {
229
- const { platform, iosDeviceType } = args;
230
-
231
- if (platform === 'android') {
232
- log.info('Platform selected: ANDROID');
233
- return await handleAndroidPlatformSelection();
234
- } else if (platform === 'ios') {
235
- log.info('Platform selected: IOS');
236
- return await handleIOSPlatformSelection(iosDeviceType);
237
- } else {
238
- throw new Error(
239
- `Invalid platform: ${platform}. Please choose 'android' or 'ios'.`
240
- );
241
- }
242
- } catch (error: any) {
243
- log.error(
244
- `[select_platform] ${error?.stack || error?.message || String(error)}`
245
- );
246
- throw new Error(`Failed to select platform: ${error.message}`);
247
- }
248
- },
249
- });
250
- }
@@ -1,48 +0,0 @@
1
- import { FastMCP } from 'fastmcp';
2
- import { z } from 'zod';
3
-
4
- export default function generateTest(server: FastMCP): void {
5
- const generateTestSchema = z.object({
6
- steps: z.array(z.string()).describe('The steps of the test'),
7
- });
8
-
9
- const instructions = (params: { steps: string[] }) =>
10
- [
11
- `## Instructions`,
12
- `- You are an Appium test generator.`,
13
- `- You are given a scenario and you need to generate a appium test for it.`,
14
- `- Request user to select the platform first using select_platform tool and create a session`,
15
- `- Use generate_locators tool to fetch all interactable elements from the current screen and use it to generate the tests`,
16
- `- Element can only be clicked only if it is clickable.`,
17
- `- Text can entered in the element only if it is focusable`,
18
- `- If any interaction on element is failed, retry again with a differnt possible locator in the hierrarchy`,
19
- `- Interact with the app using the tools provided and generate the test`,
20
- '- DO NOT generate test code based on the scenario alone. DO run steps one by one using the tools provided instead.',
21
- '- Only after all steps are completed, emit a Appium test based on message history',
22
- '- Save generated test file in the tests directory',
23
- `- Use generate://code-with-locators resource as reference for code generation`,
24
- `- Always call find_element_tool to retrieve the element UUID before interacting with the element`,
25
- `Steps:`,
26
- ...params.steps.map((step, index) => `- ${index + 1}. ${step}`),
27
- ].join('\n');
28
-
29
- server.addTool({
30
- name: 'appium_generate_tests',
31
- description: 'Generate tests for a given mobile app',
32
- parameters: generateTestSchema,
33
- annotations: {
34
- readOnlyHint: false,
35
- openWorldHint: false,
36
- },
37
- execute: async (args: any, context: any): Promise<any> => ({
38
- content: [
39
- {
40
- type: 'text',
41
- text: instructions({
42
- steps: args.steps,
43
- }),
44
- },
45
- ],
46
- }),
47
- });
48
- }