adb-ready 0.5.1 → 0.7.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/CHANGELOG.md +79 -1
- package/COMPATIBILITY.md +31 -0
- package/README.md +33 -11
- package/dist/cli.js +5381 -564
- package/docs/agent-integration.md +64 -17
- package/docs/apps-and-evidence.md +14 -1
- package/docs/automation.md +120 -7
- package/docs/configuration.md +6 -0
- package/docs/firebase-test-lab.md +126 -0
- package/docs/gradle-managed-devices.md +105 -0
- package/docs/logs-and-context.md +34 -0
- package/docs/target-pools.md +151 -0
- package/docs/targets-and-wireless.md +21 -0
- package/docs/threat-model.md +33 -0
- package/docs/troubleshooting.md +39 -0
- package/docs/ui-automation.md +130 -6
- package/examples/README.md +6 -0
- package/examples/ci-emulator/README.md +32 -0
- package/examples/ci-emulator/adb-ready.config.json +20 -0
- package/examples/ci-emulator/dev-service.mjs +14 -0
- package/examples/ci-emulator/verify-emulator.mjs +108 -0
- package/examples/ci-physical/README.md +51 -0
- package/examples/ci-physical/adb-ready.config.json +20 -0
- package/examples/ci-physical/dev-service.mjs +14 -0
- package/examples/ci-physical/github-actions.yml +56 -0
- package/examples/ci-physical/run-job.mjs +77 -0
- package/examples/ci-physical/verify-device.mjs +90 -0
- package/examples/target-pools/README.md +22 -0
- package/examples/target-pools/adb-ready.config.json +29 -0
- package/llms.txt +8 -4
- package/package.json +4 -1
- package/schema/agent-tools-v1.json +1080 -81
- package/schema/config-v1.schema.json +86 -0
- package/skills/adb-ready/SKILL.md +54 -0
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,82 @@ breaking changes.
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.7.0] - 2026-09-27
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Add a maintained, commit-pinned GitHub Actions emulator workflow and public
|
|
17
|
+
fixture that exercise one target-locked finite run and retain normalized
|
|
18
|
+
results, JUnit, screenshot, and diagnostic evidence on success or failure.
|
|
19
|
+
- Add a manual, commit-pinned self-hosted physical-device recipe with explicit
|
|
20
|
+
runner routing, serial selection, local target leasing, read-only preflight,
|
|
21
|
+
portable execution, and retained failure evidence.
|
|
22
|
+
- Add a Gradle Managed Devices handoff that discovers declared virtual-device
|
|
23
|
+
and group tasks, previews exact execution, preserves Gradle lifecycle
|
|
24
|
+
ownership, supports explicit sharding and server rendering, and normalizes
|
|
25
|
+
current JUnit, report, timeout, cancellation, assertion, and infrastructure
|
|
26
|
+
evidence.
|
|
27
|
+
- Add an explicit Firebase Test Lab adapter for live catalog validation,
|
|
28
|
+
instrumentation and Robo matrices, stable provider outcome categories,
|
|
29
|
+
bounded native artifact retention, local-observer timeouts that leave remote
|
|
30
|
+
work running, and separately confirmed matrix cancellation.
|
|
31
|
+
- Add explicit local, existing-AVD, remote-ADB, and Firebase target pools with
|
|
32
|
+
bounded fan-out, required/optional members, fail-fast submission policy,
|
|
33
|
+
owner-recorded lease queueing, deterministic cancellation and stale-owner
|
|
34
|
+
recovery, and aggregate results that preserve every isolated member run.
|
|
35
|
+
- Add a bounded read-only protocol preflight for every explicit ADB server
|
|
36
|
+
command, with distinct route, invalid-endpoint, timeout, cancellation, and
|
|
37
|
+
version-mismatch failures that stop before upstream ADB can terminate a
|
|
38
|
+
mismatched shared server.
|
|
39
|
+
|
|
40
|
+
## [0.6.0] - 2026-09-27
|
|
41
|
+
|
|
42
|
+
### Added
|
|
43
|
+
|
|
44
|
+
- Add the project-local `bun what` command browser for contributors who want
|
|
45
|
+
to discover and launch repository tasks without scanning `package.json`.
|
|
46
|
+
- Add balanced, fast, and strict semantic UI acquisition profiles with
|
|
47
|
+
observation timing, freshness, stability, filtering, truncation, and
|
|
48
|
+
framework-limitation metadata; reject empty and continuously unstable UI
|
|
49
|
+
hierarchies instead of returning a silent false success.
|
|
50
|
+
- Add bounded `compare_ui` hierarchy diffs for agents, reporting semantic nodes
|
|
51
|
+
that were added, removed, updated, or moved while refusing stale,
|
|
52
|
+
cross-target, partial, differently filtered, or display-incompatible bases.
|
|
53
|
+
- Add capability-detected Unicode, emoji, RTL, CJK, and multiline UI input
|
|
54
|
+
through an already enabled ADBKeyBoard IME, configurable per-code-point
|
|
55
|
+
pacing, exact prior-IME restoration, and explicit pre-mutation failures when
|
|
56
|
+
the target cannot meet the requested input contract.
|
|
57
|
+
- Add protected CLI stdin and MCP environment-variable input so secrets stay
|
|
58
|
+
out of host process arguments, operation plans, terminal output, retained
|
|
59
|
+
results, journals, screenshots, and AI context, with documented Android-side
|
|
60
|
+
trust boundaries.
|
|
61
|
+
- Add guarded keyboard status and dismissal using agreeing InputMethodManager
|
|
62
|
+
and WindowInsets signals, plus exact PermissionController runtime-permission
|
|
63
|
+
inspection and responses with fresh post-action verification across CLI and
|
|
64
|
+
MCP. Unknown or ambiguous system UI now fails closed instead of pressing or
|
|
65
|
+
tapping speculatively.
|
|
66
|
+
- Add decoded and checksum-verified PNG evidence with source-pixel crops,
|
|
67
|
+
proportional dimension limits, capture provenance, and truncation metadata;
|
|
68
|
+
MCP image results now default to a context-safe 1024×1024 and 4 MiB base64 budget
|
|
69
|
+
with an explicit full-resolution opt-in.
|
|
70
|
+
- Add `inspect failures` and `inspect_failures` to correlate bounded,
|
|
71
|
+
package-scoped ApplicationExitInfo, crash-buffer, ANR, React Native, native,
|
|
72
|
+
and permitted DropBox evidence while reporting unavailable Android sources
|
|
73
|
+
and excluding unrelated process failures.
|
|
74
|
+
- Add discoverable `debug`, `session`, `ui`, and backward-compatible `full` MCP
|
|
75
|
+
profiles, a config-independent capabilities tool/resource, and namespaced
|
|
76
|
+
safety, sensitivity, target-binding, and profile metadata generated into the
|
|
77
|
+
public agent contract.
|
|
78
|
+
- Generate and package a version-matched task-first Agent Skill from the real
|
|
79
|
+
MCP tool contract, then install it atomically with project-scoped Codex,
|
|
80
|
+
Claude Code, Cursor, or VS Code setup without overwriting custom content.
|
|
81
|
+
- Document durable start/get/stop development handles as the cross-client
|
|
82
|
+
compatibility path while keeping the MCP Tasks extension unadvertised until
|
|
83
|
+
negotiated interoperability is proven in two supported clients.
|
|
84
|
+
- Add target-locked Maestro and Android CLI verifier adapters, bounded native
|
|
85
|
+
report/screenshot/video/log retention, and structured verifier outcome
|
|
86
|
+
categories without translating either tool's test or Journey format.
|
|
87
|
+
|
|
12
88
|
## [0.5.1] - 2026-09-25
|
|
13
89
|
|
|
14
90
|
### Added
|
|
@@ -423,7 +499,9 @@ breaking changes.
|
|
|
423
499
|
explainable configuration precedence.
|
|
424
500
|
- Human, plain, JSON, and NDJSON output across Node, Bun, and Deno entrypoints.
|
|
425
501
|
|
|
426
|
-
[Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.
|
|
502
|
+
[Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.7.0...HEAD
|
|
503
|
+
[0.7.0]: https://github.com/Adam014/adb-ready/compare/v0.6.0...v0.7.0
|
|
504
|
+
[0.6.0]: https://github.com/Adam014/adb-ready/compare/v0.5.1...v0.6.0
|
|
427
505
|
[0.5.1]: https://github.com/Adam014/adb-ready/compare/v0.5.0...v0.5.1
|
|
428
506
|
[0.5.0]: https://github.com/Adam014/adb-ready/compare/v0.4.1...v0.5.0
|
|
429
507
|
[0.4.1]: https://github.com/Adam014/adb-ready/compare/v0.4.0...v0.4.1
|
package/COMPATIBILITY.md
CHANGED
|
@@ -23,8 +23,19 @@ claims move to the CI tier only after they have a reproducible test environment.
|
|
|
23
23
|
- Node.js 22 or newer is the installation baseline.
|
|
24
24
|
- `adb` remains an external dependency and can be supplied through `PATH`, an
|
|
25
25
|
Android SDK location, or `--adb PATH`.
|
|
26
|
+
- Firebase Test Lab workflows delegate to the current Google Cloud CLI supplied
|
|
27
|
+
through `PATH` or `--gcloud PATH`. Provider access, billing, quotas, catalog
|
|
28
|
+
availability, and Cloud Storage permissions remain Google Cloud project
|
|
29
|
+
capabilities rather than host-runtime guarantees.
|
|
26
30
|
- USB and wireless visibility depend on what the selected ADB server can access.
|
|
27
31
|
Remote servers are supported through `--adb-host` and `--adb-port`.
|
|
32
|
+
- Explicit ADB server endpoints receive a bounded read-only `host:version`
|
|
33
|
+
safety preflight before every upstream ADB command. Route loss, endpoint
|
|
34
|
+
replacement, invalid protocol responses, and client/server protocol mismatch
|
|
35
|
+
fail without asking upstream ADB to kill or restart the shared server.
|
|
36
|
+
- Target-pool leases coordinate processes sharing one host-local per-user state
|
|
37
|
+
directory. They are not a cross-runner distributed lock; multi-host labs need
|
|
38
|
+
explicit runner routing or an external coordination backend.
|
|
28
39
|
- npm, pnpm, Yarn, and Bun consumers use the same package and the same
|
|
29
40
|
`adb-ready`/`adbr` entrypoint.
|
|
30
41
|
|
|
@@ -43,3 +54,23 @@ Recorded physical acceptance:
|
|
|
43
54
|
Physical USB, emulator, wireless, VPN, container, WSL, and remote-server claims
|
|
44
55
|
must be recorded as tested only after they pass on that real environment. ADB
|
|
45
56
|
Ready never treats a fixture as proof of hardware compatibility.
|
|
57
|
+
|
|
58
|
+
Firebase Test Lab command construction, catalog parsing, official exit-code
|
|
59
|
+
normalization, bounded evidence collection, cancellation, and failure paths are
|
|
60
|
+
covered by deterministic fixtures. The current Google Cloud CLI has also been
|
|
61
|
+
used to verify the real unauthenticated failure boundary. A paid remote matrix
|
|
62
|
+
has not yet been recorded for this release, so successful provider execution is
|
|
63
|
+
not presented as observed acceptance evidence.
|
|
64
|
+
|
|
65
|
+
Target-pool scheduling, bounded concurrency, fail-fast submission, queue
|
|
66
|
+
cancellation, stale-owner recovery, and aggregate semantics are covered by
|
|
67
|
+
deterministic fixtures. Cross-host contention and paid provider fan-out remain
|
|
68
|
+
outside the observed acceptance boundary until suitable infrastructure is
|
|
69
|
+
available.
|
|
70
|
+
|
|
71
|
+
Remote-server safety is exercised against real loopback TCP fixtures carrying
|
|
72
|
+
the ADB framing protocol, including connection refusal, timeout, cancellation,
|
|
73
|
+
malformed/rejected responses, matching versions, and server replacement. This
|
|
74
|
+
does not claim that every WSL, container, VPN, or remote lab route has been
|
|
75
|
+
observed; those environments remain upstream-capable until recorded on the real
|
|
76
|
+
host network.
|
package/README.md
CHANGED
|
@@ -82,18 +82,26 @@ to reveal an action.
|
|
|
82
82
|
- [**Run the project**](./docs/dev-sessions.md) — select one target, prepare
|
|
83
83
|
ports, launch the framework, and keep the session healthy.
|
|
84
84
|
- [**Connect the device**](./docs/targets-and-wireless.md) — discover, pair,
|
|
85
|
-
reconnect, and deterministically bind a physical device or
|
|
85
|
+
reconnect, and deterministically bind a physical device, emulator, or
|
|
86
|
+
protected remote ADB server without silently restarting shared infrastructure.
|
|
86
87
|
- [**Operate the app**](./docs/apps-and-evidence.md#app-lifecycle) — resolve,
|
|
87
88
|
install, launch, restart, deep-link, and inspect the project app.
|
|
88
89
|
- [**Verify the UI**](./docs/ui-automation.md) — find semantic elements, act
|
|
89
|
-
by intent—including
|
|
90
|
-
|
|
90
|
+
by intent—including international text, protected input, keyboard state, and
|
|
91
|
+
runtime-permission dialogs—assert state, audit accessibility, and capture the
|
|
91
92
|
screen.
|
|
92
93
|
- [**Debug with evidence**](./docs/logs-and-context.md) — keep focused logs,
|
|
93
|
-
session history, screenshots,
|
|
94
|
+
correlated crash/ANR/native findings, session history, screenshots,
|
|
95
|
+
recordings, and redacted context together.
|
|
94
96
|
- [**Automate a real device**](./docs/automation.md#run-one-bounded-verification)
|
|
95
97
|
— gate a finite command on readiness and return stable results, reports, and
|
|
96
98
|
artifacts.
|
|
99
|
+
- [**Run cloud device matrices**](./docs/firebase-test-lab.md) — validate live
|
|
100
|
+
Firebase dimensions, run instrumentation or Robo tests, and retain normalized
|
|
101
|
+
provider evidence without storing cloud credentials.
|
|
102
|
+
- [**Fan out across explicit targets**](./docs/target-pools.md) — run the same
|
|
103
|
+
bounded check on named local, AVD, remote-ADB, or Firebase pools while each
|
|
104
|
+
target keeps an isolated lease, session, result, and cleanup boundary.
|
|
97
105
|
|
|
98
106
|
## Choose how you work
|
|
99
107
|
|
|
@@ -106,16 +114,20 @@ Windsurf, or another MCP client:
|
|
|
106
114
|
npx adb-ready agent setup codex
|
|
107
115
|
```
|
|
108
116
|
|
|
117
|
+
Setup writes the project MCP bridge and a version-matched Agent Skill. Use
|
|
118
|
+
`--mcp-profile debug`, `session`, or `ui` to expose only the tools needed for
|
|
119
|
+
that job; `full` remains the default.
|
|
120
|
+
|
|
109
121
|
Then ask for the outcome you want:
|
|
110
122
|
|
|
111
123
|
> Start this Expo app on my Android phone, wait until the login screen is
|
|
112
124
|
> actually ready, verify my change, and keep the failure evidence.
|
|
113
125
|
|
|
114
126
|
The local MCP server gives agents typed tools for target readiness, durable
|
|
115
|
-
development sessions, app lifecycle, semantic UI,
|
|
116
|
-
|
|
117
|
-
state. Agents do not receive a
|
|
118
|
-
removal.
|
|
127
|
+
development sessions, app lifecycle, semantic UI, correlated failure evidence,
|
|
128
|
+
screenshots, and saved diagnostics. Every result is schema-validated, annotated
|
|
129
|
+
for safety, and checked against fresh device state. Agents do not receive a
|
|
130
|
+
generic shell, unrestricted raw ADB, or app removal.
|
|
119
131
|
|
|
120
132
|
[Connect an AI agent in minutes →](./docs/agent-integration.md)
|
|
121
133
|
|
|
@@ -178,12 +190,13 @@ Or make the target and deployment part of the same bounded job:
|
|
|
178
190
|
|
|
179
191
|
```bash
|
|
180
192
|
npx adb-ready run --avd Pixel_9_API_36 --deploy --variant debug -- \
|
|
181
|
-
maestro
|
|
193
|
+
maestro test .maestro/smoke.yaml
|
|
182
194
|
```
|
|
183
195
|
|
|
184
196
|
Each executed run retains a redacted evidence bundle with its result,
|
|
185
|
-
timeline, problems, focused logcat, native verifier output
|
|
186
|
-
XML, and GitHub step summary.
|
|
197
|
+
timeline, problems, focused logcat, native verifier output and artifacts, AI
|
|
198
|
+
context, JUnit XML, and GitHub step summary. Maestro and Android CLI primitives
|
|
199
|
+
are pinned to the leased target automatically. Existing matching emulators are reused; only an
|
|
187
200
|
emulator started by that run is stopped. Scripts also get deterministic JSON
|
|
188
201
|
and NDJSON contracts:
|
|
189
202
|
|
|
@@ -195,6 +208,12 @@ adb-ready sessions list --status failed --since 24h --limit 5
|
|
|
195
208
|
|
|
196
209
|
[Build a readiness-gated device job →](./docs/automation.md)
|
|
197
210
|
|
|
211
|
+
Need a hosted target first? Start from the maintained
|
|
212
|
+
[GitHub Actions emulator workflow](./examples/ci-emulator/), which runs one
|
|
213
|
+
bounded target-locked job and preserves evidence even when verification fails.
|
|
214
|
+
For a dedicated real device, use the manual-only
|
|
215
|
+
[self-hosted physical-device recipe](./examples/ci-physical/).
|
|
216
|
+
|
|
198
217
|
## One target. One verified loop.
|
|
199
218
|
|
|
200
219
|
```text
|
|
@@ -272,6 +291,9 @@ Android transport backend.
|
|
|
272
291
|
| [Logs and AI context](./docs/logs-and-context.md) | Diagnose a failure with bounded, redacted evidence. |
|
|
273
292
|
| [AI agent integration](./docs/agent-integration.md) | Connect an MCP-capable coding agent. |
|
|
274
293
|
| [Automation](./docs/automation.md) | Use readiness, exit codes, JSON, NDJSON, JUnit, and CI artifacts. |
|
|
294
|
+
| [Gradle Managed Devices](./docs/gradle-managed-devices.md) | Run build-owned virtual-device and group tests with normalized evidence. |
|
|
295
|
+
| [Firebase Test Lab](./docs/firebase-test-lab.md) | Run explicit remote instrumentation or Robo matrices with bounded evidence. |
|
|
296
|
+
| [Target pools and fan-out](./docs/target-pools.md) | Bound parallel verification across an explicit target set. |
|
|
275
297
|
| [Configuration](./docs/configuration.md) | Share project presets, hooks, aliases, and policies. |
|
|
276
298
|
| [Troubleshooting](./docs/troubleshooting.md) | Resolve a known setup, target, UI, or session problem. |
|
|
277
299
|
| [Compatibility](./COMPATIBILITY.md) | Check hosts, runtimes, package managers, and support tiers. |
|