{"_id":"@anyalir/7even","_rev":"9-6cb595aaf7786d047e5cb36b77e82951","name":"@anyalir/7even","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@anyalir/7even","version":"0.1.0","keywords":["okr","issue-tracker","cli"],"author":"","license":"Apache-2.0","_id":"@anyalir/7even@0.1.0","maintainers":[{"name":"anyalir","email":"anyarudo@gmail.com"}],"bin":{"s7n":"dist/index.js"},"dist":{"shasum":"914db58ebd95c10bfe9c6e4e11e89abc523ff951","tarball":"https://registry.npmjs.org/@anyalir/7even/-/7even-0.1.0.tgz","fileCount":19,"integrity":"sha512-1aVJkkqNbtmkIFc6nqAfTqJz6diU4XqMCMR9DwLH4pe8tD13J6AZfJldEQir4ae3j8pVz5g+vAlcyNH5DCRHDA==","signatures":[{"sig":"MEUCIHMnWK3GtEeTpE72L2AmgVLYJHOqQJ9W1QXgzI2Ec9lTAiEA1zQucR8w6llkVr9PTgrYSybsB2rOKw/GZ/cieA68I5c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130663},"type":"module","engines":{"node":">=20"},"gitHead":"e9484659157ef77d4284302981e0ad4bf37db159","scripts":{"test":"vitest run","build":"tsup"},"_npmUser":{"name":"anyalir","email":"anyarudo@gmail.com"},"_npmVersion":"11.6.2","description":"Repository-local, agentic-AI-enabled issue tracker with OKR hierarchy","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.23","chalk":"^5.6.2","react":"^19.2.6","date-fns":"^4.3.0","recharts":"^3.8.1","commander":"^15.0.0","react-dom":"^19.2.6","react-router":"^7.16.0","@hono/node-server":"^2.0.4","@tanstack/react-table":"^8.21.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.7","typescript":"^6.0.3","@types/node":"^25.9.1","@types/react":"^19.2.15","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/7even_0.1.0_1780332648665_0.5775650779418366","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@anyalir/7even","version":"0.1.1","keywords":["okr","issue-tracker","cli"],"author":{"name":"Anya Livia Rudolph","email":"anyarudo@gmail.com"},"license":"Apache-2.0","_id":"@anyalir/7even@0.1.1","maintainers":[{"name":"anyalir","email":"anyarudo@gmail.com"}],"homepage":"https://github.com/anyalir/7even#readme","bugs":{"url":"https://github.com/anyalir/7even/issues"},"bin":{"s7n":"dist/index.js"},"dist":{"shasum":"b2032f6acafc1b94e87274bfe065dd65c57f0407","tarball":"https://registry.npmjs.org/@anyalir/7even/-/7even-0.1.1.tgz","fileCount":19,"integrity":"sha512-IREt66Yh9SspBoZOfWnavCg6V8b4uUOBgXsB+w7+U11JVMF5VnbTKa5bxuiFp4LbdSLW5t2hz/drhltoUveg+w==","signatures":[{"sig":"MEUCIQD6axoYn+5h/Pfk1JcLiKk/lonwIEuhFl4tAi+pJmVM5gIgfDG/NNKqsUHAp9mKnYnbtAN/MnXd+VWdPp39RDf/TAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130921},"type":"module","engines":{"node":">=20"},"gitHead":"a0500b86a7d68bf0782bf00f87a6afa761230b7a","scripts":{"test":"vitest run","build":"tsup"},"_npmUser":{"name":"anyalir","email":"anyarudo@gmail.com"},"repository":{"url":"git+https://github.com/anyalir/7even.git","type":"git"},"_npmVersion":"11.6.2","description":"Repository-local, agentic-AI-enabled issue tracker with OKR hierarchy","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.23","chalk":"^5.6.2","react":"^19.2.6","date-fns":"^4.3.0","recharts":"^3.8.1","commander":"^15.0.0","react-dom":"^19.2.6","react-router":"^7.16.0","@hono/node-server":"^2.0.4","@tanstack/react-table":"^8.21.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.7","typescript":"^6.0.3","@types/node":"^25.9.1","@types/react":"^19.2.15","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/7even_0.1.1_1780333383773_0.4098861394152362","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@anyalir/7even","version":"0.2.1","keywords":["okr","issue-tracker","cli"],"author":{"name":"Anya Livia Rudolph","email":"anyarudo@gmail.com"},"license":"Apache-2.0","_id":"@anyalir/7even@0.2.1","maintainers":[{"name":"anyalir","email":"anyarudo@gmail.com"}],"homepage":"https://github.com/anyalir/7even#readme","bugs":{"url":"https://github.com/anyalir/7even/issues"},"bin":{"s7n":"dist/index.js"},"dist":{"shasum":"95d288a052b5d34cad51cb6a8757e8a4d352e705","tarball":"https://registry.npmjs.org/@anyalir/7even/-/7even-0.2.1.tgz","fileCount":19,"integrity":"sha512-TkIESMKrXsuzrAg01EzGhflKw39KHwVHy60nLGyS3QsynP8kLl95mZetCJq+8bHJY8yJH9SZuuFupE0IUu9DTA==","signatures":[{"sig":"MEUCICoFg3DaucojA3E7Uq6dW/N5g/LWtAvuzwu8rIPiYqeyAiEAgsPeDmoHppP3pgQFz3noV4mTvHiHBjlszMhIZzNtx+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146482},"type":"module","engines":{"node":">=20"},"gitHead":"4b29f836d5f31c9ccf40174aabd9f7d212baa28b","scripts":{"test":"vitest run","build":"tsup"},"_npmUser":{"name":"anyalir","email":"anyarudo@gmail.com"},"repository":{"url":"git+https://github.com/anyalir/7even.git","type":"git"},"_npmVersion":"11.6.2","description":"Repository-local, agentic-AI-enabled issue tracker with OKR hierarchy","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.23","chalk":"^5.6.2","react":"^19.2.6","date-fns":"^4.3.0","recharts":"^3.8.1","commander":"^15.0.0","react-dom":"^19.2.6","react-router":"^7.16.0","@hono/node-server":"^2.0.4","@tanstack/react-table":"^8.21.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.7","typescript":"^6.0.3","@types/node":"^25.9.1","@types/react":"^19.2.15","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/7even_0.2.1_1780396092866_0.5513587435250535","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@anyalir/7even","version":"0.3.0","keywords":["okr","issue-tracker","cli"],"author":{"name":"Anya Livia Rudolph","email":"anyarudo@gmail.com"},"license":"Apache-2.0","_id":"@anyalir/7even@0.3.0","maintainers":[{"name":"anyalir","email":"anyarudo@gmail.com"}],"homepage":"https://github.com/anyalir/7even#readme","bugs":{"url":"https://github.com/anyalir/7even/issues"},"bin":{"s7n":"dist/index.js"},"dist":{"shasum":"fd8d41316c0ca535f3f47fd8c2d6bd162d51f0d8","tarball":"https://registry.npmjs.org/@anyalir/7even/-/7even-0.3.0.tgz","fileCount":20,"integrity":"sha512-fQ1g9nNnVZoz5FOkaBk2IKr3n7RSPtjUhrrTYFVah+v+fqUuXtjRf7Jln+cDrO6BMXqfvqvxkkM06O+dUW2u1A==","signatures":[{"sig":"MEUCIQDiaB4qCxpmzyvReZFlDVxIPlEfCt9EsAImBNd66J7phAIgCnvwTTJScu4y2Z9KpDgtW5irhxWeMJFcPE9/kcxdYok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158447},"type":"module","engines":{"node":">=20"},"gitHead":"70505a4c79d401c9dbceae17b469b287527521a4","scripts":{"test":"vitest run","build":"tsup"},"_npmUser":{"name":"anyalir","email":"anyarudo@gmail.com"},"repository":{"url":"git+https://github.com/anyalir/7even.git","type":"git"},"_npmVersion":"11.6.2","description":"Repository-local, agentic-AI-enabled issue tracker with OKR hierarchy","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.23","chalk":"^5.6.2","react":"^19.2.6","date-fns":"^4.3.0","recharts":"^3.8.1","commander":"^15.0.0","react-dom":"^19.2.6","react-router":"^7.16.0","@hono/node-server":"^2.0.4","@tanstack/react-table":"^8.21.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.7","typescript":"^6.0.3","@types/node":"^25.9.1","@types/react":"^19.2.15","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/7even_0.3.0_1780430946446_0.3385143477472119","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@anyalir/7even","version":"0.3.1","keywords":["okr","issue-tracker","cli"],"author":{"name":"Anya Livia Rudolph","email":"anyarudo@gmail.com"},"license":"Apache-2.0","_id":"@anyalir/7even@0.3.1","maintainers":[{"name":"anyalir","email":"anyarudo@gmail.com"}],"homepage":"https://github.com/anyalir/7even#readme","bugs":{"url":"https://github.com/anyalir/7even/issues"},"bin":{"s7n":"dist/index.js"},"dist":{"shasum":"c33fc25eda0e56f86ab696f1636954d1566980f0","tarball":"https://registry.npmjs.org/@anyalir/7even/-/7even-0.3.1.tgz","fileCount":20,"integrity":"sha512-rcD4S4gH4Fj/l/RMNQ2yEJWJJvzgx8isKUAl6AYrJMT0FPQqJ9umOFEVKJzPTLiIoxAC2R+2C06aQoDVP3wWnw==","signatures":[{"sig":"MEUCIEoFajB0nf9+IFdMU6yTKZsh3RlZkipOsv2QmhUygbieAiEAvEi2skwXFWtXlI2bXclpbG2wxbJks4ughHb66s/OFEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158445},"type":"module","engines":{"node":">=20"},"gitHead":"c73fe856853f133cc36aaff8034b4d624cdd6523","scripts":{"test":"vitest run","build":"tsup"},"_npmUser":{"name":"anyalir","email":"anyarudo@gmail.com"},"repository":{"url":"git+https://github.com/anyalir/7even.git","type":"git"},"_npmVersion":"11.6.2","description":"Repository-local, agentic-AI-enabled issue tracker with OKR hierarchy","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.23","chalk":"^5.6.2","react":"^19.2.6","date-fns":"^4.3.0","recharts":"^3.8.1","commander":"^15.0.0","react-dom":"^19.2.6","react-router":"^7.16.0","@hono/node-server":"^2.0.4","@tanstack/react-table":"^8.21.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.7","typescript":"^6.0.3","@types/node":"^25.9.1","@types/react":"^19.2.15","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/7even_0.3.1_1780431840900_0.39602871583181387","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@anyalir/7even","version":"0.3.2","keywords":["okr","issue-tracker","cli"],"author":{"name":"Anya Livia Rudolph","email":"anyarudo@gmail.com"},"license":"Apache-2.0","_id":"@anyalir/7even@0.3.2","maintainers":[{"name":"anyalir","email":"anyarudo@gmail.com"}],"homepage":"https://github.com/anyalir/7even#readme","bugs":{"url":"https://github.com/anyalir/7even/issues"},"bin":{"s7n":"dist/index.js"},"dist":{"shasum":"8c8026c7445d1503d39bebadd3250b91661c839d","tarball":"https://registry.npmjs.org/@anyalir/7even/-/7even-0.3.2.tgz","fileCount":23,"integrity":"sha512-wZp97dNkrD/6Yq8nisPzsNNSElDsPhnq4UhvGA450nrj9y6bfgQld+jLLWzOPjNqTkNiO4rQ1yIW7qKCXWOmBg==","signatures":[{"sig":"MEYCIQDqdBPTE1dubJ/TqurWIz0bIsTQDhNnr+5UheoyX2H0PwIhAP3zssBN52bCDuj/jw+oR0X32PZ/4yIIq8m7sQGyaV9I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":859110},"type":"module","engines":{"node":">=20"},"gitHead":"5a156f19439988df1ad3fb6c71c37cd3ff849166","scripts":{"test":"vitest run","build":"tsup && vite build --config src/dashboard/vite.config.ts"},"_npmUser":{"name":"anyalir","email":"anyarudo@gmail.com"},"repository":{"url":"git+https://github.com/anyalir/7even.git","type":"git"},"_npmVersion":"11.6.2","description":"Repository-local, agentic-AI-enabled issue tracker with OKR hierarchy","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.23","chalk":"^5.6.2","react":"^19.2.6","date-fns":"^4.3.0","recharts":"^3.8.1","commander":"^15.0.0","react-dom":"^19.2.6","react-router":"^7.16.0","@hono/node-server":"^2.0.4","@tanstack/react-table":"^8.21.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.7","typescript":"^6.0.3","@types/node":"^25.9.1","@types/react":"^19.2.15","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/7even_0.3.2_1780917807969_0.5872057813749245","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@anyalir/7even","version":"0.3.3","keywords":["okr","issue-tracker","cli"],"author":{"name":"Anya Livia Rudolph","email":"anyarudo@gmail.com"},"license":"Apache-2.0","_id":"@anyalir/7even@0.3.3","maintainers":[{"name":"anyalir","email":"anyarudo@gmail.com"}],"homepage":"https://github.com/anyalir/7even#readme","bugs":{"url":"https://github.com/anyalir/7even/issues"},"bin":{"s7n":"dist/index.js"},"dist":{"shasum":"b97ff567291ca8f914d644a11fb06c762d0d1051","tarball":"https://registry.npmjs.org/@anyalir/7even/-/7even-0.3.3.tgz","fileCount":23,"integrity":"sha512-htYJcETbx8QpVyWyEVU//7uNX+h2oyBAiJIIp0RICGIrsIcGM15KU/L+ju7saiTRjz/qzBplynS+YBAtNzD2Tg==","signatures":[{"sig":"MEUCIGFY0U7KnBizRDTjM7YmUpy3CJ20Ty1wIwgHMyIEBiQHAiEAuzA3W8k0x8xiazV5kEtHqmkDe+T6sCeAZkyAAFj/48I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":859240},"type":"module","engines":{"node":">=20"},"gitHead":"e53679aad14fd69108fe66fc6e84512f450838b4","scripts":{"test":"vitest run","build":"tsup && vite build --config src/dashboard/vite.config.ts"},"_npmUser":{"name":"anyalir","email":"anyarudo@gmail.com"},"repository":{"url":"git+https://github.com/anyalir/7even.git","type":"git"},"_npmVersion":"11.6.2","description":"Repository-local, agentic-AI-enabled issue tracker with OKR hierarchy","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.23","chalk":"^5.6.2","react":"^19.2.6","date-fns":"^4.3.0","recharts":"^3.8.1","commander":"^15.0.0","react-dom":"^19.2.6","react-router":"^7.16.0","@hono/node-server":"^2.0.4","@tanstack/react-table":"^8.21.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.7","typescript":"^6.0.3","@types/node":"^25.9.1","@types/react":"^19.2.15","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/7even_0.3.3_1780998368028_0.22740567362464303","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@anyalir/7even","version":"0.3.4","keywords":["okr","issue-tracker","cli"],"author":{"name":"Anya Livia Rudolph","email":"anyarudo@gmail.com"},"license":"Apache-2.0","_id":"@anyalir/7even@0.3.4","maintainers":[{"name":"anyalir","email":"anyarudo@gmail.com"}],"homepage":"https://github.com/anyalir/7even#readme","bugs":{"url":"https://github.com/anyalir/7even/issues"},"bin":{"s7n":"dist/index.js"},"dist":{"shasum":"74f71a155bc1abb993b5d8e146092cb1c61e3304","tarball":"https://registry.npmjs.org/@anyalir/7even/-/7even-0.3.4.tgz","fileCount":23,"integrity":"sha512-Y7lo+n5E5Bd94zVTh+8YB+s7hUGer0WCIf40TB/iaZag5OOP+3P8ZhaHZVPCv7kOYEYjCAhoBQZuY2MuU6ZrMw==","signatures":[{"sig":"MEYCIQCWa5VPMOmb6MbEmCNSVrXFSWU3NxxAed1Jo2Wm+8gbBwIhAM1ShAb29N33lPiYsQIJ4gA1jI8KPzX0GZ0D/Z9+TGUV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":859446},"type":"module","engines":{"node":">=20"},"gitHead":"a8cd10b726c1ba02594d754a87569616f2411bb6","scripts":{"test":"vitest run","build":"tsup && vite build --config src/dashboard/vite.config.ts"},"_npmUser":{"name":"anyalir","email":"anyarudo@gmail.com"},"repository":{"url":"git+https://github.com/anyalir/7even.git","type":"git"},"_npmVersion":"11.6.2","description":"Repository-local, agentic-AI-enabled issue tracker with OKR hierarchy","directories":{},"_nodeVersion":"25.2.0","dependencies":{"zod":"^4.4.3","hono":"^4.12.23","chalk":"^5.6.2","react":"^19.2.6","date-fns":"^4.3.0","recharts":"^3.8.1","commander":"^15.0.0","react-dom":"^19.2.6","react-router":"^7.16.0","@hono/node-server":"^2.0.4","@tanstack/react-table":"^8.21.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.7","typescript":"^6.0.3","@types/node":"^25.9.1","@types/react":"^19.2.15","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/7even_0.3.4_1780998763213_0.6965926179446662","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@anyalir/7even","version":"0.4.0","description":"Repository-local, agentic-AI-enabled issue tracker with OKR hierarchy","type":"module","bin":{"s7n":"dist/index.js"},"engines":{"node":">=20"},"scripts":{"build":"tsup && vite build --config src/dashboard/vite.config.ts","test":"vitest run"},"keywords":["okr","issue-tracker","cli"],"author":{"name":"Anya Livia Rudolph","email":"anyarudo@gmail.com"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/anyalir/7even.git"},"homepage":"https://github.com/anyalir/7even#readme","bugs":{"url":"https://github.com/anyalir/7even/issues"},"dependencies":{"@hono/node-server":"^2.0.4","@tanstack/react-table":"^8.21.3","chalk":"^5.6.2","commander":"^15.0.0","date-fns":"^4.3.0","hono":"^4.12.23","react":"^19.2.6","react-dom":"^19.2.6","react-router":"^7.16.0","recharts":"^3.8.1","zod":"^4.4.3"},"devDependencies":{"@types/node":"^25.9.1","@types/react":"^19.2.15","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.2","tsup":"^8.5.1","typescript":"^6.0.3","vitest":"^4.1.7"},"gitHead":"e6155e1f4e75b6bbcfdc253a9a4517fd3bb84258","_id":"@anyalir/7even@0.4.0","_nodeVersion":"25.2.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-g816GslbmK26wBolY+llWN/SLwyh9SOGozc5t1fO+I+y1rT9jIjj4gn5bZWj4L970murdmKxN6mqPnlGsuSZ/A==","shasum":"7082719b48b5f7cf2c20da9870b4731900c06238","tarball":"https://registry.npmjs.org/@anyalir/7even/-/7even-0.4.0.tgz","fileCount":25,"unpackedSize":873712,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCJdnSSkufolvsrRD71O+M6tlFNqxsMhwnkZt3brpkUfAIgO7Nvak+A48W0ByKdDZSuPZh/UMIoSNVSnO5KclpjE3U="}]},"_npmUser":{"name":"anyalir","email":"anyarudo@gmail.com"},"directories":{},"maintainers":[{"name":"anyalir","email":"anyarudo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/7even_0.4.0_1782984056407_0.43007293561827176"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-01T16:50:48.366Z","modified":"2026-07-02T09:20:57.104Z","0.1.0":"2026-06-01T16:50:48.803Z","0.1.1":"2026-06-01T17:03:03.925Z","0.2.1":"2026-06-02T10:28:13.033Z","0.3.0":"2026-06-02T20:09:06.584Z","0.3.1":"2026-06-02T20:24:01.067Z","0.3.2":"2026-06-08T11:23:28.148Z","0.3.3":"2026-06-09T09:46:08.192Z","0.3.4":"2026-06-09T09:52:43.350Z","0.4.0":"2026-07-02T09:20:56.823Z"},"bugs":{"url":"https://github.com/anyalir/7even/issues"},"author":{"name":"Anya Livia Rudolph","email":"anyarudo@gmail.com"},"license":"Apache-2.0","homepage":"https://github.com/anyalir/7even#readme","keywords":["okr","issue-tracker","cli"],"repository":{"type":"git","url":"git+https://github.com/anyalir/7even.git"},"description":"Repository-local, agentic-AI-enabled issue tracker with OKR hierarchy","maintainers":[{"name":"anyalir","email":"anyarudo@gmail.com"}],"readme":"# 7even\n\n![Fun will now commence](https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExeWU3OGJpb3FmZWlid3Q0YjBycWljamJiMHZ2OTYwZHdteXFpeDdmMyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/VhpuNI1KejNbBGXCxS/giphy.gif)\n\nRepository-local, agentic-AI-enabled OKR issue tracker. All data lives as JSON files in `.7even/`, committed alongside your code. No external services, no accounts, no sync issues.\n\nBuilt for AI-assisted development workflows. Works standalone via CLI, or with [OpenCode](https://opencode.ai) slash commands for guided OKR decomposition, task breakdown, and MECE validation.\n\n## Install\n\n```bash\nnpm install @anyalir/7even\n```\n\n## Quick Start\n\n```bash\n# Initialize in any git repo\nnpx s7n init\n\n# after init, you can also call it as\nnpx 7\n\n# Create an objective, then follow the prompts\n/7-new-objective \"Build a photo validation system for seasonal colour analysis\"\n\n# Or use the cli directly\nnpx s7n objective create -d \"Build a photo validation system for seasonal colour analysis\" \\\n  -s \"Photo validation for colour analysis\"\n\n# Decompose into key results (agent-guided with OpenCode)\n/7-okr-breakdown O1\n\n# Or manually\nnpx s7n key-result create -d \"Validation achieves ≥90% accuracy vs expert review\" \\\n  -s \"Photo quality validation at 90% accuracy\" \\\n  --parent O1\n\n# Break KRs into tasks\n/7-breakdown O1KR1\n\n# Or manually\nnpx s7n task create -d \"Create 100-photo test set with expert labels\" --parent O1KR1\nnpx s7n estimate add O1KR1T1 5\n\n# Launch the dashboard\nnpx s7n dashboard\n\n```\n## Work Loop\n\n### Manual (human-in-the-loop)\n\n```bash\n# Pick a task and start. The agent will help you define acceptance criteria, assign to you, and move to in-progress\n/7-start-task O1KR1T1\n\n# (implement the task)\n\n# Run acceptance criteria scripts, report pass/fail\n/7-verify-task O1KR1T1\n\n# Move to done, final commit\n/7-complete-task O1KR1T1\n```\n\n### Automated (executor/validator pairs)\n\n```bash\n# Fully automated: executor implements, validator verifies, no human intervention needed\n/7-spawn-pair O1KR1T1\n\n# Batch: run multiple tasks in parallel\n/7-spawn-pairs O1KR1T1,O1KR1T2,O1KR1T3\n\n# Or use range notation\n/7-spawn-pairs O1KR1T1-T3\n```\n\n## Concepts\n\n### OKR Hierarchy\n\n```\n```\nObjective (O1)\n├── Key Result (O1KR1)\n│   ├── Task (O1KR1T1)\n│   ├── Task (O1KR1T2)\n│   └── Task (O1KR1T3)\n├── Key Result (O1KR2)\n│   ├── Task (O1KR2T1)\n│   └── Task (O1KR2T2)\n└── Key Result (O1KR3)\n    └──\n```\n\n**Objectives** define what you want to achieve. **Key Results** are measurable outcomes that prove the objective is met. **Tasks** are the concrete work items.\n\n### Status Transitions (Automatic)\n\n7even automatically transitions item statuses based on progress to reduce manual overhead:\n\n#### Objectives\n- **proposed → accepted**: When the first Key Result is created\n- **accepted → achieved**: When all tasks under all Key Results are marked as `done`\n\n#### Key Results\n- **aspirational → achieved**: When all child tasks are `done` AND no measurement is defined\n- If a KR has `structuredMeasurement` or `measureScript`, it stays `aspirational` until manually confirmed by a human (requires measurement validation)\n\n#### Tasks\n- **to-do → in-progress**: When a git commit references the task (format: `task: <uuid>` in commit message body)\n- Run `npx s7n sync` to scan recent commits and auto-transition tasks\n- **in-progress → done**: Always manual (requires human or agent confirmation)\n\nYou can still manually transition any item using the `move` command if needed.\n\n### Short IDs\n\nEvery item gets a hierarchical short ID: `O1`, `O1KR1`, `O1KR1T1`. These are persistent (stored in JSON), globally unique within a project, and accepted by all CLI commands. Case-insensitive.\n\n```bash\nnpx s7n task show O1KR1T1    # works\nnpx s7n task show o1kr1t1    # also works\nnpx s7n task show 01kr1t1    # helpful error: \"Did you mean O1KR1T1? (letter O, not zero)\"\n```\n\n### Data Storage\n\nAll data lives in `.7even/` as JSON files, organized by type and status:\n\n```\n.7even/\n├── objective/\n│   └── proposed/\n│       └── 48c0264c-...json\n├── key-result/\n│   └── aspirational/\n│       └── 0bab38aa-...json\n├── task/\n│   ├── to-do/\n│   ├── in-progress/\n│   └── done/\n├── index.json\n├── short-ids.json\n└── counters.json\n```\n\nCommit `.7even/` to git. Your issue tracker travels with your code.\n\n## CLI Reference\n\nAll commands follow a noun-verb pattern with short aliases.\n\n### Objectives\n\n```bash\nnpx s7n objective create -d \"Description\" -s \"Short summary\"\nnpx s7n objective list\nnpx s7n objective show O1\nnpx s7n objective comment O1 -m \"Some note\" --type agent\n\n# Aliases\nnpx s7n o create ...\nnpx s7n o list\n```\n\n### Key Results\n\n```bash\nnpx s7n key-result create -d \"Measurable outcome description\" \\\n  -s \"5-10 word summary\" --parent O1\nnpx s7n key-result list\nnpx s7n key-result show O1KR1\nnpx s7n key-result comment O1KR1 -m \"Adjacent to O1KR2\" --type agent\n\n# Aliases\nnpx s7n kr create ...\n```\n\n### Tasks\n\n```bash\nnpx s7n task create -d \"Concrete work item\" --parent O1KR1\nnpx s7n task list\nnpx s7n task list --status to-do\nnpx s7n task show O1KR1T1\nnpx s7n task move O1KR1T1 in-progress\nnpx s7n task move O1KR1T1 done\nnpx s7n task assign O1KR1T1 --email dev@example.com\nnpx s7n task comment O1KR1T1 -m \"Progress update\" --type agent\n\n# Aliases\nnpx s7n t create ...\nnpx s7n t list\n```\n\n### Dependencies\n\nTasks can depend on other tasks. Dependencies are visible on the dashboard (Gantt arrows, blocked badges on Board) and enforced by the forecast engine for scheduling.\n\n```bash\n# T2 depends on T1 (T1 must finish before T2 can start)\nnpx s7n task depend O1KR1T2 O1KR1T1\n\n# Remove a dependency\nnpx s7n task undepend O1KR1T2 O1KR1T1\n\n# Dependencies can cross KR boundaries\nnpx s7n task depend O1KR2T1 O1KR1T3\n```\n\n### Estimation\n\nNon-destructive estimation history. Re-estimate as you learn more.\n\n```bash\nnpx s7n estimate add O1KR1T1 5          # Initial: 5 story points\nnpx s7n estimate add O1KR1T1 3          # Re-estimate: 3 SP remaining\nnpx s7n estimate show O1KR1T1           # Show history\n```\n\n### Other Commands\n\n```bash\nnpx s7n commit                          # Commit .7even/ changes to git\nnpx s7n sync                            # Scan git commits and auto-transition tasks to in-progress\nnpx s7n repair-index                    # Rebuild index from filesystem\nnpx s7n evaluate kr O1KR1                  # Evaluate KR completion\nnpx s7n evaluate objective O1              # Check objective completion\nnpx s7n dashboard                       # Launch local dashboard\nnpx s7n config show                     # Show project configuration\nnpx s7n config set --team-size 3        # Set team size (default: 1)\nnpx s7n config set --initial-velocity 15  # Set initial velocity estimate (SP/week)\n```\n\n### Team Configuration\n\nConfigure team size and initial velocity for forecasting. Stored in `.7even/config.json`.\n\n```bash\n# Set team size (affects parallel task scheduling in forecasts)\nnpx s7n config set --team-size 3\n\n# Set initial velocity estimate (used when no historical data exists)\nnpx s7n config set --initial-velocity 15\n\n# Both at once\nnpx s7n config set --team-size 3 --initial-velocity 15\n\n# View current config\nnpx s7n config show\n```\n\nTeam size limits how many tasks run in parallel. With `--team-size 3`, the forecast schedules at most 3 tasks concurrently. Assigned tasks route to their person's slot; unassigned tasks fill the earliest-free slot.\n\n## Dashboard\n\nLocal dashboard with timeline, board, achievements, and analytics views. Data is read directly from `.7even/` JSON files. No backend server or database required.\n\n```bash\nnpx s7n dashboard                       # Opens at localhost:7777\nnpx s7n dashboard --port 8080           # Custom port\n```\n\n### Timeline\n\nGantt chart with expandable objective/KR/task hierarchy. Day/week/month granularity. Dependency arrows between tasks. Click a KR for inline burndown chart.\n\n**Forecasting:** Non-done tasks show projected start/end dates as dashed, semi-transparent bars. The forecast engine builds a dependency DAG, topologically sorts tasks, then simulates scheduling across `teamSize` parallel slots. Assigned tasks route to their person's slot; unassigned tasks fill the earliest-free slot. Objective and KR bars automatically span from their earliest child's start to their latest child's end.\n\n### Board\n\nKanban board organized by objective and KR. Three-column layout: TO DO, IN PROGRESS, DONE. Task cards show short IDs, SP estimates, assignee badges. Dependency indicators: blocked tasks show \"BLOCKED BY O1KR1T2\", resolved dependencies show \"← O1KR1T2\". Click any card for a detail panel with comments, estimation history, and acceptance criteria.\n\nSwitch to assignee view to see tasks grouped by person.\n\n### Achievements\n\nBadge system with 7 built-in badges. Custom badges via `.7even/badges/custom/`. Achievement timeline and hall of fame.\n\n### Analytics\n\nBurndown charts (per KR or objective), velocity tracking with rolling average and per-person normalization, ETA projection with confidence levels (low/medium/high based on data volume). Commit frequency metrics. All charts interactive with Recharts.\n\nVelocity is displayed as both team total and per-person (dashed line). ETA uses the forecast engine when team configuration is set, falling back to `initialVelocity` when no historical data exists.\n\n## OpenCode Integration\n\n7even ships with slash commands and subagent definitions for [OpenCode](https://opencode.ai). Running `npx s7n init` symlinks them into `.opencode/commands/` and `.opencode/agents/`.\n\n### Workflow: New Project\n\n```\n/7-new-objective          Create an objective with summary\n/7-okr-breakdown O1       Decompose objective into key results (MECE validated)\n/7-breakdown O1KR1        Break KR into tasks (MECE validated, dependencies recorded)\n```\n\nThe MECE analysis checks every proposed item against all existing items across the entire project. Overlaps, dependencies, and scope boundaries are recorded as comments on each item.\n\n### Workflow: Task Execution\n\n#### Manual\n\n```\n/7-start-task O1KR1T1     Define acceptance criteria, assign, move to in-progress\n                          (implement the task)\n/7-verify-task O1KR1T1    Run acceptance criteria scripts, report pass/fail\n/7-complete-task O1KR1T1  Record actual SP, move to done, final commit\n```\n\n#### Automated (executor/validator pairs)\n\nFor hands-off execution, spawn executor/validator agent pairs. The main agent orchestrates — it never implements or verifies directly.\n\n| Agent | Model | Role |\n|-------|-------|------|\n| `7-executor` | Sonnet 4.5 | Proposes acceptance criteria, implements code, writes tests, commits |\n| `7-validator` | Opus 4.6 | Reviews criteria, verifies implementation, finishes tasks (read-only) |\n\n```\n/7-spawn-pair O1KR1T1     Single task: full executor/validator cycle\n/7-spawn-pairs O1KR1T1-T3 Batch: N pairs run concurrently\n```\n\nThe cycle for each pair:\n1. Executor proposes 3-5 acceptance criteria\n2. Validator reviews → APPROVED or REJECTED (max 2 rejection rounds)\n3. Executor implements with approved criteria, commits with `task: <uuid>`\n4. Validator verifies: clean tree, commit format, runs all AC scripts\n5. On ALL_PASS: validator finalizes (estimate → 0, move → done, commit state)\n6. On FAIL: executor fixes, validator re-verifies (max 3 rounds, then escalates)\n\n### Commit Format\n\nDuring task work, commits reference the task UUID in the body (not the subject line):\n\n```\ngit commit -m \"implement photo validation scoring engine\" \\\n           -m \"7even-task: 84f8d63b-0fb2-492a-bbd5-59f024cbdf7a\"\n```\n\n### All Slash Commands\n\n| Command | Purpose |\n|---------|---------|\n| `/7-new-objective` | Create objective with guided summary |\n| `/7-new-kr` | Create key result with summary and measurement |\n| `/7-okr-breakdown` | Decompose objective → key results with MECE |\n| `/7-breakdown` | Decompose KR → tasks with MECE and dependencies |\n| `/7-start-task` | Define acceptance criteria, assign, start |\n| `/7-verify-task` | Run AC scripts, report results |\n| `/7-complete-task` | Finalize task, record effort, commit |\n| `/7-evaluate` | Evaluate KR/objective completion |\n| `/7-pause` | Pause current work with context |\n| `/7-proceed` | Resume paused work |\n| `/7-finish` | Wrap up a session |\n| `/7-spawn-pair` | Automated single-task execution via executor/validator pair |\n| `/7-spawn-pairs` | Batch automated execution — N pairs in parallel |\n\n## Example: Real Project\n\nFrom a fictional seasonal colour analysis app.\n\n```\n$ npx s7n objective list\n● O1  OBJ proposed  Photo validation for seasonal colour analysis\n● O2  OBJ proposed  Colour season analysis with modification guidance\n● O3  OBJ proposed  Seasonal product recommendations with affiliate monetization\n\n$ npx s7n key-result list\n● O1KR1  KR aspirational  Photo quality validation at 90% accuracy\n● O1KR2  KR aspirational  All rejections include specific guidance\n● O1KR3  KR aspirational  80% complete valid photo set in 3 attempts\n● O2KR1  KR aspirational  85% accuracy on synthetic set, consistent classifications\n● O2KR2  KR aspirational  Ambiguous cases show 2 seasons with modification paths\n● O2KR3  KR aspirational  10 real transformations validate modification advice\n● O3KR1  KR aspirational  3 affiliate partners with conversion tracking\n● O3KR2  KR aspirational  20 personalized recommendations in 5s\n● O3KR3  KR aspirational  Product catalog with 200 seasonally tagged items\n\n$ npx s7n task show O1KR1T1\n● O1KR1T1 Create 100-photo test set with expert labels [in-progress]\n  ID: 84f8d63b-0fb2-492a-bbd5-59f024cbdf7a\n  Assignee: anya@lean.tech\n  Estimates:\n    2026-06-01 — 5 SP by Anya Livia Rudolph\n  Comments:\n    [agent] MECE: No overlap with O2KR1T1 (season classification test set -\n    different purpose). Scope: photo quality labels only, NOT season labels.\n    No dependencies.\n```\n\n## Design Decisions\n\n- **JSON files, not a database.** Git is the sync layer. Merge conflicts are rare (items are separate files) and resolvable.\n- **Short IDs are persisted, not computed.** `O1KR1T1` is stored in the JSON file, not derived at runtime. This means IDs are stable even if items are reordered.\n- **Non-destructive estimation.** Every estimate is appended to history. You can see how estimates evolved over time. The dashboard uses the latest `.spRemaining` value.\n- **MECE is global.** When decomposing, every proposed item is cross-checked against the entire project — not just the current parent. This catches overlaps between objectives.\n- **Agent comments are labeled.** The `--type agent` flag on comments distinguishes human notes from AI-generated analysis. Both are valuable; knowing the source matters.\n- **Dependencies cross KR boundaries.** A task under O1KR2 can depend on a task under O1KR1. The dependency graph is project-wide.\n- **Forecast respects team capacity.** Team size limits parallel execution. Dependencies force linearity. Assigned tasks route to their person's slot. The result is a realistic schedule, not an optimistic one.\n\n## Tech Stack\n\n- **CLI:** Node.js, Commander.js, Chalk\n- **Schemas:** Zod validation\n- **Dashboard:** React 19, Vite 6, React Router 7, Recharts 2\n- **API:** Hono (read-only, localhost)\n- **Storage:** JSON files in `.7even/`, git for persistence\n- **Forecasting:** DAG-based topological scheduling with team capacity constraints\n\n## License\n\nApache 2.0\n","readmeFilename":"README.md"}