Commit graph

156 commits

Author SHA1 Message Date
68ae595001 0.22.0 2025-07-25 09:44:25 -07:00
501244398e **feat(core, storage, tests): enhance verb construction with timestamps and metadata**
- **Core**: Improved verb creation logic by adding `createdAt`, `updatedAt`, and `createdBy` attributes. These fields include timestamped metadata (`seconds`, `nanoseconds`) and source augmentation/service information for better tracking.
- **Storage**: Refactored `BaseStorage` methods to utilize internal variants (e.g., `saveVerb_internal`, `getNoun_internal`). Added support for new verb attributes while maintaining backward compatibility with existing data structures.
- **Tests**:
  - Updated `s3-storage.test.ts` and `opfs-storage.test.ts` to validate changes in verb attributes such as timestamps and augmentation metadata.
  - Added assertions for `createdAt`, `updatedAt`, and `createdBy` fields in test cases.
- **Cleanup**: Replaced ambiguous type aliases like `Edge` and `HNSWNode` with clearer equivalents (`Verb` and `HNSWNoun_internal`) for consistency across storage adapters.

**Purpose**: Enhance metadata tracking and standardize attribute handling across storage and core modules to ensure accurate and consistent data throughout the system.
2025-07-25 09:44:10 -07:00
ae3560aad3 **refactor(core): remove redundant whitespace and format code**
- **Code Cleanup**: Removed unnecessary trailing whitespaces across `src/brainyData.ts`. Adjusted formatting for inline object spreads to maintain a consistent coding style.
- **Purpose**: Enhance code readability and ensure adherence to formatting standards without altering functionality.
2025-07-24 17:01:04 -07:00
e310ab5559 0.21.0 2025-07-24 16:24:19 -07:00
23c34d5e55 **feat(tests, docs, storage): add statistics storage tests and enhance documentation**
- **Tests**: Added new `statistics-storage.test.ts` to validate statistics storage functionality across scenarios including saving, retrieving, time-based partitioning, and backward compatibility. Ensured tests dynamically handle missing environment variables by skipping S3-related tests when credentials are unavailable.
- **Docs**: Enhanced `statistics.md` with detailed explanations of scalability improvements, including adaptive flush timing, batched updates, and time-based partitioning. Improved readability and structure.
- **Storage**: Updated all storage adapters to integrate time-based partitioning and maintain backward compatibility with legacy statistics storage formats.
- **Dependencies**: Added `dotenv` to support environmental variable management for storage adapter tests.

**Purpose**: Strengthen system reliability by adding comprehensive test coverage for statistics storage, improve scalability documentation, and ensure consistency across storage adapters with robust implementations.
2025-07-24 16:24:02 -07:00
5839e0b556 0.20.0 2025-07-24 12:08:08 -07:00
bc480770b5 **feat(core, statistics, storage): enhance service-level statistics tracking and result filtering**
- **Core**: Introduced a `getCurrentAugmentation` method for detecting active augmentation names. Updated metadata handling to include `createdBy`, `createdAt`, and `updatedAt` attributes for improved tracking.
- **Storage**: Added support for service-based statistics tracking with new methods such as `incrementStatistic`, `decrementStatistic`, and `updateHnswIndexSize`. Implemented persistence for statistics in storage adapters.
- **Statistics**: Enhanced `getStatistics` functionality to provide service-specific breakdowns and support filtering by services. Improved noun, verb, and metadata tracking mechanisms.
- **Search**: Added `service` option to filter results during searches for nouns, verbs, and metadata, ensuring accurate service-based query results.
- **Refactor**: Simplified search logic by integrating HNSW index filtering for better performance when retrieving service-specific results.
- **Tests**: Added comprehensive test coverage for service-level statistics and filtering by service.

**Purpose**: Improve service-level data tracking and analytics while enhancing functionality for filtering and maintaining metadata accuracy to support detailed insights for diverse use cases.
2025-07-24 12:07:47 -07:00
68247c9a6c **feat(storage): remove FileSystemStorage and OPFSStorage implementations**
- **Removal**: Deleted `FileSystemStorage` and `OPFSStorage` adapters from the `/storage` directory.
- **Refactor**: Simplifies the codebase by eliminating unused, redundant, or outdated storage implementations.
- **Impact**: Ensures maintainability by focusing on actively supported storage solutions.

