brainy/package.json
David Snelling 677e2d6624 perf: 580x faster embedding init - separate model from WASM
Cloud Run cold starts taking 139 seconds due to 90MB WASM file with
embedded 87MB model weights. WASM compilation scales with file size.

Solution: Split into 2.4MB WASM (code only) + external model files.
- WASM compile: 139,000ms → 6-8ms
- Model load: N/A → 30-115ms
- Total init: 139,000ms → 136-240ms

New modelLoader.ts handles all environments:
- Node.js: fs.readFile()
- Bun: Bun.file()
- Bun --compile: auto-embedded assets
- Browser: fetch()

Zero config - same API, npm package includes model files.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 17:18:58 -08:00

248 lines
8.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": "7.1.1",
"description": "Universal Knowledge Protocol™ - World's first Triple Intelligence database unifying vector, graph, and document search in one API. Stage 3 CANONICAL: 42 nouns × 127 verbs covering 96-97% of all human knowledge.",
"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"
},
"./neural/entityExtractor": {
"import": "./dist/neural/entityExtractor.js",
"types": "./dist/neural/entityExtractor.d.ts"
},
"./neural/SmartExtractor": {
"import": "./dist/neural/SmartExtractor.js",
"types": "./dist/neural/SmartExtractor.d.ts"
},
"./neural/SmartRelationshipExtractor": {
"import": "./dist/neural/SmartRelationshipExtractor.js",
"types": "./dist/neural/SmartRelationshipExtractor.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",
"bun": ">=1.0.0"
},
"scripts": {
"build": "npm run build:types:if-needed && npm run build:patterns:if-needed && tsc && tsc -p tsconfig.cli.json && npm run build:copy-wasm",
"build:copy-wasm": "node -e \"const fs=require('fs');const src='src/embeddings/wasm/pkg';const dst='dist/embeddings/wasm/pkg';if(fs.existsSync(src)){fs.mkdirSync(dst,{recursive:true});fs.readdirSync(src).forEach(f=>fs.copyFileSync(src+'/'+f,dst+'/'+f));console.log('Copied WASM pkg to dist')}\"",
"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:candle": "./scripts/build-candle-wasm.sh",
"build:candle:dev": "./scripts/build-candle-wasm.sh --dev",
"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:perf": "vitest run tests/unit/performance --reporter=basic",
"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",
"test:bun": "bun tests/integration/bun-compile-test.ts",
"test:bun:compile": "bun build tests/integration/bun-compile-test.ts --compile --outfile /tmp/brainy-bun-test && /tmp/brainy-bun-test",
"test:wasm": "npx vitest run tests/integration/wasm-embeddings.test.ts",
"typecheck": "tsc --noEmit",
"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",
"dist/**/*.wasm",
"assets/models/all-MiniLM-L6-v2/**",
"bin/",
"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/mime": "^3.0.4",
"@types/node": "^20.11.30",
"@types/probe-image-size": "^7.2.5",
"@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",
"@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",
"exifr": "^7.1.3",
"inquirer": "^12.9.3",
"js-yaml": "^4.1.0",
"mammoth": "^1.11.0",
"mime": "^4.1.0",
"ora": "^8.2.0",
"pdfjs-dist": "^4.0.379",
"probe-image-size": "^7.2.3",
"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"
}
}
}