From 671cc0b84999291af8d3746eb7b5191f2de7297c Mon Sep 17 00:00:00 2001 From: David Snelling Date: Wed, 17 Sep 2025 16:48:57 -0700 Subject: [PATCH] feat: add intelligent storage auto-detection as default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Change default storage from 'memory' to 'auto' for smart environment detection - Add 'auto' support to storage type validation and TypeScript types - Browser: auto-selects OPFS → memory fallback - Node.js: auto-selects filesystem → memory fallback - Cloud: auto-detects S3/GCS/R2 → disk → memory fallback - Eliminates need for manual storage configuration in most cases 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/brainy.ts | 8 ++++---- src/types/brainy.types.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/brainy.ts b/src/brainy.ts index d7b6783f..22729abc 100644 --- a/src/brainy.ts +++ b/src/brainy.ts @@ -1736,7 +1736,7 @@ export class Brainy implements BrainyInterface { */ private async setupStorage(): Promise { const storage = await createStorage({ - type: this.config.storage?.type || 'memory', + type: this.config.storage?.type || 'auto', ...this.config.storage?.options }) return storage @@ -1790,8 +1790,8 @@ export class Brainy implements BrainyInterface { */ private normalizeConfig(config?: BrainyConfig): Required { // Validate storage configuration - if (config?.storage?.type && !['memory', 'filesystem', 'opfs', 'remote'].includes(config.storage.type)) { - throw new Error(`Invalid storage type: ${config.storage.type}. Must be one of: memory, filesystem, opfs, remote`) + if (config?.storage?.type && !['auto', 'memory', 'filesystem', 'opfs', 'remote', 's3', 'r2', 'gcs'].includes(config.storage.type)) { + throw new Error(`Invalid storage type: ${config.storage.type}. Must be one of: auto, memory, filesystem, opfs, remote, s3, r2, gcs`) } // Validate model configuration @@ -1813,7 +1813,7 @@ export class Brainy implements BrainyInterface { } return { - storage: config?.storage || { type: 'memory' }, + storage: config?.storage || { type: 'auto' }, model: config?.model || { type: 'fast' }, index: config?.index || {}, cache: config?.cache ?? true, diff --git a/src/types/brainy.types.ts b/src/types/brainy.types.ts index 1201263c..e23efb10 100644 --- a/src/types/brainy.types.ts +++ b/src/types/brainy.types.ts @@ -311,7 +311,7 @@ export type AggregateMetric = export interface BrainyConfig { // Storage configuration storage?: { - type: 'memory' | 'filesystem' | 's3' | 'r2' | 'opfs' + type: 'auto' | 'memory' | 'filesystem' | 's3' | 'r2' | 'opfs' | 'gcs' options?: any }