**Purpose**: Streamline the project by removing deprecated or unused storage adapters, reducing complexity and maintenance overhead.
2025-07-24 11:36:17 -07:00
85e5a6bfb9 **feat(core, storage, tests): add service-level statistics tracking and storage adapter enhancements**
- **Core**: Enhanced `getStatistics` function to support `service` and `service[]` filters, enabling statistics breakdown by service. Modified return structure to include `serviceBreakdown` for detailed insights.
- **Storage**: Implemented a new `BaseStorageAdapter` abstract class to centralize statistics-related functionality, such as incrementing/decrementing counters and updating HNSW index size. Refactored all storage adapters (`FileSystemStorage`, `S3CompatibleStorage`, `MemoryStorage`, `OPFSStorage`) to extend `BaseStorageAdapter`, ensuring consistent statistics tracking.
- **Tests**: Added new test cases in `statistics.test.ts` to validate service-level statistics tracking, breakdown accuracy, and multi-service filtering.

**Purpose**: Improve insight into data trends by tracking service-specific usage in statistics. Enhance maintainability and consistency through storage adapter centralization and robust testing.
2025-07-24 11:35:52 -07:00
3c95ee011d **feat(config): add support for 'DOM.Asynciterable' in TypeScript config files**
- Updated `tsconfig.unified.json`, `tsconfig.browser.json`, and `tsconfig.json` to include `"DOM.Asynciterable"` in the `lib` option.
- Ensured compatibility with asynchronous iteration patterns in DOM APIs.

**Purpose**: Enable support for DOM asynchronous iterable utilities, improving compatibility with modern TypeScript and DOM usage scenarios.
2025-07-24 11:21:29 -07:00
b0ba4f185d **feat(core, docs): consolidate redundant files and improve documentation structure**
- **Storage**: Removed redundant storage implementation files from `/storage` directory while retaining necessary `baseStorage.ts`. Verified no impact on functionality with passing tests.
- **Documentation**: Consolidated multiple overlapping `.md` files into a single `statistics.md` file. Added structured sections for easier reference. Applied markdown naming conventions for clarity.
- **Project**: Introduced `CHANGES_SUMMARY.md` and `MARKDOWN_CONVENTIONS.md` to document changes and naming guidelines, improving project organization. Updated `demo.md` file naming for consistency.

**Purpose**: Simplify the codebase by removing duplicates, enhance maintainability through consolidated and structured documentation, and improve developer experience with clear guidelines and better organization.
2025-07-24 11:13:03 -07:00
4389485fd7 0.19.0 2025-07-23 16:28:06 -07:00
d695d46a80 0.18.0 2025-07-23 16:27:10 -07:00
2322b53a0c feat(core, tests): add standalone getStatistics function and improve storage configuration
- **Core**: Introduced a new `getStatistics` utility function in `statistics.ts` for fetching database statistics at the root level of the library. Enhanced `BrainyData` methods to ensure metadata includes `id` field and refined statistics calculations, excluding verbs from the noun count.
- **Tests**: Added comprehensive test coverage in `statistics.test.ts` for the new utility function, validating proper error handling, statistics accuracy, and consistent results between instance methods and standalone function.
- **Storage Config**: Enabled dynamic support for AWS S3, Cloudflare R2, and Google Cloud Storage in web service configuration, utilizing environment variables for adapter setup. Addressed a race condition in `FileSystemStorage` initialization by deferring path module imports.

**Purpose**: Enhance database analytics by introducing a reusable `getStatistics` function, improve flexibility in storage configuration, and ensure robust testing for reliability and accuracy.
2025-07-23 16:26:59 -07:00
b8f10ba39a Merge remote-tracking branch 'origin/main' 2025-07-23 12:39:19 -07:00
b348fcc438 **feat(core): add getStatistics method to BrainyData for detailed DB insights**
- **New Method**:
  - Introduced a new `getStatistics` method in `brainyData.ts` to retrieve key database metrics:
    - Counts for nouns, verbs, metadata entries, and HNSW index size.

- **Error Handling**:
  - Added try-catch blocks to ensure robust error management when fetching metadata or logging failures.

- **Purpose**:
  - Enhances observability of the database state, providing valuable insights for diagnostics and monitoring.
