{"_rev":"4-acfe12d427cd54df85d8b8f61a200584","time":{"created":"2026-04-05T09:41:07.941Z","modified":"2026-04-05T09:41:08.450Z","0.1.0":"2026-04-05T09:35:21.053Z","0.1.1":"2026-04-05T09:41:08.214Z"},"_id":"@dharminnagar/bruh","name":"@dharminnagar/bruh","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.1":{"name":"@dharminnagar/bruh","version":"0.1.1","description":"AI-powered git commit range summarizer CLI","main":"./dist/index.js","types":"./dist/index.d.ts","type":"module","license":"MIT","bin":{"bruh":"dist/cli.js"},"engines":{"bun":">=1.1.0"},"publishConfig":{"access":"public"},"keywords":["cli","git","commits","release-notes","summary","ai","openai","anthropic","cloudflare","bun"],"devDependencies":{"@eslint/js":"^10.0.1","@types/bun":"latest","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^8.58.0","@typescript-eslint/parser":"^8.58.0","eslint":"^10.2.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","husky":"^9.1.7","lint-staged":"^16.4.0","prettier":"^3.8.1","typescript":"^5.0.0","typescript-eslint":"^8.58.0"},"dependencies":{"@clack/prompts":"^0.11.0"},"scripts":{"build":"tsc","dev":"bun --watch src/index.ts","start":"bun src/index.ts","check":"tsc --noEmit","format":"prettier --write .","format:check":"prettier --check .","lint":"eslint . && prettier --check .","lint:fix":"eslint . --fix && prettier --write .","prepublishOnly":"bun run check && bun run lint && bun run build","prepare":"husky"},"lint-staged":{"*.{js,jsx,ts,tsx}":["eslint --cache --fix","prettier --write"],"*.{json,css,md}":["prettier --write"]},"gitHead":"f20ecc7c47e7cca869847a1e6c523a8b92bd036d","_id":"@dharminnagar/bruh@0.1.1","_nodeVersion":"24.10.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-X1TuMccn0ZZE8zGGYh//4SZPL3kCiqfn+ndZ6jAnu/ogKLQNmxMdLQdO/Sehn/SQHMMOmJ7f0CmwSzEP17aZxw==","shasum":"9445d93b42cb22df9d7944a5685eda55177f3164","tarball":"https://registry.npmjs.org/@dharminnagar/bruh/-/bruh-0.1.1.tgz","fileCount":43,"unpackedSize":116146,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDTLzW3kZILp1xLBkYHKg+yNaa0Zb6bqYPSZEdD0wjZhgIhANHKoz0QbwD+tHgL35nk4ZbxViGpLZPuoRS45oPkzsO/"}]},"_npmUser":{"name":"dharminnagar","email":"dharminnagar@gmail.com"},"directories":{},"maintainers":[{"name":"dharminnagar","email":"dharminnagar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bruh_0.1.1_1775382068066_0.31326009672959376"},"_hasShrinkwrap":false}},"maintainers":[{"name":"dharminnagar","email":"dharminnagar@gmail.com"}],"description":"AI-powered git commit range summarizer CLI","keywords":["cli","git","commits","release-notes","summary","ai","openai","anthropic","cloudflare","bun"],"license":"MIT","readme":"# bruh - Git Commit Summarizer\n\nA Bun CLI that explains what changed in git history after a base commit by combining:\n\n- Commit messages\n- Full commit diffs (with safe truncation for large patches)\n- AI-generated analysis (OpenAI, Claude, or Cloudflare Workers AI)\n\n## Install\n\nPrerequisite: Bun must be installed on the machine where `bruh` runs.\n\nGlobal install from npm:\n\n```bash\nnpm install -g bruh\n```\n\nOr run without installing globally:\n\n```bash\nnpx bruh --help\n```\n\nFor local development in this repo:\n\n```bash\nbun install\n```\n\n## First-run setup\n\nRun interactive setup once:\n\n```bash\nbruh --init\n```\n\nInteractive prompts use `@clack/prompts` and setup now provides provider-specific model choices from a list (with a custom model option). For Cloudflare, model choices are fetched dynamically from your account when available, with built-in fallback options.\n\nThis stores provider and API key in a local config file:\n\n- macOS: `~/Library/Application Support/bruh/config.json`\n- Linux: `$XDG_CONFIG_HOME/bruh/config.json` or `~/.config/bruh/config.json`\n\nIf config is deleted or key is missing, setup is prompted again automatically.\n\n## Usage\n\nAnalyze commits after a base commit hash:\n\n```bash\nbruh --commit <commit-hash>\n```\n\nor positional style:\n\n```bash\nbruh <commit-hash>\n```\n\n### Options\n\n- `-c, --commit <hash>`: base commit hash\n- `-p, --provider <name>`: `openai | claude | cloudflare`\n- `-k, --api-key <key>`: override API key for current run\n- `-m, --model <model>`: override model for current run\n- `--config <path>`: custom config path\n- `-f, --format <format>`: `text | json | markdown` (default: `text`)\n- `-o, --output <path>`: write report to a file\n- `--init`: run interactive setup\n- `-h, --help`: help text\n\n## Output formats\n\n- `text`: human-readable terminal report\n- `json`: machine-readable report for automation\n- `markdown`: markdown report for docs/changelogs\n\nIn interactive terminals, the CLI now includes progress indicators for key analysis stages and a visually clearer text report hierarchy for faster scanning.\nWhen output is non-interactive (for example piped in CI), it falls back to plain deterministic logs.\n\nExample markdown export:\n\n```bash\nbruh <commit-hash> --format markdown --output commit-report.md\n```\n\n## Provider notes\n\n- OpenAI uses `https://api.openai.com/v1/chat/completions`\n- Claude uses `https://api.anthropic.com/v1/messages`\n- Cloudflare Workers AI requires both API token and account ID\n\nFor Cloudflare, setup prompts for account ID and stores it in config.\n\n## Development\n\n```bash\nbun run check\nbun run lint\nbun run start -- --help\n```\n\n### Help and recipes\n\n```bash\nbun run src/index.ts --help\n```\n\nThe help output includes a quick-start path and common recipes for setup, analysis, and exports.\n","readmeFilename":"README.md"}