@ayan4m1/comfy-ui-client
Version:
WebSockets API client for ComfyUI
141 lines (137 loc) • 4.44 kB
TypeScript
import WebSocket from 'isomorphic-ws';
interface NodeInfo {
class_type: string;
inputs: {
[key: string]: any;
};
}
interface Prompt {
[nodeId: string]: {
inputs: Record<string, any>;
class_type: string;
};
}
interface ComfyUIError {
type: string;
message: string;
details: string;
extra_info: any;
}
interface QueuePromptResult {
prompt_id: string;
number: number;
node_errors: Record<string, ComfyUIError>;
}
interface UploadImageResult {
name: string;
subfolder: string;
type: string;
}
interface ImageRef {
filename: string;
subfolder?: string;
type?: string;
}
interface EditHistoryRequest {
clear?: boolean;
delete?: string[];
}
interface PromptHistory {
prompt: any[];
outputs: Record<string, any>;
}
interface HistoryResult {
[prompt_id: string]: PromptHistory;
}
interface OutputImage {
filename: string;
subfolder: string;
type: string;
}
interface ImageContainer {
blob: Blob;
image: OutputImage;
}
interface ImagesResponse {
[nodeId: string]: ImageContainer[];
}
interface DeviceStats {
name: string;
type: string;
index: number;
vram_total: number;
vram_free: number;
torch_vram_total: number;
torch_vram_free: number;
}
interface SystemStatsResponse {
devices: DeviceStats[];
}
interface ViewMetadataResponse {
[key: string]: any;
}
type QueueDataPrimitives = number | string | object;
type QueueData = QueueDataPrimitives | Array<QueueDataPrimitives>;
interface QueueResponse {
queue_running: QueueData[];
queue_pending: QueueData[];
}
interface ExecInfo {
queue_remaining: number;
}
interface PromptQueueResponse {
exec_info: ExecInfo;
}
interface ObjectInfo {
input: {
[key: string]: any;
};
output: string[];
output_is_list: boolean[];
output_name: string[];
name: string;
display_name: string;
description: string;
category: string;
output_node: boolean;
}
interface ObjectInfoResponse {
[nodeClass: string]: ObjectInfo;
}
interface ResponseError {
error: string | ComfyUIError;
node_errors: Record<string, ComfyUIError>;
}
type FolderName = 'checkpoints' | 'configs' | 'loras' | 'vae' | 'clip' | 'unet' | 'clip_vision' | 'style_models' | 'embeddings' | 'diffusers' | 'vae_approx' | 'controlnet' | 'gligen' | 'upscale_models' | 'custom_nodes' | 'hypernetworks';
type EventHandler = (type: string, data: any) => void;
declare class ComfyUIClient {
host: string;
token?: string;
clientId: string;
historyResult: HistoryResult;
eventEmitter: EventHandler;
handlers: Record<string, CallableFunction[]>;
protected ws?: WebSocket;
constructor(host: string, clientId: string, token?: string, eventEmitter?: EventHandler);
connect(): Promise<void>;
disconnect(): Promise<void>;
getEmbeddings(): Promise<string[]>;
getExtensions(): Promise<string[]>;
queuePrompt(prompt: Prompt): Promise<QueuePromptResult>;
interrupt(): Promise<Response>;
editHistory(params: EditHistoryRequest): Promise<void>;
uploadImage(image: ArrayBuffer, filename: string, overwrite?: boolean): Promise<UploadImageResult>;
uploadMask(image: ArrayBuffer, filename: string, originalRef: ImageRef, overwrite?: boolean): Promise<UploadImageResult>;
getImage(filename: string, subfolder: string, type: string): Promise<Blob>;
viewMetadata(folderName: FolderName, filename: string): Promise<ViewMetadataResponse>;
getSystemStats(): Promise<SystemStatsResponse>;
getPrompt(): Promise<PromptQueueResponse>;
getObjectInfo(nodeClass?: string): Promise<ObjectInfoResponse>;
getHistory(fetchOptionOrPromptId?: any, promptId?: string): Promise<HistoryResult>;
getQueue(fetchOption: any): Promise<QueueResponse>;
deleteQueue(id: string): Promise<QueueResponse>;
getResult(fetchOptionOrPrompt: any, promptParam?: Prompt): Promise<PromptHistory>;
getImages(prompt: Prompt): Promise<ImagesResponse>;
private fetch;
}
export { ComfyUIClient, ComfyUIError, DeviceStats, EditHistoryRequest, ExecInfo, FolderName, HistoryResult, ImageContainer, ImageRef, ImagesResponse, NodeInfo, ObjectInfo, ObjectInfoResponse, OutputImage, Prompt, PromptHistory, PromptQueueResponse, QueueData, QueueDataPrimitives, QueuePromptResult, QueueResponse, ResponseError, SystemStatsResponse, UploadImageResult, ViewMetadataResponse };