packages/bridge-coreBridgeAgent: turn orchestrationrunHealthChecks: environment checksConfigStore: local configLaunchdServiceManager: background service control
apps/desktop- Electron main process: IPC, pairing, relay connection, tray/menu, service control
- React renderer: setup wizard + advanced settings
services/cloud-relay- pairing API
- device WebSocket stream
- Telegram bot ingress/egress
- Desktop calls
POST /v1/pairing/sessions. - Relay returns
pairingSessionId + qrPayload + expiresAt. - User scans QR in Telegram (
/start pair_<id>_<code>). - Relay confirms pairing and issues
deviceAccessToken. - Desktop polls
GET /v1/pairing/sessions/:idand stores token in Keychain. - Desktop connects to
wss://.../v1/devices/stream?token=....
- Telegram message arrives.
- Relay routes message to bound device.
- Device invokes
BridgeAgent.handleIncomingMessage. BridgeAgentexecutes turn viacodex app-server.- Device emits
executionStatus/finalResponse. - Relay forwards results back to Telegram.
packages/bridge-coreBridgeAgent:turn 执行编排runHealthChecks:环境检测ConfigStore:本地配置LaunchdServiceManager:后台服务控制
apps/desktop- Electron 主进程:IPC、配对、relay 连接、菜单栏、服务控制
- React 渲染层:初始化向导 + 高级配置
services/cloud-relay- 配对 API
- 设备 WebSocket 通道
- Telegram 入口与回包
- 桌面端调用
POST /v1/pairing/sessions。 - Relay 返回
pairingSessionId + qrPayload + expiresAt。 - 用户在 Telegram 扫码(
/start pair_<id>_<code>)。 - Relay 确认配对并签发
deviceAccessToken。 - 桌面端轮询
GET /v1/pairing/sessions/:id,并写入 Keychain。 - 桌面端通过
wss://.../v1/devices/stream?token=...建连。
- Telegram 消息到达 relay。
- Relay 按绑定关系路由到设备。
- 设备调用
BridgeAgent.handleIncomingMessage。 BridgeAgent通过codex app-server执行 turn。- 设备回传
executionStatus/finalResponse。 - Relay 转发回 Telegram。