mobile-debug-mcp 0.34.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.
- 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/.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 +156 -129
- 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 +16 -6
- package/agent-plugin/mcp.json +1 -1
- package/agent-plugin/plugin.json +1 -1
- package/agent-plugin/skills/mobile-debug-mcp/SKILL.md +27 -2
- 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/protocol.js +33 -0
- package/dist/debugger/sessions.js +104 -62
- package/dist/debugger/worker.js +53 -42
- 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 +65 -3090
- 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 +42 -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.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 +4 -2
- package/dist/observe/readiness.js +29 -10
- 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.js +22 -13
- 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/{debugger-handlers.js → handlers/debugger-handlers.js} +22 -12
- package/dist/server/handlers/debugger-response.js +9 -0
- package/dist/server/handlers/diagnostic.js +69 -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 +160 -0
- package/dist/server/schemas/condition-schema.js +2 -0
- package/dist/server/{debugger-schema.js → schemas/debugger-schema.js} +11 -6
- package/dist/server/{journey-schema.js → schemas/journey-schema.js} +7 -22
- package/dist/server/tool-definitions.js +58 -1135
- package/dist/server-core.js +2 -2
- 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 +45 -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 +44 -0
- package/docs/README.md +38 -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 +118 -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/tools/TOOLS.md +31 -18
- package/docs/tools/{evidence.md → correlated-evidence.md} +9 -1
- package/docs/tools/debugger.md +76 -0
- 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 +9 -1
- package/docs/tools/system.md +12 -5
- package/package.json +11 -8
- 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 +2 -1
- package/src/debugger/diagnostics.ts +43 -0
- package/src/debugger/guard.ts +6 -1
- package/{worker → src/debugger/java}/DebuggerWorker.java +9 -3
- package/src/debugger/protocol.ts +37 -0
- package/src/debugger/sessions.ts +314 -155
- package/src/debugger/worker.ts +51 -38
- 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 +76 -3492
- 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 +65 -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.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 +5 -3
- package/src/observe/readiness.ts +39 -18
- 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.ts +24 -15
- 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 +39 -0
- package/src/server/handlers/debugger-response.ts +7 -0
- package/src/server/handlers/diagnostic.ts +79 -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 +159 -0
- package/src/server/schemas/condition-schema.ts +2 -0
- package/src/server/{debugger-schema.ts → schemas/debugger-schema.ts} +13 -7
- package/src/server/{journey-schema.ts → schemas/journey-schema.ts} +7 -22
- package/src/server/{system-trace-schema.ts → schemas/system-trace-schema.ts} +3 -3
- package/src/server/tool-definitions.ts +67 -1143
- package/src/server-core.ts +2 -2
- package/src/server.ts +1 -1
- 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 +57 -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/interact/interaction.android.test.ts +56 -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 +3536 -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/latency-journey-app/README.md +2 -0
- package/test/fixtures/readiness-app/README.md +2 -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/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/screenshot-encoding.test.ts +30 -0
- package/test/unit/observe/snapshot-logs.test.ts +14 -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/tool_definitions_parity.test.ts +8 -0
- 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/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/dist/server/{system-trace-schema.js → schemas/system-trace-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,5 +1,7 @@
|
|
|
1
1
|
# UI tree observation performance benchmark
|
|
2
2
|
|
|
3
|
+
[Benchmark index](../README.md) · [Documentation](../../README.md)
|
|
4
|
+
|
|
3
5
|
This paired Android benchmark compares a clean, built instrumentation baseline
|
|
4
6
|
with a clean, built candidate. It runs the Spec 018 static journey and a local
|
|
5
7
|
network-backed loading-to-ready flow against the same fixture APK and emulator.
|
|
@@ -41,19 +43,25 @@ not gain timing fields. Events contain timings, platform, generated journey step
|
|
|
41
43
|
IDs, and opaque acquisition IDs. They omit UI contents, app identifiers,
|
|
42
44
|
screenshots, logs, payloads, and device serials. iOS latency remains unmeasured.
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
the
|
|
46
|
+
## Recorded results
|
|
47
|
+
|
|
48
|
+
Read the [comparison report](comparison.md) for measurements and limitations.
|
|
49
|
+
The checked-in reports describe a historical run, not the current checkout's
|
|
50
|
+
performance.
|
|
51
|
+
|
|
52
|
+
| File | Purpose |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| [comparison.md](comparison.md) | Human-readable results and interpretation. |
|
|
55
|
+
| [comparison.json](comparison.json) | Complete paired report, including both modes and per-attempt data. |
|
|
56
|
+
| [baseline.json](baseline.json) | Baseline-only view of the paired run. |
|
|
57
|
+
| [candidate.json](candidate.json) | Candidate-only view of the paired run. |
|
|
58
|
+
| [comparison-attempt-1.json](comparison-attempt-1.json) | Earlier failed comparison, retained because the unexplained stalls remain a limitation. |
|
|
59
|
+
|
|
60
|
+
The paired baseline and candidate use the same fixture APK hash. The separate
|
|
61
|
+
views are generated outputs; use the complete comparison for the full record.
|
|
62
|
+
Baseline-only runs also write `baseline.json`, so keep paired reports together
|
|
63
|
+
when recording a new comparison.
|
|
64
|
+
|
|
65
|
+
Use the commit identifiers in the JSON reports to identify the measured source.
|
|
66
|
+
Reproducing the run requires clean, built checkouts of those commits and the
|
|
67
|
+
fixture prerequisites described above.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# UI tree observation performance
|
|
2
2
|
|
|
3
|
+
[Benchmark index](../README.md) · [Documentation](../../README.md)
|
|
4
|
+
|
|
3
5
|
Fixture SHA-256: be322549a4ba154c0b1c85876559157bb21a911673906d270a7ec26dc2fcfa89. Android 16, API 36. Three warm-ups and ten measured attempts per flow and mode. Failed attempts are visible in the JSON reports and excluded from percentiles.
|
|
4
6
|
|
|
5
7
|
| Mode | Flow | p50 ms | p95 ms | Failures |
|
|
@@ -29,13 +31,12 @@ visible in the acquisition records. The candidate also lowers network p95 at
|
|
|
29
31
|
both response delays. The fixture recorded no `VERIFICATION_UNAVAILABLE` in
|
|
30
32
|
either mode, so this result does not establish its rate in other apps.
|
|
31
33
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
not prove the stall cannot recur. iOS latency was not measured.
|
|
34
|
+
The paired [baseline](baseline.json), [candidate](candidate.json), and
|
|
35
|
+
[complete comparison](comparison.json) use one APK SHA-256 and the same emulator
|
|
36
|
+
settings. An [earlier paired attempt](comparison-attempt-1.json) recorded one
|
|
37
|
+
measured baseline 100 ms network read failing after a 181.97 s physical
|
|
38
|
+
acquisition and one candidate 1,500 ms warm-up failing before an observation
|
|
39
|
+
event. That attempt failed the zero-failure gate. The unchanged repeat above had
|
|
40
|
+
no failures. The cause of the first attempt's stalls was not established, so the
|
|
41
|
+
repeat supports the latency result but does not prove the stall cannot recur.
|
|
42
|
+
iOS latency was not measured.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Code structure and quality checks
|
|
2
|
+
|
|
3
|
+
[Documentation](README.md) · [Contributing](../CONTRIBUTING.md)
|
|
4
|
+
|
|
5
|
+
Run `npm run lint` before submitting a change. It runs the existing ESLint rules
|
|
6
|
+
and `npm run check:quality` plus `npm run check:architecture`. These checks also run in `npm run verify` and the
|
|
7
|
+
unit CI job; quality failures exit nonzero even with ESLint's `--quiet` option.
|
|
8
|
+
|
|
9
|
+
## Limits
|
|
10
|
+
|
|
11
|
+
Production TypeScript is checked against these defaults:
|
|
12
|
+
|
|
13
|
+
| Metric | Limit |
|
|
14
|
+
| --- | ---: |
|
|
15
|
+
| File length | 500 lines |
|
|
16
|
+
| Class length | 300 lines |
|
|
17
|
+
| Function or method length | 80 lines |
|
|
18
|
+
| Cyclomatic complexity | 20 |
|
|
19
|
+
| Control-flow nesting | 4 |
|
|
20
|
+
| New explicit `any` | 0 |
|
|
21
|
+
|
|
22
|
+
Line counts exclude blank and comment-only lines. Java source has the file-length
|
|
23
|
+
limit; TypeScript class/function/type metrics do not apply to Java. Existing
|
|
24
|
+
ESLint rules still apply to tests, but the production size gates do not apply to
|
|
25
|
+
fixture tables or self-running test scripts.
|
|
26
|
+
|
|
27
|
+
Prefer cohesive responsibilities and typed boundaries. Avoid compressing code,
|
|
28
|
+
adding trivial wrappers, or disabling rules to meet a number. The checks help
|
|
29
|
+
identify risk; passing them does not replace a design or correctness review.
|
|
30
|
+
|
|
31
|
+
## Architecture checks
|
|
32
|
+
|
|
33
|
+
`npm run check:architecture` uses pinned ArchUnitTS (`archunit`) to enforce four
|
|
34
|
+
rules over the production dependency graph:
|
|
35
|
+
|
|
36
|
+
- Shared contracts cannot import application implementations outside `contracts/`.
|
|
37
|
+
- Capability and shared modules cannot import the MCP server layer.
|
|
38
|
+
- The listed pure interaction calculations cannot import native I/O or service
|
|
39
|
+
facades. Their exact scope is defined in
|
|
40
|
+
[the rules](../scripts/check-architecture.mjs).
|
|
41
|
+
- Production runtime dependencies must be cycle-free. Type-only dependencies
|
|
42
|
+
count for boundary rules, but type-only cycles do not count as runtime cycles.
|
|
43
|
+
|
|
44
|
+
ArchUnitTS 2.5.4 extracts static imports. A small
|
|
45
|
+
[TypeScript resolution adapter](../scripts/architecture-graph.mjs) adds re-exports,
|
|
46
|
+
import types, literal dynamic imports, `require` calls and Node builtins. It uses
|
|
47
|
+
the repository's `tsconfig.json`, including NodeNext `.js` imports. Nonliteral
|
|
48
|
+
loads and unresolved dependencies fail the check instead of silently disappearing.
|
|
49
|
+
Boundary rules check direct dependencies; cycle detection checks the internal
|
|
50
|
+
runtime graph. This does not analyse Java worker dependencies or reflective loads.
|
|
51
|
+
|
|
52
|
+
[Negative-control tests](../test/unit/quality/architecture.test.ts) prove that
|
|
53
|
+
broken boundaries, cycles, aliases, and dynamic/re-export dependencies are caught,
|
|
54
|
+
and empty or incomplete graphs fail. The current graph needs no cycle exceptions.
|
|
55
|
+
Keep new rules aligned with the module ownership below; changing architecture
|
|
56
|
+
requires reviewing the rule alongside the implementation.
|
|
57
|
+
|
|
58
|
+
## Baseline policy
|
|
59
|
+
|
|
60
|
+
The [reviewed baseline](../scripts/code-quality-baseline.json) is empty: all
|
|
61
|
+
production source currently meets the default limits, including zero explicit
|
|
62
|
+
`any` occurrences. If an exception is explicitly approved, its entry records the
|
|
63
|
+
file, rule and symbol. Each entry is a ceiling, not a target.
|
|
64
|
+
An existing exception cannot grow, and an improvement must lower or remove its
|
|
65
|
+
entry. New files and renamed symbols do not inherit exceptions. Unrelated
|
|
66
|
+
improvements cannot compensate for a regression elsewhere.
|
|
67
|
+
|
|
68
|
+
Lint and CI never regenerate the baseline. When reducing debt, edit the affected
|
|
69
|
+
entries explicitly and include that diff in review. New debt or raised ceilings
|
|
70
|
+
require a design decision and review; there is no blanket suppression mechanism.
|
|
71
|
+
Inline suppression of these gates is rejected. Anonymous callbacks have identities
|
|
72
|
+
based on their enclosing scope and body, so changing an exceptional callback
|
|
73
|
+
requires reviewing its exception rather than silently transferring it.
|
|
74
|
+
|
|
75
|
+
## Module ownership
|
|
76
|
+
|
|
77
|
+
- `src/server/` is the MCP boundary: `definitions/` publishes tools,
|
|
78
|
+
`schemas/` validates MCP requests, and `handlers/` dispatches them.
|
|
79
|
+
`tool-definitions.ts` assembles the public definitions; `common.ts` provides
|
|
80
|
+
argument readers and response serialization. Capability handlers live in
|
|
81
|
+
`manage.ts`, `observe.ts`, `interact.ts`, `input.ts`, `journey.ts`, and
|
|
82
|
+
`diagnostic.ts`. `action-execution.ts` owns dispatch, condition handling,
|
|
83
|
+
verification and response phases; the central handler retains registration,
|
|
84
|
+
timing and debugger guards.
|
|
85
|
+
- `src/contracts/` holds shared input shapes and validation used across
|
|
86
|
+
capabilities. These contracts do not depend on MCP dispatch.
|
|
87
|
+
- `src/runtime/` currently holds action-result and trace construction shared by
|
|
88
|
+
dispatch and interactions, plus a small injectable wall-clock/delay interface
|
|
89
|
+
for polling services. Production clocks retain existing timer and readiness
|
|
90
|
+
budget semantics. It is separate from MCP response serialization;
|
|
91
|
+
interaction and runtime modules cannot import server-layer code.
|
|
92
|
+
- `src/interact/` owns actions and their supporting services. `index.ts` is the
|
|
93
|
+
composition facade; `android.ts` and `ios.ts` implement native input.
|
|
94
|
+
`adjustment/` contains adjustable-control strategies and calculations;
|
|
95
|
+
`targeting/` contains candidate ranking, element handles and target resolution;
|
|
96
|
+
`waits/` contains synchronization and legacy waits; `assertions/` contains
|
|
97
|
+
screen, visibility and state checks. Shared observation and input interfaces
|
|
98
|
+
remain at the interaction root. `ToolsInteract` must meet the 300-line class
|
|
99
|
+
budget without exceptions.
|
|
100
|
+
- `src/observe/` owns evidence acquisition and snapshots. Android and iOS facades
|
|
101
|
+
delegate to platform folders for trees, logs, screenshots, fingerprints and log
|
|
102
|
+
streams. Snapshot collection, log normalization and semantic summaries are
|
|
103
|
+
separate modules; screenshot encoding retains platform-specific alpha policies.
|
|
104
|
+
- `src/manage/ios/` owns Xcode project and scheme discovery, build preparation,
|
|
105
|
+
execution, watchdogs and diagnostics behind the existing iOS facade.
|
|
106
|
+
- `src/system/` separates probes, platform capability policies and status summaries.
|
|
107
|
+
`src/utils/android/` separates commands, Gradle preparation, logs and UI parsing;
|
|
108
|
+
`utils.ts` retains compatibility exports and device discovery.
|
|
109
|
+
- `src/observe/network/` infers HTTP activity from Android logcat and iOS
|
|
110
|
+
simulator logs. It supports `get_network_activity` and action classification;
|
|
111
|
+
it is not packet capture or a proxy. Results depend on the app logging requests,
|
|
112
|
+
and the current implementation does not measure request duration.
|
|
113
|
+
- `src/debugger/protocol.ts` validates worker messages. The session manager owns
|
|
114
|
+
serialized transitions and cleanup; the Java worker owns JDI operations.
|
|
115
|
+
|
|
116
|
+
The [refactoring plan](specs/026-code-structure-and-quality-gates/plan.md) records
|
|
117
|
+
progress and verification. The [follow-on health cleanup](specs/026-code-structure-and-quality-gates/health-plan.md)
|
|
118
|
+
records removal of the legacy baseline and the Node 22 dependency updates.
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# RFC-001: Stronger State Verification
|
|
2
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
3
5
|
Priority: 1
|
|
4
6
|
Depends on: Snapshot v1
|
|
5
7
|
Related Roadmap Item: Priority 1 — Stronger State Verification
|
|
6
8
|
|
|
7
9
|
---
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
## 1. Problem
|
|
10
12
|
|
|
11
13
|
Agents currently infer UI control state too often from surrounding text or visual clues instead of reading authoritative control state.
|
|
12
14
|
|
|
@@ -35,7 +37,7 @@ Shift from visual inference to explicit state introspection.
|
|
|
35
37
|
|
|
36
38
|
---
|
|
37
39
|
|
|
38
|
-
|
|
40
|
+
## 2. Goals
|
|
39
41
|
|
|
40
42
|
This RFC introduces:
|
|
41
43
|
|
|
@@ -52,7 +54,7 @@ Success goals:
|
|
|
52
54
|
|
|
53
55
|
---
|
|
54
56
|
|
|
55
|
-
|
|
57
|
+
## 3. Non-Goals
|
|
56
58
|
|
|
57
59
|
This RFC does not:
|
|
58
60
|
|
|
@@ -64,7 +66,7 @@ This RFC does not:
|
|
|
64
66
|
|
|
65
67
|
---
|
|
66
68
|
|
|
67
|
-
|
|
69
|
+
## 4. Proposed Model
|
|
68
70
|
|
|
69
71
|
## 4.1 State Model Additions
|
|
70
72
|
|
|
@@ -209,7 +211,7 @@ Rules:
|
|
|
209
211
|
|
|
210
212
|
---
|
|
211
213
|
|
|
212
|
-
|
|
214
|
+
## 5. Guardrails and Conflict Semantics
|
|
213
215
|
|
|
214
216
|
Required invariants:
|
|
215
217
|
|
|
@@ -242,7 +244,7 @@ Observation and verification stay distinct.
|
|
|
242
244
|
|
|
243
245
|
---
|
|
244
246
|
|
|
245
|
-
|
|
247
|
+
## 6. Protocol Delta (Draft)
|
|
246
248
|
|
|
247
249
|
Snapshot schema extension:
|
|
248
250
|
|
|
@@ -278,7 +280,7 @@ capabilities: {
|
|
|
278
280
|
|
|
279
281
|
---
|
|
280
282
|
|
|
281
|
-
|
|
283
|
+
## 7. Failure Modes
|
|
282
284
|
|
|
283
285
|
Must define behavior for:
|
|
284
286
|
|
|
@@ -310,7 +312,7 @@ If snapshot freshness is uncertain, no assumptions of real-time synchronization.
|
|
|
310
312
|
|
|
311
313
|
---
|
|
312
314
|
|
|
313
|
-
|
|
315
|
+
## 8. Acceptance Test Vectors
|
|
314
316
|
|
|
315
317
|
Representative benchmark flows:
|
|
316
318
|
|
|
@@ -366,7 +368,7 @@ Then:
|
|
|
366
368
|
|
|
367
369
|
---
|
|
368
370
|
|
|
369
|
-
|
|
371
|
+
## 9. Acceptance Criteria
|
|
370
372
|
|
|
371
373
|
RFC considered complete when:
|
|
372
374
|
|
|
@@ -378,7 +380,7 @@ RFC considered complete when:
|
|
|
378
380
|
|
|
379
381
|
---
|
|
380
382
|
|
|
381
|
-
|
|
383
|
+
## 10. Success Metrics
|
|
382
384
|
|
|
383
385
|
Target outcomes:
|
|
384
386
|
|
|
@@ -390,7 +392,7 @@ Measured against roadmap KPIs.
|
|
|
390
392
|
|
|
391
393
|
---
|
|
392
394
|
|
|
393
|
-
|
|
395
|
+
## 11. Normative Requirements (v1)
|
|
394
396
|
|
|
395
397
|
Implementations conforming to RFC-001:
|
|
396
398
|
|
|
@@ -415,7 +417,7 @@ MAY:
|
|
|
415
417
|
|
|
416
418
|
---
|
|
417
419
|
|
|
418
|
-
|
|
420
|
+
## 12. Resolved Design Decisions
|
|
419
421
|
|
|
420
422
|
Former open questions resolved for RFC-001:
|
|
421
423
|
|
|
@@ -441,7 +443,7 @@ No unresolved design blockers remain for RFC-001 draft scope.
|
|
|
441
443
|
|
|
442
444
|
---
|
|
443
445
|
|
|
444
|
-
|
|
446
|
+
## 13. Deferred To Later RFCs
|
|
445
447
|
|
|
446
448
|
Deferred to later RFCs:
|
|
447
449
|
|
|
@@ -449,4 +451,4 @@ Deferred to later RFCs:
|
|
|
449
451
|
- Compose semantic enrichment extensions
|
|
450
452
|
- Wait/synchronization improvements
|
|
451
453
|
- Action trace correlation
|
|
452
|
-
- Gesture support
|
|
454
|
+
- Gesture support
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# RFC-002: Platform-Native Element Metadata and Resolution Hints
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
5
|
+
Priority: 2
|
|
4
6
|
Depends on: RFC-001 (Stronger State Verification)
|
|
5
7
|
|
|
6
8
|
---
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
## 1. Problem
|
|
9
11
|
|
|
10
12
|
Agents currently rely on brittle or inconsistent selectors when identifying UI elements.
|
|
11
13
|
|
|
@@ -28,7 +30,7 @@ This RFC does not assume that a universal or guaranteed stable_id exists across
|
|
|
28
30
|
|
|
29
31
|
---
|
|
30
32
|
|
|
31
|
-
|
|
33
|
+
## 2. Goals
|
|
32
34
|
|
|
33
35
|
This RFC introduces:
|
|
34
36
|
|
|
@@ -45,7 +47,7 @@ Success goals:
|
|
|
45
47
|
|
|
46
48
|
---
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
## 3. Non-Goals
|
|
49
51
|
|
|
50
52
|
This RFC does not:
|
|
51
53
|
|
|
@@ -56,7 +58,7 @@ This RFC does not:
|
|
|
56
58
|
|
|
57
59
|
---
|
|
58
60
|
|
|
59
|
-
|
|
61
|
+
## 4. Proposed Model
|
|
60
62
|
|
|
61
63
|
## 4.1 Stable Element Identity
|
|
62
64
|
|
|
@@ -336,7 +338,7 @@ Notes:
|
|
|
336
338
|
|
|
337
339
|
---
|
|
338
340
|
|
|
339
|
-
|
|
341
|
+
## 5. Failure Modes
|
|
340
342
|
|
|
341
343
|
## 5.1 Ambiguous match
|
|
342
344
|
|
|
@@ -369,7 +371,7 @@ If UI structure changes:
|
|
|
369
371
|
|
|
370
372
|
---
|
|
371
373
|
|
|
372
|
-
|
|
374
|
+
## 6. Acceptance Criteria
|
|
373
375
|
|
|
374
376
|
RFC-002 is complete when:
|
|
375
377
|
|
|
@@ -381,7 +383,7 @@ RFC-002 is complete when:
|
|
|
381
383
|
|
|
382
384
|
---
|
|
383
385
|
|
|
384
|
-
|
|
386
|
+
## 7. Success Metrics
|
|
385
387
|
|
|
386
388
|
- Higher element resolution match rate using platform-native metadata + confidence hints
|
|
387
389
|
- Reduced selector retries
|
|
@@ -390,11 +392,11 @@ RFC-002 is complete when:
|
|
|
390
392
|
|
|
391
393
|
---
|
|
392
394
|
|
|
393
|
-
|
|
395
|
+
## 8. Out of Scope
|
|
394
396
|
|
|
395
397
|
- State verification (RFC-001)
|
|
396
398
|
- Wait/synchronization (RFC-003)
|
|
397
399
|
- Gestures (future RFCs)
|
|
398
400
|
- Action tracing
|
|
399
401
|
|
|
400
|
-
This RFC is scoped as a metadata and resolution hint layer. It does not guarantee stable identity across all platforms, but standardises how identity signals are exposed and consumed.
|
|
402
|
+
This RFC is scoped as a metadata and resolution hint layer. It does not guarantee stable identity across all platforms, but standardises how identity signals are exposed and consumed.
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# RFC-003: Wait and Synchronization Reliability
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
5
|
+
Priority: 3
|
|
4
6
|
Depends on: RFC-001 (Stronger State Verification), RFC-002 (Platform-Native Element Metadata and Resolution Hints)
|
|
5
7
|
|
|
6
8
|
---
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
## 1. Problem
|
|
9
11
|
|
|
10
12
|
Agents can often identify the right element (RFC-002) and verify the right state (RFC-001), but still fail because they act before the UI has reached the intended post-action state.
|
|
11
13
|
|
|
@@ -26,7 +28,7 @@ Current system limitations:
|
|
|
26
28
|
|
|
27
29
|
---
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
## 2. Goals
|
|
30
32
|
|
|
31
33
|
This RFC introduces:
|
|
32
34
|
|
|
@@ -45,7 +47,7 @@ Success goals:
|
|
|
45
47
|
|
|
46
48
|
---
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
## 3. Non-Goals
|
|
49
51
|
|
|
50
52
|
This RFC does not:
|
|
51
53
|
|
|
@@ -56,7 +58,7 @@ This RFC does not:
|
|
|
56
58
|
|
|
57
59
|
---
|
|
58
60
|
|
|
59
|
-
|
|
61
|
+
## 4. Proposed Model
|
|
60
62
|
|
|
61
63
|
## 4.1 UI-First Synchronization Contract (v1)
|
|
62
64
|
|
|
@@ -219,7 +221,7 @@ These are synchronization hints layered on top of standard wait behaviour.
|
|
|
219
221
|
|
|
220
222
|
---
|
|
221
223
|
|
|
222
|
-
|
|
224
|
+
## 5. Failure Modes
|
|
223
225
|
|
|
224
226
|
## 5.1 Premature Action Progression
|
|
225
227
|
|
|
@@ -257,7 +259,7 @@ If unrelated UI churn triggers early wait completion:
|
|
|
257
259
|
|
|
258
260
|
---
|
|
259
261
|
|
|
260
|
-
|
|
262
|
+
## 6. Acceptance Criteria
|
|
261
263
|
|
|
262
264
|
RFC-003 specification is complete when:
|
|
263
265
|
|
|
@@ -275,7 +277,7 @@ Implementation readiness success is measured when:
|
|
|
275
277
|
|
|
276
278
|
---
|
|
277
279
|
|
|
278
|
-
|
|
280
|
+
## 7. Success Metrics
|
|
279
281
|
|
|
280
282
|
- Fewer retries caused by timing/synchronization errors
|
|
281
283
|
- Higher post-action verification success rate
|
|
@@ -284,7 +286,7 @@ Implementation readiness success is measured when:
|
|
|
284
286
|
|
|
285
287
|
---
|
|
286
288
|
|
|
287
|
-
|
|
289
|
+
## 8. Deferred To Later RFCs
|
|
288
290
|
|
|
289
291
|
- Advanced subscriptions / notify-when-element-appears APIs
|
|
290
292
|
- Full action-to-ui trace correlation (Priority 7)
|
|
@@ -293,4 +295,4 @@ Implementation readiness success is measured when:
|
|
|
293
295
|
|
|
294
296
|
---
|
|
295
297
|
|
|
296
|
-
This RFC standardises temporal reliability and synchronization signals layered on top of state verification and element identity guarantees from RFC-001 and RFC-002.
|
|
298
|
+
This RFC standardises temporal reliability and synchronization signals layered on top of state verification and element identity guarantees from RFC-001 and RFC-002.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
1
|
# RFC 004: Verification Routing for Local and Side-Effect Actions
|
|
4
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
5
5
|
## Status
|
|
6
6
|
Draft
|
|
7
7
|
|
|
@@ -339,4 +339,4 @@ Questions for review:
|
|
|
339
339
|
|
|
340
340
|
## Decision Requested
|
|
341
341
|
|
|
342
|
-
Adopt verification routing based on action type and remove implicit default escalation from missing UI diffs to network inspection.
|
|
342
|
+
Adopt verification routing based on action type and remove implicit default escalation from missing UI diffs to network inspection.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# RFC 005 — Unified Action Execution and Verification Model
|
|
2
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
3
5
|
## 1. Summary
|
|
4
6
|
|
|
5
7
|
This RFC defines a unified execution and verification model for all agent-driven UI actions.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# RFC 006 — Runtime Action Instrumentation & Binding Layer
|
|
2
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
3
5
|
## 1. Summary
|
|
4
6
|
|
|
5
7
|
This RFC defines how the execution model in RFC 005 is mapped onto the current runtime behaviour of the system.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# RFC 007 — Actionability Resolution and Executable Target Selection
|
|
2
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
3
5
|
## 1. Summary
|
|
4
6
|
|
|
5
7
|
This RFC defines how the system resolves which discovered UI element should receive an action before dispatch.
|
|
@@ -274,4 +276,4 @@ It improves:
|
|
|
274
276
|
- Compose interaction robustness
|
|
275
277
|
- agent success with fewer retries
|
|
276
278
|
|
|
277
|
-
It addresses one of the largest remaining sources of interaction brittleness.
|
|
279
|
+
It addresses one of the largest remaining sources of interaction brittleness.
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
1
|
# RFC 008 — Adjustable Control Support and Semantic Value Manipulation
|
|
5
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
6
5
|
## 1. Summary
|
|
7
6
|
|
|
8
7
|
This RFC defines semantic interaction support for adjustable controls whose primary interaction changes a value rather than triggering a discrete action.
|
|
@@ -270,4 +269,4 @@ It does not commit in this RFC to:
|
|
|
270
269
|
- arbitrary drag or canvas manipulation
|
|
271
270
|
- pinch-to-zoom or broader gesture semantics
|
|
272
271
|
|
|
273
|
-
This RFC specifies the behavioral model adjustable-control support should satisfy as implementations mature.
|
|
272
|
+
This RFC specifies the behavioral model adjustable-control support should satisfy as implementations mature.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# RFC 009 — Semantic Control Modeling for Custom and Composite Controls
|
|
2
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
3
5
|
## 1. Summary
|
|
4
6
|
|
|
5
7
|
This RFC defines a semantic control model for identifying, exposing, and interacting with custom and composite controls that are poorly represented through raw accessibility or platform UI trees.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
1
|
# RFC 010 — Verification Stabilization and Temporal Convergence
|
|
4
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
5
5
|
## 1. Summary
|
|
6
6
|
|
|
7
7
|
This RFC defines a verification stabilization layer that ensures UI state transitions are not misclassified due to timing instability, transient UI states, or stale snapshots.
|
package/docs/specs/011-recovery-and-replanning-for-failed-or-ambiguous-interaction-flows/spec.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
1
|
# RFC 011 — Recovery and Replanning for Failed or Ambiguous Interaction Flows
|
|
4
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
5
5
|
## 1. Summary
|
|
6
6
|
|
|
7
7
|
This RFC defines a structured recovery and replanning model for UI interaction failures, enabling the system to respond to execution uncertainty with bounded, deterministic recovery strategies.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# RFC 011.1 — Recovery Contract Types & Runtime Wiring Spec
|
|
2
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
3
5
|
## 1. Purpose
|
|
4
6
|
|
|
5
7
|
This document defines the typed runtime contract required to implement RFC 011 safely and consistently across:
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
1
|
# RFC 012 — Action Trace and Execution Observability
|
|
5
2
|
|
|
3
|
+
[Design and evidence](../../README.md#design-and-evidence) · [Tool reference](../../tools/TOOLS.md)
|
|
4
|
+
|
|
6
5
|
## 1. Summary
|
|
7
6
|
|
|
8
7
|
This RFC defines a structured execution trace model for all actions within the MCP runtime. It provides visibility into resolution, execution, verification, stabilization, and recovery stages.
|