{"_id":"@dantelabs/memento","_rev":"8-cfdfb6122bb5853a28912fc3d6facf9d","name":"@dantelabs/memento","dist-tags":{"latest":"0.3.2"},"versions":{"0.1.0":{"name":"@dantelabs/memento","version":"0.1.0","keywords":["claude-code","codex","gemini","cursor","windsurf","antigravity","ai-memory","sync","cli"],"author":{"name":"Dante","email":"datapod.k@gmail.com"},"license":"MIT","_id":"@dantelabs/memento@0.1.0","maintainers":[{"name":"datapod","email":"datapod.k@gmail.com"}],"homepage":"https://github.com/dandacompany/memento","bugs":{"url":"https://github.com/dandacompany/memento/issues"},"bin":{"memento":"dist/cli/index.js"},"dist":{"shasum":"6a562c6d1a27017e7d2903b21ba8c5b106e02574","tarball":"https://registry.npmjs.org/@dantelabs/memento/-/memento-0.1.0.tgz","fileCount":178,"integrity":"sha512-PeoZ2RhqT+wHX1xrLUJv7EYsSJN8Cp2XemxjGMyHvPekoGNjn8X7p2kZydzC3QFX/9MrDMHcVmUkX5iT938JbA==","signatures":[{"sig":"MEYCIQCOnzPF5ravQLcR5qD0hvU4qQgvc3hZXaBasU2pO5uSGwIhAJjZspqXcEABFYZCPMvsG8i6B1uvVr1b0ENlmBr3K3RN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dantelabs%2fmemento@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":431317},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"2bbf415cdd42aab185a2e901b84115f2dcb36f90","scripts":{"dev":"tsc --watch","lint":"eslint src tests","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"const fs=require('fs'),cp=require('child_process'),p='./dist/install/postinstall.js';if(fs.existsSync(p)){const r=cp.spawnSync(process.execPath,[p],{stdio:'inherit'});process.exit(r.status??0)}\""},"_npmUser":{"name":"datapod","email":"datapod.k@gmail.com"},"repository":{"url":"git+https://github.com/dandacompany/memento.git","type":"git"},"_npmVersion":"10.9.7","description":"Bi-directional code-assistant memory sync (Claude Code, Codex, Gemini CLI, Antigravity, Cursor, Windsurf)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chokidar":"^4.0.3","commander":"^12.0.0","picocolors":"^1.0.1","@iarna/toml":"^2.2.5","gray-matter":"^4.0.3","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.3","eslint":"^9","vitest":"^2.1","typescript":"^5.6","@types/node":"^22","typescript-eslint":"^8","@vitest/coverage-v8":"^2.1"},"_npmOperationalInternal":{"tmp":"tmp/memento_0.1.0_1777532358714_0.7228430474152416","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dantelabs/memento","version":"0.1.1","keywords":["claude-code","codex","gemini","cursor","windsurf","antigravity","ai-memory","sync","cli"],"author":{"name":"Dante","email":"datapod.k@gmail.com"},"license":"MIT","_id":"@dantelabs/memento@0.1.1","maintainers":[{"name":"datapod","email":"datapod.k@gmail.com"}],"homepage":"https://github.com/dandacompany/memento","bugs":{"url":"https://github.com/dandacompany/memento/issues"},"bin":{"memento":"dist/cli/index.js"},"dist":{"shasum":"a75caccc386ec0febce2c5f0cc7851f5e597eaeb","tarball":"https://registry.npmjs.org/@dantelabs/memento/-/memento-0.1.1.tgz","fileCount":178,"integrity":"sha512-clo/9DMrFqoU1hN1kYTr5DLgoSzVWlKRy2ip4D1BP/h3RfYXQg7zqD213goauAb0lfXIISkPs1drnRGBZY4FFw==","signatures":[{"sig":"MEYCIQDmDTfWuvNILumMDpcyHHftKQkrgPC7VBSLV0er2rE1agIhAKw8w/SMyRm7bIP24dWFlxg2au/yA8GtTPNFy0E3NRvs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dantelabs%2fmemento@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":431321},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"2756312c47777943777ed2146de10663addd805b","scripts":{"dev":"tsc --watch","lint":"eslint src tests","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"const fs=require('fs'),cp=require('child_process'),p='./dist/install/postinstall.js';if(fs.existsSync(p)){const r=cp.spawnSync(process.execPath,[p],{stdio:'inherit'});process.exit(r.status??0)}\""},"_npmUser":{"name":"datapod","email":"datapod.k@gmail.com"},"repository":{"url":"git+https://github.com/dandacompany/memento.git","type":"git"},"_npmVersion":"10.9.7","description":"Bi-directional code-assistant memory sync (Claude Code, Codex, Gemini CLI, Antigravity, Cursor, Windsurf)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chokidar":"^4.0.3","commander":"^12.0.0","picocolors":"^1.0.1","@iarna/toml":"^2.2.5","gray-matter":"^4.0.3","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.3","eslint":"^9","vitest":"^2.1","typescript":"^5.6","@types/node":"^22","typescript-eslint":"^8","@vitest/coverage-v8":"^2.1"},"_npmOperationalInternal":{"tmp":"tmp/memento_0.1.1_1777534306104_0.3804101426681685","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dantelabs/memento","version":"0.1.2","keywords":["claude-code","codex","gemini","cursor","windsurf","antigravity","ai-memory","sync","cli"],"author":{"name":"Dante","email":"datapod.k@gmail.com"},"license":"MIT","_id":"@dantelabs/memento@0.1.2","maintainers":[{"name":"datapod","email":"datapod.k@gmail.com"}],"homepage":"https://github.com/dandacompany/memento","bugs":{"url":"https://github.com/dandacompany/memento/issues"},"bin":{"memento":"dist/cli/index.js"},"dist":{"shasum":"e7ffed258cb2d479b52645295b8ab239c7e9cb59","tarball":"https://registry.npmjs.org/@dantelabs/memento/-/memento-0.1.2.tgz","fileCount":178,"integrity":"sha512-1U0U4Uvpp7s+eMLYNGaeHY83IipNwviaGiXChis2P1yLFnIkn5vf+W+xBK02d6rkJoV4fsNyepkVwZ1RRcToLQ==","signatures":[{"sig":"MEQCIHKgJmxRzudSkATBL8cFbv62z/8Mof69W9I8lT9S7B0DAiA6T2++Fd3mg5lknL0j21m+qnlHvSQ7BdkhcoKklDkRjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dantelabs%2fmemento@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":432731},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"44ef6e1d95b8e371252e7ad87dcd1f74cf0e81ed","scripts":{"dev":"tsc --watch","lint":"eslint src tests","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"const fs=require('fs'),cp=require('child_process'),p='./dist/install/postinstall.js';if(fs.existsSync(p)){const r=cp.spawnSync(process.execPath,[p],{stdio:'inherit'});process.exit(r.status??0)}\""},"_npmUser":{"name":"datapod","email":"datapod.k@gmail.com"},"repository":{"url":"git+https://github.com/dandacompany/memento.git","type":"git"},"_npmVersion":"10.9.7","description":"Bi-directional code-assistant memory sync (Claude Code, Codex, Gemini CLI, Antigravity, Cursor, Windsurf)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chokidar":"^4.0.3","commander":"^12.0.0","picocolors":"^1.0.1","@iarna/toml":"^2.2.5","gray-matter":"^4.0.3","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.3","eslint":"^9","vitest":"^2.1","typescript":"^5.6","@types/node":"^22","typescript-eslint":"^8","@vitest/coverage-v8":"^2.1"},"_npmOperationalInternal":{"tmp":"tmp/memento_0.1.2_1777534819455_0.32119805490656117","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dantelabs/memento","version":"0.1.3","keywords":["claude-code","codex","gemini","cursor","windsurf","antigravity","ai-memory","sync","cli"],"author":{"name":"Dante","email":"datapod.k@gmail.com"},"license":"MIT","_id":"@dantelabs/memento@0.1.3","maintainers":[{"name":"datapod","email":"datapod.k@gmail.com"}],"homepage":"https://github.com/dandacompany/memento","bugs":{"url":"https://github.com/dandacompany/memento/issues"},"bin":{"memento":"dist/cli/index.js"},"dist":{"shasum":"d3a117581fbbc4b4f0c6da923e991c89b46c2fb3","tarball":"https://registry.npmjs.org/@dantelabs/memento/-/memento-0.1.3.tgz","fileCount":187,"integrity":"sha512-JiixA8DDX/1syp2uAN9dYlo5sl6sfbdPCa6B4Wm7Ppg1m6sytIUhMJN7lZQvdYEPsjGGlMCpIfZ0yqPHAJYU/A==","signatures":[{"sig":"MEYCIQCBBbUYmpDst3BJIJD5GGwOSAdZOvGxmDKnmKbEWKScGQIhAKW6hW3t1GEJyoBXit1J6xClQ9eMtTPBQQ9K2dISSTj/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dantelabs%2fmemento@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":470840},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"2dec812a7ebaa5bcf4078533cc59bb406edb0b25","scripts":{"dev":"tsc --watch","lint":"eslint src tests","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"const fs=require('fs'),cp=require('child_process'),p='./dist/install/postinstall.js';if(fs.existsSync(p)){const r=cp.spawnSync(process.execPath,[p],{stdio:'inherit'});process.exit(r.status??0)}\""},"_npmUser":{"name":"datapod","email":"datapod.k@gmail.com"},"repository":{"url":"git+https://github.com/dandacompany/memento.git","type":"git"},"_npmVersion":"10.9.7","description":"Bi-directional code-assistant memory sync (Claude Code, Codex, Gemini CLI, Antigravity, Cursor, Windsurf)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chokidar":"^4.0.3","commander":"^12.0.0","picocolors":"^1.0.1","@iarna/toml":"^2.2.5","gray-matter":"^4.0.3","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.3","eslint":"^9","vitest":"^2.1","typescript":"^5.6","@types/node":"^22","typescript-eslint":"^8","@vitest/coverage-v8":"^2.1"},"_npmOperationalInternal":{"tmp":"tmp/memento_0.1.3_1777558020234_0.6587890429537651","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dantelabs/memento","version":"0.2.0","keywords":["claude-code","codex","gemini","cursor","windsurf","antigravity","ai-memory","sync","cli"],"author":{"name":"Dante","email":"datapod.k@gmail.com"},"license":"MIT","_id":"@dantelabs/memento@0.2.0","maintainers":[{"name":"datapod","email":"datapod.k@gmail.com"}],"homepage":"https://github.com/dandacompany/memento","bugs":{"url":"https://github.com/dandacompany/memento/issues"},"bin":{"memento":"dist/cli/index.js"},"dist":{"shasum":"955b6d0c98b26546c89a61d4a61db76200b8ff85","tarball":"https://registry.npmjs.org/@dantelabs/memento/-/memento-0.2.0.tgz","fileCount":207,"integrity":"sha512-qkA0h+7Fi+U+OEO0tTw610W9+UVgXrrVjoaE6Sl5ODavs6rsHI1cUOa/9KRwpikCZjSmI9V3OOkx7l2t7Q8HxQ==","signatures":[{"sig":"MEQCIATsTbGn8Y4eouoCeYJgMzj6Dz7OVNNj2HPAgQsV0D+RAiAd7Ttzs+QHYZBKABbj+sVKG0Su8CfFITkngFj+t6NJIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":579800},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"1120ef6d92613f1daf105e3f30e21f73039e9e12","scripts":{"dev":"tsc --watch","lint":"eslint src tests","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"const fs=require('fs'),cp=require('child_process'),p='./dist/install/postinstall.js';if(fs.existsSync(p)){const r=cp.spawnSync(process.execPath,[p],{stdio:'inherit'});process.exit(r.status??0)}\""},"_npmUser":{"name":"datapod","email":"datapod.k@gmail.com"},"repository":{"url":"git+https://github.com/dandacompany/memento.git","type":"git"},"_npmVersion":"10.9.7","description":"Bi-directional code-assistant memory sync (Claude Code, Codex, Gemini CLI, Antigravity, Cursor, Windsurf)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chokidar":"^4.0.3","commander":"^12.0.0","picocolors":"^1.0.1","@iarna/toml":"^2.2.5","gray-matter":"^4.0.3","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.3","eslint":"^9","vitest":"^2.1","typescript":"^5.6","@types/node":"^22","typescript-eslint":"^8","@vitest/coverage-v8":"^2.1"},"_npmOperationalInternal":{"tmp":"tmp/memento_0.2.0_1777642059492_0.717039196971236","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dantelabs/memento","version":"0.3.0","keywords":["claude-code","codex","gemini","cursor","windsurf","antigravity","ai-memory","sync","cli"],"author":{"name":"Dante","email":"datapod.k@gmail.com"},"license":"MIT","_id":"@dantelabs/memento@0.3.0","maintainers":[{"name":"datapod","email":"datapod.k@gmail.com"}],"homepage":"https://github.com/dandacompany/memento","bugs":{"url":"https://github.com/dandacompany/memento/issues"},"bin":{"memento":"dist/cli/index.js"},"dist":{"shasum":"79b1e8d5384cfa440979f6456607a49ae2914603","tarball":"https://registry.npmjs.org/@dantelabs/memento/-/memento-0.3.0.tgz","fileCount":215,"integrity":"sha512-S9PRJUvXOfZnVHWLcZRDtlVwcIZu40CWgvxtxlg/g/8/pHT8gisb8clR9T/d9f1JO9E0jRvbbKU487SxvbSEng==","signatures":[{"sig":"MEYCIQCDb8YIdHp+D0H8PxAM0re6rMUAhi6Tsl9f3QWV5QWIAAIhAM2z5jqw5ZUk2UhqOEVOKSIDsQmgUsWsLZA/v6gux4BF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":644550},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"649d45b41e339e1b4b7028bd63cabc568e1ecc30","scripts":{"dev":"tsc --watch","lint":"eslint src tests","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"const fs=require('fs'),cp=require('child_process'),p='./dist/install/postinstall.js';if(fs.existsSync(p)){const r=cp.spawnSync(process.execPath,[p],{stdio:'inherit'});process.exit(r.status??0)}\""},"_npmUser":{"name":"datapod","email":"datapod.k@gmail.com"},"repository":{"url":"git+https://github.com/dandacompany/memento.git","type":"git"},"_npmVersion":"10.9.7","description":"Bi-directional code-assistant memory sync (Claude Code, Codex, Gemini CLI, Antigravity, Cursor, Windsurf)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chokidar":"^4.0.3","commander":"^12.0.0","picocolors":"^1.0.1","@iarna/toml":"^2.2.5","gray-matter":"^4.0.3","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.3","eslint":"^9","vitest":"^2.1","typescript":"^5.6","@types/node":"^22","typescript-eslint":"^8","@vitest/coverage-v8":"^2.1"},"_npmOperationalInternal":{"tmp":"tmp/memento_0.3.0_1777691331723_0.013007002964259495","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@dantelabs/memento","version":"0.3.1","keywords":["claude-code","codex","gemini","cursor","windsurf","antigravity","ai-memory","sync","cli"],"author":{"name":"Dante","email":"datapod.k@gmail.com"},"license":"MIT","_id":"@dantelabs/memento@0.3.1","maintainers":[{"name":"datapod","email":"datapod.k@gmail.com"}],"homepage":"https://github.com/dandacompany/memento","bugs":{"url":"https://github.com/dandacompany/memento/issues"},"bin":{"memento":"dist/cli/index.js"},"dist":{"shasum":"02c04eb138683d6dad1c7f28845de4b5948d65f9","tarball":"https://registry.npmjs.org/@dantelabs/memento/-/memento-0.3.1.tgz","fileCount":215,"integrity":"sha512-KhrXCjRWfxpGmVW112lQeqVMQKcyesQXjbRpDwcgu2a7SY6IBWmiruV9GsD1ZNI/F6h2BwarAR38xuXgJ8IIzQ==","signatures":[{"sig":"MEUCIQD+nLHg1JyGscvfAQ7WV7SHhr8xefgOLuphUSH5By4t/wIgOgfrPJDoGakSzp1dPXsQc6CxVoZ+sbgL0iBBNG2E5VY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dantelabs%2fmemento@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":651026},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"a252627888404998197e96eb65435404292eac2b","scripts":{"dev":"tsc --watch","lint":"eslint src tests","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"const fs=require('fs'),cp=require('child_process'),p='./dist/install/postinstall.js';if(fs.existsSync(p)){const r=cp.spawnSync(process.execPath,[p],{stdio:'inherit'});process.exit(r.status??0)}\""},"_npmUser":{"name":"datapod","email":"datapod.k@gmail.com"},"repository":{"url":"git+https://github.com/dandacompany/memento.git","type":"git"},"_npmVersion":"10.9.7","description":"Bi-directional code-assistant memory sync (Claude Code, Codex, Gemini CLI, Antigravity, Cursor, Windsurf)","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chokidar":"^4.0.3","commander":"^12.0.0","picocolors":"^1.0.1","@iarna/toml":"^2.2.5","gray-matter":"^4.0.3","@inquirer/prompts":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tmp":"^0.2.3","eslint":"^9","vitest":"^2.1","typescript":"^5.6","@types/node":"^22","typescript-eslint":"^8","@vitest/coverage-v8":"^2.1"},"_npmOperationalInternal":{"tmp":"tmp/memento_0.3.1_1778028106067_0.16568566961169862","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@dantelabs/memento","version":"0.3.2","description":"Bi-directional code-assistant memory sync (Claude Code, Codex, Gemini CLI, Antigravity, Cursor, Windsurf)","type":"module","bin":{"memento":"dist/cli/index.js"},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","dev":"tsc --watch","postinstall":"node -e \"const fs=require('fs'),cp=require('child_process'),p='./dist/install/postinstall.js';if(fs.existsSync(p)){const r=cp.spawnSync(process.execPath,[p],{stdio:'inherit'});process.exit(r.status??0)}\"","test":"vitest run","test:watch":"vitest","lint":"eslint src tests","typecheck":"tsc --noEmit"},"engines":{"node":">=18"},"license":"MIT","author":{"name":"Dante","email":"datapod.k@gmail.com"},"homepage":"https://github.com/dandacompany/memento","repository":{"type":"git","url":"git+https://github.com/dandacompany/memento.git"},"keywords":["claude-code","codex","gemini","cursor","windsurf","antigravity","ai-memory","sync","cli"],"devDependencies":{"@types/node":"^22","@vitest/coverage-v8":"^2.1","eslint":"^9","tmp":"^0.2.3","typescript":"^5.6","typescript-eslint":"^8","vitest":"^2.1"},"dependencies":{"@iarna/toml":"^2.2.5","@inquirer/prompts":"^7.0.0","chokidar":"^4.0.3","commander":"^12.0.0","gray-matter":"^4.0.3","picocolors":"^1.0.1"},"_id":"@dantelabs/memento@0.3.2","gitHead":"1aedb892293e31df4e5369193b534d40ff689788","bugs":{"url":"https://github.com/dandacompany/memento/issues"},"_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-atvuQdv5G1hhrBNQdKxcrZdpCDB25dZXs7AOS7vfz1U0GV9c3fEqymMBt7Gmh4j7jzke+oS7+25DNkRYMywPlA==","shasum":"fc31f794d1f1a7dcfb2415619a990c1959073243","tarball":"https://registry.npmjs.org/@dantelabs/memento/-/memento-0.3.2.tgz","fileCount":217,"unpackedSize":660801,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dantelabs%2fmemento@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC0MsvaLyK5YiBZWaKpBQmrsHwzjh1J9fE20KwhaSVG0QIgS0bVYCzAdzSXBEhclQDERSROmVwc/L2wtiPcfCB/Rok="}]},"_npmUser":{"name":"datapod","email":"datapod.k@gmail.com"},"directories":{},"maintainers":[{"name":"datapod","email":"datapod.k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/memento_0.3.2_1778284671360_0.7425875836991842"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-30T06:59:18.629Z","modified":"2026-05-08T23:57:51.791Z","0.1.0":"2026-04-30T06:59:18.865Z","0.1.1":"2026-04-30T07:31:46.241Z","0.1.2":"2026-04-30T07:40:19.621Z","0.1.3":"2026-04-30T14:07:00.387Z","0.2.0":"2026-05-01T13:27:39.727Z","0.3.0":"2026-05-02T03:08:51.958Z","0.3.1":"2026-05-06T00:41:46.235Z","0.3.2":"2026-05-08T23:57:51.518Z"},"bugs":{"url":"https://github.com/dandacompany/memento/issues"},"author":{"name":"Dante","email":"datapod.k@gmail.com"},"license":"MIT","homepage":"https://github.com/dandacompany/memento","keywords":["claude-code","codex","gemini","cursor","windsurf","antigravity","ai-memory","sync","cli"],"repository":{"type":"git","url":"git+https://github.com/dandacompany/memento.git"},"description":"Bi-directional code-assistant memory sync (Claude Code, Codex, Gemini CLI, Antigravity, Cursor, Windsurf)","maintainers":[{"name":"datapod","email":"datapod.k@gmail.com"}],"readme":"<div align=\"center\">\n\n# memento\n\n**Bi-directional memory sync for AI coding agents**\n\nKeep Claude Code, Codex CLI, Gemini CLI, Antigravity, Cursor, and Windsurf memory files aligned without choosing a single permanent source of truth.\n\n[![npm](https://img.shields.io/npm/v/@dantelabs/memento?color=4169e1)](https://www.npmjs.com/package/@dantelabs/memento)\n[![CI](https://github.com/dandacompany/memento/actions/workflows/ci.yml/badge.svg)](https://github.com/dandacompany/memento/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey.svg)](LICENSE)\n\n[Quick Setup](#quick-setup) | [Provider Matrix](#provider-matrix) | [CLI](#cli) | [Configuration](#configuration) | [Safety](#safety-model)\n\n[Korean](README.ko.md)\n\n</div>\n\n---\n\n## What is memento?\n\nmemento is a Node.js CLI that synchronizes long-lived instruction and memory files used by AI coding agents.\n\nDifferent agents store context in different places:\n\n- Claude Code: `CLAUDE.md`, `~/.claude/CLAUDE.md`\n- Codex CLI: `AGENTS.md`, `~/.codex/AGENTS.md`\n- Gemini CLI: `GEMINI.md`, `~/.gemini/GEMINI.md`\n- Cursor: `.cursor/rules/*.mdc`\n- Windsurf: `.windsurf/rules/*.md`\n- Antigravity: `.agent/skills/**`, `memory-bank/**`, selected global memory paths\n\nWhen you switch tools or use several agents in the same repository, those files can drift. memento reads each provider's native file format, normalizes it into a shared internal document model, resolves conflicts, writes changes back to the original provider files, and creates backups before modifying anything.\n\nThe design goal is practical local synchronization:\n\n```text\nCLAUDE.md \\\nAGENTS.md  > memento sync > same project memory everywhere\nGEMINI.md /\n\n.cursor/rules/typescript.mdc \\\n.windsurf/rules/typescript.md  > same rule identity\n```\n\nmemento does not run a server, does not upload memory files, and does not replace git. It is a local CLI for keeping agent context consistent on your machine and in your repository.\n\n### What's new in 0.3.0\n\nVersion `0.3.0` includes the broader assistant context portability added across the 0.2 and 0.3 line:\n\n- Skills: synchronize provider skill bundles such as Claude Code `.claude/skills/*` and Codex `.agents/skills/*`.\n- MCP servers: synchronize project and local MCP server definitions across supported providers.\n- Resource-aware commands: `status`, `sync`, `diff`, and `watch` accept `--resources`, `--scope`, `--no-skills`, and `--no-mcp`.\n- Cross-project import: `memento import <source>` brings memory from another project into the current project.\n- Safer automation: release CI skips already published npm versions, and CLI help/version/install output includes the memento ANSI banner.\n\n---\n\n## Quick Setup\n\n### Prerequisites\n\n- Node.js 18 or newer\n- npm\n- At least one supported agent memory file in the project, or an explicit provider list passed to `memento init`\n\n### 1. Install the CLI\n\n```bash\nnpm i -g @dantelabs/memento\n```\n\nVerify the install:\n\n```bash\nmemento --version\nmemento --help\n```\n\n### 2. Initialize a project\n\nRun this from the repository root:\n\n```bash\nmemento init\n```\n\n`init` creates `.memento/config.toml` and adds these runtime files to `.gitignore`:\n\n```gitignore\n.memento/cache.json\n.memento/backup/\n```\n\nIf memento cannot auto-detect a provider, force the providers you want:\n\n```bash\nmemento init --providers claude-code,codex,gemini-cli,cursor,windsurf\n```\n\nValid provider ids are:\n\n```text\nclaude-code, codex, gemini-cli, antigravity, cursor, windsurf\n```\n\n### 3. Inspect status\n\n```bash\nmemento status\n```\n\nTypical output shows which providers are active and how memory files are grouped:\n\n```text\nmemento status\n\nProviders\nok claude-code (active)\nok codex (active)\nok gemini-cli (active)\n\nproject\nok synced  agents-md:main  claude-code, codex, gemini-cli\n```\n\n### 4. Preview or run a sync\n\nPreview first:\n\n```bash\nmemento sync --dry-run\n```\n\nThen write changes:\n\n```bash\nmemento sync\n```\n\nSync skills and MCP definitions too:\n\n```bash\nmemento sync --resources memory,skills,mcp --scope project\n```\n\nFor an interactive conflict prompt:\n\n```bash\nmemento sync --strategy prompt\n```\n\nFor CI or scripts that should fail on unresolved conflicts:\n\n```bash\nmemento sync --strategy fail\n```\n\n### 5. Keep files synchronized while you work\n\n```bash\nmemento watch\n```\n\n`watch` uses last-write-wins conflict handling and is designed for local development sessions where provider memory files may change as you switch tools.\n\n---\n\n## Core Concepts\n\n### Memory tiers\n\nmemento treats memory files as one of three tiers:\n\n| Tier | Meaning | Typical location | Git behavior |\n| --- | --- | --- | --- |\n| `project` | Shared repository memory | `CLAUDE.md`, `AGENTS.md`, `GEMINI.md`, `.cursor/rules/*.mdc` | Usually committed |\n| `project-local` | Local project memory for one machine | `CLAUDE.local.md`, `AGENTS.local.md`, `*.local.mdc` | Usually ignored |\n| `global` | User-level memory outside a project | `~/.claude/CLAUDE.md`, `~/.codex/AGENTS.md` | Not committed |\n\nBy default, project commands sync `project` and `project-local` tiers. Use `--include-global` to include global files, or use `memento global ...` to operate only on global memory.\n\n### Memory identities\n\nmemento does not simply copy every file to every other file. It groups files by semantic identity.\n\n| File | Identity |\n| --- | --- |\n| `CLAUDE.md` | `agents-md:main` |\n| `AGENTS.md` | `agents-md:main` |\n| `GEMINI.md` | `agents-md:main` |\n| `.cursor/rules/typescript.mdc` | `rule:typescript` |\n| `.windsurf/rules/typescript.md` | `rule:typescript` |\n| `.agent/skills/git-flow/SKILL.md` | `skill:git-flow` |\n| `memory-bank/core/state.md` | `memory-bank:core/state` |\n\nFiles with the same tier and identity are compared and synchronized as a group, for example `project/agents-md:main`.\n\n### No permanent source of truth\n\nmemento is bi-directional. The winning version for a group is chosen during each sync:\n\n- if all files are identical, nothing is written\n- if one file changed since the last sync, that change is propagated\n- if multiple files changed differently, the configured conflict strategy decides what happens\n\nThis lets you edit memory in whichever agent you are using at the moment.\n\n### Resource sync\n\nIn addition to markdown memory files, memento can synchronize structured assistant resources.\n\n| Resource | What it represents | Examples |\n| --- | --- | --- |\n| `memory` | Long-lived instruction files and rules | `CLAUDE.md`, `AGENTS.md`, `GEMINI.md`, Cursor/Windsurf rules |\n| `skill` | Skill directories with a `SKILL.md` entry file and related files | `.claude/skills/review`, `.agents/skills/review` |\n| `mcp` | MCP server definitions in provider config files | `.mcp.json`, `.codex/config.toml`, `.codeium/mcp_config.json` |\n\nResource commands use scopes:\n\n| Scope | Meaning |\n| --- | --- |\n| `local` | Include the provider's local/default resource locations for the current machine |\n| `project` | Use project-level resource files inside the current repository |\n| `cross-cli` | Use shared or global resource locations where supported |\n\nDefault `sync`, `status`, `diff`, and `watch` resource selection is `memory,skill,mcp`. `memento import` is more conservative and imports `memory` only unless `--resources` is provided.\n\n---\n\n## Provider Matrix\n\n| Provider | Provider id | `project` | `project-local` | `global` |\n| --- | --- | --- | --- | --- |\n| Claude Code | `claude-code` | `CLAUDE.md`, `AGENTS.md` | `CLAUDE.local.md` | `~/.claude/CLAUDE.md` |\n| Codex CLI | `codex` | `AGENTS.md` | `AGENTS.local.md` | `~/.codex/AGENTS.md` |\n| Gemini CLI | `gemini-cli` | `GEMINI.md` | `GEMINI.local.md` | `~/.gemini/GEMINI.md` |\n| Antigravity | `antigravity` | `.agent/skills/**`, `memory-bank/**` | `memory-bank/**.local.md` | `~/.gemini/antigravity/skills/**`, `~/.gemini/GEMINI.md`, `~/.antigravity/` |\n| Cursor | `cursor` | `.cursor/rules/*.mdc`, legacy `.cursorrules` | `.cursor/rules/*.local.mdc` | `~/.cursor/rules/*.mdc` |\n| Windsurf | `windsurf` | `.windsurf/rules/*.md`, legacy `.windsurfrules` | `.windsurf/rules/*.local.md` | `~/.windsurf/rules/*.md` |\n\nGemini CLI and Antigravity can both reference `~/.gemini/GEMINI.md`; memento deduplicates that shared global path.\n\n### 0.2.0 resource coverage\n\n| Provider | Skills | MCP |\n| --- | --- | --- |\n| Claude Code | `.claude/skills/*`, `~/.claude/skills/*` | `.mcp.json` |\n| Codex CLI | `.agents/skills/*`, `~/.agents/skills/*`, read-only `/etc/codex/skills` | `.codex/config.toml`, `~/.codex/config.toml` |\n| Windsurf | `.windsurf/skills/*`, `.agents/skills/*` | `.codeium/mcp_config.json` |\n| Cursor | Memory/rules only in this release | Not enabled in this release |\n| Gemini CLI | Memory only in this release | Not enabled in this release |\n| Antigravity | Existing memory-bank and skill-like memory paths | Not enabled in this release |\n\nMCP values are copied as provider configuration text. Dry-run and diff output redact secret-like fields by default.\n\n---\n\n## Common Workflows\n\n### Start with Claude Code and Codex only\n\n```bash\nmemento init --providers claude-code,codex\nmemento status\nmemento sync --strategy prompt\n```\n\n### Sync only one provider\n\n```bash\nmemento sync --provider codex\n```\n\nThis is useful when you want to write the resolved memory back to one provider after changing another provider's file.\n\n### Sync only one tier\n\n```bash\nmemento sync --tier project\nmemento sync --tier project-local\n```\n\n### Include global memory from a project sync\n\n```bash\nmemento sync --include-global\n```\n\n### Sync skills and MCP servers\n\nPreview resource writes first:\n\n```bash\nmemento sync --resources memory,skills,mcp --scope project --dry-run\n```\n\nThen run the sync:\n\n```bash\nmemento sync --resources memory,skills,mcp --scope project\n```\n\nTo skip one resource type:\n\n```bash\nmemento sync --resources memory,skills --no-mcp\nmemento status --resources mcp --scope project\n```\n\n### Import memory from another project\n\nFrom the target project root:\n\n```bash\nmemento import ../old-project --dry-run\nmemento import ../old-project --to codex --strategy replace\n```\n\nImport skills explicitly:\n\n```bash\nmemento import ../old-project --resources memory,skills --scope project\n```\n\nImport MCP definitions only after reviewing the dry-run output:\n\n```bash\nmemento import ../old-project --resources mcp --scope project --dry-run\nmemento import ../old-project --resources mcp --scope project --strategy prompt\n```\n\n### Manage only global memory\n\n```bash\nmemento global init --providers claude-code,codex,gemini-cli\nmemento global status\nmemento global sync --strategy prompt\nmemento global watch\n```\n\nGlobal commands use `~/.memento/config.toml` and operate on global provider paths only.\n\n### Use memento in CI\n\nUse `--strategy fail` to make the command fail when provider memory files disagree:\n\n```bash\nmemento sync --strategy fail --dry-run\n```\n\nExit code `2` means unresolved conflicts were found.\n\n### Restore a previous version\n\n```bash\nmemento restore --list\nmemento restore --at 2026-04-30T07-37-00_342Z\n```\n\nRestore a single group:\n\n```bash\nmemento restore --at 2026-04-30T07-37-00_342Z --group project/agents-md:main\n```\n\n---\n\n## CLI\n\n### Global options\n\n| Option | Description |\n| --- | --- |\n| `-v, --version` | Print the installed memento version |\n| `--debug` | Print debug output and stack traces |\n| `--json` | Emit JSON lines where supported |\n| `--quiet` | Suppress non-error output |\n\n### Commands\n\n| Command | Description |\n| --- | --- |\n| `memento init` | Create `.memento/config.toml` for the current project |\n| `memento status` | Show provider detection, tiers, and sync state |\n| `memento sync` | Synchronize memory files across active providers |\n| `memento watch` | Watch memory files and synchronize changes continuously |\n| `memento diff` | Show differences between grouped memory documents |\n| `memento import` | Import assistant memory from another project into the current project |\n| `memento restore` | List, restore, or prune automatic backups |\n| `memento global` | Run `init`, `status`, `sync`, `watch`, `diff`, or `restore` against global memory |\n| `memento update` | Update the global memento CLI install |\n| `memento install-skill` | Install the bundled Claude Code skill manually |\n| `memento uninstall-skill` | Remove the installed Claude Code skill |\n\nRun `memento <command> --help` for the exact options supported by your installed version.\n\n### `memento init`\n\n```bash\nmemento init [--force] [--providers <list>]\n```\n\n| Option | Description |\n| --- | --- |\n| `--force` | Overwrite an existing `.memento/config.toml` |\n| `--providers <list>` | Comma-separated provider ids to enable |\n\n`init` probes all supported providers, creates a config, and updates `.gitignore` for runtime cache and backup files.\n\n### `memento status`\n\n```bash\nmemento status [--tier <tier>] [--resources <list>] [--scope <scope>] [--include-global] [--json]\n```\n\n| Option | Description |\n| --- | --- |\n| `--tier <tier>` | Filter to `project`, `project-local`, or `global` |\n| `--resources <list>` | Filter resource kinds: `memory`, `skills`, `mcp` |\n| `--scope <scope>` | Resource scope: `local`, `project`, or `cross-cli` |\n| `--no-mcp` | Exclude MCP resources |\n| `--no-skills` | Exclude skill resources |\n| `--include-global` | Include global files in project status |\n| `--json` | Emit JSON output |\n\n### `memento sync`\n\n```bash\nmemento sync [--dry-run] [--strategy <strategy>] [--tier <tier>] [--provider <id>] [--resources <list>] [--scope <scope>] [--yes] [--include-global]\n```\n\n| Option | Description |\n| --- | --- |\n| `--dry-run` | Preview the sync without writing files |\n| `--strategy <strategy>` | Conflict strategy: `lww`, `prompt`, or `fail` |\n| `--tier <tier>` | Filter to one memory tier |\n| `--provider <id>` | Filter to one provider id |\n| `--resources <list>` | Resource kinds to sync: `memory`, `skills`, `mcp` |\n| `--scope <scope>` | Resource scope for skills and MCP |\n| `--no-mcp` | Exclude MCP resources |\n| `--no-skills` | Exclude skill resources |\n| `--allow-project-secrets` | Allow project MCP secret writes when policy permits it |\n| `--yes` | Accept non-interactive defaults; currently uses `lww` |\n| `--include-global` | Include global memory in a project sync |\n\n### `memento watch`\n\n```bash\nmemento watch [--debounce <ms>] [--tier <tier>] [--provider <id>] [--resources <list>] [--scope <scope>] [--include-global]\n```\n\n`watch` monitors provider memory files and runs sync after changes settle.\n\n| Option | Description |\n| --- | --- |\n| `--debounce <ms>` | Debounce interval in milliseconds; default is `500` |\n| `--tier <tier>` | Watch only one tier |\n| `--provider <id>` | Watch only one provider |\n| `--resources <list>` | Resource kinds to watch and sync |\n| `--scope <scope>` | Resource scope for skills and MCP |\n| `--no-mcp` | Exclude MCP resources |\n| `--no-skills` | Exclude skill resources |\n| `--include-global` | Include global memory in project watch mode |\n\n### `memento diff`\n\n```bash\nmemento diff [--group <key>] [--all] [--unified] [--tier <tier>] [--provider <id>] [--resources <list>] [--scope <scope>] [--include-global] [--json]\n```\n\n| Option | Description |\n| --- | --- |\n| `--group <key>` | Show one conflict group, such as `project/agents-md:main` |\n| `--all` | Show all diff groups |\n| `--unified` | Print unified diff output |\n| `--tier <tier>` | Filter to one memory tier |\n| `--provider <id>` | Filter to one provider id |\n| `--resources <list>` | Resource kinds to diff |\n| `--scope <scope>` | Resource scope for skills and MCP |\n| `--no-mcp` | Exclude MCP resources |\n| `--no-skills` | Exclude skill resources |\n| `--show-secrets` | Show raw secret-like values in diff output after explicit use |\n| `--include-global` | Include global memory in project diff mode |\n| `--json` | Emit JSON output |\n\n### `memento import`\n\n```bash\nmemento import <source> [--dry-run] [--from <providers>] [--to <providers>] [--strategy <strategy>] [--resources <list>]\n```\n\n`import` reads assistant memory from another project directory and writes it into the current initialized project. By default it imports memory only. Add `--resources skills,mcp` when you explicitly want skills or MCP server definitions copied too.\n\n| Option | Description |\n| --- | --- |\n| `--dry-run` | Preview the import without writing files |\n| `--from <providers>` | Comma-separated source provider ids |\n| `--to <providers>` | Comma-separated target provider ids enabled in the current config |\n| `--strategy <strategy>` | Existing-target strategy: `prompt`, `skip`, `replace`, or `append` |\n| `--resources <list>` | Resource kinds to import: `memory`, `skills`, `mcp` |\n| `--scope <scope>` | Resource scope for skills and MCP: `local`, `project`, or `cross-cli` |\n| `--tier <tier>` | Import one memory tier |\n| `--yes` | Accept non-interactive defaults; currently replaces existing target content |\n\n### `memento restore`\n\n```bash\nmemento restore [--list] [--at <timestamp>] [--group <key>] [--prune <count>]\n```\n\n| Option | Description |\n| --- | --- |\n| `--list` | List available restore points |\n| `--at <timestamp>` | Restore from a timestamp listed by `--list` |\n| `--group <key>` | Restore one memory group |\n| `--prune <count>` | Keep the newest N backups and remove older backups |\n\n### `memento global`\n\n```bash\nmemento global init\nmemento global status\nmemento global sync\nmemento global watch\nmemento global diff\nmemento global restore\n```\n\nThe global subcommands mirror the project commands but use the global memento context at `~/.memento`.\n\n### `memento update`\n\n```bash\nmemento update\nmemento update --dry-run\n```\n\n`update` runs the npm global install command for the latest published release and shows the same memento ANSI header used by help and version output.\n\n### Exit codes\n\n| Code | Meaning |\n| --- | --- |\n| `0` | Success |\n| `1` | Generic error |\n| `2` | Unresolved conflict, usually from `--strategy fail` |\n| `3` | Not initialized; run `memento init` |\n| `4` | No active providers |\n\n---\n\n## Configuration\n\nProject configuration lives at:\n\n```text\n.memento/config.toml\n```\n\nGlobal configuration lives at:\n\n```text\n~/.memento/config.toml\n```\n\nExample:\n\n```toml\n[providers.claude-code]\nenabled = true\nauto = true\ninclude_orphan = false\n\n[providers.codex]\nenabled = true\nauto = true\ninclude_orphan = false\n\n[providers.gemini-cli]\nenabled = true\nauto = true\ninclude_orphan = false\n\n[providers.cursor]\nenabled = true\nauto = true\ninclude_orphan = false\n\n[providers.windsurf]\nenabled = true\nauto = true\ninclude_orphan = false\n\n[providers.antigravity]\nenabled = false\nauto = true\ninclude_orphan = false\n\n[resources.memory]\nenabled = true\n\n[resources.skill]\nenabled = true\ninclude = []\nexclude = []\n\n[resources.mcp]\nenabled = true\nredact_output = true\nproject_secret_policy = \"wizard\"\n\n[mapping]\n\"rule:typescript\" = [\n  \"cursor:.cursor/rules/typescript.mdc\",\n  \"windsurf:.windsurf/rules/typescript.md\",\n]\n\n[exclude]\npaths = [\n  \"**/private/**\",\n  \"**/generated/**\",\n]\n```\n\n### Provider settings\n\n| Field | Meaning |\n| --- | --- |\n| `enabled` | Whether the provider participates in sync |\n| `auto` | Whether automatic detection should be respected |\n| `include_orphan` | Include memory files even when the provider app or CLI is not installed |\n\n### Resource settings\n\n| Field | Meaning |\n| --- | --- |\n| `resources.memory.enabled` | Enable markdown memory synchronization |\n| `resources.skill.enabled` | Enable skill bundle synchronization |\n| `resources.skill.include` | Optional include patterns for skill resources |\n| `resources.skill.exclude` | Optional exclude patterns for skill resources |\n| `resources.mcp.enabled` | Enable MCP server definition synchronization |\n| `resources.mcp.redact_output` | Redact secret-like MCP values in command output |\n| `resources.mcp.project_secret_policy` | Policy for project-level MCP secrets; default is `wizard` |\n\n### Mapping overrides\n\nUse `[mapping]` when two files should be treated as the same identity but their default filenames would not match.\n\n```toml\n[mapping]\n\"rule:backend-style\" = [\n  \"cursor:.cursor/rules/backend.mdc\",\n  \"windsurf:.windsurf/rules/api-style.md\",\n]\n```\n\n### Excludes\n\nUse excludes for private, generated, large, or high-churn files.\n\n```toml\n[exclude]\npaths = [\n  \"**/secrets/**\",\n  \"**/scratch/**\",\n]\n```\n\n---\n\n## Conflict Resolution\n\nmemento compares normalized document bodies and the previous sync cache.\n\n| Strategy | Behavior | Best for |\n| --- | --- | --- |\n| `lww` | Last write wins; the newest modified file becomes the winner | automation, watch mode, quick local sync |\n| `prompt` | Ask which version should win, show diff, or edit manually | interactive terminal sessions |\n| `fail` | Exit with code `2` without writing conflicting groups | CI, pre-commit checks, strict workflows |\n\nExamples:\n\n```bash\nmemento sync --strategy lww\nmemento sync --strategy prompt\nmemento sync --strategy fail --dry-run\n```\n\n`memento watch` always uses `lww`, because a long-running file watcher cannot safely stop for interactive prompts.\n\n---\n\n## Backup & Restore\n\nBefore writing provider memory files, memento saves the previous contents under:\n\n```text\n.memento/backup/<timestamp>/\n```\n\nBackups are local runtime artifacts and should not be committed.\n\nCommon commands:\n\n```bash\nmemento restore --list\nmemento restore --at <timestamp>\nmemento restore --at <timestamp> --group project/agents-md:main\nmemento restore --prune 10\n```\n\nUse restore when a sync chose the wrong winner, when you want to inspect older memory contents, or when a provider file was manually damaged after a sync.\n\n---\n\n## Claude Code Skill\n\nThe npm package includes a Claude Code skill for operating memento from inside Claude Code.\n\nDuring `npm i -g @dantelabs/memento`, the package postinstall step attempts to copy the skill into Claude's skills directory when that directory is available. If auto-install is skipped or you want to reinstall manually:\n\n```bash\nmemento install-skill\n```\n\nRemove it with:\n\n```bash\nmemento uninstall-skill\n```\n\nSkip automatic skill installation during npm install:\n\n```bash\nMEMENTO_SKIP_SKILL_INSTALL=1 npm i -g @dantelabs/memento\n```\n\n---\n\n## Safety Model\n\nmemento is intentionally conservative around writes.\n\n- Local-only: files are read and written on your machine; memento does not upload memory content.\n- Explicit config: project sync requires `.memento/config.toml`.\n- Dry-run support: use `memento sync --dry-run` before writing.\n- Resource dry-run support: preview skills and MCP changes with `--resources ... --dry-run`.\n- Automatic backups: every write has a restore point.\n- Conflict strategies: choose `prompt` for manual control or `fail` for CI.\n- MCP secret awareness: secret-like fields are redacted in output by default.\n- Shared global dedupe: shared Gemini/Antigravity global paths are handled once.\n- Watch ignore rules: `.memento` cache and backup writes do not retrigger sync loops.\n\nRecommended team practice:\n\n- Commit shared `project` memory files when they are meant for the whole repository.\n- Keep `project-local` and `.memento/cache.json` out of git.\n- Review `memento diff --all --unified` before the first sync in an existing repository.\n- Use `memento sync --strategy fail --dry-run` in CI if memory drift should block merges.\n\n---\n\n## Developer & Support\n\nmemento is built and maintained by **Dante Labs** as part of a broader toolkit for practical AI-agent workflows.\n\n| Link | Description |\n| --- | --- |\n| **GitHub** | [dandacompany/memento](https://github.com/dandacompany/memento) |\n| **npm** | [@dantelabs/memento](https://www.npmjs.com/package/@dantelabs/memento) |\n| **YouTube** | [@dante-labs](https://youtube.com/@dante-labs) |\n| **Email** | [dante@dante-labs.com](mailto:dante@dante-labs.com) |\n| **Support** | [Buy Me a Coffee](https://buymeacoffee.com/dante.labs) |\n\nIf memento saves you time, helps keep your agent context clean, or becomes part of your daily workflow, sponsorship is appreciated and helps fund continued maintenance, new provider adapters, and real-world compatibility testing.\n\nIssues, bug reports, and provider mapping requests are welcome on GitHub.\n\n---\n\n## License\n\n[MIT](LICENSE)  \nCopyright (c) 2026 Dante Labs.\n\n---\n\n<div align=\"center\">\n\n**Dante Labs** · **YouTube** [@dante-labs](https://youtube.com/@dante-labs) · **Email** [dante@dante-labs.com](mailto:dante@dante-labs.com) · **Support** [Buy Me a Coffee](https://buymeacoffee.com/dante.labs)\n\n</div>\n","readmeFilename":"README.md"}