claude-code-best/packages/remote-control-server/web/src/acp/relay-client.ts

27 lines
916 B
TypeScript

import { ACPClient } from './client'
import type { ACPSettings } from './types'
import { getActiveApiToken } from '../api/client'
/**
* Build the RCS relay WebSocket URL for a given agent.
* Uses UUID auth (same as /code/ pages).
*/
export function buildRelayUrl(agentId: string): string {
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'
return `${protocol}//${window.location.host}/acp/relay/${agentId}`
}
/**
* Create an ACPClient that connects to an agent through the RCS relay.
* The relay transparently forwards ACP protocol messages between
* the frontend and the target acp-link instance.
*/
export function createRelayClient(agentId: string): ACPClient {
const relayUrl = buildRelayUrl(agentId)
const token = getActiveApiToken()
const settings: ACPSettings = token
? { proxyUrl: relayUrl, token }
: { proxyUrl: relayUrl }
return new ACPClient(settings)
}