{"_id":"@crazx/dsh-todo-completion-guard","_rev":"22-dda215b0bd52b92681e8f11850717e2a","name":"@crazx/dsh-todo-completion-guard","dist-tags":{"latest":"0.1.6-alpha.2.zw.2"},"versions":{"0.1.0-rc.7.zw.2":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.0-rc.7.zw.2","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.0-rc.7.zw.2","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"e549aace6ceee5b2b205753127765d12e480d48c","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.0-rc.7.zw.2.tgz","fileCount":9,"integrity":"sha512-QY4G/EcWc4w4Itn+EVCY/JxXGAQAiGn3Wf5d3EqyRXJTOb001cuVBR21Qh4XIcjuVrdr0OYgh8VbqkRajZaJkQ==","signatures":[{"sig":"MEQCIDtsLYCYsVEglfXmsFqztkBY9Hqn8lzM9zaQfTgHwPDvAiBchMq65vzXHIZaIU5BmGUl+QdXa28IhTwqsZMLH1SXbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16194},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.0-rc.7.zw.2.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.0-rc.7.zw.2.tgz","_integrity":"sha512-QY4G/EcWc4w4Itn+EVCY/JxXGAQAiGn3Wf5d3EqyRXJTOb001cuVBR21Qh4XIcjuVrdr0OYgh8VbqkRajZaJkQ==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.17.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^0.1.0-rc.7","@deepseek-ai/dsh-llm":"^0.1.0-rc.7","@deepseek-ai/dsh-agent":"^0.1.0-rc.7","@deepseek-ai/dsh-session":"^0.1.0-rc.7","@deepseek-ai/dsh-tool-todo":"^0.1.0-rc.7","@deepseek-ai/dsh-agent-loop":"^0.1.0-rc.7","@deepseek-ai/dsh-invariants":"^0.1.0-rc.7","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.0-rc.7"},"peerDependencies":{"@deepseek-ai/cordis":"^0.1.0-rc.7","@deepseek-ai/dsh-llm":"^0.1.0-rc.7","@deepseek-ai/dsh-agent":"^0.1.0-rc.7","@deepseek-ai/dsh-invariants":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.0-rc.7.zw.2_1787162634993_0.1978530933196514","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.8.zw.3":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.0-rc.8.zw.3","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.0-rc.8.zw.3","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"80590c9fd9e128fc8ae55639f8f22f648d79ead7","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.0-rc.8.zw.3.tgz","fileCount":9,"integrity":"sha512-9iQb+V9jTpZXu3sdDoDSWucp49cvSzMX9SCOx8H7/cMz7crwRL7Npaxp6MjTCGUCy+eEOfujVCaGLwmGKJLBvQ==","signatures":[{"sig":"MEQCIBk5mgXRZXyjY5+53x2zz+dukfs1Zu3he/94fdczGMVfAiAOwkM2u5q+0Ja8jWN88uLpaps2IP2dFPyCb5Zzl/RWqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16194},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.0-rc.8.zw.3.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.0-rc.8.zw.3.tgz","_integrity":"sha512-9iQb+V9jTpZXu3sdDoDSWucp49cvSzMX9SCOx8H7/cMz7crwRL7Npaxp6MjTCGUCy+eEOfujVCaGLwmGKJLBvQ==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.17.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^0.1.0-rc.8","@deepseek-ai/dsh-llm":"^0.1.0-rc.8","@deepseek-ai/dsh-agent":"^0.1.0-rc.8","@deepseek-ai/dsh-session":"^0.1.0-rc.8","@deepseek-ai/dsh-tool-todo":"^0.1.0-rc.8","@deepseek-ai/dsh-agent-loop":"^0.1.0-rc.8","@deepseek-ai/dsh-invariants":"^0.1.0-rc.8","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.0-rc.8"},"peerDependencies":{"@deepseek-ai/cordis":"^0.1.0-rc.8","@deepseek-ai/dsh-llm":"^0.1.0-rc.8","@deepseek-ai/dsh-agent":"^0.1.0-rc.8","@deepseek-ai/dsh-invariants":"^0.1.0-rc.8"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.0-rc.8.zw.3_1787187538727_0.9001870966791818","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.8.zw.4":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.0-rc.8.zw.4","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.0-rc.8.zw.4","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"f1176fdac6a689628bfc2d23fcd4737f04e64f4f","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.0-rc.8.zw.4.tgz","fileCount":9,"integrity":"sha512-+/vU7uYd9Se5pD1WmRRGkIsdFZGkhs2w/pi5OGuqZWacQ8or83ztbbsg70tIEEqJhCzrhS7YFA3ioOsZH7Zgxg==","signatures":[{"sig":"MEYCIQCB7j9zLppUuRLW6pD4aFgg5mRsuXIA9eW3dv5l150H4QIhAIRLJpnp0l2qIhDkwB0tuN619rQHG8QFFwOPGOOCiZ3j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16184},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.0-rc.8.zw.4.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.0-rc.8.zw.4.tgz","_integrity":"sha512-+/vU7uYd9Se5pD1WmRRGkIsdFZGkhs2w/pi5OGuqZWacQ8or83ztbbsg70tIEEqJhCzrhS7YFA3ioOsZH7Zgxg==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.17.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.8","@deepseek-ai/dsh-agent":"^0.1.0-rc.8","@deepseek-ai/dsh-session":"^0.1.0-rc.8","@deepseek-ai/dsh-tool-todo":"^0.1.0-rc.8","@deepseek-ai/dsh-agent-loop":"^0.1.0-rc.8","@deepseek-ai/dsh-invariants":"^0.1.0-rc.8","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.0-rc.8"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.8","@deepseek-ai/dsh-agent":"^0.1.0-rc.8","@deepseek-ai/dsh-invariants":"^0.1.0-rc.8"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.0-rc.8.zw.4_1787188252944_0.6795372971722011","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1.zw.1":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.1-rc.1.zw.1","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.1-rc.1.zw.1","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"6ab0d0b75b45407c2b85ebffff5540bfe6a0ccbe","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.1-rc.1.zw.1.tgz","fileCount":9,"integrity":"sha512-Ol4FB45yMkHLWxqxl4JH6DcT0IQ1Ud50Wa6rMsnIrY0ra4uhTR1ESVkxju36RHyOJZslB5SEazo4Y3bCKGyyCg==","signatures":[{"sig":"MEUCIEfqc1s36wmCmX1vHLnR6irm5j20+VwLQPCYFhU3w7aoAiEAwaMx6vcR2Y2VnLK4pySWRSXfPBgTUD6fBbmB8iDsPHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16184},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.1-rc.1.zw.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.1-rc.1.zw.1.tgz","_integrity":"sha512-Ol4FB45yMkHLWxqxl4JH6DcT0IQ1Ud50Wa6rMsnIrY0ra4uhTR1ESVkxju36RHyOJZslB5SEazo4Y3bCKGyyCg==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.17.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.1-rc.1","@deepseek-ai/dsh-agent":"^0.1.1-rc.1","@deepseek-ai/dsh-session":"^0.1.1-rc.1","@deepseek-ai/dsh-tool-todo":"^0.1.1-rc.1","@deepseek-ai/dsh-agent-loop":"^0.1.1-rc.1","@deepseek-ai/dsh-invariants":"^0.1.1-rc.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.1-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.1-rc.1","@deepseek-ai/dsh-agent":"^0.1.1-rc.1","@deepseek-ai/dsh-invariants":"^0.1.1-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.1-rc.1.zw.1_1787307356706_0.2296414753141156","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.1.zw.2":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.1-rc.1.zw.2","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.1-rc.1.zw.2","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"0585e46e04aba51f81da767de59b7d3c448143c1","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.1-rc.1.zw.2.tgz","fileCount":9,"integrity":"sha512-UL/TJQ6UdjA6r6TOSZ+jBe3vQDxgYGOaxMT/q8ctV0zg1vO2jcw76WGHCdAx/qUQAyZG6APaOFUlAlJvHRSm2g==","signatures":[{"sig":"MEQCIBo0PergzaCmI/I1Y7rEAuthiY9KLLJW9CSHm1cyX+j5AiByvHKYvZihqgi7NOpLFjD1NFlC8Q0S5p/Bx8O22NTs9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16184},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.1-rc.1.zw.2.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.1-rc.1.zw.2.tgz","_integrity":"sha512-UL/TJQ6UdjA6r6TOSZ+jBe3vQDxgYGOaxMT/q8ctV0zg1vO2jcw76WGHCdAx/qUQAyZG6APaOFUlAlJvHRSm2g==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.17.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.1-rc.1","@deepseek-ai/dsh-agent":"^0.1.1-rc.1","@deepseek-ai/dsh-session":"^0.1.1-rc.1","@deepseek-ai/dsh-tool-todo":"^0.1.1-rc.1","@deepseek-ai/dsh-agent-loop":"^0.1.1-rc.1","@deepseek-ai/dsh-invariants":"^0.1.1-rc.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.1-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.1-rc.1","@deepseek-ai/dsh-agent":"^0.1.1-rc.1","@deepseek-ai/dsh-invariants":"^0.1.1-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.1-rc.1.zw.2_1787369444462_0.6979082133600889","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-rc.2.zw.1":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.1-rc.2.zw.1","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.1-rc.2.zw.1","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"0ecbcb5cd2a25cb357d2469b41b2db760650d947","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.1-rc.2.zw.1.tgz","fileCount":9,"integrity":"sha512-o3jzaE95bzRg9ErGlG6fn2WalAoICwGfrIvXa9x6T7rIodjanKmyXBhYTDqQH4UPYCe/6/dcyMx1ykkWKtyGZg==","signatures":[{"sig":"MEYCIQDOqVsSOQpSu9cCYimlNfkb/08liv4VZvDmEZJJwc3j6wIhAOvQGq2rDwFy2wK2kYsmaAR2JGmyhP4uW/G381v78CZp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16184},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.1-rc.2.zw.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.1-rc.2.zw.1.tgz","_integrity":"sha512-o3jzaE95bzRg9ErGlG6fn2WalAoICwGfrIvXa9x6T7rIodjanKmyXBhYTDqQH4UPYCe/6/dcyMx1ykkWKtyGZg==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.17.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.1-rc.2","@deepseek-ai/dsh-agent":"^0.1.1-rc.2","@deepseek-ai/dsh-session":"^0.1.1-rc.2","@deepseek-ai/dsh-tool-todo":"^0.1.1-rc.2","@deepseek-ai/dsh-agent-loop":"^0.1.1-rc.2","@deepseek-ai/dsh-invariants":"^0.1.1-rc.2","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.1-rc.2","@deepseek-ai/dsh-agent":"^0.1.1-rc.2","@deepseek-ai/dsh-invariants":"^0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.1-rc.2.zw.1_1787379390042_0.6501416656780319","host":"s3://npm-registry-packages-npm-production"}},"0.1.2-alpha.3.zw.1":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.2-alpha.3.zw.1","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.2-alpha.3.zw.1","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"a0229ed8a27326a5616e0cb8c16119e8b2583382","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.2-alpha.3.zw.1.tgz","fileCount":9,"integrity":"sha512-P/TyQDSkQVp24RWs2pSgL+zQPv9ANSfr02ZH3VoCP6zFupIpZx1JuYtA6qSjTby0BVhm0M5KoztcpkHftaZSUQ==","signatures":[{"sig":"MEUCIQD01j8vFvp3XrwtYVfdCFCiwgAby48mN4xYOklOfGAmBQIgS5YVKX9PT11rWYgtOPcks05rd8fXA2WL54J7LvNR08A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16758},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.2-alpha.3.zw.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.2-alpha.3.zw.1.tgz","_integrity":"sha512-P/TyQDSkQVp24RWs2pSgL+zQPv9ANSfr02ZH3VoCP6zFupIpZx1JuYtA6qSjTby0BVhm0M5KoztcpkHftaZSUQ==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.17.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.2-alpha.3","@deepseek-ai/dsh-agent":"^0.1.2-alpha.3","@deepseek-ai/dsh-session":"^0.1.2-alpha.3","@deepseek-ai/dsh-tool-todo":"^0.1.2-alpha.3","@deepseek-ai/dsh-agent-loop":"^0.1.2-alpha.3","@deepseek-ai/dsh-invariants":"^0.1.2-alpha.3","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.2-alpha.3","@deepseek-ai/dsh-session-projection":"^0.1.2-alpha.3"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.2-alpha.3","@deepseek-ai/dsh-agent":"^0.1.2-alpha.3","@deepseek-ai/dsh-session":"^0.1.2-alpha.3","@deepseek-ai/dsh-invariants":"^0.1.2-alpha.3"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.2-alpha.3.zw.1_1788258516338_0.404135705108136","host":"s3://npm-registry-packages-npm-production"}},"0.1.2-alpha.3.zw.2":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.2-alpha.3.zw.2","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.2-alpha.3.zw.2","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"555faaf8e01530df319e9b2b58f3b697b978f47e","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.2-alpha.3.zw.2.tgz","fileCount":9,"integrity":"sha512-jVlsrpiTwf9OkYjYtwZeTgiB/yRvhQi2cEjeF4/LJHO06jJEiUXhKDdx8P3Re8Cs7MV082rRjr51tXUglomusA==","signatures":[{"sig":"MEYCIQC886OcPihSEtHIwIGvHLKJR/BjWvySfnX7wpUD59vcBgIhANgSSpJu+urdTNSWu//Jr1lY/McMPVQ+Z/HgjawluonY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16758},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.2-alpha.3.zw.2.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.2-alpha.3.zw.2.tgz","_integrity":"sha512-jVlsrpiTwf9OkYjYtwZeTgiB/yRvhQi2cEjeF4/LJHO06jJEiUXhKDdx8P3Re8Cs7MV082rRjr51tXUglomusA==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.17.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.2-alpha.3","@deepseek-ai/dsh-agent":"^0.1.2-alpha.3","@deepseek-ai/dsh-session":"^0.1.2-alpha.3","@deepseek-ai/dsh-tool-todo":"^0.1.2-alpha.3","@deepseek-ai/dsh-agent-loop":"^0.1.2-alpha.3","@deepseek-ai/dsh-invariants":"^0.1.2-alpha.3","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.2-alpha.3","@deepseek-ai/dsh-session-projection":"^0.1.2-alpha.3"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.2-alpha.3","@deepseek-ai/dsh-agent":"^0.1.2-alpha.3","@deepseek-ai/dsh-session":"^0.1.2-alpha.3","@deepseek-ai/dsh-invariants":"^0.1.2-alpha.3"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.2-alpha.3.zw.2_1788329124339_0.15018284003893467","host":"s3://npm-registry-packages-npm-production"}},"0.1.2-alpha.5.zw.1":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.2-alpha.5.zw.1","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.2-alpha.5.zw.1","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"0f2be080f54ccff94236ad74d9be6d8e18c527b1","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.2-alpha.5.zw.1.tgz","fileCount":9,"integrity":"sha512-nr79rXWwzhvnQlBB45pZymay3N+oqXpnEIJjTjn/nXblM8IRMyvEH3twHuAWTjwTSh2tBYoRLQFUmaR51GcLaA==","signatures":[{"sig":"MEQCIEgQ7Ce7g350/XiRN2bqHbPauODzQGtNvqe10te4DnK1AiASq0+R3aDcO+mmeK85RoeBKJXD0NGkAnbo40nqp07B4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16768},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.2-alpha.5.zw.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.2-alpha.5.zw.1.tgz","_integrity":"sha512-nr79rXWwzhvnQlBB45pZymay3N+oqXpnEIJjTjn/nXblM8IRMyvEH3twHuAWTjwTSh2tBYoRLQFUmaR51GcLaA==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.17.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.2-alpha.5","@deepseek-ai/dsh-agent":"^0.1.2-alpha.5","@deepseek-ai/dsh-session":"^0.1.2-alpha.5","@deepseek-ai/dsh-tool-todo":"^0.1.2-alpha.5","@deepseek-ai/dsh-agent-loop":"^0.1.2-alpha.5","@deepseek-ai/dsh-invariants":"^0.1.2-alpha.5","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.2-alpha.5","@deepseek-ai/dsh-session-projection":"^0.1.2-alpha.5"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.2-alpha.5","@deepseek-ai/dsh-agent":"^0.1.2-alpha.5","@deepseek-ai/dsh-session":"^0.1.2-alpha.5","@deepseek-ai/dsh-invariants":"^0.1.2-alpha.5"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.2-alpha.5.zw.1_1788410023026_0.13146578836048772","host":"s3://npm-registry-packages-npm-production"}},"0.1.2-rc.1.zw.1":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.2-rc.1.zw.1","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.2-rc.1.zw.1","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"5a746e3d883effd8cba4aebf22ba69b5be71e655","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.2-rc.1.zw.1.tgz","fileCount":9,"integrity":"sha512-GiGXzggsxlijRiH+RF9h6WIa+V7uerDIhkk+nznVmLWKnZ+hkwCZBz6/v9I+iaXZbwyOqIktK8kIcIRlvVwlDg==","signatures":[{"sig":"MEYCIQCARAeHKNIPBe6KfW9TLirGNl/FLd+lWTyzGsmH6GxT7gIhANAo6fqP9bBfnBlka/gIyzXBGw9YezyZHMBwscxVG23o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16729},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.2-rc.1.zw.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.2-rc.1.zw.1.tgz","_integrity":"sha512-GiGXzggsxlijRiH+RF9h6WIa+V7uerDIhkk+nznVmLWKnZ+hkwCZBz6/v9I+iaXZbwyOqIktK8kIcIRlvVwlDg==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.17.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.2-rc.1","@deepseek-ai/dsh-agent":"^0.1.2-rc.1","@deepseek-ai/dsh-session":"^0.1.2-rc.1","@deepseek-ai/dsh-tool-todo":"^0.1.2-rc.1","@deepseek-ai/dsh-agent-loop":"^0.1.2-rc.1","@deepseek-ai/dsh-invariants":"^0.1.2-rc.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.2-rc.1","@deepseek-ai/dsh-session-projection":"^0.1.2-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.2-rc.1","@deepseek-ai/dsh-agent":"^0.1.2-rc.1","@deepseek-ai/dsh-session":"^0.1.2-rc.1","@deepseek-ai/dsh-invariants":"^0.1.2-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.2-rc.1.zw.1_1788452097379_0.7084617677133394","host":"s3://npm-registry-packages-npm-production"}},"0.1.2-rc.1.zw.2":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.2-rc.1.zw.2","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.2-rc.1.zw.2","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"4f5f28ddc9d3a3624f51e7fb7eea5e669391dea3","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.2-rc.1.zw.2.tgz","fileCount":9,"integrity":"sha512-k2x8yFXfVEHPEPHCV86Sn6+cKV5SNM4CiA3CZWorHAhLUk14utUSaKTyuIpECtjyw/5tZa0iFm8or2n1qgTsfw==","signatures":[{"sig":"MEUCIAWmJcYTeIDomlvs5M/zwmg/xDeZYg7Y1NS+4uOkEegqAiEAuJg0UsmI3Da2sSZqZS9FYJNAk7kBmS+yhCKMl076aOw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16729},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.2-rc.1.zw.2.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.2-rc.1.zw.2.tgz","_integrity":"sha512-k2x8yFXfVEHPEPHCV86Sn6+cKV5SNM4CiA3CZWorHAhLUk14utUSaKTyuIpECtjyw/5tZa0iFm8or2n1qgTsfw==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.2-rc.1","@deepseek-ai/dsh-agent":"^0.1.2-rc.1","@deepseek-ai/dsh-session":"^0.1.2-rc.1","@deepseek-ai/dsh-tool-todo":"^0.1.2-rc.1","@deepseek-ai/dsh-agent-loop":"^0.1.2-rc.1","@deepseek-ai/dsh-invariants":"^0.1.2-rc.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.2-rc.1","@deepseek-ai/dsh-session-projection":"^0.1.2-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.2-rc.1","@deepseek-ai/dsh-agent":"^0.1.2-rc.1","@deepseek-ai/dsh-session":"^0.1.2-rc.1","@deepseek-ai/dsh-invariants":"^0.1.2-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.2-rc.1.zw.2_1788791802915_0.8948373716284432","host":"s3://npm-registry-packages-npm-production"}},"0.1.5-alpha.1.zw.1":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.5-alpha.1.zw.1","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.5-alpha.1.zw.1","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"98bbcc1e5acb5586af439ad2cfedccbc1c6a27b5","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.5-alpha.1.zw.1.tgz","fileCount":7,"integrity":"sha512-0+UzLX8fd47F1ZwXmP4Zw/D91yo0kLZgeiYZq1xcCJtFNacuKXYKtI9FAz1j3Q37jmMQmAvy1iMojcUVw5tesg==","signatures":[{"sig":"MEUCIQCY4DwIJa7d5oo9w+KqTepQMrmlFUWXWEvJZEE8fhuCdgIgRxYr2AfMUbBfEmQovub7iZSuzccQqCFS/qw5NX+iSn8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18878},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-alpha.1.zw.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-alpha.1.zw.1.tgz","_integrity":"sha512-0+UzLX8fd47F1ZwXmP4Zw/D91yo0kLZgeiYZq1xcCJtFNacuKXYKtI9FAz1j3Q37jmMQmAvy1iMojcUVw5tesg==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent":"^0.1.5-alpha.1","@deepseek-ai/dsh-session":"^0.1.5-alpha.1","@deepseek-ai/dsh-tool-todo":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent-loop":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.5-alpha.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent":"^0.1.5-alpha.1","@deepseek-ai/dsh-session":"^0.1.5-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.5-alpha.1.zw.1_1788933365452_0.9669234466889944","host":"s3://npm-registry-packages-npm-production"}},"0.1.5-alpha.1.zw.2":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.5-alpha.1.zw.2","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.5-alpha.1.zw.2","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"738ee0d917bad0781b988db57001bbe965c12891","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.5-alpha.1.zw.2.tgz","fileCount":7,"integrity":"sha512-6q1ntTK4pxlzlLI5GE/e1oNPMObUpUdzSZTXiAPGIzykzl5OqI0PXBKLvBSVlHnxO9jS0ht8hXnCqWtsZGebXA==","signatures":[{"sig":"MEUCIQC8jw4zF/elinC/bq50jOWc+iPI/wW68E8EMYn/IaaE6wIgcYZVdCZ6LwY0oq1+JIJwPhoNZYElx37dXjiBBgbsI7Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18878},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-alpha.1.zw.2.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-alpha.1.zw.2.tgz","_integrity":"sha512-6q1ntTK4pxlzlLI5GE/e1oNPMObUpUdzSZTXiAPGIzykzl5OqI0PXBKLvBSVlHnxO9jS0ht8hXnCqWtsZGebXA==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent":"^0.1.5-alpha.1","@deepseek-ai/dsh-session":"^0.1.5-alpha.1","@deepseek-ai/dsh-tool-todo":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent-loop":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.5-alpha.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent":"^0.1.5-alpha.1","@deepseek-ai/dsh-session":"^0.1.5-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.5-alpha.1.zw.2_1788935351798_0.9880988776950976","host":"s3://npm-registry-packages-npm-production"}},"0.1.5-alpha.1.zw.3":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.5-alpha.1.zw.3","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.5-alpha.1.zw.3","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"4d545839f46a4e8fe6e6ff06fc56614194ab8e5f","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.5-alpha.1.zw.3.tgz","fileCount":7,"integrity":"sha512-AGDRAdBvAwulvEwBirBR6w2CIOGSfzp1Cw41jCWoMhjUfrhBfixIRZozNtxH5D6Tkof5v84P4O8WPI+oZeRzTw==","signatures":[{"sig":"MEUCIEeKNNPxwMP/DBUbxpImf2GhqOR7pbgVKUzczn6iJW4OAiEAyn8WapX5lxlhZWJ2Ql02Z3w+KogcUTtsTylf0NtoUoM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18878},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-alpha.1.zw.3.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-alpha.1.zw.3.tgz","_integrity":"sha512-AGDRAdBvAwulvEwBirBR6w2CIOGSfzp1Cw41jCWoMhjUfrhBfixIRZozNtxH5D6Tkof5v84P4O8WPI+oZeRzTw==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent":"^0.1.5-alpha.1","@deepseek-ai/dsh-session":"^0.1.5-alpha.1","@deepseek-ai/dsh-tool-todo":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent-loop":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.5-alpha.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-alpha.1","@deepseek-ai/dsh-agent":"^0.1.5-alpha.1","@deepseek-ai/dsh-session":"^0.1.5-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.5-alpha.1.zw.3_1789007803123_0.08727073540102559","host":"s3://npm-registry-packages-npm-production"}},"0.1.5-rc.1.zw.1":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.5-rc.1.zw.1","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.5-rc.1.zw.1","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"57ed72d74ef0d269d3cfc2a24859b12f054e1ea8","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.5-rc.1.zw.1.tgz","fileCount":9,"integrity":"sha512-nI07/nnS+prL96qJorHMY6d/gU0hIVEQE9noBTBbzDp5cxFAtBXYRanBpf6ZmW02yyd30C5e+qZhyQ1s9QjBPA==","signatures":[{"sig":"MEUCIQDSVvdfhOlaYwhlv79arXkyVPX1l0beRlMi45vKVq/Z1gIgLO0iPqj/ecgU6/U31+0sTlxCMy+BY1TijLeWe7mJ9Og=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16829},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-rc.1.zw.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-rc.1.zw.1.tgz","_integrity":"sha512-nI07/nnS+prL96qJorHMY6d/gU0hIVEQE9noBTBbzDp5cxFAtBXYRanBpf6ZmW02yyd30C5e+qZhyQ1s9QjBPA==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-rc.1","@deepseek-ai/dsh-agent":"^0.1.5-rc.1","@deepseek-ai/dsh-session":"^0.1.5-rc.1","@deepseek-ai/dsh-tool-todo":"^0.1.5-rc.1","@deepseek-ai/dsh-agent-loop":"^0.1.5-rc.1","@deepseek-ai/dsh-invariants":"^0.1.5-rc.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.5-rc.1","@deepseek-ai/dsh-session-projection":"^0.1.5-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-rc.1","@deepseek-ai/dsh-agent":"^0.1.5-rc.1","@deepseek-ai/dsh-session":"^0.1.5-rc.1","@deepseek-ai/dsh-invariants":"^0.1.5-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.5-rc.1.zw.1_1789056720145_0.11200370604571752","host":"s3://npm-registry-packages-npm-production"}},"0.1.5-rc.1.zw.2":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.5-rc.1.zw.2","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.5-rc.1.zw.2","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"4199e670d080b5f08576bb9146cc3831d33dc55d","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.5-rc.1.zw.2.tgz","fileCount":9,"integrity":"sha512-L8jZQdZDnMO+VlgdgEcksflxuZnn7eoKB/QQAidnF7KGNtcUa8vLgZ2yRe23rodfY+efxp4yBgOzkRlAOKQ72w==","signatures":[{"sig":"MEQCIBl4/LOM70Kz36+NtFMa2e8vPS8DZ4IZvsyFDq7MHL29AiASU4E+Dco1S+fmpx+O73qikOGIvyMUqdugsRhphtx8lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDJGVw1siUAqNH+AxxqIYAOt74zdfFjtBNEzTGKocLygwIhAPwe2ZJ+ZNdP/h02o6n5KkDJ0OXz12orOMWBvw7j1ID7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16829},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-rc.1.zw.2.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-rc.1.zw.2.tgz","_integrity":"sha512-L8jZQdZDnMO+VlgdgEcksflxuZnn7eoKB/QQAidnF7KGNtcUa8vLgZ2yRe23rodfY+efxp4yBgOzkRlAOKQ72w==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-rc.1","@deepseek-ai/dsh-agent":"^0.1.5-rc.1","@deepseek-ai/dsh-session":"^0.1.5-rc.1","@deepseek-ai/dsh-tool-todo":"^0.1.5-rc.1","@deepseek-ai/dsh-agent-loop":"^0.1.5-rc.1","@deepseek-ai/dsh-invariants":"^0.1.5-rc.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.5-rc.1","@deepseek-ai/dsh-session-projection":"^0.1.5-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-rc.1","@deepseek-ai/dsh-agent":"^0.1.5-rc.1","@deepseek-ai/dsh-session":"^0.1.5-rc.1","@deepseek-ai/dsh-invariants":"^0.1.5-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.5-rc.1.zw.2_1789099892557_0.4186996667205658","host":"s3://npm-registry-packages-npm-production"}},"0.1.5-rc.2.zw.1":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.5-rc.2.zw.1","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.5-rc.2.zw.1","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"2cebfb54393375282475b748479a141469a7e6ff","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.5-rc.2.zw.1.tgz","fileCount":9,"integrity":"sha512-HSHikD1Wyda199Zdnnw2Yjd/T/FV/K1QUOrynIKuQfMpZnjFqca9kARKSJ/UbmPE5sxxhDYD4pOTV7fw2JsTJA==","signatures":[{"sig":"MEQCIHTlRWRMcEAcV9RKN5P93eANlVL3N7+NA8ZNWAUfZ2BEAiBqrOx1UhDwFTjJqcvg0awsSCavz+t7Qo+dPOOiATJfuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC9RzL7vP6SSfGjEHtxLlWPMsk2lDVP+GLkC7Cnx6DcsAIhAMzrq7D/rsDy95LV2qHg/oIhQoaPRg4Qdf9KTdFpo7v1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16829},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-rc.2.zw.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.5-rc.2.zw.1.tgz","_integrity":"sha512-HSHikD1Wyda199Zdnnw2Yjd/T/FV/K1QUOrynIKuQfMpZnjFqca9kARKSJ/UbmPE5sxxhDYD4pOTV7fw2JsTJA==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-rc.2","@deepseek-ai/dsh-agent":"^0.1.5-rc.2","@deepseek-ai/dsh-session":"^0.1.5-rc.2","@deepseek-ai/dsh-tool-todo":"^0.1.5-rc.2","@deepseek-ai/dsh-agent-loop":"^0.1.5-rc.2","@deepseek-ai/dsh-invariants":"^0.1.5-rc.2","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.5-rc.2","@deepseek-ai/dsh-session-projection":"^0.1.5-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.5-rc.2","@deepseek-ai/dsh-agent":"^0.1.5-rc.2","@deepseek-ai/dsh-session":"^0.1.5-rc.2","@deepseek-ai/dsh-invariants":"^0.1.5-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.5-rc.2.zw.1_1789145898492_0.09824354741426711","host":"s3://npm-registry-packages-npm-production"}},"0.1.6-alpha.1.zw.1":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.6-alpha.1.zw.1","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.6-alpha.1.zw.1","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"b0d8592d4fab21ea858184345361e98e1fc7e925","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.6-alpha.1.zw.1.tgz","fileCount":9,"integrity":"sha512-AHn5FnAJYH6Q3rhMlfcDtyC0Ypd05/bXSuVORrF1clSPkrC5VtDxrNdbYCviwoUP1qam/AyNjMLNspNJMTRA9Q==","signatures":[{"sig":"MEUCIDvF5NWHfNHrxWxm3cLnovUfxLkaPe4x+U5e/Z255btWAiEAvifBbYKTQrCwWan/eTeq/IeqYb79w/VfBKkG3q/lq78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCXBK6TznL41mNOtFxpL9y9HHt+IQpGuTsXh9Doc9vZ8AIgQFWebep2amhiJSIGKbtI9MrCkPcPItoeqbuWyE3ITLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16868},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.6-alpha.1.zw.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.6-alpha.1.zw.1.tgz","_integrity":"sha512-AHn5FnAJYH6Q3rhMlfcDtyC0Ypd05/bXSuVORrF1clSPkrC5VtDxrNdbYCviwoUP1qam/AyNjMLNspNJMTRA9Q==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent":"^0.1.6-alpha.1","@deepseek-ai/dsh-session":"^0.1.6-alpha.1","@deepseek-ai/dsh-tool-todo":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent-loop":"^0.1.6-alpha.1","@deepseek-ai/dsh-invariants":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.6-alpha.1","@deepseek-ai/dsh-session-projection":"^0.1.6-alpha.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent":"^0.1.6-alpha.1","@deepseek-ai/dsh-session":"^0.1.6-alpha.1","@deepseek-ai/dsh-invariants":"^0.1.6-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.6-alpha.1.zw.1_1789495137965_0.2410254112827488","host":"s3://npm-registry-packages-npm-production"}},"0.1.6-alpha.1.zw.2":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.6-alpha.1.zw.2","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.6-alpha.1.zw.2","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"c17e3ea5981a394a955a582798dd6e3bd3f29050","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.6-alpha.1.zw.2.tgz","fileCount":9,"integrity":"sha512-/HrV7UBsD/tyPIwdQ1acXy5YU5fHf+C1syaQqV0ec3zK2EnN6um1T3Gx8s15LzpOF8ZQs9mzIJ7NiK9puTO7Vw==","signatures":[{"sig":"MEQCIAZksRdkXn1N4MEqH9otkJA+WZ+EDarVKjnW/BX/ZdCRAiAz6LDJrCoolb5Ghce8Cj9tKVXT3+uKyUsP1Uv9NzyFWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCbviX0djZ9+qxj45FUThPyGZ0SrM87/oSZR0CaRlrivgIgcgdSpWBPOlU4ipYrhu6K1mb3QXpetVUzPejUInG3Q1c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16868},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.6-alpha.1.zw.2.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.6-alpha.1.zw.2.tgz","_integrity":"sha512-/HrV7UBsD/tyPIwdQ1acXy5YU5fHf+C1syaQqV0ec3zK2EnN6um1T3Gx8s15LzpOF8ZQs9mzIJ7NiK9puTO7Vw==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent":"^0.1.6-alpha.1","@deepseek-ai/dsh-session":"^0.1.6-alpha.1","@deepseek-ai/dsh-tool-todo":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent-loop":"^0.1.6-alpha.1","@deepseek-ai/dsh-invariants":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.6-alpha.1","@deepseek-ai/dsh-session-projection":"^0.1.6-alpha.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent":"^0.1.6-alpha.1","@deepseek-ai/dsh-session":"^0.1.6-alpha.1","@deepseek-ai/dsh-invariants":"^0.1.6-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.6-alpha.1.zw.2_1789496352130_0.2535124386246921","host":"s3://npm-registry-packages-npm-production"}},"0.1.6-alpha.1.zw.3":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.6-alpha.1.zw.3","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.6-alpha.1.zw.3","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"4f0a6b14dc2ef69318fd6334f6b6c3c8e3fe59d8","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.6-alpha.1.zw.3.tgz","fileCount":9,"integrity":"sha512-UVqTgshJTmcMmfBj0oiiamC9oySf4F7rUDPEwVZKyizmid2jlxcY5GxThlJImB3v84wx3VLQDmTkT/9IMFefNA==","signatures":[{"sig":"MEUCIQDs4U+TskcdZB6l36ltpldcStHO4WyXGtHacDLy5qkKJAIgEJ1tMqJnIkCedb+SmF7nj71pTj0D4FOgz1jl5J9MnZ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCxTyOc5ZZh9Gz372VADhJwagRBAkWlzJxMKOYKEAL2OQIgLEe9k3HzFsjIh28+Hz2HkezseHUVuPJ4pqGPtk8WxFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16868},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.6-alpha.1.zw.3.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.6-alpha.1.zw.3.tgz","_integrity":"sha512-UVqTgshJTmcMmfBj0oiiamC9oySf4F7rUDPEwVZKyizmid2jlxcY5GxThlJImB3v84wx3VLQDmTkT/9IMFefNA==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent":"^0.1.6-alpha.1","@deepseek-ai/dsh-session":"^0.1.6-alpha.1","@deepseek-ai/dsh-tool-todo":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent-loop":"^0.1.6-alpha.1","@deepseek-ai/dsh-invariants":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.6-alpha.1","@deepseek-ai/dsh-session-projection":"^0.1.6-alpha.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.6-alpha.1","@deepseek-ai/dsh-agent":"^0.1.6-alpha.1","@deepseek-ai/dsh-session":"^0.1.6-alpha.1","@deepseek-ai/dsh-invariants":"^0.1.6-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.6-alpha.1.zw.3_1789523610417_0.9266911175120436","host":"s3://npm-registry-packages-npm-production"}},"0.1.6-alpha.2.zw.1":{"name":"@crazx/dsh-todo-completion-guard","version":"0.1.6-alpha.2.zw.1","license":"MIT","_id":"@crazx/dsh-todo-completion-guard@0.1.6-alpha.2.zw.1","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"6417da1447c136fcb2a68192e5e63335b345e01e","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.6-alpha.2.zw.1.tgz","fileCount":9,"integrity":"sha512-Yi7/GLskwC96THcCatW5iFal5GYW+xOmA74OMtCZ1neFTcAgtn271Xa6eRHdDu7n/mpx5LuIuv3meQHRDG1AgA==","signatures":[{"sig":"MEYCIQDzubDgUvv/4IN9ZW8LVj4x1rA9QAMLch2TideaUc9l+AIhAND9p5Lsx7FJQaHLN6HHp0TuJsDjb05i36jVO9xFFAmW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCzlIznjGL/aNg4CUwmXFz1qMG1YT/oiV/4UtC8Pg/BjAIgbuqBx71Hm0WKHU++d9zggqDRo5mhukKgxJp5GRRfgnI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16868},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.6-alpha.2.zw.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.6-alpha.2.zw.1.tgz","_integrity":"sha512-Yi7/GLskwC96THcCatW5iFal5GYW+xOmA74OMtCZ1neFTcAgtn271Xa6eRHdDu7n/mpx5LuIuv3meQHRDG1AgA==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.6-alpha.2","@deepseek-ai/dsh-agent":"^0.1.6-alpha.2","@deepseek-ai/dsh-session":"^0.1.6-alpha.2","@deepseek-ai/dsh-tool-todo":"^0.1.6-alpha.2","@deepseek-ai/dsh-agent-loop":"^0.1.6-alpha.2","@deepseek-ai/dsh-invariants":"^0.1.6-alpha.2","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.6-alpha.2","@deepseek-ai/dsh-session-projection":"^0.1.6-alpha.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.6-alpha.2","@deepseek-ai/dsh-agent":"^0.1.6-alpha.2","@deepseek-ai/dsh-session":"^0.1.6-alpha.2","@deepseek-ai/dsh-invariants":"^0.1.6-alpha.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-todo-completion-guard_0.1.6-alpha.2.zw.1_1789668014455_0.0038864911509031153","host":"s3://npm-registry-packages-npm-production"}},"0.1.6-alpha.2.zw.2":{"_id":"@crazx/dsh-todo-completion-guard@0.1.6-alpha.2.zw.2","bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"dist":{"shasum":"95796cc6e3de691c8a769d4eaaeb78e6edb43b7f","tarball":"https://registry.npmjs.org/@crazx/dsh-todo-completion-guard/-/dsh-todo-completion-guard-0.1.6-alpha.2.zw.2.tgz","fileCount":9,"integrity":"sha512-2fLZVv7O4xfQqHjPZzMJ6wYAmU80x5iOoauP6bfjK7Iw/DuxKspunqshq+47L1CoDVQvds0VmN4c/nmKaf0xaQ==","signatures":[{"sig":"MEYCIQCd9SnljPbKTGPOZRpizbgQy8RSYAg033PsenWKbaGUnQIhAIKPKvKtHEQjyslK0s4C1elsNHqnqfre60mqbvA53lfZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC2rdbR9mMD2Wfr+jU5cfgwAsYDqNMedPrCRzQ1NbWVmAIgYSDdvVN25MgpEWkX3GJE2rPvS5x6hCOsJyInLFsP9zM="}],"unpackedSize":16868},"main":"lib/index.js","name":"@crazx/dsh-todo-completion-guard","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.6-alpha.2.zw.2.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"license":"MIT","version":"0.1.6-alpha.2.zw.2","_npmUser":{"name":"danielzhang688","email":"danielzhang688@gmail.com"},"homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/.publish-staging/crazx-dsh-todo-completion-guard-0.1.6-alpha.2.zw.2.tgz","_integrity":"sha512-2fLZVv7O4xfQqHjPZzMJ6wYAmU80x5iOoauP6bfjK7Iw/DuxKspunqshq+47L1CoDVQvds0VmN4c/nmKaf0xaQ==","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"_npmVersion":"11.19.0","description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","directories":{},"maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.6-alpha.2","@deepseek-ai/dsh-agent":"^0.1.6-alpha.2","@deepseek-ai/dsh-session":"^0.1.6-alpha.2","@deepseek-ai/dsh-tool-todo":"^0.1.6-alpha.2","@deepseek-ai/dsh-agent-loop":"^0.1.6-alpha.2","@deepseek-ai/dsh-invariants":"^0.1.6-alpha.2","@deepseek-ai/dsh-agent-loop-testkit":"^0.1.6-alpha.2","@deepseek-ai/dsh-session-projection":"^0.1.6-alpha.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"^0.1.6-alpha.2","@deepseek-ai/dsh-agent":"^0.1.6-alpha.2","@deepseek-ai/dsh-session":"^0.1.6-alpha.2","@deepseek-ai/dsh-invariants":"^0.1.6-alpha.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-todo-completion-guard_0.1.6-alpha.2.zw.2_1789671238330_0.6081302624048348"}}},"time":{"created":"2026-08-19T18:03:54.834Z","modified":"2026-09-17T18:53:58.632Z","0.1.0-rc.7.zw.2":"2026-08-19T18:03:55.149Z","0.1.0-rc.8.zw.3":"2026-08-20T00:58:58.882Z","0.1.0-rc.8.zw.4":"2026-08-20T01:10:53.137Z","0.1.1-rc.1.zw.1":"2026-08-21T10:15:56.886Z","0.1.1-rc.1.zw.2":"2026-08-22T03:30:44.615Z","0.1.1-rc.2.zw.1":"2026-08-22T06:16:30.186Z","0.1.2-alpha.3.zw.1":"2026-09-01T10:28:36.536Z","0.1.2-alpha.3.zw.2":"2026-09-02T06:05:24.477Z","0.1.2-alpha.5.zw.1":"2026-09-03T04:33:43.168Z","0.1.2-rc.1.zw.1":"2026-09-03T16:14:57.504Z","0.1.2-rc.1.zw.2":"2026-09-07T14:36:43.068Z","0.1.5-alpha.1.zw.1":"2026-09-09T05:56:05.587Z","0.1.5-alpha.1.zw.2":"2026-09-09T06:29:11.928Z","0.1.5-alpha.1.zw.3":"2026-09-10T02:36:43.250Z","0.1.5-rc.1.zw.1":"2026-09-10T16:12:00.290Z","0.1.5-rc.1.zw.2":"2026-09-11T04:11:32.635Z","0.1.5-rc.2.zw.1":"2026-09-11T16:58:18.613Z","0.1.6-alpha.1.zw.1":"2026-09-15T17:58:58.054Z","0.1.6-alpha.1.zw.2":"2026-09-15T18:19:12.227Z","0.1.6-alpha.1.zw.3":"2026-09-16T01:53:30.492Z","0.1.6-alpha.2.zw.1":"2026-09-17T18:00:14.545Z","0.1.6-alpha.2.zw.2":"2026-09-17T18:53:58.417Z"},"bugs":{"url":"https://github.com/aka-danielZhang/deepseek-harness/issues"},"license":"MIT","homepage":"https://github.com/aka-danielZhang/deepseek-harness#readme","repository":{"url":"git+https://github.com/aka-danielZhang/deepseek-harness.git","type":"git","directory":"packages/guard/todo-completion-guard"},"description":"Turn-end todo guard plugin: one advisory steer when a turn closes on an unfinished todo list","maintainers":[{"name":"danielzhang688","email":"danielzhang688@gmail.com"},{"name":"rockshan3906","email":"rockshan3906@gmail.com"}],"readme":"# @deepseek-ai/dsh-todo-completion-guard\n\n[English](README.md) | 中文\n\n一个仅提供建议的回合结束守卫，而非面向模型的工具：它不会出现在工具列表中，不会否决任何回合，只增加一种行为——当一个本可完成的回合即将结束、而其当前有效 todo 清单仍有未完成项时，它会向**同一回合**注入一条 plugin-notice，要求模型完成并勾掉这些项、围绕明确放弃重写清单，或显式说明清单为何保持开放。是否遵从完全由模型决定；守卫每回合只提醒一次，绝不循环。决策记录见 [todo-completion-guard Agent Note](../../../.agents/notes/implemented/feature/2026-08-19-todo-completion-guard.zh.md)。\n\n## 触发时机\n\n守卫监听 `agent/turn-stopping`——loop 在关闭一个本可完成的回合前广播的边界（与 Claude Code Stop hook 同一条缝）。被注入的消息会让 loop 观察到待处理输入，并在同一回合里再跑一个 step。\n\n在这个边界上，它检查当前回合的事件：\n\n- **当前有效清单**——当前回合自己的 `turn/start` 之后的最近一次 `todo/write`，与 todo 投影的清空规则一致。更早回合写的清单已被该规则清空，绝不追讨；没写过清单的回合对守卫不可见。\n- **未完成 = 非 `completed`**——`pending` 和 `in_progress` 都算。被遗忘的 `pending` 项正是这个守卫要清理的残羹。\n- **豁免：撞墙回合。** 若回合中任何 step 以 `max-tokens` 收尾（粘性回合结局），守卫保持沉默——强制续 step 大概率再次撞上同一输出上限，白白烧掉请求。\n- **每 agent 每回合一次。** 被提醒后仍以开放清单收尾的回合允许结束：提醒列出了全部出口（完成、附一行理由重写、或显式声明延后），选择保留清单的模型已经听过一次。这是守卫自带的循环上限；loop 本身没有。\n\n## 提醒内容\n\n一条 `notice` 形态的上下文消息，source 为 `{kind: 'plugin', plugin: 'todo-completion-guard'}`，注入回合并作为落日志的 `user/message` 追加——模型可见、来源可归属、可从会话日志重建，无需新的会话事件。它列出每个未完成项及其状态，然后给出三个出口。决定——完成、重写、还是保留并显式声明——留给模型：合法延后的清单（工作延续到下一回合、等待用户）既不被延迟也不被阻塞。\n\n## 组合\n\n```yaml\n- id: todo-completion-guard\n  name: '@deepseek-ai/dsh-todo-completion-guard'\n```\n\n无配置：这个守卫可能暴露的每个旋钮（提醒文案、每回合上限、豁免规则）都是 advisory 契约的正确性属性，而非部署选择。它是 `todo/write` 事件词汇的消费者；组合中未挂载 `tool-todo` 时它天然无害（任何回合都不会写该事件）。\n\n## 已知限制与延后工作\n\n- **仅建议**——确认收到提醒却仍保留开放清单的模型，在提醒一次后即可结束回合；升级为强制延续已被拒绝（那是 loop 层的 `TODO(stop-loop-guard)` 策略，不属于本守卫）。\n- **内存态限流**——每回合一次的状态是挂在活跃 agent 上的 `WeakMap`；从持久化恢复的会话获得全新预算，这只影响横跨进程重启的回合。\n- **子代理清单设计上不可见**——守卫读每个 agent 自己的会话日志；子代理的未完成清单绝不会驱动父代理（父代理自己的清单按它所见反映委派工作）。\n","readmeFilename":"README.zh.md"}