brainy/dist/augmentations/conduitAugmentations.d.ts
David Snelling f8c45f2d8d Initial commit: Brainy - Multi-Dimensional AI Database
Open source vector database with HNSW indexing, graph relationships,
and metadata facets. Features CLI with professional augmentation registry
integration for discovering extensions and capabilities.
2025-08-18 17:35:06 -07:00

172 lines
8.3 KiB
TypeScript

import { AugmentationType, IConduitAugmentation, IWebSocketSupport, AugmentationResponse, WebSocketConnection } from '../types/augmentations.js';
/**
* Base class for conduit augmentations that provide data synchronization between Brainy instances
*/
declare abstract class BaseConduitAugmentation implements IConduitAugmentation {
readonly name: string;
readonly description: string;
enabled: boolean;
protected isInitialized: boolean;
protected connections: Map<string, any>;
constructor(name: string);
initialize(): Promise<void>;
shutDown(): Promise<void>;
getStatus(): Promise<'active' | 'inactive' | 'error'>;
abstract establishConnection(targetSystemId: string, config: Record<string, unknown>): Promise<AugmentationResponse<WebSocketConnection>>;
abstract readData(query: Record<string, unknown>, options?: Record<string, unknown>): Promise<AugmentationResponse<unknown>>;
abstract writeData(data: Record<string, unknown>, options?: Record<string, unknown>): Promise<AugmentationResponse<unknown>>;
abstract monitorStream(streamId: string, callback: (data: unknown) => void): Promise<void>;
protected ensureInitialized(): Promise<void>;
}
/**
* WebSocket conduit augmentation for syncing Brainy instances using WebSockets
*
* This conduit is for syncing between browsers and servers, or between servers.
* WebSockets cannot be used for direct browser-to-browser communication without a server in the middle.
*/
export declare class WebSocketConduitAugmentation extends BaseConduitAugmentation implements IWebSocketSupport {
readonly description = "Conduit augmentation that syncs Brainy instances using WebSockets";
private webSocketConnections;
private messageCallbacks;
constructor(name?: string);
getType(): AugmentationType;
/**
* Establishes a connection to another Brainy instance
* @param targetSystemId The URL or identifier of the target system
* @param config Configuration options for the connection
*/
establishConnection(targetSystemId: string, config: Record<string, unknown>): Promise<AugmentationResponse<WebSocketConnection>>;
/**
* Reads data from a connected Brainy instance
* @param query Query parameters for reading data
* @param options Additional options
*/
readData(query: Record<string, unknown>, options?: Record<string, unknown>): Promise<AugmentationResponse<unknown>>;
/**
* Writes data to a connected Brainy instance
* @param data The data to write
* @param options Additional options
*/
writeData(data: Record<string, unknown>, options?: Record<string, unknown>): Promise<AugmentationResponse<unknown>>;
/**
* Monitors a data stream from a connected Brainy instance
* @param streamId The ID of the stream to monitor (usually a connection ID)
* @param callback Function to call when new data is received
*/
monitorStream(streamId: string, callback: (data: unknown) => void): Promise<void>;
/**
* Establishes a WebSocket connection
* @param url The WebSocket server URL to connect to
* @param protocols Optional subprotocols
*/
connectWebSocket(url: string, protocols?: string | string[]): Promise<WebSocketConnection>;
/**
* Sends data through an established WebSocket connection
* @param connectionId The identifier of the established connection
* @param data The data to send (will be serialized if not a string)
*/
sendWebSocketMessage(connectionId: string, data: unknown): Promise<void>;
/**
* Registers a callback for incoming WebSocket messages
* @param connectionId The identifier of the established connection
* @param callback The function to call when a message is received
*/
onWebSocketMessage(connectionId: string, callback: (data: unknown) => void): Promise<void>;
/**
* Removes a callback for incoming WebSocket messages
* @param connectionId The identifier of the established connection
* @param callback The function to remove from the callbacks
*/
offWebSocketMessage(connectionId: string, callback: (data: unknown) => void): Promise<void>;
/**
* Closes an established WebSocket connection
* @param connectionId The identifier of the established connection
* @param code Optional close code
* @param reason Optional close reason
*/
closeWebSocket(connectionId: string, code?: number, reason?: string): Promise<void>;
}
/**
* WebRTC conduit augmentation for syncing Brainy instances using WebRTC
*
* This conduit is for direct peer-to-peer syncing between browsers.
* It is the recommended approach for browser-to-browser communication.
*/
export declare class WebRTCConduitAugmentation extends BaseConduitAugmentation implements IWebSocketSupport {
readonly description = "Conduit augmentation that syncs Brainy instances using WebRTC";
private peerConnections;
private dataChannels;
private webSocketConnections;
private messageCallbacks;
private signalServer;
constructor(name?: string);
getType(): AugmentationType;
initialize(): Promise<void>;
/**
* Establishes a connection to another Brainy instance using WebRTC
* @param targetSystemId The peer ID or signal server URL
* @param config Configuration options for the connection
*/
establishConnection(targetSystemId: string, config: Record<string, unknown>): Promise<AugmentationResponse<WebSocketConnection>>;
/**
* Handles an incoming WebRTC offer
* @param peerId The ID of the peer sending the offer
* @param offer The SDP offer
* @param config Configuration options
*/
private handleOffer;
/**
* Reads data from a connected Brainy instance
* @param query Query parameters for reading data
* @param options Additional options
*/
readData(query: Record<string, unknown>, options?: Record<string, unknown>): Promise<AugmentationResponse<unknown>>;
/**
* Writes data to a connected Brainy instance
* @param data The data to write
* @param options Additional options
*/
writeData(data: Record<string, unknown>, options?: Record<string, unknown>): Promise<AugmentationResponse<unknown>>;
/**
* Monitors a data stream from a connected Brainy instance
* @param streamId The ID of the stream to monitor (usually a connection ID)
* @param callback Function to call when new data is received
*/
monitorStream(streamId: string, callback: (data: unknown) => void): Promise<void>;
/**
* Establishes a WebSocket connection (used for signaling in WebRTC)
* @param url The WebSocket server URL to connect to
* @param protocols Optional subprotocols
*/
connectWebSocket(url: string, protocols?: string | string[]): Promise<WebSocketConnection>;
/**
* Sends data through an established WebSocket or WebRTC connection
* @param connectionId The identifier of the established connection
* @param data The data to send (will be serialized if not a string)
*/
sendWebSocketMessage(connectionId: string, data: unknown): Promise<void>;
/**
* Registers a callback for incoming WebSocket or WebRTC messages
* @param connectionId The identifier of the established connection
* @param callback The function to call when a message is received
*/
onWebSocketMessage(connectionId: string, callback: (data: unknown) => void): Promise<void>;
/**
* Removes a callback for incoming WebSocket or WebRTC messages
* @param connectionId The identifier of the established connection
* @param callback The function to remove from the callbacks
*/
offWebSocketMessage(connectionId: string, callback: (data: unknown) => void): Promise<void>;
/**
* Closes an established WebSocket or WebRTC connection
* @param connectionId The identifier of the established connection
* @param code Optional close code
* @param reason Optional close reason
*/
closeWebSocket(connectionId: string, code?: number, reason?: string): Promise<void>;
}
/**
* Factory function to create the appropriate conduit augmentation based on the type
*/
export declare function createConduitAugmentation(type: 'websocket' | 'webrtc', name?: string, options?: Record<string, unknown>): Promise<IConduitAugmentation & IWebSocketSupport>;
export {};