mobile-debug-mcp 0.33.0 → 0.35.0

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 (448) hide show
  1. package/.agents/skills/mcp-builder/SKILL.md +44 -64
  2. package/.agents/skills/mcp-builder/references/build-flags.md +44 -43
  3. package/.agents/skills/mcp-builder/references/diagnostics-schema.md +4 -1
  4. package/.agents/skills/mcp-builder/references/toolchain-details.md +49 -62
  5. package/.agents/skills/spec-review/references/spec-review-checklist.md +7 -0
  6. package/.agents/skills/test-authoring/SKILL.md +7 -6
  7. package/.agents/skills/test-authoring/references/repo-test-layout.md +3 -1
  8. package/.agents/skills/test-authoring/references/test-authoring-workflow.md +16 -7
  9. package/.agents/skills/test-authoring/references/test-quality-checklist.md +2 -1
  10. package/.github/copilot-instructions.md +14 -36
  11. package/.github/workflows/ci.yml +23 -2
  12. package/AGENTS.md +12 -3
  13. package/CONTRIBUTING.md +79 -0
  14. package/README.md +158 -124
  15. package/agent-plugin/.claude-plugin/plugin.json +2 -2
  16. package/agent-plugin/.codex-plugin/plugin.json +1 -1
  17. package/agent-plugin/.cursor-plugin/plugin.json +2 -2
  18. package/agent-plugin/.mcp.json +1 -1
  19. package/agent-plugin/README.md +20 -6
  20. package/agent-plugin/mcp.json +1 -1
  21. package/agent-plugin/plugin.json +1 -1
  22. package/agent-plugin/skills/mobile-debug-mcp/SKILL.md +113 -4
  23. package/dist/contracts/execution-controls.js +24 -0
  24. package/dist/contracts/selector.js +8 -0
  25. package/dist/contracts/target.js +15 -0
  26. package/dist/contracts/ui.js +1 -0
  27. package/dist/debugger/android.js +79 -0
  28. package/dist/debugger/diagnostics.js +54 -0
  29. package/dist/debugger/guard.js +30 -0
  30. package/dist/debugger/protocol.js +33 -0
  31. package/dist/debugger/sessions.js +304 -0
  32. package/dist/debugger/worker.js +176 -0
  33. package/dist/interact/adjustment/adjustment-context.js +41 -0
  34. package/dist/interact/adjustment/adjustment-gestures.js +55 -0
  35. package/dist/interact/adjustment/adjustment-plan.js +18 -0
  36. package/dist/interact/adjustment/adjustment-resolution.js +127 -0
  37. package/dist/interact/adjustment/adjustment-result.js +19 -0
  38. package/dist/interact/adjustment/adjustment-semantic.js +64 -0
  39. package/dist/interact/adjustment/adjustment-verification.js +35 -0
  40. package/dist/interact/adjustment/adjustment.js +52 -0
  41. package/dist/interact/adjustment/control-geometry.js +87 -0
  42. package/dist/interact/adjustment/control-values.js +136 -0
  43. package/dist/interact/adjustment/slider-labels.js +84 -0
  44. package/dist/interact/assertions/screen-assertion.js +37 -0
  45. package/dist/interact/assertions/state-assertion-context.js +35 -0
  46. package/dist/interact/assertions/state-assertion.js +76 -0
  47. package/dist/interact/assertions/state-comparison.js +141 -0
  48. package/dist/interact/assertions/visibility-assertion.js +34 -0
  49. package/dist/interact/conditional-action.js +12 -7
  50. package/dist/interact/index.js +65 -3074
  51. package/dist/interact/input-service.js +1 -0
  52. package/dist/interact/interaction-trace.js +21 -0
  53. package/dist/interact/model.js +1 -0
  54. package/dist/interact/observation.js +1 -0
  55. package/dist/interact/targeting/candidate-ancestor.js +58 -0
  56. package/dist/interact/targeting/candidate-result.js +23 -0
  57. package/dist/interact/targeting/candidate-scoring.js +50 -0
  58. package/dist/interact/targeting/element-helpers.js +216 -0
  59. package/dist/interact/targeting/find-element.js +65 -0
  60. package/dist/interact/targeting/nearby-control.js +56 -0
  61. package/dist/interact/targeting/resolved-elements.js +21 -0
  62. package/dist/interact/targeting/tap-target.js +17 -0
  63. package/dist/interact/targeting/target-scope.js +104 -0
  64. package/dist/interact/waits/legacy-log-wait.js +38 -0
  65. package/dist/interact/waits/legacy-wait-observations.js +103 -0
  66. package/dist/interact/waits/legacy-wait-state.js +34 -0
  67. package/dist/interact/waits/legacy-wait.js +48 -0
  68. package/dist/interact/waits/screen-wait.js +49 -0
  69. package/dist/interact/waits/ui-change-helpers.js +157 -0
  70. package/dist/interact/waits/ui-change-state.js +18 -0
  71. package/dist/interact/waits/ui-change-wait.js +77 -0
  72. package/dist/interact/waits/ui-wait-condition.js +56 -0
  73. package/dist/interact/waits/ui-wait-state.js +38 -0
  74. package/dist/interact/waits/ui-wait.js +106 -0
  75. package/dist/manage/android.js +55 -51
  76. package/dist/manage/index.js +38 -75
  77. package/dist/manage/ios/build-types.js +1 -0
  78. package/dist/manage/ios/build.js +210 -0
  79. package/dist/manage/ios/project-discovery.js +29 -0
  80. package/dist/manage/ios/scheme.js +18 -0
  81. package/dist/manage/ios.js +42 -256
  82. package/dist/observe/android/context.js +1 -0
  83. package/dist/observe/android/current-screen.js +55 -0
  84. package/dist/observe/android/fingerprint.js +13 -0
  85. package/dist/observe/android/log-stream.js +132 -0
  86. package/dist/observe/android/logs.js +107 -0
  87. package/dist/observe/android/screenshot.js +70 -0
  88. package/dist/observe/android/ui-tree.js +107 -0
  89. package/dist/observe/android.js +16 -520
  90. package/dist/observe/evidence.js +122 -76
  91. package/dist/observe/index.js +16 -263
  92. package/dist/observe/ios/context.js +16 -0
  93. package/dist/observe/ios/fingerprint.js +12 -0
  94. package/dist/observe/ios/log-stream.js +105 -0
  95. package/dist/observe/ios/logs.js +168 -0
  96. package/dist/observe/ios/screenshot.js +22 -0
  97. package/dist/observe/ios/ui-elements.js +241 -0
  98. package/dist/observe/ios/ui-tree.js +137 -0
  99. package/dist/observe/ios.js +17 -715
  100. package/dist/observe/logs/model.js +1 -0
  101. package/dist/{network → observe/network}/index.js +2 -2
  102. package/dist/observe/readiness-service.js +13 -2
  103. package/dist/observe/readiness.js +44 -18
  104. package/dist/observe/screenshot-encoding.js +41 -0
  105. package/dist/observe/snapshot-collection.js +79 -0
  106. package/dist/observe/snapshot-logs.js +30 -0
  107. package/dist/observe/snapshot-metadata.js +43 -31
  108. package/dist/observe/snapshot-semantic.js +115 -0
  109. package/dist/observe/system-trace-android.js +135 -0
  110. package/dist/observe/system-trace.js +294 -0
  111. package/dist/runtime/action-results.js +270 -0
  112. package/dist/runtime/clock.js +4 -0
  113. package/dist/server/common.js +1 -256
  114. package/dist/server/definitions/assert.js +162 -0
  115. package/dist/server/definitions/diagnostic.js +118 -0
  116. package/dist/server/definitions/input.js +274 -0
  117. package/dist/server/definitions/manage.js +194 -0
  118. package/dist/server/definitions/observe.js +149 -0
  119. package/dist/server/definitions/target.js +138 -0
  120. package/dist/server/definitions/wait.js +105 -0
  121. package/dist/server/handlers/action-execution.js +163 -0
  122. package/dist/server/handlers/correlation.js +23 -0
  123. package/dist/server/handlers/debugger-handlers.js +48 -0
  124. package/dist/server/handlers/debugger-response.js +9 -0
  125. package/dist/server/handlers/diagnostic.js +69 -0
  126. package/dist/server/handlers/handler-types.js +1 -0
  127. package/dist/server/handlers/input.js +154 -0
  128. package/dist/server/handlers/interact.js +113 -0
  129. package/dist/server/handlers/journey-assertions.js +35 -0
  130. package/dist/server/handlers/journey.js +147 -0
  131. package/dist/server/handlers/manage.js +119 -0
  132. package/dist/server/handlers/observe.js +95 -0
  133. package/dist/server/handlers/payload.js +4 -0
  134. package/dist/server/handlers/tool-handlers.js +160 -0
  135. package/dist/server/schemas/condition-schema.js +2 -0
  136. package/dist/server/schemas/debugger-schema.js +47 -0
  137. package/dist/server/{journey-schema.js → schemas/journey-schema.js} +8 -22
  138. package/dist/server/schemas/system-trace-schema.js +17 -0
  139. package/dist/server/tool-definitions.js +62 -1134
  140. package/dist/server-core.js +4 -4
  141. package/dist/server.js +34 -0
  142. package/dist/system/android-status.js +101 -0
  143. package/dist/system/android.js +37 -27
  144. package/dist/system/index.js +13 -438
  145. package/dist/system/ios-status.js +132 -0
  146. package/dist/system/ios.js +11 -8
  147. package/dist/system/model.js +1 -0
  148. package/dist/system/probes.js +105 -0
  149. package/dist/system/status-summary.js +43 -0
  150. package/dist/system/unsupported-status.js +52 -0
  151. package/dist/utils/android/commands.js +89 -0
  152. package/dist/utils/android/gradle.js +139 -0
  153. package/dist/utils/android/logs.js +103 -0
  154. package/dist/utils/android/ui-tree.js +233 -0
  155. package/dist/utils/android/utils.js +6 -564
  156. package/dist/utils/cli/idb/idb-helper.js +4 -6
  157. package/dist/utils/cli/idb/install-idb.js +13 -9
  158. package/dist/utils/cli/ios/preflight-ios.js +42 -38
  159. package/dist/utils/exec.js +2 -0
  160. package/dist/utils/ios/utils.js +45 -46
  161. package/dist/utils/java.js +75 -57
  162. package/dist/utils/operation-budget.js +2 -0
  163. package/dist/utils/resolve-device.js +6 -2
  164. package/dist/utils/ui/index.js +26 -26
  165. package/docs/CHANGELOG.md +48 -0
  166. package/docs/README.md +38 -0
  167. package/docs/benchmarks/README.md +18 -0
  168. package/docs/benchmarks/interaction-latency/README.md +14 -0
  169. package/docs/benchmarks/interaction-latency/final.md +4 -1
  170. package/docs/benchmarks/interaction-latency/ios-validation.md +2 -0
  171. package/docs/benchmarks/ui-tree-performance/README.md +24 -16
  172. package/docs/benchmarks/ui-tree-performance/comparison.md +11 -10
  173. package/docs/code-structure.md +118 -0
  174. package/docs/specs/001-state-verification/spec.md +16 -14
  175. package/docs/specs/002-richer-element-identity/spec.md +12 -10
  176. package/docs/specs/003-wait-and-synchronization-reliability/spec.md +12 -10
  177. package/docs/specs/004-action-verification-routing/spec.md +3 -3
  178. package/docs/specs/005-unified-action-execution-and-verification-model/spec.md +2 -0
  179. package/docs/specs/006-runtime-action-instrumentation-and-binding-layer/spec.md +2 -0
  180. package/docs/specs/007-actionability-resolution-and-executable-target-selection/spec.md +3 -1
  181. package/docs/specs/008-adjustable-control-support-and-semantic-value-manipulation/spec.md +3 -4
  182. package/docs/specs/009-semantic-control-modeling-for-custom-and-composite-controls/spec.md +2 -0
  183. package/docs/specs/010-verification-stabilization-and-temporal-convergence/spec.md +2 -2
  184. package/docs/specs/011-recovery-and-replanning-for-failed-or-ambiguous-interaction-flows/spec.md +2 -2
  185. package/docs/specs/011.1-recovery-contract-types-and-runtime-wiring-spec/spec.md +2 -0
  186. package/docs/specs/012-action-trace-and-xecution-observability/spec.md +2 -3
  187. package/docs/specs/013-wait-and-synchronization-reliability/spec.md +19 -19
  188. package/docs/specs/014-actionability-resolution/spec.md +20 -18
  189. package/docs/specs/015-adjustable-control-support/spec.md +17 -15
  190. package/docs/specs/016-environment-tools/spec.md +20 -20
  191. package/docs/specs/018-interaction-latency-and-batched-journeys/spec.md +2 -0
  192. package/docs/specs/019-ui-tree-observation-performance/spec.md +3 -1
  193. package/docs/specs/020-conditional-actions/intent.md +5 -3
  194. package/docs/specs/020-conditional-actions/plan.md +8 -9
  195. package/docs/specs/020-conditional-actions/spec.md +4 -2
  196. package/docs/specs/021-app-readiness-signals/intent.md +4 -2
  197. package/docs/specs/021-app-readiness-signals/plan.md +7 -6
  198. package/docs/specs/021-app-readiness-signals/spec.md +3 -1
  199. package/docs/specs/022-correlated-evidence/intent.md +4 -4
  200. package/docs/specs/022-correlated-evidence/plan.md +10 -11
  201. package/docs/specs/022-correlated-evidence/spec.md +3 -1
  202. package/docs/specs/023-android-system-traces/device-evidence.json +38 -0
  203. package/docs/specs/023-android-system-traces/emulator-recheck.json +38 -0
  204. package/docs/specs/023-android-system-traces/intent.md +41 -0
  205. package/docs/specs/023-android-system-traces/plan.md +115 -0
  206. package/docs/specs/023-android-system-traces/spec.md +122 -0
  207. package/docs/specs/024-android-heap-dump-capture/intent.md +41 -0
  208. package/docs/specs/025-android-runtime-debugger/intent.md +41 -0
  209. package/docs/specs/025-android-runtime-debugger/plan.md +106 -0
  210. package/docs/specs/025-android-runtime-debugger/spec.md +183 -0
  211. package/docs/specs/026-code-structure-and-quality-gates/health-plan.md +88 -0
  212. package/docs/specs/026-code-structure-and-quality-gates/intent.md +47 -0
  213. package/docs/specs/026-code-structure-and-quality-gates/plan.md +191 -0
  214. package/docs/specs/026-code-structure-and-quality-gates/spec.md +138 -0
  215. package/docs/specs/026-code-structure-and-quality-gates/verification-final.json +200 -0
  216. package/docs/specs/026-code-structure-and-quality-gates/verification-thin-facade.json +154 -0
  217. package/docs/specs/026-code-structure-and-quality-gates/verification.json +136 -0
  218. package/docs/specs/027-debugger-failure-diagnostics/intent.md +43 -0
  219. package/docs/specs/027-debugger-failure-diagnostics/plan.md +86 -0
  220. package/docs/specs/027-debugger-failure-diagnostics/spec.md +133 -0
  221. package/docs/specs/028-compact-debugger-responses/intent.md +41 -0
  222. package/docs/specs/028-compact-debugger-responses/plan.md +112 -0
  223. package/docs/specs/028-compact-debugger-responses/spec.md +108 -0
  224. package/docs/specs/029-kotlin-locals-validation/report.md +119 -0
  225. package/docs/specs/030-android-coroutine-validation/evidence.json +475 -0
  226. package/docs/specs/030-android-coroutine-validation/intent.md +47 -0
  227. package/docs/specs/030-android-coroutine-validation/plan.md +147 -0
  228. package/docs/specs/030-android-coroutine-validation/report.md +240 -0
  229. package/docs/specs/030-android-coroutine-validation/spec.md +107 -0
  230. package/docs/tools/TOOLS.md +31 -16
  231. package/docs/tools/{evidence.md → correlated-evidence.md} +14 -3
  232. package/docs/tools/debugger.md +180 -0
  233. package/docs/tools/interact.md +42 -20
  234. package/docs/tools/manage.md +25 -44
  235. package/docs/tools/observe.md +64 -25
  236. package/docs/tools/system-traces.md +134 -0
  237. package/docs/tools/system.md +12 -5
  238. package/package.json +11 -8
  239. package/scripts/architecture-graph.mjs +69 -0
  240. package/scripts/check-architecture.mjs +47 -0
  241. package/scripts/code-quality-baseline.json +1 -0
  242. package/scripts/code-quality.mjs +161 -0
  243. package/src/contracts/execution-controls.ts +26 -0
  244. package/src/contracts/selector.ts +17 -0
  245. package/src/contracts/target.ts +19 -0
  246. package/src/contracts/ui.ts +94 -0
  247. package/src/debugger/android.ts +66 -0
  248. package/src/debugger/diagnostics.ts +43 -0
  249. package/src/debugger/guard.ts +31 -0
  250. package/src/debugger/java/DebuggerWorker.java +166 -0
  251. package/src/debugger/protocol.ts +37 -0
  252. package/src/debugger/sessions.ts +327 -0
  253. package/src/debugger/worker.ts +135 -0
  254. package/src/interact/adjustment/adjustment-context.ts +83 -0
  255. package/src/interact/adjustment/adjustment-gestures.ts +48 -0
  256. package/src/interact/adjustment/adjustment-plan.ts +23 -0
  257. package/src/interact/adjustment/adjustment-resolution.ts +104 -0
  258. package/src/interact/adjustment/adjustment-result.ts +34 -0
  259. package/src/interact/adjustment/adjustment-semantic.ts +53 -0
  260. package/src/interact/adjustment/adjustment-verification.ts +60 -0
  261. package/src/interact/adjustment/adjustment.ts +49 -0
  262. package/src/interact/adjustment/control-geometry.ts +120 -0
  263. package/src/interact/adjustment/control-values.ts +141 -0
  264. package/src/interact/adjustment/slider-labels.ts +84 -0
  265. package/src/interact/assertions/screen-assertion.ts +39 -0
  266. package/src/interact/assertions/state-assertion-context.ts +48 -0
  267. package/src/interact/assertions/state-assertion.ts +64 -0
  268. package/src/interact/assertions/state-comparison.ts +168 -0
  269. package/src/interact/assertions/visibility-assertion.ts +41 -0
  270. package/src/interact/conditional-action.ts +18 -12
  271. package/src/interact/index.ts +76 -3491
  272. package/src/interact/input-service.ts +11 -0
  273. package/src/interact/interaction-trace.ts +36 -0
  274. package/src/interact/model.ts +109 -0
  275. package/src/interact/observation.ts +7 -0
  276. package/src/interact/targeting/candidate-ancestor.ts +49 -0
  277. package/src/interact/targeting/candidate-result.ts +24 -0
  278. package/src/interact/targeting/candidate-scoring.ts +42 -0
  279. package/src/interact/targeting/element-helpers.ts +243 -0
  280. package/src/interact/targeting/find-element.ts +47 -0
  281. package/src/interact/targeting/nearby-control.ts +46 -0
  282. package/src/interact/targeting/resolved-elements.ts +20 -0
  283. package/src/interact/targeting/tap-target.ts +22 -0
  284. package/src/interact/targeting/target-scope.ts +121 -0
  285. package/src/interact/waits/legacy-log-wait.ts +30 -0
  286. package/src/interact/waits/legacy-wait-observations.ts +55 -0
  287. package/src/interact/waits/legacy-wait-state.ts +48 -0
  288. package/src/interact/waits/legacy-wait.ts +34 -0
  289. package/src/interact/waits/screen-wait.ts +37 -0
  290. package/src/interact/waits/ui-change-helpers.ts +184 -0
  291. package/src/interact/waits/ui-change-state.ts +26 -0
  292. package/src/interact/waits/ui-change-wait.ts +59 -0
  293. package/src/interact/waits/ui-wait-condition.ts +52 -0
  294. package/src/interact/waits/ui-wait-state.ts +55 -0
  295. package/src/interact/waits/ui-wait.ts +84 -0
  296. package/src/manage/android.ts +56 -50
  297. package/src/manage/index.ts +63 -93
  298. package/src/manage/ios/build-types.ts +14 -0
  299. package/src/manage/ios/build.ts +230 -0
  300. package/src/manage/ios/project-discovery.ts +26 -0
  301. package/src/manage/ios/scheme.ts +16 -0
  302. package/src/manage/ios.ts +65 -298
  303. package/src/observe/android/context.ts +1 -0
  304. package/src/observe/android/current-screen.ts +63 -0
  305. package/src/observe/android/fingerprint.ts +13 -0
  306. package/src/observe/android/log-stream.ts +127 -0
  307. package/src/observe/android/logs.ts +110 -0
  308. package/src/observe/android/screenshot.ts +79 -0
  309. package/src/observe/android/ui-tree.ts +113 -0
  310. package/src/observe/android.ts +17 -531
  311. package/src/observe/evidence.ts +130 -71
  312. package/src/observe/index.ts +24 -286
  313. package/src/observe/ios/context.ts +22 -0
  314. package/src/observe/ios/fingerprint.ts +12 -0
  315. package/src/observe/ios/log-stream.ts +103 -0
  316. package/src/observe/ios/logs.ts +179 -0
  317. package/src/observe/ios/screenshot.ts +26 -0
  318. package/src/observe/ios/ui-elements.ts +266 -0
  319. package/src/observe/ios/ui-tree.ts +143 -0
  320. package/src/observe/ios.ts +18 -749
  321. package/src/observe/logs/model.ts +11 -0
  322. package/src/{network → observe/network}/index.ts +2 -2
  323. package/src/observe/readiness-service.ts +10 -3
  324. package/src/observe/readiness.ts +49 -22
  325. package/src/observe/screenshot-encoding.ts +32 -0
  326. package/src/observe/snapshot-collection.ts +69 -0
  327. package/src/observe/snapshot-logs.ts +26 -0
  328. package/src/observe/snapshot-metadata.ts +51 -31
  329. package/src/observe/snapshot-semantic.ts +153 -0
  330. package/src/observe/system-trace-android.ts +133 -0
  331. package/src/observe/system-trace.ts +227 -0
  332. package/src/runtime/action-results.ts +376 -0
  333. package/src/runtime/clock.ts +9 -0
  334. package/src/server/common.ts +9 -359
  335. package/src/server/definitions/assert.ts +164 -0
  336. package/src/server/definitions/diagnostic.ts +120 -0
  337. package/src/server/definitions/input.ts +276 -0
  338. package/src/server/definitions/manage.ts +196 -0
  339. package/src/server/definitions/observe.ts +151 -0
  340. package/src/server/definitions/target.ts +140 -0
  341. package/src/server/definitions/wait.ts +107 -0
  342. package/src/server/handlers/action-execution.ts +164 -0
  343. package/src/server/handlers/correlation.ts +20 -0
  344. package/src/server/handlers/debugger-handlers.ts +39 -0
  345. package/src/server/handlers/debugger-response.ts +7 -0
  346. package/src/server/handlers/diagnostic.ts +79 -0
  347. package/src/server/handlers/handler-types.ts +7 -0
  348. package/src/server/handlers/input.ts +173 -0
  349. package/src/server/handlers/interact.ts +135 -0
  350. package/src/server/handlers/journey-assertions.ts +39 -0
  351. package/src/server/handlers/journey.ts +132 -0
  352. package/src/server/handlers/manage.ts +141 -0
  353. package/src/server/handlers/observe.ts +116 -0
  354. package/src/server/handlers/payload.ts +36 -0
  355. package/src/server/handlers/tool-handlers.ts +159 -0
  356. package/src/server/schemas/condition-schema.ts +2 -0
  357. package/src/server/schemas/debugger-schema.ts +43 -0
  358. package/src/server/{journey-schema.ts → schemas/journey-schema.ts} +8 -22
  359. package/src/server/schemas/system-trace-schema.ts +17 -0
  360. package/src/server/tool-definitions.ts +69 -1140
  361. package/src/server-core.ts +4 -4
  362. package/src/server.ts +25 -1
  363. package/src/system/android-status.ts +124 -0
  364. package/src/system/android.ts +33 -21
  365. package/src/system/index.ts +21 -523
  366. package/src/system/ios-status.ts +147 -0
  367. package/src/system/ios.ts +14 -10
  368. package/src/system/model.ts +41 -0
  369. package/src/system/probes.ts +114 -0
  370. package/src/system/status-summary.ts +47 -0
  371. package/src/system/unsupported-status.ts +55 -0
  372. package/src/types.ts +16 -106
  373. package/src/utils/android/commands.ts +81 -0
  374. package/src/utils/android/gradle.ts +132 -0
  375. package/src/utils/android/logs.ts +103 -0
  376. package/src/utils/android/ui-tree.ts +239 -0
  377. package/src/utils/android/utils.ts +16 -556
  378. package/src/utils/cli/idb/check-idb.ts +4 -4
  379. package/src/utils/cli/idb/idb-helper.ts +6 -8
  380. package/src/utils/cli/idb/install-idb.ts +15 -9
  381. package/src/utils/cli/ios/preflight-ios.ts +39 -31
  382. package/src/utils/cli/ios/run-ios-ui-tree-tap.ts +4 -4
  383. package/src/utils/exec.ts +2 -0
  384. package/src/utils/ios/utils.ts +57 -61
  385. package/src/utils/java.ts +71 -51
  386. package/src/utils/operation-budget.ts +2 -0
  387. package/src/utils/resolve-device.ts +11 -6
  388. package/src/utils/ui/index.ts +28 -28
  389. package/test/device/automated/debugger/coroutine-lifecycle.ts +27 -0
  390. package/test/device/automated/debugger/coroutine-support.ts +140 -0
  391. package/test/device/automated/debugger/coroutine.android.test.ts +169 -0
  392. package/test/device/automated/debugger/kotlin.android.test.ts +127 -0
  393. package/test/device/automated/debugger/runtime.android.test.ts +219 -0
  394. package/test/device/automated/interact/interaction.android.test.ts +56 -0
  395. package/test/device/automated/observe/system-trace.smoke.ts +104 -0
  396. package/test/device/manual/interact/modul8_selector_tap.manual.ts +1 -1
  397. package/test/fixtures/contracts/tool-definitions.json +3536 -0
  398. package/test/fixtures/coroutine-app/MainActivity.kt +100 -0
  399. package/test/fixtures/coroutine-app/README.md +48 -0
  400. package/test/fixtures/coroutine-app/build.ts +35 -0
  401. package/test/fixtures/debugger-app/MainActivity.java +67 -0
  402. package/test/fixtures/debugger-app/MainActivity.kt +32 -0
  403. package/test/fixtures/debugger-app/NoLocals.java +7 -0
  404. package/test/fixtures/debugger-app/README.md +65 -0
  405. package/test/fixtures/debugger-app/build.ts +39 -0
  406. package/test/fixtures/latency-journey-app/README.md +2 -0
  407. package/test/fixtures/readiness-app/README.md +2 -0
  408. package/test/helpers/perfetto.ts +59 -0
  409. package/test/unit/debugger/coroutine-lifecycle.test.ts +43 -0
  410. package/test/unit/debugger/diagnostic-sessions.test.ts +67 -0
  411. package/test/unit/debugger/diagnostics.test.ts +80 -0
  412. package/test/unit/debugger/guards.test.ts +50 -0
  413. package/test/unit/debugger/native.test.ts +33 -0
  414. package/test/unit/debugger/preparation.test.ts +32 -0
  415. package/test/unit/debugger/protocol.test.ts +15 -0
  416. package/test/unit/debugger/sessions.test.ts +83 -0
  417. package/test/unit/interact/adjustment_service.test.ts +42 -0
  418. package/test/unit/interact/adjustment_verification.test.ts +35 -0
  419. package/test/unit/interact/clock_dependencies.test.ts +63 -0
  420. package/test/unit/interact/element_helpers.test.ts +19 -0
  421. package/test/unit/interact/legacy_wait_service.test.ts +17 -0
  422. package/test/unit/interact/state_comparison.test.ts +20 -0
  423. package/test/unit/interact/target_scope.test.ts +35 -0
  424. package/test/unit/network/get_network_activity.test.ts +1 -1
  425. package/test/unit/observe/readiness.test.ts +3 -1
  426. package/test/unit/observe/screenshot-encoding.test.ts +30 -0
  427. package/test/unit/observe/snapshot-logs.test.ts +14 -0
  428. package/test/unit/observe/system-trace-android.test.ts +52 -0
  429. package/test/unit/observe/system-trace.test.ts +166 -0
  430. package/test/unit/quality/architecture.test.ts +60 -0
  431. package/test/unit/quality/code-quality.test.ts +58 -0
  432. package/test/unit/quality/interaction_boundaries.test.ts +24 -0
  433. package/test/unit/server/conditional_actions.test.ts +1 -1
  434. package/test/unit/server/conditional_schema.test.ts +2 -2
  435. package/test/unit/server/debugger-response.test.ts +63 -0
  436. package/test/unit/server/system-trace.test.ts +64 -0
  437. package/test/unit/server/tool_definitions_parity.test.ts +8 -0
  438. package/dist/server/tool-handlers.js +0 -893
  439. package/docs/ROADMAP.md +0 -646
  440. package/docs/benchmarks/ui-tree-performance/bridge-probe.json +0 -29
  441. package/docs/benchmarks/ui-tree-performance/initial-baseline.json +0 -59560
  442. package/docs/specs/baseline-spec-v0.md +0 -312
  443. package/docs/specs/mcp-tooling-spec-v1.md +0 -446
  444. package/src/server/tool-handlers.ts +0 -923
  445. /package/dist/{server/condition-schema.js → contracts/condition.js} +0 -0
  446. /package/dist/server/{readiness-schema.js → schemas/readiness-schema.js} +0 -0
  447. /package/src/{server/condition-schema.ts → contracts/condition.ts} +0 -0
  448. /package/src/server/{readiness-schema.ts → schemas/readiness-schema.ts} +0 -0
