interface HAIPClient extends EventEmitter {
// Connection Management
connect(): Promise<void>;
disconnect(): Promise<void>;
isConnected(): boolean;
// Run Management
startRun(threadId?: string, metadata?: Record<string, any>): Promise<string>;
finishRun(
runId: string,
status?: "OK" | "CANCELLED" | "ERROR",
summary?: string
): Promise<void>;
cancelRun(runId: string): Promise<void>;
// Messaging
sendTextMessage(
channel: HAIPChannel,
text: string,
author?: string,
runId?: string,
threadId?: string
): Promise<string>;
sendMessage(
message: HAIPMessage,
options?: HAIPMessageOptions
): Promise<void>;
sendBinary(data: ArrayBuffer): Promise<void>;
// Tool Integration
callTool(
channel: HAIPChannel,
tool: string,
params?: Record<string, any>,
runId?: string,
threadId?: string
): Promise<string>;
updateTool(
channel: HAIPChannel,
callId: string,
status: "QUEUED" | "RUNNING" | "CANCELLING",
progress?: number,
partial?: any,
runId?: string,
threadId?: string
): Promise<void>;
completeTool(
channel: HAIPChannel,
callId: string,
status?: "OK" | "CANCELLED" | "ERROR",
result?: any,
runId?: string,
threadId?: string
): Promise<void>;
cancelTool(
channel: HAIPChannel,
callId: string,
reason?: string,
runId?: string,
threadId?: string
): Promise<void>;
listTools(
channel: HAIPChannel,
tools: HAIPTool[],
runId?: string,
threadId?: string
): Promise<void>;
getToolSchema(
channel: HAIPChannel,
tool: string,
runId?: string,
threadId?: string
): Promise<void>;
// Flow Control
sendFlowUpdate(
channel: string,
addMessages?: number,
addBytes?: number
): Promise<void>;
pauseChannel(channel: string): Promise<void>;
resumeChannel(channel: string): Promise<void>;
// Replay
requestReplay(fromSeq: string, toSeq?: string): Promise<void>;
// Audio
sendAudioChunk(
channel: HAIPChannel,
messageId: string,
mime: string,
data: ArrayBuffer,
durationMs?: number,
runId?: string,
threadId?: string
): Promise<void>;
// State Management
getConnectionState(): HAIPConnectionState;
getPerformanceMetrics(): HAIPPerformanceMetrics;
getActiveRuns(): HAIPRun[];
getRun(runId: string): HAIPRun | undefined;
// Events
on(event: "connect", listener: () => void): this;
on(event: "disconnect", listener: (reason: string) => void): this;
on(event: "handshake", listener: (payload: any) => void): this;
on(event: "message", listener: (message: HAIPMessage) => void): this;
on(event: "binary", listener: (data: ArrayBuffer) => void): this;
on(event: "error", listener: (error: Error) => void): this;
}