{"_id":"@agent-context/sift","_rev":"8-af47340309d16e25a78f5e2f4289581d","name":"@agent-context/sift","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1-alpha.1":{"name":"@agent-context/sift","version":"0.0.1-alpha.1","license":"Apache-2.0","_id":"@agent-context/sift@0.0.1-alpha.1","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"os":["darwin","linux"],"dist":{"shasum":"2f35e9b78ed4424719fcea308699b8400a254b78","tarball":"https://registry.npmjs.org/@agent-context/sift/-/sift-0.0.1-alpha.1.tgz","fileCount":4,"integrity":"sha512-uOjLEtqjAWsx7PS0Yzn5UKCZO+91PpVdL1OJ6U3ZTQDpDUg/Jn/650XSKkR7Hw2145+ei3AFIAoUax/1jnUWDw==","signatures":[{"sig":"MEUCIGQn/V5WBmFxbRg9UsjKYT18tGD1eQkR6dQW48HUfVUTAiEAoqcZ6mgSpM14aVchomcS/JoDzX9MBwaMcLPXq5ripIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16884},"main":"dist/index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl","aarch64-unknown-linux-musl"],"binaryName":"sift"},"types":"dist/index.d.ts","engines":{"node":">= 10"},"gitHead":"3f8b25920aecd0323ced4a0cdab984629bcd0cec","scripts":{"demo":"npm run build:ts && tsc -p tsconfig.demo.json && node dist-demo/demo/index.js","test":"npm run build:ts && tsc -p tsconfig.test.json && node dist-test/smoke.test.js","build":"npm run build:native && npm run build:ts","clean":"rm -rf dist dist-test dist-demo platforms","build:ts":"tsc -p tsconfig.json","build:cross":"bash ../../scripts/build-cross.sh && node ../../scripts/gen-platform-packages.mjs","build:native":"napi build --platform --release --manifest-path ../../crates/sift-node/Cargo.toml --output-dir native && rm -f native/index.d.ts","prepublishOnly":"npm run build:cross && npm run build:ts"},"_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"_npmVersion":"10.9.8","description":"LLM 上下文压缩核心（Rust sift 的 Node 绑定）","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^26.2.0","@napi-rs/cli":"^3.8.6"},"optionalDependencies":{"@agent-context/sift-darwin-x64":"0.0.1-alpha.1","@agent-context/sift-darwin-arm64":"0.0.1-alpha.1","@agent-context/sift-linux-x64-gnu":"0.0.1-alpha.1","@agent-context/sift-linux-x64-musl":"0.0.1-alpha.1","@agent-context/sift-linux-arm64-gnu":"0.0.1-alpha.1","@agent-context/sift-linux-arm64-musl":"0.0.1-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/sift_0.0.1-alpha.1_1787541753854_0.9861145667622324","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-alpha.2":{"name":"@agent-context/sift","version":"0.0.1-alpha.2","license":"Apache-2.0","_id":"@agent-context/sift@0.0.1-alpha.2","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"os":["darwin","linux"],"dist":{"shasum":"9808ba2513e640f9fe7e1a775bba3c242b5d0c78","tarball":"https://registry.npmjs.org/@agent-context/sift/-/sift-0.0.1-alpha.2.tgz","fileCount":4,"integrity":"sha512-jubIrEmjr7RB3uPwTWZjppk49s1JEcUwLXJbSV4mEgbD379lYqARoMVB/5OWrrwQ0sfP5wCWQdiGg5GtDM6U9A==","signatures":[{"sig":"MEUCICU1mWShF+mNVJUY5guJARot3bB/oF/rMVwIbeiQBnJsAiEAjrbuW2F0WM3WM/4HqjN3FKWFU0VymdmP8bTr8NbaNbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAoOPmNxVDIKLUIaRwjdOx/KKZE7GQqYf/084psbAfUNAiEAm9sbGVona6XtrxPj62nVWn2MxdlJlCX2J6udtdVBW9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16922},"main":"dist/index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl","aarch64-unknown-linux-musl"],"binaryName":"sift"},"types":"dist/index.d.ts","engines":{"node":">= 10"},"gitHead":"b2b551dd1eb6e083b3c798aa038117204f28ac06","scripts":{"demo":"npm run build:ts && tsc -p tsconfig.demo.json && node dist-demo/demo/index.js","test":"npm run build:ts && tsc -p tsconfig.test.json && node dist-test/smoke.test.js","build":"npm run build:native && npm run build:ts","clean":"rm -rf dist dist-test dist-demo platforms","build:ts":"tsc -p tsconfig.json","build:cross":"bash ../../scripts/build-cross.sh && node ../../scripts/gen-platform-packages.mjs","build:native":"napi build --platform --release --manifest-path ../../crates/sift-node/Cargo.toml --output-dir native && rm -f native/index.d.ts","prepublishOnly":"npm run build:cross && npm run build:ts"},"_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"_npmVersion":"10.9.8","description":"LLM 上下文压缩核心（Rust sift 的 Node 绑定）","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^26.2.0","@napi-rs/cli":"^3.8.6"},"optionalDependencies":{"@agent-context/sift-darwin-x64":"0.0.1-alpha.2","@agent-context/sift-darwin-arm64":"0.0.1-alpha.2","@agent-context/sift-linux-x64-gnu":"0.0.1-alpha.2","@agent-context/sift-linux-x64-musl":"0.0.1-alpha.2","@agent-context/sift-linux-arm64-gnu":"0.0.1-alpha.2","@agent-context/sift-linux-arm64-musl":"0.0.1-alpha.2"},"_npmOperationalInternal":{"tmp":"tmp/sift_0.0.1-alpha.2_1787552778031_0.9375030656479135","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-alpha.3":{"name":"@agent-context/sift","version":"0.0.1-alpha.3","license":"Apache-2.0","_id":"@agent-context/sift@0.0.1-alpha.3","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"os":["darwin","linux"],"dist":{"shasum":"cdd3ad641862971570f35f514d15d47da8623850","tarball":"https://registry.npmjs.org/@agent-context/sift/-/sift-0.0.1-alpha.3.tgz","fileCount":4,"integrity":"sha512-eU5dlj7jfn4KjqQjqP3fBFZLQMUEBRVV0kvncdx1dweSiC8GRVFER0Fhry6Mx1wva7c3vofh7OE8IyCClHdM7w==","signatures":[{"sig":"MEUCIQD/rK8aCJPT+VMbzj6GXu7nsfXDV1K8YngL2Yzu2ibbDQIgTC0UGPiYzB3A4ROqTELnIH4kTeq86TDixws68eH3P/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFIjq+52gN8eppMmljwD03lknzEu/PIYQj8VA24RoFu7AiEAn1vAFfXCu2tBzrGO3YmQWCZwVGdgqXycCepLTKkSf8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16922},"main":"dist/index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl","aarch64-unknown-linux-musl"],"binaryName":"sift"},"types":"dist/index.d.ts","engines":{"node":">= 10"},"gitHead":"5ec237963c03a655199b8f9c16b47f1202a858f2","scripts":{"demo":"npm run build:ts && tsc -p tsconfig.demo.json && node dist-demo/demo/index.js","test":"npm run build:ts && tsc -p tsconfig.test.json && node dist-test/smoke.test.js","build":"npm run build:native && npm run build:ts","clean":"rm -rf dist dist-test dist-demo platforms","build:ts":"tsc -p tsconfig.json","build:cross":"bash ../../scripts/build-cross.sh && node ../../scripts/gen-platform-packages.mjs","build:native":"napi build --platform --release --manifest-path ../../crates/sift-node/Cargo.toml --output-dir native && rm -f native/index.d.ts","prepublishOnly":"npm run build:cross && npm run build:ts"},"_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"_npmVersion":"10.9.8","description":"LLM 上下文压缩核心（Rust sift 的 Node 绑定）","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^26.2.0","@napi-rs/cli":"^3.8.6"},"optionalDependencies":{"@agent-context/sift-darwin-x64":"0.0.1-alpha.3","@agent-context/sift-darwin-arm64":"0.0.1-alpha.3","@agent-context/sift-linux-x64-gnu":"0.0.1-alpha.3","@agent-context/sift-linux-x64-musl":"0.0.1-alpha.3","@agent-context/sift-linux-arm64-gnu":"0.0.1-alpha.3","@agent-context/sift-linux-arm64-musl":"0.0.1-alpha.3"},"_npmOperationalInternal":{"tmp":"tmp/sift_0.0.1-alpha.3_1787556502574_0.493443370349959","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-alpha.4":{"name":"@agent-context/sift","version":"0.0.1-alpha.4","license":"Apache-2.0","_id":"@agent-context/sift@0.0.1-alpha.4","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"os":["darwin","linux"],"dist":{"shasum":"4c77df80b543515bdf93766a51e5303ab8100ef7","tarball":"https://registry.npmjs.org/@agent-context/sift/-/sift-0.0.1-alpha.4.tgz","fileCount":4,"integrity":"sha512-MkXvVRoDS4nBG9hKzKmx2o6nmoZiOTztWEWiy5qvu36KA0W9RZ2u9Di1AE1ZfQAzeGcxUZIeLVko2pgOlMj0kg==","signatures":[{"sig":"MEYCIQDd8d10ijvfWoNOSwUSijI96ZEeuyW4RFqEN5PvwB42XgIhANFBPtcNATCkJHThwkh9TWgfgHomSIcrIKDPPO+CidzU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD9AOiMwaE0bwyf0ZcXnhjg7bhZP5VUyrXOORLCjB7mYAIgdu+Fs92TYsM+NapHZsx9rRC/K+skXCucWps+fZ1cFy8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20124},"main":"dist/index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl","aarch64-unknown-linux-musl"],"binaryName":"sift"},"types":"dist/index.d.ts","engines":{"node":">= 10"},"gitHead":"745e3cc6bf94e8c4fe52bd510617b9c15cadf0fc","scripts":{"demo":"npm run build:ts && tsc -p tsconfig.demo.json && node dist-demo/demo/index.js","test":"npm run build:ts && tsc -p tsconfig.test.json && node dist-test/smoke.test.js","build":"npm run build:native && npm run build:ts","clean":"rm -rf dist dist-test dist-demo platforms","build:ts":"tsc -p tsconfig.json","build:cross":"bash ../../scripts/build-cross.sh && node ../../scripts/gen-platform-packages.mjs","build:native":"napi build --platform --release --manifest-path ../../crates/sift-node/Cargo.toml --output-dir native && rm -f native/index.d.ts","prepublishOnly":"npm run build:cross && npm run build:ts"},"_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"_npmVersion":"10.9.8","description":"LLM 上下文压缩核心（Rust sift 的 Node 绑定）","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^26.2.0","@napi-rs/cli":"^3.8.6"},"optionalDependencies":{"@agent-context/sift-darwin-x64":"0.0.1-alpha.4","@agent-context/sift-darwin-arm64":"0.0.1-alpha.4","@agent-context/sift-linux-x64-gnu":"0.0.1-alpha.4","@agent-context/sift-linux-x64-musl":"0.0.1-alpha.4","@agent-context/sift-linux-arm64-gnu":"0.0.1-alpha.4","@agent-context/sift-linux-arm64-musl":"0.0.1-alpha.4"},"_npmOperationalInternal":{"tmp":"tmp/sift_0.0.1-alpha.4_1787567137058_0.671235589545145","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-alpha.5":{"name":"@agent-context/sift","version":"0.0.1-alpha.5","license":"Apache-2.0","_id":"@agent-context/sift@0.0.1-alpha.5","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"os":["darwin","linux"],"dist":{"shasum":"ba75633a0148a7cb945fdceb4e53c536ad55c099","tarball":"https://registry.npmjs.org/@agent-context/sift/-/sift-0.0.1-alpha.5.tgz","fileCount":4,"integrity":"sha512-ZWHa1xQg4wqe88BAuSAuyXWBUG3DkXvskBntW8bRS4EMMyRMl6OpwUzl0Fews7xmggh+svPvHY1PO45hGjpPBA==","signatures":[{"sig":"MEUCICTUX/Z8bU3Hh17v540HFhyb3Hq6s/G8DuweV7aFArz0AiEA9a9tMPuGdhtInLD9SSimBT/I82lchybTDzijOnOAK3g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH1AW6EKpwEYZcgnDwkBHPjE6m0djtsIQ/AThAlxS/2CAiB0bK3SOaioQnmssele5wGrodaDtwLu2+cV43+ao+secA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20124},"main":"dist/index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl","aarch64-unknown-linux-musl"],"binaryName":"sift"},"types":"dist/index.d.ts","engines":{"node":">= 10"},"gitHead":"a324e182e5aa0b5824ae58a9fddc151878932b5b","scripts":{"demo":"npm run build:ts && tsc -p tsconfig.demo.json && node dist-demo/demo/index.js","test":"npm run build:ts && tsc -p tsconfig.test.json && node dist-test/smoke.test.js","build":"npm run build:native && npm run build:ts","clean":"rm -rf dist dist-test dist-demo platforms","build:ts":"tsc -p tsconfig.json","build:cross":"bash ../../scripts/build-cross.sh && node ../../scripts/gen-platform-packages.mjs","build:native":"napi build --platform --release --manifest-path ../../crates/sift-node/Cargo.toml --output-dir native && rm -f native/index.d.ts","prepublishOnly":"npm run build:cross && npm run build:ts"},"_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"_npmVersion":"10.9.8","description":"LLM 上下文压缩核心（Rust sift 的 Node 绑定）","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^26.2.0","@napi-rs/cli":"^3.8.6"},"optionalDependencies":{"@agent-context/sift-darwin-x64":"0.0.1-alpha.5","@agent-context/sift-darwin-arm64":"0.0.1-alpha.5","@agent-context/sift-linux-x64-gnu":"0.0.1-alpha.5","@agent-context/sift-linux-x64-musl":"0.0.1-alpha.5","@agent-context/sift-linux-arm64-gnu":"0.0.1-alpha.5","@agent-context/sift-linux-arm64-musl":"0.0.1-alpha.5"},"_npmOperationalInternal":{"tmp":"tmp/sift_0.0.1-alpha.5_1787642543804_0.060598840701127754","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-alpha.6":{"name":"@agent-context/sift","version":"0.0.1-alpha.6","license":"Apache-2.0","_id":"@agent-context/sift@0.0.1-alpha.6","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"os":["darwin","linux","win32"],"dist":{"shasum":"37740a280d51dcce4ab9ca064c5997acf8e6ced0","tarball":"https://registry.npmjs.org/@agent-context/sift/-/sift-0.0.1-alpha.6.tgz","fileCount":4,"integrity":"sha512-E1Wg3ZsNZlw0f64Opoa1lB7af3iOGSXyM/6Q9EvHVFfr5Yyc6wuc4SoAVju3OCohkKGcaoUUwoDWw9fM+b1hzA==","signatures":[{"sig":"MEUCIQCr8FvniBrynwEc9eWVbJaegl5mFUKba8MqqmCXIMKRWgIgbY/v0Sk7SgZhy2WLvyFRRpi0BZX5NSJKUfx8JnevfOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFBGAzdIeV4UnWP45ki8p+aaUp/2LxDfK/P93JmRFUK+AiEAqWKhgmZEQ8zIbDP7dCzZOpNX6IOdOF6TpLvCZDJ8rY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20438},"main":"dist/index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl","aarch64-unknown-linux-musl","x86_64-pc-windows-msvc","aarch64-pc-windows-msvc"],"binaryName":"sift"},"types":"dist/index.d.ts","engines":{"node":">= 10"},"gitHead":"bc837a484258d63c09a5acf4c8afd1529b40b939","scripts":{"demo":"npm run build:ts && tsc -p tsconfig.demo.json && node dist-demo/demo/index.js","test":"npm run build:ts && tsc -p tsconfig.test.json && node dist-test/smoke.test.js","build":"npm run build:native && npm run build:ts","clean":"rm -rf dist dist-test dist-demo platforms","build:ts":"tsc -p tsconfig.json","build:cross":"bash ../../scripts/build-cross.sh && node ../../scripts/gen-platform-packages.mjs","build:native":"napi build --platform --release --manifest-path ../../crates/sift-node/Cargo.toml --output-dir native && rm -f native/index.d.ts","prepublishOnly":"npm run build:cross && npm run build:ts"},"_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"_npmVersion":"10.9.8","description":"LLM 上下文压缩核心（Rust sift 的 Node 绑定）","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^26.2.0","@napi-rs/cli":"^3.8.6"},"optionalDependencies":{"@agent-context/sift-darwin-x64":"0.0.1-alpha.6","@agent-context/sift-darwin-arm64":"0.0.1-alpha.6","@agent-context/sift-linux-x64-gnu":"0.0.1-alpha.6","@agent-context/sift-linux-x64-musl":"0.0.1-alpha.6","@agent-context/sift-win32-x64-msvc":"0.0.1-alpha.6","@agent-context/sift-linux-arm64-gnu":"0.0.1-alpha.6","@agent-context/sift-linux-arm64-musl":"0.0.1-alpha.6","@agent-context/sift-win32-arm64-msvc":"0.0.1-alpha.6"},"_npmOperationalInternal":{"tmp":"tmp/sift_0.0.1-alpha.6_1787827538458_0.05726483754321254","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-alpha.7":{"name":"@agent-context/sift","version":"0.0.1-alpha.7","license":"Apache-2.0","_id":"@agent-context/sift@0.0.1-alpha.7","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"os":["darwin","linux","win32"],"dist":{"shasum":"2ec8ed3e8374591dd402b99d1855c057101ef991","tarball":"https://registry.npmjs.org/@agent-context/sift/-/sift-0.0.1-alpha.7.tgz","fileCount":6,"integrity":"sha512-9l0BtG4iaFta3rt8XcDJEwdm+x+BGNhaXDUgDFlSQl/PViaFMF4eDpSD/4W90vsLiZOWqxEJbttPKeaV0WTLnw==","signatures":[{"sig":"MEQCIHq9oSl409UNJHwMKgkt7z4F78Y156qnBNTXQVYEUankAiBqtUituxe4vtrnTO4XqJSxo7NeiIU1XZqTwTxFPxnwjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBenH4D7zpnSyQtetELIwJJ5OL4Yuj7PeRvB0TX6oxmlAiBwDp8vQzzVcA6wEVfiweU00WmOIiNi1OCsddtd5qUOcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37581},"main":"dist/index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl","aarch64-unknown-linux-musl","x86_64-pc-windows-msvc","aarch64-pc-windows-msvc"],"binaryName":"sift"},"types":"dist/index.d.ts","engines":{"node":">= 10"},"gitHead":"6d1d37051faecaa0c5d7b4f8bf2e24f4df48eb96","scripts":{"demo":"npm run build:ts && tsc -p tsconfig.demo.json && node dist-demo/demo/index.js","test":"npm run build && tsc -p tsconfig.test.json && node dist-test/smoke.test.js","build":"npm run build:native && npm run build:ts","clean":"rm -rf dist dist-test dist-demo platforms","build:ts":"tsc -p tsconfig.json","build:cross":"bash ../../scripts/build-cross.sh && node ../../scripts/gen-platform-packages.mjs","build:native":"napi build --platform --release --manifest-path ../../crates/sift-node/Cargo.toml --output-dir native && rm -f native/index.d.ts","prepublishOnly":"npm run build:cross && npm run build:ts"},"_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"_npmVersion":"10.9.8","description":"LLM 上下文压缩核心（Rust sift 的 Node 绑定）","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^26.2.0","@napi-rs/cli":"^3.8.6"},"optionalDependencies":{"@agent-context/sift-darwin-x64":"0.0.1-alpha.7","@agent-context/sift-darwin-arm64":"0.0.1-alpha.7","@agent-context/sift-linux-x64-gnu":"0.0.1-alpha.7","@agent-context/sift-linux-x64-musl":"0.0.1-alpha.7","@agent-context/sift-win32-x64-msvc":"0.0.1-alpha.7","@agent-context/sift-linux-arm64-gnu":"0.0.1-alpha.7","@agent-context/sift-linux-arm64-musl":"0.0.1-alpha.7","@agent-context/sift-win32-arm64-msvc":"0.0.1-alpha.7"},"_npmOperationalInternal":{"tmp":"tmp/sift_0.0.1-alpha.7_1788263828760_0.4631097105608468","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"os":["darwin","linux","win32"],"_id":"@agent-context/sift@0.0.1","bugs":{"url":"https://github.com/agents-sdk/sift/issues"},"dist":{"shasum":"0c587dc5e6e9e006c8f2473b36fba812d8fe47b5","tarball":"https://registry.npmjs.org/@agent-context/sift/-/sift-0.0.1.tgz","fileCount":7,"integrity":"sha512-MWHcXiiOISAob1jUDCeRbN1pQJEy9BTKI7Rbxm5byduGq7h8HM7L9dfXGB093GDnpZef1Cuw7VsDMS7UglMXZA==","signatures":[{"sig":"MEQCICn0wiZGY2mYRkByQ4tqeA7Mtx1oTx1tQ3GKSRCH6gfzAiAL0xwPSBMmhnMEMIcDQSMHpY57h8lh0+eaL4PIh59mvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBnOL64kNnkkQH8U6zkrYUDrV+GdA2cpEZdWEZOs6LSBAiEA5T7frabbaTzKOkCKzxzRMOztxKdm8CVaZwsrO1wevfA="}],"unpackedSize":50435},"main":"dist/index.js","name":"@agent-context/sift","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl","aarch64-unknown-linux-musl","x86_64-pc-windows-msvc","aarch64-pc-windows-msvc"],"binaryName":"sift"},"types":"dist/index.d.ts","engines":{"node":">= 10"},"gitHead":"af355f90ecb46d42f987aeab002e8d6ab0d700c1","license":"Apache-2.0","scripts":{"demo":"npm run build:ts && tsc -p tsconfig.demo.json && node dist-demo/demo/index.js","test":"npm run build && tsc -p tsconfig.test.json && node dist-test/test/smoke.test.js && node dist-test/test/canary/canary.test.js","build":"npm run build:native && npm run build:ts","clean":"rm -rf dist dist-test dist-demo platforms","canary":"npm run build:ts && tsc -p tsconfig.test.json && node dist-test/test/canary/canary.test.js","build:ts":"tsc -p tsconfig.json","benchmark":"npm run build:ts && tsc -p tsconfig.demo.json && node dist-demo/demo/benchmark.js","build:cross":"bash ../../scripts/build-cross.sh && node ../../scripts/gen-platform-packages.mjs","build:native":"napi build --platform --release --manifest-path ../../crates/sift-node/Cargo.toml --output-dir native && rm -f native/index.d.ts","prepublishOnly":"npm run build:cross && npm run build:ts"},"version":"0.0.1","_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"homepage":"https://github.com/agents-sdk/sift#readme","keywords":["llm","context-compression","prompt-optimization","ai-agent","token-optimization","anthropic","openai","rust"],"repository":{"url":"git+https://github.com/agents-sdk/sift.git","type":"git"},"_npmVersion":"10.9.8","description":"Compress LLM tool output, reduce context tokens, and recover lossy originals from a local stash.","directories":{},"maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^26.2.0","@napi-rs/cli":"^3.8.6"},"optionalDependencies":{"@agent-context/sift-darwin-x64":"0.0.1","@agent-context/sift-darwin-arm64":"0.0.1","@agent-context/sift-linux-x64-gnu":"0.0.1","@agent-context/sift-linux-x64-musl":"0.0.1","@agent-context/sift-win32-x64-msvc":"0.0.1","@agent-context/sift-linux-arm64-gnu":"0.0.1","@agent-context/sift-linux-arm64-musl":"0.0.1","@agent-context/sift-win32-arm64-msvc":"0.0.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sift_0.0.1_1788700613234_0.02000469009001593"}}},"time":{"created":"2026-08-24T03:22:33.738Z","modified":"2026-09-06T13:16:53.510Z","0.0.1-alpha.1":"2026-08-24T03:22:34.006Z","0.0.1-alpha.2":"2026-08-24T06:26:18.112Z","0.0.1-alpha.3":"2026-08-24T07:28:22.656Z","0.0.1-alpha.4":"2026-08-24T10:25:37.150Z","0.0.1-alpha.5":"2026-08-25T07:22:23.906Z","0.0.1-alpha.6":"2026-08-27T10:45:38.557Z","0.0.1-alpha.7":"2026-09-01T11:57:08.835Z","0.0.1":"2026-09-06T13:16:53.324Z"},"license":"Apache-2.0","description":"Compress LLM tool output, reduce context tokens, and recover lossy originals from a local stash.","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"readme":"# @agent-context/sift\n\n**在每次 LLM 请求前缩小工具输出，需要时仍能找回完整原文。**\n\n`@agent-context/sift` 是 sift Rust 压缩引擎的 Node.js 包。它识别日志、搜索结果、JSON、diff、源码和重复文本，在保留关键信息的同时减少发送给模型的上下文。\n\n[English](README.md) · 简体中文 · [项目主页](../../README.zh-CN.md)\n\n### **12 个内置基准场景整体缩小 52.6%**\n\n**88,759 B → 42,037 B** · **估算节省约 14,016 tokens** · **8/8 个有损基准样例成功恢复**\n\n测试口径与完整结果见 [BENCHMARK.md](../../BENCHMARK.md)。当前状态：**Alpha**，1.0 前 API 细节可能变化。\n\n- 纯 Rust 核心（`sift`）+ napi-rs 桥\n- 支持三种请求格式（自动检测）：Anthropic `/v1/messages`、OpenAI Chat\n  Completions、OpenAI Responses API\n- 另有 `siftText`：对单条字符串（如工具输出原文）直接压缩\n- 消息内压缩 + 冻结前缀保护 + stash 可恢复，三大不变量见 [PROJECT_MAP](../../.agents/PROJECT_MAP.md)\n\n## 安装\n\n```sh\nnpm install @agent-context/sift\n```\n\n发布包支持 macOS、Linux 与 Windows 的 x64/arm64；Linux 同时提供 GNU 与 musl 变体。\n\n### Pi 与 OpenCode\n\n[Pi](https://github.com/earendil-works/pi)（`@agent-context/pi-sift`）和 [OpenCode](https://github.com/anomalyco/opencode)（`@agent-context/opencode-sift`）已有现成适配器。它们会自动压缩工具输出，并向 Agent 提供 `sift_retrieve`。安装与配置说明见 [agents-sdk/sift-plugins](https://github.com/agents-sdk/sift-plugins)。\n\n## 运行场景演示\n\n仓库内提供了覆盖 JSON 数组、pretty JSON、构建日志、搜索结果、git diff、混合命令\n输出、源代码、重复纯文本、独有内容保护、HTML 正文提取、结构化配置和表格数据的 12 个独立用例。它通过包根目录加载 `@agent-context/sift` 的公开入口，\n每个用例都会完整打印「压缩前原文」「压缩后输出」「运行指标」，并验证 stash 恢复和\n冻结前缀保护：\n\n```sh\ncd npm/core\nnpm run build:native  # 首次运行或 Rust 代码变更后执行\nnpm run demo -- --list       # 查看用例名称\nnpm run demo -- json-array   # 单独运行一个用例\nnpm run demo                 # 按顺序运行全部用例\nnpm run demo -- --save       # 运行全部并分别保存到 demo/results/\n```\n\n演示会打印每个场景压缩前后的完整内容、字节数、压缩比、节省 token 和验证结果；stash\n数据写入系统临时目录，不会使用正式的 `~/.sift/stash`。\n\n## 快速开始\n\n```ts\nimport { siftRequest, siftText, retrieve, retrieveLines } from '@agent-context/sift';\n\n// 1. 压缩（发送前）\nconst result = siftRequest(requestBody, userQuery);\n\n// 2. 把压缩后的 body 发给 LLM API\nconst response = await client.messages.create({\n  ...requestBody,\n  messages: (result.body as any).messages,\n});\n\n// 3. 如需恢复原文：从压缩文本里提取 <<stash:KEY>>，取回\nconst key = extractStashKeys(result.body)[0];\nconst original = retrieve(key); // string | null\nconst fragment = retrieveLines(key, 120, 80); // StashSlice | null\n\n// 源码无需路径也能生成可直接读取的 stash 文件分片\nconst code = siftText(fileContent, userQuery);\n// // ... 30 lines omitted from file \"/home/agent/.sift/stash/HASH\", starting at line 32\n\n// 可选真实路径用于通过扩展名稳定选择 grammar\nconst fileCode = siftText(fileContent, userQuery, 'src/services/OrderService.java');\n```\n\n## API\n\n### `createSift({ stashDir })`\n\n创建绑定到独立 stash 目录的 API 实例。该实例的 `siftRequest`、`siftText`、`retrieve` 和 `retrieveLines`\n始终使用传入的目录，不受 `SIFT_STASH_DIR` 影响；相对路径按调用 `createSift` 时的工作目录\n解析。\n\n```ts\nimport { createSift } from '@agent-context/sift';\n\nconst sift = createSift({ stashDir: '/var/lib/my-app/sift-stash' });\nconst result = sift.siftText(toolOutput);\nconst original = result.stashKey ? sift.retrieve(result.stashKey) : null;\nconst fragment = result.stashKey ? sift.retrieveLines(result.stashKey, 120, 80) : null;\n```\n\n每次调用 `createSift` 都会创建独立实例，因此同一 Node.js 进程可以同时使用多个 stash\n目录。直接导入的顶层 `siftRequest`、`siftText`、`retrieve` 和 `retrieveLines` 保持原有行为，继续使用\n`SIFT_STASH_DIR`、`~/.sift/stash`、系统临时目录这一默认优先级。\n\n### `siftRequest(body, query?)`\n\n就地压缩 body 中冻结前缀之外的**工具输出**。system/user/assistant prompt 默认保护；\n若调用方明确要压缩一段普通文本，应使用 `siftText`。\n格式自动检测（[`detectRequestFormat`](#detectrequestformatbody)）：\n\n| 格式 | 压缩候选 |\n|---|---|\n| Anthropic `/v1/messages` | 非冻结区内、且 `is_error != true` 的 tool_result `content` |\n| OpenAI Chat Completions | `role:\"tool\"` 消息的字符串 content 或 text parts |\n| OpenAI Responses API | `function_call_output` 的字符串 output 或 text parts |\n\n模型发出的结构化调用（`tool_calls`、`function_call`）不会被动。OpenAI 格式没有\n`cache_control` 前缀锚点，`frozenMessages` 恒为 0（live zone 从头开始）。\n\n- `body`：请求体对象（上述三种格式之一）\n- `query?`：当前用户 query，供相关性锚点压缩器优先保留相关行（可空）\n\n返回 `CompressResult`：\n\n| 字段 | 含义 |\n|---|---|\n| `body` | 压缩后的 messages body（压缩文本尾部带 `<<stash:KEY>>` 标记） |\n| `changed` | 是否发生实际压缩 |\n| `blocksExamined` / `blocksCompressed` / `blocksReverted` | 检查 / 压缩 / 回退的 block 数 |\n| `frozenMessages` | 冻结前缀条数（cache 锚点，未触碰） |\n| `stashStored` | 写入 stash store 的原文条数 |\n| `tokensSaved` | 估算节省的 token 数 |\n\n### `retrieve(key)`\n\n按 `<<stash:KEY>>` 里的 key 取回压缩时卸载的原文，返回 `string | null`。\n`null` 表示 key 不存在或已过期（见「限制」）。\n\n### `retrieveLines(key, startLine, lineCount)`\n\n按 stash 原文的行号读取连续分片，返回\n`{ text, startLine, lineCount, totalLines, hasMore } | null`。`startLine` 从 1 开始，\n`lineCount` 必须在 1–1000 之间；返回的 `text` 保留命中范围内的原始 LF / CRLF。\n越过原文末尾时返回实际可用行数，起始行越界、key 不存在或已过期时返回 `null`。\n\n使用落盘 stash 时，源码、搜索结果、日志、Git Diff 和显式保守模式整行纯文本的实际省略点会就地输出\n`[... 30 lines omitted from file \"/home/agent/.sift/stash/HASH\", starting at line 32]`，代码使用注释形式：\n`// ... 30 lines omitted from file \"/home/agent/.sift/stash/HASH\", starting at line 32`。\n路径是规范化后的绝对路径，`starting at line` 是 1-based 起始行，前面的数字是连续省略行数；\nCoding Agent 可以直接把它们换成 `read_file` 等工具的起始行和读取数量。提示不要求理解 stash\nhash 或调用 Sift API。搜索结果的源码行号和 diff 的 hunk 行号不是这里的 stash 行号。\n落盘模式有损阶段直接使用原文视图，避免沿用无损重排后的坐标；可验证的混合内容整行分段\n会累加其在完整 stash 中的行偏移。过短空隙若不值得添加提示则原样保留。\n日志的首个非空行、可识别的命令回显（如 `$ cargo build`、shell tracing、npm script、PowerShell 提示符）\n及显式续行强制原样可见，不参与去重、模板化或普通日志行数预算竞争；不会仅因可从 stash 恢复就省略命令。\nJSON 结构采样、行内片段和 tag protect 改变映射的情况暂不标注；内存或远程 stash 后端也不伪造本地路径。\n\n### `siftText(text, query?, sourcePath?)`\n\n压缩单个字符串（不包请求体），适合在把工具输出原文送进任意 API / 存储之前处理。\n行片段提示不依赖 `sourcePath`：有损管线从 `FileStashStore` 取得完整原文的绝对文件路径，并在\n省略点写明省略行数和 1-based 起始行，不把同一行内的句子计作多行。\n纯文本默认按句子或段落切分，综合 query 的 BM25 相关性、位置、数字/错误/标识符等显著信息打分，\n并抑制近重复片段。输出只抽取原文片段，不生成摘要；被省略的内容属于有损压缩，完整原文保存在 stash 中。\n默认句子抽取无法可靠映射成原始行范围，因此不伪造行片段提示，只通过末尾 stash 标记恢复。\n可选的 `sourcePath` 仅用于通过扩展名直接选择对应的\ntree-sitter grammar，支持 Python、JavaScript、TypeScript、Go、Rust、Java、C、C++。长函数会按引用数、\nfan-out、公开约定和 query 相关性分配最多 5 行预算内的完整 AST 语句，Python docstring 默认保留首行，\n再折叠剩余函数体，不会截断循环或多行表达式；因此\n只有一个长函数、特征行占比很低的文件也能稳定进入源码压缩。\n混合文本中的 fenced code 和连续 `file:line:` 搜索记录会优先独立分段，交给各自压缩器后保留 Markdown 围栏与前后正文重组。\n返回 `{ text, changed, lossy, stashKey, tokensSaved }`：有损时 `text` 尾部带\n`<<stash:KEY>>` 标记、`stashKey` 非空，可用 `retrieve(stashKey)` 取回原文；无损压缩\n（如 JSON minify）时 `lossy` 为 `false` 且无标记。小于 512 字节的输入直接透传。\n\n### `detectRequestFormat(body)`\n\n返回 `'anthropic' | 'chat_completions' | 'responses' | 'unknown'`。\n无法判别时（如全部 content 为纯字符串）默认按 Anthropic 处理；这类请求没有明确工具\n输出候选，因此 `siftRequest` 会安全透传。需要压缩单条字符串时使用 `siftText`。\n\n### `detectContentType(text)`\n\n返回内容类型：`json_array | build_output | search_results | git_diff | source_code | plain_text | html | structured_config | tabular`，便于诊断。\n\n## 什么时候调用 `siftRequest`\n\n一句话：**在任何 LLM 客户端把请求发给 API 之前，对 messages 做一次拦截压缩**。\n\n收益最大的场景，是消息里含以下**大型工具输出**（这几类有专门压缩器）：\n\n| 内容 | 示例 | 压缩器 |\n|---|---|---|\n| JSON 对象与数组 | `ls`/API 返回的对象列表、数据库查询结果 | 同构记录转 CSV-schema，异构记录可分桶；任意深度的数组/字符串化 JSON 递归紧凑化，>256 B opaque 值独立 stash；schema 保留全部行 |\n| 构建/测试日志 | `pytest`/`npm`/`cargo`/`jest` 输出 | log_compressor（错误/堆栈/摘要保留） |\n| grep/ripgrep 结果 | 代码搜索结果 | search_compressor（按文件/分数抽稀） |\n| git diff | `git diff` / PR diff | diff_compressor（hunk 采样） |\n| HTML | 网页抓取结果 | html_extractor（正文转 Markdown，移除页面噪声） |\n| YAML/TOML/INI | 部署清单、项目配置、服务配置 | config_compressor（保留全部键值，只卸载安全注释和空行） |\n| CSV/TSV/Markdown 表格 | 查询结果、指标列表、清单 | tabular_compressor（严格解析列后桥接 CSV-schema；采用时保留全部记录） |\n\nCSV-schema 会先声明一次行数和字段类型，例如 `[200]{id:int,status:string}`，随后输出普通 CSV 行。异构数组可用 `__buckets:type` 分别声明 schema；对象数组单元格和字符串化 JSON 数组会递归变成紧凑 table 对象。长 opaque 字符串、HTML 与 base64 单元格使用独立可恢复 stash marker。\n\n确实需要采样时，JSON 数组、搜索结果和日志共享信息饱和预算：重复内容保留更少代表，高多样性内容自动保留更多。JSON 还会按“最近/最早”类 query 调整锚点方向，并优先保留信息密集或 BM25 高相关记录。\n\n适合的接入位置：\n\n- **代理 / 中间件**：放在 LLM 客户端与 API 之间对出站请求统一压缩。\n- **应用层发送前**：直接 SDK 调用前，把 `messages` 传给 `siftRequest`。\n- **边缘函数 / 无服务器**：发送前压缩，降低首字节与计费 token。\n\n**不需要调用**的情况：\n\n- 消息都很小：单个文本块 < 512 字节会自动跳过（`MIN_BLOCK_BYTES`）。\n- HTML、纯文本和源代码已有各自压缩器，但 `siftRequest` 仍只会对工具输出候选启用它们；\n  普通文本请显式调用 `siftText`。\n- stash 目录不可创建或原文无法落盘：有损结果会回退原文，不会留下不可恢复的压缩内容。\n\n## 有损压缩与恢复（stash）\n\n压缩是有损的（丢弃了部分行/样本），但原文会被卸载进 stash store，压缩文本尾部追加\n`<<stash:KEY>>` 标记，其中 `KEY` 是原文的 BLAKE3 哈希（24 hex）。\n\n```\n原文 ──compress──▶ 压缩文本 + <<stash:KEY>>        （发给 API，省 token）\n                        │\n                        └── store.put(KEY, 原文)   （默认落盘）\n\n需要完整原文时：从消息里找 <<stash:KEY>> → retrieve(KEY) → 原文\n只需局部时：根据省略提示中的 stash 文件路径、起始行和行数 → 直接分片读文件\n```\n\n典型恢复流程：模型看到压缩内容后说「我需要看完整数据」，应用从最近的压缩消息里\n提取 `<<stash:KEY>>`，用 `retrieve` 取回全文或用 `retrieveLines` 取回分片，再补发给模型。\n若 Agent 与 Sift 共享文件系统，则可直接读取提示里的 stash 文件，不必接入 Sift API。\nSift 当前不会自动向模型注入 retrieve tool；需要从 stash 自主取回时，调用方必须显式提供相应工具。\n\n提取 key 的辅助：\n\n```ts\nconst STASH_RE = /<<stash:([0-9a-f]+)>>/g;\nfunction extractStashKeys(body: any): string[] {\n  const text = JSON.stringify(body);\n  return [...text.matchAll(STASH_RE)].map((m) => m[1]);\n}\n```\n\n## 与 prompt cache 的关系（cache 安全）\n\n`siftRequest` 只改冻结前缀之后的工具输出候选。\n`cache_control` 标记以下的**冻结前缀字节不动**，因此不会破坏 prompt cache 的命中。\n`result.frozenMessages` 报告了被保护的冻结条数。\n\n## 限制\n\n- **stash store 是落盘文件**（`FileStashStore`）：每个 key 一个文件，默认目录\n  `~/.sift/stash`（环境变量 `SIFT_STASH_DIR` 可覆盖），TTL 1800 秒（按文件\n  mtime 判定，`get` 时惰性删除过期项）；也可以通过 `createSift({ stashDir })` 为实例指定\n  独立目录。单机重启不丢、同机多进程互见。\n  **多实例 / 集群**需把该目录挂到共享文件系统（NFS / 对象存储），或改用外部\n  store 后端（Redis 等，`StashStore` trait 已抽象好），否则不同机器取不到对方的原文。\n- 压缩的是**已解析的 JSON 对象**，不是原始 HTTP 字节。若在代理层做「字节级 cache SHA\n  不变」的区间手术，需在更高层处理（见 PROJECT_MAP 待办）。\n- 当前 `tokensSaved` 用字节/4 × 1.2 粗估，仅作参考。\n","readmeFilename":"README.zh-CN.md","homepage":"https://github.com/agents-sdk/sift#readme","keywords":["llm","context-compression","prompt-optimization","ai-agent","token-optimization","anthropic","openai","rust"],"repository":{"url":"git+https://github.com/agents-sdk/sift.git","type":"git"},"bugs":{"url":"https://github.com/agents-sdk/sift/issues"}}