{"_id":"@amemhq/core","_rev":"7-eb3a52bb3814de80d5806c2d333d2b4a","name":"@amemhq/core","dist-tags":{"latest":"2.1.2"},"versions":{"1.0.0":{"name":"@amemhq/core","version":"1.0.0","keywords":["a-mem","agentic-memory","agent-memory","memory","qdrant","vector-memory","llm-memory","transformers","embeddings"],"license":"MIT","_id":"@amemhq/core@1.0.0","maintainers":[{"name":"heichaowo","email":"npmjs@bgm.cat"}],"homepage":"https://amem.owo.lc","bugs":{"url":"https://github.com/amemhq/amem/issues"},"dist":{"shasum":"5da2fe45f64838eb5fcbefa5b7b9263a2fc925d9","tarball":"https://registry.npmjs.org/@amemhq/core/-/core-1.0.0.tgz","fileCount":9,"integrity":"sha512-GaSaIvrw963BdpNB0rGhC/P+Epc0wvZxKJbtDHIIMJlOdczRccpOjY8xARXTfIl4rnIPym5X8ih3zONFUR4xFQ==","signatures":[{"sig":"MEUCIANb5SZFszFgMphK8RzjPxJ5Kxqo/so0uWJEHwUllwa0AiEA54Hn3+/H7F1HbSwT/SyrHGjY/yZFG/gHgG7Z9wSSjGw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":681445},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","test:unit":"vitest run test/unit","typecheck":"tsc --noEmit","test:integration":"vitest run test/integration --passWithNoTests"},"_npmUser":{"name":"heichaowo","email":"npmjs@bgm.cat"},"repository":{"url":"git+https://github.com/amemhq/amem.git","type":"git","directory":"packages/amem-core"},"description":"The agentic memory engine — notes that construct, link, and evolve like a Zettelkasten, on Qdrant + Transformers.js. No Python. Framework-agnostic.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"uuid":"^14.0.0","openai":"^6.48.0","@node-rs/jieba":"^2.0.1","@anthropic-ai/sdk":"^0.112.1","@qdrant/js-client-rest":"^1.18.0","@huggingface/transformers":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.1.1","@types/uuid":"^11.0.0","typescript-eslint":"^8.64.0"},"optionalDependencies":{"@node-rs/jieba-darwin-arm64":"^2.0.1","@node-rs/jieba-linux-x64-gnu":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.0_1785072259975_0.2540243458235565","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@amemhq/core","version":"1.0.1","keywords":["a-mem","agentic-memory","agent-memory","memory","qdrant","vector-memory","llm-memory","transformers","embeddings"],"license":"MIT","_id":"@amemhq/core@1.0.1","maintainers":[{"name":"heichaowo","email":"npmjs@bgm.cat"}],"homepage":"https://amem.owo.lc","bugs":{"url":"https://github.com/amemhq/amem/issues"},"dist":{"shasum":"92d0740d1c01634f09157ac440b73727af51cff5","tarball":"https://registry.npmjs.org/@amemhq/core/-/core-1.0.1.tgz","fileCount":9,"integrity":"sha512-Fpezh1YigqkbtJ+Wj3CGSgcwNTlLBZ/Da4UNKSlJ+df/4JXBUrMm+G/0Q9EX4fyGkRDyckPHltgMI+Jbhk7/JA==","signatures":[{"sig":"MEUCIQDJ8iCHZh1nlTenLatjVNPZpp68lLg84jj+c+A8F0cc2wIgCDK90Mgng0A9oV7JcbHLr+y///fY1uxa1Pu0SImRcxE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amemhq%2fcore@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":689934},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","test:unit":"vitest run test/unit","typecheck":"tsc --noEmit","test:integration":"vitest run test/integration --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4d11ca56-e6e8-4f9a-acdc-93dc13336038"}},"repository":{"url":"git+https://github.com/amemhq/amem.git","type":"git","directory":"packages/amem-core"},"description":"The agentic memory engine — notes that construct, link, and evolve like a Zettelkasten, on Qdrant + Transformers.js. No Python. Framework-agnostic.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"uuid":"^14.0.0","openai":"^6.48.0","@node-rs/jieba":"^2.0.1","@anthropic-ai/sdk":"^0.112.5","@qdrant/js-client-rest":"^1.18.0","@huggingface/transformers":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.1.1","@types/uuid":"^11.0.0","typescript-eslint":"^8.64.0"},"optionalDependencies":{"@node-rs/jieba-darwin-arm64":"^2.0.1","@node-rs/jieba-linux-x64-gnu":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.1_1785123339470_0.5753798246987958","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@amemhq/core","version":"1.1.0","keywords":["a-mem","agentic-memory","agent-memory","memory","qdrant","vector-memory","llm-memory","transformers","embeddings"],"license":"MIT","_id":"@amemhq/core@1.1.0","maintainers":[{"name":"heichaowo","email":"npmjs@bgm.cat"}],"homepage":"https://amem.owo.lc","bugs":{"url":"https://github.com/amemhq/amem/issues"},"bin":{"amem-migrate":"./dist/cli-migrate.js"},"dist":{"shasum":"a4d4e1a48fcd81c78be431188160cbbfb358a8f3","tarball":"https://registry.npmjs.org/@amemhq/core/-/core-1.1.0.tgz","fileCount":17,"integrity":"sha512-fODBV9Kj9e7Xwrq0QaYsXAoagT2ZcltYqIL7Sic+8Llk7SGJeexPns+EOt9w6HfZExoLOp8NfEDbyXRax3YsXA==","signatures":[{"sig":"MEYCIQDDGD3hJq1WH0Gzz5so/0MSv8EXIoyc+C7F2GM2IZIb2wIhAMW94fU5/LWmLCWsp4qFXC1LoJEtlYMjghqBfAZNinSd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amemhq%2fcore@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":936285},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","test:unit":"vitest run test/unit","typecheck":"tsc --noEmit","test:integration":"vitest run test/integration --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4d11ca56-e6e8-4f9a-acdc-93dc13336038"}},"repository":{"url":"git+https://github.com/amemhq/amem.git","type":"git","directory":"packages/amem-core"},"description":"The agentic memory engine — notes that construct, link, and evolve like a Zettelkasten, on Qdrant + Transformers.js. No Python. Framework-agnostic.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"uuid":"^14.0.0","openai":"^6.48.0","@node-rs/jieba":"^2.0.1","@anthropic-ai/sdk":"^0.112.5","@qdrant/js-client-rest":"^1.18.0","@huggingface/transformers":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.1.1","@types/uuid":"^11.0.0","typescript-eslint":"^8.64.0"},"optionalDependencies":{"@node-rs/jieba-darwin-arm64":"^2.0.1","@node-rs/jieba-linux-x64-gnu":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.0_1785297618517_0.3479781278802718","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@amemhq/core","version":"2.0.0","keywords":["a-mem","agentic-memory","agent-memory","memory","qdrant","vector-memory","llm-memory","transformers","embeddings"],"license":"MIT","_id":"@amemhq/core@2.0.0","maintainers":[{"name":"heichaowo","email":"npmjs@bgm.cat"}],"homepage":"https://amem.owo.lc","bugs":{"url":"https://github.com/amemhq/amem/issues"},"bin":{"amem-migrate":"./dist/cli-migrate.js"},"dist":{"shasum":"ae5f4e19a0fc76b5bfc0d9973778a7631d9cf831","tarball":"https://registry.npmjs.org/@amemhq/core/-/core-2.0.0.tgz","fileCount":17,"integrity":"sha512-ZELKOfAseS2sHx3dm7wGka4rrXOaYcWydN1hNaxGwHY24DSmbrESAvzQllgT3ovNWd78A0ECXmg/mw8Vp1BA4g==","signatures":[{"sig":"MEQCIF/+ddkXGdILyD6RNiNU7Y/lnLoow1X8e7DIbyZkOUD5AiAq1m/trHSOA44ZcNGNAsvF1hrs+GU0TJpIDAGZOMSWYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amemhq%2fcore@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1042686},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","test:unit":"vitest run test/unit","typecheck":"tsc --noEmit","test:integration":"vitest run test/integration --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4d11ca56-e6e8-4f9a-acdc-93dc13336038"}},"repository":{"url":"git+https://github.com/amemhq/amem.git","type":"git","directory":"packages/amem-core"},"description":"The agentic memory engine — notes that construct, link, and evolve like a Zettelkasten, on Qdrant + Transformers.js. No Python. Framework-agnostic.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"uuid":"^14.0.0","openai":"^6.48.0","@node-rs/jieba":"^2.0.1","@anthropic-ai/sdk":"^0.112.5","@qdrant/js-client-rest":"^1.18.0","@huggingface/transformers":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.1.1","@types/uuid":"^11.0.0","typescript-eslint":"^8.64.0"},"optionalDependencies":{"@node-rs/jieba-darwin-arm64":"^2.0.1","@node-rs/jieba-linux-x64-gnu":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_2.0.0_1785491632462_0.5538136955001338","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@amemhq/core","version":"2.1.0","keywords":["a-mem","agentic-memory","agent-memory","memory","qdrant","vector-memory","llm-memory","transformers","embeddings"],"license":"MIT","_id":"@amemhq/core@2.1.0","maintainers":[{"name":"heichaowo","email":"npmjs@bgm.cat"}],"homepage":"https://amem.owo.lc","bugs":{"url":"https://github.com/amemhq/amem/issues"},"bin":{"amem-migrate":"./dist/cli-migrate.js"},"dist":{"shasum":"6bb3bfdbbbddcdd0c74b5f4a5bfe4f78c88b8b0d","tarball":"https://registry.npmjs.org/@amemhq/core/-/core-2.1.0.tgz","fileCount":17,"integrity":"sha512-tJSCAmVvZaW5g1plFCZ19nI+UcHnb8losfPgzfoWjiNOmh9sO+Y8HYqxhynIMnRPjW7DAVknkEACHfm6VhP8bQ==","signatures":[{"sig":"MEUCIDZ/YMBxdlQvsyKVxkmm5QeKFLqLpvH4FvX5oAdUShVdAiEAs72s7jZMzythtBbv3kOt277AdM7hDVjspplPhJGDaRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amemhq%2fcore@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1069608},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","test:unit":"vitest run test/unit","typecheck":"tsc --noEmit","test:integration":"vitest run test/integration --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4d11ca56-e6e8-4f9a-acdc-93dc13336038"}},"repository":{"url":"git+https://github.com/amemhq/amem.git","type":"git","directory":"packages/amem-core"},"description":"The agentic memory engine — notes that construct, link, and evolve like a Zettelkasten, on Qdrant + Transformers.js. No Python. Framework-agnostic.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"uuid":"^14.0.0","openai":"^6.48.0","@node-rs/jieba":"^2.0.1","@anthropic-ai/sdk":"^0.112.5","@qdrant/js-client-rest":"^1.18.0","@huggingface/transformers":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.1.1","@types/uuid":"^11.0.0","typescript-eslint":"^8.64.0"},"optionalDependencies":{"@node-rs/jieba-darwin-arm64":"^2.0.1","@node-rs/jieba-linux-x64-gnu":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_2.1.0_1785572083623_0.8713173322070518","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@amemhq/core","version":"2.1.1","keywords":["a-mem","agentic-memory","agent-memory","memory","qdrant","vector-memory","llm-memory","transformers","embeddings"],"license":"MIT","_id":"@amemhq/core@2.1.1","maintainers":[{"name":"heichaowo","email":"npmjs@bgm.cat"}],"homepage":"https://amem.owo.lc","bugs":{"url":"https://github.com/amemhq/amem/issues"},"bin":{"amem-migrate":"./dist/cli-migrate.js"},"dist":{"shasum":"eaa8de754f08618b926744aca3d645859d98fc2a","tarball":"https://registry.npmjs.org/@amemhq/core/-/core-2.1.1.tgz","fileCount":17,"integrity":"sha512-EVRY8eFieFPlujA0srSdBOL6po+PzuKu5rOK/eKPyCY+g1rt0443k/+eAENS8zQVbVrvMCPKkqV5augRW9clBg==","signatures":[{"sig":"MEQCIEt79pB0/dixPbVt0wJ31o8iv0mfcILt+wwnIRi01MldAiA3RMPsN+9mKR7NZDW7JERkX6CdP5cCZKmlXIxiE15ZjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amemhq%2fcore@2.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1071806},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","test:unit":"vitest run test/unit","typecheck":"tsc --noEmit","test:integration":"vitest run test/integration --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4d11ca56-e6e8-4f9a-acdc-93dc13336038"}},"repository":{"url":"git+https://github.com/amemhq/amem.git","type":"git","directory":"packages/amem-core"},"description":"The agentic memory engine — notes that construct, link, and evolve like a Zettelkasten, on Qdrant + Transformers.js. No Python. Framework-agnostic.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"uuid":"^14.0.0","openai":"^6.48.0","@node-rs/jieba":"^2.0.1","@anthropic-ai/sdk":"^0.112.5","@qdrant/js-client-rest":"^1.18.0","@huggingface/transformers":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.1.1","typescript-eslint":"^8.64.0"},"optionalDependencies":{"@node-rs/jieba-darwin-arm64":"^2.0.1","@node-rs/jieba-linux-x64-gnu":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/core_2.1.1_1785580868140_0.786343404899241","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@amemhq/core","version":"2.1.2","description":"The agentic memory engine — notes that construct, link, and evolve like a Zettelkasten, on Qdrant + Transformers.js. No Python. Framework-agnostic.","license":"MIT","homepage":"https://amem.owo.lc","bugs":{"url":"https://github.com/amemhq/amem/issues"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"bin":{"amem-migrate":"./dist/cli-migrate.js"},"dependencies":{"@anthropic-ai/sdk":"^0.122.0","@huggingface/transformers":"^4.2.0","@node-rs/jieba":"^2.0.1","@qdrant/js-client-rest":"^1.18.0","openai":"^6.48.0","uuid":"^14.0.0"},"devDependencies":{"@eslint/js":"^10.0.1","@types/node":"^26.1.1","eslint":"^10.7.0","tsup":"^8.4.0","typescript":"^6.0.3","typescript-eslint":"^8.64.0","vitest":"^4.1.10"},"optionalDependencies":{"@node-rs/jieba-darwin-arm64":"^2.0.1","@node-rs/jieba-linux-x64-gnu":"^2.0.1"},"keywords":["a-mem","agentic-memory","agent-memory","memory","qdrant","vector-memory","llm-memory","transformers","embeddings"],"repository":{"type":"git","url":"git+https://github.com/amemhq/amem.git","directory":"packages/amem-core"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","lint":"eslint src","test":"vitest run","test:unit":"vitest run test/unit","test:integration":"vitest run test/integration --passWithNoTests"},"_nodeVersion":"24.19.0","_id":"@amemhq/core@2.1.2","dist":{"integrity":"sha512-9uDAuC7ZqXqrgSgrb33ZCuKeKeW6MOx/Eu23Gn0I2RNv9CaRixGEJbQj+Tm8d5GDuIEaOVhOj8r7zvra4i611w==","shasum":"4693364d438f1ffc938ed20315ef69b0bb052457","tarball":"https://registry.npmjs.org/@amemhq/core/-/core-2.1.2.tgz","fileCount":17,"unpackedSize":1088373,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amemhq%2fcore@2.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB3DRn1TQJfBq9b1jsADZaKQN13V3SUNUPhxso7YVAeLAiAYkZz5BzhB12/3k06DZLb1yFLFaG34b+ZLsGadi6COlg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4d11ca56-e6e8-4f9a-acdc-93dc13336038"}},"directories":{},"maintainers":[{"name":"heichaowo","email":"npmjs@bgm.cat"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_2.1.2_1788500149037_0.24957387683134047"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-26T13:24:19.803Z","modified":"2026-09-04T05:35:49.541Z","1.0.0":"2026-07-26T13:24:20.130Z","1.0.1":"2026-07-27T03:35:39.635Z","1.1.0":"2026-07-29T04:00:18.676Z","2.0.0":"2026-07-31T09:53:52.643Z","2.1.0":"2026-08-01T08:14:43.851Z","2.1.1":"2026-08-01T10:41:08.277Z","2.1.2":"2026-09-04T05:35:49.198Z"},"bugs":{"url":"https://github.com/amemhq/amem/issues"},"license":"MIT","homepage":"https://amem.owo.lc","keywords":["a-mem","agentic-memory","agent-memory","memory","qdrant","vector-memory","llm-memory","transformers","embeddings"],"repository":{"type":"git","url":"git+https://github.com/amemhq/amem.git","directory":"packages/amem-core"},"description":"The agentic memory engine — notes that construct, link, and evolve like a Zettelkasten, on Qdrant + Transformers.js. No Python. Framework-agnostic.","maintainers":[{"name":"heichaowo","email":"npmjs@bgm.cat"}],"readme":"# @amemhq/core\n\nFramework-agnostic **A-MEM agentic memory engine** — memories that **evolve**, not just accumulate. Qdrant + local Transformers.js + LLM, **no Python required**.\n\n```bash\nnpm i @amemhq/core\n```\n\nWe extracted this package from [`openclaw-amem`](https://github.com/amemhq/amem/tree/main/packages/openclaw-amem) so that any host can share one memory engine: an OpenClaw plugin, a standalone service ([`amem-api`](../amem-api)), or a game agent. It is part of the [amem monorepo](../../).\n\n> Based on _A-MEM: Agentic Memory for LLM Agents_ ([arXiv:2502.12110](https://arxiv.org/abs/2502.12110), NeurIPS 2025). For the original research implementation, see [agiresearch/A-MEM](https://github.com/agiresearch/A-MEM).\n\n## What is A-MEM?\n\nUnlike a flat vector store, A-MEM maintains memory as a living, self-evolving semantic graph. On every write:\n\n1. **Note Construction** — an LLM extracts keywords, tags, and a context summary, categorizes the note, and classifies it as `memory` (episodic) or `knowledge` (durable). For knowledge notes, the LLM extracts 1–5 `topics`.\n2. **Link Generation** — the engine retrieves the top-6 candidates. The LLM judges whether to link them bidirectionally (similarity > 0.3).\n3. **Memory Evolution** — the engine evolves the attributes of up to 3 linked notes from the new context. This can trigger further links.\n4. **Hybrid Retrieval** — the engine fuses dense vectors (Transformers.js `bge-m3`, 1024-dim) and BM25 via Reciprocal Rank Fusion (RRF). Retrieval heat boosts the result.\n5. **2-hop BFS Graph Expansion** — after the RRF top-K, BFS walks the link graph up to 2 hops and admits up to 8 graph-connected notes that pass an embedding relevance gate (cos-sim ≥ 0.25). This is the key advantage over flat vector systems.\n\n## Features\n\n- 🔄 **Dynamic memory network** (Zettelkasten-inspired) — notes are graph nodes with bidirectional links, not flat rows.\n- 🧬 **Evolution & strengthening** — linked notes update context/tags/embeddings when new details arrive. The `evolution_history` is a full audit trail.\n- 🚦 **LLM CRUD gate** — the LLM analyzes a user↔assistant exchange and decides `NEW` / `UPDATE` / `DELETE` / `NONE` to keep memory clean.\n- 🧹 **Same-day merge + daily consolidation** — the engine merges semantic duplicates (≥ 0.80 same-day, ≥ 0.75 in the 02:30 sweep) and **cascades link references** to preserve graph topology.\n- ⏳ **Temporal soft-delete** — the engine marks outdated and conflicting notes `is_active: false` (zero-migration Qdrant filter) and excludes them from search.\n- 🔥 **Heat tracking with time decay** — `retrieval_count` + `last_accessed` give a logarithmic boost. Age dampens the boost so stale notes do not permanently outrank fresh ones:\n\n  ```\n  Final Score = RRF Score × (1 + 0.05 × ln(1 + retrieval_count) / (age_days + 1))\n  ```\n\n- 🔍 **2-hop graph traversal with relevance gate** — BFS walks from anchors and admits only nodes with cos-sim ≥ 0.25 to the query.\n- 🀄 **Chinese-optimized BM25** — [Jieba](https://github.com/fxsjy/jieba) (`@node-rs/jieba`) provides word segmentation for Chinese. Whitespace segmentation is the fallback elsewhere. Japanese and Korean get no lexical tokens, but dense retrieval still covers them.\n- 🧠 **Knowledge vs episodic** — `note_type` separates durable `knowledge` (skips consolidation-merge + time-decay) from `memory`. The `topics` tags and `topicsFilter` enable subject-level recall.\n- 🔐 **Multi-agent isolation** — every note has explicit `owner` / `readers` / `writers` fields. Mode A uses a shared collection filtered by `agent_id`. Mode B uses a dedicated collection.\n- 📊 **Quality controls** — the write-time gate rejects content shorter than 10 characters and flags ephemeral notes. `scanLowQuality` finds too-short, expired, and conflicting notes.\n\n## Architecture\n\n```\nhost (OpenClaw plugin / amem-api / game agent)\n     │  addMemory / searchMemory / consolidate ...\n     ▼\n  @amemhq/core (TypeScript)\n     ├── LLM (Anthropic)        note construction · link judgment · CRUD · evolution\n     ├── Transformers.js (ONNX) local embeddings + Jieba BM25\n     └── Qdrant :6333           vector store · owner/readers/writers · agent_id isolation\n```\n\n## Memory Evolution\n\nWhen a new note is borderline-similar to an existing one (cosine 0.72–0.85), @amemhq/core routes it through an **LLM evolution judgment** instead of naive dedup. The LLM classifies the relationship:\n\n| Type | Meaning | Action |\n| --- | --- | --- |\n| **EVOLVE** | New info deepens/updates the old note | Old content updated, `evolution_history` appended, new note absorbed |\n| **CONFLICT** | Old and new contradict | Both kept, both marked `conflict: true` |\n| **EXPAND** | New info complements the old | Content merged into old note, history appended, new note absorbed |\n| **NEW** | Unrelated | Both kept as-is |\n\nMemories **evolve** rather than being silently overwritten. The `evolution_history` is a full audit trail. (Taxonomy per the SSGM framework, arXiv:2603.11768.)\n\n## Quality Scoring\n\n- **Write-time gate** (`checkQuality`) — the gate rejects content shorter than 10 chars. Temporal signal words (`待跑`, `等确认`, `昨日`, `明天完成`) flag the note `ephemeral: true`.\n- **Periodic scan** (`scanLowQuality` / `generateReviewBatch`) — flags `too_short`, `expired_ephemeral` (> 7 days), and `pending_conflict`. It patches `low_quality: true` and emits an Obsidian-compatible review batch.\n\n## Multi-Agent Isolation\n\nEvery `MemoryNote` carries access fields:\n\n```ts\n{ owner: 'main', readers: ['main'], writers: ['main'] } // readers: ['*'] = shared with all agents\n```\n\n- **Mode A** (default) — one shared Qdrant collection, isolated by `agent_id` at query time. Setting `agent_id=\"shared\"` (explicit, auditable) publishes a note to all agents.\n- **Mode B** — a dedicated collection per agent for full physical isolation.\n\nIsolation is the default. Sharing is an explicit exception (per arXiv:2604.16548). Consolidation runs per-agent scope.\n\n## Usage\n\n```ts\nimport { configure, addMemory, searchMemory, createStorageContext } from '@amemhq/core'\n\nconfigure({ dataDir: '~/.myapp' }) // evo counter + consolidation logs (default ~/.amem, or AMEM_DATA_DIR)\n\nconst storageCtx = createStorageContext(/* collection */ undefined, /* modeBIsolated */ false)\nawait addMemory('The player prefers building with oak.', 'game-agent', { storageCtx })\nconst hits = await searchMemory('what does the player like to build with?', 5, 'game-agent', { storageCtx })\n```\n\n## Requirements\n\n- Node.js 24 (18+ works)\n- [Qdrant](https://qdrant.tech) on `:6333`\n- An LLM for note, link, and evolution calls — `ANTHROPIC_API_KEY` is the default. To use any OpenAI-compatible endpoint (OpenAI, DeepSeek, OpenRouter, Ollama, vLLM…), set `AMEM_LLM_PROVIDER=openai` with `AMEM_LLM_BASE_URL` and `AMEM_LLM_API_KEY`.\n\n## References & Citation\n\n| Reference | Role |\n| --- | --- |\n| Xu et al., _A-MEM: Agentic Memory for LLM Agents_, NeurIPS 2025 · [arXiv:2502.12110](https://arxiv.org/abs/2502.12110) | Core architecture |\n| Cormack et al., _Reciprocal Rank Fusion…_, SIGIR 2009 | RRF fusion of BM25 + dense |\n| Robertson & Zaragoza, _The Probabilistic Relevance Framework: BM25 and Beyond_, 2009 | BM25 ranking (k1=1.5, b=0.75) |\n| _Governing Evolving Memory in LLM Agents: SSGM_, arXiv:2603.11768, 2026 | Evolution taxonomy (EVOLVE/CONFLICT/EXPAND/NEW) |\n| _Security of Long-Term Memory in LLM Agents_, arXiv:2604.16548, 2026 | Isolation-by-default; explicit sharing |\n| Chhikara et al., _Mem0…_, ECAI 2025 · [arXiv:2504.19413](https://arxiv.org/abs/2504.19413) | Scope isolation; amem's explicit shared marker |\n\n```bibtex\n@inproceedings{xu2025amem,\n  title={A-Mem: Agentic Memory for LLM Agents},\n  author={Xu, Wujiang and Liang, Zujie and Mei, Kai and Gao, Hang and Tan, Juntao and Zhang, Yongfeng},\n  booktitle={Advances in Neural Information Processing Systems (NeurIPS)},\n  year={2025}\n}\n```\n\n## License\n\nMIT © heichaowo\n","readmeFilename":""}