refactor: extract command surface and separate CLI presentation

Merged
TH
2d ago
+1853-1431

Summary

Extract declarations, request projection, grammar, schemas, and the invoked client port into private @agent-device/command-surface. CLI presentation stays with its root consumers. Command behavior and public option/result types remain unchanged.

Scope: 222 files, predominantly moves and import updates. One package entry names exports explicitly. Facets remain synchronous; formatter tables decorate them by command name. A compiled type test pins structured batch names to daemon-writer keys. Related: #3276.

Published fold descriptions/help are corrected to distinguish lit-panel pose ambiguity, simctl versus runner density normalization, and Android sensor readings versus AVD profile angles. These wording corrections were checked against implementation and unit tests; none was newly verified on a device.

import { prepareDaemonCommandRequest } from '@agent-device/command-surface';
const request = await prepareDaemonCommandRequest('snapshot', {}, host);

Validation

Tested head: 88d30486742deabd148280751bb2ec3370e0751c.

  • pnpm check:affected --run --head HEAD passed at this exact, unchanged head (run-ZHi5Jj); focused entry tests and typecheck also passed.
  • Rebased conflicts preserve Apple runner and command-surface entry guards. Merge-tree is clean against current main.
  • No suppressions, export ignores, or raised ceilings. Guidance remains within its budget.
  • No device run for these declaration/projection and wording changes. CI owns remote integration, coverage, and device lanes.