claude-code-best/src/utils/peerAddress.ts
James Feng 27682acf63 feat(bridge): tsc 全绿 — 补齐 Bridge/UDS/TCP/ACP 远程控制链类型
tsc --noEmit: 26 → 0 
bun run build: 562 files 
bun test: 3338 pass (0 regression)

变更 (9 files, +128/-12):
- udsClient.ts: 补 sendToUdsSocket, listAllLiveSessions, LiveSession 类型, PeerInfo 扩展字段
- peerAddress.ts: scheme 联合加 'tcp', 补 parseTcpTarget stub
- peerSessions.ts: 补 listBridgePeers() stub
- channelNotification.ts: 补 ChannelPermissionRequestNotificationSchema + channel_context
- acp-link/command.ts: @stricli/core 类型断言 (as any + optional)
- acp/agent.ts: 完整 AcpAgent stub (implement Agent interface)
- computer-use-swift/types.ts: ScreenshotAPI 加 captureWindowTarget?
- ListPeersTool: bridge peer address 映射
- disconnect-monitor.test.ts: status 字段 as any

Bridge 远程控制链 (Daemon→UDS/TCP→Bridge→ACP) 类型层已完整就绪。
2026-06-02 11:26:11 +08:00

26 lines
1.1 KiB
TypeScript

/**
* Peer address parsing — kept separate from peerRegistry.ts so that
* SendMessageTool can import parseAddress without transitively loading
* the bridge (axios) and UDS (fs, net) modules at tool-enumeration time.
*/
/** Parse a URI-style address into scheme + target. */
export function parseAddress(to: string): {
scheme: 'uds' | 'bridge' | 'tcp' | 'other'
target: string
} {
if (to.startsWith('uds:')) return { scheme: 'uds', target: to.slice(4) }
if (to.startsWith('bridge:')) return { scheme: 'bridge', target: to.slice(7) }
if (to.startsWith('tcp:')) return { scheme: 'tcp', target: to.slice(4) }
// Legacy: old-code UDS senders emit bare socket paths in from=; route them
// through the UDS branch so replies aren't silently dropped into teammate
// routing.
if (to.startsWith('/')) return { scheme: 'uds', target: to }
return { scheme: 'other', target: to }
}
/** Parse a TCP target into host+port. CC_Pure: not implemented. */
export function parseTcpTarget(_target: string): { host: string; port: number } {
throw new Error('parseTcpTarget: not available in CC_Pure')
}