* test(android): add catalog emulator smoke coverage * test(android): use stable snapshot diff mutation * test(android): assert actual back destination * test(android): separate keyboard and fill IMEs * fix(ci): keep Android timing report in one shell * refactor(test): simplify simulator e2e coverage * test(android): assert stable diff landmarks * fix(android): release snapshot helper gracefully * fix(android): fully release snapshot helper runtime * test(android): report coverage classifications * fix(android): stabilize accessibility root capture * fix(android): bound UiAutomation connection * ci: upload worktree daemon diagnostics * fix(android): cancel stalled wait captures * fix(android): bound helper fallback lifecycle * fix(android): harden emulator e2e lifecycle * fix: align e2e changes with kernel package * test(android): prove alert helper reuse directly * fix(android): cancel stalled settle captures * fix(android): separate helper retirement budgets
Examples
Runnable, typechecked Node.js examples for the agent-device SDK surface exposed to Node
consumers. Source of truth for the API itself is
Typed Client. Two guards keep these files in sync with that
doc: src/__tests__/client-api-examples-drift.test.ts checks the doc's subpath API manifest against
what these examples import, and test/integration/client-api-doc-snippets.test.ts compiles every
fenced TypeScript code block in the doc itself against the real agent-device/* sources.
sdk/
Standalone scripts under sdk/ exercise the published agent-device export map —
agent-device, agent-device/metro, agent-device/contracts, and agent-device/batch — the same
way a Node consumer or the agent-device-cloud bridge would. Each file:
- has a top comment stating what it demonstrates and its prerequisites (daemon running, device/simulator available);
- typechecks without live hardware —
pnpm typecheckresolves theagent-device/...imports againstsrc/sdk/viaexamples/sdk/tsconfig.json'spaths, so CI checks them without a build or publish step; - imports the package by name (
agent-device/...), not a relativesrc/path, so it exercises the same surface a real consumer sees; - is runnable on its own with
node --experimental-strip-types(repo Node is >=22.12) once the package is built (pnpm build) — running for real resolvesagent-deviceas a self-referencing package, the same way an installed consumer would.
| Example | Subpath | Demonstrates |
|---|---|---|
client-session.ts |
agent-device |
createAgentDeviceClient → open → snapshot/tap → close, with typed error handling |
metro-runtime.ts |
agent-device/metro |
normalizeBaseUrl, resolveRuntimeTransport |
contracts-result.ts |
agent-device/contracts |
typed result consumption via centerOfRect |
batch-orchestration.ts |
agent-device/batch |
runBatch for a custom transport |
test-app/
test-app/ is the Expo dogfood fixture used for agent-device experiments (see
its own README) — it is a test fixture, not an SDK usage example.