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) 类型层已完整就绪。
26 lines
1.1 KiB
TypeScript
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')
|
|
}
|