{"_id":"@aiwayds/dsh-vault","_rev":"7-4614620313c8e22f1eaaa43df1c0b60d","name":"@aiwayds/dsh-vault","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@aiwayds/dsh-vault","version":"0.1.0","keywords":["dsh","dsh-plugin","plugin","backup","restore","migration","vault"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-vault@0.1.0","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-vault","bugs":{"url":"https://github.com/fan56/dsh-vault/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"d17bb5908da4f8269c2d73ccfc1132f9686839b4","tarball":"https://registry.npmjs.org/@aiwayds/dsh-vault/-/dsh-vault-0.1.0.tgz","fileCount":40,"integrity":"sha512-OeyB46caw6pPB/esebRuioL9sM1QFhGKUq3bU6EcDVP3N8rSDhCGGtTY1wtb15vEi6WTz/uBBkjd5kFjXGRjsw==","signatures":[{"sig":"MEYCIQC6uPbo597V2TcV7h37acJPzI+haaT+isRiHRqgt+Uv0AIhAMDOs0+GSQmSeUTyPourLKwb0E4Mpx6dk8HnxczGO+mx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151906},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"980aca186e19527dfe22ab3397df13513c73eb65","scripts":{"e2e":"./e2e/run-e2e.sh","test":"node --test test/crypto.test.mjs test/backupset.test.mjs test/manifest.test.mjs test/table.test.mjs test/command.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","smoke":"node scripts/smoke-boot.mjs","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-vault.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh plugin: encrypted backup / restore / migration of the dsh home config through a private GitHub repo","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-vault_0.1.0_1788230696237_0.2535090907532753","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aiwayds/dsh-vault","version":"0.2.0","keywords":["dsh","dsh-plugin","plugin","backup","restore","migration","vault"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-vault@0.2.0","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-vault","bugs":{"url":"https://github.com/fan56/dsh-vault/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"97dbf2306325a9b332b5881bf7fdd0c749e53a3b","tarball":"https://registry.npmjs.org/@aiwayds/dsh-vault/-/dsh-vault-0.2.0.tgz","fileCount":41,"integrity":"sha512-XtaD8m7BHd6Pp+37Pb/RmcGSL2oYmRnze8yauFovi9yYTxEYfB3fruWMPRqzLjtZNqAYQrZPCJBNtm2P9RUaYw==","signatures":[{"sig":"MEUCIQDhKKW1G87osvshdXuiHpTwDnLv2Nc05eAetkq4dVCbfwIgfuQtVpThKAwSBqPd5Q4UAqDUKI579k3ii8JnGTHh8X8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157523},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"acc648215dbe918e2746fa01f1e9275a9269a43f","scripts":{"e2e":"./e2e/run-e2e.sh","test":"node --test test/crypto.test.mjs test/backupset.test.mjs test/manifest.test.mjs test/table.test.mjs test/command.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","smoke":"node scripts/smoke-boot.mjs","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-vault.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh-plugin: encrypted backup / restore / migration of the dsh home config through a private GitHub repo","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.2-alpha.3","@deepseek-ai/dsh-settings":"0.1.2-alpha.3"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.2-alpha.3","@deepseek-ai/dsh-settings":">=0.1.2-alpha.3"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-vault_0.2.0_1788281562617_0.2597393193130446","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aiwayds/dsh-vault","version":"0.3.0","keywords":["dsh","dsh-plugin","plugin","backup","restore","migration","vault"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-vault@0.3.0","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-vault","bugs":{"url":"https://github.com/fan56/dsh-vault/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"9db13773913b0e567605a8ed7f4a8faaa79aad0e","tarball":"https://registry.npmjs.org/@aiwayds/dsh-vault/-/dsh-vault-0.3.0.tgz","fileCount":41,"integrity":"sha512-QJSofA/NdDOID9Dmiud2vWy5O6ZcwfaASWViEirueFpD2CWm1x9W7o9a2pKdyS9Tb2F7SE73dUlfKUcVlf5i8Q==","signatures":[{"sig":"MEUCIDBh+4l5LUFKb4vW0TujGTjclw41zJVT4zek85Akmaw/AiEA8gBvICJB6vU+SvOzixJDZmHDvEKZimD6gGkh7k0PKic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157660},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"8ca7b627e0d13ad50505975fa3c415363fb6c8db","scripts":{"e2e":"./e2e/run-e2e.sh","test":"node --test test/crypto.test.mjs test/backupset.test.mjs test/manifest.test.mjs test/table.test.mjs test/command.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","smoke":"node scripts/smoke-boot.mjs","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-vault.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh-plugin: encrypted backup / restore / migration of the dsh home config through a private GitHub repo","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.2-rc.1","@deepseek-ai/dsh-settings":"0.1.2-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.2-rc.1","@deepseek-ai/dsh-settings":">=0.1.2-rc.1"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-vault_0.3.0_1788442377126_0.9142890791303926","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aiwayds/dsh-vault","version":"0.3.1","keywords":["dsh","dsh-plugin","plugin","backup","restore","migration","vault"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-vault@0.3.1","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-vault","bugs":{"url":"https://github.com/fan56/dsh-vault/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"2fc98c7bf1472065d797aaaab6e8162bd9fc2c5f","tarball":"https://registry.npmjs.org/@aiwayds/dsh-vault/-/dsh-vault-0.3.1.tgz","fileCount":41,"integrity":"sha512-Zdw8JLpnVNcp8JVyVGyNyovSzTG4ScvGFHSLtn3pL3sYUZr38zfWbX5vr3Q/hXadTnyXZXB1h6fELBln0XlD9A==","signatures":[{"sig":"MEUCIQD4GgMfraTSWXEl0vOADM94+3TbkJrRqhisnaXwk54BIgIgK1kbqMxkTmgYnCLGbdGxZj5WYzHnvXYN2CP/fn34GMo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159517},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"25351fc390f1a648afe08ff2626d69a1cadd965a","scripts":{"e2e":"./e2e/run-e2e.sh","test":"node --test test/crypto.test.mjs test/backupset.test.mjs test/manifest.test.mjs test/table.test.mjs test/command.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","smoke":"node scripts/smoke-boot.mjs","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-vault.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh-plugin: encrypted backup / restore / migration of the dsh home config through a private GitHub repo","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.2-rc.1","@deepseek-ai/dsh-settings":"0.1.2-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.2-rc.1","@deepseek-ai/dsh-settings":">=0.1.2-rc.1"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-vault_0.3.1_1788603338426_0.3739930234156501","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aiwayds/dsh-vault","version":"0.4.0","keywords":["dsh","dsh-plugin","plugin","backup","restore","migration","vault"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-vault@0.4.0","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-vault","bugs":{"url":"https://github.com/fan56/dsh-vault/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"78c32dcc622e4de0c402312374328aa70e83d5fa","tarball":"https://registry.npmjs.org/@aiwayds/dsh-vault/-/dsh-vault-0.4.0.tgz","fileCount":42,"integrity":"sha512-kXY2QHFAYVvbjGn4XhVfdp11Gsn21Fx4jnaKutuNVL46qypQBNYuhuoezgUuToe/L+gqhr21psW67h5h62HWig==","signatures":[{"sig":"MEUCIQC4Yc0y/VesiLrFMEkoCC82b/zeG+N/YQR55XMgJlUaIQIgAQBCA6r8r6vt5TYFxruAwnbqxkyPRkRr68oDQKbIloY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177677},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"a953b69aba72523796e848490a4ca3f263ff3efe","scripts":{"e2e":"./e2e/run-e2e.sh","test":"node --test test/crypto.test.mjs test/backupset.test.mjs test/manifest.test.mjs test/table.test.mjs test/command.test.mjs test/skill.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","smoke":"node scripts/smoke-boot.mjs","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-vault.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh-plugin: encrypted backup / restore / migration of the dsh home config through a private GitHub repo","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/dsh-skill":"0.1.2-rc.1","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.2-rc.1","@deepseek-ai/dsh-settings":"0.1.2-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-skill":">=0.1.2-rc.1","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.2-rc.1","@deepseek-ai/dsh-settings":">=0.1.2-rc.1"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-skill":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-vault_0.4.0_1788884461596_0.3182329228186038","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@aiwayds/dsh-vault","version":"0.4.1","keywords":["dsh","dsh-plugin","plugin","backup","restore","migration","vault"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-vault@0.4.1","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-vault","bugs":{"url":"https://github.com/fan56/dsh-vault/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"5556a1f1937cbc215374ea9acb6413ca53acc537","tarball":"https://registry.npmjs.org/@aiwayds/dsh-vault/-/dsh-vault-0.4.1.tgz","fileCount":42,"integrity":"sha512-7yDJrdW9q4i3npDZQCizr4wugsDAW+lf50DXRKwZmNorfY1wrEnhUx/9VNNH1KEifJ2/xkCLXThAv0Fdc+2WGA==","signatures":[{"sig":"MEUCIQCfitzTCJHBNCHRyJUpQsacpzwJFaFOuYq7WxMc1+nq1wIgZuG8tBLHCMb2fLSY8VAZjffVZat66etT/vQvm2AtxAM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177742},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"b5d054d2b16d308f2cbfd83c7a2818f2d16d0afe","scripts":{"e2e":"./e2e/run-e2e.sh","test":"node --test test/crypto.test.mjs test/backupset.test.mjs test/manifest.test.mjs test/table.test.mjs test/command.test.mjs test/skill.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","smoke":"node scripts/smoke-boot.mjs","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-vault.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh-plugin: encrypted backup / restore / migration of the dsh home config through a private GitHub repo","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/dsh-skill":"0.1.2-rc.1","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.2-rc.1","@deepseek-ai/dsh-settings":"0.1.2-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-skill":">=0.1.2-rc.1","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.2-rc.1","@deepseek-ai/dsh-settings":">=0.1.2-rc.1"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-skill":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-vault_0.4.1_1788914040771_0.7152323819353661","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@aiwayds/dsh-vault","version":"0.5.0","description":"dsh-plugin: encrypted backup / restore / migration of the dsh home config through a private GitHub repo","type":"module","main":"lib/index.js","types":"lib/index.d.ts","license":"MIT","keywords":["dsh","dsh-plugin","plugin","backup","restore","migration","vault"],"repository":{"type":"git","url":"git+https://github.com/fan56/dsh-vault.git"},"homepage":"https://github.com/fan56/dsh-vault","engines":{"node":">=22.19.0"},"scripts":{"build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json","test":"node --test test/crypto.test.mjs test/backupset.test.mjs test/manifest.test.mjs test/table.test.mjs test/command.test.mjs test/skill.test.mjs","smoke":"node scripts/smoke-boot.mjs","e2e":"./e2e/run-e2e.sh"},"dependencies":{},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-commands":">=0.1.5-rc.2","@deepseek-ai/dsh-settings":">=0.1.5-rc.2","@deepseek-ai/dsh-skill":">=0.1.5-rc.2","@deepseek-ai/schemastery":"^3.18.2"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true},"@deepseek-ai/dsh-skill":{"optional":true},"@deepseek-ai/schemastery":{"optional":true}},"devDependencies":{"@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/dsh-commands":"0.1.5-rc.2","@deepseek-ai/dsh-settings":"0.1.5-rc.2","@deepseek-ai/dsh-skill":"0.1.5-rc.2","@deepseek-ai/schemastery":"3.18.2","typescript":"^5.9.0"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"author":{"name":"fliu56"},"publishConfig":{"access":"public"},"_id":"@aiwayds/dsh-vault@0.5.0","gitHead":"db983d0bb3d8bc7fa3ae670952940c7219894ca5","bugs":{"url":"https://github.com/fan56/dsh-vault/issues"},"_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-YSM8l2ze2XWwvNJQDpEem/qBW+z/BOIA+9pDg4WlupcvggIp+L7QzeLV5MwIRB2zvx9lSsaC4ppaHUQhei1Wfw==","shasum":"49f4a7766129f97d90506cf3c4f464a0d5ab51ad","tarball":"https://registry.npmjs.org/@aiwayds/dsh-vault/-/dsh-vault-0.5.0.tgz","fileCount":42,"unpackedSize":177742,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBa0mtuJCvMs7fsef25sYAdCOz2+R5xJt/0LjK2yMqqkAiBJ38yPHn7Mgm4V77e/J1xbp5R2dMPUlwog3RITTYqw0g=="}]},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"directories":{},"maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-vault_0.5.0_1789098081187_0.027767752122671352"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-01T02:44:56.064Z","modified":"2026-09-11T03:41:21.496Z","0.1.0":"2026-09-01T02:44:56.385Z","0.2.0":"2026-09-01T16:52:42.759Z","0.3.0":"2026-09-03T13:32:57.268Z","0.3.1":"2026-09-05T10:15:38.563Z","0.4.0":"2026-09-08T16:21:01.804Z","0.4.1":"2026-09-09T00:34:00.914Z","0.5.0":"2026-09-11T03:41:21.360Z"},"bugs":{"url":"https://github.com/fan56/dsh-vault/issues"},"author":{"name":"fliu56"},"license":"MIT","homepage":"https://github.com/fan56/dsh-vault","keywords":["dsh","dsh-plugin","plugin","backup","restore","migration","vault"],"repository":{"type":"git","url":"git+https://github.com/fan56/dsh-vault.git"},"description":"dsh-plugin: encrypted backup / restore / migration of the dsh home config through a private GitHub repo","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"readme":"# dsh-vault\n\n[English](README.md) | 中文\n\n[dsh](https://github.com/deepseek-ai/deepseek-harness) 插件：把本机 dsh 配置**加密备份**到自己的 GitHub 私有仓库，在新机器上**一条命令拉平**——恢复配置、按清单重装插件，跨机恢复即迁移。\n\n**要求 dsh >= 0.1.5-rc.2** — 本插件只跟随 dsh RC/stable 线（CI 与发版在运行时解析 latest/next 中更新的 dist-tag）。**不再支持 alpha 线。**\n\n零 npm 依赖：加密只用 Node 内置 `crypto`（scrypt + AES-256-GCM），GitHub 传输走 REST。\n\n## 命令\n\n```\n/vault backup [口令]              备份并推送（repo 不存在则自动创建 private）\n/vault list                       表格列出 Vault 里所有机器的备份信息\n                                  （机器/描述/快照时间/文件数/大小，← 本机 标记）\n/vault restore [机器] [--yes] [口令]\n                                  不带机器名 = 列表快照\n                                  跨机选择 = 迁移；--yes 才真正执行\n/vault config                     查看当前设置\n/vault set repo <owner/name>      覆盖默认仓库名\n/vault set machine-desc <描述>    机器描述（写进快照清单，跨机选择时辨认用）\n/vault set remember-passphrase on|off\n                                  on 时下一次带口令的 backup 把口令存入钥匙串\n```\n\n## 配置\n\n全部配置都在 `~/.dsh/settings.yaml` 的顶层 `vault:` 段——与 `/vault set` 写回的是同一段：\n\n```yaml\nvault:\n  repo: \"\"                        # owner/name 覆盖；空 = 默认 dsh-backup-<用户名>\n  machineDescription: \"\"          # 写进快照清单的机器描述\n  rememberPassphrase: false       # backup 时把口令存入 macOS 钥匙串\n```\n\n口令来源优先级：命令内联参数（不落日志）→ `$DSH_VAULT_PASSPHRASE` 环境变量 →\nmacOS 钥匙串（`rememberPassphrase` 开启时）。GitHub 凭据来自 `$GITHUB_TOKEN`\n或已登录的 `gh` CLI。\n\n插件内置了一个 skill（`dsh-vault-config`）：直接让 agent「帮我配置备份 / 做首次备份」，\n指南会自动加载——以问答方式逐项收集（仓库、机器描述、口令记忆）并代写 `vault:` 段。\n\n## 卸载\n\n```bash\ndsh plugin --profile tui remove @aiwayds/dsh-vault\n```\n\n宿主会自动清理 profile：`dsh.profile.bundles` 条目被摘除，插件的 patch 层随之卸下。但这是一个涉密/备份插件，有几样东西**在卸载后仍然留存**——`remove` 一概不碰，需自行处置：\n\n1. **macOS 钥匙串条目**（service + account 均为 `dsh-vault`），存着记住的口令。卸载前先 `/vault set remember-passphrase off` 关掉，或卸载后在「钥匙串访问」里手工删除该条目。\n2. **GitHub 私有仓库 `dsh-backup-<用户名>`**（首次 backup 自动创建），存着加密快照——不需要就在 GitHub 上删除。\n3. **`~/.dsh/vault/stash/`**——最多 3 份 restore 前的整包配置暂存（含 `.credentials.yaml`，权限 0600）。`rm -r ~/.dsh/vault` 清掉。\n4. **`~/.dsh/settings.yaml` 里的 `vault:` 段**——手工删除相关行。\n\n## 备份集\n\n**进**：`settings.yaml`、`.credentials.yaml`（API keys）、`APPEND_SYSTEM.md`、`agents/`、每个 profile 的清单四件套（`package.json` / `pnpm-lock.yaml` / `pnpm-workspace.yaml` / `cordis.patch.yml`）、home 级 `cordis.patch.yml`、`models-store.json`。\n\n**不进**：`sessions/`、`storages/`、一切 `node_modules`（按清单重装）、`cordis.yml`（宿主启动时无条件重写）、`.anonymous-user-id`、使用统计。\n\n## 安全模型\n\n- 快照在离开本机前**整包加密**：口令 → scrypt 派生密钥 → AES-256-GCM（vault format v1，头部自带 KDF 参数与版本号）。\n- 私有仓库只是第一道门（token 泄露），加密才是数据门。**口令遗失 = 快照永久不可解**，插件不做找回。\n- 口令三种给法：命令内联（`recordInput: false`，不落会话日志）→ `$DSH_VAULT_PASSPHRASE` 环境变量 → macOS 钥匙串（`remember-passphrase on` 时自动存取）。\n- backup 前做加密自检（加密后立即解回核对），坏快照不会顶掉好快照；restore 前把当前配置暂存到 `~/.dsh/vault/stash/`（保留最近 3 份）。\n- GitHub 凭据：复用 `$GITHUB_TOKEN` 或已登录的 `gh` CLI；**登录不在插件职责内**。\n\n## Vault 布局\n\n```\ndsh-backup-<github用户名>/          ← private，可 /vault set repo 覆盖\n└── machines/<hostname>/\n    ├── snapshot.enc               ← 加密快照（每机只留最新，覆盖式）\n    └── manifest.json              ← 明文元数据（机器/描述/时间/文件清单，无密钥材料）\n```\n\n## 已知限制\n\n- profile 清单里的 `file:` 绝对路径依赖（如本地 link 的插件）在别的机器上无效，restore 会警告，需手工处理。\n- `.env`、`storages/`（含机器绝对路径）不迁移；会话历史不迁移。\n- 每机只留最新快照（刻意为之，见 ADR 0003）——想加历史是格式级变更。\n- restore 的插件重装依赖 `dsh` CLI 与 `pnpm` 在 PATH 上。\n\n## 开发\n\n```bash\npnpm install && pnpm build && pnpm test   # 单测（24 个）\nnode scripts/smoke-boot.mjs               # 真宿主 boot 冒烟（scratch profile）\nnode scripts/e2e-host.mjs                 # 真 GitHub 回环（沙箱 home + scratch repo）\n./e2e/run-e2e.sh                          # podman 容器 e2e（隔离 ~/.dsh）\n```\n\n设计文档：[CONTEXT.md](./CONTEXT.md)（术语表）与 [docs/adr/](./docs/adr/)（备份集边界、加密方案、覆盖式快照、单 repo 多机布局）。\n","readmeFilename":"README.zh.md"}