Registration HTTP logic was duplicated three times across listen.ts (initial + re-register) and listen.tsx. Extracted into listen-register.ts with proper error handling for non-JSON responses, response shape validation, and 5 focused tests. Removes ~110 lines of duplication. 🐛 Generated with [Letta Code](https://letta.com) Co-Authored-By: Letta <noreply@letta.com>