@phren/cli
Version:
Knowledge layer for AI agents - CLI, MCP server, and data layer
46 lines (45 loc) • 2.18 kB
TypeScript
import { type SpeechState } from "./speech.js";
export interface LiveSocket {
readonly readyState: number;
/** Bytes queued to send; the phone's socket has it, ElevenLabs' need not. */
readonly bufferedAmount?: number;
send(data: string): void;
close(code?: number, reason?: string): void;
on(event: "message", listener: (data: Buffer, isBinary: boolean) => void): unknown;
on(event: "open", listener: () => void): unknown;
on(event: "close", listener: (code?: number, reason?: Buffer) => void): unknown;
on(event: "error", listener: (error: Error) => void): unknown;
}
/** ElevenLabs' side: a socket that also reports a refused handshake with its
* HTTP status and ElevenLabs' `detail.status`. */
export interface LiveUpstream extends LiveSocket {
on(event: "message", listener: (data: Buffer, isBinary: boolean) => void): unknown;
on(event: "open", listener: () => void): unknown;
on(event: "close", listener: (code?: number, reason?: Buffer) => void): unknown;
on(event: "error", listener: (error: Error) => void): unknown;
on(event: "refused", listener: (status: number, code: string) => void): unknown;
}
export interface LiveSpeechOptions {
key?: () => Promise<string | undefined>;
connect?: (url: string, key: string) => LiveUpstream;
/** Defaults to this computer's model and region settings. */
model?: string;
origin?: string;
state?: SpeechState;
maxSessionMs?: number;
handshakeMs?: number;
firstAudioMs?: number;
}
/** Text-to-dialogue serves v3 and v4; text-to-speech stream-input the rest. */
export declare function liveEndpoint(model: string): "dialogue" | "speech";
/** Markdown arriving a piece at a time, released a sentence or line at a time
* as the words speakableText leaves of it. A code block is skipped until it
* closes; the unfinished sentence waits for more text or `end`. */
export declare class SpeakableStream {
private pending;
private inFence;
push(text: string): string;
end(): string;
private speak;
}
export declare function relayLiveSpeech(client: LiveSocket, query: URLSearchParams, options?: LiveSpeechOptions): Promise<void>;