{"_id":"@alistar.max/contextweaver","_rev":"6-775fe2cf5a8b71deea2bcbb70b2ce65c","name":"@alistar.max/contextweaver","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.7":{"name":"@alistar.max/contextweaver","version":"0.0.7","author":{"name":"alistar.max"},"license":"MIT","_id":"@alistar.max/contextweaver@0.0.7","maintainers":[{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"}],"homepage":"https://github.com/CodingOX/ContextWeaver#readme","bugs":{"url":"https://github.com/CodingOX/ContextWeaver/issues"},"bin":{"cw":"dist/index.js","contextweaver":"dist/index.js"},"dist":{"shasum":"501e5c092b449bb20f437fde670a7bb0784fe8ee","tarball":"https://registry.npmjs.org/@alistar.max/contextweaver/-/contextweaver-0.0.7.tgz","fileCount":17,"integrity":"sha512-0dtCyoCqqdphyzEXvoDjqE42erxrdJk7/ErQNdKJg288xHwJ7cPC42S0cSG9JY5v2L3dCLpJc+mpM/rxnv0d8w==","signatures":[{"sig":"MEUCIQDvMdoaEU/dlMhDCBaGqTIUf8ONvc6VXmSj+1wkY+/hXAIgMxHTsNJlohP7LR8+ze5xY+LRSSEyt+se5iz5T57xEtc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208810},"pnpm":{"onlyBuiltDependencies":["@keqingmoe/tree-sitter","better-sqlite3","esbuild","tree-sitter-c","tree-sitter-c-sharp","tree-sitter-cpp","tree-sitter-go","tree-sitter-java","tree-sitter-javascript","tree-sitter-kotlin","tree-sitter-php","tree-sitter-python","tree-sitter-ruby","tree-sitter-rust","tree-sitter-dart","tree-sitter-swift","tree-sitter-typescript"],"ignoredBuiltDependencies":["tree-sitter-cli"]},"type":"module","engines":{"node":">=20"},"gitHead":"7f9e0a353fea2f83148a6b505bfb3b312210956e","private":false,"scripts":{"dev":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --watch","fmt":"biome check --write ./src","test":"tsx tests/language-support.test.ts","build":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --clean","prepack":"pnpm build","test:e2e:mcp":"pnpm build && tsx tests/mcp-e2e-smoke.ts","build:release":"tsup src/index.ts --format esm --dts --out-dir dist --clean","prepublishOnly":"pnpm test"},"_npmUser":{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"},"repository":{"url":"git+https://github.com/CodingOX/ContextWeaver.git","type":"git"},"_npmVersion":"10.9.4","description":"A context weaving tool for LLMs","directories":{},"_nodeVersion":"22.22.0","dependencies":{"cac":"^6.7.14","zod":"^4.2.1","fdir":"^6.5.0","pino":"^10.1.0","dotenv":"^17.2.3","ignore":"^7.0.5","chardet":"^2.1.1","p-limit":"^7.2.0","iconv-lite":"^0.7.1","tree-sitter-c":"^0.24.1","better-sqlite3":"^12.2.0","tree-sitter-go":"0.25.0","tree-sitter-cpp":"^0.23.4","tree-sitter-php":"^0.24.2","@lancedb/lancedb":"^0.22.0","tree-sitter-dart":"^1.0.0","tree-sitter-java":"0.23.5","tree-sitter-ruby":"^0.23.1","tree-sitter-rust":"0.24.0","tree-sitter-swift":"^0.7.1","tree-sitter-kotlin":"^0.3.8","tree-sitter-python":"0.25.0","tree-sitter-c-sharp":"^0.23.1","@keqingmoe/tree-sitter":"^0.26.2","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","@modelcontextprotocol/sdk":"^1.25.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.78.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^24.0.0","@biomejs/biome":"2.3.10","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/contextweaver_0.0.7_1770650649987_0.5004211939007135","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@alistar.max/contextweaver","version":"0.0.8","author":{"name":"alistar.max"},"license":"MIT","_id":"@alistar.max/contextweaver@0.0.8","maintainers":[{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"}],"homepage":"https://github.com/CodingOX/ContextWeaver#readme","bugs":{"url":"https://github.com/CodingOX/ContextWeaver/issues"},"bin":{"cw":"dist/index.js","contextweaver":"dist/index.js"},"dist":{"shasum":"e49f7385520f6cb07f3fd54229a3c2a4085f5c69","tarball":"https://registry.npmjs.org/@alistar.max/contextweaver/-/contextweaver-0.0.8.tgz","fileCount":17,"integrity":"sha512-AuFUC5nGRSErCBSXGxpk546UNpXeeuuXAgArWKMf5Hb6jw1jbGXKJ7Kn2oVMWf+ZFNgPHCK1oPb8WbA3jtIldw==","signatures":[{"sig":"MEQCIAIV5FiC4zLndbc9cyhEGF8jgUEyrRanWn36oiDkQo6oAiBXPY2fVG26eFX2VslYBfJKY99sXfsoFXhbJB2rORLTPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218231},"pnpm":{"onlyBuiltDependencies":["tree-sitter","better-sqlite3","esbuild","tree-sitter-go","tree-sitter-javascript","tree-sitter-python","tree-sitter-c","tree-sitter-c-sharp","tree-sitter-cpp","tree-sitter-java","tree-sitter-kotlin","tree-sitter-php","tree-sitter-ruby","tree-sitter-rust","tree-sitter-swift","tree-sitter-typescript","tree-sitter-cli"]},"type":"module","engines":{"node":">=20 <25"},"gitHead":"7f9e0a353fea2f83148a6b505bfb3b312210956e","private":false,"scripts":{"dev":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --watch","fmt":"biome check --write ./src","test":"tsx tests/language-support.test.ts && tsx tests/runtime/registry.test.ts && tsx tests/runtime/docs-guard.test.ts && tsx tests/runtime/workspace-packages.test.ts && tsx tests/runtime/plugin-loader.test.ts","build":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --clean","prepack":"pnpm build","test:e2e:mcp":"pnpm build && tsx tests/mcp-e2e-smoke.ts","test:runtime":"tsx tests/runtime/registry.test.ts","build:release":"tsup src/index.ts --format esm --dts --out-dir dist --clean","prepublishOnly":"pnpm test","test:install:node24":"node tests/install/node24-smoke.mjs"},"_npmUser":{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"},"repository":{"url":"git+https://github.com/CodingOX/ContextWeaver.git","type":"git"},"_npmVersion":"10.9.4","description":"A context weaving tool for LLMs","directories":{},"_nodeVersion":"22.22.0","dependencies":{"cac":"^6.7.14","zod":"^4.2.1","fdir":"^6.5.0","pino":"^10.1.0","dotenv":"^17.2.3","ignore":"^7.0.5","chardet":"^2.1.1","p-limit":"^7.2.0","iconv-lite":"^0.7.1","tree-sitter":"^0.25.0","better-sqlite3":"^12.2.0","tree-sitter-go":"0.25.0","@lancedb/lancedb":"^0.22.0","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","@modelcontextprotocol/sdk":"^1.25.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.78.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^24.0.0","@biomejs/biome":"2.3.10","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/contextweaver_0.0.8_1770707462299_0.1498261454568146","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@alistar.max/contextweaver","version":"0.0.9","author":{"name":"alistar.max"},"license":"MIT","_id":"@alistar.max/contextweaver@0.0.9","maintainers":[{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"}],"homepage":"https://github.com/CodingOX/ContextWeaver#readme","bugs":{"url":"https://github.com/CodingOX/ContextWeaver/issues"},"bin":{"cw":"dist/index.js","contextweaver":"dist/index.js"},"dist":{"shasum":"6185955989be5b31531b8ca14ee12fe5e1b13df6","tarball":"https://registry.npmjs.org/@alistar.max/contextweaver/-/contextweaver-0.0.9.tgz","fileCount":23,"integrity":"sha512-903APKSOhRDeHPLSbjZJjlgZ8m6eHUGDckoFaS7BMUsKAKycjQhlTFx1yv38ZuFhECpB5RZh2MtsC8Quatt1Eg==","signatures":[{"sig":"MEUCIAX4KcBSHpNJq4NKziA5nsjc2pwqvEDyI5sfdICcHNVLAiEArwcjk21E3ah2ZUlY1dRJaqi2q1kO/DC28yuJJfPHUIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272159},"pnpm":{"onlyBuiltDependencies":["tree-sitter","better-sqlite3","esbuild","tree-sitter-go","tree-sitter-javascript","tree-sitter-python","tree-sitter-c","tree-sitter-c-sharp","tree-sitter-cpp","tree-sitter-java","tree-sitter-kotlin","tree-sitter-php","tree-sitter-ruby","tree-sitter-rust","tree-sitter-swift","tree-sitter-typescript","tree-sitter-cli"]},"type":"module","engines":{"node":">=20 <25"},"gitHead":"bc1148797c901883c5455870955075d4bfba4734","private":false,"scripts":{"dev":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --watch","fmt":"biome check --write ./src","test":"tsx tests/language-support.test.ts && tsx tests/runtime/registry.test.ts && tsx tests/runtime/docs-guard.test.ts && tsx tests/runtime/workspace-packages.test.ts && tsx tests/runtime/plugin-loader.test.ts && tsx tests/runtime/config-multi-key.test.ts && tsx tests/runtime/embedding-client.test.ts && tsx tests/runtime/reranker-client.test.ts && tsx tests/runtime/multi-key-docs.test.ts && tsx tests/runtime/parser-pool.test.ts && tsx tests/runtime/lang-ts21-plugin.test.ts && tsx tests/runtime/lang-ts22-plugin.test.ts && tsx tests/runtime/fallback-split.test.ts && tsx tests/runtime/search-rerank-fallback.test.ts && tsx tests/runtime/chunk-fts-content.test.ts && tsx tests/runtime/query-channel-build.test.ts && tsx tests/runtime/search-query-routing.test.ts && tsx tests/runtime/per-file-cap.test.ts && tsx tests/runtime/scanner-coverage-expansion.test.ts && tsx tests/runtime/chunk-fts-fields.test.ts && tsx tests/runtime/chunks-fts-search.test.ts && tsx tests/runtime/chunk-index-consistency.test.ts && tsx tests/runtime/feedback-loop.test.ts && tsx tests/runtime/lock-regression.test.ts && tsx tests/runtime/index-healing-convergence.test.ts && tsx tests/runtime/context-packer.test.ts && tsx tests/runtime/graph-expander.test.ts && tsx tests/runtime/test-script-completeness.test.ts","build":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --clean","prepack":"pnpm build","test:e2e:mcp":"pnpm build && tsx tests/mcp-e2e-smoke.ts","test:runtime":"tsx tests/runtime/registry.test.ts","build:release":"tsup src/index.ts --format esm --dts --out-dir dist --clean","test:unit:all":"pnpm test && pnpm run test:benchmark","benchmark:tune":"tsx src/search/eval/runAutoTune.ts tests/benchmark/fixtures/sample-auto-tune-dataset.jsonl --target mrr --k 1,3,5 --top 3","prepublishOnly":"pnpm test","test:benchmark":"tsx tests/benchmark/offline-benchmark.test.ts && tsx tests/benchmark/auto-tune.test.ts","benchmark:offline":"tsx src/search/eval/runOfflineBenchmark.ts tests/benchmark/fixtures/sample-offline-benchmark.jsonl --k 1,3,5","test:install:node24":"node tests/install/node24-smoke.mjs"},"_npmUser":{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"},"repository":{"url":"git+https://github.com/CodingOX/ContextWeaver.git","type":"git"},"_npmVersion":"10.9.4","description":"A context weaving tool for LLMs","directories":{},"_nodeVersion":"22.22.0","dependencies":{"cac":"^6.7.14","zod":"^4.2.1","fdir":"^6.5.0","pino":"^10.1.0","dotenv":"^17.2.3","ignore":"^7.0.5","chardet":"^2.1.1","p-limit":"^7.2.0","iconv-lite":"^0.7.1","tree-sitter":"^0.25.0","better-sqlite3":"^12.2.0","tree-sitter-go":"0.25.0","@lancedb/lancedb":"^0.22.0","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","@modelcontextprotocol/sdk":"^1.25.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.78.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^24.0.0","@biomejs/biome":"2.3.10","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/contextweaver_0.0.9_1770820063265_0.3561525428179644","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@alistar.max/contextweaver","version":"0.1.0","author":{"name":"alistar.max"},"license":"MIT","_id":"@alistar.max/contextweaver@0.1.0","maintainers":[{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"}],"homepage":"https://github.com/CodingOX/ContextWeaver#readme","bugs":{"url":"https://github.com/CodingOX/ContextWeaver/issues"},"bin":{"cw":"dist/index.js","contextweaver":"dist/index.js"},"dist":{"shasum":"ce5c645757fe3767d53fd37b9a4ffc81c20d1a44","tarball":"https://registry.npmjs.org/@alistar.max/contextweaver/-/contextweaver-0.1.0.tgz","fileCount":26,"integrity":"sha512-HFfiOpf64/Pph30tZZO93FcDWbJix7AjJyPm/ZyXYwPi4pA6DOmsGe3g8gYl9GfTpoCpZMnqpwSd3VtbNsG71A==","signatures":[{"sig":"MEUCIE0PcIoe/eux4Co2kBPi4OfGwOjVrtqkaNTMrn9n7IMEAiEArlLC6Acs8MkxogJQm/uEXQnmRsrikDrk2BBI7ve0+xA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":286523},"pnpm":{"onlyBuiltDependencies":["tree-sitter","better-sqlite3","esbuild","tree-sitter-go","tree-sitter-javascript","tree-sitter-python","tree-sitter-c","tree-sitter-c-sharp","tree-sitter-cpp","tree-sitter-java","tree-sitter-kotlin","tree-sitter-php","tree-sitter-ruby","tree-sitter-rust","tree-sitter-swift","tree-sitter-typescript","tree-sitter-cli"]},"type":"module","engines":{"node":">=20 <25"},"gitHead":"3d5479fc4f37af1b7a71b8537e8675a58fe94ff8","private":false,"scripts":{"dev":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --watch","fmt":"biome check --write ./src","test":"tsx tests/language-support.test.ts && tsx tests/runtime/registry.test.ts && tsx tests/runtime/docs-guard.test.ts && tsx tests/runtime/workspace-packages.test.ts && tsx tests/runtime/plugin-loader.test.ts && tsx tests/runtime/config-multi-key.test.ts && tsx tests/runtime/embedding-client.test.ts && tsx tests/runtime/reranker-client.test.ts && tsx tests/runtime/multi-key-docs.test.ts && tsx tests/runtime/parser-pool.test.ts && tsx tests/runtime/lang-ts21-plugin.test.ts && tsx tests/runtime/lang-ts22-plugin.test.ts && tsx tests/runtime/fallback-split.test.ts && tsx tests/runtime/search-rerank-fallback.test.ts && tsx tests/runtime/chunk-fts-content.test.ts && tsx tests/runtime/query-channel-build.test.ts && tsx tests/runtime/search-query-routing.test.ts && tsx tests/runtime/per-file-cap.test.ts && tsx tests/runtime/scanner-coverage-expansion.test.ts && tsx tests/runtime/chunk-fts-fields.test.ts && tsx tests/runtime/chunks-fts-search.test.ts && tsx tests/runtime/chunk-index-consistency.test.ts && tsx tests/runtime/feedback-loop.test.ts && tsx tests/runtime/lock-regression.test.ts && tsx tests/runtime/index-healing-convergence.test.ts && tsx tests/runtime/context-packer.test.ts && tsx tests/runtime/graph-expander.test.ts && tsx tests/runtime/language-filter.test.ts && tsx tests/runtime/test-script-completeness.test.ts","build":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --clean","prepack":"pnpm build","test:e2e:mcp":"pnpm build && tsx tests/mcp-e2e-smoke.ts","test:runtime":"tsx tests/runtime/registry.test.ts","build:release":"tsup src/index.ts --format esm --dts --out-dir dist --clean","test:unit:all":"pnpm test && pnpm run test:benchmark","benchmark:tune":"tsx src/search/eval/runAutoTune.ts tests/benchmark/fixtures/sample-auto-tune-dataset.jsonl --target mrr --k 1,3,5 --top 3","prepublishOnly":"pnpm test","test:benchmark":"tsx tests/benchmark/offline-benchmark.test.ts && tsx tests/benchmark/auto-tune.test.ts","benchmark:offline":"tsx src/search/eval/runOfflineBenchmark.ts tests/benchmark/fixtures/sample-offline-benchmark.jsonl --k 1,3,5","test:install:node24":"node tests/install/node24-smoke.mjs"},"_npmUser":{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"},"repository":{"url":"git+https://github.com/CodingOX/ContextWeaver.git","type":"git"},"_npmVersion":"10.9.4","description":"A context weaving tool for LLMs","directories":{},"_nodeVersion":"22.22.0","dependencies":{"cac":"^6.7.14","zod":"^4.2.1","fdir":"^6.5.0","pino":"^10.1.0","dotenv":"^17.2.3","ignore":"^7.0.5","chardet":"^2.1.1","p-limit":"^7.2.0","iconv-lite":"^0.7.1","tree-sitter":"^0.25.0","better-sqlite3":"^12.2.0","tree-sitter-go":"0.25.0","@lancedb/lancedb":"^0.22.0","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","@modelcontextprotocol/sdk":"^1.25.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.78.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^24.0.0","@biomejs/biome":"2.3.10","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/contextweaver_0.1.0_1770887229097_0.6780848820501844","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alistar.max/contextweaver","version":"0.1.1","author":{"name":"alistar.max"},"license":"MIT","_id":"@alistar.max/contextweaver@0.1.1","maintainers":[{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"}],"homepage":"https://github.com/CodingOX/ContextWeaver#readme","bugs":{"url":"https://github.com/CodingOX/ContextWeaver/issues"},"bin":{"cw":"dist/index.js","contextweaver":"dist/index.js"},"dist":{"shasum":"86fa669bd0916cbba4557e411a23d9b444d0bc5a","tarball":"https://registry.npmjs.org/@alistar.max/contextweaver/-/contextweaver-0.1.1.tgz","fileCount":27,"integrity":"sha512-v3YjZapAFuUqd25an/+1ek6fRF5XdeRDCfWjPY2q23+WHB4c1jM83Kjhq8I6/8FfGhxIIHTFpQfFID2dYjg0/A==","signatures":[{"sig":"MEUCIQDpMd3r38TB/lryIhM4jkaOLPHfFTA5DrFxpE14mFZzQwIgb6PlilWWzKI22PL0C2IBy2nC8+ak5b5COF/ijRkf6yM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alistar.max%2fcontextweaver@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":288817},"pnpm":{"onlyBuiltDependencies":["tree-sitter","better-sqlite3","esbuild","tree-sitter-go","tree-sitter-javascript","tree-sitter-python","tree-sitter-c","tree-sitter-c-sharp","tree-sitter-cpp","tree-sitter-java","tree-sitter-kotlin","tree-sitter-php","tree-sitter-ruby","tree-sitter-rust","tree-sitter-swift","tree-sitter-typescript","tree-sitter-cli"]},"type":"module","engines":{"node":">=20 <24"},"gitHead":"8efb6014bd6da85fab588c9009d116b0436e21be","private":false,"scripts":{"dev":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --watch","fmt":"biome check --write ./src","test":"tsx tests/language-support.test.ts && tsx tests/runtime/registry.test.ts && tsx tests/runtime/docs-guard.test.ts && tsx tests/runtime/workspace-packages.test.ts && tsx tests/runtime/plugin-loader.test.ts && tsx tests/runtime/config-multi-key.test.ts && tsx tests/runtime/cli-behavior.test.ts && tsx tests/runtime/embedding-client.test.ts && tsx tests/runtime/reranker-client.test.ts && tsx tests/runtime/multi-key-docs.test.ts && tsx tests/runtime/parser-pool.test.ts && tsx tests/runtime/lang-ts21-plugin.test.ts && tsx tests/runtime/lang-ts22-plugin.test.ts && tsx tests/runtime/fallback-split.test.ts && tsx tests/runtime/search-rerank-fallback.test.ts && tsx tests/runtime/chunk-fts-content.test.ts && tsx tests/runtime/query-channel-build.test.ts && tsx tests/runtime/search-query-routing.test.ts && tsx tests/runtime/per-file-cap.test.ts && tsx tests/runtime/scanner-coverage-expansion.test.ts && tsx tests/runtime/chunk-fts-fields.test.ts && tsx tests/runtime/chunks-fts-search.test.ts && tsx tests/runtime/chunk-index-consistency.test.ts && tsx tests/runtime/feedback-loop.test.ts && tsx tests/runtime/lock-regression.test.ts && tsx tests/runtime/index-healing-convergence.test.ts && tsx tests/runtime/context-packer.test.ts && tsx tests/runtime/graph-expander.test.ts && tsx tests/runtime/language-filter.test.ts && tsx tests/runtime/install-guard.test.ts && tsx tests/runtime/test-script-completeness.test.ts","build":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --clean","prepack":"pnpm build","preinstall":"node scripts/check-node-version.js","test:e2e:mcp":"pnpm build && tsx tests/mcp-e2e-smoke.ts","test:runtime":"tsx tests/runtime/registry.test.ts","build:release":"tsup src/index.ts --format esm --dts --out-dir dist --clean","test:unit:all":"pnpm test && pnpm run test:benchmark","benchmark:tune":"tsx src/search/eval/runAutoTune.ts tests/benchmark/fixtures/sample-auto-tune-dataset.jsonl --target mrr --k 1,3,5 --top 3","prepublishOnly":"pnpm test","test:benchmark":"tsx tests/benchmark/offline-benchmark.test.ts && tsx tests/benchmark/auto-tune.test.ts","benchmark:offline":"tsx src/search/eval/runOfflineBenchmark.ts tests/benchmark/fixtures/sample-offline-benchmark.jsonl --k 1,3,5","test:install:node24":"node tests/install/node24-smoke.mjs"},"_npmUser":{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"},"repository":{"url":"git+https://github.com/CodingOX/ContextWeaver.git","type":"git"},"_npmVersion":"11.16.0","description":"A context weaving tool for LLMs","directories":{},"_nodeVersion":"22.22.3","dependencies":{"cac":"^6.7.14","zod":"^4.2.1","fdir":"^6.5.0","pino":"^10.1.0","dotenv":"^17.2.3","ignore":"^7.0.5","chardet":"^2.1.1","p-limit":"^7.2.0","iconv-lite":"^0.7.1","tree-sitter":"^0.25.0","better-sqlite3":"^12.2.0","tree-sitter-go":"0.25.0","@lancedb/lancedb":"^0.22.0","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","@modelcontextprotocol/sdk":"^1.25.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.78.0","tsup":"^8.5.1","typescript":"^5.9.3","@types/node":"^24.0.0","@biomejs/biome":"2.3.10","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/contextweaver_0.1.1_1780298727621_0.35198959734918334","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alistar.max/contextweaver","version":"0.1.2","description":"A context weaving tool for LLMs","license":"MIT","author":{"name":"alistar.max"},"repository":{"type":"git","url":"git+https://github.com/CodingOX/ContextWeaver.git"},"homepage":"https://github.com/CodingOX/ContextWeaver#readme","private":false,"publishConfig":{"access":"public"},"type":"module","bin":{"contextweaver":"dist/index.js","cw":"dist/index.js"},"engines":{"node":">=20 <24"},"scripts":{"build":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --clean","build:release":"tsup src/index.ts --format esm --dts --out-dir dist --clean","dev":"tsup src/index.ts --format esm --dts --out-dir dist --sourcemap --watch","fmt":"biome check --write ./src","test":"tsx tests/language-support.test.ts && tsx tests/runtime/registry.test.ts && tsx tests/runtime/docs-guard.test.ts && tsx tests/runtime/workspace-packages.test.ts && tsx tests/runtime/plugin-loader.test.ts && tsx tests/runtime/config-multi-key.test.ts && tsx tests/runtime/cli-behavior.test.ts && tsx tests/runtime/embedding-client.test.ts && tsx tests/runtime/reranker-client.test.ts && tsx tests/runtime/multi-key-docs.test.ts && tsx tests/runtime/parser-pool.test.ts && tsx tests/runtime/fallback-split.test.ts && tsx tests/runtime/search-rerank-fallback.test.ts && tsx tests/runtime/chunk-fts-content.test.ts && tsx tests/runtime/query-channel-build.test.ts && tsx tests/runtime/search-query-routing.test.ts && tsx tests/runtime/per-file-cap.test.ts && tsx tests/runtime/scanner-coverage-expansion.test.ts && tsx tests/runtime/chunk-fts-fields.test.ts && tsx tests/runtime/chunks-fts-search.test.ts && tsx tests/runtime/chunk-index-consistency.test.ts && tsx tests/runtime/feedback-loop.test.ts && tsx tests/runtime/lock-regression.test.ts && tsx tests/runtime/index-healing-convergence.test.ts && tsx tests/runtime/context-packer.test.ts && tsx tests/runtime/graph-expander.test.ts && tsx tests/runtime/language-filter.test.ts && tsx tests/runtime/install-guard.test.ts && tsx tests/runtime/test-script-completeness.test.ts","test:runtime":"tsx tests/runtime/registry.test.ts","test:e2e:mcp":"pnpm build && tsx tests/mcp-e2e-smoke.ts","prepublishOnly":"pnpm test","prepack":"pnpm build","preinstall":"node scripts/check-node-version.js","test:install:node24":"node tests/install/node24-smoke.mjs","test:benchmark":"tsx tests/benchmark/offline-benchmark.test.ts && tsx tests/benchmark/auto-tune.test.ts","test:unit:all":"pnpm test && pnpm run test:benchmark","benchmark:offline":"tsx src/search/eval/runOfflineBenchmark.ts tests/benchmark/fixtures/sample-offline-benchmark.jsonl --k 1,3,5","benchmark:tune":"tsx src/search/eval/runAutoTune.ts tests/benchmark/fixtures/sample-auto-tune-dataset.jsonl --target mrr --k 1,3,5 --top 3"},"dependencies":{"tree-sitter":"^0.25.0","@lancedb/lancedb":"^0.22.0","@modelcontextprotocol/sdk":"^1.25.1","better-sqlite3":"^12.2.0","cac":"^6.7.14","chardet":"^2.1.1","dotenv":"^17.2.3","fdir":"^6.5.0","iconv-lite":"^0.7.1","ignore":"^7.0.5","p-limit":"^7.2.0","pino":"^10.1.0","tree-sitter-go":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-python":"0.25.0","zod":"^4.2.1"},"devDependencies":{"@biomejs/biome":"2.3.10","@types/better-sqlite3":"^7.6.13","@types/node":"^24.0.0","knip":"^5.78.0","tsup":"^8.5.1","tsx":"^4.21.0","typescript":"^5.9.3"},"pnpm":{"onlyBuiltDependencies":["tree-sitter","better-sqlite3","esbuild","tree-sitter-go","tree-sitter-javascript","tree-sitter-python","tree-sitter-c","tree-sitter-c-sharp","tree-sitter-cpp","tree-sitter-java","tree-sitter-kotlin","tree-sitter-php","tree-sitter-ruby","tree-sitter-rust","tree-sitter-swift","tree-sitter-typescript","tree-sitter-cli"]},"gitHead":"1a064ecfe939749b94875923da9e83f06f79c712","_id":"@alistar.max/contextweaver@0.1.2","bugs":{"url":"https://github.com/CodingOX/ContextWeaver/issues"},"_nodeVersion":"22.22.3","_npmVersion":"11.16.0","dist":{"integrity":"sha512-eDs838+OIIGPOtmbw2EVbSSo1dFQLCgLJRPVojqdX85Y/aFcnWsls9HRoo+fTYjrnEngTKbQ0zbfofJ1FuRpRw==","shasum":"bfb07f60b83eb61b99912ca76a3f023a740ebeec","tarball":"https://registry.npmjs.org/@alistar.max/contextweaver/-/contextweaver-0.1.2.tgz","fileCount":27,"unpackedSize":280373,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alistar.max%2fcontextweaver@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCSwOISzwDcmFNKNGqMqJ//cCm2JHO83ggveJXB5lyS6QIgJrmMzIMmQpeuDd8L8AENgc6AmizoJT/aUvYiFVKShDQ="}]},"_npmUser":{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"},"directories":{},"maintainers":[{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/contextweaver_0.1.2_1780305805213_0.9953330767015378"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-09T15:24:09.873Z","modified":"2026-06-01T09:23:25.675Z","0.0.7":"2026-02-09T15:24:10.137Z","0.0.8":"2026-02-10T07:11:02.436Z","0.0.9":"2026-02-11T14:27:43.413Z","0.1.0":"2026-02-12T09:07:09.302Z","0.1.1":"2026-06-01T07:25:27.777Z","0.1.2":"2026-06-01T09:23:25.387Z"},"bugs":{"url":"https://github.com/CodingOX/ContextWeaver/issues"},"author":{"name":"alistar.max"},"license":"MIT","homepage":"https://github.com/CodingOX/ContextWeaver#readme","repository":{"type":"git","url":"git+https://github.com/CodingOX/ContextWeaver.git"},"description":"A context weaving tool for LLMs","maintainers":[{"name":"alistar.max","email":"liuchunfu.vip@gmail.com"}],"readme":"# ContextWeaver\n\n<p align=\"center\">\n  <strong>🧵 为 AI Agent 精心编织的代码库上下文引擎</strong>\n</p>\n\n<p align=\"center\">\n  <em>Semantic Code Retrieval for AI Agents — Hybrid Search • Graph Expansion • Token-Aware Packing</em>\n</p>\n\n---\n\n**ContextWeaver** 是一个面向 AI 代码助手的语义检索引擎。它把代码库索引成可检索的语义上下文，并通过混合搜索（向量 + 词法）、上下文扩展和 Token 感知打包，把更完整、更相关的代码片段交给 LLM。\n\n<p align=\"center\">\n  <img src=\"docs/architecture.png\" alt=\"ContextWeaver 架构概览\" width=\"800\" />\n</p>\n\n## ✨ 核心特性\n\n- **混合检索**：向量召回理解语义，FTS 召回匹配函数名、类名等精确术语，并通过 RRF 融合。\n- **AST 语义分片**：主包内置 JavaScript、Python、Go，并默认加载 TypeScript、Kotlin、Java、Rust 核心语言插件；其他语言通过按需插件增强。\n- **上下文扩展**：支持同文件邻居、面包屑补全、导入文件扩展，减少只命中孤立片段的问题。\n- **Token 感知打包**：合并相邻片段，控制上下文预算，避免输出过散或过长。\n- **CLI + MCP 双入口**：既能作为命令行工具独立检索，也能作为 MCP Server 接入 Claude、Codex 等客户端。\n\n## 📦 安装\n\n### 环境要求\n\n- Node.js >= 20 且 < 24（推荐 Node.js 22 LTS，不支持 Node 24）\n- npm >= 10\n\n### 安装主包\n\n```bash\nnpm install -g @alistar.max/contextweaver\n```\n\n主包默认具备 JavaScript、Python、Go 的 AST 分片能力，并会自动加载 TypeScript、Kotlin、Java、Rust 默认核心语言插件。默认核心插件仍保持独立包边界，避免把更多 grammar 直接并入主包内置 runtime。\n\n### 默认核心支持\n\n安装主包后，下列语言默认可用，无需额外安装兼容分组包：\n\n- TypeScript\n- Kotlin\n- Java\n- Rust\n\n### 按需安装语言包\n\n这些包属于按需语言插件，用来补齐默认核心支持以外语言的 AST 分片能力。未安装语言插件时，对应语言仍可索引和搜索，但会回退为纯文本分片。\n\n```bash\n# C / C++ /  C#\nnpm install -g @alistar.max/contextweaver-lang-c\nnpm install -g @alistar.max/contextweaver-lang-cpp\nnpm install -g @alistar.max/contextweaver-lang-csharp\n\n# PHP / Ruby  / Swift\nnpm install -g @alistar.max/contextweaver-lang-php\nnpm install -g @alistar.max/contextweaver-lang-ruby\nnpm install -g @alistar.max/contextweaver-lang-swift\n```\n\n`@alistar.max/contextweaver-lang-all` 仅作为补充型聚合包保留；README 推荐路径是主包默认核心支持 + 按需单语言插件。\n\n## ⚙️ 初始化配置\n\n```bash\ncontextweaver init\n# 或使用别名\ncw init\n```\n\n初始化后编辑 `~/.contextweaver/.env`。README 面向新用户只展示多 key 写法；即使你现在只有一个 key，也建议使用 `_KEYS` 变量，后续扩容只需要追加逗号分隔的新 key。\n\n```bash\n# Embedding API 配置（必需）\nEMBEDDINGS_API_KEYS=your-api-key-here\nEMBEDDINGS_BASE_URL=https://api.siliconflow.cn/v1/embeddings\nEMBEDDINGS_MODEL=BAAI/bge-m3\nEMBEDDINGS_MAX_CONCURRENCY=10\nEMBEDDINGS_DIMENSIONS=1024\n\n# Reranker 配置（必需）\nRERANK_API_KEYS=your-api-key-here\nRERANK_BASE_URL=https://api.siliconflow.cn/v1/rerank\nRERANK_MODEL=BAAI/bge-reranker-v2-m3\nRERANK_TOP_N=20\n\n# 索引忽略模式（可选，逗号分隔）\n# IGNORE_PATTERNS=.venv,node_modules\n\n# 显式包含模式（可选，逗号分隔；仅用于放行未知扩展名）\n# INCLUDE_PATTERNS=**/*.prompt,**/*.cue\n```\n\n`EMBEDDINGS_API_KEY` 与 `RERANK_API_KEY` 是旧变量名，运行时仍兼容；新配置推荐使用 `_KEYS`，支持逗号分隔多 key 和请求级轮转。\n\n如果你希望在项目内持久化 include 规则，可在项目根目录创建 `.contextweaverinclude`，每行一个 glob 规则：\n\n```bash\n**/*.prompt\n**/*.cue\n```\n\n## 🖥️ CLI 使用\n\n### 1) 查看版本\n\n```bash\ncontextweaver --version\ncw --version\n```\n\n### 2) 初始化配置\n\n```bash\ncontextweaver init\n```\n\n该命令会创建 `~/.contextweaver/.env`。如果文件已存在，不会覆盖现有配置。\n\n### 3) 索引代码库\n\n```bash\n# 索引当前目录\ncontextweaver index .\n\n# 强制重建当前目录索引\ncontextweaver index . --force\n\n# 索引指定项目\ncontextweaver index /path/to/your/project --force\n```\n\n首次接入一个项目时，建议先手动执行一次 `--force` 索引。这样可以直接在终端观察 Embedding 进度、429 限流和配置错误。\n\n### 4) 本地搜索\n\n```bash\ncontextweaver search \\\n  --repo-path /path/to/your/project \\\n  --information-request \"登录鉴权流程在哪里实现\" \\\n  --technical-terms \"AuthService,login,token\"\n```\n\n参数说明：\n\n| 参数 | 必需 | 说明 |\n|------|------|------|\n| `--repo-path` | 否 | 目标代码库目录，默认当前目录 |\n| `--information-request` | 是 | 自然语言语义意图，描述你想找什么逻辑 |\n| `--technical-terms` | 否 | 逗号分隔的精确术语，如类名、函数名、常量名 |\n| `--zen` | 否 | 使用 MCP Zen 配置，当前默认开启 |\n\nCLI 搜索适合本地调试、脚本化检索、CI 冒烟，以及在接 MCP 客户端之前确认索引和召回是否正常。\n\n### 5) 启动 MCP Server\n\n```bash\ncontextweaver mcp\n```\n\n通常不需要手动运行该命令；MCP 客户端会通过配置自动启动它。\n\n### 6) 索引一致性检查\n\n```bash\ncontextweaver doctor /path/to/your/project\ncontextweaver doctor /path/to/your/project --repair\n```\n\n`doctor` 用于检查向量索引和 FTS 索引是否一致。`--repair` 会删除 FTS 中没有对应向量记录的孤儿数据。\n\n### 7) 检索反馈摘要\n\n```bash\ncontextweaver feedback /path/to/your/project --days 7 --top 10\n```\n\n用于查看最近检索反馈、零命中率和高复用文件。\n\n### 8) 离线调参\n\n```bash\ncontextweaver tune tests/benchmark/fixtures/sample-auto-tune-dataset.jsonl \\\n  --target mrr \\\n  --k 1,3,5 \\\n  --top 3\n```\n\n该命令面向维护者和评测场景，用于 RRF 参数回放与自动调参。\n\n## 🔌 MCP 集成\n\nContextWeaver 提供一个核心 MCP 工具：`codebase-retrieval`。\n\n### Claude / OpenCode 配置\n\n```json\n{\n  \"mcpServers\": {\n    \"contextweaver\": {\n      \"command\": \"contextweaver\",\n      \"args\": [\"mcp\"]\n    }\n  }\n}\n```\n\n### Codex CLI 配置\n\n把下面内容加入 `~/.codex/config.toml`：\n\n```toml\n[mcp_servers.contextweaver]\ntype = \"stdio\"\ncommand = \"contextweaver\"\nargs = [\"mcp\"]\nstartup_timeout_sec = 20\ntool_timeout_sec = 30\n```\n\n### MCP 工具参数\n\n| 参数 | 类型 | 必需 | 描述 |\n|------|------|------|------|\n| `repo_path` | string | ✅ | 代码库根目录的绝对路径 |\n| `information_request` | string | ✅ | 自然语言形式的语义意图描述 |\n| `technical_terms` | string[] | ❌ | 精确技术术语，如类名、函数名、常量名 |\n| `source_code_only` | boolean | ❌ | 排除文档/配置类语言 |\n| `include_languages` | string[] | ❌ | 只包含指定语言 |\n| `exclude_languages` | string[] | ❌ | 排除指定语言 |\n\nMCP 模式下，`codebase-retrieval` 每次调用都会先执行自动索引检查：首次使用自动完整索引，后续自动增量索引。\n\n## ✅ 测试流程\n\n### 安装后冒烟\n\n```bash\n# 1) 确认 CLI 可执行\ncontextweaver --version\n\n# 2) 初始化并配置 API\ncontextweaver init\n\n# 3) 在目标仓库执行索引\ncd /path/to/your/project\ncontextweaver index . --force\n\n# 4) 执行一次检索\ncontextweaver search \\\n  --information-request \"插件默认加载顺序在哪里定义\" \\\n  --technical-terms \"DEFAULT_PLUGIN_CANDIDATES,PluginLoader\" \\\n  | tee /tmp/contextweaver-smoke.txt\n\n# 5) 校验结果是否命中预期术语\nrg \"PluginLoader|DEFAULT_PLUGIN_CANDIDATES\" /tmp/contextweaver-smoke.txt\n```\n\n### 开发者测试\n\n```bash\n# 构建\npnpm build\n\n# 当前主测试流程\npnpm test\n\n# Benchmark / 自动调参回归\npnpm run test:benchmark\n\n# 单元 + Benchmark 汇总\npnpm run test:unit:all\n\n# MCP E2E 冒烟\npnpm run test:e2e:mcp\n```\n\n如果在后台执行测试，建议给命令加超时，避免原生依赖安装、网络或 E2E 流程卡住：\n\n```bash\ntimeout 60s pnpm test\n```\n\nmacOS 默认没有 GNU `timeout` 时，可使用 `gtimeout`，或直接在任务运行器中配置 60s 超时。\n\n## 🌍 多语言支持\n\nContextWeaver 当前采用“主包内置 + 默认核心插件 + 按需插件”三层能力模型：\n\n- 主包内置 AST：JavaScript、Python、Go\n- 默认核心插件 AST：TypeScript、Kotlin、Java、Rust\n- 按需语言插件 AST：C#、C++、Ruby、C、PHP、Swift\n- 未安装按需语言插件：自动回退为纯文本分片，仍可索引、检索和返回上下文\n\n| 语言 | 默认支持层级 | 插件包 | Import 解析 | 扩展名 |\n|------|--------------|------------|-------------|--------|\n| JavaScript | 主包内置 | 内置 | ✅ | `.js`, `.jsx`, `.mjs` |\n| Python | 主包内置 | 内置 | ✅ | `.py` |\n| Go | 主包内置 | 内置 | ✅ | `.go` |\n| TypeScript | 默认核心插件 | `@alistar.max/contextweaver-lang-typescript` | ✅ | `.ts`, `.tsx` |\n| Kotlin | 默认核心插件 | `@alistar.max/contextweaver-lang-kotlin` | ✅ | `.kt` |\n| Java | 默认核心插件 | `@alistar.max/contextweaver-lang-java` | ✅ | `.java` |\n| Rust | 默认核心插件 | `@alistar.max/contextweaver-lang-rust` | ✅ | `.rs` |\n| C# | 按需插件 | `@alistar.max/contextweaver-lang-csharp` | ✅ | `.cs`, `.csx` |\n| C++ | 按需插件 | `@alistar.max/contextweaver-lang-cpp` | ✅ | `.cpp`, `.cc`, `.cxx`, `.hpp` |\n| Ruby | 按需插件 | `@alistar.max/contextweaver-lang-ruby` | ✅ | `.rb` |\n| C | 按需插件 | `@alistar.max/contextweaver-lang-c` | ✅ | `.c`, `.h` |\n| PHP | 按需插件 | `@alistar.max/contextweaver-lang-php` | ✅ | `.php` |\n| Swift | 按需插件 | `@alistar.max/contextweaver-lang-swift` | ✅ | `.swift` |\n| Dart | 纯文本回退 | 当前无语言包 | ✅ | `.dart` |\n\nC# Import 解析支持 `using`、`using static`、`global using`、别名导入，并兼容 `global::` 与 `@` 标识符写法。\n\n## ⚙️ 配置参考\n\n| 变量名 | 必需 | 默认值 | 描述 |\n|--------|------|--------|------|\n| `EMBEDDINGS_API_KEYS` | ✅ | - | Embedding API Key，逗号分隔，支持多 key 轮转 |\n| `EMBEDDINGS_BASE_URL` | ✅ | - | Embedding API 地址 |\n| `EMBEDDINGS_MODEL` | ✅ | - | Embedding 模型名称 |\n| `EMBEDDINGS_MAX_CONCURRENCY` | ❌ | 10 | Embedding 并发数 |\n| `EMBEDDINGS_DIMENSIONS` | ❌ | 1024 | 向量维度 |\n| `RERANK_API_KEYS` | ✅ | - | Reranker API Key，逗号分隔，支持多 key 轮转 |\n| `RERANK_BASE_URL` | ✅ | - | Reranker API 地址 |\n| `RERANK_MODEL` | ✅ | - | Reranker 模型名称 |\n| `RERANK_TOP_N` | ❌ | 20 | Rerank 返回数量 |\n| `INCLUDE_PATTERNS` | ❌ | - | 额外包含模式，用于显式纳入未知扩展名 |\n| `IGNORE_PATTERNS` | ❌ | - | 额外忽略模式 |\n\n兼容说明：`EMBEDDINGS_API_KEY` 和 `RERANK_API_KEY` 是旧变量名，运行时仍兼容；新文档不再提供单 key 示例，推荐使用 `_KEYS`。\n\n## 🧱 技术文档\n\nREADME 只保留安装、配置、CLI、MCP 和测试入口。更细的工程内容请看独立文档：\n\n- 开发者指南：`docs/developer/developer-guide.md`\n- CLI 原生搜索规格：`docs/specs/2026-05-31-cli-native-search-spec.md`\n- 检索准确率计划：`docs/plans/2026-02-11-retrieval-accuracy-p0-p1.md`\n- 多 key 轮转设计：`docs/plans/2026-02-10-multi-key-round-robin.md`\n- 插件包迁移记录：`docs/logs/plugin-packages-migration-2026-02-10.md`\n- 发布流程：`docs/release/local-manual-release.md`\n\n基础架构概览：\n\n```text\n索引: Crawler -> Processor -> SemanticSplitter -> Indexer -> VectorStore / SQLite\n搜索: Query -> Vector + FTS Recall -> RRF Fusion -> Rerank -> GraphExpander -> ContextPacker\n```\n\n## 🐛 日志与调试\n\n日志文件位于 `~/.contextweaver/logs/app.YYYY-MM-DD.log`。\n\n```bash\nLOG_LEVEL=debug contextweaver search --information-request \"...\"\n```\n\n## 📄 开源协议\n\n本项目采用 MIT 许可证。\n\n## 🙏 致谢\n\n- [Tree-sitter](https://tree-sitter.github.io/tree-sitter/) - 高性能语法解析\n- [LanceDB](https://lancedb.com/) - 嵌入式向量数据库\n- [MCP](https://modelcontextprotocol.io/) - Model Context Protocol\n- [SiliconFlow](https://siliconflow.cn/) - 推荐的 Embedding/Reranker API 服务\n\n---\n\n<p align=\"center\">\n  <sub>Made with ❤️ for AI-assisted coding</sub>\n</p>\n","readmeFilename":"README.md"}