brainy/package.json
David Snelling 52782898a3 feat: implement progressive flush intervals for streaming imports
Progressive intervals adjust dynamically based on current entity count
(not total), making them work for both known and unknown totals.

**Key Features:**
- 0-999 entities: Flush every 100 (frequent early updates for UX)
- 1K-9.9K: Flush every 1000 (balanced performance)
- 10K+: Flush every 5000 (minimal overhead ~0.3%)

**Benefits:**
- Works with known totals (file imports)
- Works with unknown totals (streaming APIs, database cursors)
- Adapts automatically as import grows
- Zero configuration required

**Implementation:**
- Replaced adaptive intervals (requires total count) with progressive
- Added interval transition logging for observability
- Enhanced documentation to highlight engineering sophistication
- Final flush with statistics reporting

**Documentation:**
- Added "Engineering Insight" section showcasing advanced approach
- Updated all interval references from "adaptive" to "progressive"
- Added comprehensive examples in streaming-imports.md

Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-22 17:36:27 -07:00

230 lines
7.6 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"name": "@soulcraft/brainy",
"version": "4.1.4",
"description": "Universal Knowledge Protocol™ - World's first Triple Intelligence database unifying vector, graph, and document search in one API. 31 nouns × 40 verbs for infinite expressiveness.",
"main": "dist/index.js",
"module": "dist/index.js",
"types": "dist/index.d.ts",
"type": "module",
"bin": {
"brainy": "bin/brainy.js"
},
"sideEffects": [
"./dist/setup.js",
"./dist/utils/textEncoding.js",
"./src/setup.ts",
"./src/utils/textEncoding.ts"
],
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
},
"./setup": {
"import": "./dist/setup.js",
"types": "./dist/setup.d.ts"
},
"./types/graphTypes": {
"import": "./dist/types/graphTypes.js",
"types": "./dist/types/graphTypes.d.ts"
},
"./types/augmentations": {
"import": "./dist/types/augmentations.js",
"types": "./dist/types/augmentations.d.ts"
},
"./utils/textEncoding": {
"import": "./dist/utils/textEncoding.js",
"types": "./dist/utils/textEncoding.d.ts"
},
"./universal": {
"import": "./dist/universal/index.js",
"types": "./dist/universal/index.d.ts"
}
},
"browser": {
"./dist/distributed": false,
"./dist/cli": false,
"./dist/scripts": false,
"./dist/cortex": false,
"./dist/cortex/neuralImport.js": false,
"./dist/cortex/performanceMonitor.js": false,
"./dist/cortex/healthCheck.js": false,
"./dist/cortex/backupRestore.js": false
},
"engines": {
"node": "22.x"
},
"scripts": {
"build": "npm run build:types:if-needed && npm run build:patterns:if-needed && npm run build:keywords:if-needed && tsc && tsc -p tsconfig.cli.json",
"build:types": "tsx scripts/buildTypeEmbeddings.ts",
"build:types:if-needed": "node scripts/check-type-embeddings.cjs || npm run build:types",
"build:types:force": "npm run build:types",
"build:patterns": "tsx scripts/buildEmbeddedPatterns.ts",
"build:patterns:if-needed": "node scripts/check-patterns.cjs || npm run build:patterns",
"build:patterns:force": "npm run build:patterns",
"build:keywords": "tsx scripts/buildKeywordEmbeddings.ts",
"build:keywords:if-needed": "node scripts/check-keyword-embeddings.cjs || npm run build:keywords",
"build:keywords:force": "npm run build:keywords",
"prepare": "npm run build",
"test": "npm run test:unit",
"test:watch": "NODE_OPTIONS='--max-old-space-size=8192' vitest --config tests/configs/vitest.unit.config.ts",
"test:coverage": "NODE_OPTIONS='--max-old-space-size=8192' vitest run --config tests/configs/vitest.unit.config.ts --coverage",
"test:unit": "NODE_OPTIONS='--max-old-space-size=8192' vitest run --config tests/configs/vitest.unit.config.ts",
"test:integration": "NODE_OPTIONS='--max-old-space-size=32768' vitest run --config tests/configs/vitest.integration.config.ts",
"test:s3": "vitest run tests/integration/s3-storage.test.ts",
"test:distributed": "vitest run tests/integration/distributed.test.ts",
"test:cloud": "npm run test:s3 && npm run test:distributed",
"test:all": "npm run test:unit && npm run test:integration",
"test:ci-unit": "CI=true vitest run --config tests/configs/vitest.unit.config.ts",
"test:ci-integration": "NODE_OPTIONS='--max-old-space-size=16384' CI=true vitest run --config tests/configs/vitest.integration.config.ts",
"test:ci": "npm run test:ci-unit",
"download-models": "node scripts/download-models.cjs",
"download-models:q8": "node scripts/download-models.cjs",
"models:verify": "node scripts/ensure-models.js",
"lint": "eslint --ext .ts,.js src/",
"lint:fix": "eslint --ext .ts,.js src/ --fix",
"format": "prettier --write \"src/**/*.{ts,js}\"",
"format:check": "prettier --check \"src/**/*.{ts,js}\"",
"migrate:logger": "tsx scripts/migrate-to-structured-logger.ts",
"migrate:logger:dry": "tsx scripts/migrate-to-structured-logger.ts --dry-run",
"release": "./scripts/release.sh patch",
"release:patch": "./scripts/release.sh patch",
"release:minor": "./scripts/release.sh minor",
"release:major": "./scripts/release.sh major",
"release:dry": "./scripts/release.sh patch --dry-run",
"release:standard-version": "standard-version",
"release:standard-version:patch": "standard-version --release-as patch",
"release:standard-version:minor": "standard-version --release-as minor",
"release:standard-version:major": "standard-version --release-as major"
},
"keywords": [
"ai-database",
"vector-database",
"graph-database",
"field-filtering",
"triple-intelligence",
"hnsw",
"embeddings",
"semantic-search",
"machine-learning",
"artificial-intelligence",
"data-storage",
"indexing",
"typescript"
],
"author": "Brainy Contributors",
"license": "MIT",
"private": false,
"publishConfig": {
"access": "public"
},
"homepage": "https://github.com/soulcraftlabs/brainy",
"bugs": {
"url": "https://github.com/soulcraftlabs/brainy/issues"
},
"repository": {
"type": "git",
"url": "git+https://github.com/soulcraftlabs/brainy.git"
},
"files": [
"dist/**/*.js",
"dist/**/*.d.ts",
"bin/",
"scripts/download-models.cjs",
"scripts/ensure-models.js",
"scripts/prepare-models.js",
"brainy.png",
"LICENSE",
"README.md",
"CHANGELOG.md"
],
"overrides": {
"boolean": "3.2.0"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^28.0.6",
"@rollup/plugin-node-resolve": "^16.0.1",
"@rollup/plugin-replace": "^6.0.2",
"@rollup/plugin-terser": "^0.4.4",
"@testcontainers/redis": "^11.5.1",
"@types/node": "^20.11.30",
"@types/uuid": "^10.0.0",
"@types/ws": "^8.18.1",
"@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^8.0.0",
"@vitest/coverage-v8": "^3.2.4",
"jspdf": "^3.0.3",
"minio": "^8.0.5",
"standard-version": "^9.5.0",
"testcontainers": "^11.5.1",
"tsx": "^4.19.2",
"typescript": "^5.4.5",
"vitest": "^3.2.4"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.540.0",
"@azure/identity": "^4.0.0",
"@azure/storage-blob": "^12.17.0",
"@google-cloud/storage": "^7.14.0",
"@huggingface/transformers": "^3.7.2",
"@msgpack/msgpack": "^3.1.2",
"@types/js-yaml": "^4.0.9",
"boxen": "^8.0.1",
"chalk": "^5.3.0",
"chardet": "^2.0.0",
"cli-table3": "^0.6.5",
"commander": "^11.1.0",
"csv-parse": "^6.1.0",
"inquirer": "^12.9.3",
"js-yaml": "^4.1.0",
"mammoth": "^1.11.0",
"ora": "^8.2.0",
"pdfjs-dist": "^4.0.379",
"prompts": "^2.4.2",
"roaring-wasm": "^1.1.0",
"uuid": "^9.0.1",
"ws": "^8.18.3",
"xlsx": "^0.18.5"
},
"prettier": {
"arrowParens": "always",
"bracketSameLine": true,
"bracketSpacing": true,
"htmlWhitespaceSensitivity": "css",
"printWidth": 80,
"proseWrap": "preserve",
"semi": false,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "none",
"useTabs": false
},
"eslintConfig": {
"root": true,
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint"
],
"rules": {
"@typescript-eslint/no-explicit-any": "off",
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": [
"warn",
{
"args": "after-used",
"argsIgnorePattern": "^_"
}
],
"semi": "off",
"@typescript-eslint/semi": [
"error",
"never"
],
"no-extra-semi": "off"
}
}
}