adb-ready 0.2.0 → 0.3.1
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 +113 -1
- package/LICENSE +1 -1
- package/README.md +149 -161
- package/dist/cli.js +3568 -816
- package/dist/cli.js.map +24 -20
- package/docs/agent-integration.md +31 -13
- package/docs/apps-and-evidence.md +9 -2
- package/docs/automation.md +43 -2
- package/docs/configuration.md +1 -1
- package/docs/dev-sessions.md +4 -0
- package/docs/logs-and-context.md +15 -0
- package/docs/troubleshooting.md +1 -0
- package/docs/ui-automation.md +84 -8
- package/examples/README.md +2 -0
- package/examples/capacitor/adb-ready.config.json +9 -0
- package/examples/flutter/adb-ready.config.json +9 -0
- package/llms.txt +14 -5
- package/package.json +9 -2
- package/schema/agent-tools-v1.json +2809 -166
- package/schema/config-v1.schema.json +93 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,116 @@ breaking changes.
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.3.1] - 2026-09-11
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Clarify package ownership and normalize the maintainer identity used by
|
|
17
|
+
repository history and published package metadata.
|
|
18
|
+
- Reorganize the public README around six user outcomes and explicit entry
|
|
19
|
+
paths for coding agents, terminal users, and CI automation.
|
|
20
|
+
- Add copy-and-paste installation paths for npm, pnpm, Yarn, and Bun.
|
|
21
|
+
- Replace the simulated terminal snippet with an optimized product walkthrough
|
|
22
|
+
showing development startup, UI verification, and agent-driven recovery,
|
|
23
|
+
while keeping the marketing asset out of the installed npm package.
|
|
24
|
+
- Require an explicit release tag when manually dispatching the release
|
|
25
|
+
workflow instead of retaining a stale version default.
|
|
26
|
+
|
|
27
|
+
## [0.3.0] - 2026-09-11
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- Scope saved sessions, latest-problem lookup, AI context, and MCP session
|
|
32
|
+
resources to the canonical current project by default, with an explicit
|
|
33
|
+
`--all-projects` escape hatch for cross-project audits.
|
|
34
|
+
- Add privacy-safe cross-process Android target leases with heartbeats, bounded
|
|
35
|
+
expiry, stale-owner recovery, and ownership-checked cleanup for app, UI,
|
|
36
|
+
port, recording, and development-session mutations.
|
|
37
|
+
- Let `dev --dry-run` resolve and validate the project, command, ports, and
|
|
38
|
+
lifecycle hooks without requiring ADB or allocating an Android target. An
|
|
39
|
+
explicit target selector still produces the target-resolved plan.
|
|
40
|
+
- Add composable readiness contracts for boot, unlock, process, foreground
|
|
41
|
+
activity, exact UI selectors, host ports, HTTP responses, and bounded log
|
|
42
|
+
presence or absence. Expo and React Native sessions now verify Android boot
|
|
43
|
+
and Metro reachability before reporting ready.
|
|
44
|
+
- Add `adb-ready run -- COMMAND` as a finite automation entrypoint: start the
|
|
45
|
+
configured development service, satisfy readiness, execute one timeout-bound
|
|
46
|
+
verification command, preserve its exit code, and clean owned resources.
|
|
47
|
+
- Produce an atomic, redacted evidence bundle for every executed `run` with a
|
|
48
|
+
versioned manifest, structured result, NDJSON timeline, problems, logcat,
|
|
49
|
+
bounded AI context, JUnit XML, and GitHub step-summary Markdown.
|
|
50
|
+
- Advertise and validate a versioned result-envelope output schema for every
|
|
51
|
+
MCP tool, return screenshot pixels as MCP image content, and issue stable
|
|
52
|
+
connection-scoped target handles that reject stale or cross-connection use.
|
|
53
|
+
- Let MCP `ensure_ready` reconnect an explicitly addressed endpoint or the only
|
|
54
|
+
unambiguous paired wireless service before binding it.
|
|
55
|
+
- Exercise the complete MCP contract on Node.js, Bun, and Deno across both the
|
|
56
|
+
legacy 2025-11-25 and modern 2026-07-28 protocol eras.
|
|
57
|
+
- Add semantic UI find, assert, digest comparison, and selector-driven tap or
|
|
58
|
+
long-press workflows. Structured selectors support exact, prefix, and
|
|
59
|
+
contains matching plus enabled/actionable qualifiers; ambiguous mutations
|
|
60
|
+
fail instead of guessing.
|
|
61
|
+
- Add project-scoped `start_dev_session`, `get_dev_session`, and
|
|
62
|
+
`stop_dev_session` MCP tools backed by opaque durable handles. Managed
|
|
63
|
+
sessions continue outside one tool call, survive client reconnects, report
|
|
64
|
+
heartbeats and terminal exit state, and stop only their verified owned
|
|
65
|
+
process group.
|
|
66
|
+
- Add status, recency, preset, and count filters to project-scoped session
|
|
67
|
+
history.
|
|
68
|
+
- Install a single APK or a complete split APK set through verified `install`
|
|
69
|
+
and `install-multiple` workflows in both CLI and MCP.
|
|
70
|
+
- Detect and run Flutter and Capacitor Android projects on the exact selected
|
|
71
|
+
target, with boot readiness and no invented default port mappings.
|
|
72
|
+
- Add intent-level UI read, field fill/clear, and container-scoped scroll
|
|
73
|
+
workflows for CLI and MCP. Field replacement is capability-gated before
|
|
74
|
+
mutation and verifies observable values instead of inferring success from
|
|
75
|
+
input exit codes.
|
|
76
|
+
- Add a project-scoped MCP session index with status, preset, recency, limit,
|
|
77
|
+
and stable cursor pagination so agents can locate relevant saved evidence
|
|
78
|
+
without scanning unrelated history.
|
|
79
|
+
- Add a bounded CLI/MCP screen audit that identifies enabled actionable nodes
|
|
80
|
+
without human-readable labels and controls without stable resource IDs,
|
|
81
|
+
returning concrete nodes instead of a subjective score.
|
|
82
|
+
- Bind finite verification commands to the leased target through
|
|
83
|
+
`ANDROID_SERIAL`, `ADB_READY_TARGET_SERIAL`, and an explicit
|
|
84
|
+
`{target.serial}` argument placeholder for tools such as Maestro that require
|
|
85
|
+
their own device flag.
|
|
86
|
+
- Report measured acquisition time alongside every before/after UI snapshot so
|
|
87
|
+
agents and CI can identify slow accessibility inspection without guessing.
|
|
88
|
+
|
|
89
|
+
### Changed
|
|
90
|
+
|
|
91
|
+
- Compact repeated successful health checks in bounded AI context while
|
|
92
|
+
preserving the complete redacted NDJSON timeline as source evidence.
|
|
93
|
+
- Reorganize the interactive home around development, test automation, device,
|
|
94
|
+
debugging, and project tasks; preserve root presentation flags and use copy
|
|
95
|
+
that remains meaningful in narrow terminals.
|
|
96
|
+
- Add the screen agent-readiness audit to the task-oriented Debug & evidence
|
|
97
|
+
menu without expanding the root menu.
|
|
98
|
+
- Lead the public README with the agent outcome, immediate setup, and a concrete
|
|
99
|
+
first task before the implementation details.
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
|
|
103
|
+
- Return a structured capability overview for bare machine-mode invocation and
|
|
104
|
+
suggest high-confidence corrections for mistyped commands or options.
|
|
105
|
+
- Apply retention limits per project before the global safety cap so one noisy
|
|
106
|
+
project cannot evict another project's recent diagnostic history.
|
|
107
|
+
- Keep packaged command-matrix development sessions inside an isolated
|
|
108
|
+
temporary state directory instead of polluting the user's session store.
|
|
109
|
+
- Correct the public installation guide so its compatibility note no longer
|
|
110
|
+
contradicts the documented split APK support.
|
|
111
|
+
- Give accessibility hierarchy acquisition its own 15-second default deadline
|
|
112
|
+
in inspect and UI workflows while preserving an explicit global timeout.
|
|
113
|
+
This prevents ordinary slower OEM UI Automator dumps from failing at the
|
|
114
|
+
generic five-second ADB boundary.
|
|
115
|
+
- Classify Android's successful-exit `could not get idle state` response as a
|
|
116
|
+
distinct `UI_NOT_IDLE` problem with a safe recovery instruction instead of
|
|
117
|
+
misreporting an inaccessible hierarchy.
|
|
118
|
+
- Finalize an explicitly stopped managed development task as interrupted even
|
|
119
|
+
when Windows terminates the owned child before its signal handler can write
|
|
120
|
+
the terminal record.
|
|
121
|
+
|
|
12
122
|
## [0.2.0] - 2026-09-10
|
|
13
123
|
|
|
14
124
|
### Added
|
|
@@ -81,7 +191,9 @@ breaking changes.
|
|
|
81
191
|
explainable configuration precedence.
|
|
82
192
|
- Human, plain, JSON, and NDJSON output across Node, Bun, and Deno entrypoints.
|
|
83
193
|
|
|
84
|
-
[Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.
|
|
194
|
+
[Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.3.1...HEAD
|
|
195
|
+
[0.3.1]: https://github.com/Adam014/adb-ready/compare/v0.3.0...v0.3.1
|
|
196
|
+
[0.3.0]: https://github.com/Adam014/adb-ready/compare/v0.2.0...v0.3.0
|
|
85
197
|
[0.2.0]: https://github.com/Adam014/adb-ready/compare/v0.1.2...v0.2.0
|
|
86
198
|
[0.1.2]: https://github.com/Adam014/adb-ready/compare/v0.1.1...v0.1.2
|
|
87
199
|
[0.1.1]: https://github.com/Adam014/adb-ready/compare/v0.1.0...v0.1.1
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# ADB Ready
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**The local Android runtime for coding agents.**
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
Prepare one Android target, run your project, operate the app, and return
|
|
8
|
+
verified evidence—for developers, agents, and CI.
|
|
9
9
|
|
|
10
10
|
[](./docs/agent-integration.md)
|
|
11
11
|
[](https://github.com/Adam014/adb-ready/actions/workflows/ci.yml)
|
|
@@ -13,234 +13,222 @@ control of Android targets, apps, UI, logs, evidence, and development sessions.
|
|
|
13
13
|
[](https://nodejs.org/)
|
|
14
14
|
[](https://bun.sh/)
|
|
15
15
|
[](https://deno.com/)
|
|
16
|
+
[](./docs/dev-sessions.md)
|
|
17
|
+
[](./docs/dev-sessions.md)
|
|
16
18
|
[](./COMPATIBILITY.md)
|
|
17
19
|
|
|
18
|
-
[Quick start](#quick-start) · [
|
|
19
|
-
[
|
|
20
|
-
[
|
|
20
|
+
[Quick start](#quick-start) · [What it does](#what-adb-ready-does) ·
|
|
21
|
+
[AI agents](#with-a-coding-agent) · [CI](#in-ci-and-automation) ·
|
|
22
|
+
[Documentation](#documentation)
|
|
23
|
+
|
|
24
|
+
<img src="https://raw.githubusercontent.com/Adam014/adb-ready/main/docs/assets/adb-ready-demo.gif" alt="ADB Ready prepares an Android development session, verifies the app UI, and lets a coding agent recover lost localhost access." width="1120" />
|
|
21
25
|
|
|
22
26
|
</div>
|
|
23
27
|
|
|
24
|
-
|
|
25
|
-
$ adb-ready dev
|
|
28
|
+
## Quick start
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
✓ Localhost ports ready 8081 → 8081
|
|
29
|
-
✓ Development command started pnpm run start --android
|
|
30
|
-
● Session healthy watching target, ports, and logs
|
|
31
|
-
```
|
|
30
|
+
Install ADB Ready in the Android project your team wants to run:
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
or ADB picks the wrong device. ADB Ready turns scattered ADB operations into
|
|
35
|
-
one deterministic workflow that developers, scripts, and AI agents can share.
|
|
32
|
+
**npm** · default
|
|
36
33
|
|
|
37
34
|
```bash
|
|
35
|
+
npm install --save-dev adb-ready
|
|
38
36
|
npx adb-ready dev
|
|
39
37
|
```
|
|
40
38
|
|
|
41
|
-
|
|
39
|
+
<details>
|
|
40
|
+
<summary><strong>Use pnpm, Yarn, or Bun</strong></summary>
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
operators. Its local MCP server exposes **19 schema-validated tools** for target
|
|
45
|
-
readiness, app lifecycle, UI inspection, evidence capture, and verified UI
|
|
46
|
-
actions—without giving the model a generic shell or unrestricted ADB access.
|
|
42
|
+
#### pnpm
|
|
47
43
|
|
|
48
44
|
```bash
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
pnpm add --save-dev adb-ready
|
|
46
|
+
pnpm exec adb-ready dev
|
|
51
47
|
```
|
|
52
48
|
|
|
53
|
-
|
|
49
|
+
#### Yarn
|
|
54
50
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
|
|
59
|
-
- verify actions against fresh device state instead of assuming they worked.
|
|
51
|
+
```bash
|
|
52
|
+
yarn add --dev adb-ready
|
|
53
|
+
yarn adb-ready dev
|
|
54
|
+
```
|
|
60
55
|
|
|
61
|
-
|
|
62
|
-
model provider. Stale UI references are rejected, destructive app removal is
|
|
63
|
-
not exposed to agents, and every tool returns structured evidence.
|
|
56
|
+
#### Bun
|
|
64
57
|
|
|
65
|
-
|
|
58
|
+
```bash
|
|
59
|
+
bun add --dev adb-ready
|
|
60
|
+
bunx adb-ready dev
|
|
61
|
+
```
|
|
66
62
|
|
|
67
|
-
|
|
63
|
+
</details>
|
|
68
64
|
|
|
69
|
-
|
|
65
|
+
ADB Ready handles the state around ADB that a person, script, or coding agent
|
|
66
|
+
should not guess: which device belongs to the run, whether the app is ready,
|
|
67
|
+
which ports and processes the session owns, and what evidence survives a
|
|
68
|
+
failure. It orchestrates your real ADB and framework tools; it does not replace
|
|
69
|
+
them or require an ADB Ready account, hosted service, or model API key.
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
work.
|
|
71
|
+
Running `adb-ready` without a command opens the interactive workflow home.
|
|
72
|
+
`adbr` is the shorter alias for the same CLI.
|
|
74
73
|
|
|
75
|
-
|
|
74
|
+
## What ADB Ready does
|
|
76
75
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
- [**Run the project**](./docs/dev-sessions.md) — select one target, prepare
|
|
77
|
+
ports, launch the framework, and keep the session healthy.
|
|
78
|
+
- [**Connect the device**](./docs/targets-and-wireless.md) — discover, pair,
|
|
79
|
+
reconnect, and deterministically bind a physical device or emulator.
|
|
80
|
+
- [**Operate the app**](./docs/apps-and-evidence.md#app-lifecycle) — resolve,
|
|
81
|
+
install, launch, restart, deep-link, and inspect the project app.
|
|
82
|
+
- [**Verify the UI**](./docs/ui-automation.md) — find semantic elements, act
|
|
83
|
+
by intent, assert state, and capture the screen.
|
|
84
|
+
- [**Debug with evidence**](./docs/logs-and-context.md) — keep focused logs,
|
|
85
|
+
session history, screenshots, recordings, and redacted context together.
|
|
86
|
+
- [**Automate a real device**](./docs/automation.md#run-one-bounded-verification)
|
|
87
|
+
— gate a finite command on readiness and return stable results, reports, and
|
|
88
|
+
artifacts.
|
|
80
89
|
|
|
81
|
-
|
|
90
|
+
## Choose how you work
|
|
82
91
|
|
|
83
|
-
|
|
84
|
-
important failure evidence together. Agents receive bounded, machine-readable
|
|
85
|
-
context and typed actions instead of guessing from an unstructured terminal.
|
|
92
|
+
### With a coding agent
|
|
86
93
|
|
|
87
|
-
|
|
94
|
+
Connect the current project to Codex, Claude Code, Cursor, VS Code/Copilot,
|
|
95
|
+
Windsurf, or another MCP client:
|
|
88
96
|
|
|
89
|
-
|
|
90
|
-
|
|
97
|
+
```bash
|
|
98
|
+
npx adb-ready agent setup codex
|
|
99
|
+
```
|
|
91
100
|
|
|
92
|
-
|
|
93
|
-
| ------------------------------------- | ----------------------- | -------------------- |
|
|
94
|
-
| Expo · React Native · Gradle · custom | npm · pnpm · Yarn · Bun | Node.js · Bun · Deno |
|
|
101
|
+
Then ask for the outcome you want:
|
|
95
102
|
|
|
96
|
-
|
|
103
|
+
> Start this Expo app on my Android phone, wait until the login screen is
|
|
104
|
+
> actually ready, verify my change, and keep the failure evidence.
|
|
97
105
|
|
|
98
|
-
|
|
99
|
-
|
|
106
|
+
The local MCP server gives agents typed tools for target readiness, durable
|
|
107
|
+
development sessions, app lifecycle, semantic UI, logs, screenshots, and saved
|
|
108
|
+
evidence. Every result is schema-validated and checked against fresh device
|
|
109
|
+
state. Agents do not receive a generic shell, unrestricted raw ADB, or app
|
|
110
|
+
removal.
|
|
111
|
+
|
|
112
|
+
[Connect an AI agent in minutes →](./docs/agent-integration.md)
|
|
113
|
+
|
|
114
|
+
### From your terminal
|
|
115
|
+
|
|
116
|
+
Check the host, inspect visible targets, and start the complete development
|
|
117
|
+
loop:
|
|
100
118
|
|
|
101
119
|
```bash
|
|
102
|
-
# Check ADB and the host
|
|
103
120
|
npx adb-ready doctor
|
|
104
|
-
|
|
105
|
-
# See connected and wireless targets
|
|
106
121
|
npx adb-ready devices
|
|
107
|
-
|
|
108
|
-
# Start the complete development session
|
|
109
122
|
npx adb-ready dev
|
|
110
123
|
```
|
|
111
124
|
|
|
112
|
-
|
|
125
|
+
Expo, React Native, Flutter, Capacitor, Gradle, and custom commands all run
|
|
126
|
+
against the same selected target through `ANDROID_SERIAL`. Add local services
|
|
127
|
+
with repeated `--port` flags or replace the detected command after `--`:
|
|
113
128
|
|
|
114
129
|
```bash
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
130
|
+
adb-ready dev --port 8081 --port 8000
|
|
131
|
+
adb-ready dev -- pnpm run android:local
|
|
132
|
+
adb-ready dev --dry-run --json
|
|
118
133
|
```
|
|
119
134
|
|
|
120
|
-
|
|
121
|
-
`adbr` is the shorter alias for the same CLI.
|
|
122
|
-
|
|
123
|
-
[Read the five-minute setup →](./docs/getting-started.md)
|
|
124
|
-
|
|
125
|
-
## Find your workflow
|
|
126
|
-
|
|
127
|
-
| I want to… | Start here |
|
|
128
|
-
| ----------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
|
129
|
-
| launch Expo, React Native, Gradle, or my own command | [`adb-ready dev`](./docs/dev-sessions.md) |
|
|
130
|
-
| pair or reconnect an Android device over Wi-Fi | [Targets and Wireless debugging](./docs/targets-and-wireless.md) |
|
|
131
|
-
| choose the right device when several are connected | [Deterministic target selection](./docs/targets-and-wireless.md#explicit-selection) |
|
|
132
|
-
| expose Metro, a local API, or a debugger to Android | [Port workflows](./docs/dev-sessions.md#port-ownership) |
|
|
133
|
-
| install, inspect, launch, restart, or deep-link my app | [App lifecycle](./docs/apps-and-evidence.md#app-lifecycle) |
|
|
134
|
-
| save a verified screenshot or bounded screen recording | [Evidence capture](./docs/apps-and-evidence.md#evidence-capture) |
|
|
135
|
-
| give a developer or agent one bounded app/UI snapshot | [Structured inspection](./docs/apps-and-evidence.md#structured-inspection) |
|
|
136
|
-
| safely tap, type, swipe, press keys, or wait for Android UI | [Safe UI automation](./docs/ui-automation.md) |
|
|
137
|
-
| see only the Android logs that matter | [Focused logcat](./docs/logs-and-context.md#focused-logcat) |
|
|
138
|
-
| understand why the last session failed | [Session problems](./docs/logs-and-context.md#session-history) |
|
|
139
|
-
| prepare safe evidence for an AI assistant | [Diagnostic context](./docs/logs-and-context.md#diagnostic-context) |
|
|
140
|
-
| connect Codex, Claude Code, Cursor, Copilot, or Windsurf | [`adb-ready agent setup`](./docs/agent-integration.md#connect-an-agent) |
|
|
141
|
-
| share project settings without a custom shell script | [Configuration](./docs/configuration.md) |
|
|
142
|
-
| use ADB Ready from CI or another tool | [Automation contract](./docs/automation.md) |
|
|
143
|
-
| fix a known setup or target problem | [Troubleshooting](./docs/troubleshooting.md) |
|
|
144
|
-
|
|
145
|
-
## What happens in `adb-ready dev`?
|
|
135
|
+
[Reach your first ready session →](./docs/getting-started.md)
|
|
146
136
|
|
|
147
|
-
|
|
148
|
-
find or recover one target
|
|
149
|
-
↓
|
|
150
|
-
verify only the ports your project needs
|
|
151
|
-
↓
|
|
152
|
-
start the project on that same target
|
|
153
|
-
↓
|
|
154
|
-
watch target · ports · logs · child process
|
|
155
|
-
↓
|
|
156
|
-
recover safely or explain exactly what needs you
|
|
157
|
-
```
|
|
137
|
+
### In CI and automation
|
|
158
138
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
- Pass any command after `--`; it runs directly without an implicit shell.
|
|
162
|
-
- Existing matching mappings are reused. Conflicts are never overwritten.
|
|
163
|
-
- On exit, only resources created by that session are cleaned up.
|
|
164
|
-
- The final exit code and a bounded, redacted session record are preserved.
|
|
139
|
+
Wait for declared readiness, execute one bounded verification command, preserve
|
|
140
|
+
its exit code, and clean only resources created by the run:
|
|
165
141
|
|
|
166
142
|
```bash
|
|
167
|
-
adb-ready
|
|
168
|
-
adb-ready dev -- pnpm run android:local
|
|
169
|
-
adb-ready dev --dry-run --json
|
|
143
|
+
npx adb-ready run -- npm run test:e2e
|
|
170
144
|
```
|
|
171
145
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
support, narrow-terminal fallbacks, and clear recovery feedback. Scripts get a
|
|
176
|
-
separate deterministic contract:
|
|
146
|
+
Each executed run retains a redacted evidence bundle with its result,
|
|
147
|
+
timeline, problems, focused logcat, AI context, JUnit XML, and GitHub step
|
|
148
|
+
summary. Scripts also get deterministic JSON and NDJSON contracts:
|
|
177
149
|
|
|
178
150
|
```bash
|
|
179
151
|
adb-ready devices --json --non-interactive
|
|
180
152
|
adb-ready logs --package com.example.app --format ndjson
|
|
181
|
-
adb-ready
|
|
153
|
+
adb-ready sessions list --status failed --since 24h --limit 5
|
|
182
154
|
```
|
|
183
155
|
|
|
184
|
-
|
|
185
|
-
- versioned JSON results and NDJSON events;
|
|
186
|
-
- no prompt, animation, or terminal takeover in redirected/CI execution;
|
|
187
|
-
- stable problem categories, meaningful exit codes, timeouts, and dry runs; and
|
|
188
|
-
- explicit target, ADB path, and remote ADB server overrides.
|
|
156
|
+
[Build a readiness-gated device job →](./docs/automation.md)
|
|
189
157
|
|
|
190
|
-
|
|
191
|
-
server. The package includes a version-matched public tool schema, while target
|
|
192
|
-
binding, fresh-state checks, redaction, and verification remain enforced by ADB
|
|
193
|
-
Ready itself. [Explore the agent contract →](./docs/agent-integration.md)
|
|
158
|
+
## One target. One verified loop.
|
|
194
159
|
|
|
195
|
-
|
|
160
|
+
```text
|
|
161
|
+
find or recover one Android target
|
|
162
|
+
↓
|
|
163
|
+
bind the complete run to that target
|
|
164
|
+
↓
|
|
165
|
+
prepare only the ports the project needs
|
|
166
|
+
↓
|
|
167
|
+
start the framework and wait for declared readiness
|
|
168
|
+
↓
|
|
169
|
+
watch target · ports · logs · child process
|
|
170
|
+
↓
|
|
171
|
+
recover safely or return bounded failure evidence
|
|
172
|
+
```
|
|
196
173
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
| [Safe UI automation](./docs/ui-automation.md) | How do humans and agents act on current UI with verifiable evidence? |
|
|
205
|
-
| [Logs and AI context](./docs/logs-and-context.md) | What is captured, redacted, saved, and exported? |
|
|
206
|
-
| [Configuration](./docs/configuration.md) | How do projects, profiles, hooks, and precedence work? |
|
|
207
|
-
| [Automation](./docs/automation.md) | What are the JSON, NDJSON, stdout, and exit-code contracts? |
|
|
208
|
-
| [Threat model](./docs/threat-model.md) | Which trust boundaries, controls, and residual risks apply? |
|
|
209
|
-
| [Troubleshooting](./docs/troubleshooting.md) | What should I do for each common failure? |
|
|
210
|
-
| [Compatibility](./COMPATIBILITY.md) | Which hosts, runtimes, and environments are covered? |
|
|
211
|
-
| [Example configs](./examples/README.md) | What can I copy for Expo, React Native, Gradle, or custom projects? |
|
|
212
|
-
|
|
213
|
-
Run `adb-ready --help` for the full command list or
|
|
214
|
-
`adb-ready help COMMAND` for focused options.
|
|
174
|
+
- Existing matching port mappings are reused; conflicts are not overwritten.
|
|
175
|
+
- Wireless and port recovery is bounded and independently verified.
|
|
176
|
+
- An ADB server restart is never hidden inside recovery.
|
|
177
|
+
- On exit, ADB Ready cleans only resources owned by that session.
|
|
178
|
+
- The final exit code and a project-scoped session record are preserved.
|
|
179
|
+
|
|
180
|
+
## Keep your existing stack
|
|
215
181
|
|
|
216
|
-
|
|
182
|
+
| Projects | Package managers | CLI runtimes | Hosts |
|
|
183
|
+
| --- | --- | --- | --- |
|
|
184
|
+
| Expo · React Native · Flutter · Capacitor · Gradle · custom | npm · pnpm · Yarn · Bun | Node.js · Bun · Deno | macOS · Linux · Windows |
|
|
217
185
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
addon or artificial OS/CPU block. A working ADB executable remains the
|
|
186
|
+
The standard npm entrypoint requires Android SDK Platform-Tools and Node.js 22
|
|
187
|
+
or newer. The published package is architecture-neutral JavaScript with no
|
|
188
|
+
native addon or artificial OS/CPU block. A working ADB executable remains the
|
|
221
189
|
Android transport backend.
|
|
222
190
|
|
|
223
191
|
[See tested and upstream-capable support tiers →](./COMPATIBILITY.md)
|
|
224
192
|
|
|
225
193
|
## Trust by default
|
|
226
194
|
|
|
227
|
-
-
|
|
228
|
-
-
|
|
195
|
+
- One selected target is used consistently for every operation in a session.
|
|
196
|
+
- Target leases prevent concurrent ADB Ready processes from mutating the same
|
|
197
|
+
target without an explicit takeover.
|
|
198
|
+
- Destructive or device-wide actions require an explicit command or
|
|
199
|
+
confirmation.
|
|
229
200
|
- Pairing codes never enter command-line arguments.
|
|
230
|
-
- Session data is bounded, redacted, private to the user, and never
|
|
231
|
-
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
201
|
+
- Session data is bounded, redacted, private to the local user, and never
|
|
202
|
+
uploaded by ADB Ready.
|
|
203
|
+
- Stale UI references are rejected before input is sent.
|
|
204
|
+
- Machine data stays on `stdout`; human diagnostics stay on `stderr`.
|
|
205
|
+
|
|
206
|
+
[Review the complete threat model →](./docs/threat-model.md)
|
|
207
|
+
|
|
208
|
+
## Documentation
|
|
209
|
+
|
|
210
|
+
| Guide | Start here when you want to… |
|
|
211
|
+
| --- | --- |
|
|
212
|
+
| [Getting started](./docs/getting-started.md) | Reach the first ready development session. |
|
|
213
|
+
| [Development sessions](./docs/dev-sessions.md) | Configure frameworks, commands, ports, readiness, and cleanup. |
|
|
214
|
+
| [Targets and Wireless debugging](./docs/targets-and-wireless.md) | Pair, connect, recover, or explicitly select a target. |
|
|
215
|
+
| [Apps and evidence](./docs/apps-and-evidence.md) | Control the app and capture screenshots or recordings. |
|
|
216
|
+
| [Safe UI automation](./docs/ui-automation.md) | Find, act on, and verify the current Android UI. |
|
|
217
|
+
| [Logs and AI context](./docs/logs-and-context.md) | Diagnose a failure with bounded, redacted evidence. |
|
|
218
|
+
| [AI agent integration](./docs/agent-integration.md) | Connect an MCP-capable coding agent. |
|
|
219
|
+
| [Automation](./docs/automation.md) | Use readiness, exit codes, JSON, NDJSON, JUnit, and CI artifacts. |
|
|
220
|
+
| [Configuration](./docs/configuration.md) | Share project presets, hooks, aliases, and policies. |
|
|
221
|
+
| [Troubleshooting](./docs/troubleshooting.md) | Resolve a known setup, target, UI, or session problem. |
|
|
222
|
+
| [Compatibility](./COMPATIBILITY.md) | Check hosts, runtimes, package managers, and support tiers. |
|
|
223
|
+
| [Example configs](./examples/README.md) | Copy a framework or custom-project configuration. |
|
|
224
|
+
|
|
225
|
+
Run `adb-ready --help` for the complete command list or
|
|
226
|
+
`adb-ready help COMMAND` for focused options.
|
|
237
227
|
|
|
238
228
|
## Project
|
|
239
229
|
|
|
240
230
|
[Changelog](./CHANGELOG.md) · [Contributing](./CONTRIBUTING.md) ·
|
|
241
231
|
[Security](./SECURITY.md) · [MIT License](./LICENSE)
|
|
242
232
|
|
|
243
|
-
ADB Ready is Android-only.
|
|
244
|
-
|
|
245
|
-
evidence capture. It intentionally exposes typed workflows instead of a generic
|
|
246
|
-
remote shell.
|
|
233
|
+
ADB Ready is Android-only. It exposes target-bound workflows rather than a
|
|
234
|
+
generic remote shell.
|