2025-07-23 12:39:17 -07:00
ff95e24b16 chore(release): bump version to 0.18.0
- Updated version to `0.18.0` in `cli-package/package.json` and `package-lock.json`.
- Upgraded `@soulcraft/brainy` dependency to `^0.17.0` for compatibility with recent changes.
- Synced package dependencies and resolved lockfile integrity for deployment.

**Purpose**: Prepare for release by synchronizing versioning across the CLI package and updating dependencies for compatibility.
2025-07-22 16:06:54 -07:00
95142d32fa 0.17.0 2025-07-22 16:04:34 -07:00
4015078247 Merge remote-tracking branch 'origin/main' 2025-07-22 16:01:59 -07:00
97db2daa50 feat(core): enhance addVerb functionality with auto-creation of missing nouns
- Added `autoCreateMissingNouns` and `missingNounMetadata` options to the `addVerb` method in `brainyData.ts`, enabling automatic creation of missing source or target nouns.
- Improved error handling and logging for auto-creation failures, ensuring better feedback during runtime.
- Reformatted existing code for storage options validation to improve readability and maintain consistency.

**Purpose**: Simplify the addition of relationships by automating the process for non-existing nouns and enhance developer experience with better error handling and logging.
2025-07-22 16:01:48 -07:00
086d27deec **chore(release): bump versions for web-service and CLI packages**
- **Version Updates**:
  - Updated `web-service-package/package.json` and `package-lock.json` from `0.15.0` to `0.16.0`.
  - Updated `cli-package/package.json` and `package-lock.json` from `0.16.0` to `0.17.0`.

- **Purpose**:
  - Prepares both packages for their respective new releases, ensuring version consistency across project dependencies.
2025-07-22 11:07:10 -07:00
74f3aac15b **refactor(cli): remove unnecessary @ts-expect-error for omelette import**
- **Changes**:
  - Eliminated the redundant `@ts-expect-error` comment for the `omelette` import in `cli.ts`.

- **Purpose**:
  - Simplifies the code by removing an outdated comment that is no longer needed, ensuring cleaner and more readable source files.
2025-07-22 11:06:18 -07:00
8189b45f48 **chore(release): bump version to 0.16.0 and enhance project scripts**
- **Version Updates**:
  - Updated `cli-package/package.json` and `package-lock.json` from `0.15.0` to `0.16.0`.

- **NPM Script Enhancements**:
  - Added version-related scripts (`version`, `version:patch`, `version:minor`, `version:major`) to `web-service-package` and `cli-package`.
  - Introduced `deploy` and `dry-run` scripts to streamline build and deployment workflows.

- **Script Cleanup**:
  - Removed redundant `build:cli`, `deploy:cli`, and `deploy:web-service` scripts from the root `package.json`.

**Purpose**: Prepares for release 0.16.0 while introducing reusable and optimized build/release scripts, improving the development and deployment experience.
2025-07-22 10:53:52 -07:00
2ec3e4ea23 0.16.0 2025-07-22 10:43:34 -07:00
a03874fef2 **refactor(core): remove generate-version script and update prebuild/version workflows**
- **Removal of `generate-version.js`**:
  - Deleted `scripts/generate-version.js` as it is no longer required for version handling.
  - Removed associated output files, including `src/utils/version.ts`.

- **Prebuild and Version Process Updates**:
  - Updated `prebuild` and `version` scripts in `package.json` to reflect the new workflow:
    - Replaced `generate-version.js` with simplified echo commands for version updates and build steps.
  - Adjusted deployment scripts (`deploy:cli` and `deploy:web-service`) to align with the removal of the script.

- **Documentation and Config Updates**:
  - Cleaned up `README.md` by removing unused version badge references.
  - Updated `cli-package/package.json` to specify a version range (`^0.15.0`) for `@soulcraft/brainy`.

**Purpose**: This refactor simplifies the version handling process by removing outdated scripts, reducing maintenance overhead, and aligning workflows with project conventions. Improves clarity and consistency in both configuration and documentation.
2025-07-22 10:43:19 -07:00
0c7e999a2f **test(web-service): add cloud storage integration tests and update package settings**
- **Cloud Storage Integration Testing**:
  - Added `cloud-storage.test.ts` to validate cloud storage configurations (AWS S3, Cloudflare R2, Google Cloud Storage) and local storage fallback behavior:
    - Includes tests for environment variable priority and configuration detection.
    - Ensures proper override with `FORCE_LOCAL_STORAGE` when specified.

