refactor(gesture): pass structured payloads through client dispatch

Merged
TH
10h ago
+114-259

Summary

CLI and MCP gesture dispatch convert structured payloads into flat SDK shortcut options, then reconstruct the original payload. Pass them directly through typed client.interactions.gesture() and derive command input from the existing payload union. Future gesture kinds gain Node support without another named method, options type, export, and converter. Existing named methods remain available.

await client.interactions.gesture({
  kind: 'pan',
  origin: { x: 100, y: 200 },
  delta: { x: 40, y: -20 },
});

10 files; 131 fewer production lines, 145 fewer lines overall. No new files or dependencies. Scope includes transport-level regression coverage and the public API note. Follow-up to #3847; no linked issue.

Validation

  • Tested commit: 7468ec1e6d836fbf03381cd572c0487286f6d3a6.
  • pnpm check:affected --run --head 7468ec1e6d836fbf03381cd572c0487286f6d3a6: all runnable checks passed; receipt run-d0mBU8, exactCommit=true. Includes 1,674 tests across 216 files, format, lint, typecheck, layering, Fallow, build, and documentation checks.
  • Independent read-only review: no findings.
  • Draft pending live route evidence. Android 15 emulator-5554 opens the fixture's development-server connection screen, so Gesture Lab is unavailable. The shared helper is 0.21.25, not this checkout's version. Verification session was closed; no live gesture claim.
  • CI coverage, native builds, and integration/device lanes remain required. Native executors are unchanged.