package/AGENTS.md CHANGED
@@ -21,12 +21,18 @@ instructions take precedence.
21
21
  Primary areas:
22
22
 
23
23
  - `src/server.ts` — runtime entrypoint
24
- - `src/server-core.ts` — tool registration and dispatch logic
24
+ - `src/server-core.ts` and `src/server/` — MCP registration, capability handlers, schemas and definitions
25
25
  - `src/interact/` — tap, swipe, typing, waits, and interaction helpers
26
26
  - `src/observe/` — logs, screenshots, UI tree, fingerprints, snapshots
27
27
  - `src/manage/` — build, install, start, terminate, restart, reset-app-data
28
28
  - `src/system/` — environment and toolchain health checks
29
+ - `src/debugger/` — debugger sessions, protocol and Java worker
29
30
  - `src/utils/` — shared helpers and platform-specific utility code
31
+ - `src/contracts/` — shared input shapes and validation
32
+ - `src/runtime/` — action results, traces and injectable clocks
33
+
34
+ See [code structure and quality checks](docs/code-structure.md) for interaction
35
+ subfolders, module ownership, dependency rules and enforced limits.
30
36
 
31
37
  ## First things an agent should know
32
38
 
@@ -61,7 +67,9 @@ If the task is about **reviewing an RFC or spec draft**, load `.agents/skills/sp
61
67
 
62
68
  ### Repository docs
63
69
 
64
- - `README.md` — high-level repo overview and commands
70
+ - [README.md](README.md) — project overview and setup
71
+ - [CONTRIBUTING.md](CONTRIBUTING.md) — development, validation, and documentation conventions
72
+ - [Documentation index](docs/README.md) — user guides, designs, and benchmarks
65
73
  - `docs/specs/process.md` — required development workflow for all agents
66
74
  - `docs/tools/TOOLS.md` — tool documentation and contracts
67
75
  - `docs/CHANGELOG.md` — recent behavioral changes
@@ -91,7 +99,8 @@ This file is intentionally short. Keep task-specific guidance in `.agents/skills
91
99
 
