feat(provider-tizen): add Samsung Tizen TV provider plugin

AL
21h ago
+1636-82

Summary

Adds @agent-device/tizen, an optional provider plugin that drives web apps on Samsung Tizen TVs on the shared @agent-device/tv-cdp layer from #4098. The TV enters as a plugin-owned Android TV device (tizen:<sdb serial>): open kills the app, debug-launches it with sdb shell 0 debug, forwards the DevTools port with sdb forward and drives the page over CDP.

Two commits:

  • fix(tv-cdp): TvConnection gains a canonical id (the sdb serial; for webOS the ip:port its ares entry reaches) that keys leases and sessions, so two aliases cannot both hold one TV. close and listApps carry the request signal, tunnel removal is awaited and reported, and shutdown fences new leases.
  • feat(provider-tizen): the plugin, scope as webOS v1. Cancel reaches every sdb step and removes the forward.
agent-device plugins add @agent-device/tizen
export AGENT_DEVICE_SESSION=checkout-tv
agent-device connect tizen --device 192.0.2.10
agent-device open com.example.app

40 files. Also: catalog entry, help line, docs page; the packed smoke names its session. Before merge, a maintainer publishes the npm placeholder and sets the trusted publisher. No linked issue.

Validation

Tested SHA 496bd62fc, on main at 541099107; head c6092f265 adds a shutdown test and a webOS endpoint simplification (197/197 affected package tests).

  • check:affected --run: 14/15 stages; unit 17101/17103. Failures are the known committed-source-tree flake and an Android manifest.test.ts timeout that passes alone.
  • Changed-line coverage 94.32% (216/229), CRAP clean, fuzz-worker 11/11; packed smoke passes for tizen and webos.
  • Live on a Tizen 9.0 TV and an LG webOS 22 TV: the review's evidence list, in the comments below.

Risks: experimental; no CI device lane.

🤖 Generated with Claude Code