- **Package Settings Updates**:
  - Introduced `web-service-package/package.json` with configurations for building, running, testing, and deployment:
    - Added NPM scripts for building (`npm run build`), development (`npm run dev`), and testing (`npm run test:cloud`).
    - Configured dependencies and devDependencies for web service functionality and cloud integration.

- **Purpose**:
  - This update ensures comprehensive cloud storage testing and provides structured project configurations for seamless development and deployment workflows.
2025-07-22 10:24:01 -07:00
2425b3ad42 Merge remote-tracking branch 'origin/main' 2025-07-22 10:22:40 -07:00
09c7d59aef **feat(web-service): add new web service package and deployment scripts**
- **New Web Service Package**:
  - Introduced `@soulcraft/brainy-web-service`, a REST API wrapper for the Brainy vector graph database.
  - Added documentation and features to support secure, read-only search and retrieval operations.

- **Deployment Support**:
  - Included comprehensive deployment instructions in the `web-service-package/README.md`:
    - Options for Docker, serverless platforms, and cloud providers (AWS, GCP, Azure, Cloudflare).
    - Example configurations for systemd, Nginx, and Docker Compose.

- **Scripts and Documentation Updates**:
  - Added `deploy:web-service` script to `package.json` for streamlined build and publishing.
  - Enhanced `README.md` to reflect the introduction of the web service package and its capabilities.

- **Purpose**:
  - This update extends Brainy’s functionality by providing a production-ready, easy-to-deploy REST API for search operations. It ensures flexibility for diverse deployment scenarios while maintaining security and high performance.
2025-07-22 10:22:38 -07:00
e1865e7808 chore(release): bump version to 0.15.0
- Updated `VERSION` in `version.ts` to `0.15.0`.
- Updated `npm` badge in `README.md` to reflect version `0.15.0`.
- Updated `version` field and dependency reference in `cli-package/package.json` to `0.15.0`.

**Purpose**: Prepare for release by synchronizing version across source files, documentation, and package dependencies.
2025-07-21 14:00:49 -07:00
69a3c8504a 0.15.0 2025-07-21 14:00:40 -07:00
17539244eb feat: reformat imports and exports for consistency and readability
- Updated all imports and exports in `src/index.ts` and `src/storage/storageFactory.ts` to use a consistent formatting style.
- Enhanced readability by standardizing spacing, alignment, and indentation across the codebase.
- Applied consistent import/export styling for structured comments and multi-line objects.

**Purpose**: Improve code maintainability and readability by enforcing uniform formatting, aligning imports and exports for better clarity.
2025-07-21 13:59:33 -07:00
e3eebaf476 feat(tests): add robust mock implementations and expand test coverage for S3 and OPFS storage
- Introduced comprehensive mock for the Origin Private File System (OPFS) in `tests/mocks/opfs-mock.ts`, simulating environment for detailed storage testing.
- Added `tests/opfs-storage.test.ts`, containing extensive test cases for `OPFSStorage` operations including metadata, nouns, verbs, and storage status.
- Improved S3 mock implementation in `tests/mocks/s3-mock.ts` with better object persistence, validation, and logging to emulate real S3 behavior.
- Resolved issues related to metadata, nouns, verbs, and storage usage inconsistencies in mock storage adapters.
- Enhanced logging and error handling to aid in debugging and test reliability.

Purpose: Improve test completeness and reliability by introducing detailed mocks and extended test cases for S3 and OPFS storage systems.
2025-07-21 13:42:10 -07:00
e1632523b4 feat(types): extend FileSystemHandle and optimize imports for consistency
- Added `getFile` method to `FileSystemHandle` interface for enhanced TypeScript compatibility with File System Access API.
- Improved maintainability by reformatting and aligning imports in `brainyData.ts`.
- Standardized spacing and indentation across structured comments and interface fields.

Purpose: Improve TypeScript support for file system operations and enhance code readability with consistent formatting and import management.
2025-07-21 12:48:03 -07:00
7cec5fb90a feat(docs): update README to highlight new consolidated storage structure
- Documented the use of a simplified, unified storage structure for all noun types.
- Enhanced storage system explanation to reflect recent architectural improvements.

