{"_id":"@atomicmemory/core","_rev":"11-808a916eda0272fbc54d39d2019395db","name":"@atomicmemory/core","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@atomicmemory/core","version":"1.0.0","keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"license":"Apache-2.0","_id":"@atomicmemory/core@1.0.0","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory-core","bugs":{"url":"https://github.com/atomicstrata/atomicmemory-core/issues"},"bin":{"atomicmemory-core":"dist/bin.js"},"dist":{"shasum":"06285d1570d8d0186e68f0e11501d8eff5cf9f86","tarball":"https://registry.npmjs.org/@atomicmemory/core/-/core-1.0.0.tgz","fileCount":589,"integrity":"sha512-cyqw/NZ1pwWp95czstGcJMha4QgOUG5nILpPi5GvTYWV3LblxVC+OhHYAPGIlU0FfZ8pmST4x+hSn860x/9+4A==","signatures":[{"sig":"MEUCIQDAfoeDnEfak+Z5Xb/BfLFlLxdmKri9cpqvhrKZCZs2mwIgNGnC/OcxZVRrdb3NWzbnk/zf1pj5Mm0edFnbpPIRYHo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3805468},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./db/*":{"types":"./dist/db/*.d.ts","import":"./dist/db/*.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js"},"./services/*":{"types":"./dist/services/*.d.ts","import":"./dist/services/*.js"},"./openapi.json":"./openapi.json","./openapi.yaml":"./openapi.yaml"},"gitHead":"22217fc197d30339d67fc971eae42b874394c702","scripts":{"dev":"dotenv -e .env -- tsx watch src/server.ts","test":"dotenv -e .env.test -- vitest run --reporter verbose","build":"rm -rf dist && tsc -p tsconfig.build.json && cp src/db/schema.sql dist/db/schema.sql","start":"dotenv -e .env -- tsx src/server.ts","migrate":"dotenv -e .env -- tsx src/db/migrate.ts","prepare":"husky || true","test:watch":"dotenv -e .env.test -- vitest --reporter verbose","test:schema":"tests/schema/run-schemathesis.sh","migrate:test":"dotenv -e .env.test -- tsx src/db/migrate.ts","check:openapi":"npm run generate:openapi && git diff --exit-code openapi.yaml openapi.json","prepublishOnly":"npm run generate:openapi && npm run build","test:deployment":"vitest run src/__tests__/deployment-config.test.ts --reporter verbose","generate:openapi":"tsx scripts/generate-openapi.ts","test:docker-smoke":"./scripts/docker-smoke-test.sh"},"_npmUser":{"name":"atomicstrata","email":"services@atomicstrata.ai"},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory-core.git","type":"git"},"_npmVersion":"11.14.1","description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"pg":"^8.18.0","tsx":"^4.21.0","zod":"^4.3.6","viem":"^2.48.11","openai":"^4.80.0","undici":"^7.24.5","express":"^5.1.0","pgvector":"^0.2.0","multiformats":"^13.4.1","@anthropic-ai/sdk":"^0.80.0","@aws-sdk/client-s3":"^3.1045.0","@filoz/synapse-sdk":"^0.41.0","@filoz/synapse-core":"^0.5.1","@huggingface/transformers":"^3.8.1","@anthropic-ai/claude-agent-sdk":"^0.2.140","@asteasolutions/zod-to-openapi":"^8.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.8.3","husky":"^9.1.7","dotenv":"^16.6.1","vitest":"^4.1.3","@types/pg":"^8.15.0","dotenv-cli":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"optionalDependencies":{"pino":"^10.3.1","@ipld/car":"^5.4.2","filecoin-pin":"^0.21.0","@helia/unixfs":"^7.0.4","blockstore-core":"^6.1.3","@helia/verified-fetch":"^7.2.8"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.0_1778785645438_0.984629085859279","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@atomicmemory/core","version":"1.0.1","keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"license":"Apache-2.0","_id":"@atomicmemory/core@1.0.1","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory-core","bugs":{"url":"https://github.com/atomicstrata/atomicmemory-core/issues"},"bin":{"atomicmemory-core":"dist/bin.js"},"dist":{"shasum":"d0d51d24e55e7bde1c2311fbe3ac6133867c9722","tarball":"https://registry.npmjs.org/@atomicmemory/core/-/core-1.0.1.tgz","fileCount":589,"integrity":"sha512-jRnAaAghHtmjVrDBRhmElvQLlB6fB/MTPIfJ/ABO7fCT9SIKYHDDbK4eLIgBRhIY6323LauKMcjHho0F0k457A==","signatures":[{"sig":"MEUCIAnacQFPWvr4hh8Afih80qp9qryafbS7IujTnnQaZ7u2AiEAuKOJePsugmLSSjIIFZUXC43tcrAGRlVnJMXjSSP3UeY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3804941},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./db/*":{"types":"./dist/db/*.d.ts","import":"./dist/db/*.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js"},"./services/*":{"types":"./dist/services/*.d.ts","import":"./dist/services/*.js"},"./openapi.json":"./openapi.json","./openapi.yaml":"./openapi.yaml"},"gitHead":"fd338440685f0d7aac1161c813ebbdf6c46ba072","scripts":{"dev":"dotenv -e .env -- tsx watch src/server.ts","test":"dotenv -e .env.test -- vitest run --reporter verbose","build":"rm -rf dist && tsc -p tsconfig.build.json && cp src/db/schema.sql dist/db/schema.sql","start":"dotenv -e .env -- tsx src/server.ts","migrate":"dotenv -e .env -- tsx src/db/migrate.ts","prepare":"husky || true","test:watch":"dotenv -e .env.test -- vitest --reporter verbose","test:schema":"tests/schema/run-schemathesis.sh","migrate:test":"dotenv -e .env.test -- tsx src/db/migrate.ts","check:openapi":"npm run generate:openapi && git diff --exit-code openapi.yaml openapi.json","prepublishOnly":"npm run generate:openapi && npm run build","test:deployment":"vitest run src/__tests__/deployment-config.test.ts --reporter verbose","generate:openapi":"tsx scripts/generate-openapi.ts","test:docker-smoke":"./scripts/docker-smoke-test.sh"},"_npmUser":{"name":"atomicstrata","email":"services@atomicstrata.ai"},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory-core.git","type":"git"},"_npmVersion":"11.14.1","description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"pg":"^8.18.0","tsx":"^4.21.0","zod":"^4.3.6","viem":"^2.48.11","openai":"^4.80.0","undici":"^7.24.5","express":"^5.1.0","pgvector":"^0.2.0","multiformats":"^13.4.1","@anthropic-ai/sdk":"^0.80.0","@aws-sdk/client-s3":"^3.1045.0","@filoz/synapse-sdk":"^0.41.0","@filoz/synapse-core":"^0.5.1","@huggingface/transformers":"^3.8.1","@anthropic-ai/claude-agent-sdk":"^0.2.140","@asteasolutions/zod-to-openapi":"^8.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.8.3","husky":"^9.1.7","dotenv":"^16.6.1","vitest":"^4.1.3","@types/pg":"^8.15.0","dotenv-cli":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"optionalDependencies":{"pino":"^10.3.1","@ipld/car":"^5.4.2","filecoin-pin":"^0.21.0","@helia/unixfs":"^7.0.4","blockstore-core":"^6.1.3","@helia/verified-fetch":"^7.2.8"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.1_1778789736011_0.9901240927217543","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@atomicmemory/core","version":"1.0.2","keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"license":"Apache-2.0","_id":"@atomicmemory/core@1.0.2","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory-core","bugs":{"url":"https://github.com/atomicstrata/atomicmemory-core/issues"},"bin":{"atomicmemory-core":"dist/bin.js"},"dist":{"shasum":"ff566291e1eacaa2a8f8fb3861f925e51e50f122","tarball":"https://registry.npmjs.org/@atomicmemory/core/-/core-1.0.2.tgz","fileCount":589,"integrity":"sha512-35in24+Z9Y1cBl1ZwUq+nVb7caIEO8N4jXBl+Upn0NzyHLxMwewEl+XCEopTo2l+Ur+trQxpo2YUPdqZUIFSyg==","signatures":[{"sig":"MEYCIQCy5vrmhjUA9AAY+c32EiDybc8diwjvcrRqEd7xRYklAQIhAJn3f3BPK+YvSY3JXWfG6nJNgUAMs/7gH3BHUgNTI+P/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3805434},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./db/*":{"types":"./dist/db/*.d.ts","import":"./dist/db/*.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js"},"./services/*":{"types":"./dist/services/*.d.ts","import":"./dist/services/*.js"},"./openapi.json":"./openapi.json","./openapi.yaml":"./openapi.yaml"},"gitHead":"7c016c4576384426f670880cce831ef649cc0c98","scripts":{"dev":"dotenv -e .env -- tsx watch src/server.ts","test":"dotenv -e .env.test -- vitest run --reporter verbose","build":"rm -rf dist && tsc -p tsconfig.build.json && cp src/db/schema.sql dist/db/schema.sql","start":"dotenv -e .env -- tsx src/server.ts","migrate":"dotenv -e .env -- tsx src/db/migrate.ts","prepare":"husky || true","test:watch":"dotenv -e .env.test -- vitest --reporter verbose","test:schema":"tests/schema/run-schemathesis.sh","migrate:test":"dotenv -e .env.test -- tsx src/db/migrate.ts","check:openapi":"npm run generate:openapi && git diff --exit-code openapi.yaml openapi.json","prepublishOnly":"npm run generate:openapi && npm run build","test:deployment":"vitest run src/__tests__/deployment-config.test.ts --reporter verbose","generate:openapi":"tsx scripts/generate-openapi.ts","test:docker-smoke":"./scripts/docker-smoke-test.sh"},"_npmUser":{"name":"atomicstrata","email":"services@atomicstrata.ai"},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory-core.git","type":"git"},"_npmVersion":"11.14.1","description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"pg":"^8.18.0","tsx":"^4.21.0","zod":"^4.3.6","viem":"^2.48.11","openai":"^4.80.0","undici":"^7.24.5","express":"^5.1.0","pgvector":"^0.2.0","multiformats":"^13.4.1","@anthropic-ai/sdk":"^0.80.0","@aws-sdk/client-s3":"^3.1045.0","@filoz/synapse-sdk":"^0.41.0","@filoz/synapse-core":"^0.5.1","@huggingface/transformers":"^3.8.1","@anthropic-ai/claude-agent-sdk":"^0.2.140","@asteasolutions/zod-to-openapi":"^8.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.8.3","husky":"^9.1.7","dotenv":"^16.6.1","vitest":"^4.1.3","@types/pg":"^8.15.0","dotenv-cli":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"optionalDependencies":{"pino":"^10.3.1","@ipld/car":"^5.4.2","filecoin-pin":"^0.21.0","@helia/unixfs":"^7.0.4","blockstore-core":"^6.1.3","@helia/verified-fetch":"^7.2.8"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.2_1778829254233_0.6409264660202447","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@atomicmemory/core","version":"1.0.3","keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"license":"Apache-2.0","_id":"@atomicmemory/core@1.0.3","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory-core","bugs":{"url":"https://github.com/atomicstrata/atomicmemory-core/issues"},"bin":{"atomicmemory-core":"dist/bin.js"},"dist":{"shasum":"40379a20df26f32752378d9a3551b235e9ec73bc","tarball":"https://registry.npmjs.org/@atomicmemory/core/-/core-1.0.3.tgz","fileCount":616,"integrity":"sha512-bo+sBgapYLkC4pqlXXYml0xONyXg5omekY1185UuJYAElzCEfFa0lBb4KV6rd9N2DwFzIG+f5xbKFZxTZOBClQ==","signatures":[{"sig":"MEQCIGP4AzLWZKEejvs9L3N8vCDzOBZ1BPewtms8/yKbphHKAiABS5h+opGUyER/jvM0ScylJ61oUjdbphPZv0oDhUsBhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3942652},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./db/*":{"types":"./dist/db/*.d.ts","import":"./dist/db/*.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js"},"./services/*":{"types":"./dist/services/*.d.ts","import":"./dist/services/*.js"},"./openapi.json":"./openapi.json","./openapi.yaml":"./openapi.yaml"},"gitHead":"f7c5b0c4d0a1c36a93edb26da9962830cc0c9d77","scripts":{"dev":"dotenv -e .env -- tsx watch src/server.ts","test":"dotenv -e .env.test -- vitest run --reporter verbose","build":"rm -rf dist && tsc -p tsconfig.build.json && mkdir -p dist/db/migrations && cp src/db/migrations/*.sql dist/db/migrations/ && tsx scripts/generate-schema-hash.ts","start":"dotenv -e .env -- tsx src/server.ts","migrate":"dotenv -e .env -- tsx src/db/migrate.ts","prepare":"husky || true","test:watch":"dotenv -e .env.test -- vitest --reporter verbose","test:schema":"tests/schema/run-schemathesis.sh","migrate:test":"dotenv -e .env.test -- tsx src/db/migrate.ts","check:openapi":"npm run generate:openapi && git diff --exit-code openapi.yaml openapi.json","prepublishOnly":"npm run generate:openapi && npm run build","test:deployment":"vitest run src/__tests__/deployment-config.test.ts --reporter verbose","generate:openapi":"tsx scripts/generate-openapi.ts","test:docker-smoke":"./scripts/docker-smoke-test.sh"},"_npmUser":{"name":"atomicstrata","email":"services@atomicstrata.ai"},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory-core.git","type":"git"},"_npmVersion":"11.14.1","description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"pg":"^8.18.0","tsx":"^4.21.0","zod":"^4.3.6","viem":"^2.48.11","openai":"^4.80.0","undici":"^7.24.5","express":"^5.1.0","pgvector":"^0.2.0","multiformats":"^13.4.1","node-pg-migrate":"8.0.4","@anthropic-ai/sdk":"^0.80.0","@aws-sdk/client-s3":"^3.1045.0","@filoz/synapse-sdk":"^0.41.0","@filoz/synapse-core":"^0.5.1","@huggingface/transformers":"^3.8.1","@anthropic-ai/claude-agent-sdk":"^0.2.140","@asteasolutions/zod-to-openapi":"^8.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.8.3","husky":"^9.1.7","dotenv":"^16.6.1","vitest":"^4.1.3","@types/pg":"^8.15.0","dotenv-cli":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"optionalDependencies":{"pino":"^10.3.1","@ipld/car":"^5.4.2","filecoin-pin":"^0.21.0","@helia/unixfs":"^7.0.4","blockstore-core":"^6.1.3","@helia/verified-fetch":"^7.2.8"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.3_1778999488295_0.18326301513606147","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@atomicmemory/core","version":"1.0.4","keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"license":"Apache-2.0","_id":"@atomicmemory/core@1.0.4","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory/tree/main/packages/core#readme","bugs":{"url":"https://github.com/atomicstrata/atomicmemory/issues"},"bin":{"atomicmemory-core":"dist/bin.js"},"dist":{"shasum":"70c7ae1a85721bce257370411d00e9742c64c2de","tarball":"https://registry.npmjs.org/@atomicmemory/core/-/core-1.0.4.tgz","fileCount":626,"integrity":"sha512-WyIGx8amQWebA0BwYAsuHn4q4ElM3t1Vakr9eH+f8N+I8YUhFi/wj/BFs5hnD734OOJNaFz7WJ7yMbyVZLguGg==","signatures":[{"sig":"MEUCIH0eyRYZLzhmiCmw2OW/UQIZ6s+bYCq7TlWZFFNKATb9AiEAuQZCDoHoVKTj30pflher9wY+N9m9ul1+sxhBhGjI8fw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3955340},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./db/*":{"types":"./dist/db/*.d.ts","import":"./dist/db/*.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js"},"./services/*":{"types":"./dist/services/*.d.ts","import":"./dist/services/*.js"},"./openapi.json":"./openapi.json","./openapi.yaml":"./openapi.yaml"},"gitHead":"201677d74fbb3f3cfd5e0dbb5f6904e889dcbb07","scripts":{"dev":"dotenv -e .env -- tsx watch src/server.ts","lint":"pnpm run check:openapi","test":"dotenv -e .env.test -- vitest run --reporter verbose","build":"rm -rf dist && tsc -p tsconfig.build.json && mkdir -p dist/db/migrations && cp src/db/migrations/*.sql dist/db/migrations/ && tsx scripts/generate-schema-hash.ts","start":"dotenv -e .env -- tsx src/server.ts","migrate":"dotenv -e .env -- tsx src/db/migrate.ts","prepare":"husky || true","typecheck":"tsc --noEmit","test:watch":"dotenv -e .env.test -- vitest --reporter verbose","code-health":"fallow --no-cache --format compact --fail-on-issues","test:schema":"tests/schema/run-schemathesis.sh","migrate:test":"dotenv -e .env.test -- tsx src/db/migrate.ts","check:openapi":"pnpm run generate:openapi && git diff --exit-code openapi.yaml openapi.json","prepublishOnly":"npm run generate:openapi && npm run build","test:deployment":"vitest run src/__tests__/deployment-config.test.ts --reporter verbose","generate:openapi":"tsx scripts/generate-openapi.ts","test:docker-smoke":"./scripts/docker-smoke-test.sh"},"_npmUser":{"name":"atomicstrata","email":"services@atomicstrata.ai"},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory.git","type":"git","directory":"packages/core"},"_npmVersion":"11.14.1","description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"pg":"^8.18.0","tsx":"^4.21.0","zod":"^4.3.6","viem":"^2.48.11","openai":"^4.80.0","undici":"^7.24.5","express":"^5.1.0","pgvector":"^0.2.0","multiformats":"^13.4.1","node-pg-migrate":"8.0.4","@anthropic-ai/sdk":"^0.80.0","@aws-sdk/client-s3":"^3.1045.0","@filoz/synapse-sdk":"^0.41.0","@filoz/synapse-core":"^0.5.1","@huggingface/transformers":"^3.8.1","@anthropic-ai/claude-agent-sdk":"^0.2.140","@asteasolutions/zod-to-openapi":"^8.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.8.3","husky":"^9.1.7","dotenv":"^16.6.1","vitest":"^4.1.3","@types/pg":"^8.15.0","dotenv-cli":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"optionalDependencies":{"pino":"^10.3.1","@ipld/car":"^5.4.2","filecoin-pin":"^0.21.0","@helia/unixfs":"^7.0.4","blockstore-core":"^6.1.3","@helia/verified-fetch":"^7.2.8"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.4_1779188666035_0.2719699293566711","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@atomicmemory/core","version":"1.0.5","keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"license":"Apache-2.0","_id":"@atomicmemory/core@1.0.5","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory/tree/main/packages/core#readme","bugs":{"url":"https://github.com/atomicstrata/atomicmemory/issues"},"bin":{"atomicmemory-core":"dist/bin.js"},"dist":{"shasum":"69d2e2bfc6f06275c5803247d740a7b4e6a29317","tarball":"https://registry.npmjs.org/@atomicmemory/core/-/core-1.0.5.tgz","fileCount":630,"integrity":"sha512-ixkSPV5koaO4ZgcZxxb3w10oOrMxhFHLHuWABzZpMq5ofRGv3CdKCNCFwGB6TwsBtP1PPdF0kESNXpb4fBerFA==","signatures":[{"sig":"MEUCIAzO0Lhezk8N/Dsg2Tt72hyVKnDMOdsN8AJaFXMmlNbOAiEAwM4YRGSwAPCis0DNdWZ9w+jUuyjdfI67PHTRrRSyN6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3965584},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./db/*":{"types":"./dist/db/*.d.ts","import":"./dist/db/*.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js"},"./services/*":{"types":"./dist/services/*.d.ts","import":"./dist/services/*.js"},"./openapi.json":"./openapi.json","./openapi.yaml":"./openapi.yaml"},"gitHead":"06bad6c5a546310ad826247ec09f90fa40bed661","scripts":{"dev":"dotenv -e .env -- tsx watch src/server.ts","lint":"pnpm run check:openapi","test":"dotenv -e .env.test -- vitest run --reporter verbose","build":"rm -rf dist && tsc -p tsconfig.build.json && mkdir -p dist/db/migrations && cp src/db/migrations/*.sql dist/db/migrations/ && tsx scripts/generate-schema-hash.ts","start":"dotenv -e .env -- tsx src/server.ts","migrate":"dotenv -e .env -- tsx src/db/migrate.ts","prepare":"husky || true","typecheck":"tsc --noEmit","test:watch":"dotenv -e .env.test -- vitest --reporter verbose","code-health":"fallow --no-cache --format compact --fail-on-issues","test:schema":"tests/schema/run-schemathesis.sh","migrate:test":"dotenv -e .env.test -- tsx src/db/migrate.ts","check:openapi":"pnpm run generate:openapi && git diff --exit-code openapi.yaml openapi.json","prepublishOnly":"npm run generate:openapi && npm run build","test:deployment":"vitest run src/__tests__/deployment-config.test.ts --reporter verbose","generate:openapi":"tsx scripts/generate-openapi.ts","test:docker-smoke":"./scripts/docker-smoke-test.sh"},"_npmUser":{"name":"atomicstrata","email":"services@atomicstrata.ai"},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory.git","type":"git","directory":"packages/core"},"_npmVersion":"11.14.1","description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"pg":"^8.18.0","tsx":"^4.21.0","zod":"^4.3.6","viem":"^2.48.11","openai":"^4.80.0","undici":"^7.24.5","express":"^5.1.0","pgvector":"^0.2.0","multiformats":"^13.4.1","node-pg-migrate":"8.0.4","@anthropic-ai/sdk":"^0.80.0","@aws-sdk/client-s3":"^3.1045.0","@filoz/synapse-sdk":"^0.41.0","@filoz/synapse-core":"^0.5.1","@huggingface/transformers":"^3.8.1","@anthropic-ai/claude-agent-sdk":"^0.2.140","@asteasolutions/zod-to-openapi":"^8.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.8.3","husky":"^9.1.7","dotenv":"^16.6.1","vitest":"^4.1.3","@types/pg":"^8.15.0","dotenv-cli":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"optionalDependencies":{"pino":"^10.3.1","@ipld/car":"^5.4.2","filecoin-pin":"^0.21.0","@helia/unixfs":"^7.0.4","blockstore-core":"^6.1.3","@helia/verified-fetch":"^7.2.8"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.5_1779340256606_0.17566070061874695","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@atomicmemory/core","version":"1.0.6","keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"license":"Apache-2.0","_id":"@atomicmemory/core@1.0.6","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory/tree/main/packages/core#readme","bugs":{"url":"https://github.com/atomicstrata/atomicmemory/issues"},"bin":{"atomicmemory-core":"dist/bin.js"},"dist":{"shasum":"f50c2d45044bde7f1f0583201c5b8697ff08c1e9","tarball":"https://registry.npmjs.org/@atomicmemory/core/-/core-1.0.6.tgz","fileCount":630,"integrity":"sha512-mp7X8/sWmaNpJ+rftlTbfonLPPWhSznfSnNLyIJomxOLSpqzr6PunL4b+cwtjDuhj+KvtaWNJI5UZ6jQrnNLYA==","signatures":[{"sig":"MEQCIDspkQReU5cYSD0D5b6+fYg17lUY4IK+c+lf4hovlUIMAiAg8x523OuzHSD+Q41u8WCQZrEr8BYoldPnvoSsXI4FDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3966266},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./db/*":{"types":"./dist/db/*.d.ts","import":"./dist/db/*.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js"},"./services/*":{"types":"./dist/services/*.d.ts","import":"./dist/services/*.js"},"./openapi.json":"./openapi.json","./openapi.yaml":"./openapi.yaml"},"gitHead":"79c9cf165bdfc9053c8c8041edf43103460a7c35","scripts":{"dev":"dotenv -e .env -- tsx watch src/server.ts","lint":"pnpm run check:openapi","test":"dotenv -e .env.test -- vitest run --reporter verbose","build":"rm -rf dist && tsc -p tsconfig.build.json && mkdir -p dist/db/migrations && cp src/db/migrations/*.sql dist/db/migrations/ && tsx scripts/generate-schema-hash.ts","start":"dotenv -e .env -- tsx src/server.ts","migrate":"dotenv -e .env -- tsx src/db/migrate.ts","prepare":"husky || true","typecheck":"tsc --noEmit","test:watch":"dotenv -e .env.test -- vitest --reporter verbose","code-health":"fallow --no-cache --format compact --fail-on-issues","test:schema":"tests/schema/run-schemathesis.sh","migrate:test":"dotenv -e .env.test -- tsx src/db/migrate.ts","check:openapi":"pnpm run generate:openapi && git diff --exit-code openapi.yaml openapi.json","prepublishOnly":"npm run generate:openapi && npm run build","test:deployment":"vitest run src/__tests__/deployment-config.test.ts --reporter verbose","generate:openapi":"tsx scripts/generate-openapi.ts","test:docker-smoke":"./scripts/docker-smoke-test.sh"},"_npmUser":{"name":"atomicstrata","email":"services@atomicstrata.ai"},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory.git","type":"git","directory":"packages/core"},"_npmVersion":"11.14.1","description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"pg":"^8.18.0","tsx":"^4.21.0","zod":"^4.3.6","viem":"^2.48.11","openai":"^4.80.0","undici":"^7.24.5","express":"^5.1.0","pgvector":"^0.2.0","multiformats":"^13.4.1","node-pg-migrate":"8.0.4","@anthropic-ai/sdk":"^0.80.0","@aws-sdk/client-s3":"^3.1045.0","@filoz/synapse-sdk":"^0.41.0","@filoz/synapse-core":"^0.5.1","@huggingface/transformers":"^3.8.1","@anthropic-ai/claude-agent-sdk":"^0.2.140","@asteasolutions/zod-to-openapi":"^8.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.8.3","husky":"^9.1.7","dotenv":"^16.6.1","vitest":"^4.1.3","@types/pg":"^8.15.0","dotenv-cli":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"optionalDependencies":{"pino":"^10.3.1","@ipld/car":"^5.4.2","filecoin-pin":"^0.21.0","@helia/unixfs":"^7.0.4","blockstore-core":"^6.1.3","@helia/verified-fetch":"^7.2.8"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.6_1779349468864_0.3614744005178645","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@atomicmemory/core","version":"1.1.0","keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"license":"Apache-2.0","_id":"@atomicmemory/core@1.1.0","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory/tree/main/packages/core#readme","bugs":{"url":"https://github.com/atomicstrata/atomicmemory/issues"},"bin":{"atomicmemory-core":"dist/bin.js"},"dist":{"shasum":"7ad058ad197b5a19141a60f9f7d7ca8af529e944","tarball":"https://registry.npmjs.org/@atomicmemory/core/-/core-1.1.0.tgz","fileCount":651,"integrity":"sha512-/iYCd4FTGiK0UrCDsmnjkwTOHN1XnlkjMO8FVAx6qITyl58SBQu3Sh9RdF/2BQhD05m9V4WCha3rnOw/bk2fkQ==","signatures":[{"sig":"MEYCIQDLOJfg8qPCykEJSU9O5CbmZR8GLoONG8gc0R6accUMrAIhALv9hJJ5U5sL/hmcwZpdG2VTVEc32sApQPgfZnpOX+O1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomicmemory%2fcore@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4179176},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./db/*":{"types":"./dist/db/*.d.ts","import":"./dist/db/*.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js"},"./services/*":{"types":"./dist/services/*.d.ts","import":"./dist/services/*.js"},"./openapi.json":"./openapi.json","./openapi.yaml":"./openapi.yaml"},"gitHead":"28e07a98b632eec7accd39c6373d6de477b2ede5","scripts":{"dev":"dotenv -e .env -- tsx watch src/server.ts","lint":"pnpm run check:openapi","test":"dotenv -e .env.test -- vitest run --reporter verbose","build":"rm -rf dist && tsc -p tsconfig.build.json && mkdir -p dist/db/migrations && cp src/db/migrations/*.sql dist/db/migrations/ && tsx scripts/generate-schema-hash.ts","start":"dotenv -e .env -- tsx src/server.ts","migrate":"dotenv -e .env -- tsx src/db/migrate.ts","prepare":"husky || true","typecheck":"tsc --noEmit","test:watch":"dotenv -e .env.test -- vitest --reporter verbose","code-health":"fallow --no-cache --format compact --fail-on-issues","test:schema":"tests/schema/run-schemathesis.sh","migrate:test":"dotenv -e .env.test -- tsx src/db/migrate.ts","check:openapi":"pnpm run generate:openapi && git diff --exit-code openapi.yaml openapi.json","prepublishOnly":"node ../../scripts/guards/guard-npm-publish.mjs && npm run generate:openapi && npm run build","test:deployment":"vitest run src/__tests__/deployment-config.test.ts --reporter verbose","generate:openapi":"tsx scripts/generate-openapi.ts","test:docker-smoke":"./scripts/docker-smoke-test.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c85a2240-0bc4-424e-877e-10ce8dceab64"}},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory.git","type":"git","directory":"packages/core"},"_npmVersion":"11.16.0","description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.18.0","tsx":"^4.21.0","zod":"^4.3.6","viem":"^2.48.11","openai":"^4.80.0","undici":"^7.24.5","express":"^5.1.0","pgvector":"^0.2.0","multiformats":"^13.4.1","node-pg-migrate":"8.0.4","@anthropic-ai/sdk":"^0.93.0","@aws-sdk/client-s3":"^3.1045.0","@filoz/synapse-sdk":"^0.41.0","@filoz/synapse-core":"^0.5.1","@huggingface/transformers":"^3.8.1","@anthropic-ai/claude-agent-sdk":"^0.2.140","@asteasolutions/zod-to-openapi":"^8.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.8.3","husky":"^9.1.7","dotenv":"^16.6.1","vitest":"^4.1.3","@types/pg":"^8.15.0","dotenv-cli":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"optionalDependencies":{"pino":"^10.3.1","@ipld/car":"^5.4.2","filecoin-pin":"^0.21.0","@helia/unixfs":"^7.0.4","blockstore-core":"^6.1.3","@helia/verified-fetch":"^7.2.8"},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.0_1781148800934_0.958910687483115","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@atomicmemory/core","version":"1.1.1","keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"license":"Apache-2.0","_id":"@atomicmemory/core@1.1.1","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory/tree/main/packages/core#readme","bugs":{"url":"https://github.com/atomicstrata/atomicmemory/issues"},"bin":{"atomicmemory-core":"dist/bin.js"},"dist":{"shasum":"8d8cca8f1b7ed77afded4d6aea66784a0efc6786","tarball":"https://registry.npmjs.org/@atomicmemory/core/-/core-1.1.1.tgz","fileCount":658,"integrity":"sha512-1d2pqnpuuihxECmx21KEF5py4bD3DGbz2k34Bd99yN8oIfiFpszEHzH3Ke8mnsNt/EBBpj/f2PwPluPxxiXH4Q==","signatures":[{"sig":"MEYCIQDdwPwo/Ge7MdHbT3WtBXQdu17u1pihqqVlaW+R7cb4yQIhAKAM7R30mZUo/vfFlax39h6+y/iPdFuDKO3bEaAJA5si","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomicmemory%2fcore@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4212563},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./db/*":{"types":"./dist/db/*.d.ts","import":"./dist/db/*.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js"},"./services/*":{"types":"./dist/services/*.d.ts","import":"./dist/services/*.js"},"./openapi.json":"./openapi.json","./openapi.yaml":"./openapi.yaml"},"gitHead":"94e957099ba8a6b936254719931e5bafda18fbce","scripts":{"dev":"dotenv -e .env -- tsx watch src/server.ts","lint":"pnpm run check:openapi","test":"dotenv -e .env.test -- vitest run --reporter verbose","build":"rm -rf dist && tsc -p tsconfig.build.json && mkdir -p dist/db/migrations && cp src/db/migrations/*.sql dist/db/migrations/ && tsx scripts/generate-schema-hash.ts","start":"dotenv -e .env -- tsx src/server.ts","migrate":"dotenv -e .env -- tsx src/db/migrate.ts","prepare":"husky || true","typecheck":"tsc --noEmit","test:watch":"dotenv -e .env.test -- vitest --reporter verbose","code-health":"fallow --no-cache --format compact --fail-on-issues","test:schema":"tests/schema/run-schemathesis.sh","migrate:test":"dotenv -e .env.test -- tsx src/db/migrate.ts","check:openapi":"pnpm run generate:openapi && git diff --exit-code openapi.yaml openapi.json","prepublishOnly":"node ../../scripts/guards/guard-npm-publish.mjs && npm run generate:openapi && npm run build","test:deployment":"vitest run src/__tests__/deployment-config.test.ts --reporter verbose","generate:openapi":"tsx scripts/generate-openapi.ts","test:docker-smoke":"./scripts/docker-smoke-test.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c85a2240-0bc4-424e-877e-10ce8dceab64"}},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory.git","type":"git","directory":"packages/core"},"_npmVersion":"11.17.0","description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.18.0","tsx":"^4.21.0","zod":"^4.3.6","viem":"^2.48.11","openai":"^4.80.0","undici":"^7.24.5","express":"^5.1.0","pgvector":"^0.2.0","multiformats":"^13.4.1","node-pg-migrate":"8.0.4","@anthropic-ai/sdk":"^0.93.0","@aws-sdk/client-s3":"^3.1045.0","@filoz/synapse-sdk":"^0.41.0","@filoz/synapse-core":"^0.5.1","@huggingface/transformers":"^3.8.1","@anthropic-ai/claude-agent-sdk":"^0.2.140","@asteasolutions/zod-to-openapi":"^8.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.8.3","husky":"^9.1.7","dotenv":"^16.6.1","vitest":"^4.1.3","@types/pg":"^8.15.0","dotenv-cli":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"optionalDependencies":{"pino":"^10.3.1","@ipld/car":"^5.4.2","filecoin-pin":"^0.21.0","@helia/unixfs":"^7.0.4","blockstore-core":"^6.1.3","@helia/verified-fetch":"^7.2.8"},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.1_1781599684979_0.5967990792158262","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@atomicmemory/core","version":"1.2.0","keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"license":"Apache-2.0","_id":"@atomicmemory/core@1.2.0","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory/tree/main/packages/core#readme","bugs":{"url":"https://github.com/atomicstrata/atomicmemory/issues"},"bin":{"atomicmemory-core":"dist/bin.js"},"dist":{"shasum":"45746cfde79e84e3983e5ad73d331f8e56ceb0a0","tarball":"https://registry.npmjs.org/@atomicmemory/core/-/core-1.2.0.tgz","fileCount":685,"integrity":"sha512-CfENyc+TAgjPbyFif59MxBfKzcAAlsv+ZBx7LMGihfFByRKJ/f5zxSEWdshOV2IkIK+trqu7/gQ3bHks+Oz2/A==","signatures":[{"sig":"MEYCIQC/qIWExhghjgVNr6TdHmJPiOsk+4A2UQMiOOXudIwbeAIhAIZ7zokuXPsnI8DdV0j0/e8N9duiR6j991xRUXlaMAjR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomicmemory%2fcore@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4270499},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./db/*":{"types":"./dist/db/*.d.ts","import":"./dist/db/*.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js"},"./services/*":{"types":"./dist/services/*.d.ts","import":"./dist/services/*.js"},"./openapi.json":"./openapi.json","./openapi.yaml":"./openapi.yaml"},"gitHead":"02eac666c08fee9edf935830998037f3741d5aac","scripts":{"dev":"dotenv -e .env -- tsx watch src/server.ts","lint":"pnpm run check:openapi","test":"dotenv -e .env.test -- vitest run --reporter verbose","build":"rm -rf dist && tsc -p tsconfig.build.json && mkdir -p dist/db/migrations && cp src/db/migrations/*.sql dist/db/migrations/ && tsx scripts/generate-schema-hash.ts","start":"dotenv -e .env -- tsx src/server.ts","migrate":"dotenv -e .env -- tsx src/db/migrate.ts","prepare":"husky || true","typecheck":"tsc --noEmit","test:watch":"dotenv -e .env.test -- vitest --reporter verbose","code-health":"fallow --no-cache --format compact --fail-on-issues","test:schema":"tests/schema/run-schemathesis.sh","migrate:test":"dotenv -e .env.test -- tsx src/db/migrate.ts","check:openapi":"pnpm run generate:openapi && git diff --exit-code openapi.yaml openapi.json","prepublishOnly":"node ../../scripts/guards/guard-npm-publish.mjs && npm run generate:openapi && npm run build","test:deployment":"vitest run src/__tests__/deployment-config.test.ts --reporter verbose","generate:openapi":"tsx scripts/generate-openapi.ts","test:docker-smoke":"./scripts/docker-smoke-test.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c85a2240-0bc4-424e-877e-10ce8dceab64"}},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory.git","type":"git","directory":"packages/core"},"_npmVersion":"12.0.1","description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"pg":"^8.18.0","tsx":"^4.21.0","zod":"^4.3.6","jose":"^6.2.3","viem":"^2.48.11","openai":"^4.80.0","undici":"^7.24.5","express":"^5.1.0","pgvector":"^0.2.0","multiformats":"^13.4.1","node-pg-migrate":"8.0.4","@anthropic-ai/sdk":"^0.93.0","@aws-sdk/client-s3":"^3.1045.0","@filoz/synapse-sdk":"^0.41.0","@filoz/synapse-core":"^0.5.1","@huggingface/transformers":"^3.8.1","@anthropic-ai/claude-agent-sdk":"^0.2.140","@asteasolutions/zod-to-openapi":"^8.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.8.3","husky":"^9.1.7","dotenv":"^16.6.1","vitest":"^4.1.3","@types/pg":"^8.15.0","dotenv-cli":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"optionalDependencies":{"pino":"^10.3.1","@ipld/car":"^5.4.2","filecoin-pin":"^0.21.0","@helia/unixfs":"^7.0.4","blockstore-core":"^6.1.3","@helia/verified-fetch":"^7.2.8"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.0_1785270650327_0.6417335170515059","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@atomicmemory/core","version":"1.2.1","description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","type":"module","license":"Apache-2.0","author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"repository":{"type":"git","url":"git+https://github.com/atomicstrata/atomicmemory.git","directory":"packages/core"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"homepage":"https://github.com/atomicstrata/atomicmemory/tree/main/packages/core#readme","bugs":{"url":"https://github.com/atomicstrata/atomicmemory/issues"},"keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"engines":{"node":">=22.0.0"},"main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"atomicmemory-core":"dist/bin.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./config":{"types":"./dist/config.d.ts","import":"./dist/config.js"},"./db/*":{"types":"./dist/db/*.d.ts","import":"./dist/db/*.js"},"./services/*":{"types":"./dist/services/*.d.ts","import":"./dist/services/*.js"},"./openapi.json":"./openapi.json","./openapi.yaml":"./openapi.yaml"},"scripts":{"code-health":"fallow --no-cache --format compact --fail-on-issues","dev":"dotenv -e .env -- tsx watch src/server.ts","start":"dotenv -e .env -- tsx src/server.ts","typecheck":"tsc --noEmit","lint":"pnpm run check:openapi","build":"rm -rf dist && tsc -p tsconfig.build.json && mkdir -p dist/db/migrations && cp src/db/migrations/*.sql dist/db/migrations/ && tsx scripts/generate-schema-hash.ts","generate:openapi":"tsx scripts/generate-openapi.ts","check:openapi":"pnpm run generate:openapi && git diff --exit-code openapi.yaml openapi.json","prepublishOnly":"node ../../scripts/guards/guard-npm-publish.mjs && npm run generate:openapi && npm run build","test":"dotenv -e .env.test -- vitest run --reporter verbose","test:watch":"dotenv -e .env.test -- vitest --reporter verbose","test:deployment":"vitest run src/__tests__/deployment-config.test.ts --reporter verbose","test:docker-smoke":"./scripts/docker-smoke-test.sh","test:schema":"tests/schema/run-schemathesis.sh","migrate":"dotenv -e .env -- tsx src/db/migrate.ts","migrate:test":"dotenv -e .env.test -- tsx src/db/migrate.ts","prepare":"husky || true"},"dependencies":{"@anthropic-ai/claude-agent-sdk":"^0.2.140","@anthropic-ai/sdk":"^0.93.0","@asteasolutions/zod-to-openapi":"^8.5.0","@aws-sdk/client-s3":"^3.1045.0","@filoz/synapse-core":"^0.5.1","@filoz/synapse-sdk":"^0.41.0","@huggingface/transformers":"^3.8.1","express":"^5.1.0","jose":"^6.2.3","multiformats":"^13.4.1","node-pg-migrate":"8.0.4","openai":"^4.80.0","pg":"^8.18.0","pgvector":"^0.2.0","tsx":"^4.21.0","undici":"^7.24.5","viem":"^2.48.11","zod":"^4.3.6"},"optionalDependencies":{"@helia/unixfs":"^7.0.4","@helia/verified-fetch":"^7.2.8","@ipld/car":"^5.4.2","blockstore-core":"^6.1.3","filecoin-pin":"^0.21.0","pino":"^10.3.1"},"devDependencies":{"@types/express":"^5.0.0","@types/node":"^22.0.0","@types/pg":"^8.15.0","dotenv":"^16.6.1","dotenv-cli":"^8.0.0","husky":"^9.1.7","typescript":"^5.7.0","vitest":"^4.1.3","yaml":"^2.8.3"},"gitHead":"683bd92c9c77877962d7425e27b50cb83867fd9e","_id":"@atomicmemory/core@1.2.1","_nodeVersion":"22.23.1","_npmVersion":"12.0.2","dist":{"integrity":"sha512-j1vT8cs/ot+dqEbnXV3IJmpkY/q/45IS6dcxWgnOUtPuaiE/az56RlAJegEIjqihAjENh0e+DPgFZrJLtcwKvA==","shasum":"e82863a0241520be5a3064b7c190552937546f86","tarball":"https://registry.npmjs.org/@atomicmemory/core/-/core-1.2.1.tgz","fileCount":687,"unpackedSize":4293286,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atomicmemory%2fcore@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBivu60NG12SostTU7RzpL17q/aeGaSyJMYDFDitj0SFAiEAodL7awGgbmPMSpyau4N+jMK3fx5J1Ogkgk9+9yZsaRY="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c85a2240-0bc4-424e-877e-10ce8dceab64"}},"directories":{},"maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_1.2.1_1786091710471_0.8408904106471231"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-14T19:07:25.320Z","modified":"2026-08-07T08:35:11.031Z","1.0.0":"2026-05-14T19:07:25.694Z","1.0.1":"2026-05-14T20:15:36.250Z","1.0.2":"2026-05-15T07:14:14.435Z","1.0.3":"2026-05-17T06:31:28.443Z","1.0.4":"2026-05-19T11:04:26.205Z","1.0.5":"2026-05-21T05:10:56.786Z","1.0.6":"2026-05-21T07:44:29.130Z","1.1.0":"2026-06-11T03:33:21.082Z","1.1.1":"2026-06-16T08:48:05.206Z","1.2.0":"2026-07-28T20:30:50.521Z","1.2.1":"2026-08-07T08:35:10.685Z"},"bugs":{"url":"https://github.com/atomicstrata/atomicmemory/issues"},"author":{"name":"AtomicMemory","email":"support@atomicstrata.ai"},"license":"Apache-2.0","homepage":"https://github.com/atomicstrata/atomicmemory/tree/main/packages/core#readme","keywords":["memory","ai","llm","semantic-search","pgvector","embeddings","context","retrieval"],"repository":{"type":"git","url":"git+https://github.com/atomicstrata/atomicmemory.git","directory":"packages/core"},"description":"Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"readme":"# Atomicmemory Core\n\n[![CI](https://github.com/atomicstrata/atomicmemory/actions/workflows/ci.yml/badge.svg)](https://github.com/atomicstrata/atomicmemory/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/%40atomicmemory%2Fcore?label=npm)](https://www.npmjs.com/package/@atomicmemory/core)\n[![Docker](https://img.shields.io/badge/docker-GHCR-2496ED?logo=docker&logoColor=white)](Dockerfile)\n[![Docs](https://img.shields.io/badge/docs-docs.atomicstrata.ai-blue)](https://docs.atomicstrata.ai)\n[![License: Apache 2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)\n\nOpen-source memory engine for AI applications and agents.\n\nDocker-deployable memory backend with durable context, semantic retrieval, and memory mutation (AUDN-SC: Add, Update, Delete, No-op + Supersede, Clarify). Pre-AUDN rejections use a separate `SKIP` ingest trace sentinel.\n\n**Docs:** [docs.atomicstrata.ai](https://docs.atomicstrata.ai)\n\n## Features\n\n- **Semantic ingest** — extract structured facts from conversations with contradiction detection\n- **Hybrid retrieval** — vector similarity + BM25/FTS with RRF fusion\n- **AUDN-SC mutation** — Add, Update, Delete, No-op, Supersede, and Clarify decisions with fail-closed integrity\n- **Claim versioning** — temporal lineage tracking with supersession and invalidation\n- **Tiered context packaging** — L0/L1/L2 compression for token-efficient retrieval\n- **Entity graph** — spreading activation over extracted entities\n- **Pluggable embeddings** — openai, openai-compatible, ollama, transformers (local WASM)\n- **Docker-deployable** — one-command deployment with Postgres + pgvector\n\n## Headline Results\n\nAtomicMemory v66 is leading performance/cost on BEAM-100K, BEAM-1M, and LoCoMo10 under matched methodology against published competitors. On BEAM-10M it matches the strongest published Mem0-new result while leaving Hindsight-scale temporal retrieval as the known open frontier.\n\n| Benchmark | AtomicMemory v66 | Position | Cost/Q | Sample |\n|---|---:|---|---:|---:|\n| **BEAM-100K lenient** | **0.7375** | Parity with Hindsight at 0.75 | $1.26 | n=80 |\n| **BEAM-1M lenient** | **0.6625** | Leading Performance/Cost; +0.022 vs Mem0 paper | $0.083 | n=80 |\n| **BEAM-10M lenient** | **0.4875** | Parity with Mem0-new at 0.486 | $0.081 | n=80 |\n| **LoCoMo10 GPT-4o-mini binary** | **0.8396** | Leading Performance/Cost; +0.171 vs Mem0 paper | $0.066 | n=1540 |\n\nThese results put AtomicMemory at or near the published ceiling in each reported category while preserving the lower-cost operating profile that matters for real applications. Reproducibility artifacts and harness details will be published with the benchmark materials.\n\n## What This Is Not\n\n- Not a benchmark suite — eval harnesses live in a separate research repo\n- Not an SDK or client library — this is the server/backend. For a TypeScript\n  client, see [@atomicmemory/sdk](../sdk)\n\n## Quick Start\n\nFor the full walkthrough, see the [Core Quickstart](https://docs.atomicstrata.ai/quickstart).\n\n### Docker image (recommended)\n\nAfter the first tagged release, you can run Core from the published GHCR image\nwithout cloning the repository. By default, the image starts an embedded\nPostgres/pgvector database and persists it to the mounted host directory:\n\n```bash\nexport OPENAI_API_KEY=sk-...\n\ndocker run --rm -it --pull always \\\n  -p 127.0.0.1:17350:17350 \\\n  -e OPENAI_API_KEY=$OPENAI_API_KEY \\\n  -v $HOME/.atomicstrata/atomicmemory-docker:/var/lib/atomicmemory/postgres \\\n  ghcr.io/atomicstrata/atomicmemory-core:latest\n```\n\nThe image is published as `ghcr.io/atomicstrata/atomicmemory-core` with\n`latest`, semver, and commit-SHA tags. Release images are published for\n`linux/amd64` and `linux/arm64`, so the same tag works on common Linux\nservers and Apple Silicon Macs.\n\nThe public monorepo's `Publish Core Docker Image` workflow runs after\n`@atomicmemory/core` is published to npm and verified by the ops publishing\nhelper. It resolves the npm package version, skips if that version is already\npresent in GHCR with both required platforms, checks out the package `gitHead`,\nbuilds `packages/core/Dockerfile`, smoke-tests the local `linux/amd64` image,\nand then pushes the matching multi-platform GHCR tags.\n\nLocal Docker defaults use `Authorization: Bearer local-dev-key`, OpenAI\nembeddings at 1536 dimensions, and `RAW_STORAGE_DEPLOYMENT_ENV=local`. The\nquickstart binds to `127.0.0.1` so that default key is only exposed locally.\n\nFor production deployments, set real secrets and `DATABASE_URL` to your managed\nPostgres/pgvector connection string. When `DATABASE_URL` is unset or set to\n`embedded`, the container starts the bundled local Postgres instance.\n\n```bash\nexport CORE_API_KEY=$(openssl rand -hex 32)\nexport STORAGE_KEY_HMAC_SECRET=$(openssl rand -hex 32)\n\ndocker run --rm -it --pull always \\\n  -p 17350:17350 \\\n  -e DATABASE_URL=postgresql://user:pass@postgres.example.com:5432/atomicmemory \\\n  -e OPENAI_API_KEY=$OPENAI_API_KEY \\\n  -e CORE_API_KEY=$CORE_API_KEY \\\n  -e STORAGE_KEY_HMAC_SECRET=$STORAGE_KEY_HMAC_SECRET \\\n  -e EMBEDDING_DIMENSIONS=1536 \\\n  -e RAW_STORAGE_DEPLOYMENT_ENV=production \\\n  ghcr.io/atomicstrata/atomicmemory-core:latest\n```\n\nIf you prefer a two-container local stack, you can also run the app image with\nthe bundled compose file:\n\n```bash\ncurl -fsSLO https://raw.githubusercontent.com/atomicstrata/atomicmemory/main/packages/core/docker-compose.image.yml\ncat > .env <<'EOF'\nOPENAI_API_KEY=sk-...\nCORE_API_KEY=replace-with-a-strong-random-secret\nSTORAGE_KEY_HMAC_SECRET=000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\nEMBEDDING_DIMENSIONS=1536\nRAW_STORAGE_DEPLOYMENT_ENV=local\nEOF\ndocker compose -f docker-compose.image.yml up\n```\n\n### Connected to Atomic Memory Cloud\n\nLink a local Core instance to a Cloud **Local** project with a single `amc_…` API\nkey (traces + heartbeat). Apps on localhost use **`CORE_API_KEY`** (Local access\nkey) — never paste the Cloud key into SDK/CLI calls.\n\n1. In Cloud: create a Local project → create an API key (`amc_…`).\n2. Copy the console **Connect** `docker run` snippet (or use the template below).\n3. After Core starts, retrieve the auto-generated local key (or use your own override).\n4. SDK/CLI: `Authorization: Bearer $CORE_API_KEY` → `http://127.0.0.1:17350`.\n5. Console **Memories** use an automatic Cloud-minted JWT (no key paste).\n\n```bash\nexport OPENAI_API_KEY=sk-...\nexport ATOMICMEMORY_API_KEY=amc_...                 # Cloud connect only\nexport ATOMICMEMORY_API_URL=https://api.atomicstrata.ai\n\ndocker run -d --name atomic-memory \\\n  --restart unless-stopped \\\n  -p 127.0.0.1:17350:17350 \\\n  -v atomic-memory-data:/var/lib/atomicmemory/postgres \\\n  -v atomic-memory-state:/var/lib/atomicmemory/state \\\n  -e OPENAI_API_KEY \\\n  -e ATOMICMEMORY_API_KEY \\\n  -e ATOMICMEMORY_API_URL \\\n  ghcr.io/atomicstrata/atomicmemory-core:stable\n\n# Retrieve the generated local access key for SDK/CLI (after /health is ok):\ndocker exec atomic-memory cat /var/lib/atomicmemory/state/core-api-key\n```\n\n**Optional:** pass `-e CORE_API_KEY=your-secret` to pin a user-defined local key\ninstead of auto-generation. The state volume still persists whichever key is in use.\n\nWhen `ATOMICMEMORY_API_KEY` is set, Core enables outbound trace sync and\nperiodic heartbeat to `POST /v1/runtimes/heartbeat`. Invalid or revoked Cloud\ncredentials degrade observability only — local memory ingest/search keep working.\n\nLocal-only (no Cloud): run with only `OPENAI_API_KEY` — same image, no Cloud env.\n\n### Docker from source\n\n```bash\ngit clone https://github.com/atomicstrata/atomicmemory.git\ncd atomicmemory/packages/core\ncp .env.example .env\n# Edit .env with your OPENAI_API_KEY and DATABASE_URL\ndocker compose up --build\n```\n\n### Local development\n\n```bash\nnpm install\ncp .env.example .env\n# Edit .env — requires a running Postgres instance with pgvector\nnpm run migrate\nnpm run dev\n```\n\nHealth check: `curl http://localhost:17350/v1/memories/health`\n\n### Migrations\n\nCore uses versioned migration files as the single source of truth for\nPostgreSQL schema. The files live under `src/db/migrations/` and ship to the\npackage as `dist/db/migrations/`. There is no `schema.sql` — the migrations\nfolder is the schema, in order. To regenerate the equivalent full-schema dump\nlocally, replay the migrations against an empty DB and run\n`pg_dump --schema-only`.\n\nRun migrations once before deploy or during a single startup step before\nserving traffic:\n\n```bash\nnpm run migrate\n```\n\nDocker image users can keep the default startup migration step for local or\nsingle-replica deployments. For rolling production deploys, run migrations as\na pre-deploy job and start app containers with\n`ATOMICMEMORY_RUN_MIGRATIONS_ON_STARTUP=false`. If startup migrations remain\nenabled, `MIGRATION_LOCK_TIMEOUT_MS` raises the advisory-lock wait window.\n\nApplications that embed Core can call the programmatic API directly instead\nof shelling out:\n\n```ts\nimport { migrate, migrationStatus } from '@atomicmemory/core';\n\nconst status = await migrationStatus({ pool });\nif (status.status !== 'up_to_date') {\n  await migrate({ pool });\n}\n```\n\nThe `migrate()` and `migrationStatus()` signatures are unchanged from Phase 1;\nonly their internals were rewritten on top of `node-pg-migrate`. `MigrateResult`\nfields are populated the same way — `ranSchemaSql` now means \"this call\nexecuted the migration runner path\" rather than \"this call executed the legacy\n`schema.sql` file\".\n`MigrationStatus` adds read-only diagnostics sourced from the framework and\npgvector catalogs: `appliedMigrationCount`, `latestMigrationName`,\n`migrationHistoryStatus`, and `embeddingDimension`.\n\nTo inspect a running database, two tables answer different questions:\n\n| Table            | Question it answers                                      |\n|------------------|----------------------------------------------------------|\n| `pgmigrations`   | Which migration files have been applied, and in what order |\n| `schema_version` | Which `@atomicmemory/core` semver this DB corresponds to |\n\nBoth are kept on purpose. `pgmigrations` is the framework's audit trail;\n`schema_version` is the operator-friendly \"what code matches this DB\" stamp.\nQuerying either is safe from any client.\n\n```sql\nSELECT id, name, run_on FROM pgmigrations ORDER BY id;\nSELECT sdk_version, schema_sha256, applied_at FROM schema_version\n ORDER BY applied_at DESC LIMIT 1;\n```\n\nUpgrades are lossless. A v1.0.x or Phase-1 database with existing rows takes\nthe same `migrate()` call as a fresh install — `migrate()` detects the\npre-migration install state, stamps the baseline migration as already-applied\nwithout re-executing it, and runs only the migrations after the baseline.\nSee [`docs/db/migrations.md`](docs/db/migrations.md) for the scenario-by-scenario\nguarantees and inspection guide.\n\nThe provenance SQL files under `docs/db/changelog/` are references only;\nruntime schema execution is owned entirely by the `src/db/migrations/` folder.\n\n### npm CLI\n\nThe npm package also ships a thin CLI for environments where you already have\na Postgres database with pgvector:\n\n```bash\nexport DATABASE_URL=postgresql://user:pass@localhost:5432/atomicmemory\n\nnpx -y @atomicmemory/core migrate --profile local\nnpx -y @atomicmemory/core start --profile local\n```\n\nThe `local` profile fills local-only defaults for the port, bearer key,\nstorage policy, local transformers embeddings, and Claude Code as the LLM\nprovider. It does not create or manage Postgres; use the Docker image above\nwhen you want the database bundled with Core.\n\n## API Overview\n\n### Core endpoints\n\n| Method | Path | Description |\n|--------|------|-------------|\n| `GET` | `/health` | Health check |\n| `POST` | `/v1/memories/ingest` | Full ingest with extraction and AUDN-SC |\n| `POST` | `/v1/memories/ingest/quick` | Fast ingest (embedding dedup only) |\n| `POST` | `/v1/memories/search` | Semantic search with hybrid retrieval |\n| `POST` | `/v1/memories/search/fast` | Fast vector-only search |\n| `GET` | `/v1/memories/list` | List memories with optional filters |\n| `GET` | `/v1/memories/:id` | Get a single memory |\n| `DELETE` | `/v1/memories/:id` | Soft-delete a memory |\n| `POST` | `/v1/memories/consolidate` | Consolidate and compress memories |\n\nSee the [HTTP API reference](https://docs.atomicstrata.ai/api-reference/http/conventions) for full endpoint documentation.\n\n### Per-request config override\n\nSearch and ingest routes accept an optional `config_override` body field that\noverlays the startup `RuntimeConfig` for that single request. Useful for\nA/B tests, experiments, or dial-turning without restarting the server.\n\n```bash\ncurl -X POST http://localhost:17350/v1/memories/search \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"user_id\": \"alice\",\n    \"query\": \"what stack does alice use?\",\n    \"config_override\": { \"hybridSearchEnabled\": true, \"maxSearchResults\": 20 }\n  }'\n```\n\nResponses from requests carrying an override emit four observability headers:\n\n| Header | Emitted when | Value |\n|--------|--------------|-------|\n| `X-Atomicmem-Config-Override-Applied` | Override present | `true` |\n| `X-Atomicmem-Effective-Config-Hash` | Override present | `sha256:<hex>` of the merged config |\n| `X-Atomicmem-Config-Override-Keys` | Override present | Comma-joined sorted override keys |\n| `X-Atomicmem-Unknown-Override-Keys` | One or more keys don't match a current `RuntimeConfig` field | Comma-joined sorted unknown keys |\n\nThe schema is permissive — unknown keys don't 400. They ride through on the\neffective config and surface via the fourth header plus a server-side warning\nlog, so callers catch typos without gating new runtime fields behind a schema\nrelease.\n\n## Environment Variables\n\n### Required\n\n| Variable | Description |\n|----------|-------------|\n| `DATABASE_URL` | Postgres connection string (must have pgvector extension) |\n| `OPENAI_API_KEY` | OpenAI API key (when using `openai` embedding/LLM provider) |\n| `PORT` | Server port (default: 17350) |\n\n### Embedding Provider\n\nSet `EMBEDDING_PROVIDER` to choose your embedding backend:\n\n| Value | Description |\n|-------|-------------|\n| `openai` | OpenAI Embeddings API (default) |\n| `openai-compatible` | Any OpenAI-compatible API (recommended for self-hosters) |\n| `ollama` | Local Ollama instance |\n| `transformers` | Local WASM/ONNX inference via @huggingface/transformers |\n| `voyage` | Voyage AI embeddings with separate document/query models |\n\nFor self-hosted deployments, `openai-compatible` is recommended as it works with any OpenAI-compatible embedding service.\n\n### LLM Provider\n\nSet `LLM_PROVIDER` to choose the extraction backend:\n\n| Value | Description |\n|-------|-------------|\n| `openai` | OpenAI Chat Completions API (default) |\n| `openai-compatible` | Any OpenAI-compatible chat API |\n| `ollama` | Local Ollama instance |\n| `groq` | Groq OpenAI-compatible API |\n| `anthropic` | Anthropic Messages API |\n| `google-genai` | Google Gemini OpenAI-compatible endpoint |\n| `claude-code` | Local Claude Code Agent SDK session for personal development |\n| `codex` | Local Codex account session for personal development |\n\nFor personal local use, `LLM_PROVIDER=claude-code` and `LLM_PROVIDER=codex`\nuse the logged-in `claude` or `codex` account session instead of requiring a\nseparate LLM API key. `claude-code` routes through the Claude Agent SDK;\n`codex` reads the auth file produced by `codex login` and calls the Codex\nbackend directly. They still consume the user's account limits and are not\nintended for hosted or team deployments. Pair either one with a non-OpenAI\nembedding provider, such as `EMBEDDING_PROVIDER=transformers`, if you want to\nrun without an OpenAI API key as well.\n\nFor AtomicMemory for Codex local setup, prefer `codex login` with\n`LLM_PROVIDER=codex`. Use `LLM_PROVIDER=openai` plus `OPENAI_API_KEY` for\nhosted or team deployments.\n\nIn-process benchmark harnesses can avoid editing env files by passing a\ncomposition-time config to the runtime:\n\n```ts\nimport { config, createCoreRuntime } from '@atomicmemory/core';\n\nconst runtime = createCoreRuntime({\n  pool,\n  config: {\n    ...config,\n    embeddingProvider: 'voyage',\n    embeddingDimensions: 1024,\n    voyageApiKey,\n    voyageDocumentModel: 'voyage-4-large',\n    voyageQueryModel: 'voyage-4-lite',\n  },\n});\n```\n\nProvider/model fields are still startup-only for a given runtime. Use a new\nisolated runtime or process for each embedding configuration.\n\nSee `.env.example` for the full list of configuration options.\n\n## Deployment\n\n### Platform-specific deployment\n\nSee `deploy/` for platform-specific configs (Railway, etc.). Copy the relevant config to your project root before deploying.\n\n### Docker\n\n```bash\ndocker compose up --build\n```\n\nThe compose file includes Postgres with pgvector. The app container runs migrations on startup, then starts the server.\n\n## Architecture\n\n```\nsrc/\n  routes/       # Express route handlers\n  services/     # Business logic (extraction, retrieval, packaging)\n  db/           # Repository layer and canonical schema\n  adapters/     # Type contracts for external integrations\n  config.ts     # Environment-driven configuration\n  server.ts     # Express app bootstrap\n```\n\nStorage: Postgres + pgvector. Retrieval: hybrid (vector + BM25/FTS). Mutation: contradiction-safe AUDN-SC with claim versioning.\n\n## Development\n\n```bash\nnpm test                    # Run unit tests\nnpm run test:deployment     # Deployment config tests\nnpm run test:docker-smoke   # Docker smoke test\nnpm run test:schema         # Schema regression fuzzing (Schemathesis)\nnpm run migrate:test        # Run migrations against test DB\n```\n\n### Schema regression tests\n\nProperty-based fuzzing of `openapi.yaml` via Schemathesis runs on every\nPR (`schema-fuzz` job in `.github/workflows/ci.yml`). Catches wire-shape\nregressions where a route's response drifts from its declared schema.\nSee [`tests/schema/`](tests/schema/) for how to run locally and how to\nread the report.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for setup, workflow, and code style expectations.\n\n## License\n\n[Apache-2.0](LICENSE)\n","readmeFilename":"README.md"}