{ "name": "obsidian-hybrid-search", "version": "0.15.3", "mcpName": "io.github.flowing-abyss/obsidian-hybrid-search", "type": "module", "bin": { "obsidian-hybrid-search": "./dist/src/cli.js", "ohs": "./dist/src/cli.js", "obsidian-hybrid-search-mcp": "./dist/src/server.js" }, "scripts": { "prepare": "husky", "build": "tsc", "dev": "tsx src/server.ts", "test": "vitest run", "test:integration": "vitest run --config vitest.integration.config.ts", "test:native-recovery-smoke": "node scripts/smoke-native-recovery.mjs", "test:e2e-watcher": "vitest run --config vitest.e2e-watcher.config.ts", "coverage": "vitest run --coverage", "eval": "tsx eval/evaluate.ts", "eval:qmd": "tsx eval/evaluate-qmd.ts", "eval:benchmark": "tsx eval/benchmark-speed.ts", "eval:compare": "tsx eval/compare.ts", "eval:prepare-obsidian-help": "tsx eval/prepare-obsidian-help.ts", "eval:prepare-evergreen-notes": "tsx eval/prepare-evergreen-notes.ts", "eval:prepare-longmem": "tsx eval/prepare-longmemeval.ts", "eval:prepare-longmemeval-s": "tsx eval/prepare-longmemeval.ts", "eval:quality": "npm run eval:prepare-obsidian-help -- --vault fixtures/obsidian-help/dataset && env -u OPENAI_API_KEY -u OPENAI_BASE_URL -u OPENAI_EMBEDDING_MODEL -u LOCAL_EMBEDDING_MODEL tsx eval/evaluate.ts --output eval/results/.tmp-pre-push-quality.json && tsx eval/quality.ts eval/results/.tmp-pre-push-quality.json", "eval:speed": "tsx eval/benchmark-speed.ts", "eval:speed-profile": "tsx eval/speed-profile.ts", "format": "prettier --write .", "format:check": "prettier --check .", "lint": "eslint src test eval", "knip": "knip", "preflight": "bash scripts/ci-preflight.sh", "sync-server-json": "bash scripts/sync-server-json.sh" }, "keywords": [ "obsidian", "search", "hybrid-search", "semantic-search", "fulltext-search", "sqlite", "mcp" ], "author": "flowing-abyss", "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/flowing-abyss/obsidian-hybrid-search.git" }, "bugs": { "url": "https://github.com/flowing-abyss/obsidian-hybrid-search/issues" }, "homepage": "https://github.com/flowing-abyss/obsidian-hybrid-search#readme", "engines": { "node": ">=20" }, "files": [ "dist/src", "dist/eval", "assets/banner.png", "README.md", "LICENSE" ], "dependencies": { "@modelcontextprotocol/sdk": "^1.30.0", "better-sqlite3": "^12.11.1", "chokidar": "^5.0.0", "cli-table3": "^0.6.5", "commander": "^14.0.3", "gray-matter": "^4.0.3", "ignore": "^7.0.9", "js-tiktoken": "^1.0.21", "onnxruntime-node": "^1.29.0", "picocolors": "^1.1.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "sqlite-vec": "^0.1.9", "unified": "^11.0.5", "unist-util-visit": "^5.1.0", "yaml": "^2.9.1", "zod": "^4.6.5" }, "optionalDependencies": { "@huggingface/transformers": "^4.3.0" }, "devDependencies": { "@commitlint/cli": "^20.5.3", "@commitlint/config-conventional": "^20.5.3", "@types/better-sqlite3": "^7.6.13", "@types/node": "^25.9.7", "@vitest/coverage-v8": "^4.1.5", "eslint": "^9.39.5", "eslint-plugin-import": "^2.32.0", "eslint-plugin-sonarjs": "^4.2.1", "husky": "^9.1.7", "knip": "^6.36.0", "lint-staged": "^16.4.0", "prettier": "^3.9.7", "prettier-plugin-organize-imports": "^4.3.0", "tsx": "^4.23.13", "typescript": "^6.0.3", "typescript-eslint": "^8.70.0", "vitest": "^4.1.5" }, "lint-staged": { "package.json": [ "npm run sync-server-json", "sh -c 'npx vitest run'", "sh -c 'npm run knip'" ], "*.{ts,js}": [ "eslint --fix", "prettier --write" ], "*.{json,md,yml,yaml}": [ "prettier --write" ] }, "allowScripts": { "better-sqlite3": true, "onnxruntime-node": true, "esbuild": true, "protobufjs": true } }