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.
This commit is contained in:
David Snelling 2025-08-18 17:35:06 -07:00
commit f8c45f2d8d
448 changed files with 103294 additions and 0 deletions

45
dist/errors/brainyError.d.ts vendored Normal file
View file

@ -0,0 +1,45 @@
/**
* Custom error types for Brainy operations
* Provides better error classification and handling
*/
export type BrainyErrorType = 'TIMEOUT' | 'NETWORK' | 'STORAGE' | 'NOT_FOUND' | 'RETRY_EXHAUSTED';
/**
* Custom error class for Brainy operations
* Provides error type classification and retry information
*/
export declare class BrainyError extends Error {
readonly type: BrainyErrorType;
readonly retryable: boolean;
readonly originalError?: Error;
readonly attemptNumber?: number;
readonly maxRetries?: number;
constructor(message: string, type: BrainyErrorType, retryable?: boolean, originalError?: Error, attemptNumber?: number, maxRetries?: number);
/**
* Create a timeout error
*/
static timeout(operation: string, timeoutMs: number, originalError?: Error): BrainyError;
/**
* Create a network error
*/
static network(message: string, originalError?: Error): BrainyError;
/**
* Create a storage error
*/
static storage(message: string, originalError?: Error): BrainyError;
/**
* Create a not found error
*/
static notFound(resource: string): BrainyError;
/**
* Create a retry exhausted error
*/
static retryExhausted(operation: string, maxRetries: number, lastError?: Error): BrainyError;
/**
* Check if an error is retryable
*/
static isRetryable(error: Error): boolean;
/**
* Convert a generic error to a BrainyError with appropriate classification
*/
static fromError(error: Error, operation?: string): BrainyError;
}

113
dist/errors/brainyError.js vendored Normal file
View file

@ -0,0 +1,113 @@
/**
* Custom error types for Brainy operations
* Provides better error classification and handling
*/
/**
* Custom error class for Brainy operations
* Provides error type classification and retry information
*/
export class BrainyError extends Error {
constructor(message, type, retryable = false, originalError, attemptNumber, maxRetries) {
super(message);
this.name = 'BrainyError';
this.type = type;
this.retryable = retryable;
this.originalError = originalError;
this.attemptNumber = attemptNumber;
this.maxRetries = maxRetries;
// Maintain proper stack trace for where our error was thrown (only available on V8)
if (Error.captureStackTrace) {
Error.captureStackTrace(this, BrainyError);
}
}
/**
* Create a timeout error
*/
static timeout(operation, timeoutMs, originalError) {
return new BrainyError(`Operation '${operation}' timed out after ${timeoutMs}ms`, 'TIMEOUT', true, originalError);
}
/**
* Create a network error
*/
static network(message, originalError) {
return new BrainyError(`Network error: ${message}`, 'NETWORK', true, originalError);
}
/**
* Create a storage error
*/
static storage(message, originalError) {
return new BrainyError(`Storage error: ${message}`, 'STORAGE', true, originalError);
}
/**
* Create a not found error
*/
static notFound(resource) {
return new BrainyError(`Resource not found: ${resource}`, 'NOT_FOUND', false);
}
/**
* Create a retry exhausted error
*/
static retryExhausted(operation, maxRetries, lastError) {
return new BrainyError(`Operation '${operation}' failed after ${maxRetries} retry attempts`, 'RETRY_EXHAUSTED', false, lastError, maxRetries, maxRetries);
}
/**
* Check if an error is retryable
*/
static isRetryable(error) {
if (error instanceof BrainyError) {
return error.retryable;
}
// Check for common retryable error patterns
const message = error.message.toLowerCase();
const name = error.name.toLowerCase();
// Network-related errors that are typically retryable
if (message.includes('timeout') ||
message.includes('network') ||
message.includes('connection') ||
message.includes('econnreset') ||
message.includes('enotfound') ||
message.includes('etimedout') ||
name.includes('timeout')) {
return true;
}
// AWS SDK specific retryable errors
if (message.includes('throttling') ||
message.includes('rate limit') ||
message.includes('service unavailable') ||
message.includes('internal server error') ||
message.includes('bad gateway') ||
message.includes('gateway timeout')) {
return true;
}
return false;
}
/**
* Convert a generic error to a BrainyError with appropriate classification
*/
static fromError(error, operation) {
if (error instanceof BrainyError) {
return error;
}
const message = error.message.toLowerCase();
const name = error.name.toLowerCase();
// Classify the error based on common patterns
if (message.includes('timeout') || name.includes('timeout')) {
return BrainyError.timeout(operation || 'unknown', 0, error);
}
if (message.includes('network') ||
message.includes('connection') ||
message.includes('econnreset') ||
message.includes('enotfound') ||
message.includes('etimedout')) {
return BrainyError.network(error.message, error);
}
if (message.includes('nosuchkey') ||
message.includes('not found') ||
message.includes('does not exist')) {
return BrainyError.notFound(operation || 'resource');
}
// Default to storage error for unclassified errors
return BrainyError.storage(error.message, error);
}
}
//# sourceMappingURL=brainyError.js.map

1
dist/errors/brainyError.js.map vendored Normal file
View file

@ -0,0 +1 @@
{"version":3,"file":"brainyError.js","sourceRoot":"","sources":["../../src/errors/brainyError.ts"],"names":[],"mappings":"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"}