{"_id":"@apdesign/cursor-roi-tracker","_rev":"36-971839e9f96dd63c2eb98a2877d8375f","name":"@apdesign/cursor-roi-tracker","dist-tags":{"latest":"0.9.9"},"versions":{"0.5.2":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.2","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.2","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"54be87c2c67298ed8290de3ee3cfb5f78715c5aa","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.2.tgz","fileCount":21,"integrity":"sha512-yF5B2dEYYSgpdQubQrKQC+03UnwtAOkBwVBo7GkcHYpGx0LmHmGtwg+ai8/KwMmKJlF0EYg8q3JgV4Bz/DHADQ==","signatures":[{"sig":"MEUCIA8SkVWSaQs+QSvp2tEdx/BZkrjbW4HB5NNvqbqBAI6qAiEAj6C53FRR0Egn2a1E5P4PBtxkSYe5Cqk1vslhgYZL8Co=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79697},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"e829637cb806f173342b2e824aa8e415ed6ec9e3","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.2_1774676857162_0.6198561609284303","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.3","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.3","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"f64dbf7977a5a8cb4e9398447b0b12748281e86e","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.3.tgz","fileCount":21,"integrity":"sha512-8cP8Nu2nzP1mJ1lqcQmAXmCnE4HyOxUy+AoeT+gPTEblhWV89HvvJo5P/MrLUIZLhAT4qnbSUzdizS8ODwg6Eg==","signatures":[{"sig":"MEUCIAf+zc0SOeZ5ho87Lj4pc6f0aWJd0GT+0oqltcjIFScCAiEA3u0O/lDvlLUOSVaxrTgjCOCA4UES8DCPhN06AAmB8oE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79895},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"e829637cb806f173342b2e824aa8e415ed6ec9e3","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.3_1774678189226_0.46133994379114696","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.4","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.4","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"52254dc776aaa9b688fe6eea5731482efab86db5","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.4.tgz","fileCount":21,"integrity":"sha512-76Ec17jIJ/UbKQDPoxhc8F8eupeHNLxN0i8gzjaDLvrQJ+Tds0hKDl9WM5cRfDcVkblSRfnuDqDffYYHFXbZvg==","signatures":[{"sig":"MEYCIQC8FsgBFp7KuCatc9tUtLybBXLY7jfJ3l9DxCVVfNgiXgIhAOx4+1YF9aDPxGU/wWXJspyauLfJN9WA1SJk3FdrQv+N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82879},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"e829637cb806f173342b2e824aa8e415ed6ec9e3","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.4_1774679862384_0.9957723518574251","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.5","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.5","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"ca749385d3c758d10c1b1933ffb3a099476643c4","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.5.tgz","fileCount":27,"integrity":"sha512-bvAg7a9xUMGJzDbVbthIVsA+ZTCqKa9aCcUt9FShcaVXXF0rQGM4CMGjZBXpQXJqO3uRLbm0ONiCuhT49lVwnA==","signatures":[{"sig":"MEYCIQCyB56n6pt/ugi9ZS70qLCFvhXw/3j5D3AB/0iupf8XGAIhAPF5+BvGVeqLnN9qvxgI1JxCBSB0mzVbc9rbzJacVptW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121098},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"8ee19f548c822cd66d6d66b07a5e13366790fe3e","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.5_1774938393108_0.29261681572421705","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.6","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.6","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"0fe96ed40f7bd598d07ebb780d80a624858586c4","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.6.tgz","fileCount":27,"integrity":"sha512-EzLHZvS0GlUC0oVDjP7JD1On8XEmw4CYhRNd2z9hlNX3FAWSTJ+iEfu3B5XlOnEY+ZAOfWNLCt1a4EZwKqVEVw==","signatures":[{"sig":"MEUCIQDfSB5LPFmWB4bKG1JdxKROzBpgaYrHSXQapJomsNHmSAIgDS7s/e4VD31pyMKKRwjA7I/3qZhc2b7/Wmc/qea075M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122421},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"fa61b2723ec40cc34f3720ede73739ec1bc42263","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.6_1774946880825_0.639393224746726","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.7","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.7","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"bb3a885182474bd4457861ac2ded90671127105e","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.7.tgz","fileCount":30,"integrity":"sha512-HgDPMejFwBJaqWnqYVgb1hMCnXFvc4msxx0PG1om1xxGiGOz4AnJEMo8vdgK4DRpQ63ug2HS9EqssZBFtBky8g==","signatures":[{"sig":"MEUCIDu7jwT4TWPp8K1Ue45iZMWwLroZxb2lXXaHMWZpVJC7AiEA5I8NVWC1Gyx1nPxpHbNjgdV8XiYTVICgQOyqfTXwnEU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125841},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"fa61b2723ec40cc34f3720ede73739ec1bc42263","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.7_1774950893974_0.4500032688595803","host":"s3://npm-registry-packages-npm-production"}},"0.5.8":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.8","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.8","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"dcd14e4deb76fbf1c2698e69550589b0e6c0f01d","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.8.tgz","fileCount":29,"integrity":"sha512-BOeIgLoXzWkVasOPzLAdt6YC/+mCj9ic6CN7c0YwdTOD6cC2aphocYPCY9PDMFp6AXrEQJQtguTpCgMe/16IXA==","signatures":[{"sig":"MEQCIFJVFAPG7+TVnPmCTgDTWD/EllgMnlwOwibFDgNWVEGqAiBAf2CVjnTmuv1BVPrxZc2HA4DAet8nrtx3ua33IIZHzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132205},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"6b350fadae3d071a7ff37cff1c26a4af07c2285c","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.8_1774955444190_0.6508802311064368","host":"s3://npm-registry-packages-npm-production"}},"0.5.9":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.9","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.9","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"bbe98577cbf1a4e54203495622b479ef0d716638","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.9.tgz","fileCount":29,"integrity":"sha512-kun1/Jaza419b0ubA96QREGXVhvIA0O/nseyZcpLib3fdBujQT7w7JTebmPuh5oGk1yTki7KxZziLGwA1vfcuQ==","signatures":[{"sig":"MEQCICcMc7SRzwkgXfgP9VltiYQifrfyj7VW0ME/Jxl1IXncAiBwfY5132TtFhUVy1VQI8aU2EClpL4p2t2/faJ/wty6zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144360},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"6b350fadae3d071a7ff37cff1c26a4af07c2285c","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.9_1774958586931_0.9241519806958485","host":"s3://npm-registry-packages-npm-production"}},"0.5.10":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.10","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.10","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"584825e3948076cb30d522e7ccab891222ca55c1","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.10.tgz","fileCount":29,"integrity":"sha512-ckgm7geJoBSCERWb7DkVUYOeetupRPj+tQ/S10nAMAYdZ3hVHue1GYNUV+XEaU+FHtyIgukK6Rt/TOv0Qg+rIQ==","signatures":[{"sig":"MEUCIQDPjP8OMXzs8P0jU22DZN1YokF1thAGvVmL205MPpr7nwIgMZMQyJD9SKv1eM9ZR8vN6x7+avW1ltB+tVIC+6N3ERA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144361},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"6b350fadae3d071a7ff37cff1c26a4af07c2285c","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.10_1774959614074_0.9179749041608207","host":"s3://npm-registry-packages-npm-production"}},"0.5.11":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.11","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.11","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"1b39b5fef5395d0f03ba4aa1204ba01feaec7b21","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.11.tgz","fileCount":29,"integrity":"sha512-Xi5TM+Zr6Xl9lcHGguJepND8eI5G/jBXwxGFOzk/RlYaXUPrbepQuZssYmaQvjmkKQjbDBrtyzGgL0Ifh047ng==","signatures":[{"sig":"MEYCIQCIuBio9B2IZUyEmldYgxM8jeqSbi6kkZhDR6fH/43KCAIhAOGBYbM7EuJlWY55WuJO+h9po4ui/kkMFr3W/A/7dUuz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148273},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"6b350fadae3d071a7ff37cff1c26a4af07c2285c","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.11_1774960568184_0.34184340589325424","host":"s3://npm-registry-packages-npm-production"}},"0.5.12":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.12","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.12","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"823555e5c452f91db0080004a02b0f451ba9bd42","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.12.tgz","fileCount":29,"integrity":"sha512-q1SgEZgSqrh8RHo0m2Rhe/YIy4vHpD/+MuPLdoGYdqCphyfBXWo+t8m6TQ8nLH/V4A7hgDxScvbGixgx8aHe4Q==","signatures":[{"sig":"MEUCIQCRC3YCyc63oEDpJa3wyYuqUux5W+WPt6roFswI2jhD+gIgFQ1swa/CBO3gi7tnl6UjI1LOojMAv7Xt6qJMR8SqL6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148690},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"6b350fadae3d071a7ff37cff1c26a4af07c2285c","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.12_1774962096479_0.6602772420329663","host":"s3://npm-registry-packages-npm-production"}},"0.5.13":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.13","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.13","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"d3e5180743bfacc57d37256ed3bd8bd3f14e7e84","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.13.tgz","fileCount":29,"integrity":"sha512-6OlAuqhiSFEjR+N7fjihVO9bqFe3rdbcDPZpGsZR8/bPWzV4JXy6fsfgiobta8FNm6h0oDJfZ8T/leu0XXYSMQ==","signatures":[{"sig":"MEQCIFAYyajJe4UK2voW/GXTW+UnSf/3m9VdZFOEXIrFiJWOAiA+XxwmuWlOuI7SdLK8eAoWsseluU+WWSEsR85VkAKDkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149215},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"9c36c7ea4f3a5e69bd64a49bf084db9001beb864","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.13_1774964233013_0.5599262163920058","host":"s3://npm-registry-packages-npm-production"}},"0.5.15":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.15","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.15","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"a13c861e1344d673c476e523a0c10cda17676758","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.15.tgz","fileCount":29,"integrity":"sha512-+lexpBI18zowyBpgCid2WWZdIe+dm/QmaL7xp4lbcDb9SUZpMmh9HfMP8+NzTjYuicQOhzuGaWo4MeWS9+kg+g==","signatures":[{"sig":"MEYCIQClair4TUEWWU9XMYhqEfT0N4xxESF2TspcjUm6i3SF9wIhAP+S6q3nfd9aZAsMPsgMw4ydEawl/4zQ/r0MHpysQivf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149536},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"9c36c7ea4f3a5e69bd64a49bf084db9001beb864","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.15_1774966331655_0.46148753824784694","host":"s3://npm-registry-packages-npm-production"}},"0.5.17":{"name":"@apdesign/cursor-roi-tracker","version":"0.5.17","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.5.17","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"a93044a516f84c407f1f2e83dc408100ca4cc1c2","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.5.17.tgz","fileCount":29,"integrity":"sha512-CMbDoDG0fUt1pBoOT2tRwbMGX2LBqmqrEQqaerH2NSvHibSkz66mdkdU3la/sj5LszOgvHFIq6saJRyFCB/tUQ==","signatures":[{"sig":"MEQCIDpWFXzKyct7VqBhUQsQmsZr55w9clOXYkWDj2XQwBPcAiBC2Kfat95mEcfR0F3JqndItZTA1NAbvCPP6mK4B6JJog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150228},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"9c36c7ea4f3a5e69bd64a49bf084db9001beb864","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.5.17_1775007780157_0.6352091070305481","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@apdesign/cursor-roi-tracker","version":"0.6.0","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.6.0","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"a29968f53b807376ac269fb88f39d692c6a58996","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.6.0.tgz","fileCount":29,"integrity":"sha512-hH0XkiAB7ExhmuF/sS+9O9rj58xU9TMIbM8Mvuf10O6F0z9+u3siX1ygPZ/W9vEY19o6dR05i6cxsNQTXWWMpw==","signatures":[{"sig":"MEUCIQDxGkyKv7ncSHRzOLtLYvdfQBAFsJ9w0KMgNFAv2XSJmgIgEVsaYDgzLmJJb0IEACDPpNwaRobyVBnMB+sYzMM9aWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156755},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"89bc2c040fbf21c2de413fd3448189169f547a04","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.6.0_1775031122352_0.26221521488510446","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@apdesign/cursor-roi-tracker","version":"0.6.1","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.6.1","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"cba75aac8ab9092d458fa3be575ccf64dc2700dd","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.6.1.tgz","fileCount":29,"integrity":"sha512-74QBKt2IGRSJziT+eNAJijmglt3HrmSMaMs+h/5DtSrVFmZhKWSW5hEUX+VZ1Tk+UOGO3M6vdMx1AnAvaMoJ3w==","signatures":[{"sig":"MEUCIQD7lUEtXBSCwKtn+K4nnXj9r76qzHFuUJU+OxN01SnxTgIgJKC/zFeOi27/MZaFfJ15eeclkLNu3RPOSzL/6qzOV3A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171843},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"89bc2c040fbf21c2de413fd3448189169f547a04","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.6.1_1775031898987_0.15748393924530646","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@apdesign/cursor-roi-tracker","version":"0.6.2","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.6.2","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"2d2aab19211e01fa9e0db524f43f4c1fb7d7e435","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.6.2.tgz","fileCount":2968,"integrity":"sha512-khxP48OWizOmwu9Deh6btUlCGdSxXO82a6VJ0d2yvLBO0vrRbv+PD3H3IHr1dYhwLekWF1KlGmgOctAgfkG9pQ==","signatures":[{"sig":"MEYCIQC+uLmDbBGEGdxQporqQIKfdE3BVgx7qD1BvdlGbH2SowIhAKTgxRMxIdxh6DNFzQGB15+f2Y9++2yNyoixB/AJDAWs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16213428},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"43c7003532358c941f7fe1df9a34fefd4bd898ce","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.6.2_1775123638854_0.6432458084065238","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@apdesign/cursor-roi-tracker","version":"0.6.3","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.6.3","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"bfb0a69308666c242acf34f8d9ff740dd7211a58","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.6.3.tgz","fileCount":2969,"integrity":"sha512-r6+TGrbvHVdzP5byGdBh/1T8uS5ra/ZaXZoqCiRcDp1hKtX1YemlCKst/tPYMkmc/Aafsm4WVEbDAprb7vkjfw==","signatures":[{"sig":"MEUCICqTMZ+hYoPr/fyxAgkzmNsf/xm08s/gg3d4foY92HJOAiEAyHAmJLGR/EyQbr/80dtrXoGOGtHsS//SmF1PA9VjMEw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16235883},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"59c20fde965b74960043eed93707e92929002a6c","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.6.3_1775203878394_0.3966859317404532","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@apdesign/cursor-roi-tracker","version":"0.6.4","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.6.4","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"8506b5f0667a2a19b0a0dd621e9f81b870b4a875","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.6.4.tgz","fileCount":2969,"integrity":"sha512-uKLCgwzESpzHQ2aMc5ssgE2W21a5JPs6pIUEvbutnSpi25AbPRrm8v/oUNGUsU7UzD2dkLHkH8L9WYbKBrA5Cw==","signatures":[{"sig":"MEYCIQD2F3j4UN+5x5goRqcTm49OAytNMSegtUhoP6kMvt4KIAIhALsfAFxxqJ+rdVlCjGAKqgBsftZRGXqfesw0DpaqYglp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16240827},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"59c20fde965b74960043eed93707e92929002a6c","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.6.4_1775207641088_0.5081869061381323","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@apdesign/cursor-roi-tracker","version":"0.6.5","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.6.5","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"9c657f5c8e752c40a9edf9842648ece9a9828906","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.6.5.tgz","fileCount":40,"integrity":"sha512-/oqB6f2m3indoH7HD+zT331R2ycwjqYj/O8MdJ+tstMGkOLLFfHKQ0ChlQuxrzp6BXscBX+GOA7L9WRbkl46fA==","signatures":[{"sig":"MEQCIB4sEt7GOzgxuvex57rQ/m+OPlrcB16EBYgUk/2MgtcoAiBEsh2IrrgojXP33aB0VwD/5BLC7Ci/Xz3iyBo/d0hkbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371369},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"59c20fde965b74960043eed93707e92929002a6c","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.6.5_1775208778996_0.4612597662069422","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@apdesign/cursor-roi-tracker","version":"0.7.0","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.7.0","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"442bbb31b7fd9ee36a5eceb79b81f55cfad28175","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.7.0.tgz","fileCount":2999,"integrity":"sha512-JzBvv6tWpX3Hnev5iGUFTy2OdiNUyq1D3b2OwISG4SZhS79pCbDeSE1wexxVhVWKZAXOMnyMGOxrsn9YeuZnNw==","signatures":[{"sig":"MEUCIQDYNKLMbhCusbsHcoT8g9tZwH0vB3yCYxK/CflfkZe18gIgQkPrX47BzpYzoH/MzUw1RK+cgqMgyWhM1iQ2mCG7XhQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17760127},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"59c20fde965b74960043eed93707e92929002a6c","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.7.0_1775215915704_0.024378545760108228","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@apdesign/cursor-roi-tracker","version":"0.8.3","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.8.3","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"685a4152ff3c86073f23812e0f6ce1cd9a4fd6fb","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.8.3.tgz","fileCount":2999,"integrity":"sha512-L1lrL2iPwqJ2tYnWI07VMybFEETmC3kwbLAuFORvvpk02Ca2nABB8hGQtN5iVWyfc0sdnnUlno7SGB/rxCWkkg==","signatures":[{"sig":"MEUCIQDekyfNWpUJUiI/PzfbKpTQ70KTzA7ySFAQnqwg7V4mLAIgD1hYI4Y2+HJH4p6xUAbUo6IpysPGVfx76GDwI2mNdvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21455988},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"cb30da78ad6193c863f9abfbe86fb212f8d70a2f","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.8.3_1775231959889_0.8054578486531798","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"@apdesign/cursor-roi-tracker","version":"0.8.5","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.8.5","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"d1a2d933b94e024ad93c503fd15e2fa4cf5ce7e2","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.8.5.tgz","fileCount":3000,"integrity":"sha512-X+3N2L3nmxjbS/gZgMXs4O1RBdNMZDz6dJpQuS/VLfCVqzBrlmGk0o2zqux3njP39s7kj8rNXGus+oYWlnEsfg==","signatures":[{"sig":"MEUCIFKJKxSsKa/x/eBiexRAH7+IEvwlVCKTmKqZEO1rbB+BAiEA+VNUrS9cAzdQYudaPybJaB1dNvGqOH5qM7o71Ul+lbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22708346},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"cb30da78ad6193c863f9abfbe86fb212f8d70a2f","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.8.5_1775374371395_0.12121425322989743","host":"s3://npm-registry-packages-npm-production"}},"0.8.6":{"name":"@apdesign/cursor-roi-tracker","version":"0.8.6","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.8.6","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"67c914031a50d49037e7254bd0a717fa3c082d41","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.8.6.tgz","fileCount":3000,"integrity":"sha512-iv9F1Ci4v7kCVVgEdtRaalMRhaJkcqEFkiRYDiOg8PEMcfeN7+nJSwZRBmnHYvE/vs3JMifykSnUZVfz2sTUzQ==","signatures":[{"sig":"MEYCIQCepA61pH1ZomeerL2edpGZNvfcjV15jTeoKK8hO4A77QIhALohfsrNKliKSEYiymsp9FYW7++CIS+xneImyLhISp0m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22709259},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"1666aaf5f3bc0f899d9e0debf43b23c7e3994171","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.8.6_1775375508760_0.3075061758826134","host":"s3://npm-registry-packages-npm-production"}},"0.8.7":{"name":"@apdesign/cursor-roi-tracker","version":"0.8.7","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.8.7","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"b103ae8fa011284bd2f95c89fd4a94026df51bcb","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.8.7.tgz","fileCount":3001,"integrity":"sha512-vAvlXIqlvYNLcgK/ZaCdLt4iFqIJi9CyyG7Yku26XV1Mw5DnedCkA5NnjAF0ffeLg+8pbIqUjsw+dhGLW2XJ1A==","signatures":[{"sig":"MEUCIQCLwrTG7YNsZpJWChDB1IOzppLzo2aijOT/48QLbbXyNgIgP2htsk4h93BQY0Q8ldCpxyMN7bp5HsEAjxWpN/31dCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23942724},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"1666aaf5f3bc0f899d9e0debf43b23c7e3994171","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.8.7_1775380677322_0.5008370469035341","host":"s3://npm-registry-packages-npm-production"}},"0.8.8":{"name":"@apdesign/cursor-roi-tracker","version":"0.8.8","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.8.8","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"4e122963ab71d023229dad08a9855abed3cf2a5b","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.8.8.tgz","fileCount":3002,"integrity":"sha512-EUqjcfUMR6nUXik4hJDyKe25oku8DF/Q+tvJr7qG3Vp7qryOLhB5DSColIRJxTc/RD9A41LP3u/GueSHTU862Q==","signatures":[{"sig":"MEUCIDIzfzflHSs+KRuBuMHTMmQLd2nBeFkr9NO1/i8wH8qDAiEAlmxuP5S67R4CLBKqhAU5LVT1mvaww40kQzBnyN8pBZA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25183554},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"c8dc1c592636a6bf6ee55d4b1b5c1d9498900a89","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.8.8_1775384025553_0.7096018524445757","host":"s3://npm-registry-packages-npm-production"}},"0.8.9":{"name":"@apdesign/cursor-roi-tracker","version":"0.8.9","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.8.9","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"cfdb9be3ebef90ebfe80643ed8c2810ee360af71","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.8.9.tgz","fileCount":3003,"integrity":"sha512-yId/NfpWP5ATK8Gp+Ed0zL9/sik5WhOF4jq+ovZMk2FxB2yiLXl9z91csjVOP5ZaT20RsDj9bJjaEmefRftYzg==","signatures":[{"sig":"MEYCIQDZ7QiUw5J6SvgvIIwf2I2dy0b5LKXVpARSg0y5ugkYqAIhANunFXLV8MvdIAS3iLe/BNVJIVejQu5jPwELClQ89pXi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26425450},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"c8dc1c592636a6bf6ee55d4b1b5c1d9498900a89","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.8.9_1775391086621_0.06823766125316189","host":"s3://npm-registry-packages-npm-production"}},"0.8.10":{"name":"@apdesign/cursor-roi-tracker","version":"0.8.10","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.8.10","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"8158bbf14ff711f83c0b46cc76d9fbec91fc7feb","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.8.10.tgz","fileCount":3004,"integrity":"sha512-fYFZ9ZurNsLfK1VyBoRbZHLMGFMCkd5FiYBm7ZQHwyFwBo/9OdyN7sJBMRn1SOWXFXijaMxWNW2FzGh8vO4m5A==","signatures":[{"sig":"MEUCIQDgiTxoMynQTvxop0kDq0rA4QNgAasGTDZa5m8i9eU3bQIgLYVOqm+QdoroU6TDlOFHZwbCOWj5OoxyCl7a8PaxluA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27669104},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"7b2bce7f136c0dd6f89f4f1f01ff720ddc4f6a01","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.8.10_1775396321399_0.12881938209044597","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@apdesign/cursor-roi-tracker","version":"0.9.0","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.9.0","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"f19e7beab0966fa45f180ed479455043af086092","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.9.0.tgz","fileCount":3006,"integrity":"sha512-pkjyMb5fgBoenRKptnj1BC4aGSAAIGOWNiol+rECAMEvLUUkBpSjY6bTTwNybGgpSYMlSIpbJ/vgTxJIhMLAYQ==","signatures":[{"sig":"MEUCIB8u3sHofvtOObNjhQdEcB+vg8xVMYJjMfVGIWafQtB7AiEAhSdr4ymT2hWU9XrvkeuV2zmfcJgYq7RerAzFfsGlxiw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28921732},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"d80d68bfe4f50b25aa586e5e20b038ec1b62ba1f","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.9.0_1775464567141_0.4166002224613199","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@apdesign/cursor-roi-tracker","version":"0.9.1","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.9.1","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"49b5fda820242f531ee18a0dd2b4857168cdcf82","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.9.1.tgz","fileCount":3006,"integrity":"sha512-r2/p14egtvKfKzcXcyJAKusfyJLeoxU5e+PG56KQBt2T4Pqiin2WUrLFT9sAT2Ibud1d2Vxhk8BSBJaVYdWBTA==","signatures":[{"sig":"MEUCIBjF06AwFWY0/lVbrY9VFMKOYfLL77+VvLAYKKiGYx7/AiEAxvbPADDeieZAxG6H56ZAEXtduE8hj2DG3A10wnu/B+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28922432},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"d80d68bfe4f50b25aa586e5e20b038ec1b62ba1f","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.9.1_1775466221441_0.30208650665475334","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@apdesign/cursor-roi-tracker","version":"0.9.2","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.9.2","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"79763d7d96f6acf678b0c9f000859d029a1be3d3","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.9.2.tgz","fileCount":3008,"integrity":"sha512-oBvbTQ+vhyDVKDqgco8pNOXDWulEV9aj3hp/vHxzWYHmukYbVzkH06bPrbbwcG7UUtHeGQKe+DG4VvbhJTT/vA==","signatures":[{"sig":"MEYCIQCls5o537gV8lpdZbgtfdgOc7fEbSNlx4vriGlXxYmSXwIhANwSzdiWdZDpz9iUlVIr9Cb/nR3Tj5Oub91kfL1EXXmG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30166704},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"52327c421b635624c9a2efd871f309301159c59d","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.9.2_1775468336508_0.24588507917859115","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@apdesign/cursor-roi-tracker","version":"0.9.3","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.9.3","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"e1d72e1bb4a8fb64abcc6b5bfd1efb5ba8349e48","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.9.3.tgz","fileCount":3009,"integrity":"sha512-A31S98JFLQVfiEFT3axkl2Z0swkV87QvEwgjHGLwavZ2f3jGhylLaw6mVzGiKvMvauvvPAkTq0vFWBn04aEtKw==","signatures":[{"sig":"MEQCIFFeN4LLTH39EEVr4/fAwnfN+iiFuOg5+94bk9sSGymMAiBo+WMJPCG3Y/Vc8q7gmWArRUrvk8wdGtBCnxYRBf+rJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31409572},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"df412ae8fe209d4a495a898fe870034ef1c2ecb3","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.9.3_1775469249042_0.19218297737247703","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"@apdesign/cursor-roi-tracker","version":"0.9.4","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.9.4","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"8324f0a6407204b3168df520df401b456b3a6f0c","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.9.4.tgz","fileCount":3011,"integrity":"sha512-aBRIddZ0i3SCD9npxUPGVHnoWfnsOwSUwPSWCDPItBWlRbXdqZf6ZEfG/wDpXVBIhsJ6FI2+m2NWn0ygXxdpMw==","signatures":[{"sig":"MEUCIQC2AuZMavVJLiQCJkB1hiJ+HoefkoQdpBA3i4yMkeBsSgIgWMl4oJy/c3OM8A/FIFKzytg2oyA/6Dz8/XKfHTnR93M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33776628},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"df412ae8fe209d4a495a898fe870034ef1c2ecb3","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.9.4_1775469987923_0.7094944561091083","host":"s3://npm-registry-packages-npm-production"}},"0.9.5":{"name":"@apdesign/cursor-roi-tracker","version":"0.9.5","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.9.5","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"3aa348c46458183846b1d511cdaa4ae246867ce0","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.9.5.tgz","fileCount":3012,"integrity":"sha512-ESbDh+vJmMwAfL3SEkM/1Uu/TNSqdGpVIMzlgCk5RacTKWcWtVNvAosvKaDym48NBU/QoHHekOF7JrpdAd8aIg==","signatures":[{"sig":"MEUCIGMdM5W9OCBgXsJdgcKRjUMYXvpjFaSY6105FDuDyZ5+AiEArMuGJ2rZ278kox553e4ffkek/99+Fd/g3SyUNFxqq/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35041000},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"9a4fcba8edbfb472079fc6f5689c79af47f08162","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.9.5_1775473297565_0.3805962767758466","host":"s3://npm-registry-packages-npm-production"}},"0.9.8":{"name":"@apdesign/cursor-roi-tracker","version":"0.9.8","license":"MIT","_id":"@apdesign/cursor-roi-tracker@0.9.8","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"bin":{"cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"dist":{"shasum":"afdba0966cb4f12801e0c872fe4911f327310128","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.9.8.tgz","fileCount":3013,"integrity":"sha512-wncen0jJtZjjWZ2Sp1DdydmaWbryblwx8oLN5vtOObq6zyAfb1fTt2hfVy4KyvEsfCODY1YzhvGfOZ9yBYCsSw==","signatures":[{"sig":"MEQCIBFL0hR4NC6rBA91ncsMvnBg3Aay5pHIPI/Z5p/geEMdAiBszw4hZNmpJiHChsaGZYIax8CdmkZSo5RxNhgDx9liXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36290426},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"b7b84a594e620d139fbfd8c6462a639e49d8d2c2","scripts":{"test":"node --test test/*.test.js","postinstall":"node ./bin/install-hooks.js --auto","hooks:install":"node ./bin/install-hooks.js","prepush:upload":"node ./bin/pre-push.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js"},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"_npmVersion":"10.8.2","description":"Collect commit-level AI coding metrics from staged diff and local AI events","directories":{},"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cursor-roi-tracker_0.9.8_1775476256796_0.01820537902626529","host":"s3://npm-registry-packages-npm-production"}},"0.9.9":{"name":"@apdesign/cursor-roi-tracker","version":"0.9.9","description":"Collect commit-level AI coding metrics from staged diff and local AI events","license":"MIT","type":"commonjs","main":"src/index.js","bin":{"cursor-roi-pre-commit":"bin/pre-commit.js","cursor-roi-post-commit":"bin/post-commit.js","cursor-roi-pre-push":"bin/pre-push.js","cursor-roi-install-hooks":"bin/install-hooks.js"},"scripts":{"postinstall":"node ./bin/install-hooks.js --auto","precommit:collect":"node ./bin/pre-commit.js","postcommit:collect":"node ./bin/post-commit.js","prepush:upload":"node ./bin/pre-push.js","hooks:install":"node ./bin/install-hooks.js","ci:ai-attribution":"node ./ci/ai-attribution-scan.mjs","test":"node --test test/*.test.js"},"engines":{"node":">=18"},"_id":"@apdesign/cursor-roi-tracker@0.9.9","gitHead":"b7b84a594e620d139fbfd8c6462a639e49d8d2c2","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-b4k545eSNXmwswps/X5aWP+Cs+2q6KlEgoZFtrZp/+rDrtMagZXAcuT4SZGp1pqMiMus/keTpcdRwoeLFmk5kw==","shasum":"53b80659d3aca2b5925088d1b4047dc4c625929b","tarball":"https://registry.npmjs.org/@apdesign/cursor-roi-tracker/-/cursor-roi-tracker-0.9.9.tgz","fileCount":3013,"unpackedSize":36303926,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIESgEYOBSTGg4NW5YPojNvncaxXZ3Z7VTo388D+vw5hhAiAipnYkjO6iTYzGz5m0sl6xOUA/YmCkz7I+upulcaMZHw=="}]},"_npmUser":{"name":"asteria1","email":"it244@cht-group.net"},"directories":{},"maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cursor-roi-tracker_0.9.9_1775487945521_0.602199108832032"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-28T05:47:37.090Z","modified":"2026-04-06T15:05:46.366Z","0.5.2":"2026-03-28T05:47:37.312Z","0.5.3":"2026-03-28T06:09:49.385Z","0.5.4":"2026-03-28T06:37:42.558Z","0.5.5":"2026-03-31T06:26:33.298Z","0.5.6":"2026-03-31T08:48:00.960Z","0.5.7":"2026-03-31T09:54:54.109Z","0.5.8":"2026-03-31T11:10:44.328Z","0.5.9":"2026-03-31T12:03:07.107Z","0.5.10":"2026-03-31T12:20:14.290Z","0.5.11":"2026-03-31T12:36:08.436Z","0.5.12":"2026-03-31T13:01:36.633Z","0.5.13":"2026-03-31T13:37:13.165Z","0.5.15":"2026-03-31T14:12:11.807Z","0.5.17":"2026-04-01T01:43:00.401Z","0.6.0":"2026-04-01T08:12:02.537Z","0.6.1":"2026-04-01T08:24:59.118Z","0.6.2":"2026-04-02T09:53:59.207Z","0.6.3":"2026-04-03T08:11:18.769Z","0.6.4":"2026-04-03T09:14:01.417Z","0.6.5":"2026-04-03T09:32:59.192Z","0.7.0":"2026-04-03T11:31:56.071Z","0.8.3":"2026-04-03T15:59:20.308Z","0.8.5":"2026-04-05T07:32:51.843Z","0.8.6":"2026-04-05T07:51:49.256Z","0.8.7":"2026-04-05T09:17:57.808Z","0.8.8":"2026-04-05T10:13:45.991Z","0.8.9":"2026-04-05T12:11:27.139Z","0.8.10":"2026-04-05T13:38:42.041Z","0.9.0":"2026-04-06T08:36:07.847Z","0.9.1":"2026-04-06T09:03:42.063Z","0.9.2":"2026-04-06T09:38:57.104Z","0.9.3":"2026-04-06T09:54:09.701Z","0.9.4":"2026-04-06T10:06:28.713Z","0.9.5":"2026-04-06T11:01:38.280Z","0.9.8":"2026-04-06T11:50:57.487Z","0.9.9":"2026-04-06T15:05:46.219Z"},"license":"MIT","description":"Collect commit-level AI coding metrics from staged diff and local AI events","maintainers":[{"name":"youluzhi","email":"1713039434@qq.com"},{"name":"jiangqimin","email":"1107816226@qq.com"},{"name":"guojam","email":"guojam@gmail.com"},{"name":"chrisqiu027","email":"844680132@qq.com"},{"name":"zzite","email":"zziteqaq@163.com"},{"name":"asteria1","email":"it244@cht-group.net"}],"readme":"# cursor-roi-tracker\n\n`cursor-roi-tracker` 是一个面向 Git 提交的 AI 代码归因工具。  \n它会在 `pre-commit` 阶段统计本次暂存区代码变更与 AI 事件的交集，在 `post-commit` 阶段补齐提交信息、写入本地历史，在 `pre-push` 阶段进行非阻塞上报。\n\n## 功能概览\n\n- 自动安装 Git hooks（`pre-commit` / `post-commit` / `pre-push`）\n- 基于暂存区 diff 做行级 AI 归因（新增/删除）\n- 提交后生成结构化报告（JSON/JSONL）\n- 支持“消费索引 + TTL 宽限 + 过期物理压缩”，减少事件文件膨胀\n- 可选静默换 token + 自动上报提交报告\n- 默认不阻塞开发流程（异常会记录到错误日志）\n\n## 安装\n\n当前包名为 `@apdesign/cursor-roi-tracker`，在仓库根目录执行：\n\n```bash\nnpm i -D @apdesign/cursor-roi-tracker\n# or\nbun add -d @apdesign/cursor-roi-tracker\n```\n\n> 如果你的私有源做了别名映射（例如映射到 `cursor-roi-tracker`），也可以按你们内部包名安装。\n\n安装时会自动执行 `postinstall`，尝试完成以下动作：\n\n1. 写入/更新 `.git/hooks/pre-commit`\n2. 写入/更新 `.git/hooks/post-commit`\n3. 写入/更新 `.git/hooks/pre-push`\n4. 初始化默认配置文件 `.cursor-roi-tracker.json`（若不存在）\n5. 将事件文件加入 `.git/info/exclude`\n6. 若配置了服务端地址，尝试静默换取本地 token\n\n## 使用方法（推荐流程）\n\n### 第 1 步：安装 hooks（仅首次或需要重装时）\n\n```bash\nnpx cursor-roi-install-hooks\n# or\nbunx cursor-roi-install-hooks\n```\n\n> 若安装依赖后自动注入成功，这一步可跳过。\n\n### 第 2 步：正常开发并提交\n\n```bash\ngit add .\ngit commit -m \"feat: your message\"\n```\n\n提交时会自动触发：\n\n- `pre-commit`：采集当前暂存区指标，生成待提交报告\n- `post-commit`：绑定 commit sha/time，写入最终报告和历史\n- `pre-push`：上报本次将推送的 commits（失败不阻塞 push，支持队列补传）\n\n### 第 3 步：查看本地产物\n\n默认写入在仓库的 `.cursor/` 下（若不可写则回退到 `.cursor-roi/`）：\n\n- `.cursor/ai-commit-report.pending.json`\n- `.cursor/ai-commit-report.final.json`\n- `.cursor/ai-commit-history.jsonl`\n- `.cursor/ai-commit-errors.jsonl`\n\n## 手动命令\n\n你也可以单独执行：\n\n```bash\n# 手动执行 pre-commit 采集\nnpx cursor-roi-pre-commit\n# or\nbunx cursor-roi-pre-commit\n\n# 手动执行 post-commit 绑定/压缩/上报\nnpx cursor-roi-post-commit\n# or\nbunx cursor-roi-post-commit\n\n# 手动执行 pre-push 上报\nnpx cursor-roi-pre-push\n# or\nbunx cursor-roi-pre-push\n\n# 重新安装 hooks\nnpx cursor-roi-install-hooks\n# or\nbunx cursor-roi-install-hooks\n```\n\n## 定时任务扫描（GitLab CI）\n\n仓库内提供了离线归因扫描脚本：\n\n```bash\nnpm run ci:ai-attribution\n# or\nbun run ci:ai-attribution\n```\n\n脚本位置与详细说明：\n\n- `ci/ai-attribution-scan.mjs`\n- `ci/README.md`\n\n该脚本用于每日定时任务：拉取服务端 AI 事件、执行 `git blame -w --line-porcelain`、产出统一 Payload（`total*` + 可选 `modules[]`）并回传服务端。\n\n## 配置说明\n\n配置文件名：`.cursor-roi-tracker.json`（仓库根目录）\n\n示例：\n\n```json\n{\n  \"highThreshold\": 0.75,\n  \"bulkInsertThreshold\": 1,\n  \"pureDeleteThreshold\": 1,\n  \"sourceExtensions\": [\".ts\", \".tsx\", \".js\", \".jsx\", \".vue\", \".go\", \".java\", \".php\"],\n  \"excludeRegexes\": [\"(^|/)dist/\", \"(^|/)build/\", \"\\\\.min\\\\.\"],\n  \"eventsDirectory\": [\".cursor/animus-ai-events.jsonl\", \".cursor/animus/animus-ai-events.jsonl\", \".cursor/local-ai-events\"],\n  \"membersFile\": \".cursor/enginuity_yunxiao_members.names.json\",\n  \"serverBaseUrl\": \"https://your-server.example.com\",\n  \"silentTokenPath\": \"/api/cursor-board/auth/silent-token\",\n  \"commitReportPath\": \"/api/cursor-board/commit-reports\",\n  \"commitReportBatchPath\": \"/api/cursor-board/commit-reports/batch\",\n  \"requestTimeoutMs\": 5000,\n  \"batchUploadChunkSize\": 30,\n  \"batchUploadBaseTimeoutMs\": 3000,\n  \"batchUploadPerItemTimeoutMs\": 100,\n  \"batchUploadMaxTimeoutMs\": 15000,\n  \"uploadMaxRetryCount\": 5,\n  \"uploadDlqMaxRecords\": 500,\n  \"eventGraceTtlMs\": 604800000,\n  \"enableConsumedFallback\": true,\n  \"consumeIndexPath\": \".cursor/animus-ai-consumed-events.jsonl\"\n}\n```\n\n> 建议在 `excludeRegexes` 中排除 lock 文件（包括 `bun.lock` / `bun.lockb`），避免其参与源码归因统计。\n\n### 关键字段说明\n\n- `highThreshold`：判定 AI 归因命中阈值\n- `bulkInsertThreshold`：扩展记录 `agent_bulk_insert` 的最小插入行数（默认 1）\n- `pureDeleteThreshold`：扩展记录 `agent_pure_delete` 的最小删除行数（默认 1）\n- `sourceExtensions`：参与统计的代码文件后缀\n- `excludeRegexes`：排除路径/文件规则（正则字符串）\n- `eventsDirectory`：AI 事件文件路径（支持多个）\n- `eventGraceTtlMs`：事件消费后的宽限期（默认 7 天）\n- `enableConsumedFallback`：是否允许在宽限期内回滚重提时复用已消费事件\n- `consumeIndexPath`：消费索引文件路径（JSONL）\n- `serverBaseUrl`：配置后启用提交后上报\n- `commitReportBatchPath`：pre-push 多 commit 优先调用的批量上报接口\n- `requestTimeoutMs`：服务端请求超时（毫秒）\n- `batchUploadChunkSize`：pre-push 批量上报分片大小\n- `batchUploadBaseTimeoutMs`：批量上报基础超时\n- `batchUploadPerItemTimeoutMs`：批量每条附加超时\n- `batchUploadMaxTimeoutMs`：批量上报最大超时\n- `uploadMaxRetryCount`：单 commit 最大重试次数，超出进入 DLQ\n- `uploadDlqMaxRecords`：DLQ 最大保留条数（滚动保留最新）\n\n事件生命周期：\n\n1. 未消费：作为 fresh 事件参与匹配\n2. 已消费且 TTL 内：进入 fallback 池，允许回滚重提兜底\n3. 超过 TTL：从消费索引移除，并对源事件文件做物理压缩\n\n## 与服务端联动（可选）\n\n当 `serverBaseUrl` 已配置时：\n\n1. 安装 hooks 时会尝试调用 `silentTokenPath` 换取 token\n2. token 会写入 Git 目录下的本地文件（并自动加入 exclude）\n3. `pre-push` 会把即将推送的报告 POST 到 `commitReportBatchPath`（多 commit）或 `commitReportPath`（单 commit）\n4. 对部分失败的 commit 按 `commitSha` 精确判定，失败项进入本地 pending 队列，下次 push（即便无新 commit）继续补传\n\n如果未配置 `serverBaseUrl`，工具仍可完整执行本地统计，只是不进行网络上报。\n\n## 常见问题\n\n### 1) 为什么没有看到 AI 指标（全是 0）？\n\n优先检查：\n\n- `eventsDirectory` 指向的事件文件是否存在\n- 事件文件中是否有有效 `eventId`\n- 本次提交文件是否命中 `sourceExtensions` 且未被 `excludeRegexes` 排除\n- 查看 `.cursor/animus/ai-commit-report.final.json` 中 `eventReadStats`：\n  - `eventFilesConfiguredResolved`：命中的配置路径文件\n  - `eventFilesAutoDiscovered`：自动发现的事件文件\n  - `filesRead` / `eventsRawCount`：是否真正读取到事件内容\n\n说明：\n\n- pre-commit 会先按 `eventsDirectory` 读取事件，并自动在 `.cursor/` 目录下补充发现常见 `ai-event` 文件，减少环境路径差异导致的误判。\n- 扩展会记录整文件替换类型的编辑（不少 AI 应用修改属于此类），避免“事件未落盘导致 AI 指标恒为 0”。\n\n### 2) 为什么 commit 后服务端没有立刻看到数据？\n\n上报触发点已改为 `pre-push`，需要执行 `git push` 后才会上报。  \n如果网络失败或超时，hook 会非阻塞放行；失败项会进入本地 pending 队列并在后续 push 自动补传。\n\n### 3) 为什么没有生成报告文件？\n\n优先检查：\n\n- 是否在 Git 仓库内执行\n- hooks 是否成功写入 `.git/hooks/`\n- 是否真的有暂存区源代码文件参与提交\n\n### 4) 会不会阻塞提交或推送？\n\n默认不会。命令失败会尽量记录到 `.cursor/ai-commit-errors.jsonl`，并避免中断主流程。`pre-push` 上报阶段也会在超时或异常时直接放行。\n\n## 许可证\n\nMIT\n","readmeFilename":"README.md"}