Open source vector database with HNSW indexing, graph relationships, and metadata facets. Features CLI with professional augmentation registry integration for discovering extensions and capabilities.
370 lines
17 KiB
TypeScript
370 lines
17 KiB
TypeScript
/** Common types for the augmentation system */
|
|
/**
|
|
* Enum representing all types of augmentations available in the Brainy system.
|
|
*/
|
|
export declare enum AugmentationType {
|
|
SENSE = "sense",
|
|
CONDUIT = "conduit",
|
|
COGNITION = "cognition",
|
|
MEMORY = "memory",
|
|
PERCEPTION = "perception",
|
|
DIALOG = "dialog",
|
|
ACTIVATION = "activation",
|
|
WEBSOCKET = "webSocket"
|
|
}
|
|
export type WebSocketConnection = {
|
|
connectionId: string;
|
|
url: string;
|
|
status: 'connected' | 'disconnected' | 'error';
|
|
send?: (data: string | ArrayBufferLike | Blob | ArrayBufferView) => Promise<void>;
|
|
close?: () => Promise<void>;
|
|
_streamMessageHandler?: (event: {
|
|
data: unknown;
|
|
}) => void;
|
|
_messageHandlerWrapper?: (data: unknown) => void;
|
|
};
|
|
type DataCallback<T> = (data: T) => void;
|
|
export type AugmentationResponse<T> = {
|
|
success: boolean;
|
|
data: T;
|
|
error?: string;
|
|
};
|
|
/**
|
|
* Base interface for all Brainy augmentations.
|
|
* All augmentations must implement these core properties.
|
|
*/
|
|
export interface IAugmentation {
|
|
/** A unique identifier for the augmentation (e.g., "my-reasoner-v1") */
|
|
readonly name: string;
|
|
/** A human-readable description of the augmentation's purpose */
|
|
readonly description: string;
|
|
/** Whether this augmentation is enabled */
|
|
enabled: boolean;
|
|
/**
|
|
* Initializes the augmentation. This method is called when Brainy starts up.
|
|
* @returns A Promise that resolves when initialization is complete
|
|
*/
|
|
initialize(): Promise<void>;
|
|
shutDown(): Promise<void>;
|
|
getStatus(): Promise<'active' | 'inactive' | 'error'>;
|
|
[key: string]: any;
|
|
}
|
|
/**
|
|
* Interface for WebSocket support.
|
|
* Augmentations that implement this interface can communicate via WebSockets.
|
|
*/
|
|
export interface IWebSocketSupport extends IAugmentation {
|
|
/**
|
|
* Establishes a WebSocket connection.
|
|
* @param url The WebSocket server URL to connect to
|
|
* @param protocols Optional subprotocols
|
|
* @returns A Promise resolving to a connection handle or status
|
|
*/
|
|
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: DataCallback<unknown>): 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: DataCallback<unknown>): 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>;
|
|
}
|
|
export declare namespace BrainyAugmentations {
|
|
/**
|
|
* Interface for Senses augmentations.
|
|
* These augmentations ingest and process raw, unstructured data into nouns and verbs.
|
|
*/
|
|
interface ISenseAugmentation extends IAugmentation {
|
|
/**
|
|
* Processes raw input data into structured nouns and verbs.
|
|
* @param rawData The raw, unstructured data (e.g., text, image buffer, audio stream)
|
|
* @param dataType The type of raw data (e.g., 'text', 'image', 'audio')
|
|
* @param options Optional processing options (e.g., confidence thresholds, filters)
|
|
*/
|
|
processRawData(rawData: Buffer | string, dataType: string, options?: Record<string, unknown>): Promise<AugmentationResponse<{
|
|
nouns: string[];
|
|
verbs: string[];
|
|
confidence?: number;
|
|
insights?: Array<{
|
|
type: string;
|
|
description: string;
|
|
confidence: number;
|
|
}>;
|
|
metadata?: Record<string, unknown>;
|
|
}>>;
|
|
/**
|
|
* Registers a listener for real-time data feeds.
|
|
* @param feedUrl The URL or identifier of the real-time feed
|
|
* @param callback A function to call with processed data
|
|
*/
|
|
listenToFeed(feedUrl: string, callback: DataCallback<{
|
|
nouns: string[];
|
|
verbs: string[];
|
|
confidence?: number;
|
|
}>): Promise<void>;
|
|
/**
|
|
* Analyzes data structure without processing (preview mode).
|
|
* @param rawData The raw data to analyze
|
|
* @param dataType The type of raw data
|
|
* @param options Optional analysis options
|
|
*/
|
|
analyzeStructure?(rawData: Buffer | string, dataType: string, options?: Record<string, unknown>): Promise<AugmentationResponse<{
|
|
entityTypes: Array<{
|
|
type: string;
|
|
count: number;
|
|
confidence: number;
|
|
}>;
|
|
relationshipTypes: Array<{
|
|
type: string;
|
|
count: number;
|
|
confidence: number;
|
|
}>;
|
|
dataQuality: {
|
|
completeness: number;
|
|
consistency: number;
|
|
accuracy: number;
|
|
};
|
|
recommendations: string[];
|
|
}>>;
|
|
/**
|
|
* Validates data compatibility with current knowledge base.
|
|
* @param rawData The raw data to validate
|
|
* @param dataType The type of raw data
|
|
*/
|
|
validateCompatibility?(rawData: Buffer | string, dataType: string): Promise<AugmentationResponse<{
|
|
compatible: boolean;
|
|
issues: Array<{
|
|
type: string;
|
|
description: string;
|
|
severity: 'low' | 'medium' | 'high';
|
|
}>;
|
|
suggestions: string[];
|
|
}>>;
|
|
}
|
|
/**
|
|
* Interface for Conduits augmentations.
|
|
* These augmentations establish and manage high-bandwidth, dedicated channels for structured, programmatic two-way data exchange.
|
|
*/
|
|
interface IConduitAugmentation extends IAugmentation {
|
|
/**
|
|
* Establishes a connection for programmatic data exchange.
|
|
* @param targetSystemId The identifier of the external system to connect to
|
|
* @param config Configuration details for the connection (e.g., API keys, endpoints)
|
|
*/
|
|
establishConnection(targetSystemId: string, config: Record<string, unknown>): Promise<AugmentationResponse<WebSocketConnection>>;
|
|
/**
|
|
* Reads structured data directly from Brainy's knowledge graph.
|
|
* @param query A structured query (e.g., graph query language, object path)
|
|
* @param options Optional query options (e.g., depth, filters)
|
|
*/
|
|
readData(query: Record<string, unknown>, options?: Record<string, unknown>): Promise<AugmentationResponse<unknown>>;
|
|
/**
|
|
* Writes or updates structured data directly into Brainy's knowledge graph.
|
|
* @param data The structured data to write/update
|
|
* @param options Optional write options (e.g., merge, overwrite)
|
|
*/
|
|
writeData(data: Record<string, unknown>, options?: Record<string, unknown>): Promise<AugmentationResponse<unknown>>;
|
|
/**
|
|
* Monitors a specific data stream or event within Brainy for external systems.
|
|
* @param streamId The identifier of the data stream or event
|
|
* @param callback A function to call when new data/events occur
|
|
*/
|
|
monitorStream(streamId: string, callback: DataCallback<unknown>): Promise<void>;
|
|
}
|
|
/**
|
|
* Interface for Cognitions augmentations.
|
|
* These augmentations enable advanced reasoning, inference, and logical operations.
|
|
*/
|
|
interface ICognitionAugmentation extends IAugmentation {
|
|
/**
|
|
* Performs a reasoning operation based on current knowledge.
|
|
* @param query The specific reasoning task or question
|
|
* @param context Optional additional context for the reasoning
|
|
*/
|
|
reason(query: string, context?: Record<string, unknown>): AugmentationResponse<{
|
|
inference: string;
|
|
confidence: number;
|
|
}>;
|
|
/**
|
|
* Infers relationships or new facts from existing data.
|
|
* @param dataSubset A subset of data to infer from
|
|
*/
|
|
infer(dataSubset: Record<string, unknown>): AugmentationResponse<Record<string, unknown>>;
|
|
/**
|
|
* Executes a logical operation or rule set.
|
|
* @param ruleId The identifier of the rule or logic to apply
|
|
* @param input Data to apply the logic to
|
|
*/
|
|
executeLogic(ruleId: string, input: Record<string, unknown>): AugmentationResponse<boolean>;
|
|
}
|
|
/**
|
|
* Interface for Memory augmentations.
|
|
* These augmentations provide storage capabilities for data in different formats (e.g., fileSystem, in-memory).
|
|
*/
|
|
interface IMemoryAugmentation extends IAugmentation {
|
|
/**
|
|
* Stores data in the memory system.
|
|
* @param key The unique identifier for the data
|
|
* @param data The data to store
|
|
* @param options Optional storage options (e.g., expiration, format)
|
|
*/
|
|
storeData(key: string, data: unknown, options?: Record<string, unknown>): Promise<AugmentationResponse<boolean>>;
|
|
/**
|
|
* Retrieves data from the memory system.
|
|
* @param key The unique identifier for the data
|
|
* @param options Optional retrieval options (e.g., format, version)
|
|
*/
|
|
retrieveData(key: string, options?: Record<string, unknown>): Promise<AugmentationResponse<unknown>>;
|
|
/**
|
|
* Updates existing data in the memory system.
|
|
* @param key The unique identifier for the data
|
|
* @param data The updated data
|
|
* @param options Optional update options (e.g., merge, overwrite)
|
|
*/
|
|
updateData(key: string, data: unknown, options?: Record<string, unknown>): Promise<AugmentationResponse<boolean>>;
|
|
/**
|
|
* Deletes data from the memory system.
|
|
* @param key The unique identifier for the data
|
|
* @param options Optional deletion options
|
|
*/
|
|
deleteData(key: string, options?: Record<string, unknown>): Promise<AugmentationResponse<boolean>>;
|
|
/**
|
|
* Lists available data keys in the memory system.
|
|
* @param pattern Optional pattern to filter keys (e.g., prefix, regex)
|
|
* @param options Optional listing options (e.g., limit, offset)
|
|
*/
|
|
listDataKeys(pattern?: string, options?: Record<string, unknown>): Promise<AugmentationResponse<string[]>>;
|
|
/**
|
|
* Searches for data in the memory system using vector similarity.
|
|
* @param query The query vector or data to search for
|
|
* @param k Number of results to return
|
|
* @param options Optional search options
|
|
*/
|
|
search(query: unknown, k?: number, options?: Record<string, unknown>): Promise<AugmentationResponse<Array<{
|
|
id: string;
|
|
score: number;
|
|
data: unknown;
|
|
}>>>;
|
|
}
|
|
/**
|
|
* Interface for Perceptions augmentations.
|
|
* These augmentations interpret, contextualize, and visualize identified nouns and verbs.
|
|
*/
|
|
interface IPerceptionAugmentation extends IAugmentation {
|
|
/**
|
|
* Interprets and contextualizes processed nouns and verbs.
|
|
* @param nouns The list of identified nouns
|
|
* @param verbs The list of identified verbs
|
|
* @param context Optional additional context for interpretation
|
|
*/
|
|
interpret(nouns: string[], verbs: string[], context?: Record<string, unknown>): AugmentationResponse<Record<string, unknown>>;
|
|
/**
|
|
* Organizes and filters information.
|
|
* @param data The data to organize (e.g., interpreted perceptions)
|
|
* @param criteria Optional criteria for filtering/prioritization
|
|
*/
|
|
organize(data: Record<string, unknown>, criteria?: Record<string, unknown>): AugmentationResponse<Record<string, unknown>>;
|
|
/**
|
|
* Generates a visualization based on the provided data.
|
|
* @param data The data to visualize (e.g., interpreted patterns)
|
|
* @param visualizationType The desired type of visualization (e.g., 'graph', 'chart')
|
|
*/
|
|
generateVisualization(data: Record<string, unknown>, visualizationType: string): AugmentationResponse<string | Buffer | Record<string, unknown>>;
|
|
}
|
|
/**
|
|
* Interface for Dialogs augmentations.
|
|
* These augmentations facilitate natural language understanding and generation for conversational interaction.
|
|
*/
|
|
interface IDialogAugmentation extends IAugmentation {
|
|
/**
|
|
* Processes a user's natural language input (query).
|
|
* @param naturalLanguageQuery The raw text query from the user
|
|
* @param sessionId An optional session ID for conversational context
|
|
*/
|
|
processUserInput(naturalLanguageQuery: string, sessionId?: string): AugmentationResponse<{
|
|
intent: string;
|
|
nouns: string[];
|
|
verbs: string[];
|
|
context: Record<string, unknown>;
|
|
}>;
|
|
/**
|
|
* Generates a natural language response based on Brainy's knowledge and interpreted input.
|
|
* @param interpretedInput The output from `processUserInput` or similar
|
|
* @param knowledgeContext Relevant knowledge retrieved from Brainy
|
|
* @param sessionId An optional session ID for conversational context
|
|
*/
|
|
generateResponse(interpretedInput: Record<string, unknown>, knowledgeContext: Record<string, unknown>, sessionId?: string): AugmentationResponse<string>;
|
|
/**
|
|
* Manages and updates conversational context.
|
|
* @param sessionId The session ID
|
|
* @param contextUpdate The data to update the context with
|
|
*/
|
|
manageContext(sessionId: string, contextUpdate: Record<string, unknown>): Promise<void>;
|
|
}
|
|
/**
|
|
* Interface for Activations augmentations.
|
|
* These augmentations dictate how Brainy initiates actions, responses, or data manipulations.
|
|
*/
|
|
interface IActivationAugmentation extends IAugmentation {
|
|
/**
|
|
* Triggers an action based on a processed command or internal state.
|
|
* @param actionName The name of the action to trigger
|
|
* @param parameters Optional parameters for the action
|
|
*/
|
|
triggerAction(actionName: string, parameters?: Record<string, unknown>): AugmentationResponse<unknown>;
|
|
/**
|
|
* Generates an expressive output or response from Brainy.
|
|
* @param knowledgeId The identifier of the knowledge to express
|
|
* @param format The desired output format (e.g., 'text', 'json')
|
|
*/
|
|
generateOutput(knowledgeId: string, format: string): AugmentationResponse<string | Record<string, unknown>>;
|
|
/**
|
|
* Interacts with an external system or API.
|
|
* @param systemId The identifier of the external system
|
|
* @param payload The data to send to the external system
|
|
*/
|
|
interactExternal(systemId: string, payload: Record<string, unknown>): AugmentationResponse<unknown>;
|
|
}
|
|
}
|
|
/** Direct exports of augmentation interfaces for easier imports */
|
|
export interface ISenseAugmentation extends BrainyAugmentations.ISenseAugmentation {
|
|
}
|
|
export interface IConduitAugmentation extends BrainyAugmentations.IConduitAugmentation {
|
|
}
|
|
export interface ICognitionAugmentation extends BrainyAugmentations.ICognitionAugmentation {
|
|
}
|
|
export interface IMemoryAugmentation extends BrainyAugmentations.IMemoryAugmentation {
|
|
}
|
|
export interface IPerceptionAugmentation extends BrainyAugmentations.IPerceptionAugmentation {
|
|
}
|
|
export interface IDialogAugmentation extends BrainyAugmentations.IDialogAugmentation {
|
|
}
|
|
export interface IActivationAugmentation extends BrainyAugmentations.IActivationAugmentation {
|
|
}
|
|
/** WebSocket-enabled augmentation interfaces */
|
|
export type IWebSocketSenseAugmentation = BrainyAugmentations.ISenseAugmentation & IWebSocketSupport;
|
|
export type IWebSocketConduitAugmentation = BrainyAugmentations.IConduitAugmentation & IWebSocketSupport;
|
|
export type IWebSocketCognitionAugmentation = BrainyAugmentations.ICognitionAugmentation & IWebSocketSupport;
|
|
export type IWebSocketMemoryAugmentation = BrainyAugmentations.IMemoryAugmentation & IWebSocketSupport;
|
|
export type IWebSocketPerceptionAugmentation = BrainyAugmentations.IPerceptionAugmentation & IWebSocketSupport;
|
|
export type IWebSocketDialogAugmentation = BrainyAugmentations.IDialogAugmentation & IWebSocketSupport;
|
|
export type IWebSocketActivationAugmentation = BrainyAugmentations.IActivationAugmentation & IWebSocketSupport;
|
|
export {};
|