{"_id":"delivery-intel","_rev":"10-96c5c6590443f095a7adb7acd3f5e667","name":"delivery-intel","dist-tags":{"latest":"1.8.1"},"versions":{"1.0.0":{"name":"delivery-intel","version":"1.0.0","keywords":["dora","devops","metrics","github","ci-cd","deployment","vulnerability","cli","dashboard"],"author":{"name":"ParthibanRajasekaran"},"license":"MIT","_id":"delivery-intel@1.0.0","maintainers":[{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"}],"homepage":"https://github.com/ParthibanRajasekaran/growth-agent#readme","bugs":{"url":"https://github.com/ParthibanRajasekaran/growth-agent/issues"},"bin":{"delivery-intel":"bin/delivery-intel.js"},"dist":{"shasum":"5b9f9ed0e63ce910f87ce84a31baa8396fba22c3","tarball":"https://registry.npmjs.org/delivery-intel/-/delivery-intel-1.0.0.tgz","fileCount":11,"integrity":"sha512-EwhkdobgzcbNW5ikT7vmP6qOjkVxKeyMyPqntR0CBFyl87cu0LJzESrL0AflMLJbZIOyQwGtNZiHIcQIXpx6CQ==","signatures":[{"sig":"MEYCIQDwB1Vc8jxjg+EyYzAZpU1f7bXBKgmBayXIJrl0cnl3GQIhAIHS0rMYla2QgD7GbNDX7eWeuBm6Nxa1CEZ6DOd9veTe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69062},"main":"./dist/cli/analyzer.js","types":"./dist/cli/analyzer.d.ts","gitHead":"3d655bc0126dff16fc432db36d2b7641b65b73bf","scripts":{"dev":"next dev","lint":"next lint","build":"next build","start":"next start","build:cli":"tsc -p tsconfig.cli.json","prepublishOnly":"npm run build:cli"},"_npmUser":{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"},"repository":{"url":"git+https://github.com/ParthibanRajasekaran/growth-agent.git","type":"git"},"_npmVersion":"11.6.0","description":"Software Delivery Intelligence — DORA metrics, vulnerability scanning, and actionable suggestions for any GitHub repository.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"next":"^16.1.6","react":"^19.2.4","ioredis":"^5.9.3","date-fns":"^4.1.0","recharts":"^3.7.0","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@octokit/rest":"^22.0.1","framer-motion":"^12.34.2","@octokit/graphql":"^9.0.3"},"_hasShrinkwrap":false,"devDependencies":{"postcss":"^8.5.6","tailwindcss":"^4.2.0","autoprefixer":"^10.4.24","@types/react-dom":"^19.2.3","@tailwindcss/postcss":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/delivery-intel_1.0.0_1771452958304_0.7162472415729768","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"delivery-intel","version":"1.0.1","keywords":["dora","dora-metrics","devops","metrics","github","ci-cd","deployment-frequency","lead-time","change-failure-rate","vulnerability","osv","cli","dashboard","software-delivery","engineering-metrics"],"author":{"name":"ParthibanRajasekaran"},"license":"MIT","_id":"delivery-intel@1.0.1","maintainers":[{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"}],"homepage":"https://github.com/ParthibanRajasekaran/delivery-intel#readme","bugs":{"url":"https://github.com/ParthibanRajasekaran/delivery-intel/issues"},"bin":{"delivery-intel":"bin/delivery-intel.js"},"dist":{"shasum":"4049646aa690e208cf392b1d82d3fed8fe401871","tarball":"https://registry.npmjs.org/delivery-intel/-/delivery-intel-1.0.1.tgz","fileCount":12,"integrity":"sha512-8WB23Y07vEOdmpZMa6n7YhgWySihZRMIoG19zmcjEBkyFwjmWB4V1wNxxWonz48NAEce8sBlpQBk92FIWX+15w==","signatures":[{"sig":"MEYCIQCabr63ZPWuIlv4kwH0oCsYlMCVUDKMKLSSHOYpuD4dDAIhAN34cL2N32tUUCu7X6FlgaYamadD6hdKmhUDVCezmc19","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72244},"main":"./dist/cli/analyzer.js","types":"./dist/cli/analyzer.d.ts","gitHead":"f2d3bedd12abd997035982d237f1e188b4b5ce5f","scripts":{"dev":"next dev","lint":"eslint . --max-warnings 0","test":"vitest run","build":"next build","start":"next start","format":"prettier --write .","prepare":"husky","lint:fix":"eslint . --fix","validate":"npm run lint && npm run typecheck && npm run test","build:cli":"tsc -p tsconfig.cli.json","typecheck":"tsc --noEmit && tsc -p tsconfig.cli.json --noEmit","test:watch":"vitest","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:cli"},"_npmUser":{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"},"repository":{"url":"git+https://github.com/ParthibanRajasekaran/delivery-intel.git","type":"git"},"_npmVersion":"11.6.0","description":"Point it at any GitHub repo — get DORA metrics, vulnerability scan, and a health score. No setup, no tokens for public repos. CLI + web dashboard.","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix --max-warnings 0","prettier --write"],"*.{json,css,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"24.8.0","dependencies":{"next":"^16.1.6","react":"^19.2.4","ioredis":"^5.9.3","date-fns":"^4.1.0","recharts":"^3.7.0","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@octokit/rest":"^22.0.1","framer-motion":"^12.34.2","@octokit/graphql":"^9.0.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","jsdom":"^28.1.0","eslint":"^10.0.0","vitest":"^4.0.18","postcss":"^8.5.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","lint-staged":"^16.2.7","tailwindcss":"^4.2.0","autoprefixer":"^10.4.24","@eslint/eslintrc":"^3.3.3","@types/react-dom":"^19.2.3","typescript-eslint":"^8.56.0","eslint-config-next":"^16.1.6","@tailwindcss/postcss":"^4.2.0","@vitejs/plugin-react":"^5.1.4","eslint-plugin-import":"^2.32.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","@testing-library/jest-dom":"^6.9.1"},"_npmOperationalInternal":{"tmp":"tmp/delivery-intel_1.0.1_1771453713578_0.8629037193644922","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"delivery-intel","version":"1.0.2","keywords":["dora","dora-metrics","devops","metrics","github","ci-cd","deployment-frequency","lead-time","change-failure-rate","vulnerability","osv","cli","dashboard","software-delivery","engineering-metrics"],"author":{"name":"ParthibanRajasekaran"},"license":"MIT","_id":"delivery-intel@1.0.2","maintainers":[{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"}],"homepage":"https://github.com/ParthibanRajasekaran/delivery-intel#readme","bugs":{"url":"https://github.com/ParthibanRajasekaran/delivery-intel/issues"},"bin":{"delivery-intel":"bin/delivery-intel.js"},"dist":{"shasum":"868e0e83e6197750c37458dcdc6d289a1c27b857","tarball":"https://registry.npmjs.org/delivery-intel/-/delivery-intel-1.0.2.tgz","fileCount":12,"integrity":"sha512-RCeTwN2IOMKgVNMKoYDMxbNHMyYykYZWVqYI0vcOpkFWguyZ5hpgtLStIcPct40S5KCxMwIk2WH35aO5RARl8w==","signatures":[{"sig":"MEQCIGDQ/tBx9QJD9ZwXer3Gjf0zn88Js+V+9dUBfYK4aRdcAiBpQUGd2ukAEKPdpDvu9BwNUJ3XYbuX4NOqWsKQyuyZqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75928},"main":"./dist/cli/analyzer.js","types":"./dist/cli/analyzer.d.ts","gitHead":"90152ef9a446ebec334a1369d80f1bc03e491b65","scripts":{"dev":"next dev","lint":"eslint . --max-warnings 15","test":"vitest run","build":"next build","start":"next start","format":"prettier --write .","prepare":"husky","lint:fix":"eslint . --fix","validate":"npm run lint && npm run typecheck && npm run test","build:cli":"tsc -p tsconfig.cli.json","typecheck":"tsc --noEmit && tsc -p tsconfig.cli.json --noEmit","test:watch":"vitest","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:cli"},"_npmUser":{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"},"repository":{"url":"git+https://github.com/ParthibanRajasekaran/delivery-intel.git","type":"git"},"_npmVersion":"11.6.0","description":"Point it at any GitHub repo — get DORA metrics, vulnerability scan, and a health score. No setup, no tokens for public repos. CLI + web dashboard.","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix --max-warnings 15","prettier --write"],"*.{json,css,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"24.8.0","dependencies":{"next":"^16.1.6","react":"^19.2.4","ioredis":"^5.9.3","date-fns":"^4.1.0","recharts":"^3.7.0","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@octokit/rest":"^22.0.1","framer-motion":"^12.34.2","@octokit/graphql":"^9.0.3"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","jsdom":"^28.1.0","eslint":"^10.0.0","vitest":"^4.0.18","postcss":"^8.5.6","prettier":"^3.8.1","@eslint/js":"^10.0.1","lint-staged":"^16.2.7","tailwindcss":"^4.2.0","autoprefixer":"^10.4.24","@eslint/eslintrc":"^3.3.3","@types/react-dom":"^19.2.3","typescript-eslint":"^8.56.0","eslint-config-next":"^16.1.6","@tailwindcss/postcss":"^4.2.0","@vitejs/plugin-react":"^5.1.4","eslint-plugin-import":"^2.32.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","@testing-library/jest-dom":"^6.9.1"},"_npmOperationalInternal":{"tmp":"tmp/delivery-intel_1.0.2_1771454496821_0.32490951643970933","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"delivery-intel","version":"1.3.0","keywords":["dora","dora-metrics","devops","metrics","github","ci-cd","deployment-frequency","lead-time","change-failure-rate","vulnerability","osv","cli","dashboard","software-delivery","engineering-metrics"],"author":{"name":"ParthibanRajasekaran"},"license":"MIT","_id":"delivery-intel@1.3.0","maintainers":[{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"}],"homepage":"https://github.com/ParthibanRajasekaran/delivery-intel#readme","bugs":{"url":"https://github.com/ParthibanRajasekaran/delivery-intel/issues"},"bin":{"delivery-intel":"bin/delivery-intel.js"},"dist":{"shasum":"88ecf02f3e8337b4bb680698f2c65a5e62470474","tarball":"https://registry.npmjs.org/delivery-intel/-/delivery-intel-1.3.0.tgz","fileCount":36,"integrity":"sha512-QHPTtMNd2xgI1OjALlrjpBzNKUo/zwmNajS4Nx1UXImtVZKgc1REGLrBvfuRWSAqn8iqAKp4RvY5xsbIGFMCmQ==","signatures":[{"sig":"MEQCIGiaSyi3Hyb9dx/5dRsuKy0ijVRypPayo2GiZsd9h9pPAiBTmkUTLRV82SyTJmpBpGXOXc2TdaCL3P8SSByyOtj1BQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163185},"main":"./dist/cli/analyzer.js","type":"module","types":"./dist/cli/analyzer.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dcdc6195bab3de2fccff027eb04486d9c5d4c761","scripts":{"dev":"next dev --webpack","lint":"eslint . --max-warnings 15","test":"vitest run","build":"next build --webpack","start":"next start","format":"prettier --write .","jittest":"tsx src/jittest/cli.ts","prepare":"husky","lint:fix":"eslint . --fix","validate":"npm run lint && npm run typecheck && npm run test","build:cli":"tsc -p tsconfig.cli.json","typecheck":"tsc --noEmit && tsc -p tsconfig.cli.json --noEmit","jittest:ci":"tsx src/jittest/cli.ts","test:watch":"vitest","format:check":"prettier --check .","test:jittest":"vitest run src/__tests__/jittest --reporter=verbose","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:cli"},"_npmUser":{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"},"repository":{"url":"git+https://github.com/ParthibanRajasekaran/delivery-intel.git","type":"git"},"_npmVersion":"10.8.2","description":"Point it at any GitHub repo — get DORA metrics, vulnerability scan, and a health score. No setup, no tokens for public repos. CLI + web dashboard.","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix --max-warnings 15","prettier --write"],"*.{json,css,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"boxen":"^8.0.1","chalk":"^5.6.2","date-fns":"^4.1.0","nanospinner":"^1.2.2","@octokit/rest":"^22.0.1","@octokit/graphql":"^9.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","next":"^16.1.6","husky":"^9.1.7","jsdom":"^28.1.0","react":"^19.2.4","eslint":"^10.0.0","vitest":"^4.0.18","ioredis":"^5.9.3","postcss":"^8.5.6","prettier":"^3.8.1","react-is":"^19.2.4","recharts":"^3.7.0","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.2.3","lint-staged":"^16.2.7","tailwindcss":"^4.2.0","@types/react":"^19.2.14","autoprefixer":"^10.4.24","framer-motion":"^12.34.2","@eslint/eslintrc":"^3.3.3","@types/react-dom":"^19.2.3","typescript-eslint":"^8.56.0","eslint-config-next":"^16.1.6","@vitest/coverage-v8":"^4.0.18","@tailwindcss/postcss":"^4.2.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.1.4","eslint-plugin-import":"^2.32.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","@testing-library/jest-dom":"^6.9.1"},"_npmOperationalInternal":{"tmp":"tmp/delivery-intel_1.3.0_1776432463895_0.9765098510821073","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"delivery-intel","version":"1.3.1","keywords":["dora","dora-metrics","devops","metrics","github","ci-cd","deployment-frequency","lead-time","change-failure-rate","mean-time-to-restore","mttr","vulnerability","osv","cli","dashboard","software-delivery","engineering-metrics","developer-productivity","platform-engineering","engineering-effectiveness","dx"],"author":{"name":"ParthibanRajasekaran"},"license":"MIT","_id":"delivery-intel@1.3.1","maintainers":[{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"}],"homepage":"https://github.com/ParthibanRajasekaran/delivery-intel#readme","bugs":{"url":"https://github.com/ParthibanRajasekaran/delivery-intel/issues"},"bin":{"delivery-intel":"bin/delivery-intel.js"},"dist":{"shasum":"3276d1296d24baa51184f0e6d7260a1d29748596","tarball":"https://registry.npmjs.org/delivery-intel/-/delivery-intel-1.3.1.tgz","fileCount":36,"integrity":"sha512-j7HXvJ0CaEpdp0nHKls6T4yiaPKRaHZWnPlSXBCiOufQHgB5HU75rHWawZJzXR4tOf0JACUw8ABfiuw8Z92C4g==","signatures":[{"sig":"MEYCIQDN+GRyReogaVKb5oVVfPx58r6uzwEWpjUCFm5qSMX8kwIhAMPQwO34nAZgHSA6EaBYxhinJWUWrdVOazwJvDmJZaBE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167476},"main":"./dist/cli/analyzer.js","type":"module","types":"./dist/cli/analyzer.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fe9d6875e1395fe68671f4e707dce3c5346a2628","scripts":{"dev":"next dev --webpack","lint":"eslint . --max-warnings 15","test":"vitest run","build":"next build --webpack","start":"next start","format":"prettier --write .","jittest":"tsx src/jittest/cli.ts","prepare":"husky","lint:fix":"eslint . --fix","validate":"npm run lint && npm run typecheck && npm run test","build:cli":"tsc -p tsconfig.cli.json","typecheck":"tsc --noEmit && tsc -p tsconfig.cli.json --noEmit","jittest:ci":"tsx src/jittest/cli.ts","test:watch":"vitest","format:check":"prettier --check .","test:jittest":"vitest run src/__tests__/jittest --reporter=verbose","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:cli"},"_npmUser":{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"},"repository":{"url":"git+https://github.com/ParthibanRajasekaran/delivery-intel.git","type":"git"},"_npmVersion":"10.8.2","description":"DORA metrics, vulnerability scan, and delivery health score for any GitHub repo. One command, no setup, no tokens needed for public repos.","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix --max-warnings 15","prettier --write"],"*.{json,css,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"boxen":"^8.0.1","chalk":"^5.6.2","date-fns":"^4.1.0","nanospinner":"^1.2.2","@octokit/rest":"^22.0.1","@octokit/graphql":"^9.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","next":"^16.1.6","husky":"^9.1.7","jsdom":"^28.1.0","react":"^19.2.4","eslint":"^10.0.0","vitest":"^4.0.18","ioredis":"^5.9.3","postcss":"^8.5.6","prettier":"^3.8.1","react-is":"^19.2.4","recharts":"^3.7.0","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.2.3","lint-staged":"^16.2.7","tailwindcss":"^4.2.0","@types/react":"^19.2.14","autoprefixer":"^10.4.24","framer-motion":"^12.34.2","@eslint/eslintrc":"^3.3.3","@types/react-dom":"^19.2.3","typescript-eslint":"^8.56.0","eslint-config-next":"^16.1.6","@vitest/coverage-v8":"^4.0.18","@tailwindcss/postcss":"^4.2.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.1.4","eslint-plugin-import":"^2.32.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","@testing-library/jest-dom":"^6.9.1"},"_npmOperationalInternal":{"tmp":"tmp/delivery-intel_1.3.1_1776435409234_0.5998148466262749","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"delivery-intel","version":"1.4.0","keywords":["dora","dora-metrics","devops","metrics","github","ci-cd","deployment-frequency","lead-time","change-failure-rate","mean-time-to-restore","mttr","vulnerability","osv","cli","dashboard","software-delivery","engineering-metrics","developer-productivity","platform-engineering","engineering-effectiveness","dx"],"author":{"name":"ParthibanRajasekaran"},"license":"MIT","_id":"delivery-intel@1.4.0","maintainers":[{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"}],"homepage":"https://github.com/ParthibanRajasekaran/delivery-intel#readme","bugs":{"url":"https://github.com/ParthibanRajasekaran/delivery-intel/issues"},"bin":{"delivery-intel":"bin/delivery-intel.js"},"dist":{"shasum":"b8af749f854f54bdda1050e042238ef676ba747d","tarball":"https://registry.npmjs.org/delivery-intel/-/delivery-intel-1.4.0.tgz","fileCount":40,"integrity":"sha512-FaRpzddyx1fZ8tYRagBwvJbxrWnyaGC9lblRJD13gt5WbaN68qiqQx38bFJb61Cr+SqbgIZSfQkF3Mkntn2HGg==","signatures":[{"sig":"MEQCIB72vC9LI/vSsNj8LHANLtJin21q70rolT02A1PoHohkAiAv+TG7+7QG/YnvceAUT8hxYUwQjZPnfur8JZSRyGMxqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179290},"main":"./dist/cli/analyzer.js","type":"module","types":"./dist/cli/analyzer.d.ts","engines":{"node":">=18.0.0"},"gitHead":"65106a67b0d3083ca0875097279fea390cc33a69","scripts":{"dev":"next dev --webpack","lint":"eslint . --max-warnings 15","test":"vitest run","build":"next build --webpack","start":"next start","format":"prettier --write .","jittest":"tsx src/jittest/cli.ts","prepare":"husky","lint:fix":"eslint . --fix","validate":"npm run lint && npm run typecheck && npm run test","build:cli":"tsc -p tsconfig.cli.json","typecheck":"tsc --noEmit && tsc -p tsconfig.cli.json --noEmit","jittest:ci":"tsx src/jittest/cli.ts","test:watch":"vitest","format:check":"prettier --check .","test:jittest":"vitest run src/__tests__/jittest --reporter=verbose","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:cli"},"_npmUser":{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"},"repository":{"url":"git+https://github.com/ParthibanRajasekaran/delivery-intel.git","type":"git"},"_npmVersion":"11.6.0","description":"DORA metrics, vulnerability scan, and delivery health score for any GitHub repo. One command, no setup, no tokens needed for public repos.","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix --max-warnings 15","prettier --write"],"*.{json,css,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"24.8.0","dependencies":{"boxen":"^8.0.1","chalk":"^5.6.2","date-fns":"^4.1.0","nanospinner":"^1.2.2","@octokit/rest":"^22.0.1","@octokit/graphql":"^9.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","next":"^16.1.6","husky":"^9.1.7","jsdom":"^28.1.0","react":"^19.2.4","eslint":"^10.0.0","vitest":"^4.0.18","ioredis":"^5.9.3","postcss":"^8.5.6","prettier":"^3.8.1","react-is":"^19.2.4","recharts":"^3.7.0","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.2.3","lint-staged":"^16.2.7","tailwindcss":"^4.2.0","@types/react":"^19.2.14","autoprefixer":"^10.4.24","framer-motion":"^12.34.2","@eslint/eslintrc":"^3.3.3","@types/react-dom":"^19.2.3","typescript-eslint":"^8.56.0","eslint-config-next":"^16.1.6","@vitest/coverage-v8":"^4.0.18","@tailwindcss/postcss":"^4.2.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.1.4","eslint-plugin-import":"^2.32.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","@testing-library/jest-dom":"^6.9.1"},"_npmOperationalInternal":{"tmp":"tmp/delivery-intel_1.4.0_1776439415553_0.9199695461722937","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"delivery-intel","version":"1.5.0","keywords":["dora","dora-metrics","devops","metrics","github","ci-cd","deployment-frequency","lead-time","change-failure-rate","mean-time-to-restore","mttr","vulnerability","osv","cli","dashboard","software-delivery","engineering-metrics","developer-productivity","platform-engineering","engineering-effectiveness","dx"],"author":{"name":"ParthibanRajasekaran"},"license":"MIT","_id":"delivery-intel@1.5.0","maintainers":[{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"}],"homepage":"https://github.com/ParthibanRajasekaran/delivery-intel#readme","bugs":{"url":"https://github.com/ParthibanRajasekaran/delivery-intel/issues"},"bin":{"delivery-intel":"bin/delivery-intel.js"},"dist":{"shasum":"596c3765fabb5e4bd4d32321d166e99318a7904e","tarball":"https://registry.npmjs.org/delivery-intel/-/delivery-intel-1.5.0.tgz","fileCount":48,"integrity":"sha512-F2MkH4/WbKOgnfjNziRApsIEE+7sfG+cfZlDuBC3d/Kez7CN33bQTyB4LVY3oAQDijFBoGHvr12TEvI0G/GQCg==","signatures":[{"sig":"MEQCIGs9sLtjq+Esqoswae8awAwhDeKn82ZSZd8n4W4Bz6RfAiAV7hyfoHyTyvVe9KGRM/loBd7nExQLNKeJNr84oHE1Aw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234789},"main":"./dist/cli/analyzer.js","type":"module","types":"./dist/cli/analyzer.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c127ee479b3b72e92c0f18ffa0e748bc5d13a687","scripts":{"dev":"next dev --webpack","lint":"eslint . --max-warnings 15","test":"vitest run","build":"next build --webpack","start":"next start","format":"prettier --write .","jittest":"tsx src/jittest/cli.ts","prepare":"husky","lint:fix":"eslint . --fix","validate":"npm run lint && npm run typecheck && npm run test","build:cli":"tsc -p tsconfig.cli.json","typecheck":"tsc --noEmit && tsc -p tsconfig.cli.json --noEmit","jittest:ci":"tsx src/jittest/cli.ts","test:watch":"vitest","format:check":"prettier --check .","test:jittest":"vitest run src/__tests__/jittest --reporter=verbose","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:cli"},"_npmUser":{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"},"repository":{"url":"git+https://github.com/ParthibanRajasekaran/delivery-intel.git","type":"git"},"_npmVersion":"11.6.0","description":"DORA metrics, vulnerability scan, and delivery health score for any GitHub repo. One command, no setup, no tokens needed for public repos.","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix --max-warnings 15","prettier --write"],"*.{json,css,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"24.8.0","dependencies":{"boxen":"^8.0.1","chalk":"^5.6.2","date-fns":"^4.1.0","nanospinner":"^1.2.2","@octokit/rest":"^22.0.1","@octokit/graphql":"^9.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","next":"^16.1.6","husky":"^9.1.7","jsdom":"^28.1.0","react":"^19.2.4","eslint":"^10.0.0","vitest":"^4.0.18","ioredis":"^5.9.3","postcss":"^8.5.6","prettier":"^3.8.1","react-is":"^19.2.4","recharts":"^3.7.0","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.2.3","lint-staged":"^16.2.7","tailwindcss":"^4.2.0","@types/react":"^19.2.14","autoprefixer":"^10.4.24","framer-motion":"^12.34.2","@eslint/eslintrc":"^3.3.3","@types/react-dom":"^19.2.3","typescript-eslint":"^8.56.0","eslint-config-next":"^16.1.6","@vitest/coverage-v8":"^4.0.18","@tailwindcss/postcss":"^4.2.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.1.4","eslint-plugin-import":"^2.32.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","@testing-library/jest-dom":"^6.9.1"},"_npmOperationalInternal":{"tmp":"tmp/delivery-intel_1.5.0_1776444026496_0.9544324494280139","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"delivery-intel","version":"1.6.0","keywords":["dora","dora-metrics","devops","metrics","github","ci-cd","deployment-frequency","lead-time","change-failure-rate","mean-time-to-restore","mttr","vulnerability","osv","cli","dashboard","software-delivery","engineering-metrics","developer-productivity","platform-engineering","engineering-effectiveness","dx"],"author":{"name":"ParthibanRajasekaran"},"license":"MIT","_id":"delivery-intel@1.6.0","maintainers":[{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"}],"homepage":"https://github.com/ParthibanRajasekaran/delivery-intel#readme","bugs":{"url":"https://github.com/ParthibanRajasekaran/delivery-intel/issues"},"bin":{"delivery-intel":"bin/delivery-intel.js"},"dist":{"shasum":"0da56eeb9d88149396f90baee28e28563f6dabd3","tarball":"https://registry.npmjs.org/delivery-intel/-/delivery-intel-1.6.0.tgz","fileCount":48,"integrity":"sha512-J79yFbi9arfHZt4fUsYOcQGQLGW7UGjRndlU5U+jX4B6brwKGGCjwJKhTIoW9nJgkbqn/NLMxkEwbQzTqm/atQ==","signatures":[{"sig":"MEUCIFHVn7Y+eAKKB4L4Plwtlk8pRNpyi+3ZRKBToIEWZvoeAiEAl8zqsJoJSXA3R4vMVgpPIhvDdBsIA8WPwDOxPcp17KQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244528},"main":"./dist/cli/analyzer.js","type":"module","types":"./dist/cli/analyzer.d.ts","engines":{"node":">=18.0.0"},"gitHead":"56cc511f1569b1e1a337c54570cbce0f8d96b656","scripts":{"dev":"next dev --webpack","lint":"eslint . --max-warnings 15","test":"vitest run","build":"next build --webpack","start":"next start","format":"prettier --write .","jittest":"tsx src/jittest/cli.ts","prepare":"husky","lint:fix":"eslint . --fix","validate":"npm run lint && npm run typecheck && npm run test","build:cli":"tsc -p tsconfig.cli.json","typecheck":"tsc --noEmit && tsc -p tsconfig.cli.json --noEmit","jittest:ci":"tsx src/jittest/cli.ts","test:watch":"vitest","format:check":"prettier --check .","test:jittest":"vitest run src/__tests__/jittest --reporter=verbose","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:cli"},"_npmUser":{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"},"overrides":{"minimatch":">=3.1.3"},"repository":{"url":"git+https://github.com/ParthibanRajasekaran/delivery-intel.git","type":"git"},"_npmVersion":"10.8.2","description":"DORA metrics, vulnerability scan, and delivery health score for any GitHub repo. One command, no setup, no tokens needed for public repos.","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix --max-warnings 15","prettier --write"],"*.{json,css,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"boxen":"^8.0.1","chalk":"^5.6.2","date-fns":"^4.1.0","nanospinner":"^1.2.2","@octokit/rest":"^22.0.1","@octokit/graphql":"^9.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","next":"^16.1.6","husky":"^9.1.7","jsdom":"^28.1.0","react":"^19.2.4","eslint":"^10.0.0","vitest":"^4.0.18","ioredis":"^5.9.3","postcss":"^8.5.6","prettier":"^3.8.1","react-is":"^19.2.4","recharts":"^3.7.0","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.2.3","lint-staged":"^16.2.7","tailwindcss":"^4.2.0","@types/react":"^19.2.14","autoprefixer":"^10.4.24","framer-motion":"^12.34.2","@eslint/eslintrc":"^3.3.3","@types/react-dom":"^19.2.3","typescript-eslint":"^8.56.0","eslint-config-next":"^16.1.6","@vitest/coverage-v8":"^4.0.18","@tailwindcss/postcss":"^4.2.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.1.4","eslint-plugin-import":"^2.32.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","@testing-library/jest-dom":"^6.9.1"},"_npmOperationalInternal":{"tmp":"tmp/delivery-intel_1.6.0_1776446438340_0.6067700543630794","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"delivery-intel","version":"1.7.0","keywords":["dora","dora-metrics","devops","metrics","github","ci-cd","deployment-frequency","lead-time","change-failure-rate","mean-time-to-restore","mttr","vulnerability","osv","cli","dashboard","software-delivery","engineering-metrics","developer-productivity","platform-engineering","engineering-effectiveness","dx","forensics","verdict","repo-intelligence"],"author":{"name":"ParthibanRajasekaran"},"license":"MIT","_id":"delivery-intel@1.7.0","maintainers":[{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"}],"homepage":"https://github.com/ParthibanRajasekaran/delivery-intel#readme","bugs":{"url":"https://github.com/ParthibanRajasekaran/delivery-intel/issues"},"bin":{"delivery-intel":"bin/delivery-intel.js"},"dist":{"shasum":"f2aa27c62e7f8d6ec3163316f65e31533507831b","tarball":"https://registry.npmjs.org/delivery-intel/-/delivery-intel-1.7.0.tgz","fileCount":48,"integrity":"sha512-kVjXu33vo8vAhkfOSsS0wHkE6reybWoZRCRm+UWbhOVKwJRVsj8U94G14e5eZJGNrVo7eahefb16bXxNNuScxg==","signatures":[{"sig":"MEUCIGK+AFenaXrkDYnaI9FNyAHpKiEYpb+YPDoOTaRdH/6/AiEAtKD3nULpJbKPw2Mpk9vzrHQKzYrTnxwVrjkyVzltCVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":254041},"main":"./dist/cli/analyzer.js","type":"module","types":"./dist/cli/analyzer.d.ts","engines":{"node":">=18.0.0"},"gitHead":"91d0e4e35b8d46f916d96c0b36440e432c2af17d","scripts":{"dev":"next dev --webpack","lint":"eslint . --max-warnings 15","test":"vitest run","build":"next build --webpack","start":"next start","format":"prettier --write .","jittest":"tsx src/jittest/cli.ts","prepare":"husky","lint:fix":"eslint . --fix","validate":"npm run lint && npm run typecheck && npm run test","build:cli":"tsc -p tsconfig.cli.json","typecheck":"tsc --noEmit && tsc -p tsconfig.cli.json --noEmit","jittest:ci":"tsx src/jittest/cli.ts","test:watch":"vitest","format:check":"prettier --check .","test:jittest":"vitest run src/__tests__/jittest --reporter=verbose","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:cli"},"_npmUser":{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"},"overrides":{"minimatch":">=3.1.3"},"repository":{"url":"git+https://github.com/ParthibanRajasekaran/delivery-intel.git","type":"git"},"_npmVersion":"10.8.2","description":"Evidence-driven repo intelligence: DORA metrics, forensic signals, vulnerability scan, and delivery verdict for any GitHub repo. One command, no setup.","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix --max-warnings 15","prettier --write"],"*.{json,css,md,yml,yaml}":["prettier --write"]},"_nodeVersion":"20.20.2","dependencies":{"boxen":"^8.0.1","chalk":"^5.6.2","date-fns":"^4.1.0","nanospinner":"^1.2.2","@octokit/rest":"^22.0.1","@octokit/graphql":"^9.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","next":"^16.1.6","husky":"^9.1.7","jsdom":"^28.1.0","react":"^19.2.4","eslint":"^10.0.0","vitest":"^4.0.18","ioredis":"^5.9.3","postcss":"^8.5.6","prettier":"^3.8.1","react-is":"^19.2.4","recharts":"^3.7.0","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.2.3","lint-staged":"^16.2.7","tailwindcss":"^4.2.0","@types/react":"^19.2.14","autoprefixer":"^10.4.24","framer-motion":"^12.34.2","@eslint/eslintrc":"^3.3.3","@types/react-dom":"^19.2.3","typescript-eslint":"^8.56.0","eslint-config-next":"^16.1.6","@vitest/coverage-v8":"^4.0.18","@tailwindcss/postcss":"^4.2.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.1.4","eslint-plugin-import":"^2.32.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","@testing-library/jest-dom":"^6.9.1"},"_npmOperationalInternal":{"tmp":"tmp/delivery-intel_1.7.0_1776467708505_0.5867809309357159","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"_id":"delivery-intel@1.8.1","bin":{"delivery-intel":"bin/delivery-intel.js"},"dist":{"shasum":"91eb5d3f8ee7ab5c652516174ca8f266a2f85773","tarball":"https://registry.npmjs.org/delivery-intel/-/delivery-intel-1.8.1.tgz","fileCount":56,"integrity":"sha512-GONaj4Iw1qcxVxMnn1l+jM06tH0nR/7nlAJ1Klp/96LMyaM5Tc1Rm6Wr5UY8dhICDqkX53/cTb4Xs2zF2K6Vtg==","signatures":[{"sig":"MEYCIQCWDZmjblDmNk7P2kPa3I7Dt99SrC5oj6r8FBIm2uMH4QIhAMYtoLEuLi8+pBKHiY598ivt/idhylYhDgpfsMpNL4w/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDLHsg9VsZ6HV9yjqflabVClc93eVAymfjBoZGSHsvaTAiBBFv490wVH8nk3MnmrrhfSY4G/iWfK8ShDHDBmi8+KbA=="}],"unpackedSize":294314},"main":"./dist/cli/analyzer.js","name":"delivery-intel","type":"module","types":"./dist/cli/analyzer.d.ts","author":{"name":"ParthibanRajasekaran"},"engines":{"node":">=18.0.0"},"gitHead":"a399a7e7ef726e6a5ef05b5be3e2ae5cd21d5c7f","license":"MIT","scripts":{"dev":"next dev --webpack","lint":"eslint . --max-warnings 15","test":"vitest run","build":"next build --webpack","start":"next start","format":"prettier --write .","jittest":"tsx src/jittest/cli.ts","prepare":"husky","lint:fix":"eslint . --fix","validate":"npm run lint && npm run typecheck && npm run test","build:cli":"tsc -p tsconfig.cli.json","typecheck":"tsc --noEmit && tsc -p tsconfig.cli.json --noEmit","jittest:ci":"tsx src/jittest/cli.ts","test:watch":"vitest","format:check":"prettier --check .","test:jittest":"vitest run src/__tests__/jittest --reporter=verbose","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:cli"},"version":"1.8.1","_npmUser":{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"},"keywords":["dora","dora-metrics","devops","metrics","github","ci-cd","deployment-frequency","lead-time","change-failure-rate","mean-time-to-restore","mttr","vulnerability","osv","cli","dashboard","software-delivery","engineering-metrics","developer-productivity","platform-engineering","engineering-effectiveness","dx","forensics","verdict","repo-intelligence"],"overrides":{"minimatch":">=3.1.3"},"_npmVersion":"11.6.0","description":"Evidence-driven repo intelligence: DORA metrics, forensic signals, vulnerability scan, and delivery verdict for any GitHub repo. One command, no setup.","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix --max-warnings 15","prettier --write"],"*.{json,css,md,yml,yaml}":["prettier --write"]},"maintainers":[{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"}],"_nodeVersion":"24.8.0","dependencies":{"boxen":"^8.0.1","chalk":"^5.6.2","date-fns":"^4.1.0","nanospinner":"^1.2.2","@octokit/rest":"^22.0.1","@octokit/graphql":"^9.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","next":"^16.1.6","husky":"^9.1.7","jsdom":"^28.1.0","react":"^19.2.4","eslint":"^10.0.0","vitest":"^4.0.18","ioredis":"^5.9.3","postcss":"^8.5.6","prettier":"^3.8.1","react-is":"^19.2.4","recharts":"^3.7.0","react-dom":"^19.2.4","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.2.3","lint-staged":"^16.2.7","tailwindcss":"^4.2.0","@types/react":"^19.2.14","autoprefixer":"^10.4.24","framer-motion":"^12.34.2","@eslint/eslintrc":"^3.3.3","@types/react-dom":"^19.2.3","typescript-eslint":"^8.56.0","eslint-config-next":"^16.1.6","@vitest/coverage-v8":"^4.0.18","@tailwindcss/postcss":"^4.2.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.1.4","eslint-plugin-import":"^2.32.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","@testing-library/jest-dom":"^6.9.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/delivery-intel_1.8.1_1789075180935_0.6899129690198293"}}},"time":{"created":"2026-02-18T22:15:58.195Z","modified":"2026-09-10T21:19:41.184Z","1.0.0":"2026-02-18T22:15:58.457Z","1.0.1":"2026-02-18T22:28:33.745Z","1.0.2":"2026-02-18T22:41:36.968Z","1.3.0":"2026-04-17T13:27:44.060Z","1.3.1":"2026-04-17T14:16:49.388Z","1.4.0":"2026-04-17T15:23:35.701Z","1.5.0":"2026-04-17T16:40:26.643Z","1.6.0":"2026-04-17T17:20:38.546Z","1.7.0":"2026-04-17T23:15:08.702Z","1.8.1":"2026-09-10T21:19:41.031Z"},"author":{"name":"ParthibanRajasekaran"},"license":"MIT","keywords":["dora","dora-metrics","devops","metrics","github","ci-cd","deployment-frequency","lead-time","change-failure-rate","mean-time-to-restore","mttr","vulnerability","osv","cli","dashboard","software-delivery","engineering-metrics","developer-productivity","platform-engineering","engineering-effectiveness","dx","forensics","verdict","repo-intelligence"],"description":"Evidence-driven repo intelligence: DORA metrics, forensic signals, vulnerability scan, and delivery verdict for any GitHub repo. One command, no setup.","maintainers":[{"name":"parthibanrajasekaran","email":"rajasekaran.parthiban7@gmail.com"}],"readme":"<div align=\"center\">\n\n# delivery-intel\n\n**The repo trust engine for GitHub.**\n\n*Evidence-driven intelligence that tells you whether a repo is safe to adopt, healthy to change, and disciplined enough to trust in CI.*\n\n[![npm version](https://img.shields.io/npm/v/delivery-intel?color=cb3837&label=npm&logo=npm&logoColor=white)](https://www.npmjs.com/package/delivery-intel)\n[![npm downloads](https://img.shields.io/npm/dw/delivery-intel?color=cb3837&logo=npm&logoColor=white)](https://www.npmjs.com/package/delivery-intel)\n[![CI](https://img.shields.io/github/actions/workflow/status/ParthibanRajasekaran/delivery-intel/ci.yml?branch=main&label=CI&logo=githubactions&logoColor=white)](https://github.com/ParthibanRajasekaran/delivery-intel/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5-3178c6?logo=typescript&logoColor=white)](https://www.typescriptlang.org)\n[![Node 18+](https://img.shields.io/badge/node-18%2B-339933?logo=nodedotjs&logoColor=white)](https://nodejs.org)\n\n</div>\n\n> delivery-intel answers three questions — with evidence, not guesses:\n> 1. **Should I trust this repo?** (trust score, 6 trust dimensions, 15 forensic signals)\n> 2. **Does it ship well and fail safely?** (DORA metrics, vulnerability scan, change fail rate)\n> 3. **How does it compare?** (side-by-side comparison of any two repos)\n>\n> Every metric shows its source, sample size, and confidence level. No fake precision.\n\n---\n\n## ⚡ Quick Start\n\n```bash\n# Trust verdict — should I adopt this repo? (trust score, dimensions, forensics)\nnpx delivery-intel facebook/react --mode adopt\n\n# Compare two repos side-by-side\nnpx delivery-intel --compare facebook/react vercel/next.js\n\n# Full delivery health check (v2 engine)\nnpx delivery-intel facebook/react --v2\n\n# Classic metrics dump (v1 engine)\nnpx delivery-intel facebook/react\n```\n\n```\n┌──────────────────────────────────────────────────────────────┐\n│  facebook/react                                              │\n│  Grade A-   Score 91/100   Confidence high                  │\n│  Trend ↑ +4 pts                                             │\n└──────────────────────────────────────────────────────────────┘\n\n✓   NO POLICY VIOLATIONS\n──────────────────────────────────────────────────────────────\n  ✓ All delivery health policies are passing.\n\nMETRICS  (source · sample · confidence)\n──────────────────────────────────────────────────────────────\n  ◆ Deploy Frequency       12.4/wk  [high]  deployment_statuses\n  ◆ Change Lead Time       3.2h     [high]  commit_to_deploy (84 PRs)\n  ● Recovery Time          0.8h     [med]   deployment_failures\n  ◆ Change Fail Rate       4.8%     [high]  deployment_statuses\n  ● Pipeline Failures      8.2%     [high]  workflow_runs (52 runs)\n\nSIGNAL QUALITY\n──────────────────────────────────────────────────────────────\n  ◈ Production signal strength: high\n  ✓ Scanned manifests: npm (package.json), Go (go.mod)\n\nSECURITY\n──────────────────────────────────────────────────────────────\n  ✓ No known vulnerabilities found in scanned manifests\n```\n\n> Works with full URLs too: `npx delivery-intel https://github.com/vercel/next.js --v2`\n\n---\n\n## Why DORA metrics matter\n\nGoogle's [2024 DORA Report](https://cloud.google.com/blog/products/devops-sre/announcing-the-2024-dora-report) (32,000+ respondents, 10 years of data):\n\n| Metric | Elite teams | Low performers | Gap |\n|--------|------------|----------------|-----|\n| **Deploy Frequency** | On-demand (multiple/day) | < once per 6 months | **973×** |\n| **Lead Time for Changes** | < 1 hour | 1 – 6 months | **6,570×** |\n| **Change Failure Rate** | 0–15% | 46–60% | — |\n| **Time to Restore** | < 1 hour | 1 week – 1 month | **6,570×** |\n\nElite teams are **2× more likely to meet reliability targets** and **1.8× more likely to meet business goals** (DORA 2024).\n\n---\n\n  Lead Time            ★ Elite\n  3.2 hours median  (0.1 days)\n\n  Change Failure Rate  ● High\n  4.8%  (2 failed / 42 total runs)\n\n  ◈  Vulnerability Scan  (OSV.dev)\n  ────────────────────────────────────────────────────────\n  ✓ No known vulnerabilities found\n\n  ◈  Suggestions\n  ────────────────────────────────────────────────────────\n  ✓ Looking good, no critical issues detected\n```\n\n> Works with full URLs too: `npx delivery-intel https://github.com/vercel/next.js`\n\n---\n\n## What It Measures\n\n| Metric | What it tells you | Source | Confidence |\n|--------|-------------------|--------|------------|\n| **Deploy Frequency** | How often code ships to production | Deployment statuses → deploys → Actions → PRs | Waterfall |\n| **Change Lead Time** | Commit → production (PR flow as fallback) | Deployments + commits | High / Low |\n| **Change Fail Rate** | % of deployments that failed or rolled back | Deployment statuses + heuristics | High / Low |\n| **Recovery Time** | Time from failure to successful recovery | Deployment failures + workflow runs | High / Low |\n| **Pipeline Failure Rate** | CI workflow run reliability (distinct from CFR) | Workflow Runs API | High |\n| **Deployment Rework Rate** | Rollback/revert/hotfix rate (inferred) | PR titles + labels + deployment refs | Low (flagged) |\n| **Vulnerabilities** | Known CVEs across 7 manifest ecosystems | [OSV.dev](https://osv.dev) batch API | — |\n| **Delivery Score** | Confidence-weighted composite (0–100) | All of the above | Aggregate |\n\n> Every metric exposes: data source · sample size · lookback window · confidence level.\n> Low-confidence signals contribute less to the composite score — no fake precision.\n\nSupported manifest ecosystems: **npm** · **pip** · **Go modules** · **Poetry** · **pnpm** · **Cargo** · **RubyGems**\n\n---\n\n## 🔍 Trust Engine\n\nThe trust engine (`--mode adopt`) computes a **Trust Score (0–100)** across 6 weighted dimensions, powered by 15 forensic signal detectors:\n\n| Dimension | Weight | Key signals |\n|-----------|--------|-------------|\n| **Maintenance freshness** | 1.0 | Days since last commit/release, commit cadence |\n| **CI reliability** | 0.9 | Pipeline failure rate, CI flakiness across workflows |\n| **Vulnerability exposure** | 0.9 | Critical/high CVE density from OSV.dev scan |\n| **Release hygiene** | 0.8 | Semver compliance, conventional commits, changelog |\n| **Contributor concentration** | 0.8 | Bus factor — single-maintainer risk |\n| **Change safety** | 0.7 | Rollback signals, rework density, review latency |\n\nTrust levels: **high** (≥75) · **moderate** (≥45) · **low** (<45) · **insufficient-evidence** (too few signals)\n\n### Compare mode\n\n```bash\nnpx delivery-intel --compare facebook/react vercel/next.js\nnpx delivery-intel --compare facebook/react vercel/next.js --json\n```\n\nRuns the trust engine on both repos and produces a structured comparison: per-dimension deltas, metric tier diffs, unique forensic signals, and a winner verdict.\n\n### Fix Packs with Trust Gain\n\nEvery fix pack now includes a **trust gain estimate** — how much each fix would improve the trust score:\n\n```jsonc\n{\n  \"id\": \"fix-missing-dependabot\",\n  \"title\": \"Enable Dependabot\",\n  \"trustGain\": 15,          // estimated trust score improvement\n  \"rationale\": \"Automated dependency updates reduce vulnerability exposure...\"\n}\n```\n\n---\n\n## Usage\n\n### CLI (zero install)\n\n```bash\n# Verdict: grade, confidence, policy violations, evidence chain (v2 engine)\nnpx delivery-intel facebook/react --v2\n\n# Classic metrics output (v1 engine — backwards compatible)\nnpx delivery-intel facebook/react\n\n# Compare last 30 days vs prior 30 days\nnpx delivery-intel vercel/next.js --trend\n\n# Include workflow strain analysis\nnpx delivery-intel vercel/next.js --risk\n\n# AI-powered executive narrative (requires LLM key — falls back to template)\nnpx delivery-intel vercel/next.js --narrative\n\n# JSON output (v2 includes full evidence chain + policy result)\nnpx delivery-intel vercel/next.js --v2 --json\n\n# Save report to file\nnpx delivery-intel vercel/next.js --v2 --json --output report.json\n```\n\n### All flags\n\n| Flag | Description |\n|------|-------------|\n| `--v2` | Evidence-driven engine with grade, confidence, forensics, and policy |\n| `--mode <mode>` | Analysis mode: `oss`, `adopt`, `pr`, `exec`, `platform` (implies `--v2`) |\n| `--pr-comment` | Write a PR guardrail comment to `delivery-intel-pr-comment.md` (use with `--v2`) |\n| `--fail-below N` | Exit code 2 if delivery score is below N |\n| `--block` | Enable blocking violations (use with `--v2 --fail-below`) |\n| `--compare` | Compare two repos side-by-side: `--compare repoA repoB` (implies `--v2`, defaults to adopt mode) |\n| `--json` | Output raw JSON instead of the formatted terminal report |\n| `--output <file>` | Write JSON to a file (can combine with `--json`) |\n| `--trend` | Show 30-day vs prior-30-day deltas for all metrics |\n| `--risk` | Include workflow strain analysis (velocity + stability signal) |\n| `--narrative` | Generate an executive summary (LLM or template fallback) |\n| `--token <token>` | GitHub token — prefer `gh auth login` instead |\n| `--no-spinner` | Disable the scanning animation (useful in CI logs) |\n| `--version` | Print version |\n| `--help` | Show help |\n\n### Web Dashboard\n\n```bash\ngit clone https://github.com/ParthibanRajasekaran/delivery-intel.git\ncd delivery-intel\nnpm install\nnpm run dev\n# → http://localhost:3000\n```\n\nPaste a repo URL and get an animated dashboard with score ring, DORA cards, charts, vulnerability table, and suggestions.\n\n### Docker\n\n```bash\n# Dashboard\ndocker compose up dashboard\n\n# CLI\nREPO=facebook/react docker compose run --rm cli\n```\n\n---\n\n## 📦 JSON Output Schema\n\nPass `--json` (or `--json --output report.json`) to get machine-readable output.\n\n```jsonc\n{\n  \"repo\": { \"owner\": \"vercel\", \"repo\": \"next.js\" },\n  \"fetchedAt\": \"2026-04-17T12:00:00.000Z\",\n  \"overallScore\": 87,                          // 0–100\n  \"doraMetrics\": {\n    \"deploymentFrequency\": {\n      \"deploymentsPerWeek\": 12.4,\n      \"rating\": \"Elite\",                       // Elite | High | Medium | Low\n      \"source\": \"merged_prs_fallback\"          // deployments_api | merged_prs_fallback\n    },\n    \"leadTimeForChanges\": {\n      \"medianHours\": 3.2,\n      \"rating\": \"Elite\"\n    },\n    \"changeFailureRate\": {\n      \"percentage\": 4.8,\n      \"failedRuns\": 2,\n      \"totalRuns\": 42,\n      \"rating\": \"High\"\n    }\n  },\n  \"vulnerabilities\": [\n    {\n      \"packageName\": \"lodash\",\n      \"currentVersion\": \"4.17.15\",\n      \"vulnId\": \"GHSA-xxxx-xxxx-xxxx\",\n      \"summary\": \"Prototype pollution\",\n      \"severity\": \"high\",                      // critical | high | medium | low\n      \"aliases\": [\"CVE-2021-23337\"],\n      \"fixedVersion\": \"4.17.21\"\n    }\n  ],\n  \"suggestions\": [\n    {\n      \"category\": \"reliability\",               // performance | reliability | security\n      \"severity\": \"high\",                      // high | medium | low\n      \"title\": \"High Pipeline Failure Rate\",\n      \"description\": \"...\",\n      \"actionItems\": [\"...\"]\n    }\n  ],\n  \"dailyDeployments\": [0, 1, 2, 3, 1, 2, 3], // last 7 days, index 0 = 6 days ago\n  // present only with --trend\n  \"trend\": {\n    \"windowDays\": 30,\n    \"current\":  { \"deploymentsPerWeek\": 12.4, \"leadTimeHours\": 3.2, \"changeFailureRate\": 4.8, \"score\": 87 },\n    \"prior\":    { \"deploymentsPerWeek\": 9.1,  \"leadTimeHours\": 5.6, \"changeFailureRate\": 6.2, \"score\": 78 },\n    \"deltas\":   { \"deploymentsPerWeek\": 3.3,  \"leadTimeHours\": -2.4, \"changeFailureRate\": -1.4, \"score\": 9 }\n  },\n  // present only with --risk\n  \"riskScore\": {\n    \"score\": 42,\n    \"level\": \"moderate\",                       // low | moderate | high | critical\n    \"cycleTimeDelta\": 0.12,\n    \"failureRateDelta\": -0.05,\n    \"sentimentMultiplier\": 1.0,\n    \"summary\": \"...\"\n  }\n}\n```\n\n---\n\n## 🔐 Authentication\n\n| Method | Setup | Best for |\n|--------|-------|----------|\n| **None** | Just run it | Public repos (60 req/hr) |\n| **`gh auth login`** | `brew install gh && gh auth login` | Daily use, token stays in OS keychain ✨ |\n| **`GITHUB_TOKEN`** | `export GITHUB_TOKEN=ghp_...` | CI environments |\n| **`--token`** | `--token ghp_...` | Quick one-off (avoid in CI) |\n\nToken resolution order: `--token` flag → `GITHUB_TOKEN` env → `gh auth token`\n\n> **Private repos** require a token with `repo` scope. For CI, use `${{ secrets.GITHUB_TOKEN }}`. It's auto-scoped and expires per job.\n\n---\n\n## CI Integration\n\n### GitHub Actions Marketplace action\n\nThe easiest way — use the action directly:\n\n```yaml\n# .github/workflows/delivery-intel.yml\nname: Delivery Health Check\n\non:\n  push:\n    branches: [main]\n  pull_request:\n\njobs:\n  analyze:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: ParthibanRajasekaran/delivery-intel@v1.6.0\n        with:\n          fail-below: '40'   # fail the job if score drops below 40\n```\n\nOutputs available after the step: `score`, `deploy-frequency`, `lead-time`, `change-failure-rate`, `mean-time-to-restore`.\n\n### Evidence-backed PR guardrail (v2 engine)\n\nPosts a policy-aware comment on every PR — no block unless a real threshold is breached:\n\n```yaml\n    steps:\n      - name: Delivery Health Check\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: |\n          npx delivery-intel@latest ${{ github.repository }} \\\n            --v2 \\\n            --pr-comment \\\n            --fail-below 40 \\\n            --no-spinner\n\n      - name: Post PR Comment\n        if: always() && github.event_name == 'pull_request'\n        env:\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: |\n          gh pr comment ${{ github.event.pull_request.number }} \\\n            --body-file delivery-intel-pr-comment.md \\\n            --repo ${{ github.repository }}\n```\n\nThe comment leads with a verdict (`✅ No block` / `⚠️ Warning` / `🚫 BLOCKED`), followed by a collapsible metrics table with source and confidence for every data point.\n\n### npx (custom pipeline)\n\n```yaml\n    steps:\n      - name: Run delivery-intel\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: npx delivery-intel@latest ${{ github.repository }} --v2 --json --output report.json\n\n      - name: Check health score\n        run: |\n          SCORE=$(jq '.scores.delivery.score' report.json)\n          echo \"Health score: $SCORE / 100\"\n          if (( $(echo \"$SCORE < 40\" | bc -l) )); then\n            echo \"::error::Score $SCORE is below threshold (40)\"\n            exit 1\n          fi\n```\n\n---\n\n## 🏅 Badge\n\nOnce you have the dashboard deployed, you can show a live delivery score in any README:\n\n```markdown\n[![Delivery Score](https://your-deployment-url/api/badge?repo=owner/repo)](https://github.com/ParthibanRajasekaran/delivery-intel)\n```\n\nThe `GET /api/badge?repo=owner/repo` endpoint returns a [Shields.io endpoint-badge](https://shields.io/badges/endpoint-badge) payload. Score maps to color: `< 20` red → `< 40` orange → `< 60` yellow → `< 80` green → `≥ 80` bright green. Results cached 5 minutes.\n\n> **Self-hosting**: deploy the dashboard (`npm run build && npm start` or `docker compose up dashboard`) and replace `your-deployment-url`.\n\n---\n\n## 🏗️ Architecture\n\n```\n┌──────────────────────────────────────────────────────────────┐\n│                      delivery-intel                          │\n├──────────────┬───────────────┬───────────────────────────────┤\n│   CLI        │   Dashboard   │   CI Workflow / Action        │\n│  (npx)       │  (Next.js)    │   (action.yml)                │\n├──────────────┴───────────────┴───────────────────────────────┤\n│    Renderers (terminal, JSON, PR comment, compare output)    │\n├──────────────────────────────────────────────────────────────┤\n│  Trust Engine  ·  Compare Engine  ·  Verdict Engine          │\n│  (6 dimensions, 15 signals, trust score 0–100)               │\n├──────────┬────────────┬──────────────┬───────────────────────┤\n│ Scoring  │ Policies   │  Fix Packs   │  Recommendations      │\n│ (conf-   │ (gates,    │  (trust gain │  (ranked actions)     │\n│  weighted)│  blocking) │   estimates) │                       │\n├──────────┴────────────┴──────────────┴───────────────────────┤\n│  DORA Metrics (6) · Confidence · Evidence Sources · Caveats  │\n├──────────────────────────────────────────────────────────────┤\n│       Normaliser (raw API → typed EvidenceEvent stream)       │\n├──────────┬────────────┬──────────────────────────────────────┤\n│ GitHub   │ OSV.dev    │  Extractors (7 ecosystems)           │\n│ REST API │ Vuln API   │  npm·pip·Go·Poetry·pnpm·Cargo·Gems  │\n└──────────┴────────────┴──────────────────────────────────────┘\n```\n\n---\n\n## 🛠 Tech Stack\n\n<table>\n<tr>\n<td><strong>Runtime</strong></td>\n<td>TypeScript · Node.js 18+ · Next.js (App Router)</td>\n</tr>\n<tr>\n<td><strong>GitHub</strong></td>\n<td><code>@octokit/rest</code> · <code>@octokit/graphql</code></td>\n</tr>\n<tr>\n<td><strong>Visualization</strong></td>\n<td>Recharts · Framer Motion · Tailwind CSS</td>\n</tr>\n<tr>\n<td><strong>Security</strong></td>\n<td>OSV.dev (free, no auth)</td>\n</tr>\n<tr>\n<td><strong>Caching</strong></td>\n<td>ioredis (optional, degrades gracefully)</td>\n</tr>\n<tr>\n<td><strong>Quality</strong></td>\n<td>ESLint · Prettier · Husky · Vitest · GitHub Actions CI</td>\n</tr>\n</table>\n\n---\n\n## AIDT — Canary Trust Scoring\n\nAI tools accelerate delivery, but they introduce a **Velocity Paradox**: the same tooling that lets a developer ship more code per day also reduces the natural review friction that catches subtle regressions. A PR co-authored by Copilot or Claude may contain highly regular, syntactically correct code that passes linting and unit tests but encodes wrong assumptions — and because the code looks polished, reviewers spend less time on it. AIDT (AI-Integrated Delivery Telemetry) makes this risk visible by combining an AI authorship signal with a review density measurement and mapping both to a recommended canary deployment window.\n\n### CLI usage\n\n```bash\n# Standalone — analyse a single PR\nnpx delivery-intel owner/repo --aidt --pr 142\n\n# Combined with v2 engine — full delivery health + canary trust\nnpx delivery-intel owner/repo --v2 --aidt --pr 142\n\n# JSON output\nnpx delivery-intel owner/repo --aidt --pr 142 --format json\n```\n\nSet `COPILOT_ORG_TOKEN` in your environment to enable Heuristic 3 (Copilot acceptance rate). Without it the heuristic is skipped and its weight is redistributed proportionally across the other two signals.\n\n### Output shape\n\n| Field | Type | Description |\n|---|---|---|\n| `pr_number` | `number` | The PR that was analysed |\n| `ai_authorship_pct` | `number` (0–1) | Combined AI authorship probability |\n| `review_time_per_loc` | `number` | Seconds of review time per line changed |\n| `baseline_density` | `number` | Rolling 90-day median s/loc (or fallback) |\n| `risk_weight` | `number` (0–1, 3dp) | Composite risk weight |\n| `canary_duration_minutes` | `30 \\| 60 \\| 240` | Recommended canary window |\n| `risk_tier` | `\"low\" \\| \"medium\" \\| \"high\"` | Human-readable tier |\n| `authorship_signals.description_match` | `boolean` | H1: AI phrase found in PR title/body |\n| `authorship_signals.diff_entropy_score` | `number` | H2: diff regularity score (high = AI-like) |\n| `authorship_signals.copilot_acceptance_rate` | `number \\| null` | H3: org-level Copilot acceptance rate (null if unavailable) |\n| `baseline_source` | `\"computed\" \\| \"fallback\"` | Whether baseline was calculated or defaulted |\n| `recommendation` | `string` | Human-readable deployment guidance |\n\n### BASELINE\\_DENSITY\n\n`BASELINE_DENSITY` is the rolling 90-day median of `review_time_seconds / lines_changed` computed from merged PRs in the target repo that contain no AI authorship signals (description patterns, Copilot attribution, etc.). It answers the question: *how much review attention does a human-authored change in this repo typically receive per line?*\n\nIf fewer than 10 qualifying PRs exist in the 90-day window, the module falls back to **6.0 seconds/line** — a conservative estimate derived from typical open-source PR review patterns.\n\n### Calibration note\n\n> The thresholds used in AIDT (risk weight 0.70 and 0.45, Heuristic 3 weight 20%, review density baseline fallback 6.0 s/loc) are calibration starting points derived from a single production environment. You should recalibrate these thresholds against your own team's incident data before treating canary durations as hard gates.\n\n### Ethics note\n\n> **This module produces team-level trending signals. Do not use review density or authorship scores as individual engineer performance metrics.**\n\n---\n\n## 🤝 Contributing\n\nContributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for dev setup, coding standards, and workflow.\n\n```bash\ngit clone https://github.com/ParthibanRajasekaran/delivery-intel.git\ncd delivery-intel\nnpm install\nnpm run validate   # lint + typecheck + test in one shot\n```\n\n---\n\n## 📄 License\n\n[MIT](LICENSE). Use it however you want.\n","readmeFilename":"README.md"}