Bounded duplex transport backed by Forcola.Duplex.
The DuplexSession process owns the Forcola session directly, so its
death closes the child's process group. A separate puller demands one
stdout or stderr line at a time and waits for the session to acknowledge
it before demanding another. Stderr is kept out of the NDJSON parser.
Select this optional adapter with adapter: __MODULE__ or set
config :claude_wrapper, duplex_adapter: __MODULE__. It requires
forcola >= 0.4.0 and < 0.7.0 and a POSIX host.
:adapter_opts accepts :max_line_bytes, :max_output_bytes, and
:max_pending_bytes (defaults: 1 MiB, 64 MiB, and one line plus its
newline), plus :stderr_capture_bytes for the wrapper's bounded stderr
tail (default 16 KiB). :terminal_recipient can name an independent
process that receives Forcola's terminal record even if the session
owner dies. :kill_grace_ms, :cgroup, and :shim_path are passed
through. Pull delivery and separate stderr are always enabled.