{"_id":"@anionex/dsh-turn-rewind","_rev":"17-ff80800ee7c97f7c5665357957023915","name":"@anionex/dsh-turn-rewind","dist-tags":{"latest":"0.3.9"},"versions":{"0.1.0":{"name":"@anionex/dsh-turn-rewind","version":"0.1.0","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.1.0","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"}},"dist":{"shasum":"8c6f4fac25246fb731a914e73bdd5001e29ffe0f","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.1.0.tgz","fileCount":45,"integrity":"sha512-0A0awLHu+LM0/Mf91DbyEL5apujOnwD6dCSEOFi1Qabo0tIuISCiJBzLHKRs8QSBlHvXtScw8IIJmPD6BFnnrQ==","signatures":[{"sig":"MEUCIQCfTgFF2S6W7WQrga+Sa/48WjKKSIXL5bsAMfby1gy/QwIgfWrB4njRKOnFZlWwJzDUJyzryxqCjtJ1Ur6o7i+tXm8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":527172},"main":"lib/index.js","type":"module","_from":"file:/tmp/anionex-dsh-turn-rewind-0.1.0.tgz","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"_resolved":"/tmp/anionex-dsh-turn-rewind-0.1.0.tgz","_integrity":"sha512-0A0awLHu+LM0/Mf91DbyEL5apujOnwD6dCSEOFi1Qabo0tIuISCiJBzLHKRs8QSBlHvXtScw8IIJmPD6BFnnrQ==","repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.12.1","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.1.0_1786719523985_0.4653385403794057","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@anionex/dsh-turn-rewind","version":"0.1.1","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.1.1","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"}},"dist":{"shasum":"2e4672e9ca036c347ea0a7f8e33298ce1f84018f","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.1.1.tgz","fileCount":45,"integrity":"sha512-pgFXZmvQDynLDDbpSltCTxWEgPOFuvZojuPgWDZ3Em/OlFicoRoHQQbhHRuitvXgVF/t4tvCApaDtAhs0+ZvOg==","signatures":[{"sig":"MEUCIAXwysEsvKJv53GtWLJQBPDCunrZT7Z5xqHY7f7mBLi6AiEA/pe+LPX1h1h/TYRj7tnt/AK7oeKqoQxiUOf5KvwnHTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":528086},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"b1b85f18aaaaf71d76c84613429ce04d71f69620","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.12.1","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.1.1_1786900626725_0.7176017019179215","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@anionex/dsh-turn-rewind","version":"0.1.2","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.1.2","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"}},"dist":{"shasum":"ebcd20a1ddbda3122e7e940354b7aa4d05fc73fe","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.1.2.tgz","fileCount":54,"integrity":"sha512-GoV1+BUp1YCTMft8K65x+VYHc/KtCmXp3o29veU8BT0vKP++X6dfd8kiSPZ/NMB8axZPBjCnKu8p7wt9Gzg/XQ==","signatures":[{"sig":"MEUCIQD3hVaqoQsfPQI2k9O82Bn9VuG2VVt24QNHTIxMK4do+wIgEs5DRhTFE6UJbxdF+912SWzpE7QQMT8C76VQwF6vZ3k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847363},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.12.1","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.1.2_1787497974846_0.24354275021672023","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@anionex/dsh-turn-rewind","version":"0.2.0","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.2.0","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible"}}},"dist":{"shasum":"721a5b27f8e626e8d5c60b2507217bf06b2810a1","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.2.0.tgz","fileCount":57,"integrity":"sha512-1n7dpz0rgLhVmJlMJ9FHaaqx1lQzBq++xG+6GmuAb05DDsVavAmOXnIot16WaT3IqUX+5GDkT1Zm6VgYgk7FDQ==","signatures":[{"sig":"MEUCID7Qvns4Pj3NSmAK5b0I8PIswFJbQs1wTE++HL41GoKeAiEAvGhsbnL1Uh2cG0exTlI08k/z5OHXFvyaLPo1XxABggk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":977697},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.12.1","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.2.0_1788011654939_0.5612539343739238","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@anionex/dsh-turn-rewind","version":"0.2.1","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.2.1","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible"}}},"dist":{"shasum":"c809e786e241f5ede396169c58ede60909a4e5d9","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.2.1.tgz","fileCount":57,"integrity":"sha512-ckvCLeiSGBEVEDlCyysU9Mlv7xnoLDjp0yYO4S8shIGVDcchj4hmpDcV4tT3nUJ8D5jOcNvA1QRF1wuogwkujw==","signatures":[{"sig":"MEYCIQDsvmOu5zBx9iiMXL9OwpLDZSxaJgDJ00yxbGQCEeL32wIhAP14pYIO8QKCfaWLVDld1bCFq27oyFpSA6fx2lWCRB4r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":976396},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"8dcdbbb6faa5f4e0c821adc88e0e43298730da5a","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.2.1_1788258512270_0.35602110015575006","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@anionex/dsh-turn-rewind","version":"0.2.2","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.2.2","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible"}}},"dist":{"shasum":"a79df22b8e08abc90bc572c61e2673672aa847d8","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.2.2.tgz","fileCount":57,"integrity":"sha512-TV+J+l290pc16YH02erHglZAzJMwbPv3nGaBPqwuDikalZsMdc/LNLkMRN2QiD4mtsxfrcXZZu4CZUwGpk+Ptw==","signatures":[{"sig":"MEUCIQC3GWps3GTgUTY8AZ8oeb4N6oO/NfWQsGMM+a5dO50LawIgWHxtUx6RxwUecefZNzFp6Tp8JF5e/V0cTXmV0lWKVxc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD2gGWP8w9BNcMbExr4juvHSD6+cyZxmAuOKWd5/FUQnwIhAIpISlmXjSoyQPgtIDfCBwRR26hKME+TILCPuWm2zPVU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":994860},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"690699fdf915dd23374b9708c22a5458cb7ed869","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.2.2_1788936903636_0.4228743553364698","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@anionex/dsh-turn-rewind","version":"0.2.3","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.2.3","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible"}}},"dist":{"shasum":"052fd99727cf13bd1dcf7da7a1862fc7dea4ff12","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.2.3.tgz","fileCount":57,"integrity":"sha512-oHcYqLXiDboYcfy45vAPKDXxTTaQ69pS01foY3GvqV+8dd1pBZGAlQwUVh2bbzt2YEEylMys77pXCoZFI3lZSg==","signatures":[{"sig":"MEYCIQCCbTvFmwGUuBjwF5JhkjvV1n3CzqtB0fi6g3JERL+5+AIhAIWQvcIgXWezVfijkwfVE2s2F5Fzt9m1euM6u2XKMkN8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDe9gikMCABEImYp69W4JCFeWwFYuQOgJy+uwfOqkJVkAIgE5o9vA0mO2oarAv+LRX8yOBAh1nKK1oTE1jnJRuqGg0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":996100},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"c7dcea0f28c65df81d605fc9e617fd56190f0466","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.2.3_1788960952676_0.5696107482381148","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@anionex/dsh-turn-rewind","version":"0.3.0","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.3.0","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible"}}},"dist":{"shasum":"f05c4b1697532c4c50533f4f6c2bfa770221b3ed","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.3.0.tgz","fileCount":63,"integrity":"sha512-guqWVbiZEXBIMxOqB79vttX6Q+A9gkVRP9AjJ2keYeyqhK2mXJLsZKt4isv/w5nNlFrJluMaPNudQqG9Xafwqw==","signatures":[{"sig":"MEYCIQCrKaURAqZOEGe+8Yg6VTjr5wP8R+Lq+41jn8SU08PJ7wIhAL3aaXOj1n9JFwSAIP1q4POt95FJS334PX9N264Ch+Z5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDAIs/FEto2fFfuC4ckR8yqICSgwseXHmp5Shv8KLtXvwIhAPYVgmsAX/TVfx9reHt+uB35H/xGv0Qt22bttqoxfKbp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1034646},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3bcb1d0c18c0ee66cf2754ba362f89bddeac78b1","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","dependencies":{"ignore":"^7.0.9"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.3.0_1788962736548_0.9235248654631334","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@anionex/dsh-turn-rewind","version":"0.3.1","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.3.1","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.5-rc.1":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible","0.1.5-alpha.1":"compatible","0.1.5-alpha.2":"compatible"}}},"dist":{"shasum":"fce012113009f041c7db7867584de5acb867a112","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.3.1.tgz","fileCount":63,"integrity":"sha512-WQHSupzJhtNKUHiHT1hrCWa7xzKDbX4N0JrDUwXe+c9P45+AFN8RcVxn91hMPYUfTPMaZvHGx3/cWmbT3pdonA==","signatures":[{"sig":"MEQCIAQHDun8iGsKEU6Av3t63jTGecJctVE+rQFMdASPXiEAAiBXieVPaGSrEngbbcDsgXBI4Yn7PPTEGMgplN5YMOz8OQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBAHNm2IsLPayq1klKbBYaCeP7k2pzHkZn/ZaoLHlinpAiEA19H8hCS6r/HNrDNRxR1ZWIaQwpYS+Lm5839uUKI2GZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1048215},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"dad0c5ca6df5618aa38e98dd1b21053181523854","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","dependencies":{"ignore":"^7.0.9"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.3.1_1789027535450_0.08105751094136782","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@anionex/dsh-turn-rewind","version":"0.3.2","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.3.2","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.5-rc.1":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible","0.1.5-alpha.1":"compatible","0.1.5-alpha.2":"compatible"}}},"dist":{"shasum":"344e2c11cbdc9e3ba6989d59f36bd291d40032d0","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.3.2.tgz","fileCount":63,"integrity":"sha512-lM/Fr5GHxr2l6XrbFkWe1/+hq9IhyamG9IrCkM4axnfGVpYLsVO3lWVfBr0BNfeHg7RDQD1kJuBAvxBku4o5iw==","signatures":[{"sig":"MEYCIQDucwqWhOTTsu0iOD+o3ltVmlqEclLh4oLFFmVRINtojAIhALnmok+5x+MxWScd5BEZEYYTkSrsih9dvFUIbDmh3bcy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDwk5ce6vHa3AbduPqcrQT9o7pwhq4ru/Sm8FxNeyxzmAIhAMEpRtEJw7bH0DZpDNzULCFcQWwdH7iZnWhu0fllOcBU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1048215},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"8d6600d5a5b5824dab0f20d9d28cf8b392232e7c","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","dependencies":{"ignore":"^7.0.9"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.3.2_1789027725763_0.4808715440775828","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@anionex/dsh-turn-rewind","version":"0.3.3","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.3.3","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.5-rc.1":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible","0.1.5-alpha.1":"compatible","0.1.5-alpha.2":"compatible"}}},"dist":{"shasum":"313fc6cf02ac9e128d0d2ca5c3577a13f1e53620","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.3.3.tgz","fileCount":63,"integrity":"sha512-/BBlyGOME6bm/sLbTzrAP4McnozRUBP5erI0mcwMzikXS/WcpJSjbjHNZfOoSZRLVIyxpLNUSVdh+a0CejYgsw==","signatures":[{"sig":"MEYCIQDgwDLrPxNhGS42eLrno301bFuux3YkljLEz6CCGTHWJQIhAKKtBK3A7H0LlyNznVVe2APytsyD0dFgTEm8i4+7eRrR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDxsYOk6SObbAqbYZ1Z+PO4J7yJmszKthvLkCX6qppqRgIgaucu8Cw7gnUf01BpQNlCRgL0sbqc0Vr2I42uDtJf6no=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1075817},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"1a7acd2724b3bcf446cbaacea92d4fdca7c149fa","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","dependencies":{"ignore":"^7.0.9"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.3.3_1789032435323_0.06801754254357073","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@anionex/dsh-turn-rewind","version":"0.3.4","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.3.4","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.5-rc.1":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible","0.1.5-alpha.1":"compatible","0.1.5-alpha.2":"compatible"}}},"dist":{"shasum":"4e8c45ffcdb4949aac7b6ac9de3571a51a7626dd","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.3.4.tgz","fileCount":63,"integrity":"sha512-yeZ24EssqLzGzogF/WOai/7nXvdJnoFYgJHWFIWjk7i10KfIAIEFvMD1QgPlAO+tCLUDfCjZLc4QEW0JEMrGPw==","signatures":[{"sig":"MEQCIH98+vB7bCMOu4BEydFDMvjvQp1AZynLgENM+qMvH6xYAiBUFvYP+NAPZ7HJSEFvLGXgOzCxITf+2p01+afyQ1nPrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAmgtYajl8arm4hZTuO/iLfxP1Ml1aNPv8OnblDv+EuZAiBTbWK9pVOt1MkGwm6ICTL3iXTaWgFzo0KOvJtClNty2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1079966},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3e1a3be6ede9c2bd31923a7fe6fdf2933590168d","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","dependencies":{"ignore":"^7.0.9"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.3.4_1789034177305_0.502069841013147","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@anionex/dsh-turn-rewind","version":"0.3.5","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.3.5","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.5-rc.1":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible","0.1.5-alpha.1":"compatible","0.1.5-alpha.2":"compatible"}}},"dist":{"shasum":"b66022e4fd9aa273d42c3ad3e738a06b595885e1","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.3.5.tgz","fileCount":66,"integrity":"sha512-STphrzgO8cDTVhoeRHNJtfXH6kWi+CRJCw5CEfgu48ZGn2XwXa91UH2S1xyfzwIQvKIcqkpfkPO4qrRXq1otfw==","signatures":[{"sig":"MEYCIQDxzlzc10dF6DvFzJz5VxsdajbJs1VkO13AvvGBSBnZPQIhAOnprLwF0YvqhDSNXsI8zb89DAjJQBx7ZItPuwAsaPu/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGrNoZr0JlxZ7acS8i554ktqng74dAQ0Ep2BlKngAI6aAiAz6VcFBOS2gROTnKZ52/1PA4kHVU5k2JILXmCXzl5x7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1100594},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"8e1c755a3c0592ee2bcdb507144a413f24ba5d96","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","dependencies":{"ignore":"^7.0.9"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.3.5_1789035409874_0.251624639132201","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@anionex/dsh-turn-rewind","version":"0.3.6","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.3.6","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.5-rc.1":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible","0.1.5-alpha.1":"compatible","0.1.5-alpha.2":"compatible"}}},"dist":{"shasum":"3d2a1254ad76b72606033935fa1b0a5a89ec6a86","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.3.6.tgz","fileCount":66,"integrity":"sha512-DaoqA4iy94K4GM7OJP7nuyU+erEqTO7LVYUca1Dwkjd3CBh9nmibXqJY3CI4cCOSGba43byR3zG/ix8p/WGrBQ==","signatures":[{"sig":"MEUCIQCFxppW7R6aRMY2nnGXXl6sBhehTab4AMUzY5tkrXlY7gIgdMHKH+rgRGj+GG4nbxXz4iuD2ow+IBuRKQW45fEsFIc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCOpfPSXeH0hVQlAZSvfx+Y2eVKAG1iWtSr1jyJOLh94wIgZ0XT7gSjXE9TkQ+f5vbwkwxWpZA1WpN1pC3eZs/3zJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1105256},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"83b4388a383190e0489b8460af3671cf37a2580b","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","dependencies":{"ignore":"^7.0.9"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.3.6_1789099786595_0.676715608587128","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@anionex/dsh-turn-rewind","version":"0.3.7","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.3.7","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.5-rc.1":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible","0.1.5-alpha.1":"compatible","0.1.5-alpha.2":"compatible"}}},"dist":{"shasum":"8138e66b1c03464525be288d2fd89315c37c6c4d","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.3.7.tgz","fileCount":66,"integrity":"sha512-/V+eBPChd8aVaiWs+qy5mxBkIVJPLLgN9jn3N8X2Qu8SJTeW4dpDP/PlJLfPNYZG8qcoAbDyT5iQmBtKAn1vhA==","signatures":[{"sig":"MEUCIQC1pUxbhgZHGErPNE4P5FXT/aKcpoAU4JcRYZUPUr30EgIgLTFDChkmwMtMFA/hWfRtCMYV37x+yVuE4KhPq1cgMy0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFG2vlD5nstf5/A9Jh0YVwdyQF53Bcf/4iJJRMW7rnY9AiAT0sLPHnhN5amoKlymlZIX6qLt1giSeN3ReKa4HxILMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1105537},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"c044f1c9e4d7e17189b779e6c6a27bfc32fed357","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","dependencies":{"ignore":"^7.0.9"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.3.7_1789100217791_0.2258989482012259","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@anionex/dsh-turn-rewind","version":"0.3.8","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"license":"BSD-3-Clause","_id":"@anionex/dsh-turn-rewind@0.3.8","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.5-rc.1":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible","0.1.5-alpha.1":"compatible","0.1.5-alpha.2":"compatible"}}},"dist":{"shasum":"869e4dcaf0c8b0f9f00ee14b2750f8108655f3c8","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.3.8.tgz","fileCount":66,"integrity":"sha512-TG3Zh7k3QmlvkOv8KHIvV2765Yz6I3Ndceq0AYjYy3QGIOs0FJNZoCoMBYLiF+4dkSCZK87xM1j7B7VDDReDVw==","signatures":[{"sig":"MEUCIQCZZHeAjJpAzE25+sJud6eJ8AHWzyxi5mYB7pqeuZ9uJwIgAKspsVnJDh3Cm9cTUExk/3nQRv5ngo1F21bEzvzXiWU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBTv84zyp03djAYReBZNfPuyZwfgAzhrX18fnG+6VsWSAiBj3FYJHxbRFmD7DWrb7Y9RZfOJ+FepQPMLdW43LXYvqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1106424},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"230704080e30d9ff608758b3126593ae3e8e14b3","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"_nodeVersion":"26.8.1","dependencies":{"ignore":"^7.0.9"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-turn-rewind_0.3.8_1789100745115_0.8424369140490384","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"_id":"@anionex/dsh-turn-rewind@0.3.9","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-settings-plugins"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0 || ^0.1.7-rc.1 || 0.2.0-rc.2","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.5-rc.1":"compatible","0.1.7-rc.2":"compatible","0.2.0-rc.2":"compatible","0.1.2-alpha.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible","0.1.5-alpha.1":"compatible","0.1.5-alpha.2":"compatible"}}},"bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"dist":{"shasum":"aaa9e5cb1e0aa9519ad1baa515eff3399a097bd0","tarball":"https://registry.npmjs.org/@anionex/dsh-turn-rewind/-/dsh-turn-rewind-0.3.9.tgz","fileCount":67,"integrity":"sha512-Bbgi9sAaR+rV56DcPlAAwJgMWVWqJhCYCTtqOxaPgDexnWy1A6Vq4IRQgM0nfnDKUfHZv74iwHNWZ0POqw9G8g==","signatures":[{"sig":"MEQCIFBBzenge+OkKSyue3/SB7UOXYeoOTAsq029GbFCTHV+AiBh5jy2ecAGZX3uECrFVYQdDNefATr/SWgXZFGVhtOGsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC5WvJHjU2MZ285gDWrDuFVzlJHnSwou6DwtJ3mQ1WPUgIgM9o++VGWFO4o21Z/EF7//gyyHakSi92mbY5cdVBvbkc="}],"unpackedSize":1183272},"main":"lib/index.js","name":"@anionex/dsh-turn-rewind","type":"module","_from":"file:/Users/davidyang/dsh-worktrees/compat-20261001/releases/dsh-turn-rewind/0.3.9/anionex-dsh-turn-rewind-0.3.9.tgz","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./core":{"types":"./lib/types/engine.d.ts","default":"./lib/engine.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./format":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./rewind-host":{"types":"./lib/types/rewind-host.d.ts","default":"./lib/rewind-host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"license":"BSD-3-Clause","scripts":{"test":"pnpm run build && node --test tests/*.test.mjs","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/wrap-client.mjs","check":"tsc -p tsconfig.json && pnpm run build && node --test tests/*.test.mjs && pnpm pack --dry-run","prepack":"pnpm run build","benchmark:git-checkpoint":"pnpm run build && node scripts/benchmark-git-checkpoint.mjs"},"version":"0.3.9","_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"_resolved":"/Users/davidyang/dsh-worktrees/compat-20261001/releases/dsh-turn-rewind/0.3.9/anionex-dsh-turn-rewind-0.3.9.tgz","_integrity":"sha512-Bbgi9sAaR+rV56DcPlAAwJgMWVWqJhCYCTtqOxaPgDexnWy1A6Vq4IRQgM0nfnDKUfHZv74iwHNWZ0POqw9G8g==","repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"_npmVersion":"11.19.0","description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","directories":{},"maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"_nodeVersion":"26.8.1","dependencies":{"ignore":"^7.0.9"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"react":"18.3.1","typescript":"^5.9.2","@types/node":"^24.0.0","@types/react":"18.3.28","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":">=0.1.0-rc.8 <0.2.0 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.5-rc.1 || 0.2.0-rc.2"},"peerDependenciesMeta":{"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-turn-rewind_0.3.9_1790829956274_0.052610426366257235"}}},"time":{"created":"2026-08-14T14:58:43.785Z","modified":"2026-10-01T04:45:56.538Z","0.1.0":"2026-08-14T14:58:44.146Z","0.1.1":"2026-08-16T17:17:06.881Z","0.1.2":"2026-08-23T15:12:55.023Z","0.2.0":"2026-08-29T13:54:15.095Z","0.2.1":"2026-09-01T10:28:32.416Z","0.2.2":"2026-09-09T06:55:03.731Z","0.2.3":"2026-09-09T13:35:52.826Z","0.3.0":"2026-09-09T14:05:36.672Z","0.3.1":"2026-09-10T08:05:35.540Z","0.3.2":"2026-09-10T08:08:45.931Z","0.3.3":"2026-09-10T09:27:15.478Z","0.3.4":"2026-09-10T09:56:17.463Z","0.3.5":"2026-09-10T10:16:49.972Z","0.3.6":"2026-09-11T04:09:46.680Z","0.3.7":"2026-09-11T04:16:57.892Z","0.3.8":"2026-09-11T04:25:45.218Z","0.3.9":"2026-10-01T04:45:56.396Z"},"bugs":{"url":"https://github.com/Anionex/dsh-turn-rewind/issues"},"license":"BSD-3-Clause","homepage":"https://github.com/Anionex/dsh-turn-rewind#readme","keywords":["deepseek-harness","dsh","cordis","restore-point","workspace","change-ledger","turn-rewind"],"repository":{"url":"git+https://github.com/Anionex/dsh-turn-rewind.git","type":"git"},"description":"Turn-level conversation and workspace rewind for DeepSeek Harness, powered by a persistent Change Ledger","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"readme":"# DSH Turn Rewind\n\n[![X (Twitter)](https://img.shields.io/badge/-@anion__ex-000000?style=flat-square&logo=x&logoColor=white)](https://x.com/anion_ex)\n\n[English](README.md)\n\n为 DeepSeek Harness 提供 Turn 级项目文件恢复，并可选择从恢复后的这一轮继续新对话。\n\n**Turn Rewind** 是用户看到的功能名、仓库名和 Profile Bundle 名。**Change Ledger** 是底层持久恢复引擎；`ctx.changeLedger` 服务、磁盘格式和存储路径继续保留这个名字，因为它们描述的是可复用的快照与恢复层，而不只是 Web 上的回退按钮。\n\n它给 DSH Session 增加一条明确的安全边界：\n\n```text\n创建恢复点\n    ↓\nAgent / 用户 / 外部程序修改工作树\n    ↓\n预览逐路径变化\n    ↓\n审阅全部或部分恢复计划\n    ↓\n在回退弹窗中按下最终恢复按钮\n    ↓\n先建救援点 → 恢复 → 哈希验证\n```\n\n插件**不会**自动 commit、stash、reset、切分支、修改 Git index，也不会替用户判断某项改动“应该回滚”。\n\n## 最新动态\n\n按版本倒序，最近几轮集中解决的几件事：\n\n- **普通目录也能回退文件（0.3.0）** —— 工作目录不是 Git 仓库时，插件会把它当成普通目录快照（默认排除 `.git`、`node_modules`，可用 `.dsh-rewindignore` 追加规则），不再只能「只回溯消息」。\n- **默认走最快的路径（0.3.8）** —— 新增「自动（推荐）」模式：Git 工作区用 Git 原生检查点（复用仓库对象库，**首次检查点不再重存已提交内容**），普通目录用插件自己的存储。\n- **未改动的文件不再重读（0.3.5）** —— 每个工作区持久化路径身份缓存，身份没变就直接复用；实测 20 000 文件 / 351 MB 的工作区，每轮捕获从 237 秒降到 7 秒出头。\n- **超限文件不再毁掉整轮检查点（0.3.3）** —— 单个文件超过上限只是被跳过并提示，其余文件照常保存；恢复**绝不改动检查点没记录到的路径**，所以\"当时太大、后来变小\"的文件不会被误删。\n- **检查点预算从 5 秒提到 60 秒，捕获并发化（0.3.4）** —— 之前 5 秒的预算配上大目录永远只会报「没保存」。\n- **回退按钮与消息回溯修复（0.2.2 / 0.2.3）** —— 适配 DSH 0.1.2-alpha 的客户端钩子改动，恢复被误拒的「只回溯消息」模式。\n- **设置卡片与官方样式对齐（0.3.6 / 0.3.7）** —— 折叠成一行，点击展开，与其它插件卡片的观感一致。\n\n## 效果预览\n\n每条用户消息下方依次显示时间、DSH 原生“复制”和第三个纯图标“回退”：\n\n![用户消息下方的 Turn Rewind 图标](docs/assets/turn-rewind-action.png)\n\n打开后会先展示受影响文件，可选择“恢复文件并从这里继续”“只恢复文件”或“只回溯消息（不动文件）”：\n\n![Turn Rewind 审阅弹窗](docs/assets/turn-rewind-dialog.png)\n\n## 为什么底层需要 Change Ledger\n\n普通 Git 面板可以展示当前 diff，但不拥有完整、持久的恢复生命周期。Change Ledger 独立负责：\n\n- 内容寻址的恢复点 manifest；\n- Git worktree、HEAD、分支和进行中 Git 操作的状态围栏；\n- 从审阅到执行之间的 stale plan 检测；\n- 短期确认码与 DSH 人工批准双门槛；\n- 每次恢复前自动建立救援点；\n- 恢复后的内容哈希验证；\n- 恢复失败后的自动回滚；\n- DSH 重启时对未完成操作日志进行对账；\n- 可供其他插件依赖的 `ctx.changeLedger` 公共服务。\n\n持久格式见 [docs/FORMAT.md](docs/FORMAT.md)，安全与故障模型见 [SECURITY.md](SECURITY.md)。\n\n## 安全契约\n\n- **只做显式操作：**任何恢复都不会自动发生——每一次恢复都从用户在 Web 弹窗中按下最终按钮开始，或来自对服务 API 的显式调用。\n- **先读后写：**弹窗预览基于当前工作树生成短期、会话绑定的计划，不修改任何文件。\n- **人工门禁：**弹窗中审阅受影响文件并按下最终恢复按钮就是人的决定；没有实时会话绑定计划对的直接修改请求一律 fail closed。\n- **先救援再修改：**恢复任何文件前，先持久化当前 eligible tree 的救援点。\n- **不静默漏文件：**遇到 submodule、sparse checkout、超限文件、总量超限或特殊文件类型时，创建恢复点直接失败。\n- **不允许路径逃逸：**所有持久路径必须是规范的工作树相对路径；恢复拒绝穿过 symlink 父目录，也拒绝覆盖非空目录。\n- **不覆盖审阅后的新变化：**执行时重新检查所选路径，以及审阅过的 HEAD、分支和 Git 操作状态；任何相关变化都会使计划失效。\n- **不碰 Git 控制面：**index、分支、HEAD、stash 和 commit 均保持原样。\n\n## 支持范围\n\n支持两种工作区，按会话所在目录自动判定：\n\n**普通 Git worktree**\n\n- tracked 文件，包括恢复点创建时已经缺失的 tracked 路径；\n- 未被 `.gitignore` 或 Git 标准 excludes 忽略的 untracked 文件；\n- 文本和二进制普通文件；\n- 符号链接；\n- 可执行位等可移植权限位。\n\n**普通目录（所在目录不是 Git 仓库）**\n\n- 目录内所有普通文件与符号链接，符号链接只记录链接本身、不跟随目标；\n- 默认排除 `.git` 与 `node_modules`；\n- 可在目录根放 `.dsh-rewindignore`（语法同 `.gitignore`）追加排除规则；内置排除项在用户规则之后生效，无法被反向取消；\n- 快照内容存进插件自己的内容寻址存储，不依赖 Git 对象库；\n- 目录里执行 `git init` 后工作区类型改变，旧回退点会失效（`WORKSPACE_MODE_CHANGED`），需要重新发送消息生成新的回退点。\n\n下列对象会被拒绝或明确排除：\n\n- sparse checkout；\n- submodule gitlink（应分别进入每个 submodule 建恢复点）；\n- ignored 文件、被 `.dsh-rewindignore` 排除的文件；\n- socket、设备、FIFO 等特殊文件；\n- 扩展属性、ACL、所有者、时间戳和 hard-link 拓扑；\n- Git index 和仓库元数据。\n\n如果 ignored 或其他未受管理的文件占据了待恢复路径，插件会拒绝恢复，不会递归删除它。\n\n## 安装\n\n```sh\npnpm install --frozen-lockfile\npnpm run check\n\ndsh plugin --profile web add @anionex/dsh-turn-rewind\ndsh plugin --profile headless add @anionex/dsh-turn-rewind\n\ndsh --profile web --dump-config | grep turn-rewind\n```\n\n修改 Profile Bundle 后需要重启对应 DSH 进程。\n\n本仓库是标准 DSH Profile Bundle：`package.json` 声明 `dsh.bundle.patch`，`cordis.patch.yml` 直接挂载 `@anionex/dsh-turn-rewind`，不修改 DSH 主仓库。\n\n当 Profile 同时提供 DSH Agent 服务时，插件会在每轮第一次 `agent/pre-step`、Agent 开始处理用户消息之前保存隐藏文件状态。保存失败只会让该消息无法回退，不会拦住用户这一轮。Web Profile 还会提供同源 `/turn-rewind` 接口：根据所选 `user/message` 序号找到对应状态，分页返回文件预览，生成短期、会话绑定的恢复授权，并把新对话创建交给 DSH 官方 Host create/fork 生命周期。插件绝不会自动恢复文件。\n\n## 使用流程\n\n在 Web Profile 中，每条用户消息下方都会在时间和原生“复制”之后显示一个紧凑、无文字的**回退**图标，提示是“恢复到发送这条消息之前”。图标使用明确的向后/撤销箭头，而不是“重试”圆形箭头。打开后会检查保存的文件状态，先显示简洁预览，需要时可“查看全部文件”，并提供三种模式：\n\n| 模式 | 代码 | 对话 |\n| --- | --- | --- |\n| **恢复文件并从这里继续**（文件有变化时的默认） | 自动备份当前状态后恢复项目文件。 | 创建一个从这里开始的新会话（当前对话会保留）。 |\n| **只恢复文件** | 自动备份当前状态后恢复项目文件。 | 当前 Session 保持原位且内容不变。 |\n| **只回溯消息（不动文件）**（无检查点或文件无变化时的默认） | 项目文件保持当前状态，不做任何修改。 | 创建一个从这里开始的新会话，并把原消息文字填入输入框。 |\n\n弹窗和最终主按钮就是确认流程，不再要求重复勾选。文件会按实际结果显示为“恢复之前的版本”“找回文件”“移除后来新增的文件”“恢复文件权限”或“恢复之前的文件类型”。**只回溯消息**始终可用——即使该消息没有保存检查点、检查点被跳过（例如在设置里关闭了自动检查点），或项目文件已经与保存状态一致——因为它完全不触碰工作区，也不会被同一工作区中其他运行中的 Agent 阻止。\n\n真正修改前，Turn Rewind 会再次检查所选文件和项目版本状态，并先创建自动备份。预览后出现的新变化会让本次恢复失效。同一工作树只要还有正在运行的 Agent（包括当前来源 Session），恢复就会被阻止；仅处于空闲状态的 Session 不会阻止恢复。已经审阅过的 HEAD 或分支变化不会阻止恢复：commit、分支、HEAD 和 index 都保持不变，恢复后的内容可能表现为当前 HEAD 上的未提交修改。Git 正在合并、变基等操作时仍会阻止。如果“恢复文件并从这里继续”在创建新对话时失败，Change Ledger 会自动从备份恢复操作前的文件。\n\nDSH Session 日志只追加不改写，因此“恢复文件并从这里继续”和“只回溯消息”都会创建新 Session，而不是截断原对话。选中第一条消息时，Host 会在同一目录创建空 Session；选中后续消息时，会在上一轮 `turn/end` 处分叉。只有所选 `user/message` 和对应的精确 `turn/start` 都低于每一层持久 `seedLength` 时，子 Session 才能复用祖先保存的状态；子 Session 自己的状态优先，兄弟分支绝不混用。**Turn Rewind** 的两个维度彼此独立：两个“恢复文件”模式会修改项目文件（可选随后创建新对话），而**只回溯消息**复用同一分叉生命周期但完全不碰文件。原 Session 始终保留。\n\n## 配置\n\n运行时可调选项可以直接在 DSH Web 设置页的**插件 → Turn Rewind**卡片（`turn-rewind` 设置命名空间）中修改，修改对下一次捕获、恢复或删除即时生效，并持久化到宿主 `settings.yaml`，优先级高于下方 patch 层配置。`storageDir` 刻意不在此处暴露：存储根目录在引擎持有锁与 journal 时不可移动，只能通过 patch 层配置。\n\n在 Profile 的 patch 层覆盖组合基线（以及 `storageDir`）：\n\n```yaml\n- id: turn-rewind\n  config:\n    storageDir: ~/.dsh/change-ledger/v1\n    maxRestorePoints: 50\n    maxTurnCheckpointsPerSession: 30\n    maxFiles: 20000\n    maxFileBytes: 16777216\n    maxSnapshotBytes: 536870912\n    planTtlMs: 900000\n    staleLockMs: 30000\n    turnCheckpointMode: legacy   # off | git-native | legacy；off 表示不创建文件检查点\n    turnCheckpointTimeoutMs: 5000\n    turnCheckpointMaxNewBytes: 33554432\n    turnCheckpointTrust: fast    # fast | strict\n\n超过 `maxFileBytes` 或类型不受支持的文件会被跳过并记入检查点（弹窗会提示），不会因此丢弃整轮检查点；被跳过的路径在恢复时不会被改动。达到 `maxFiles` 或 `maxSnapshotBytes` 时同样保留已完成的部分，并在弹窗中说明。\n\n```\n\n把 `turnCheckpointMode` 设为 `off`（patch 层或设置卡均可）后，插件不再为每条消息自动创建文件检查点，而是记录持久跳过标记；回退弹窗对这些消息仍然提供**只回溯消息**。\n\n所有容量与用户恢复点数量限制都采用 fail loud。自动 Turn 检查点使用独立的每会话保留窗口，并且只清理自己最旧的检查点；用户和救援恢复点永远不会被静默删除。未配置时，`storageDir` 使用 `$DSH_HOME/change-ledger/v1`，未设置 `DSH_HOME` 时回退到 `~/.dsh/change-ledger/v1`；它不得与被管理 worktree 重叠。\n\n## 检查点管理\n\n同一张设置卡内置存储管理器，由同源 `/turn-rewind/manage` 端点支撑。它列出该存储根下跟踪过的所有工作区——包括目录已被删除的项目——并按项目分组显示检查点数量、近似占用和待处理恢复徽标。支持按单个检查点、按项目或全局（一键清空）删除未受保护的恢复点并回收不再引用的 blob。仍被未完成的恢复 journal、进行中的恢复或未完成的 Git-native publish 引用的恢复点会被保留并明确报告。Git-native（v2）检查点内容存放在仓库的 Git 对象库中，其磁盘空间由 Git 自身的垃圾回收释放；界面显示的大小为逻辑值。\n\n## 故障恢复\n\n任何路径写入前，插件都会先创建救援点和持久 operation journal。如果 DSH 在非终态操作期间退出，下次启动会把该操作标记为 `interrupted`；如果另一个仍存活的 DSH 进程持有工作树锁，则不会误判其操作。\n\n恢复通过公开的 `ctx.changeLedger` 服务 API 进行：用 `listRecovery` 找到操作的 `rescuePointId`，用 `inspect` 审阅该救援点，再对相关路径走 `planRestore`/`applyRestore`。救援点在被显式删除前始终是普通、可检查的恢复点。\n\n## 公共服务\n\n其他 Cordis 插件可以注入 `changeLedger`，直接调用结构化 API：\n\n```ts\nexport const inject = ['changeLedger']\n\nexport async function apply(ctx: Context) {\n  const point = await ctx.changeLedger.create({\n    cwd: '/absolute/git/worktree',\n    sessionId: 'session-id',\n    label: 'before refactor',\n  })\n  // point.id 是持久恢复点 ID。\n}\n```\n\n完整格式类型从 `@anionex/dsh-turn-rewind/format` 导出；可信集成和测试可以从 `@anionex/dsh-turn-rewind/core` 使用独立 Engine。\n\n## 开发\n\n```sh\npnpm install --frozen-lockfile\npnpm run check\n```\n\n测试会创建真实的临时 Git 仓库，覆盖全部/部分恢复、stale plan、ignored 路径冲突拒绝、HEAD 变化、救援回滚、崩溃对账、活动锁保护、持久状态完整性、symlink、容量限制、sparse checkout、submodule、删除和 blob GC。\n\n## 关于\n\nDSH Turn Rewind 由 [anionex](https://anionex.me/) 维护。如果你想了解我后续的更多工作，欢迎在 [X](https://x.com/anion_ex) 或 [GitHub](https://github.com/Anionex) 关注我。\n\n## 许可证\n\nBSD-3-Clause，见 [LICENSE](LICENSE)。\n","readmeFilename":"README.zh.md"}