Files

WatchBridge

Versioned live WatchConnectivity relay, owned by workstream B. Integration prerequisites are now available; live WCSession behavior is still to be implemented.

  • Shared DTOs, RelayJSON and PhoneCommandCoordinating: Packages/WristivoKit/Sources/RemoteCore/WatchSession.swift.
  • Adjacent Swift package: Adapters/WatchBridge/Package.swift.
  • Common source/test target: Sources/Common and Tests/Common.
  • Phone source/test target: Sources/iPhone and Tests/iPhone.
  • Watch source/test target: Sources/Watch and Tests/Watch.
  • Xcode links WatchBridgePhone only to iPhone and WatchBridgeWatch only to watchOS; both depend on WatchBridgeCommon. Source files added under these package paths need no project regeneration.

Run bash Scripts/check.sh from the repository root for both packages' fake-driven tests; add --apps for unsigned native compilation. These are SwiftPM test targets, not hosted app UI tests. Adding actual WCSession code requires conditional imports/platform boundaries so fake-driven package tests continue to run on macOS. WCSession cannot run there as a substitute for iPhone/watch hardware.

Implement against an injected fake phone actor now; A's live transport is not a prerequisite for B's unit implementation. Keep one consuming CommandAdmission gate in A's phone actor. Use WatchPeerGeneration as a local activation epoch so stale callbacks cannot invalidate the current session. Read docs/CONTRACTS.md and docs/agents/WATCH-RELAY-HANDOFF.md before coding. No live connection is injected into the demo apps by this integration change.