{"_id":"@4-r-c-4-n-4/todo","_rev":"8-ecb3469e0277504696c5aa4d522a8c7d","name":"@4-r-c-4-n-4/todo","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.2":{"name":"@4-r-c-4-n-4/todo","version":"0.1.2","keywords":["todo","git","ticket","cli","agent","coding-agent"],"author":"","license":"ISC","_id":"@4-r-c-4-n-4/todo@0.1.2","maintainers":[{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"}],"homepage":"https://github.com/4-R-C-4-N-4/todo#readme","bugs":{"url":"https://github.com/4-R-C-4-N-4/todo/issues"},"bin":{"todo":"dist/cli.js"},"dist":{"shasum":"aef6941dc7843f6359fc924696ca7a76f8f3898c","tarball":"https://registry.npmjs.org/@4-r-c-4-n-4/todo/-/todo-0.1.2.tgz","fileCount":55,"integrity":"sha512-/6IGS7qXJwhYXYWwketIs6cDWo8h2Xx+EVf+wCXvOaM+3eCO4AJCa/5vQQQEufmwfK2jCoilpWfOjBAftd8vVQ==","signatures":[{"sig":"MEQCIGlUWlp5nyUwyk9KN8f9MK2FntBV9eEK7jxW6EbcOWNYAiA4OYRHhL9W5zScGvUZG8n6Mz5UOWmMYsdSizhtbAPkcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272617},"main":"dist/cli.js","type":"commonjs","types":"./dist/cli.d.ts","engines":{"node":">=22"},"gitHead":"05a02f3493bdb730ca0deefb314f17e0fd927061","scripts":{"lint":"biome check src/","test":"vitest run","build":"tsc","check":"tsc --noEmit","bundle":"esbuild src/cli.ts --bundle --platform=node --target=node22 --outfile=dist/bundle.js --external:crypto --external:fs --external:path --external:child_process --external:os --external:readline && node -e \"const fs=require('fs');const f='dist/bundle.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\"","lint:fix":"biome check src/ --write","postbuild":"node -e \"const fs=require('fs');const f='dist/cli.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\""},"_npmUser":{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"},"repository":{"url":"git+https://github.com/4-R-C-4-N-4/todo.git","type":"git"},"_npmVersion":"11.1.0","description":"Git-native work tracking for coding agents","directories":{},"_nodeVersion":"20.17.0","dependencies":{"commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/todo_0.1.2_1776085028584_0.3488861516208779","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@4-r-c-4-n-4/todo","version":"0.1.3","keywords":["todo","git","ticket","cli","agent","coding-agent"],"author":"","license":"ISC","_id":"@4-r-c-4-n-4/todo@0.1.3","maintainers":[{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"}],"homepage":"https://github.com/4-R-C-4-N-4/todo#readme","bugs":{"url":"https://github.com/4-R-C-4-N-4/todo/issues"},"bin":{"todo":"dist/cli.js"},"dist":{"shasum":"a434d2d6188b689c0e0e95024f8a29e03e9ddd5b","tarball":"https://registry.npmjs.org/@4-r-c-4-n-4/todo/-/todo-0.1.3.tgz","fileCount":57,"integrity":"sha512-CtQWqwZfbXPTve6BqC9N/GE5FRP7eezPYkpiauH8XbVnSqLWjGh9isRnxSQcFsH0aLGNw2KsF9+oVIuLjUmwSA==","signatures":[{"sig":"MEQCIAcK70wmqAItaeOBoyEcQ/r9SGk2+/f3F7y5h8sc0lYEAiByeAVM06y6BgAbj95IHEcA0CAEwpBR9kDey9yS6W08lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280706},"main":"dist/cli.js","type":"commonjs","types":"./dist/cli.d.ts","engines":{"node":">=20"},"gitHead":"44889fcbf32118d19479d99db42b3dd5775e1974","scripts":{"lint":"biome check src/","test":"vitest run","build":"tsc","check":"tsc --noEmit","bundle":"esbuild src/cli.ts --bundle --platform=node --target=node22 --outfile=dist/bundle.js --external:crypto --external:fs --external:path --external:child_process --external:os --external:readline && node -e \"const fs=require('fs');const f='dist/bundle.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\"","lint:fix":"biome check src/ --write","postbuild":"node -e \"const fs=require('fs');const f='dist/cli.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\""},"_npmUser":{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"},"repository":{"url":"git+https://github.com/4-R-C-4-N-4/todo.git","type":"git"},"_npmVersion":"11.1.0","description":"Git-native work tracking for coding agents","directories":{},"_nodeVersion":"20.17.0","dependencies":{"commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/todo_0.1.3_1776198291452_0.35817086946221965","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@4-r-c-4-n-4/todo","version":"0.1.4","keywords":["todo","git","ticket","cli","agent","coding-agent"],"author":"","license":"ISC","_id":"@4-r-c-4-n-4/todo@0.1.4","maintainers":[{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"}],"homepage":"https://github.com/4-R-C-4-N-4/todo#readme","bugs":{"url":"https://github.com/4-R-C-4-N-4/todo/issues"},"bin":{"todo":"dist/cli.js"},"dist":{"shasum":"ab0fdfe2d1a29da70cd567e5ad6123fef9beae96","tarball":"https://registry.npmjs.org/@4-r-c-4-n-4/todo/-/todo-0.1.4.tgz","fileCount":57,"integrity":"sha512-uIPHXmC2SLN47XuG8NjgaT4oW7AuXseCyWq77EKNHoqSOqPpIsICU4gSJgRnBvIiRzVC5ihO0NoHmDM3Wn4wBw==","signatures":[{"sig":"MEQCIG/H8uejSD4sQ2vNDIodLCOclbF7DYpaCyYCE0r9wCg8AiBwovJbED0q2rBKI/C2lV+kS1YEEfns7MxZ99sWFgUJ7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283339},"main":"dist/cli.js","type":"commonjs","types":"./dist/cli.d.ts","engines":{"node":">=20"},"gitHead":"92c2a60c40756696134f3a4e0511a564dd02e0e3","scripts":{"lint":"biome check src/","test":"vitest run","build":"tsc","check":"tsc --noEmit","bundle":"esbuild src/cli.ts --bundle --platform=node --target=node22 --outfile=dist/bundle.js --external:crypto --external:fs --external:path --external:child_process --external:os --external:readline && node -e \"const fs=require('fs');const f='dist/bundle.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\"","lint:fix":"biome check src/ --write","postbuild":"node -e \"const fs=require('fs');const f='dist/cli.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\""},"_npmUser":{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"},"repository":{"url":"git+https://github.com/4-R-C-4-N-4/todo.git","type":"git"},"_npmVersion":"11.1.0","description":"Git-native work tracking for coding agents","directories":{},"_nodeVersion":"20.17.0","dependencies":{"commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/todo_0.1.4_1776291334191_0.5499804510941904","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@4-r-c-4-n-4/todo","version":"0.1.5","keywords":["todo","git","ticket","cli","agent","coding-agent"],"author":"","license":"ISC","_id":"@4-r-c-4-n-4/todo@0.1.5","maintainers":[{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"}],"homepage":"https://github.com/4-R-C-4-N-4/todo#readme","bugs":{"url":"https://github.com/4-R-C-4-N-4/todo/issues"},"bin":{"todo":"dist/cli.js"},"dist":{"shasum":"59ca0f75996742efa61b3d37624c63b544303038","tarball":"https://registry.npmjs.org/@4-r-c-4-n-4/todo/-/todo-0.1.5.tgz","fileCount":66,"integrity":"sha512-zWZHaJMb3KPoodV3Xn4r/QRSVgWTk6GygUwNEsKyeSoeahgqUV3Cj14FiqYLY6WZdSHK6LF5gYpuk3iUR92/MQ==","signatures":[{"sig":"MEQCIESeGHB28X7Fkxz0hNbsCV3V00r0bOso/u+noGsj7cu9AiBlLf3Q7edhDPQ9KlQ8tBzj7YNL18Qn0uuhed5sh0OXtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130250},"main":"dist/cli.js","type":"commonjs","types":"./dist/cli.d.ts","engines":{"node":">=20"},"gitHead":"b3fc519751896b502fffba9d443915eeca7795a4","scripts":{"lint":"biome check src/","test":"vitest run","build":"tsc","check":"tsc --noEmit","bundle":"esbuild src/cli.ts --bundle --platform=node --target=node22 --outfile=dist/bundle.js --external:crypto --external:fs --external:path --external:child_process --external:os --external:readline && node -e \"const fs=require('fs');const f='dist/bundle.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\"","pretest":"npm run build","lint:fix":"biome check src/ --write","postbuild":"node -e \"const fs=require('fs');const f='dist/cli.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\""},"_npmUser":{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"},"repository":{"url":"git+https://github.com/4-R-C-4-N-4/todo.git","type":"git"},"_npmVersion":"10.9.7","description":"Git-native work tracking for coding agents","directories":{},"_nodeVersion":"22.22.2","dependencies":{"commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/todo_0.1.5_1779490034276_0.6784232908705379","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@4-r-c-4-n-4/todo","version":"0.1.6","keywords":["todo","git","ticket","cli","agent","coding-agent"],"author":"","license":"ISC","_id":"@4-r-c-4-n-4/todo@0.1.6","maintainers":[{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"}],"homepage":"https://github.com/4-R-C-4-N-4/todo#readme","bugs":{"url":"https://github.com/4-R-C-4-N-4/todo/issues"},"bin":{"todo":"dist/cli.js"},"dist":{"shasum":"7dcdf9bb04296d93326a1fc5134227bceddb5519","tarball":"https://registry.npmjs.org/@4-r-c-4-n-4/todo/-/todo-0.1.6.tgz","fileCount":70,"integrity":"sha512-/h0bYvVn/6lS1aKa4VDy7TqYmHW6ZSgJRm4EAGVb2VTCVaUH4tsku/FSbe6/5LIGGV9G+doXP+qvLV4SpuK97A==","signatures":[{"sig":"MEUCIQDrWXxnThvRI0vU6uHdu2MoW9Z+zwaYh5YGLpEP+vrEOwIgAjawlyWZcBW3RQOuo6EbhFOyRkz7pXoH7d9zD5A/VCE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144520},"main":"dist/cli.js","type":"commonjs","types":"./dist/cli.d.ts","engines":{"node":">=20"},"gitHead":"df1d154f7a820b79b4b137663e6c66e37738a29d","scripts":{"lint":"biome check src/","test":"vitest run","build":"tsc","check":"tsc --noEmit","bundle":"esbuild src/cli.ts --bundle --platform=node --target=node22 --outfile=dist/bundle.js --external:crypto --external:fs --external:path --external:child_process --external:os --external:readline && node -e \"const fs=require('fs');const f='dist/bundle.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\"","pretest":"npm run build","lint:fix":"biome check src/ --write","postbuild":"node -e \"const fs=require('fs');const f='dist/cli.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\""},"_npmUser":{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"},"repository":{"url":"git+https://github.com/4-R-C-4-N-4/todo.git","type":"git"},"_npmVersion":"10.9.7","description":"Git-native work tracking for coding agents","directories":{},"_nodeVersion":"22.22.2","dependencies":{"commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/todo_0.1.6_1779911908664_0.6523213547448559","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@4-r-c-4-n-4/todo","version":"0.1.7","keywords":["todo","git","ticket","cli","agent","coding-agent"],"author":"","license":"ISC","_id":"@4-r-c-4-n-4/todo@0.1.7","maintainers":[{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"}],"homepage":"https://github.com/4-R-C-4-N-4/todo#readme","bugs":{"url":"https://github.com/4-R-C-4-N-4/todo/issues"},"bin":{"todo":"dist/cli.js"},"dist":{"shasum":"dbf90b7f8c549235486158234e43e4f35253701f","tarball":"https://registry.npmjs.org/@4-r-c-4-n-4/todo/-/todo-0.1.7.tgz","fileCount":72,"integrity":"sha512-kbJT37xBtwpfCq4K0aXBfSlTHYFuKWxWBhhHLByR1rshQfTy5Rqex4hhgpB47mrZekdXETgH6KG3wLrG0sqo2w==","signatures":[{"sig":"MEUCIQCbOeF6bMlMWh4fL7fLAU7PwQoDoLM0jvz07POE64tuRgIgcnIxQvtncM4Hg9pflJZQUPSWM960zhjV6p1IJy34eCU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168323},"main":"dist/cli.js","type":"commonjs","types":"./dist/cli.d.ts","engines":{"node":">=20"},"gitHead":"c671a07bae61b0b933abca3ec84b205a69fdc8c2","scripts":{"lint":"biome check src/","test":"vitest run","build":"tsc","check":"tsc --noEmit","bundle":"esbuild src/cli.ts --bundle --platform=node --target=node22 --outfile=dist/bundle.js --external:crypto --external:fs --external:path --external:child_process --external:os --external:readline && node -e \"const fs=require('fs');const f='dist/bundle.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\"","pretest":"npm run build","lint:fix":"biome check src/ --write","postbuild":"node -e \"const fs=require('fs');const f='dist/cli.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\""},"_npmUser":{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"},"repository":{"url":"git+https://github.com/4-R-C-4-N-4/todo.git","type":"git"},"_npmVersion":"10.9.7","description":"Git-native work tracking for coding agents","directories":{},"_nodeVersion":"22.22.2","dependencies":{"commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/todo_0.1.7_1779925721216_0.7566316398919355","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@4-r-c-4-n-4/todo","version":"0.2.0","keywords":["todo","git","ticket","cli","agent","coding-agent"],"author":"","license":"ISC","_id":"@4-r-c-4-n-4/todo@0.2.0","maintainers":[{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"}],"homepage":"https://github.com/4-R-C-4-N-4/todo#readme","bugs":{"url":"https://github.com/4-R-C-4-N-4/todo/issues"},"bin":{"todo":"dist/cli.js"},"dist":{"shasum":"80f9c4b9b207409f625bb7ff4921674621ad4f8b","tarball":"https://registry.npmjs.org/@4-r-c-4-n-4/todo/-/todo-0.2.0.tgz","fileCount":72,"integrity":"sha512-PQ9FN/3r/05q1Iyurcn1IErIr4B7XmccObuN59Q+0uguIgCdleR833tvPDT1Bad08laqJ37ZM1YyCCswafjHlQ==","signatures":[{"sig":"MEUCIDHMgxlIUEzlskbGU+RsLQnIpQsLM6qE34ZG8w+8tpDHAiEAgvHZCFCrqNq6rIeig1UjtZQ0eOM4JByDDc092mHXQ/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168323},"main":"dist/cli.js","type":"commonjs","types":"./dist/cli.d.ts","engines":{"node":">=20"},"gitHead":"f5b5b617fc3d527000db8a3959edfd543d50a696","scripts":{"lint":"biome check src/","test":"vitest run","build":"tsc","check":"tsc --noEmit","bundle":"esbuild src/cli.ts --bundle --platform=node --target=node22 --outfile=dist/bundle.js --external:crypto --external:fs --external:path --external:child_process --external:os --external:readline && node -e \"const fs=require('fs');const f='dist/bundle.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\"","pretest":"npm run build","lint:fix":"biome check src/ --write","postbuild":"node -e \"const fs=require('fs');const f='dist/cli.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\""},"_npmUser":{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"},"repository":{"url":"git+https://github.com/4-R-C-4-N-4/todo.git","type":"git"},"_npmVersion":"10.9.7","description":"Git-native work tracking for coding agents","directories":{},"_nodeVersion":"22.22.2","dependencies":{"commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/todo_0.2.0_1779925784489_0.7680343255468702","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@4-r-c-4-n-4/todo","version":"0.2.1","description":"Git-native work tracking for coding agents","main":"dist/cli.js","bin":{"todo":"dist/cli.js"},"engines":{"node":">=20"},"repository":{"type":"git","url":"git+https://github.com/4-R-C-4-N-4/todo.git"},"scripts":{"build":"tsc","postbuild":"node -e \"const fs=require('fs');const f='dist/cli.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\"","bundle":"esbuild src/cli.ts --bundle --platform=node --target=node22 --outfile=dist/bundle.js --external:crypto --external:fs --external:path --external:child_process --external:os --external:readline && node -e \"const fs=require('fs');const f='dist/bundle.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\"","pretest":"npm run build","test":"vitest run","check":"tsc --noEmit","lint":"biome check src/","lint:fix":"biome check src/ --write"},"type":"commonjs","keywords":["todo","git","ticket","cli","agent","coding-agent"],"author":"","license":"MIT","devDependencies":{"@biomejs/biome":"^2.4.11","@types/node":"^25.6.0","esbuild":"^0.28.0","typescript":"^6.0.2","vitest":"^3.0.0"},"dependencies":{"commander":"^14.0.0"},"_id":"@4-r-c-4-n-4/todo@0.2.1","gitHead":"2baa9fcf4c2d5232f45b0b7f5cad87f3114ce582","types":"./dist/cli.d.ts","bugs":{"url":"https://github.com/4-R-C-4-N-4/todo/issues"},"homepage":"https://github.com/4-R-C-4-N-4/todo#readme","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-JgLmdElehgsW9fMF6eLUFwGGFaC3NSlkHxHzpCnAy0PWQx7f84BT4JHTrUMb/Gr0rOmByze92nInO6WWziGAtA==","shasum":"13c6f59ed0357b3752027df2105a9357bc36c246","tarball":"https://registry.npmjs.org/@4-r-c-4-n-4/todo/-/todo-0.2.1.tgz","fileCount":72,"unpackedSize":172997,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDhLQvAysxDAy71JICBoR5M6Qt+R++cmUl/qTAxyJ+xpAiEA+bCg+i3Vmfu6Y0hofAddL5g40UASo5jNNmMUQ9Hlklg="}]},"_npmUser":{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"},"directories":{},"maintainers":[{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/todo_0.2.1_1787332977373_0.3343346209689311"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-13T12:57:08.477Z","modified":"2026-08-21T17:22:57.713Z","0.1.2":"2026-04-13T12:57:08.737Z","0.1.3":"2026-04-14T20:24:51.593Z","0.1.4":"2026-04-15T22:15:34.396Z","0.1.5":"2026-05-22T22:47:14.419Z","0.1.6":"2026-05-27T19:58:28.835Z","0.1.7":"2026-05-27T23:48:41.380Z","0.2.0":"2026-05-27T23:49:44.730Z","0.2.1":"2026-08-21T17:22:57.528Z"},"bugs":{"url":"https://github.com/4-R-C-4-N-4/todo/issues"},"license":"MIT","homepage":"https://github.com/4-R-C-4-N-4/todo#readme","keywords":["todo","git","ticket","cli","agent","coding-agent"],"repository":{"type":"git","url":"git+https://github.com/4-R-C-4-N-4/todo.git"},"description":"Git-native work tracking for coding agents","maintainers":[{"name":"4-r-c-4-n-4","email":"4rc4n4.game@protonmail.com"}],"readme":"# todo\n\n**Git-native work tracking for coding agents.**\n\n[![npm](https://img.shields.io/npm/v/@4-r-c-4-n-4/todo)](https://www.npmjs.com/package/@4-r-c-4-n-4/todo)\n\n`todo` is a ticket tracker that lives *inside* your repository. Tickets are JSON files committed alongside your code in `.todo/`, so work state travels with the branch, survives clones, and is reviewable in a diff. It's designed so a coding agent can run the whole loop — capture a problem, attach reasoning, do the work, and close with proof — but it's just as usable by hand.\n\nTwo things make it more than a TODO list:\n\n- **A rationale trail.** `todo analyze` attaches structured reasoning (blame → hypothesis → evidence → conclusion) to a ticket, turning it into a lightweight ADR that's there when you reopen the work months later.\n- **A done contract.** A ticket can't close without proof — a resolution commit, and (for bugs) a test reference. Closes are self-documenting by construction.\n\n---\n\n## Install\n\n```bash\nnpm install -g @4-r-c-4-n-4/todo\n```\n\nRequires **Node ≥ 20** and a **git repository**. Then, from the repo root:\n\n```bash\ntodo init          # creates .todo/ and a config file\ngit add .todo && git commit -m \"chore: init todo\"\n```\n\n---\n\n## Quickstart\n\n```bash\n# 1. Capture a problem\nid=$(todo new \"Login throws on empty password\" --type bug --source human)\n\n# 2. Start work (creates branch todo/<id>, marks the ticket active)\ntodo work \"$id\"\n\n# 3. ...write the fix and a test, then commit with the ticket prefix\ngit commit -am \"todo:$id — guard against empty password\"\n\n# 4. Close with proof, recording the .todo/ state in the same step\ntodo close \"$id\" \\\n  --test tests/auth.test.ts::rejects_empty_password \\\n  --note \"Restored the null guard dropped in 3f9a1c2\" \\\n  --commit-state\n```\n\nThat's the standalone-ticket loop. For multi-step features, see **Feature builds** below.\n\n---\n\n## Core concepts\n\n**Tickets** are JSON files under `.todo/open/` (live) and `.todo/done/` (terminal). Each has a stable 8-char id, a type, a state, a summary, and optional analysis, relationships, and resolution.\n\n**States:** `open` → `active` → `done` (plus `blocked`, and the terminal `wontfix` / `duplicate`).\n\n**Types and what it takes to close each (the done contract):**\n\n| Type | Required to close |\n|------|-------------------|\n| `bug` | Commit + test file **and** function |\n| `feature` | Commit + a test *or* a note |\n| `refactor` | Commit |\n| `chore` | Commit |\n| `debt` | Commit (note recommended) |\n| `investigation` | A **note** (the documented conclusion) — commit optional, no test needed |\n| *parent* | A note, and every child in a terminal state |\n\n`investigation` exists for work whose deliverable is a *decision*, not code — a benchmark, a design call, a \"where should this live?\" question. It closes on the conclusion.\n\n---\n\n## Two workflow modes\n\n`todo` does not force a branching workflow on you. Pick the one that matches your repo with `behavior.branch_mode`:\n\n### `per-ticket` (default) — todo manages branches\n\n`todo work <id>` creates `todo/<id>` (children share the parent's branch); you merge it back with `--no-ff` when done. Branch-convention guards run on `close`. Best for agent-driven repos where todo owns the git choreography.\n\n```bash\ntodo work <id>\ngit commit -am \"todo:<id> — ...\"\ntodo close <id> --note \"...\" --commit-state\ngit checkout main && git merge --no-ff todo/<id> && git branch -d todo/<id>\n```\n\n### `managed` — you own branches (PRs, protected `main`)\n\n`todo work` performs **no git operations**, and `close` drops the branch guards and records state automatically. `todo` becomes a pure state-and-rationale tracker and leaves git entirely to you and your PR flow.\n\n```jsonc\n// .todo/config.json\n{ \"behavior\": { \"branch_mode\": \"managed\" } }\n```\n\n```bash\ngit checkout -b feature/login-fix   # your branch, your rules\ntodo work <id>                       # just marks the ticket active\n# ...commit however you like...\ntodo close <id> --note \"...\"         # no branch guard; state auto-committed\n```\n\n### Strict vs. advisory guards\n\nIn `per-ticket` mode, the branch-convention checks (are you on the right branch? does a commit reference this ticket?) are **advisory by default** — they warn and proceed. Set `behavior.guard_mode: \"strict\"` to make them hard errors (exit 1) when you want git to enforce the conventions. The real done contract (commit exists, test/note present) is always enforced.\n\n---\n\n## Feature builds (parent + children)\n\nDecompose a feature into an ordered parent + children. Children share the parent's branch and are worked in sequence.\n\n```bash\nparent=$(todo new \"OAuth2 login\" --type feature --source agent)\nc1=$(todo new \"Add /auth/callback route\" --type chore --parent \"$parent\")\nc2=$(todo new \"Validate session middleware\" --type chore --parent \"$parent\")\n\ntodo work \"$c1\"   # creates todo/<parent>\n# ...implement, commit, close $c1 --commit-state...\ntodo next \"$parent\"   # activates the next open child on the same branch\n# ...repeat...\ntodo close \"$parent\" --note \"All subtasks shipped\" --commit-state\n```\n\n---\n\n## Command reference\n\n| Command | What it does |\n|---------|--------------|\n| `todo init` | Initialize `.todo/` in the current git repo |\n| `todo new [summary]` | Create a ticket (`--type`, `--source`, `--parent`, `--tags`, `--file`, `--pipe`) |\n| `todo list` | List tickets (`--state`, `--type`, `--tag`, `--file`, `--sort`, `--json`) |\n| `todo show <id>` | Show ticket detail (`--raw` for JSON) |\n| `todo edit <id>` | Edit fields (`--summary`, `--type`, `--tags`, `--parent`, …) |\n| `todo work <id>` | Start/resume work (`--skip-branch`, `--branch`, `--actor`) |\n| `todo next <parent>` | Activate the next open child on the current branch |\n| `todo analyze <id>` | Append a reasoning entry (`--type`, `--content`, `--confidence`) |\n| `todo transition <id> <state>` | Move a ticket to any state |\n| `todo close <id>` | Close as done (`--commit`, `--test`, `--note`, `--commit-state`, `--force`) |\n| `todo link <id> --to <target>` | Link to a commit, file, or ticket (`--relation`) |\n| `todo scan` | Create tickets from `TODO`/`FIXME`/… comments in the tree |\n| `todo dedup` | Find potential duplicate tickets |\n| `todo doctor` | Reconcile `.todo/` against git reality and report drift |\n| `todo export` | Dump tickets to stdout as JSON |\n| `todo pr` | Push the `todo/<id>` branch and open/update a GitHub PR |\n| `todo sync` | Push ticket state to a Hermes Kanban board |\n| `todo install-hooks` | Install git hooks that enforce the conventions |\n\nRun `todo <command> --help` for full options.\n\n---\n\n## Configuration\n\nSettings live in `.todo/config.json` (created by `todo init`). The keys that shape the workflow:\n\n| Key | Values | Default | Effect |\n|-----|--------|---------|--------|\n| `behavior.commit_prefix` | string | `todo:` | Prefix that ties commits to tickets |\n| `behavior.branch_mode` | `per-ticket` \\| `managed` | `per-ticket` | Whether todo manages branches or leaves git to you (see above) |\n| `behavior.guard_mode` | `advisory` \\| `strict` | `advisory` | Whether failed branch guards warn or hard-fail |\n| `intake.scan_patterns` | string[] | `TODO, FIXME, HACK, XXX` | Comment markers `todo scan` picks up |\n| `intake.dedup_strategy` | `fingerprint` \\| `file-line` \\| `semantic` | `fingerprint` | How duplicates are detected |\n| `display.id_length` | number | `8` | Characters of the id shown in lists |\n| `display.date_format` | `relative` \\| `iso` | `relative` | Date rendering |\n\n**Profiles at a glance:**\n- **PR-based / protected `main`** → `branch_mode: \"managed\"`.\n- **Agent-driven, todo owns branches** → `branch_mode: \"per-ticket\"` + `guard_mode: \"strict\"`.\n- **Solo / local** → the defaults: structure is there, but a guard never blocks you.\n\n---\n\n## `todo doctor`\n\nBecause state lives in git and is edited by agents, the `.todo/` store can drift from reality. `todo doctor` reconciles them and reports:\n\n- done tickets whose resolution commit is missing (orphaned by a squash/rebase) or unreachable from `HEAD`\n- done parents with a still-open child\n- active tickets whose branch was deleted\n- tickets misfiled in the wrong directory for their state\n- dangling parent/child/dependency references\n\nIt exits non-zero on errors (and on warnings too with `--strict`), so it drops straight into CI. `--json` for machine output.\n\n---\n\n## For coding agents\n\n`todo` ships a set of **skills** (under `skills/`) that drive the lifecycle end-to-end: `todo-capture` (intake any signal into a ticket), `todo-triage` (classify raw captures), `todo-plan` (decompose a feature), and `todo-implement` (write the code and close with proof). They encode the conventions so an agent follows them reliably.\n\n`TODO_ACTOR` sets the identity recorded on transitions when git's `user.name` isn't the right attribution.\n\n---\n\n## Learn more\n\n[**BIBLE.md**](./BIBLE.md) is the full doctrine — the lifecycle, the branch workflow, branch-protection setup, and the reasoning behind the done contract.\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}