mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-25 17:45:53 +01:00
Add the host broker for the sandbox duplex channel. The broker reads request frames from one persistent channel, forwards each request on the existing API path, and writes one response frame back. It sends heartbeat frames on an interval to prove liveness. The broker keeps the forward path unchanged. The caller passes a forward handler, and the broker calls it for each request. The handler owns the route allowlist, the token replacement, and the run attribution, so those rules stay in one place. The broker runs nested timeout budgets: forward 30 s, response 32 s, and gateway wait 35 s. Each inner budget is smaller than its outer budget. The broker asserts this order at construction and rejects a configuration that breaks it. Loss is terminal. The broker detects loss through channel exit, a stream write failure, a protocol failure, a heartbeat write failure, and a close timeout. On loss the broker stops, records the loss for metrics only, and dispatches nothing more. It never reconnects and never replays a request. Wire the existing forward timeout in execution-target.ts to a new option that defaults to the broker forward budget (30 s), so the current behavior does not change. Co-authored-by: Paperclip <noreply@paperclip.ing>