mobile-debug-mcp 0.34.0 → 0.36.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.
- package/.agents/skills/mcp-builder/SKILL.md +44 -64
- package/.agents/skills/mcp-builder/references/build-flags.md +44 -43
- package/.agents/skills/mcp-builder/references/diagnostics-schema.md +4 -1
- package/.agents/skills/mcp-builder/references/toolchain-details.md +49 -62
- package/.agents/skills/spec-review/references/spec-review-checklist.md +7 -0
- package/.agents/skills/test-authoring/SKILL.md +7 -6
- package/.agents/skills/test-authoring/references/repo-test-layout.md +3 -1
- package/.agents/skills/test-authoring/references/test-authoring-workflow.md +16 -7
- package/.agents/skills/test-authoring/references/test-quality-checklist.md +2 -1
- package/.cursor-plugin/marketplace.json +1 -1
- package/.github/copilot-instructions.md +14 -36
- package/.github/workflows/ci.yml +4 -4
- package/AGENTS.md +12 -3
- package/CONTRIBUTING.md +79 -0
- package/README.md +218 -129
- package/agent-plugin/.antigravity-plugin/README.md +48 -0
- package/agent-plugin/.antigravity-plugin/plugin.json +18 -0
- package/agent-plugin/.claude-plugin/plugin.json +2 -2
- package/agent-plugin/.codex-plugin/plugin.json +1 -1
- package/agent-plugin/.cursor-plugin/plugin.json +2 -2
- package/agent-plugin/.mcp.json +1 -1
- package/agent-plugin/README.md +50 -11
- package/agent-plugin/cursor/.cursor-plugin/plugin.json +23 -0
- package/agent-plugin/cursor/LICENSE +201 -0
- package/agent-plugin/cursor/README.md +9 -0
- package/agent-plugin/cursor/skills/mobile-debug-mcp/SKILL.md +253 -0
- package/agent-plugin/mcp.json +1 -1
- package/agent-plugin/mcp_config.json +13 -0
- package/agent-plugin/plugin.json +1 -1
- package/agent-plugin/skills/mobile-debug-mcp/SKILL.md +62 -17
- package/dist/contracts/execution-controls.js +24 -0
- package/dist/contracts/selector.js +8 -0
- package/dist/contracts/target.js +15 -0
- package/dist/contracts/ui.js +1 -0
- package/dist/debugger/android.js +2 -1
- package/dist/debugger/diagnostics.js +54 -0
- package/dist/debugger/guard.js +4 -4
- package/dist/debugger/ios-worker.js +62 -0
- package/dist/debugger/ios.js +57 -0
- package/dist/debugger/protocol.js +33 -0
- package/dist/debugger/sessions.js +133 -74
- package/dist/debugger/worker.js +59 -46
- package/dist/interact/adjustment/adjustment-context.js +41 -0
- package/dist/interact/adjustment/adjustment-gestures.js +55 -0
- package/dist/interact/adjustment/adjustment-plan.js +18 -0
- package/dist/interact/adjustment/adjustment-resolution.js +127 -0
- package/dist/interact/adjustment/adjustment-result.js +19 -0
- package/dist/interact/adjustment/adjustment-semantic.js +64 -0
- package/dist/interact/adjustment/adjustment-verification.js +35 -0
- package/dist/interact/adjustment/adjustment.js +52 -0
- package/dist/interact/adjustment/control-geometry.js +87 -0
- package/dist/interact/adjustment/control-values.js +136 -0
- package/dist/interact/adjustment/slider-labels.js +84 -0
- package/dist/interact/assertions/screen-assertion.js +37 -0
- package/dist/interact/assertions/state-assertion-context.js +35 -0
- package/dist/interact/assertions/state-assertion.js +76 -0
- package/dist/interact/assertions/state-comparison.js +141 -0
- package/dist/interact/assertions/visibility-assertion.js +34 -0
- package/dist/interact/conditional-action.js +12 -7
- package/dist/interact/index.js +77 -3092
- package/dist/interact/input-service.js +1 -0
- package/dist/interact/interaction-trace.js +21 -0
- package/dist/interact/model.js +1 -0
- package/dist/interact/observation.js +1 -0
- package/dist/interact/targeting/candidate-ancestor.js +58 -0
- package/dist/interact/targeting/candidate-result.js +23 -0
- package/dist/interact/targeting/candidate-scoring.js +50 -0
- package/dist/interact/targeting/element-helpers.js +216 -0
- package/dist/interact/targeting/find-element.js +65 -0
- package/dist/interact/targeting/nearby-control.js +56 -0
- package/dist/interact/targeting/resolved-elements.js +21 -0
- package/dist/interact/targeting/tap-target.js +17 -0
- package/dist/interact/targeting/target-scope.js +104 -0
- package/dist/interact/waits/legacy-log-wait.js +38 -0
- package/dist/interact/waits/legacy-wait-observations.js +103 -0
- package/dist/interact/waits/legacy-wait-state.js +34 -0
- package/dist/interact/waits/legacy-wait.js +48 -0
- package/dist/interact/waits/screen-wait.js +49 -0
- package/dist/interact/waits/ui-change-helpers.js +157 -0
- package/dist/interact/waits/ui-change-state.js +18 -0
- package/dist/interact/waits/ui-change-wait.js +77 -0
- package/dist/interact/waits/ui-wait-condition.js +56 -0
- package/dist/interact/waits/ui-wait-state.js +38 -0
- package/dist/interact/waits/ui-wait.js +106 -0
- package/dist/manage/android.js +55 -51
- package/dist/manage/index.js +38 -75
- package/dist/manage/ios/build-types.js +1 -0
- package/dist/manage/ios/build.js +210 -0
- package/dist/manage/ios/project-discovery.js +29 -0
- package/dist/manage/ios/scheme.js +18 -0
- package/dist/manage/ios.js +44 -256
- package/dist/observe/android/context.js +1 -0
- package/dist/observe/android/current-screen.js +55 -0
- package/dist/observe/android/fingerprint.js +13 -0
- package/dist/observe/android/log-stream.js +132 -0
- package/dist/observe/android/logs.js +107 -0
- package/dist/observe/android/screenshot.js +70 -0
- package/dist/observe/android/ui-tree.js +107 -0
- package/dist/observe/android.js +16 -520
- package/dist/observe/evidence.js +114 -75
- package/dist/observe/index.js +16 -263
- package/dist/observe/ios/context.js +16 -0
- package/dist/observe/ios/fingerprint.js +12 -0
- package/dist/observe/ios/log-stream.js +105 -0
- package/dist/observe/ios/logs.js +168 -0
- package/dist/observe/ios/screenshot.js +22 -0
- package/dist/observe/ios/ui-elements.js +241 -0
- package/dist/observe/ios/ui-tree.js +137 -0
- package/dist/observe/ios-trace/artifact.js +63 -0
- package/dist/observe/ios-trace/capabilities.js +86 -0
- package/dist/observe/ios-trace/native.js +93 -0
- package/dist/observe/ios-trace/notification.js +35 -0
- package/dist/observe/ios-trace/process.js +98 -0
- package/dist/observe/ios-trace/sessions.js +244 -0
- package/dist/observe/ios.js +17 -715
- package/dist/observe/logs/model.js +1 -0
- package/dist/{network → observe/network}/index.js +2 -2
- package/dist/observe/readiness-service.js +5 -3
- package/dist/observe/readiness.js +33 -14
- package/dist/observe/screenshot-encoding.js +41 -0
- package/dist/observe/snapshot-collection.js +79 -0
- package/dist/observe/snapshot-logs.js +30 -0
- package/dist/observe/snapshot-metadata.js +43 -31
- package/dist/observe/snapshot-semantic.js +115 -0
- package/dist/observe/system-trace-error.js +7 -0
- package/dist/observe/system-trace-router.js +81 -0
- package/dist/observe/system-trace.js +26 -21
- package/dist/runtime/action-results.js +270 -0
- package/dist/runtime/clock.js +4 -0
- package/dist/server/common.js +1 -256
- package/dist/server/definitions/assert.js +162 -0
- package/dist/server/definitions/diagnostic.js +118 -0
- package/dist/server/definitions/input.js +274 -0
- package/dist/server/definitions/manage.js +194 -0
- package/dist/server/definitions/observe.js +149 -0
- package/dist/server/definitions/target.js +138 -0
- package/dist/server/definitions/wait.js +105 -0
- package/dist/server/handlers/action-execution.js +163 -0
- package/dist/server/handlers/correlation.js +23 -0
- package/dist/server/handlers/debugger-handlers.js +67 -0
- package/dist/server/handlers/debugger-response.js +9 -0
- package/dist/server/handlers/diagnostic.js +77 -0
- package/dist/server/handlers/handler-types.js +1 -0
- package/dist/server/handlers/input.js +154 -0
- package/dist/server/handlers/interact.js +113 -0
- package/dist/server/handlers/journey-assertions.js +35 -0
- package/dist/server/handlers/journey.js +147 -0
- package/dist/server/handlers/manage.js +119 -0
- package/dist/server/handlers/observe.js +95 -0
- package/dist/server/handlers/payload.js +4 -0
- package/dist/server/handlers/tool-handlers.js +170 -0
- package/dist/server/schemas/condition-schema.js +2 -0
- package/dist/server/{debugger-schema.js → schemas/debugger-schema.js} +20 -12
- package/dist/server/{journey-schema.js → schemas/journey-schema.js} +7 -22
- package/dist/server/schemas/system-trace-schema.js +22 -0
- package/dist/server/tool-definitions.js +58 -1135
- package/dist/server-core.js +2 -2
- package/dist/server.js +4 -4
- package/dist/system/android-status.js +101 -0
- package/dist/system/android.js +37 -27
- package/dist/system/index.js +13 -439
- package/dist/system/ios-status.js +132 -0
- package/dist/system/ios.js +11 -8
- package/dist/system/model.js +1 -0
- package/dist/system/probes.js +105 -0
- package/dist/system/status-summary.js +43 -0
- package/dist/system/unsupported-status.js +52 -0
- package/dist/utils/android/commands.js +89 -0
- package/dist/utils/android/gradle.js +139 -0
- package/dist/utils/android/logs.js +103 -0
- package/dist/utils/android/ui-tree.js +233 -0
- package/dist/utils/android/utils.js +6 -564
- package/dist/utils/cli/idb/idb-helper.js +4 -6
- package/dist/utils/cli/idb/install-idb.js +13 -9
- package/dist/utils/cli/ios/preflight-ios.js +42 -38
- package/dist/utils/ios/utils.js +48 -46
- package/dist/utils/java.js +65 -49
- package/dist/utils/resolve-device.js +4 -2
- package/dist/utils/ui/index.js +26 -26
- package/docs/CHANGELOG.md +67 -1
- package/docs/README.md +38 -0
- package/docs/agent-plugin-installation-verification.md +39 -0
- package/docs/benchmarks/README.md +18 -0
- package/docs/benchmarks/interaction-latency/README.md +14 -0
- package/docs/benchmarks/interaction-latency/final.md +4 -1
- package/docs/benchmarks/interaction-latency/ios-validation.md +2 -0
- package/docs/benchmarks/ui-tree-performance/README.md +24 -16
- package/docs/benchmarks/ui-tree-performance/comparison.md +11 -10
- package/docs/code-structure.md +120 -0
- package/docs/specs/001-state-verification/spec.md +16 -14
- package/docs/specs/002-richer-element-identity/spec.md +12 -10
- package/docs/specs/003-wait-and-synchronization-reliability/spec.md +12 -10
- package/docs/specs/004-action-verification-routing/spec.md +3 -3
- package/docs/specs/005-unified-action-execution-and-verification-model/spec.md +2 -0
- package/docs/specs/006-runtime-action-instrumentation-and-binding-layer/spec.md +2 -0
- package/docs/specs/007-actionability-resolution-and-executable-target-selection/spec.md +3 -1
- package/docs/specs/008-adjustable-control-support-and-semantic-value-manipulation/spec.md +3 -4
- package/docs/specs/009-semantic-control-modeling-for-custom-and-composite-controls/spec.md +2 -0
- package/docs/specs/010-verification-stabilization-and-temporal-convergence/spec.md +2 -2
- package/docs/specs/011-recovery-and-replanning-for-failed-or-ambiguous-interaction-flows/spec.md +2 -2
- package/docs/specs/011.1-recovery-contract-types-and-runtime-wiring-spec/spec.md +2 -0
- package/docs/specs/012-action-trace-and-xecution-observability/spec.md +2 -3
- package/docs/specs/013-wait-and-synchronization-reliability/spec.md +19 -19
- package/docs/specs/014-actionability-resolution/spec.md +20 -18
- package/docs/specs/015-adjustable-control-support/spec.md +17 -15
- package/docs/specs/016-environment-tools/spec.md +20 -20
- package/docs/specs/018-interaction-latency-and-batched-journeys/spec.md +2 -0
- package/docs/specs/019-ui-tree-observation-performance/spec.md +3 -1
- package/docs/specs/020-conditional-actions/intent.md +5 -3
- package/docs/specs/020-conditional-actions/plan.md +8 -9
- package/docs/specs/020-conditional-actions/spec.md +4 -2
- package/docs/specs/021-app-readiness-signals/intent.md +4 -2
- package/docs/specs/021-app-readiness-signals/plan.md +7 -6
- package/docs/specs/021-app-readiness-signals/spec.md +3 -1
- package/docs/specs/022-correlated-evidence/intent.md +4 -4
- package/docs/specs/022-correlated-evidence/plan.md +10 -11
- package/docs/specs/022-correlated-evidence/spec.md +3 -1
- package/docs/specs/023-android-system-traces/intent.md +3 -2
- package/docs/specs/023-android-system-traces/plan.md +5 -7
- package/docs/specs/023-android-system-traces/spec.md +3 -1
- package/docs/specs/024-android-heap-dump-capture/intent.md +3 -1
- package/docs/specs/025-android-runtime-debugger/intent.md +4 -3
- package/docs/specs/025-android-runtime-debugger/plan.md +3 -1
- package/docs/specs/025-android-runtime-debugger/spec.md +4 -3
- package/docs/specs/026-code-structure-and-quality-gates/health-plan.md +88 -0
- package/docs/specs/026-code-structure-and-quality-gates/intent.md +47 -0
- package/docs/specs/026-code-structure-and-quality-gates/plan.md +191 -0
- package/docs/specs/026-code-structure-and-quality-gates/spec.md +138 -0
- package/docs/specs/026-code-structure-and-quality-gates/verification-final.json +200 -0
- package/docs/specs/026-code-structure-and-quality-gates/verification-thin-facade.json +154 -0
- package/docs/specs/026-code-structure-and-quality-gates/verification.json +136 -0
- package/docs/specs/027-debugger-failure-diagnostics/intent.md +43 -0
- package/docs/specs/027-debugger-failure-diagnostics/plan.md +86 -0
- package/docs/specs/027-debugger-failure-diagnostics/spec.md +133 -0
- package/docs/specs/028-compact-debugger-responses/intent.md +41 -0
- package/docs/specs/028-compact-debugger-responses/plan.md +112 -0
- package/docs/specs/028-compact-debugger-responses/spec.md +108 -0
- package/docs/specs/029-kotlin-locals-validation/report.md +119 -0
- package/docs/specs/030-android-coroutine-validation/evidence.json +475 -0
- package/docs/specs/030-android-coroutine-validation/intent.md +47 -0
- package/docs/specs/030-android-coroutine-validation/plan.md +147 -0
- package/docs/specs/030-android-coroutine-validation/report.md +240 -0
- package/docs/specs/030-android-coroutine-validation/spec.md +107 -0
- package/docs/specs/031-ios-system-traces/intent.md +38 -0
- package/docs/specs/031-ios-system-traces/investigation.md +92 -0
- package/docs/specs/031-ios-system-traces/late-run-failure-evidence.json +32 -0
- package/docs/specs/031-ios-system-traces/plan.md +138 -0
- package/docs/specs/031-ios-system-traces/pr102-monitor-evidence.json +22 -0
- package/docs/specs/031-ios-system-traces/simulator-evidence.json +47 -0
- package/docs/specs/031-ios-system-traces/spec.md +135 -0
- package/docs/specs/032-ios-runtime-debugger/evidence.json +176 -0
- package/docs/specs/032-ios-runtime-debugger/intent.md +38 -0
- package/docs/specs/032-ios-runtime-debugger/plan.md +95 -0
- package/docs/specs/032-ios-runtime-debugger/report.md +205 -0
- package/docs/specs/032-ios-runtime-debugger/spec.md +153 -0
- package/docs/tools/TOOLS.md +31 -18
- package/docs/tools/{evidence.md → correlated-evidence.md} +9 -1
- package/docs/tools/debugger.md +120 -4
- package/docs/tools/interact.md +42 -20
- package/docs/tools/manage.md +25 -44
- package/docs/tools/observe.md +55 -23
- package/docs/tools/system-traces.md +89 -14
- package/docs/tools/system.md +12 -5
- package/package.json +12 -8
- package/scripts/agent-plugin.mjs +55 -5
- package/scripts/architecture-graph.mjs +69 -0
- package/scripts/check-architecture.mjs +47 -0
- package/scripts/code-quality-baseline.json +1 -0
- package/scripts/code-quality.mjs +161 -0
- package/src/contracts/execution-controls.ts +26 -0
- package/src/contracts/selector.ts +17 -0
- package/src/contracts/target.ts +19 -0
- package/src/contracts/ui.ts +94 -0
- package/src/debugger/android.ts +3 -2
- package/src/debugger/diagnostics.ts +43 -0
- package/src/debugger/guard.ts +10 -5
- package/src/debugger/ios-worker.ts +49 -0
- package/src/debugger/ios.ts +45 -0
- package/{worker → src/debugger/java}/DebuggerWorker.java +9 -3
- package/src/debugger/lldb/breakpoints.py +51 -0
- package/src/debugger/lldb/inspection.py +109 -0
- package/src/debugger/lldb/worker.py +203 -0
- package/src/debugger/protocol.ts +37 -0
- package/src/debugger/sessions.ts +326 -155
- package/src/debugger/worker.ts +57 -41
- package/src/interact/adjustment/adjustment-context.ts +83 -0
- package/src/interact/adjustment/adjustment-gestures.ts +48 -0
- package/src/interact/adjustment/adjustment-plan.ts +23 -0
- package/src/interact/adjustment/adjustment-resolution.ts +104 -0
- package/src/interact/adjustment/adjustment-result.ts +34 -0
- package/src/interact/adjustment/adjustment-semantic.ts +53 -0
- package/src/interact/adjustment/adjustment-verification.ts +60 -0
- package/src/interact/adjustment/adjustment.ts +49 -0
- package/src/interact/adjustment/control-geometry.ts +120 -0
- package/src/interact/adjustment/control-values.ts +141 -0
- package/src/interact/adjustment/slider-labels.ts +84 -0
- package/src/interact/assertions/screen-assertion.ts +39 -0
- package/src/interact/assertions/state-assertion-context.ts +48 -0
- package/src/interact/assertions/state-assertion.ts +64 -0
- package/src/interact/assertions/state-comparison.ts +168 -0
- package/src/interact/assertions/visibility-assertion.ts +41 -0
- package/src/interact/conditional-action.ts +18 -12
- package/src/interact/index.ts +89 -3494
- package/src/interact/input-service.ts +11 -0
- package/src/interact/interaction-trace.ts +36 -0
- package/src/interact/model.ts +109 -0
- package/src/interact/observation.ts +7 -0
- package/src/interact/targeting/candidate-ancestor.ts +49 -0
- package/src/interact/targeting/candidate-result.ts +24 -0
- package/src/interact/targeting/candidate-scoring.ts +42 -0
- package/src/interact/targeting/element-helpers.ts +243 -0
- package/src/interact/targeting/find-element.ts +47 -0
- package/src/interact/targeting/nearby-control.ts +46 -0
- package/src/interact/targeting/resolved-elements.ts +20 -0
- package/src/interact/targeting/tap-target.ts +22 -0
- package/src/interact/targeting/target-scope.ts +121 -0
- package/src/interact/waits/legacy-log-wait.ts +30 -0
- package/src/interact/waits/legacy-wait-observations.ts +55 -0
- package/src/interact/waits/legacy-wait-state.ts +48 -0
- package/src/interact/waits/legacy-wait.ts +34 -0
- package/src/interact/waits/screen-wait.ts +37 -0
- package/src/interact/waits/ui-change-helpers.ts +184 -0
- package/src/interact/waits/ui-change-state.ts +26 -0
- package/src/interact/waits/ui-change-wait.ts +59 -0
- package/src/interact/waits/ui-wait-condition.ts +52 -0
- package/src/interact/waits/ui-wait-state.ts +55 -0
- package/src/interact/waits/ui-wait.ts +84 -0
- package/src/manage/android.ts +56 -50
- package/src/manage/index.ts +63 -93
- package/src/manage/ios/build-types.ts +14 -0
- package/src/manage/ios/build.ts +230 -0
- package/src/manage/ios/project-discovery.ts +26 -0
- package/src/manage/ios/scheme.ts +16 -0
- package/src/manage/ios.ts +67 -298
- package/src/observe/android/context.ts +1 -0
- package/src/observe/android/current-screen.ts +63 -0
- package/src/observe/android/fingerprint.ts +13 -0
- package/src/observe/android/log-stream.ts +127 -0
- package/src/observe/android/logs.ts +110 -0
- package/src/observe/android/screenshot.ts +79 -0
- package/src/observe/android/ui-tree.ts +113 -0
- package/src/observe/android.ts +17 -531
- package/src/observe/evidence.ts +122 -70
- package/src/observe/index.ts +24 -286
- package/src/observe/ios/context.ts +22 -0
- package/src/observe/ios/fingerprint.ts +12 -0
- package/src/observe/ios/log-stream.ts +103 -0
- package/src/observe/ios/logs.ts +179 -0
- package/src/observe/ios/screenshot.ts +26 -0
- package/src/observe/ios/ui-elements.ts +266 -0
- package/src/observe/ios/ui-tree.ts +143 -0
- package/src/observe/ios-trace/artifact.ts +55 -0
- package/src/observe/ios-trace/capabilities.ts +74 -0
- package/src/observe/ios-trace/native.ts +72 -0
- package/src/observe/ios-trace/notification.ts +30 -0
- package/src/observe/ios-trace/process.ts +82 -0
- package/src/observe/ios-trace/sessions.ts +204 -0
- package/src/observe/ios.ts +18 -749
- package/src/observe/logs/model.ts +11 -0
- package/src/{network → observe/network}/index.ts +2 -2
- package/src/observe/readiness-service.ts +6 -4
- package/src/observe/readiness.ts +42 -21
- package/src/observe/screenshot-encoding.ts +32 -0
- package/src/observe/snapshot-collection.ts +69 -0
- package/src/observe/snapshot-logs.ts +26 -0
- package/src/observe/snapshot-metadata.ts +51 -31
- package/src/observe/snapshot-semantic.ts +153 -0
- package/src/observe/system-trace-error.ts +3 -0
- package/src/observe/system-trace-router.ts +61 -0
- package/src/observe/system-trace.ts +28 -19
- package/src/runtime/action-results.ts +376 -0
- package/src/runtime/clock.ts +9 -0
- package/src/server/common.ts +9 -359
- package/src/server/definitions/assert.ts +164 -0
- package/src/server/definitions/diagnostic.ts +120 -0
- package/src/server/definitions/input.ts +276 -0
- package/src/server/definitions/manage.ts +196 -0
- package/src/server/definitions/observe.ts +151 -0
- package/src/server/definitions/target.ts +140 -0
- package/src/server/definitions/wait.ts +107 -0
- package/src/server/handlers/action-execution.ts +164 -0
- package/src/server/handlers/correlation.ts +20 -0
- package/src/server/handlers/debugger-handlers.ts +58 -0
- package/src/server/handlers/debugger-response.ts +7 -0
- package/src/server/handlers/diagnostic.ts +86 -0
- package/src/server/handlers/handler-types.ts +7 -0
- package/src/server/handlers/input.ts +173 -0
- package/src/server/handlers/interact.ts +135 -0
- package/src/server/handlers/journey-assertions.ts +39 -0
- package/src/server/handlers/journey.ts +132 -0
- package/src/server/handlers/manage.ts +141 -0
- package/src/server/handlers/observe.ts +116 -0
- package/src/server/handlers/payload.ts +36 -0
- package/src/server/handlers/tool-handlers.ts +170 -0
- package/src/server/schemas/condition-schema.ts +2 -0
- package/src/server/schemas/debugger-schema.ts +46 -0
- package/src/server/{journey-schema.ts → schemas/journey-schema.ts} +7 -22
- package/src/server/schemas/system-trace-schema.ts +23 -0
- package/src/server/tool-definitions.ts +67 -1143
- package/src/server-core.ts +2 -2
- package/src/server.ts +4 -4
- package/src/system/android-status.ts +124 -0
- package/src/system/android.ts +33 -21
- package/src/system/index.ts +21 -525
- package/src/system/ios-status.ts +147 -0
- package/src/system/ios.ts +14 -10
- package/src/system/model.ts +41 -0
- package/src/system/probes.ts +114 -0
- package/src/system/status-summary.ts +47 -0
- package/src/system/unsupported-status.ts +55 -0
- package/src/types.ts +16 -106
- package/src/utils/android/commands.ts +81 -0
- package/src/utils/android/gradle.ts +132 -0
- package/src/utils/android/logs.ts +103 -0
- package/src/utils/android/ui-tree.ts +239 -0
- package/src/utils/android/utils.ts +16 -556
- package/src/utils/cli/idb/check-idb.ts +4 -4
- package/src/utils/cli/idb/idb-helper.ts +6 -8
- package/src/utils/cli/idb/install-idb.ts +15 -9
- package/src/utils/cli/ios/preflight-ios.ts +39 -31
- package/src/utils/cli/ios/run-ios-ui-tree-tap.ts +4 -4
- package/src/utils/ios/utils.ts +60 -61
- package/src/utils/java.ts +62 -43
- package/src/utils/resolve-device.ts +9 -6
- package/src/utils/ui/index.ts +28 -28
- package/test/device/automated/debugger/coroutine-lifecycle.ts +27 -0
- package/test/device/automated/debugger/coroutine-support.ts +140 -0
- package/test/device/automated/debugger/coroutine.android.test.ts +169 -0
- package/test/device/automated/debugger/kotlin.android.test.ts +127 -0
- package/test/device/automated/debugger/runtime.android.test.ts +19 -3
- package/test/device/automated/debugger/runtime.ios.test.ts +221 -0
- package/test/device/automated/interact/interaction.android.test.ts +56 -0
- package/test/device/automated/observe/ios-system-trace.smoke.ts +119 -0
- package/test/device/automated/observe/system-trace.smoke.ts +1 -1
- package/test/device/manual/interact/modul8_selector_tap.manual.ts +1 -1
- package/test/fixtures/contracts/tool-definitions.json +3696 -0
- package/test/fixtures/coroutine-app/MainActivity.kt +100 -0
- package/test/fixtures/coroutine-app/README.md +48 -0
- package/test/fixtures/coroutine-app/build.ts +35 -0
- package/test/fixtures/debugger-app/MainActivity.java +21 -0
- package/test/fixtures/debugger-app/MainActivity.kt +32 -0
- package/test/fixtures/debugger-app/README.md +52 -0
- package/test/fixtures/debugger-app/build.ts +25 -15
- package/test/fixtures/ios-debugger-app/Main.swift +95 -0
- package/test/fixtures/ios-debugger-app/README.md +27 -0
- package/test/fixtures/ios-debugger-app/build.ts +21 -0
- package/test/fixtures/latency-journey-app/README.md +2 -0
- package/test/fixtures/readiness-app/README.md +2 -0
- package/test/helpers/ios-trace-shutdown.ts +29 -0
- package/test/unit/debugger/coroutine-lifecycle.test.ts +43 -0
- package/test/unit/debugger/diagnostic-sessions.test.ts +67 -0
- package/test/unit/debugger/diagnostics.test.ts +80 -0
- package/test/unit/debugger/guards.test.ts +4 -0
- package/test/unit/debugger/handle-guards.test.ts +88 -0
- package/test/unit/debugger/ios-preparation.test.ts +57 -0
- package/test/unit/debugger/ios.test.ts +104 -0
- package/test/unit/debugger/lldb-worker.py +166 -0
- package/test/unit/debugger/lldb-worker.test.ts +10 -0
- package/test/unit/debugger/preparation.test.ts +32 -0
- package/test/unit/debugger/protocol.test.ts +15 -0
- package/test/unit/debugger/sessions.test.ts +1 -1
- package/test/unit/interact/adjustment_service.test.ts +42 -0
- package/test/unit/interact/adjustment_verification.test.ts +35 -0
- package/test/unit/interact/clock_dependencies.test.ts +63 -0
- package/test/unit/interact/element_helpers.test.ts +19 -0
- package/test/unit/interact/legacy_wait_service.test.ts +17 -0
- package/test/unit/interact/state_comparison.test.ts +20 -0
- package/test/unit/interact/target_scope.test.ts +35 -0
- package/test/unit/network/get_network_activity.test.ts +1 -1
- package/test/unit/observe/ios-trace-native.test.ts +90 -0
- package/test/unit/observe/ios-trace-sessions.test.ts +131 -0
- package/test/unit/observe/readiness.test.ts +1 -1
- package/test/unit/observe/screenshot-encoding.test.ts +30 -0
- package/test/unit/observe/snapshot-logs.test.ts +14 -0
- package/test/unit/observe/system-trace-router.test.ts +49 -0
- package/test/unit/quality/agent-plugin-export.test.ts +38 -0
- package/test/unit/quality/architecture.test.ts +60 -0
- package/test/unit/quality/code-quality.test.ts +58 -0
- package/test/unit/quality/interaction_boundaries.test.ts +24 -0
- package/test/unit/server/conditional_actions.test.ts +1 -1
- package/test/unit/server/conditional_schema.test.ts +2 -2
- package/test/unit/server/debugger-response.test.ts +63 -0
- package/test/unit/server/system-trace.test.ts +12 -3
- package/test/unit/server/tool_definitions_parity.test.ts +8 -0
- package/dist/server/debugger-handlers.js +0 -38
- package/dist/server/system-trace-schema.js +0 -17
- package/dist/server/tool-handlers.js +0 -1000
- package/docs/ROADMAP.md +0 -646
- package/docs/benchmarks/ui-tree-performance/bridge-probe.json +0 -29
- package/docs/benchmarks/ui-tree-performance/initial-baseline.json +0 -59560
- package/docs/specs/baseline-spec-v0.md +0 -312
- package/docs/specs/mcp-tooling-spec-v1.md +0 -446
- package/src/server/debugger-handlers.ts +0 -29
- package/src/server/debugger-schema.ts +0 -37
- package/src/server/system-trace-schema.ts +0 -17
- package/src/server/tool-handlers.ts +0 -1008
- /package/dist/{server/condition-schema.js → contracts/condition.js} +0 -0
- /package/dist/server/{readiness-schema.js → schemas/readiness-schema.js} +0 -0
- /package/src/{server/condition-schema.ts → contracts/condition.ts} +0 -0
- /package/src/server/{readiness-schema.ts → schemas/readiness-schema.ts} +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
1
|
# RFC 013 — Wait and Synchronization Reliability
|
|
4
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
5
5
|
## Status
|
|
6
6
|
|
|
7
7
|
Draft
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## 1. Summary
|
|
12
12
|
|
|
13
13
|
This RFC introduces deterministic synchronization primitives and snapshot freshness semantics for mobile-debug-mcp.
|
|
14
14
|
|
|
@@ -32,7 +32,7 @@ These capabilities are intended to improve reliability across:
|
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
## Relationship to Existing Synchronization Contracts
|
|
36
36
|
|
|
37
37
|
This RFC extends and clarifies the synchronization semantics introduced in RFC003 and the currently shipped synchronization tooling.
|
|
38
38
|
|
|
@@ -58,7 +58,7 @@ It does not invalidate existing synchronization tooling.
|
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
## 2. Problem Statement
|
|
62
62
|
|
|
63
63
|
Current interaction flows rely heavily on immediate post-action reasoning against potentially transient UI state.
|
|
64
64
|
|
|
@@ -93,7 +93,7 @@ This RFC introduces explicit synchronization semantics to address those gaps.
|
|
|
93
93
|
|
|
94
94
|
---
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
## 3. Goals
|
|
97
97
|
|
|
98
98
|
The system should:
|
|
99
99
|
|
|
@@ -108,7 +108,7 @@ The system should:
|
|
|
108
108
|
|
|
109
109
|
---
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
## 4. Non-Goals
|
|
112
112
|
|
|
113
113
|
This RFC does not attempt to:
|
|
114
114
|
|
|
@@ -122,7 +122,7 @@ This RFC does not attempt to:
|
|
|
122
122
|
|
|
123
123
|
---
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
## 5. Design Principles
|
|
126
126
|
|
|
127
127
|
## 5.1 UI-First Synchronization
|
|
128
128
|
|
|
@@ -206,7 +206,7 @@ perform action
|
|
|
206
206
|
|
|
207
207
|
---
|
|
208
208
|
|
|
209
|
-
|
|
209
|
+
## 6. Definitions
|
|
210
210
|
|
|
211
211
|
## Fresh
|
|
212
212
|
|
|
@@ -267,7 +267,7 @@ A synchronization state in which:
|
|
|
267
267
|
|
|
268
268
|
---
|
|
269
269
|
|
|
270
|
-
|
|
270
|
+
## 7. Proposed Capabilities
|
|
271
271
|
|
|
272
272
|
## 7.1 wait_for_ui_change
|
|
273
273
|
|
|
@@ -585,7 +585,7 @@ This capability therefore depends on the richer element identity RFC.
|
|
|
585
585
|
|
|
586
586
|
---
|
|
587
587
|
|
|
588
|
-
|
|
588
|
+
## 8. Synchronization Lifecycle Model
|
|
589
589
|
|
|
590
590
|
Synchronization should follow a consistent lifecycle.
|
|
591
591
|
|
|
@@ -609,7 +609,7 @@ This lifecycle is intended to standardize synchronization expectations across to
|
|
|
609
609
|
|
|
610
610
|
---
|
|
611
611
|
|
|
612
|
-
|
|
612
|
+
## 9. Agent Guidance and Guardrails
|
|
613
613
|
|
|
614
614
|
## Preferred Flow
|
|
615
615
|
|
|
@@ -650,7 +650,7 @@ Retries should not replace synchronization primitives.
|
|
|
650
650
|
|
|
651
651
|
---
|
|
652
652
|
|
|
653
|
-
|
|
653
|
+
## 10. Failure Modes
|
|
654
654
|
|
|
655
655
|
## Infinite Animations
|
|
656
656
|
|
|
@@ -714,7 +714,7 @@ Mitigation:
|
|
|
714
714
|
|
|
715
715
|
---
|
|
716
716
|
|
|
717
|
-
|
|
717
|
+
## 11. Platform Considerations
|
|
718
718
|
|
|
719
719
|
## Android Views
|
|
720
720
|
|
|
@@ -758,7 +758,7 @@ Stabilization windows are especially important.
|
|
|
758
758
|
|
|
759
759
|
---
|
|
760
760
|
|
|
761
|
-
|
|
761
|
+
## 12. Telemetry and Metrics
|
|
762
762
|
|
|
763
763
|
The implementation should track:
|
|
764
764
|
|
|
@@ -774,7 +774,7 @@ These metrics should be used to tune convergence heuristics.
|
|
|
774
774
|
|
|
775
775
|
---
|
|
776
776
|
|
|
777
|
-
|
|
777
|
+
## 13. Rollout Strategy
|
|
778
778
|
|
|
779
779
|
## Phase 1
|
|
780
780
|
|
|
@@ -818,7 +818,7 @@ Introduce:
|
|
|
818
818
|
|
|
819
819
|
---
|
|
820
820
|
|
|
821
|
-
|
|
821
|
+
## 14. Design Closure
|
|
822
822
|
|
|
823
823
|
This specification is fully defined and implementation-ready.
|
|
824
824
|
|
|
@@ -836,7 +836,7 @@ The following areas are fully specified:
|
|
|
836
836
|
- diff semantics (structural + semantic accessibility only)
|
|
837
837
|
- default synchronization scope (screen)
|
|
838
838
|
|
|
839
|
-
|
|
839
|
+
## 15. Dependencies
|
|
840
840
|
|
|
841
841
|
## Depends On
|
|
842
842
|
|
|
@@ -855,7 +855,7 @@ The following areas are fully specified:
|
|
|
855
855
|
|
|
856
856
|
---
|
|
857
857
|
|
|
858
|
-
|
|
858
|
+
## 16. Conclusion
|
|
859
859
|
|
|
860
860
|
Reliable synchronization is foundational to deterministic mobile automation.
|
|
861
861
|
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# RFC 014 — Actionability Resolution
|
|
2
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
3
5
|
## Status
|
|
4
6
|
|
|
5
7
|
Draft
|
|
6
8
|
|
|
7
9
|
---
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
## 1. Summary
|
|
10
12
|
|
|
11
13
|
This RFC defines a deterministic model for resolving whether a UI element is actionable within mobile-debug-mcp.
|
|
12
14
|
|
|
@@ -20,7 +22,7 @@ It builds directly on:
|
|
|
20
22
|
|
|
21
23
|
---
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
## 2. Relationship to Existing Resolution System (RFC 005 / RFC 007)
|
|
24
26
|
|
|
25
27
|
This RFC refines, but does not replace, the existing resolution pipeline defined in RFC 005 (Resolved Stage) and RFC 007 (Executable Target Selection).
|
|
26
28
|
|
|
@@ -34,7 +36,7 @@ RFC 014 MUST be applied AFTER RFC 005/007 resolution and BEFORE any interaction
|
|
|
34
36
|
|
|
35
37
|
---
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
## 3. Problem Statement
|
|
38
40
|
|
|
39
41
|
Current interaction failures arise when actions are attempted on elements that are:
|
|
40
42
|
|
|
@@ -54,7 +56,7 @@ There is currently no single authoritative model defining when an element is saf
|
|
|
54
56
|
|
|
55
57
|
---
|
|
56
58
|
|
|
57
|
-
|
|
59
|
+
## 4. Goals
|
|
58
60
|
|
|
59
61
|
The system should:
|
|
60
62
|
|
|
@@ -66,7 +68,7 @@ The system should:
|
|
|
66
68
|
|
|
67
69
|
---
|
|
68
70
|
|
|
69
|
-
|
|
71
|
+
## 5. Non-Goals
|
|
70
72
|
|
|
71
73
|
This RFC does NOT:
|
|
72
74
|
|
|
@@ -78,7 +80,7 @@ This RFC does NOT:
|
|
|
78
80
|
|
|
79
81
|
---
|
|
80
82
|
|
|
81
|
-
|
|
83
|
+
## 6. Definition: Actionability
|
|
82
84
|
|
|
83
85
|
An element is considered **actionable** if ALL of the following conditions are satisfied:
|
|
84
86
|
|
|
@@ -122,7 +124,7 @@ If identity cannot be resolved consistently across snapshots, the element MUST b
|
|
|
122
124
|
|
|
123
125
|
---
|
|
124
126
|
|
|
125
|
-
|
|
127
|
+
## 7. Actionability Evaluation Model (Runtime Contract)
|
|
126
128
|
|
|
127
129
|
Actionability is evaluated using runtime-provided fields from the resolved element and snapshot system.
|
|
128
130
|
|
|
@@ -222,7 +224,7 @@ Short-circuit evaluation is permitted for performance but MUST NOT change final
|
|
|
222
224
|
|
|
223
225
|
---
|
|
224
226
|
|
|
225
|
-
|
|
227
|
+
## 8. Resolution Lifecycle
|
|
226
228
|
|
|
227
229
|
Actionability MUST be evaluated in the following sequence:
|
|
228
230
|
|
|
@@ -238,7 +240,7 @@ If any step fails, the element MUST be considered non-actionable.
|
|
|
238
240
|
|
|
239
241
|
---
|
|
240
242
|
|
|
241
|
-
|
|
243
|
+
## 9. Interaction Guardrail
|
|
242
244
|
|
|
243
245
|
Actions MUST NOT be executed unless actionability resolution returns true.
|
|
244
246
|
|
|
@@ -250,7 +252,7 @@ If actionability is false:
|
|
|
250
252
|
|
|
251
253
|
---
|
|
252
254
|
|
|
253
|
-
|
|
255
|
+
## 10. Failure Modes
|
|
254
256
|
|
|
255
257
|
## 10.1 Transient Non-Actionability
|
|
256
258
|
|
|
@@ -293,7 +295,7 @@ Mitigation:
|
|
|
293
295
|
|
|
294
296
|
---
|
|
295
297
|
|
|
296
|
-
|
|
298
|
+
## 11. Platform Considerations
|
|
297
299
|
|
|
298
300
|
## Android
|
|
299
301
|
|
|
@@ -307,7 +309,7 @@ Mitigation:
|
|
|
307
309
|
|
|
308
310
|
---
|
|
309
311
|
|
|
310
|
-
|
|
312
|
+
## 12. Integration with RFC 013
|
|
311
313
|
|
|
312
314
|
Actionability Resolution depends on:
|
|
313
315
|
|
|
@@ -318,7 +320,7 @@ It MUST NOT evaluate elements from unstable snapshots.
|
|
|
318
320
|
|
|
319
321
|
---
|
|
320
322
|
|
|
321
|
-
|
|
323
|
+
## 13. Telemetry
|
|
322
324
|
|
|
323
325
|
Systems SHOULD track:
|
|
324
326
|
|
|
@@ -329,7 +331,7 @@ Systems SHOULD track:
|
|
|
329
331
|
|
|
330
332
|
---
|
|
331
333
|
|
|
332
|
-
|
|
334
|
+
## 14. Rollout Strategy
|
|
333
335
|
|
|
334
336
|
## Phase 1
|
|
335
337
|
|
|
@@ -347,7 +349,7 @@ The shipped interaction layer now applies iOS semantic tap eligibility in additi
|
|
|
347
349
|
|
|
348
350
|
---
|
|
349
351
|
|
|
350
|
-
|
|
352
|
+
## 15. Dependencies
|
|
351
353
|
|
|
352
354
|
## Depends On
|
|
353
355
|
|
|
@@ -357,7 +359,7 @@ The shipped interaction layer now applies iOS semantic tap eligibility in additi
|
|
|
357
359
|
|
|
358
360
|
---
|
|
359
361
|
|
|
360
|
-
|
|
362
|
+
## 15.1 Acceptance Criteria
|
|
361
363
|
|
|
362
364
|
An implementation of RFC 014 is considered correct if:
|
|
363
365
|
|
|
@@ -368,7 +370,7 @@ An implementation of RFC 014 is considered correct if:
|
|
|
368
370
|
- All failures produce a defined failure code
|
|
369
371
|
- Actionability is only evaluated AFTER RFC 005/007 resolution
|
|
370
372
|
|
|
371
|
-
|
|
373
|
+
## 16. Failure Codes (Actionability Gate)
|
|
372
374
|
|
|
373
375
|
## Failure Code Derivation Matrix
|
|
374
376
|
|
|
@@ -387,7 +389,7 @@ These are the only supported actionability failure codes.
|
|
|
387
389
|
|
|
388
390
|
Implementations SHOULD return the structured code together with a human-readable reason.
|
|
389
391
|
|
|
390
|
-
|
|
392
|
+
## 17. Conclusion
|
|
391
393
|
|
|
392
394
|
Actionability Resolution provides the final gate before UI interaction execution.
|
|
393
395
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Spec: Adjustable Control Support
|
|
2
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
3
5
|
## Purpose
|
|
4
6
|
|
|
5
7
|
Provide a deterministic, semantic interface for interacting with adjustable controls (such as sliders, steppers and other value-based controls) without relying primarily on coordinate manipulation.
|
|
@@ -8,7 +10,7 @@ The goal is to allow agents to request a target value rather than perform low-le
|
|
|
8
10
|
|
|
9
11
|
---
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
## Rationale
|
|
12
14
|
|
|
13
15
|
Adjustable controls are common throughout modern mobile applications, but they remain one of the least reliable interaction types for autonomous agents.
|
|
14
16
|
|
|
@@ -25,7 +27,7 @@ This specification introduces a semantic adjustment model where agents request t
|
|
|
25
27
|
|
|
26
28
|
---
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
## Goals
|
|
29
31
|
|
|
30
32
|
The implementation shall:
|
|
31
33
|
|
|
@@ -38,7 +40,7 @@ The implementation shall:
|
|
|
38
40
|
|
|
39
41
|
---
|
|
40
42
|
|
|
41
|
-
|
|
43
|
+
## Non-Goals
|
|
42
44
|
|
|
43
45
|
This specification does not:
|
|
44
46
|
|
|
@@ -50,7 +52,7 @@ This specification does not:
|
|
|
50
52
|
|
|
51
53
|
---
|
|
52
54
|
|
|
53
|
-
|
|
55
|
+
## Supported Controls
|
|
54
56
|
|
|
55
57
|
Initial scope includes:
|
|
56
58
|
|
|
@@ -66,7 +68,7 @@ All supported controls must expose or deterministically parse into a numeric val
|
|
|
66
68
|
|
|
67
69
|
---
|
|
68
70
|
|
|
69
|
-
|
|
71
|
+
## Runtime Interface
|
|
70
72
|
|
|
71
73
|
The public tool contract remains the existing `adjust_control` operation.
|
|
72
74
|
|
|
@@ -134,7 +136,7 @@ These changes require corresponding updates to the existing `adjust_control` imp
|
|
|
134
136
|
|
|
135
137
|
---
|
|
136
138
|
|
|
137
|
-
|
|
139
|
+
## Preconditions
|
|
138
140
|
|
|
139
141
|
Before execution the following conditions must be satisfied:
|
|
140
142
|
|
|
@@ -148,7 +150,7 @@ If any precondition fails, execution shall terminate without attempting adjustme
|
|
|
148
150
|
|
|
149
151
|
---
|
|
150
152
|
|
|
151
|
-
|
|
153
|
+
## Execution Model
|
|
152
154
|
|
|
153
155
|
## Phase 1 — Resolve
|
|
154
156
|
|
|
@@ -261,7 +263,7 @@ return CONTROL_CONVERGENCE_FAILED
|
|
|
261
263
|
|
|
262
264
|
---
|
|
263
265
|
|
|
264
|
-
|
|
266
|
+
## Strategy Detection
|
|
265
267
|
|
|
266
268
|
Strategy selection is deterministic and platform-specific.
|
|
267
269
|
|
|
@@ -353,7 +355,7 @@ The implementation shall use the existing coordinate gesture primitive and then
|
|
|
353
355
|
|
|
354
356
|
---
|
|
355
357
|
|
|
356
|
-
|
|
358
|
+
## Value Domains and Normalization
|
|
357
359
|
|
|
358
360
|
The initial public contract is numeric.
|
|
359
361
|
|
|
@@ -425,7 +427,7 @@ The implementation shall not silently clamp an out-of-range request unless the e
|
|
|
425
427
|
|
|
426
428
|
---
|
|
427
429
|
|
|
428
|
-
|
|
430
|
+
## Failure Modes
|
|
429
431
|
|
|
430
432
|
The implementation shall use existing runtime error codes.
|
|
431
433
|
|
|
@@ -440,7 +442,7 @@ The implementation shall not introduce new public failure codes for this capabil
|
|
|
440
442
|
|
|
441
443
|
---
|
|
442
444
|
|
|
443
|
-
|
|
445
|
+
## Acceptance Criteria
|
|
444
446
|
|
|
445
447
|
The implementation is complete when all of the following automated fixtures or smoke scenarios pass on each supported platform.
|
|
446
448
|
|
|
@@ -487,7 +489,7 @@ For every failed fixture:
|
|
|
487
489
|
|
|
488
490
|
---
|
|
489
491
|
|
|
490
|
-
|
|
492
|
+
## Dependencies
|
|
491
493
|
|
|
492
494
|
Depends on:
|
|
493
495
|
|
|
@@ -504,7 +506,7 @@ Strengthens:
|
|
|
504
506
|
|
|
505
507
|
---
|
|
506
508
|
|
|
507
|
-
|
|
509
|
+
## Future Work
|
|
508
510
|
|
|
509
511
|
The following capabilities are intentionally excluded from this specification:
|
|
510
512
|
|
|
@@ -519,7 +521,7 @@ These are covered by the **Adjustable Control Precision Hardening** specificatio
|
|
|
519
521
|
|
|
520
522
|
---
|
|
521
523
|
|
|
522
|
-
|
|
524
|
+
## Determinism Requirements
|
|
523
525
|
|
|
524
526
|
Given identical:
|
|
525
527
|
|
|
@@ -538,4 +540,4 @@ Execution shall not rely on:
|
|
|
538
540
|
- hidden mutable state
|
|
539
541
|
- undefined platform behaviour
|
|
540
542
|
|
|
541
|
-
---
|
|
543
|
+
---
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
1
|
# Specification 016 — Environment Auto-Configuration and Toolchain Discovery
|
|
4
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
5
5
|
## Purpose
|
|
6
6
|
|
|
7
7
|
Enable the Mobile Debug MCP to automatically discover, validate, and configure its required platform toolchains, reducing manual setup while maintaining deterministic behaviour.
|
|
@@ -10,7 +10,7 @@ The MCP should work out of the box on a standard development machine whenever th
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## Goals
|
|
14
14
|
|
|
15
15
|
- Eliminate manual executable path configuration for standard installations.
|
|
16
16
|
- Automatically discover Android and iOS toolchains.
|
|
@@ -21,7 +21,7 @@ The MCP should work out of the box on a standard development machine whenever th
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
## Non-Goals
|
|
25
25
|
|
|
26
26
|
This specification does not:
|
|
27
27
|
|
|
@@ -33,7 +33,7 @@ This specification does not:
|
|
|
33
33
|
|
|
34
34
|
---
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
## Supported Host Matrix
|
|
37
37
|
|
|
38
38
|
| Host OS | Android discovery | iOS discovery | Expected behaviour |
|
|
39
39
|
|---|---:|---:|---|
|
|
@@ -57,7 +57,7 @@ iOS discovery shall only run on macOS. On Linux and Windows, iOS status shall be
|
|
|
57
57
|
}
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
## Scope
|
|
61
61
|
|
|
62
62
|
## Android
|
|
63
63
|
|
|
@@ -87,7 +87,7 @@ iOS discovery shall only run on macOS. On Linux and Windows, iOS status shall be
|
|
|
87
87
|
|
|
88
88
|
---
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
## Runtime Behaviour
|
|
91
91
|
|
|
92
92
|
Toolchain discovery and validation shall be available through `get_system_status`.
|
|
93
93
|
|
|
@@ -109,7 +109,7 @@ The server shall not fail simply because one platform is unavailable.
|
|
|
109
109
|
|
|
110
110
|
---
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
## Discovery Priority
|
|
113
113
|
|
|
114
114
|
Every executable and toolchain root shall be resolved using the following deterministic order.
|
|
115
115
|
|
|
@@ -136,7 +136,7 @@ If multiple supported overrides are present for the same concern, the order show
|
|
|
136
136
|
|
|
137
137
|
An explicitly configured path that does not exist, is not executable, or fails validation shall not silently fall back to automatic discovery. It shall return a structured failure so configuration errors remain visible and deterministic.
|
|
138
138
|
|
|
139
|
-
|
|
139
|
+
## Tool Version Policy
|
|
140
140
|
|
|
141
141
|
Version validation shall be deterministic and tool-specific.
|
|
142
142
|
|
|
@@ -157,7 +157,7 @@ When a version string cannot be parsed, the tool shall return `TOOL_VERSION_UNSU
|
|
|
157
157
|
|
|
158
158
|
---
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
## Capability Detection
|
|
161
161
|
|
|
162
162
|
Discovery shall determine available capabilities rather than simply locating executables.
|
|
163
163
|
|
|
@@ -185,7 +185,7 @@ iOS capabilities may include:
|
|
|
185
185
|
|
|
186
186
|
Agents shall not need to know which underlying provider implements a capability.
|
|
187
187
|
|
|
188
|
-
|
|
188
|
+
## Provider Selection
|
|
189
189
|
|
|
190
190
|
Multiple providers may satisfy the same capability.
|
|
191
191
|
|
|
@@ -214,7 +214,7 @@ A platform may be partially ready when only a subset of capabilities has an avai
|
|
|
214
214
|
|
|
215
215
|
---
|
|
216
216
|
|
|
217
|
-
|
|
217
|
+
## Environment Validation
|
|
218
218
|
|
|
219
219
|
Validation shall confirm:
|
|
220
220
|
|
|
@@ -233,7 +233,7 @@ Examples:
|
|
|
233
233
|
- `xcrun` and `simctl` available with no booted simulator: iOS toolchain ready, device-dependent capabilities unavailable until a simulator is booted or device is connected.
|
|
234
234
|
- `adb` available with no connected device: Android toolchain ready, device-dependent capabilities unavailable until a device or emulator is connected.
|
|
235
235
|
|
|
236
|
-
|
|
236
|
+
## Diagnostic Contract
|
|
237
237
|
|
|
238
238
|
All discovery and validation failures shall use the following shape:
|
|
239
239
|
|
|
@@ -276,7 +276,7 @@ Raw shell errors may be recorded internally for diagnostics, but shall not be ex
|
|
|
276
276
|
|
|
277
277
|
---
|
|
278
278
|
|
|
279
|
-
|
|
279
|
+
## Partial Availability
|
|
280
280
|
|
|
281
281
|
Platform readiness shall be reported independently.
|
|
282
282
|
|
|
@@ -295,7 +295,7 @@ A platform status shall be one of:
|
|
|
295
295
|
- `unavailable`
|
|
296
296
|
- `unsupported`
|
|
297
297
|
|
|
298
|
-
|
|
298
|
+
## Runtime Introspection
|
|
299
299
|
|
|
300
300
|
`get_system_status` shall expose the environment summary using this minimum structure:
|
|
301
301
|
|
|
@@ -401,7 +401,7 @@ Each capability entry shall include:
|
|
|
401
401
|
|
|
402
402
|
---
|
|
403
403
|
|
|
404
|
-
|
|
404
|
+
## Compatibility
|
|
405
405
|
|
|
406
406
|
This specification extends the existing `get_system_status` surface additively.
|
|
407
407
|
|
|
@@ -429,7 +429,7 @@ Environment variables become optional overrides rather than mandatory configurat
|
|
|
429
429
|
|
|
430
430
|
---
|
|
431
431
|
|
|
432
|
-
|
|
432
|
+
## Failure Modes
|
|
433
433
|
|
|
434
434
|
The implementation shall return deterministic setup failures including:
|
|
435
435
|
|
|
@@ -455,7 +455,7 @@ Failure selection rules:
|
|
|
455
455
|
|
|
456
456
|
---
|
|
457
457
|
|
|
458
|
-
|
|
458
|
+
## Acceptance Criteria
|
|
459
459
|
|
|
460
460
|
The implementation is complete when all of the following are true.
|
|
461
461
|
|
|
@@ -521,7 +521,7 @@ The implementation is complete when all of the following are true.
|
|
|
521
521
|
|
|
522
522
|
---
|
|
523
523
|
|
|
524
|
-
|
|
524
|
+
## Future Work
|
|
525
525
|
|
|
526
526
|
Potential future enhancements include:
|
|
527
527
|
|
|
@@ -530,4 +530,4 @@ Potential future enhancements include:
|
|
|
530
530
|
- Toolchain health monitoring.
|
|
531
531
|
- Self-healing actions such as restarting adb, reconnecting devices, or refreshing simulator state.
|
|
532
532
|
- Installation guidance and package manager integration.
|
|
533
|
-
- Configurable version policies for enterprise environments.
|
|
533
|
+
- Configurable version policies for enterprise environments.
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
# Specification 019 — UI-Tree Observation Performance
|
|
2
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
3
5
|
## Status
|
|
4
6
|
|
|
5
7
|
Implemented for Android with a paired emulator benchmark. iOS correctness has
|
|
6
8
|
unit and simulator smoke coverage; iOS latency remains unmeasured. See
|
|
7
|
-
|
|
9
|
+
[benchmark guide](../../benchmarks/ui-tree-performance/README.md) for the paired reports,
|
|
8
10
|
and the retained failed first comparison attempt.
|
|
9
11
|
|
|
10
12
|
## 1. Summary
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Intent: conditional actions
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md) · [Specification](spec.md) · [Plan and verification](plan.md)
|
|
4
|
+
|
|
5
|
+
Originator: repository maintainer (design review).
|
|
4
6
|
Date: 2026-10-29.
|
|
5
7
|
Status: approved.
|
|
6
8
|
|
|
@@ -9,7 +11,7 @@ Status: approved.
|
|
|
9
11
|
“Conditional actions: Check expected state immediately before acting; stop and
|
|
10
12
|
return fresh evidence if it changed.”
|
|
11
13
|
|
|
12
|
-
Source: user request
|
|
14
|
+
Source: user request during design review, following adoption of the
|
|
13
15
|
repository development process.
|
|
14
16
|
|
|
15
17
|
## Desired outcome
|
|
@@ -57,6 +59,6 @@ state observation, and Android/iOS adapters for supported actions.
|
|
|
57
59
|
|
|
58
60
|
## Approval
|
|
59
61
|
|
|
60
|
-
Approved by the originator
|
|
62
|
+
Approved by the originator during design review on 2026-10-29: “yes”,
|
|
61
63
|
in direct response to the complete intent summary and linked artifact. Approval
|
|
62
64
|
covers the captured intent; specification approval remains a separate gate.
|