{"_id":"@davidondrej/autogit","_rev":"13-63eb6f00849c9ff775a03fe1b43d6a5d","name":"@davidondrej/autogit","dist-tags":{"latest":"0.9.1"},"versions":{"0.1.0":{"name":"@davidondrej/autogit","version":"0.1.0","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.1.0","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"903385ac7288c2b1c9ad1d3b524602be032d11e0","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.1.0.tgz","fileCount":4,"integrity":"sha512-cg1DGsgfnwEv9U5JE2LiPqBM+cRKhbrMuwHLrRmdmEHkMSBpIbzwVfIoxQ1JfgALWFvJl3RxIT+hz+kDb3IOUQ==","signatures":[{"sig":"MEYCIQDDryCsZKT0xXHWcPOuidLgRPAJDvZONZm2z6NNDX1rJAIhAI7ANNRN0pB5Lp8HFf3vC78Y0YLkz/bT9rRjBWKGJTFj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15621},"type":"module","engines":{"node":">=18"},"gitHead":"e1a5ac61581ab4d17c5d3e85125df7a36fa0334d","_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.1.0_1781082125170_0.5632876702939638","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@davidondrej/autogit","version":"0.2.0","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.2.0","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"f787608c5e65132745d5b5b215967c1f9d31570a","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.2.0.tgz","fileCount":4,"integrity":"sha512-jBUeU/hnxtLgpoIylSNxw8bbfwxrffXIsCtJ9bR/yex3IgO4UtW2fdUa6Yg3Zq6klcGn7BH9+vLG/I3wzzj+Ew==","signatures":[{"sig":"MEUCIAFa6W4GRgMA1y3C3aaiF2ybiCMyKUfqmjX7RsFBpLlOAiEA21yU4WpfMWbopde7DF1yfsXwhPA/YCgjT6nDhcRHtG0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20413},"type":"module","engines":{"node":">=18"},"gitHead":"664f5b11f227d9789cb0219ce27dae7876add7cf","_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.2.0_1781092078548_0.7343767462452866","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@davidondrej/autogit","version":"0.3.0","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.3.0","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"a7cdede2408895a75e1ffb73b9275af39d824e06","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.3.0.tgz","fileCount":4,"integrity":"sha512-Pbo71xeWLTxevKyn32yITxxb2sd11OPdKftycWrBmQVv19x0t4n1dnyfTZqwBiqbUrMP6HzBKGfTZLRhnnWJ5g==","signatures":[{"sig":"MEUCIQDuTJENsoA6E/NuJpghTcrUb3tfBJFP4TQEUp6JxhTd5QIgGaOyUSRwOJQTgeY5TFD07ofkEOdBym6EiAMz6GxzZBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32340},"type":"module","engines":{"node":">=18"},"gitHead":"b28988c22466aba1049e4245207d9aa4ac615026","_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.3.0_1781109987132_0.005931304748173272","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@davidondrej/autogit","version":"0.4.1","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.4.1","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"bb182cff5d50c9b09a5281602bd48b98f6cbbaee","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.4.1.tgz","fileCount":4,"integrity":"sha512-0sBAbT7TPkYFfhMjLptOn+Kf1sP6Swo1dH6pD/UCOQC2JqB2ixgwl72ohUSKxIPplM2FyywWtMS9Si3oH1ppeg==","signatures":[{"sig":"MEUCIQC0JLfvFqZ1f11gyHV3C+w3kXj7iGOYt7igZa7w2GhsxQIgR4LZmVw/8Z10kw+2dpJcJXOD2XyYemAZ8UZ8OiLfr0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35132},"type":"module","engines":{"node":">=18"},"gitHead":"9aabd7d65e461ec95eec3a375c48586aa214d064","_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.4.1_1781126875340_0.6399281107985235","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@davidondrej/autogit","version":"0.4.2","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.4.2","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"fe3ff1e2639bdfd514a54b5f73e2c8aef41ae1e2","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.4.2.tgz","fileCount":4,"integrity":"sha512-YN31r8Hj2xy9ucyZvciLiqzm5ehrf0U3ypusuQT5mYh6/TT1d9fgj82g7+Sj8IhUV/kNqlSLO9mfBSbCpeSq0A==","signatures":[{"sig":"MEUCIQDKWVsBHXODcwDFv4zRqvIymvcNs/uAdzbTMBZjW1u6bAIgMR9Rxd/4kbfaZVvhCeQ1aTtIsv9ZzD3jvy14OZngeOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36263},"type":"module","engines":{"node":">=18"},"gitHead":"fd1a468762f177677ea80d7f58226e5e9651e529","_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.4.2_1781169306426_0.20897981629695805","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@davidondrej/autogit","version":"0.5.0","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.5.0","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"f5a8b301a98801c0381a32ea810d06370923a2cf","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.5.0.tgz","fileCount":4,"integrity":"sha512-dWZvJF1Lh2EHv/gzLZK8O+p76z/HLamLgGl9NT6p6OSa2Aqhqlh2rkeI5A7V1yU8L29RfZhKfwtrndl0n7U7bQ==","signatures":[{"sig":"MEUCIQDrqieVHgSFFzio7O5jZEL2+73EhWMLLQmBjOp5sGD+jQIgIVgmexQUChPMc5yHuKSsQa+zdDScVdxmDYBgZPT2hwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38952},"type":"module","engines":{"node":">=18"},"gitHead":"c5b1909be97947412bc5a3bf41f0bf2c833a15ea","_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.5.0_1781271961707_0.3656560793118835","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@davidondrej/autogit","version":"0.6.0","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.6.0","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"581bec5a9bb52fca9e61beb1685f9fd46c7b8231","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.6.0.tgz","fileCount":4,"integrity":"sha512-JVdDXsnZ/27+R7lejqopQ6+DKqHgQJ/59HqzxuW/4+cBl75F824QjVPu9Z7dE35VCFaLUwys9+xbkz9hYZNqWw==","signatures":[{"sig":"MEQCIDwGcqmeAmfWi5ZVFwf4YReRCLFyiylAYqwpMTy8n2bOAiBuCckC1VvAijejywI3kxOA1HfdPWUfMzTyemONcRQHuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44577},"type":"module","engines":{"node":">=18"},"gitHead":"a46da8bd3aa9acea7f176a048a5edbe3268de9be","_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.6.0_1781272992422_0.3295888822384392","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@davidondrej/autogit","version":"0.7.0","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.7.0","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"fe866288890256ab38a95589dbb7fc08b513dcb8","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.7.0.tgz","fileCount":4,"integrity":"sha512-nj7E7NqpYqvKJ4Y6zH78Y11UBW0Ua8kNiHckR3F/mTNtxG/JsZJxy8ARRAHIVICinxLR1hLNTz2KFEX6+WafEQ==","signatures":[{"sig":"MEUCIC5ihPLpCkDFTGZ3f07JakSU53Dcq4JR5wd4NzGtsc/iAiEAq60BB0bDG8LcKnL9qMq3donsm1V/CVP/+rws4PJTlmY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46081},"type":"module","engines":{"node":">=18"},"gitHead":"ed6f13b072a219b70f0311e0c9e6309938f094b8","_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.7.0_1781290379108_0.7323930110679651","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@davidondrej/autogit","version":"0.7.1","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.7.1","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"f75f7df584abdb5722921286cddc941b46f9b945","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.7.1.tgz","fileCount":4,"integrity":"sha512-LN8CzZL9ppsg+l4iM1gDvMOIjU2A8CepUtMl/eZGHUBYd2Q8CvDzFBZFil+l4dEVf33hLe8UxBYakCcznCfl7g==","signatures":[{"sig":"MEUCIQDlfCC1kTxJR51akPU9umpw69ACubTMLu16UWyBUzYxyAIgRo1C83RVJEey+NaN8+BMSr8s6lUmngzD+0z8hIvlLzI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51543},"type":"module","engines":{"node":">=18"},"gitHead":"a070143e6f4e9fda71d8ac5f8829e16223cd1325","scripts":{"test":"node --test"},"_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.7.1_1782569678403_0.13060996568676742","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@davidondrej/autogit","version":"0.7.2","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.7.2","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"cf8498d15fbdcba37d9da5f87d4fd8f6cd6bb9da","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.7.2.tgz","fileCount":4,"integrity":"sha512-Omg+JMX3M+MtmqiQFylf0keR0IBMc9o8z1YlL9b/rDh8Go/GcHs2OmNGyzASy5QTH8cZhwQYRX/W3lKBRW6Gig==","signatures":[{"sig":"MEUCIQDUKuE4moApfX0Xhe6k87CsbxOgX4YAXVy3+CAYksbZXAIgPH7k7vAOKtPpQx7WE7X9UwH58qdm9KS3QLeGyiPGa/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53071},"type":"module","engines":{"node":">=18"},"gitHead":"9bef42f720cbbe7a53c49da8b0c8bf0e37d2b4a7","scripts":{"test":"node --test"},"_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.7.2_1783106991055_0.12698456238544908","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@davidondrej/autogit","version":"0.8.0","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.8.0","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"9d172d77198d3a24b7281608d71948fa4bcad7f1","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.8.0.tgz","fileCount":4,"integrity":"sha512-wFTTjgaJu4XUot8XmzDJzABgd3DRa86NS9fAgH/dSBaDE4mYD4UztdjKFBYYWjfFmyUEu3GZBIV1vQbUrIuUuw==","signatures":[{"sig":"MEYCIQDYi4/Ta9xtbUYJ3TETrzPNNMIE++jLa9X4uX3a2XSNBwIhANffBYZwCpVW1tetKgmsPlrqRo85YOsTITsgOSPXk9a2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56141},"type":"module","engines":{"node":">=18"},"gitHead":"167032d4d6ca95b12b301c8b7ba4ceae6a740be3","scripts":{"test":"node --test"},"_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.8.0_1783181142838_0.5434445389022564","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@davidondrej/autogit","version":"0.9.0","keywords":["git","agents","claude-code","automation","ai"],"author":{"name":"David Ondrej"},"license":"MIT","_id":"@davidondrej/autogit@0.9.0","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"homepage":"https://github.com/davidondrej/autogit#readme","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"bin":{"autogit":"index.js"},"dist":{"shasum":"d1cd5f1ee60479faa17be8c26345d41c018d33cc","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.9.0.tgz","fileCount":4,"integrity":"sha512-OcWTMsg4M3+L9vsHbsgfxHXGauCMtqRKI8ds5oxg49n+y2+3yPnV5doPNJRHZCXX8ba80G/1qtD6UfaXL9UpQg==","signatures":[{"sig":"MEUCIEiGsMcRBSuCawj6rqdsESKmqXdsGMgNuSu6LLaymD6HAiEAvbpYhnZAPFCjspz/LwteGeV5i/UVx8Vk5y3q+B0jCmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71984},"type":"module","engines":{"node":">=18"},"gitHead":"dd3d2452b5340acdf99afdcf7e4fb7a539755958","scripts":{"test":"node --test"},"_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"repository":{"url":"git+https://github.com/davidondrej/autogit.git","type":"git"},"_npmVersion":"11.6.2","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/autogit_0.9.0_1783949530889_0.6496033040101075","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@davidondrej/autogit","version":"0.9.1","description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","author":{"name":"David Ondrej"},"repository":{"type":"git","url":"git+https://github.com/davidondrej/autogit.git"},"bin":{"autogit":"index.js"},"scripts":{"test":"node --test"},"type":"module","engines":{"node":">=18"},"keywords":["git","agents","claude-code","automation","ai"],"license":"MIT","gitHead":"f049f8ad0b792787fe070f5b2deee83f6c9d06e8","_id":"@davidondrej/autogit@0.9.1","bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"homepage":"https://github.com/davidondrej/autogit#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-5hIajY1WreXs0N4yzYC78kNMG+tQZCtKIUJX8utsEtFqL4XCVMzGsycdCamkrERJwZWd7IekXuVdKG87GnIN+Q==","shasum":"932de43bf04c1a3bb3a2120c81f80702f957ee68","tarball":"https://registry.npmjs.org/@davidondrej/autogit/-/autogit-0.9.1.tgz","fileCount":4,"unpackedSize":71952,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA+/tCUe3uG4Wn1/kh13LSzI0nILSSmUSFjKjEHB/9ggAiEA/WTIdeA4wawxAwN6Cfl/Q7PrxNQI5RDW9M4sZleYRN0="}]},"_npmUser":{"name":"davidondrej","email":"david@davidondrej.com"},"directories":{},"maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/autogit_0.9.1_1783949718682_0.1363593697288945"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-10T09:02:04.989Z","modified":"2026-07-13T13:35:18.935Z","0.1.0":"2026-06-10T09:02:05.317Z","0.2.0":"2026-06-10T11:47:58.712Z","0.3.0":"2026-06-10T16:46:27.274Z","0.4.1":"2026-06-10T21:27:55.592Z","0.4.2":"2026-06-11T09:15:06.564Z","0.5.0":"2026-06-12T13:46:01.857Z","0.6.0":"2026-06-12T14:03:12.578Z","0.7.0":"2026-06-12T18:52:59.283Z","0.7.1":"2026-06-27T14:14:38.543Z","0.7.2":"2026-07-03T19:29:51.198Z","0.8.0":"2026-07-04T16:05:42.973Z","0.9.0":"2026-07-13T13:32:11.094Z","0.9.1":"2026-07-13T13:35:18.815Z"},"bugs":{"url":"https://github.com/davidondrej/autogit/issues"},"author":{"name":"David Ondrej"},"license":"MIT","homepage":"https://github.com/davidondrej/autogit#readme","keywords":["git","agents","claude-code","automation","ai"],"repository":{"type":"git","url":"git+https://github.com/davidondrej/autogit.git"},"description":"Auto stage→commit→push for agentic engineers. Works with any coding agent.","maintainers":[{"name":"davidondrej","email":"david@davidondrej.com"}],"readme":"# autogit\n\n<!-- User-facing flow up top; contributor internals below. -->\n\nYour AI coding agent writes the code. **autogit ships it.**\n\nWhen your agent finishes a turn, autogit stages, commits, and pushes — automatically.\n\n## Quick start\n\n```bash\n# 1. Install (once per machine)\nnpm install -g @davidondrej/autogit\nautogit setup\n\n# 2. Enable it per repo\ncd your-project\nautogit on\n```\n\nDone. Every agent turn now ends with: **stage → secrets scan → commit → push.**\n\n> From source instead: `git clone https://github.com/davidondrej/autogit && cd autogit && npm link`\n\n## Supported agents\n\n| Agent | After `autogit setup` |\n| --- | --- |\n| **Claude Code** | works immediately |\n| **Cursor** | works immediately — local + worktree agents (cloud agents don't fire stop hooks yet) |\n| **Pi** | works immediately |\n| **Codex** | one-time approval: restart open sessions, then run `/hooks` in `codex` and trust autogit (needs ≥ 0.124) — covers the CLI, the Codex desktop app, and the IDE extension |\n\n> Hooks fire for local agent sessions. Delegated/cloud runs (Cursor cloud agents, Codex cloud tasks) and `codex exec` don't fire them yet — upstream limitations. Codex re-asks for `/hooks` trust whenever autogit updates its hook entries.\n\n## Commands\n\n```\nautogit setup     Wire up agent hooks (once per machine)\nautogit on        Enable auto-push in this repo\nautogit on --agent  Agent mode: an LLM reviews each turn before it ships\nautogit off       Disable auto-push in this repo\nautogit ship      Stage, scan, commit, push (what the hooks run)\nautogit undo      Take back the last autogit commit, local + remote\nautogit status    Show hooks + repo state\nautogit update    Update autogit to the latest version from npm\nautogit --version Print the installed version (-v)\n```\n\n**Commit messages**: `autogit ship -m \"message\"` uses your message. Without `-m`, the subject is the prompt you gave your agent that turn (so `git log` reads like your instructions), falling back to a list of changed files. If the prompt looks like it contains a secret (pasted API key, token, etc.), it's never used — the commit gets the file-list subject instead.\n\n**Undo**: shipped something you regret? `autogit undo` rewinds the remote branch, removes the commit locally, and leaves the changes uncommitted in your working tree — ready to fix and re-ship. Run it again to peel off earlier autogit commits. It refuses to touch commits it didn't make, or remotes that have since moved on.\n\n**Update**: `autogit update` fetches the latest release (`npm install -g` under the hood) and prints old → new version. Running from a source checkout (`npm link`)? It refuses and points you at `git pull` instead.\n\n**Status**: `autogit status` reports the version, which agent hooks are wired, whether auto-push is on here, and a busy line. `busy: N agent(s) mid-turn — shipping deferred` means another agent is still active in this repo, so your change is staged-pending — **not** lost or failed; the last agent to finish ships everything. If something hasn't pushed yet, check here first: a deferred ship during concurrent agents is normal, not a bug.\n\n## Agent mode\n\nPlain autogit ships every turn, subject = your prompt. Agent mode puts an LLM between the turn and the push: one cheap call reviews the staged diff (plus your prompt and recent commit subjects) and decides — ship, or hold?\n\n```bash\nautogit on --agent    # asks for an OpenRouter API key once per machine\n```\n\n- **Holds** work-in-progress and meaningless churn (debug prints, scratch files, half-implemented features). Held changes stay in your working tree, get re-staged next turn, and are re-reviewed with the bigger diff — nothing is ever discarded.\n- **Ships** everything else, with a descriptive commit subject written from the diff — not from your prompt. This fixes the messy-`git log` problem too.\n- **Fails open.** No key, API down, 15 s timeout, unusable reply → ships exactly like plain auto mode, with a stderr note. A flaky API can never silently stop your pushes. `autogit status` warns when the key is missing.\n- **Secrets stay guarded.** The secrets scan runs *before* the review call, so an unscanned diff never leaves your machine; a prompt that looks like it contains a secret isn't sent either.\n- **`-m` bypasses the gate** — an explicit message is human intent, no LLM call spent.\n- **Key never touches the repo** — it lives in `~/.autogit/config.json` (mode 0600). The `OPENROUTER_API_KEY` env var overrides it. Agents enable with `autogit on --agent --key <key>`.\n- **Undo works unchanged** — agent-shipped commits carry the same trailer.\n\nModel: defaults to `z-ai/glm-5.2` (fast, ~free at diff-review volumes). Pin per repo with `--model <id>` (stored in `.autogit.json`), or set a machine default (`model` in `~/.autogit/config.json`). A `baseUrl` there points the calls at any OpenAI-compatible endpoint. Back to plain auto-push: `autogit on --auto`.\n\n## Safety\n\n- **Opt-in per repo** — repos without `autogit on` are never touched.\n- **Public-repo check** — `autogit on` warns when the repo is public on GitHub (your prompts become public commit messages). Humans confirm with y/N; agents must re-run with `autogit on --public-ok`.\n- **Multi-account aware** — if `gh` has several GitHub accounts logged in, `autogit on` asks which one pushes this repo and pins it (repo-local git config). Agents pass `--account <name>`.\n- **One-command undo** — `autogit undo` takes back the last auto-push, remote included.\n- **Secrets scan** — blocks pushes containing API keys, private key blocks, `.env` files, or JWTs, and unstages everything. Template files (`.env.example`, `*.sample`, `*.template`, `*.dist`) are fully exempt — filename and contents — they're meant to be committed, and a template's values are placeholders by definition. Obvious placeholder values (`your-key-here`, `AKIA…EXAMPLE`, `xxxx…`) are exempt everywhere else too. Override real blocks with `--force-secrets`. Commit messages are covered too: a prompt containing a secret never becomes the subject (not overridable).\n- **No noise** — nothing changed means nothing shipped. Aborted or errored Cursor turns never ship.\n- **Remote-moved aware** — if something else pushed first (another machine, the GitHub web editor), `ship` rebases your commit onto the new remote tip and retries. Real conflicts stop safely: commit kept locally, fix spelled out.\n- **Parallel-agent aware** — if another agent is still mid-task in the same repo, autogit waits its turn: the last agent to finish ships everything. (For fully separate commits per agent, use worktrees — autogit handles each independently.)\n\n## Internals\n\nFor contributors, human or AI. The implementation is a reference of product intent, not fixed architecture.\n\n### Design\n\n- Single zero-dependency Node.js CLI: `index.js`, ESM, Node ≥18.\n- Commands: `setup`, `on`, `off`, `ship`, `undo`, `busy`, `status`, `update`, plus `-v`/`--version` (read from `package.json`, also shown by `status`).\n- `autogit update` (added 2026-07-04, after users couldn't find how to update): runs `npm install -g @davidondrej/autogit@latest`, then reports old → new by asking the fresh binary for its version (the running process is still old code). Source checkouts refuse with a `git pull` hint — detected by `.git` next to `index.js` (npm strips it on publish) — so npm can't bury an `npm link` symlink under the registry tarball.\n- Modes (DECIDED 2026-06-10: auto only; agent added 2026-07-12): **auto** — ship immediately, no gate. **agent** — an LLM reviews each turn before it ships (see below). **human** (terminal y/n) remains on the roadmap.\n- Agent mode (DECIDED 2026-07-12): a separate OpenRouter call — this supersedes the 2026-06-09 decision that the currently-running agent should review. Reason: no agent (Claude/Codex/Cursor/Pi) exposes a review channel from a stop hook — the turn is already over, and exit-2 tricks are exactly what the fail-safes forbid. One API call works uniformly for all four; sending the turn's prompt with the diff recovers most task context.\n  - Gate runs after every local gate (opt-in, busy-defer, secrets, branch) so a blocked turn never burns an LLM call; `-m` skips it (human intent).\n  - Fail open on everything (no key, timeout 15 s, HTTP error, unparseable reply): ship with plain auto behavior + stderr note. Rationale: autogit is a backup as much as a publisher — a flaky API must never silently stop pushes. Hold = `git reset`, changes stay in the working tree, re-reviewed next turn.\n  - Key in `~/.autogit/config.json` (0600; `AUTOGIT_HOME` relocates it for tests/dotfiles), never repo-local — `.autogit.json` is often committed. `OPENROUTER_API_KEY` env wins. Model precedence: repo `model` > global `model` > built-in default. Global `baseUrl` supports any OpenAI-compatible endpoint.\n  - No `response_format` in the API call (per-model support varies) — strict-JSON instructions plus defensive parsing (fence/prose stripping, boolean `commit` required); anything unusable fails open. Diff capped at 50 KB with an explicit truncation note. LLM subjects go through the same 72-char flattening as prompts.\n  - `on --agent` probes the key (GET `/key`) while a human is present: definitive 401/403 dies without enabling; network trouble passes — offline must never block setup.\n- npm name (DECIDED 2026-06-10): **`@davidondrej/autogit`** — unscoped `autogit`/`autogit-cli` taken; `auto-git` rejected by npm's name-similarity rule. The installed binary stays `autogit`. Scoped packages need `npm publish --access=public`.\n- Per-repo opt-in is the safety model: `autogit on` writes `.autogit.json`; without it, `ship` is a silent no-op (exit 0). Only enable it where aggressive auto-push is OK.\n- Public-repo guard in `on` (added 2026-06-12): parses the `origin` URL for a `github.com` slug, probes `https://api.github.com/repos/<slug>` anonymously (3 s timeout, explicit User-Agent — GitHub rejects UA-less requests). HTTP 200 = public → TTY asks y/N (Ctrl+C/D = No), non-TTY (an agent) dies pointing at `--public-ok`. 404/offline/non-GitHub remotes enable silently — best-effort guard, never a gate. `--public-ok` skips the probe entirely. Runs only at `on`; the ship path is untouched.\n- Multi-account pin in `on` (added 2026-06-12): gh's credential helper only ever serves its *active* account (cli/cli#11938), so auto-pushes to a second account's repos 403. Detection reads gh's `hosts.yml` directly (instant — `gh auth status` hits the network for seconds). 2+ accounts on an HTTPS github.com remote → TTY asks which account (number, name, or Enter = active), non-TTY dies pointing at `--account <name>`. The pin is repo-local git config: `credential.username` (osxkeychain/GCM route by it) plus an appended last-resort `credential.helper` that serves `gh auth token --user <name>`. SSH remotes skip the question (keys route those). Re-pin anytime with `autogit on --account <name>` (works while already on); `status` shows the pin; `off` leaves it in place — it fixes manual pushes too.\n- `autogit setup` wires lifecycle hooks globally: Claude Code `Stop` (`~/.claude/settings.json`), Codex `Stop` (`~/.codex/hooks.json`, ≥0.124, one-time `/hooks` trust), Cursor `stop` (`~/.cursor/hooks.json`, lowercase events + `version: 1`), and a Pi extension (`~/.pi/agent/extensions/autogit.ts`, fires on `agent_end`). All JSON configs merge through one helper; Claude/Codex share the same `Stop` entry shape.\n- Codex legacy `notify` is NOT used (single-slot, often taken by other tools; an upstream deprecation was attempted and reverted in 0.129). Codex hook commands run in the session `cwd`, unsandboxed, via `$SHELL -lc` — so `git push` has network and the user's PATH.\n- Codex surfaces (verified 2026-06-10): the desktop app and IDE extension run the same CLI core and execute the same `~/.codex/hooks.json`; cloud tasks never fire local hooks, and `codex exec` hook dispatch is broken upstream (openai/codex#26452). Trust is hash-based — any change to the wired commands silently un-trusts them until the user re-runs `/hooks`; editing hooks.json mid-session disables hooks until Codex restarts (#21160). Esc-interrupted turns fire no `Stop`; that turn's changes ship with the next one (busy-marker TTL self-heals).\n- `ship` reads an optional JSON payload from stdin (all hook systems pipe one): Cursor's carries `workspace_roots` (its hooks run from `~/.cursor`, not the project — multi-root workspaces ship every opted-in root) and `status` (`ship` only proceeds on `completed`, so aborted/errored turns never push). Claude/Codex payloads lack these fields and fall through to cwd behavior.\n\n### How `ship` works\n\n`git add -A` → secrets scan on added lines (AWS/OpenAI/Anthropic/GitHub/Slack/Google keys, private key blocks, `.env` filenames, JWTs; `--force-secrets` overrides) → agent gate (agent mode only: ship-or-hold + subject) → commit → push to `origin`/current branch.\n\nScan false-positive guards (added 2026-07-03, after every-turn blocks in the field; widened 2026-07-04): filenames ending `.example`/`.sample`/`.template`/`.dist` skip the scan entirely — filename check and content scan. (Contents were scanned at first, but a realistic-looking dummy value is indistinguishable from a real key, so templates kept blocking. Naming a file `*.example` declares its contents committable — deliberate trade-off: a real key pasted into a template ships.) Elsewhere, a matched token containing an obvious placeholder word (`your`, `example`, `changeme`, `xxxx`, …) is ignored — the placeholder test runs against the matched token only, never the whole line, so a real key on a line mentioning \"example\" still blocks. Note a blocked file stays in the working tree: `git add -A` re-stages it next turn, so a real stray `.env` re-blocks every turn until removed or gitignored (the error message says so).\n\nNon-fast-forward rejection (remote moved — a push from elsewhere) self-heals: fetch, `git rebase FETCH_HEAD`, push again once. The tree is always clean at that point (everything was just committed) so the rebase is safe, and the `Shipped-by` trailer survives it, so `undo` keeps working. A rebase conflict aborts cleanly: commit kept locally, manual fix printed (`git pull --rebase && git push`). Any other push failure still dies with the commit kept locally.\n\nCommit subject precedence: `-m` flag > agent-mode message (LLM-written, from the diff) > the turn's user prompt > the agent's final message (Codex `last_assistant_message`) > file-list fallback (`autogit: update X, Y (+N more)`). Prompt-derived subjects are first checked against `SECRET_PATTERNS` (full text, pre-truncation — the diff scan never sees the message): a match drops to the file-list fallback, with a stderr note. `--force-secrets` deliberately does not override this. The prompt comes from the session's busy-marker content (see below), or a `prompt`-like field in the stop payload, or the last real user message in the `transcript_path` JSONL — both Claude transcript and Codex rollout line shapes are parsed (formats are officially unstable, so parsing is defensive; tool results and `<`-prefixed noise like `<user_instructions>` are skipped). Subjects are flattened to one line, capped at 72 chars. Every commit gets a `Shipped-by: autogit` trailer — that's how `undo` identifies autogit commits.\n\n### How `undo` works\n\nEscape hatch for bad auto-pushes; one commit per run, repeatable. Refuses unless the last commit has the `Shipped-by: autogit` trailer (or legacy `autogit:` subject prefix). Order matters: it rewinds the remote first (`push --force-with-lease` of the parent, only if the remote tip still equals the shipped commit), then `git reset <parent>` (mixed) locally so the changes land back in the working tree uncommitted. Remote tip == parent means the push never landed → local-only undo. Remote moved past the commit → die, undo manually. Works even after `autogit off` (falls back to default remote `origin`).\n\n### Parallel agents (busy markers)\n\n- Problem: `git add -A` would scoop up a second agent's half-finished work when the first agent's turn ends.\n- Solution: while an agent is mid-turn it holds a marker file in `<git-dir>/autogit-busy/<session-id>`. `ship` clears its own marker, then defers (exit 0, stderr note) if any *live other* agent's marker survives. The last agent to finish ships everything. No polling, no daemon.\n- Liveness is the core check (not just freshness). Each marker stores its owning agent's process id, so `ship` can tell a working agent from a **ghost**. `sweepBusy` scans every marker (no early return) and deletes any that can't be a live other agent: owned by a dead process (crashed/closed agent), owned by *this* agent's own pid (a leftover from a churned session id — compaction/`clear`/resume), or past the TTL backstop. This is why a deferred ship no longer freezes: an orphan marker is reaped on the next ship instead of blocking for the full TTL.\n  - The agent pid is resolved by walking up from the hook's parent past the throwaway shell wrapper (`cd … && autogit …`) to the first non-shell ancestor — the long-lived agent. Pi spawns `autogit` directly, so its parent already is the agent.\n- Markers are written/refreshed by `autogit busy`, wired to: Claude `UserPromptSubmit` + `PostToolUse`, Codex `UserPromptSubmit` + `PostToolUse`, Cursor `beforeSubmitPrompt` + `postToolUse`, Pi `agent_start` + `tool_execution_end`. Tool hooks refresh the marker so long turns stay fresh.\n- Marker payload is JSON `{ pid, prompt }`. Prompt-submit hooks carry the user's prompt, so `busy` writes it into the marker; tool hooks carry none, so they only bump mtime (preserving the content). `ship` reads its own marker before clearing it and uses the prompt as the commit subject. Pi's hooks don't expose the prompt — Pi ships with the file-list fallback. Legacy plain-text markers (pre-pid) are still read as `{ pid: null, prompt }` and fall back to TTL-only gating.\n- TTL (`BUSY_TTL_MS`, 10 min) is now a backstop, not the primary signal: it reaps legacy pid-less markers and guards against a recycled pid that happens to look alive. Liveness reaps real ghosts immediately.\n- Markers live under the *resolved* git dir (`git rev-parse --git-dir`), so each worktree has its own set — parallel worktree agents never block each other.\n- `autogit busy` must stay silent on stdout (some hooks parse stdout). Session ids come from hook payloads (`session_id`/`conversation_id`/`thread_id`/`turn_id`) or `--id` (Pi). No id → no marker (an unattributable marker can never be cleared by its owner and would block shipping until stale).\n- Limit: simultaneous agents in ONE directory still end up in one blended commit (shipped by the last finisher). True isolation = worktrees.\n\n### Fail-safes\n\n- Hooks must never disturb the agent: `ship` exits 0 on every no-op path, and never exits 2 (Claude would block its Stop hook; Codex would treat stderr as instructions and *continue the turn*). All output goes to stderr — Codex parses Stop-hook stdout as JSON and injects UserPromptSubmit stdout into model context.\n- Secrets scan blocks the push and fully unstages (`git reset`).\n- `autogit undo` reverses a bad ship — remote rewind + local uncommit, never touches non-autogit commits.\n- Nothing staged → no commit, no push, no noise.\n\n## Roadmap\n\nOwner-gated — don't build these without a go-ahead.\n\n- ~~**agent mode**~~ — shipped 2026-07-12 (see Agent mode above; supersedes the 2026-06-09 running-agent idea).\n- **human mode** — terminal y/n prompt on the diff, for production repos. (Existed in the pre-MVP prototype, cut for focus.)\n- More agents in `setup` (Pi added 2026-06-10; Hermes next: `post_llm_call` shell hook in `~/.hermes/config.yaml` + reading `cwd` from stdin JSON in `ship` + user consent flow).\n- Branch strategy: currently current-branch push only; auto-branch + PR flow considered.\n\nMIT\n","readmeFilename":"README.md"}