92
100
  - `npm run test:unit` runs every automated unit test under `test/unit/...`
93
101
  - `npm run test:device` runs the automated device smoke checks under `test/device/automated/...`
94
- - `npm run verify` runs the default maintainer verification sequence: lint, build, unit tests, and agent-plugin consistency checks
102
+ - `npm run lint` runs ESLint, structural/type limits and ArchUnitTS dependency checks
103
+ - `npm run verify` runs lint, build, unit tests, and agent-plugin consistency checks
95
104
  - Manual and debug-oriented device scripts live under `test/device/manual/...` and are not part of the default test commands
96
105
 
97
106
  ## Utility Scripts
@@ -0,0 +1,79 @@
1
+ # Contributing
2
+
3
+ Read the [development process](docs/specs/process.md) before planning, editing,
4
+ or reviewing a change. Documentation and maintenance use its lightweight path;
5
+ new capabilities and material contract changes require intent and specification
6
+ approval. Automated contributors also start with [AGENTS.md](AGENTS.md).
7
+
8
+ ## Local development
9
+
10
+ Use Node.js 22 or newer and npm. Platform tooling is needed only for the mobile
11
+ operations you exercise; see [requirements and setup](README.md#requirements).
12
+
13
+ ```sh
14
+ npm ci
15
+ npm run build
16
+ npm start
17
+ ```
18
+
19
+ The TypeScript entrypoint is [src/server.ts](src/server.ts); registration and
20
+ dispatch live in [src/server-core.ts](src/server-core.ts) and [src/server/](src/server/).
21
+ The optional Java debugger bridge lives in
22
+ [src/debugger/java/](src/debugger/java/). It is shipped as source and compiled
23
+ on demand by the debugger; the TypeScript build does not compile Java.
24
+
25
+ Platform operations are grouped under `src/manage/`, `src/interact/`,
26
+ `src/observe/`, `src/debugger/`, and `src/system/`, with shared helpers in `src/utils/`.
27
+
28
+ ## Validation
29
+
30
+ ```sh
31
+ npm run verify
32
+ npm run test:device
33
+ ```
34
+
35
+ `verify` runs lint, the TypeScript build, automated unit tests, and plugin
36
+ consistency checks. Run applicable device checks for native or runtime changes;
37
+ record which devices and behaviours actually ran. See the [process verification
38
+ requirements](docs/specs/process.md#5-verify-and-report) for reporting failures,
39
+ blocked checks, and unrun coverage. Documentation-only work needs diff, relative
40
+ link/path, command, and consistency checks; builds and device tests are unnecessary.
41
+
42
+ Load the [test-authoring skill](.agents/skills/test-authoring/SKILL.md) before
43
+ changing tests, and the [MCP builder skill](.agents/skills/mcp-builder/SKILL.md)
44
+ for installation or native toolchain work. Automated unit tests belong in
45
+ `test/unit/`, automated device tests in `test/device/automated/`, and manual
46
+ helpers in `test/device/manual/`.
47
+
48
+ ## Code structure
49
+
50
+ Follow the [code structure and quality checks](docs/code-structure.md) for module
51
+ ownership, enforced limits, and review of legacy exceptions. `npm run lint`
52
+ includes ESLint, structural/type limits and ArchUnitTS dependency checks; CI runs
53
+ the same checks. To diagnose a failure, run `npm run check:quality` or
54
+ `npm run check:architecture` separately. Change a rule or reviewed exception only
55
+ with the corresponding design rationale, rather than suppressing the failure.
56
+
57
+ ## Documentation conventions
58
+
59
+ Use the [documentation index](docs/README.md) to place new material. Keep one
60
+ page responsible for each contract and link to it from related guides. Keep
61
+ setup in the root README, current tool contracts in `docs/tools/`, design records
62
+ in `docs/specs/`, and measurements in `docs/benchmarks/`.
63
+
64
+ Write guides around a reader's task: explain when to use the page, show a complete
65
+ example where useful, and link to the likely next step. Keep agent usage
66
+ workflows in the existing plugin skill and detailed contracts in the tool
67
+ reference. Avoid duplicating the full navigation on every page; long references
68
+ should offer task-based links to their own sections.
69
+
70
+ Use one descriptive level-one heading per document and a logical heading
71
+ hierarchy. Use relative links for repository files. Explain prerequisites before
72
+ commands and distinguish examples, proposals, and verified behaviour. Keep
73
+ historical approval and verification evidence dated; avoid chat-relative wording,
74
+ agent handoff instructions, transient checkout status, and temporary log paths.
75
+ Do not turn an earlier design decision into a current support or release claim.
76
+
77
+ When usage changes, update the relevant tool reference, README, and changelog.
78
+ When plugin metadata or its server pin changes, run `npm run sync:agent-plugin`
79
+ and `npm run check:agent-plugin`; see the [plugin guide](agent-plugin/README.md).
package/README.md CHANGED
@@ -1,49 +1,138 @@
1
1
  # Mobile Debug Tools
2
2
  [![npm version](https://img.shields.io/npm/v/mobile-debug-mcp.svg)](https://www.npmjs.com/package/mobile-debug-mcp)
3
3
 
4
- A minimal, secure MCP server for AI-assisted mobile development. Build, install, interact and inspect Android/iOS apps from an MCP-compatible client.
5
-
6
- > **Support:**
7
- > * KMP
8
- > * Android
9
- > * iOS
10
- > * Flutter - not tested
11
- > * React native - not tested
12
-
13
- Actions, screenshots, trees, and logs expose [correlated evidence](docs/tools/evidence.md)
14
- with explicit action references, phase timestamps, and conservative freshness.
4
+ Build, install, control, and inspect Android and iOS apps from an MCP-compatible
5
+ client. Mobile Debug Tools connects your client to local device toolchains and
6
+ provides UI actions, screenshots, logs, state assertions, and optional Android
7
+ performance capture and runtime debugging.
8
+
9
+ Android, iOS, and Kotlin Multiplatform projects are supported. Flutter and React
10
+ Native have not been tested. Platform and device limitations are described in the
11
+ [tool reference](docs/tools/TOOLS.md).
12
+
13
+ ## What you can use it for
14
+
15
+ Mobile Debug Tools gives a coding agent access to a running app, so development
16
+ can include feedback from the device as well as the source code. For example:
17
+
18
+ - **Build and test a feature.** After adding a settings screen, build and install
19
+ the app, navigate to it, and check that its controls display and behave as
20
+ expected. See [app management](docs/tools/manage.md) and
21
+ [UI interactions and assertions](docs/tools/interact.md).
22
+ - **Check a bug fix or regression.** Reproduce a sequence such as opening a form,
23
+ entering text and submitting it, then verify the resulting screen or control
24
+ state. Repeat the journey after a code change to check the outcome.
25
+ - **Review the UI on a device.** Capture screenshots to inspect layout and visual
26
+ changes, or inspect the UI hierarchy for exposed labels and control state.
27
+ See [observations](docs/tools/observe.md).
28
+ - **Investigate an app failure.** Collect logs, screenshots and a debug snapshot
29
+ around a failing action to understand what happened. [Evidence
30
+ correlation](docs/tools/correlated-evidence.md) links observations to the action.
31
+ - **Investigate Android performance or runtime behaviour.** Capture a
32
+ [Perfetto trace](docs/tools/system-traces.md) during a slow flow, or attach the
33
+ [runtime debugger](docs/tools/debugger.md) to a debuggable app to inspect
34
+ breakpoints, call stacks and locals.
35
+
36
+ ## How it works
37
+
38
+ Your agent client launches a local MCP server and communicates with it over
39
+ stdio. The server translates tool calls into operations through Android's ADB
40
+ or Apple's Xcode tools and idb, then returns device observations and action
41
+ results to the client. It connects to emulators, simulators and supported
42
+ physical devices through those toolchains.
43
+
44
+ The agent plugin bundles the server configuration and usage skill. The same
45
+ server can also be configured directly in an MCP client or run from a source
46
+ checkout. See [code structure](docs/code-structure.md#module-ownership) for the
47
+ implementation's module boundaries.
48
+
49
+ ## Start here
50
+
51
+ Choose how to connect:
52
+
53
+ 1. **[Agent plugin](#agent-plugin) — Recommended.** Installs the server configuration
54
+ and usage skill together for supported agent clients.
55
+ 2. **[Direct MCP configuration](#mcp-configuration).** Connect the published server
56
+ to another MCP-compatible client.
57
+ 3. **[Manual setup](#manual-setup).** Build and run a local source checkout.
58
+
59
+ Check the [requirements](#requirements) for your platform before installing.
15
60
 
16
61
  ## Requirements
17
62
 
18
- - Node.js >= 18
63
+ - Node.js >= 22
19
64
  - [Android SDK](https://developer.android.com/studio) (adb) for Android support
20
- - Xcode command-line tools for iOS support
21
- - [idb](https://github.com/facebook/idb) for iOS device support
65
+ - Xcode and its command-line tools on macOS for iOS support
66
+ - [idb](https://github.com/facebook/idb) for iOS UI inspection and interaction
67
+ - JDK 17+ for optional [Android runtime debugging](docs/tools/debugger.md)
68
+
69
+ ## Agent plugin
70
+
71
+ The preferred setup for supported agent clients is the
72
+ [agent plugin](agent-plugin/README.md). It installs the MCP server configuration
73
+ and usage skill together. Choose your client below.
74
+
75
+ <details>
76
+
77
+ <summary>Codex plugin</summary>
78
+
79
+ Install the plugin from this repository's marketplace:
80
+
81
+ ```bash
82
+ codex plugin marketplace add clivejefferies/mobile-debug-tools
83
+ codex plugin add mobile-debug-tools@mobile-debug-tools
84
+ ```
85
+
86
+ </details>
87
+
88
+ <details>
89
+
90
+ <summary>Claude Code plugin</summary>
91
+
92
+ Install the plugin from this repository's marketplace:
93
+
94
+ ```bash
95
+ claude plugin marketplace add clivejefferies/mobile-debug-tools
96
+ claude plugin install mobile-debug-tools@mobile-debug-tools
97
+ ```
22
98
 
23
- ## Environment Setup
99
+ </details>
24
100
 
25
- The server discovers Android and iOS tools automatically from standard locations by default. Manual environment setup is still supported, but it should be treated as the fallback for non-standard installs, overrides, or reproducible pinned toolchains.
101
+ <details>
26
102
 
27
- Use explicit paths when:
28
- - you have multiple SDKs installed
29
- - the tools live outside standard locations
30
- - you want deterministic setup across machines
31
- - automatic discovery does not find the expected binary
103
+ <summary>Cursor plugin</summary>
104
+
105
+ The repository includes a [Cursor marketplace](.cursor-plugin/marketplace.json).
106
+ Teams and Enterprise admins can import the repository in Dashboard → Plugins & MCPs → Team
107
+ Marketplaces. To test it locally, copy [agent-plugin](agent-plugin/) into
108
+ `~/.cursor/plugins/local/mobile-debug-tools`, then reload Cursor.
32
109
 
33
- Leave the variables unset when:
34
- - the tools are already on `PATH`
35
- - the standard Android and Xcode locations are enough
110
+ </details>
36
111
 
37
- Common environment variables:
38
- - `ADB_PATH`: explicit path to `adb`
39
- - `ANDROID_SDK_ROOT` or `ANDROID_HOME`: Android SDK root
40
- - `XCRUN_PATH`: explicit path to `xcrun`
41
- - `MCP_IDB_PATH` or `IDB_PATH`: explicit path to `idb`
42
- - `GRADLE_JAVA_HOME` or `JAVA_HOME`: Java home for Gradle-backed operations
112
+ Start a new chat or session after installation so the client loads the skill
113
+ and MCP tools. Each plugin launches the published npm package locally and needs
114
+ Node.js 22 or newer and the platform toolchains for your device. If you also
115
+ registered the MCP server directly, disable that registration to avoid
116
+ duplicate tools.
43
117
 
44
- For normal use, call `get_system_status` first. It reports the detected host, Android, and iOS toolchain state so the client can decide whether automatic discovery is sufficient or whether explicit overrides are needed.
118
+ ## MCP configuration
45
119
 
46
- ## MCP Configuration
120
+ For a standard installation, add this stdio server to your client's MCP settings:
121
+
122
+ ```json
123
+ {
124
+ "mcpServers": {
125
+ "mobile-debug": {
126
+ "command": "npx",
127
+ "args": ["--yes", "mobile-debug-mcp"]
128
+ }
129
+ }
130
+ }
131
+ ```
132
+
133
+ If your client uses separate fields, choose stdio, set the command to `npx`, and
134
+ supply `--yes` and `mobile-debug-mcp` as arguments. The examples below add optional
135
+ path overrides; replace the placeholder paths before using them.
47
136
 
48
137
  <details>
49
138
 
@@ -56,7 +145,7 @@ Recommended when you want Android only, or when you want to make the Android too
56
145
  "mcpServers": {
57
146
  "mobile-debug": {
58
147
  "command": "npx",
59
- "args": ["--yes","mobile-debug-mcp","server"],
148
+ "args": ["--yes", "mobile-debug-mcp"],
60
149
  "env": {
61
150
  "ADB_PATH": "/path/to/adb",
62
151
  "ANDROID_SDK_ROOT": "/path/to/android/sdk",
@@ -82,7 +171,7 @@ Recommended when you want iOS simulator or device support, or when `idb` lives i
82
171
  "mcpServers": {
83
172
  "mobile-debug": {
84
173
  "command": "npx",
85
- "args": ["--yes","mobile-debug-mcp","server"],
174
+ "args": ["--yes", "mobile-debug-mcp"],
86
175
  "env": {
87
176
  "XCRUN_PATH": "/usr/bin/xcrun",
88
177
  "MCP_IDB_PATH": "/path/to/idb",
@@ -97,107 +186,52 @@ For iOS-only setups, `ADB_PATH` and `ANDROID_SDK_ROOT` are not required unless y
97
186
 
98
187
  </details>
99
188
 
100
- <details>
101
-
102
- <summary>Codex</summary>
103
-
104
- Use STDIO
105
-
106
- command: npx
107
-
108
- args:
109
- * --yes
110
- * mobile-debug-mcp
111
-
112
- environment variables:
113
- * ADB_PATH: /path/to/adb
114
- * XCRUN_PATH: /usr/bin/xcrun
115
- * IDB_PATH: /path/to/idb
116
- * MCP_IDB_PATH: /path/to/idb
117
- * ANDROID_SDK_ROOT: /path/to/android/sdk
118
- * GRADLE_JAVA_HOME: /path/to/jdk
119
- * JAVA_HOME: /path/to/jdk
120
-
121
- If you are unsure whether the environment is configured correctly, run `get_system_status` first. It reports the detected host, Android, and iOS toolchain state in a structured form.
122
-
123
- </details>
124
-
125
- ## Agent Plugin
126
-
127
- For clients that support Agent Plugins, the [agent-plugin](agent-plugin/README.md)
128
- package installs the MCP server configuration together with the existing usage
129
- skill. Direct npm/MCP configuration above remains supported.
130
-
131
- <details>
189
+ ## Manual setup
132
190
 
133
- <summary>Codex plugin</summary>
134
-
135
- Install the plugin from this repository's marketplace:
136
-
137
- ```bash
138
- codex plugin marketplace add clivejefferies/mobile-debug-tools
139
- codex plugin add mobile-debug-tools@mobile-debug-tools
140
- ```
141
-
142
- </details>
143
-
144
- <details>
145
-
146
- <summary>Claude Code plugin</summary>
147
-
148
- Install the plugin from this repository's marketplace:
191
+ For a local source checkout, follow the [development setup](CONTRIBUTING.md#local-development)
192
+ to install dependencies and build the server. Then configure your MCP client to
193
+ launch that build over stdio:
149
194
 
150
- ```bash
151
- claude plugin marketplace add clivejefferies/mobile-debug-tools
152
- claude plugin install mobile-debug-tools@mobile-debug-tools
195
+ ```json
196
+ {
197
+ "mcpServers": {
198
+ "mobile-debug": {
199
+ "command": "node",
200
+ "args": ["/absolute/path/to/mobile-debug-mcp/dist/server.js"]
201
+ }
202
+ }
203
+ }
153
204
  ```
154
205
 
155
- </details>
156
-
157
- <details>
158
-
159
- <summary>Cursor plugin</summary>
160
-
161
- The repository includes a [Cursor marketplace](.cursor-plugin/marketplace.json).
162
- Teams and Enterprise admins can import the repository in Dashboard → Plugins & MCPs → Team
163
- Marketplaces. To test it locally, copy [agent-plugin](agent-plugin/) into
164
- `~/.cursor/plugins/local/mobile-debug-tools`, then reload Cursor.
165
-
166
- </details>
167
-
168
- Start a new chat or session after installation so the client loads the skill
169
- and MCP tools. Each plugin launches the published npm package locally and needs
170
- Node.js 18 or newer and the platform toolchains for your device. If you also
171
- registered the MCP server directly, disable that registration to avoid
172
- duplicate tools.
206
+ Replace the path with your checkout location. Rebuild after source changes.
173
207
 
174
- ## Usage
208
+ ## Environment setup
175
209
 
176
- Crash fixing:
177
- > I have a crash on the app, can you diagnose it, fix and validate using the mcp tools available
210
+ The server discovers platform tools from standard locations and `PATH`. Leave
211
+ path overrides unset for a standard installation. Use them for non-standard
212
+ locations, multiple toolchains, or a pinned development environment.
178
213
 
179
- Feature building:
180
- > Add a button, hook into the repository and confirm API request successful
214
+ | Variable | Purpose |
215
+ | --- | --- |
216
+ | `ADB_PATH` | Path to `adb`. |
217
+ | `ANDROID_SDK_ROOT` or `ANDROID_HOME` | Android SDK root. |
218
+ | `XCRUN_PATH` | Path to `xcrun`. |
219
+ | `MCP_IDB_PATH` or `IDB_PATH` | Path to `idb`. |
220
+ | `GRADLE_JAVA_HOME` or `JAVA_HOME` | Java home for Gradle-backed operations. |
181
221
 
182
- For actions that depend on a previously observed UI, use an optional
183
- `expectedState` from `get_ui_tree` on the same explicit device. The server checks
184
- a fresh snapshot immediately before input and returns `PRECONDITION_FAILED`
185
- with current UI evidence if the state changed. See
186
- [conditional actions](docs/tools/interact.md#conditional-actions) for supported
187
- tools, examples, and the limits of the check.
222
+ After connecting the client, call `get_system_status` to check discovery and
223
+ prerequisites. See [environment diagnostics](docs/tools/system.md) if a toolchain
224
+ or device is unavailable.
188
225
 
189
- ## Docs
226
+ Android debugger errors include bounded, sanitized failure classifications and recovery guidance; see the [debugger guide](docs/tools/debugger.md#failure-diagnostics).
190
227
 
191
- Use `get_app_readiness` to observe loading, transitioning, settled, or unknown UI
192
- state, and `wait_for_app_ready` for a bounded wait. Existing UI waits can opt into
193
- `requireReady: true`. Results include evidence and uncertainty; see
194
- [app readiness](docs/tools/observe.md#app-readiness) for limits and examples.
228
+ ## Documentation
195
229
 
196
- - Tools: [Tools](docs/tools/TOOLS.md) — full input/response examples
197
- - Changelog: [Changelog](docs/CHANGELOG.md)
198
- - Agents: [AGENTS.md](AGENTS.md) — cold-start guidance for autonomous agents entering the public repo
199
- - Skills: [.agents/skills/README.md](.agents/skills/README.md) — portable Markdown skill packages for agents such as Copilot, Codex, Claude, or custom systems
230
+ - [Documentation guide](docs/README.md) — find the guide for your task.
231
+ - [Tool reference](docs/tools/TOOLS.md) — inputs, responses, examples, and shared principles.
232
+ - [Contributing](CONTRIBUTING.md) — develop the server and run its checks.
233
+ - [Changelog](docs/CHANGELOG.md) — release history.
200
234
 
201
235
  ## License
202
236
 
203
- Apache-2.0
237
+ [Apache-2.0](LICENSE)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobile-debug-tools",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "description": "Mobile app debugging tools and usage guidance for Android and iOS agents.",
5
5
  "author": {
6
6
  "name": "mobile-debug-tools contributors"
@@ -12,7 +12,7 @@
12
12
  "command": "npx",
13
13
  "args": [
14
14
  "--yes",
15
- "mobile-debug-mcp@0.33.0",
15
+ "mobile-debug-mcp@0.35.0",
16
16
  "server"
17
17
  ]
18
18
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobile-debug-tools",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "description": "Mobile app debugging tools and usage guidance for Android and iOS agents.",
5
5
  "repository": "https://github.com/clivejefferies/mobile-debug-tools",
6
6
  "license": "Apache-2.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobile-debug-tools",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "description": "Mobile app debugging tools and usage guidance for Android and iOS agents.",
5
5
  "author": {
6
6
  "name": "mobile-debug-tools contributors"
@@ -14,7 +14,7 @@
14
14
  "command": "npx",
15
15
  "args": [
16
16
  "--yes",
17
- "mobile-debug-mcp@0.33.0",
17
+ "mobile-debug-mcp@0.35.0",
18
18
  "server"
19
19
  ],
20
20
  "cwd": "${CURSOR_PLUGIN_ROOT}"
@@ -5,7 +5,7 @@
5
5
  "command": "npx",
6
6
  "args": [
7
7
  "--yes",
8
- "mobile-debug-mcp@0.33.0",
8
+ "mobile-debug-mcp@0.35.0",
9
9
  "server"
10
10
  ],
11
11
  "cwd": "${PLUGIN_DATA}"
@@ -1,17 +1,22 @@
1
1
  # Mobile Debug MCP agent plugin
2
2
 
3
- Install this directory as an Agent Plugins package in a client that supports
4
- both skills and stdio MCP servers. It provides the existing mobile-debug MCP
3
+ [Documentation](../docs/README.md) · [Client installation](../README.md#agent-plugin)
4
+
5
+ Use the [client installation instructions](../README.md#agent-plugin) to install
6
+ the plugin. It supports clients with
7
+ both skills and stdio MCP servers. It provides the mobile-debug MCP
5
8
  usage skill and launches the published `mobile-debug-mcp` npm package. The
6
- plugin requires Node.js 18 or newer, `npx`, and the platform toolchains needed
9
+ plugin requires Node.js 22 or newer, `npx`, and the platform toolchains needed
7
10
  for the devices you want to use. The first launch may need npm registry access.
8
11
  The MCP process starts in the client-managed plugin data directory so npm does
9
12
  not resolve the source checkout as a local package when installed from this repo.
10
13
 
14
+ ## Versions and maintenance
15
+
11
16
  The server is pinned to the published npm version in `mcp.json`. The plugin's
12
17
  `plugin.json` version advances independently for guidance-only releases; do not
13
- change the server pin to an unpublished npm version. The skill in
14
- `skills/mobile-debug-mcp/SKILL.md` is shared by all three clients. Run
18
+ change the server pin to an unpublished npm version. The
19
+ [usage skill](skills/mobile-debug-mcp/SKILL.md) is shared by all three clients. Run
15
20
  `npm run sync:agent-plugin` after updating the plugin metadata or server pin to
16
21
  refresh the thin Codex, Claude Code, and Cursor manifests in this directory.
17
22
  The three marketplaces all point here and share one skill.
@@ -19,11 +24,20 @@ The packaged directory uses the skill's declared name, `mobile-debug-mcp`, as
19
24
  required by Agent Skills. `npm run check:agent-plugin` checks the packaged
20
25
  copies and configuration.
21
26
 
27
+ ## Using the plugin
28
+
29
+ After installation, the [usage skill](skills/mobile-debug-mcp/SKILL.md) guides the
30
+ agent through device selection, observation, interaction and verification.
31
+
22
32
  The usage skill prefers screenshots for routine visual checks and reserves
23
33
  hierarchy reads for semantic selection and structured assertions. Assertion
24
34
  timeouts must cover a fresh tree read as well as the expected app transition.
35
+ It also covers optional Android runtime debugging: capability checks, explicit
36
+ process attach, source stops, bounded inspection, stepping and owned cleanup.
37
+ Debugger guidance applies only when the connected server exposes those tools;
38
+ updating the skill does not update the pinned server or installed plugin.
25
39
 
26
40
  If you already configured the MCP server directly in your agent client, disable
27
41
  that separate registration when enabling this plugin to avoid duplicate tools.
28
42
  The direct npm installation remains available without this plugin. See the
29
- repository README for platform toolchain setup and `get_system_status` guidance.
43
+ [repository README](../README.md#environment-setup) for platform toolchain setup and `get_system_status` guidance.
@@ -4,7 +4,7 @@
4
4
  "mobile-debug-mcp": {
5
5
  "type": "stdio",
6
6
  "command": "npx",
7
- "args": ["--yes", "mobile-debug-mcp@0.33.0", "server"],
7
+ "args": ["--yes", "mobile-debug-mcp@0.35.0", "server"],
8
8
  "cwd": "${PLUGIN_DATA}"
9
9
  }
10
10
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "mobile-debug-tools",
4
- "version": "0.0.1",
4
+ "version": "0.0.4",
5
5
  "description": "Mobile app debugging tools and usage guidance for Android and iOS agents.",
6
6
  "repository": "https://github.com/clivejefferies/mobile-debug-tools",
7
7
  "license": "Apache-2.0",