@voxket-ai/voxket-live
Version:
A React widget for embedding Voxket-powered audio/video/chat experiences.
65 lines (64 loc) • 2.27 kB
TypeScript
import { VoxketClient } from '../core/client';
import { VoxketEvents } from '../types/core';
export interface PluginContext {
client: VoxketClient;
emit: <K extends keyof VoxketEvents>(event: K, ...args: Parameters<VoxketEvents[K]>) => void;
on: <K extends keyof VoxketEvents>(event: K, handler: VoxketEvents[K]) => () => void;
config: Record<string, any>;
}
export interface Plugin {
name: string;
version: string;
description?: string;
dependencies?: string[];
install?(context: PluginContext): void | Promise<void>;
uninstall?(context: PluginContext): void | Promise<void>;
onSessionStart?(context: PluginContext, sessionId: string): void | Promise<void>;
onSessionEnd?(context: PluginContext, sessionId: string): void | Promise<void>;
onAgentResponse?(context: PluginContext, response: any): void | Promise<void>;
config?: Record<string, any>;
}
export declare class PluginManager {
private plugins;
private installedPlugins;
private context;
constructor(client: VoxketClient);
/**
* Register a plugin
*/
register(plugin: Plugin): void;
/**
* Install a plugin
*/
install(pluginName: string, config?: Record<string, any>): Promise<void>;
/**
* Uninstall a plugin
*/
uninstall(pluginName: string): Promise<void>;
/**
* Check if a plugin is installed
*/
isInstalled(pluginName: string): boolean;
/**
* Get list of installed plugins
*/
getInstalledPlugins(): string[];
/**
* Get list of available plugins
*/
getAvailablePlugins(): string[];
/**
* Get plugin info
*/
getPluginInfo(pluginName: string): Plugin | undefined;
private setupPluginEvents;
}
export declare function createPlugin(definition: Plugin): Plugin;
export declare function createModalityPlugin(name: string, modality: string, handlers: {
onActivate?: (context: PluginContext) => void | Promise<void>;
onDeactivate?: (context: PluginContext) => void | Promise<void>;
onMessage?: (context: PluginContext, message: any) => void | Promise<void>;
}): Plugin;
export declare const analyticsPlugin: Plugin;
export declare const debugPlugin: Plugin;
export declare const metricsPlugin: Plugin;