sidecar self-registration: sidecars connect to API server instead of vice versa

Flips the connection model so sidecars register themselves with the API
server via WebSocket at /api/sidecar/register, enabling dynamic discovery,
location independence, and automatic reconnection from either side.

- Add registration protocol types and PTY command/event types
- Create sidecar-registry.ts (replaces sidecar-client.ts) as passive registry
- Create sidecar connector (connect.ts) with exponential backoff reconnect
- Convert process sidecar from WS server to WS client
- Convert PTY sidecar from WS server to multiplexed WS client
- Simplify terminal bridge to thin adapter using registry
- Add PTY sidecar as PM2-managed process
- Update all consumer imports

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-06 08:48:19 +00:00
co-authored by Claude Opus 4.6
parent 6cfa40bad1
commit a0d9ea63f9
17 changed files with 878 additions and 712 deletions
@@ -0,0 +1,16 @@
// ── Sidecar self-registration protocol ──
// Sidecar → API server on connect
export type SidecarRegistration = {
type: 'register';
name: string; // 'process' | 'pty' | custom
capabilities: string[]; // ['claude', 'pi', 'queue', 'proxy'] or ['terminal']
};
// API server → sidecar ack
export type RegistrationAck = {
type: 'registered';
id: string; // server-assigned ID
};
export type RegistrationMessage = SidecarRegistration | RegistrationAck;