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:
commit
f8c45f2d8d
448 changed files with 103294 additions and 0 deletions
45
dist/errors/brainyError.d.ts
vendored
Normal file
45
dist/errors/brainyError.d.ts
vendored
Normal 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
113
dist/errors/brainyError.js
vendored
Normal 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
1
dist/errors/brainyError.js.map
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"brainyError.js","sourceRoot":"","sources":["../../src/errors/brainyError.ts"],"names":[],"mappings":"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"}
|
||||
Loading…
Add table
Add a link
Reference in a new issue