Purpose: Improve developer understanding of the storage system by updating documentation with the latest features and design changes.
2025-07-21 12:47:37 -07:00
cad30178ee feat(tests): replace old test scripts with updated test suite for storage and reporting
- Removed outdated test files: `test-tensorflow-import.cjs`, `test-tensorflow-import.js`, and `verify-package-size.js`.
- Introduced `tests/package-size-breakdown.test.ts` to analyze included npm package files and validate their sizes.
- Added comprehensive tests for storage adapters (`MemoryStorage`, `FileSystemStorage`, `OPFSStorage`, etc.) in `tests/storage-adapters.test.ts`.
- Improved OPFS storage mocking and test coverage for browser and Node.js environments.
- Introduced environment detection tests to ensure correct storage adapter selection.
- Created `STORAGE_TESTING.md` to document storage architecture, test coverage, and guidelines for further improvements.

Purpose: Modernize testing infrastructure and enhance storage system reliability through better test coverage and documentation.
2025-07-21 12:47:20 -07:00
1127115664 feat(storage): implement base, file system, and memory storage adapters
- Added `BaseStorage` abstract class to provide common functionality for storage adapters.
- Implemented `FileSystemStorage` adapter for Node.js environments, supporting persistent file-based storage.
- Added directory structure management methods to `FileSystemStorage` (`ensureDirectoryExists`, `clear`, etc.).
- Implemented `MemoryStorage` adapter for in-memory storage suitable for non-persistent environments.
- Supported CRUD operations for nouns, verbs, and metadata in both `FileSystemStorage` and `MemoryStorage`.
- Included utility methods like `mapToObject` for serialization and deserialization of complex data structures.

Purpose: Provide extensible, reusable storage solutions with both persistent and non-persistent options for diverse application needs.
2025-07-21 12:46:41 -07:00
398c120757 feat(docs): add WebSocket augmentation examples in README
- Documented various WebSocket augmentation types (`IWebSocketSupport`, `IWebSocketSenseAugmentation`, etc.) to guide developers in extending augmentations with WebSocket capabilities.
- Added code example showcasing the creation of a WebSocket-enabled sense augmentation (`mySenseAug`) using `addWebSocketSupport`.
- Explained the purpose of combining base augmentation interfaces with `IWebSocketSupport` for type safety and autocompletion.

Purpose: Enhance developer documentation by providing clear guidance and examples for integrating WebSocket capabilities into augmentations.
2025-07-18 15:38:42 -07:00
7c827b81a5 chore(release): bump version to 0.14.0
- Updated `VERSION` in `version.ts` to `0.14.0`.
- Updated `npm` badge in `README.md` to reflect version `0.14.0`.
- Updated `version` field and dependency reference in `cli-package/package.json` to `0.14.0`.

Purpose: Prepare for release by synchronizing version across source files and documentation.
2025-07-18 12:01:54 -07:00
8e58c8d1cc 0.14.0 2025-07-18 12:01:38 -07:00
e9aaec89d8 Feat: enhance cli.ts with updated typings and improved search interface
- Introduced `SearchResult` interface to standardize search result handling and improve code readability.
- Added TypeScript type annotations for command arguments and options in CLI methods to enforce stricter type safety.
- Updated `.version()` for CLI to align with best practices by removing redundant description parameter.
- Enhanced search logic with default parameter handling for limits and improved output formatting for results.
- Adjusted `tsconfig.json` to disable `noImplicitAny` while retaining strict typing practices.
- Streamlined CLI processes by parsing command-line arguments explicitly with `program.parse(process.argv)`.

