refactor: extract client workspace package
Merged
TH
1d ago+378+378+012345678901234567890123456789-261-261-012345678901234567890123456789
Summary
Extracts the typed client factory into the private workspace package @agent-device/client (mostly renames; src/agent-device-client.ts ā packages/client/src/index.ts keeps its lineage).
- Entry exports exactly
.:createAgentDeviceClientandpickScreenshotResultData(used by the screenshot CLI command). Noexport *, no test-only exports. - Normalizers, identifiers, lease client and screenshot result move with it.
src/client/client-types.tsstays the released SDK type facade. - Type-only callers import
AgentDeviceClientfrom command-surface and request/config/result types fromcontracts/client. - Package-owned tests move beside the code; shared fixtures move to test-kit; root composition tests are renamed for R84.
- Layering, entry pin, process entries, oxlint cap, Fallow key and mutation exclusion follow the paths. The
clientzone now ranks 5, with daemon-client. debug.symbolsstill importsplatform-apple/debug-symbolslazily.
No CLI/SDK/MCP behavior change.
Validation
pnpm check --head a3745e163c40ba547b4a2d09102a01d1a4675120: passed,exactCommit: true(tooling, fallow, unit).- CI Coverage failed at
8d0d549130inandroid-lifecycle.test.ts(pidofinside the exact gfxinfo window). Cause: the active log follower probes the pid every 500ms through the same scripted ADB. A 700ms framestats delay reproduces it at basec1f1fd02adand at8d0d549130, so it predates this PR. The test now stops the follower before the window and still asserts the stop result. With the delay, the fixed test passes. provider-integrationunder coverage: 68 files, 245 tests passed;android-lifecyclere-run after the final edit.- Eager closure: 236 modules, same as base, 0
platform-*..d.tsmatches base apart from one region comment. - Not run locally: native and device lanes (CI-authoritative). Pure relocation, so no live device run.
š¤ Generated with Claude Code