Purpose: Improve developer productivity with better type safety, clearer interfaces, and refined CLI functionality.
2025-07-18 12:00:50 -07:00
3fe2a6e7f0 Fix: prevent duplication of ROOT_DIR in file system storage initialization
- Added a check to avoid appending `ROOT_DIR` if the `rootDir` already ends with it.
- Ensures proper directory paths setup without redundant path segments.
2025-07-18 10:59:14 -07:00
e7dcedae60 Fix: handle optional loggingConfig in getDefaultEmbeddingFunction initialization 2025-07-18 10:46:05 -07:00
22ccd5a162 Bump version to 0.13.0 2025-07-18 10:41:36 -07:00
b16b9caccb 0.13.0 2025-07-18 10:41:24 -07:00
d3e6dbd898 - Add logging configuration to BrainyData for better control over verbose output.
- Refactor embedding functions to support customizable verbosity through new helper methods (`getDefaultEmbeddingFunction`, `getDefaultBatchEmbeddingFunction`).
- Ensure metadata initialization with default values when null during search results.
2025-07-18 10:40:37 -07:00
51892e46b8 **refactor(core): remove verbose logging for Universal Sentence Encoder**
- **Logging Cleanup**:
  - Removed redundant `console.log` statements in `brainyData.ts` and `embedding.ts` related to Universal Sentence Encoder initialization and load function detection.
  - Replaced detailed logs with concise comments to streamline debugging and reduce noisy outputs.

- **Purpose**:
  - Improves code readability, reduces runtime logging noise, and aligns logging verbosity with the project's streamlined debugging practices.
2025-07-17 10:12:15 -07:00
e12ecf8d72 **feat(core): enhance logging, storage options, and testing coverage**
- **Core Improvements**:
  - Refactored logging functions into a unified `logger` method for consistent output across the library.
  - Enabled the `forceMemoryStorage` option in `BrainyData` initialization for improved storage flexibility in tests and specific use cases.

- **TensorFlow.js and Environment Updates**:
  - Clarified the dependency structure in `README.md` to emphasize bundled dependencies and remove legacy peer dependency instructions.
  - Simplified and reformatted environment detection logic for better maintainability and readability.

- **Testing Enhancements**:
  - Added `tests/package-size-limit.test.ts` to monitor and validate npm package size against defined thresholds.
  - Updated `tests/environment.node.test.ts` and core tests to leverage `forceMemoryStorage` for better test setup standardization.
  - Improved test isolation with expanded `globalThis` utility definitions and cleanup logic.

- **Documentation**:
  - Added detailed best practices for debugging and organizing tests in `DEVELOPERS.md`.
  - Removed outdated installation hints from `package.json` and streamlined scripts by including `test:size` for package size validation.

**Purpose**: These changes unify core logging mechanisms, expand configurability of storage options, and improve testing reliability and coverage. Documentation and clarity are enhanced to align with updated functionality and best practices.
2025-07-17 10:00:28 -07:00
7878f200fc **docs: restructure CLI usage details and update scripts for clarity**
- **CLI Documentation Updates**:
  - Updated `README.md` to reflect the separation of CLI functionality into a new package: `@soulcraft/brainy-cli`.
  - Replaced inline CLI imports with instructions for installing and using `@soulcraft/brainy-cli`.
  - Clarified notes on keeping the main package lightweight by decoupling CLI functionality.

- **Script and Command Adjustments**:
  - Modified build instructions in `README.demo.md` to use `npm run build && npm run build:browser`.
  - Updated demo scripts in `package.json` to point to `/demo/index.html` instead of `/index.html`.
  - Revised style-check script in `CONTRIBUTING.md` to use `npm run check:style`.

- **Issues and Contribution Guidelines**:
  - Improved issue reporting section in `DEVELOPERS.md` with clearer guidelines and examples for bug and feature requests.

**Purpose**: These changes enhance documentation accuracy, streamline developer guidance, and ensure commands/scripts are up-to-date with current usage patterns.
2025-07-17 07:53:41 -07:00
a1d564ed64 **chore(deps): update package-lock.json to reflect @soulcraft/brainy 0.12.0**
- Updated `version` of `@soulcraft/brainy` from `0.11.0` to `0.12.0` in `cli-package/package-lock.json`.
- Adjusted resolved package metadata (e.g., `integrity` values) to match the new release version.

**Purpose**: Ensures `package-lock.json` reflects the updated dependency version for consistency with the 0.12.0 release.
2025-07-16 13:52:54 -07:00
e3567ed838 **chore(release): bump version to 0.12.0**
- Updated the version in `README.md`, `package.json`, and `version.ts` to `0.12.0` to reflect the new release.
- Adjusted dependency reference for `@soulcraft/brainy` in `cli-package/package.json` to use version `0.12.0`.

**Purpose**: Prepares for the 0.12.0 release, ensuring all version references are consistent across documentation and configuration files.
2025-07-16 13:51:56 -07:00