{"_id":"@ayudb1304/sushi","_rev":"4-792fc273b4e873c4ca3592746ffc8c60","name":"@ayudb1304/sushi","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@ayudb1304/sushi","version":"0.1.0","keywords":["build-in-public","cli","git","social-media","developer-tools","ai","gemini","twitter","linkedin","devlog"],"author":{"name":"Ayush Bhiogade"},"license":"MIT","_id":"@ayudb1304/sushi@0.1.0","maintainers":[{"name":"ayudb1304","email":"ayucorp1304@gmail.com"}],"homepage":"https://github.com/ayudb1304-wq/bip-cli#readme","bugs":{"url":"https://github.com/ayudb1304-wq/bip-cli/issues"},"bin":{"sushi":"dist/index.js"},"dist":{"shasum":"d73f4e4749b13b208a64a710165da0286069475c","tarball":"https://registry.npmjs.org/@ayudb1304/sushi/-/sushi-0.1.0.tgz","fileCount":27,"integrity":"sha512-iotSRg7eBZYq4Sl146ZX40U4CHIo6AW2rLzoS1/q0WmnrZ6cllY0dHRvC5186MZGW/ZfJW7KH6ZKn61z/9htFg==","signatures":[{"sig":"MEUCIQCLzok1Edz5VpLjZlkFW+U2syLOERe+mZJ32lwZHRTd3AIgTCE7G1z/Sz4CDm5OzM8mbjnAOA9y74pQQSbSTSRZVKw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38111},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"1c38808be160eaa7872c558895e100de10f25c01","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"ayudb1304","email":"ayucorp1304@gmail.com"},"repository":{"url":"git+https://github.com/ayudb1304-wq/bip-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Build-in-Public Content Engine — transforms Git diffs into platform-specific social media drafts","directories":{},"_nodeVersion":"24.11.1","dependencies":{"chalk":"^5.4.1","dotenv":"^16.4.7","js-yaml":"^4.1.0","inquirer":"^12.4.2","commander":"^13.1.0","simple-git":"^3.27.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^4.0.18","typescript":"^5.8.2","@types/node":"^22.13.10","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/sushi_0.1.0_1772554499569_0.5730754881043743","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ayudb1304/sushi","version":"0.1.1","keywords":["build-in-public","cli","git","social-media","developer-tools","ai","gemini","twitter","linkedin","devlog"],"author":{"name":"Ayush Bhiogade"},"license":"MIT","_id":"@ayudb1304/sushi@0.1.1","maintainers":[{"name":"ayudb1304","email":"ayucorp1304@gmail.com"}],"homepage":"https://github.com/ayudb1304-wq/bip-cli#readme","bugs":{"url":"https://github.com/ayudb1304-wq/bip-cli/issues"},"bin":{"sushi":"dist/index.js"},"dist":{"shasum":"d4ccf769c58177efef1b537d75d1fa6a1fc5aeff","tarball":"https://registry.npmjs.org/@ayudb1304/sushi/-/sushi-0.1.1.tgz","fileCount":27,"integrity":"sha512-ICpOqmxxT861onYtb3D8W6OU7yA3BpTGm0zCv7CLJH7oxo2+JsgN4CyR/ET9lOtbgTtNoJhJDppe2dwVLOSemw==","signatures":[{"sig":"MEUCIEsnTe19k09l5O8QQ20ihYc2rZK5AnBEcjnhbd30emcrAiEAsaRc1BeRggBB9lCQJF0FVFFHS8sEiia08t6Xw0pVeBo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40690},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"8f84e9ebde7b5ba04caedea94a6059c74243c9d1","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"ayudb1304","email":"ayucorp1304@gmail.com"},"repository":{"url":"git+https://github.com/ayudb1304-wq/bip-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Build-in-Public Content Engine — transforms Git diffs into platform-specific social media drafts","directories":{},"_nodeVersion":"24.11.1","dependencies":{"chalk":"^5.4.1","dotenv":"^16.4.7","js-yaml":"^4.1.0","inquirer":"^12.4.2","commander":"^13.1.0","simple-git":"^3.27.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^4.0.18","typescript":"^5.8.2","@types/node":"^22.13.10","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/sushi_0.1.1_1772558949003_0.7566982962629321","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ayudb1304/sushi","version":"0.1.2","keywords":["build-in-public","cli","git","social-media","developer-tools","ai","gemini","twitter","linkedin","devlog"],"author":{"name":"Ayush Bhiogade"},"license":"MIT","_id":"@ayudb1304/sushi@0.1.2","maintainers":[{"name":"ayudb1304","email":"ayucorp1304@gmail.com"}],"homepage":"https://github.com/ayudb1304-wq/bip-cli#readme","bugs":{"url":"https://github.com/ayudb1304-wq/bip-cli/issues"},"bin":{"sushi":"dist/index.js"},"dist":{"shasum":"c2f853cd4b95d33daf7f82bc97aebc7e796d4fb0","tarball":"https://registry.npmjs.org/@ayudb1304/sushi/-/sushi-0.1.2.tgz","fileCount":51,"integrity":"sha512-kpP4+bClxgNslhTLLYbZZ++nds8SmQrwI0sVfH0w0gPgmXqzseKCXrvvVHYK7M/NGoq46XDXUikJSR6lr8ZqBg==","signatures":[{"sig":"MEUCIAgWh/cvhkIe13QObZesAlgELKy51TtgE+fLf8Vk7TWRAiEA9n4J8MniTWfrhJfDmG1VTQkbYXCtPGdFApu7F+VqTLA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85103},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"7e75f3e4aee49c46bafbc06451dfd8c98d689a01","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"ayudb1304","email":"ayucorp1304@gmail.com"},"repository":{"url":"git+https://github.com/ayudb1304-wq/bip-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Build-in-Public Content Engine — transforms Git diffs into platform-specific social media drafts","directories":{},"_nodeVersion":"24.11.1","dependencies":{"chalk":"^5.4.1","dotenv":"^16.4.7","js-yaml":"^4.1.0","inquirer":"^12.4.2","commander":"^13.1.0","simple-git":"^3.27.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^4.0.18","typescript":"^5.8.2","@types/node":"^22.13.10","@types/js-yaml":"^4.0.9","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/sushi_0.1.2_1772561876285_0.6864127025410576","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ayudb1304/sushi","version":"0.1.3","description":"Build-in-Public Content Engine — transforms Git diffs into platform-specific social media drafts","type":"module","main":"./dist/index.js","bin":{"sushi":"dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/ayudb1304-wq/bip-cli.git"},"homepage":"https://github.com/ayudb1304-wq/bip-cli#readme","scripts":{"setup":"npm install && npm --prefix dashboard install","build":"tsc","build:all":"npm run build && npm run dashboard:build","dashboard:dev":"npm --prefix dashboard run dev","dashboard:build":"npm --prefix dashboard run build","dev":"tsx src/index.ts","quickstart":"npm run dev -- quickstart","demo":"npm run dev -- quickstart","onboarding:smoke":"tsx scripts/onboarding-smoke.ts","start":"node dist/index.js","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"keywords":["build-in-public","cli","git","social-media","developer-tools","ai","gemini","twitter","linkedin","devlog"],"author":{"name":"Ayush Bhiogade"},"license":"MIT","dependencies":{"@aws-sdk/client-s3":"^3.1000.0","@google/generative-ai":"^0.24.1","chalk":"^5.4.1","commander":"^13.1.0","dotenv":"^16.4.7","inquirer":"^12.4.2","js-yaml":"^4.1.0","playwright":"^1.58.2","simple-git":"^3.27.0"},"devDependencies":{"@types/inquirer":"^9.0.7","@types/js-yaml":"^4.0.9","@types/node":"^22.13.10","tsx":"^4.19.3","typescript":"^5.8.2","vitest":"^4.0.18"},"gitHead":"9d0e69e98488860337d3783d0cc96e356067601c","types":"./dist/index.d.ts","_id":"@ayudb1304/sushi@0.1.3","bugs":{"url":"https://github.com/ayudb1304-wq/bip-cli/issues"},"_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-IX8pMjPeHoKq05O7UtFvNcGAI3e3A4whdX3tKHkMdWCYFhA+q68PMJVMDi4Zy2wHNRH3T4cb1LYY/ZAe9iW1Bw==","shasum":"67faaf010f4cfd8bdddf71535f2578247b1fdcb7","tarball":"https://registry.npmjs.org/@ayudb1304/sushi/-/sushi-0.1.3.tgz","fileCount":90,"unpackedSize":192557,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCunzBkLDRYQ2NT8+gAz+WxWXfOmlq58MpVr41WwJCoLQIgMzPkrjGrRs91shGNU8LlLN/kxpuAozONIi2lwgbqy70="}]},"_npmUser":{"name":"ayudb1304","email":"ayucorp1304@gmail.com"},"directories":{},"maintainers":[{"name":"ayudb1304","email":"ayucorp1304@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sushi_0.1.3_1772568440288_0.7486722463710327"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-03T16:14:59.494Z","modified":"2026-03-03T20:07:20.590Z","0.1.0":"2026-03-03T16:14:59.720Z","0.1.1":"2026-03-03T17:29:09.153Z","0.1.2":"2026-03-03T18:17:56.433Z","0.1.3":"2026-03-03T20:07:20.473Z"},"bugs":{"url":"https://github.com/ayudb1304-wq/bip-cli/issues"},"author":{"name":"Ayush Bhiogade"},"license":"MIT","homepage":"https://github.com/ayudb1304-wq/bip-cli#readme","keywords":["build-in-public","cli","git","social-media","developer-tools","ai","gemini","twitter","linkedin","devlog"],"repository":{"type":"git","url":"git+https://github.com/ayudb1304-wq/bip-cli.git"},"description":"Build-in-Public Content Engine — transforms Git diffs into platform-specific social media drafts","maintainers":[{"name":"ayudb1304","email":"ayucorp1304@gmail.com"}],"readme":"# Sushi -- Build-in-Public Content Engine\n\nTurn your Git commits into ready-to-post social media drafts. Sushi reads your code changes and helps you share progress on X and LinkedIn without writing from scratch.\n\n## Start Here (30 seconds)\n\nNo API key required for first success.\n\n```bash\nnpx @ayudb1304/sushi quickstart\n```\n\nWhat this does:\n- creates `.bip/config.yml` with beginner defaults if missing\n- generates demo drafts instantly (local mode)\n- saves drafts to `.bip/drafts/`\n- tells you the exact next step for real AI drafts\n\n## Step 2: Get Real AI Drafts\n\n1. Create a free Gemini key: [aistudio.google.com/apikey](https://aistudio.google.com/apikey)\n2. In your project root, add a `.env` file:\n\n```env\nGEMINI_API_KEY=your-key-here\n```\n\n3. Run quickstart again:\n\n```bash\nnpx @ayudb1304/sushi quickstart\n```\n\n## Everyday Usage\n\nGenerate drafts from your latest commit:\n\n```bash\nnpx @ayudb1304/sushi generate --commit HEAD --save\n```\n\nIf `HEAD` is unfamiliar, it just means \"your latest commit in this repo.\"\n\nJust get the narrative summary:\n\n```bash\nnpx @ayudb1304/sushi summarize --commit HEAD\n```\n\nRun setup diagnostics:\n\n```bash\nnpx @ayudb1304/sushi doctor\n```\n\n## Clone-Repo Setup (optional)\n\nIf you cloned this repo and want local scripts:\n\n```bash\nnpm run setup\nnpm run quickstart\n```\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `npx @ayudb1304/sushi quickstart` | One-command onboarding (demo-first, real mode when key exists) |\n| `npx @ayudb1304/sushi doctor` | Check Node, Git, config, and Gemini key readiness |\n| `npx @ayudb1304/sushi init` | Interactive setup for custom profile/platform/tone |\n| `npx @ayudb1304/sushi summarize --commit <sha>` | Analyze a commit and print narrative |\n| `npx @ayudb1304/sushi generate --commit <sha> [--save]` | Generate X + LinkedIn drafts from a commit |\n| `npx @ayudb1304/sushi ingest-github --event-file <path> [--repo-path <path>]` | Queue GitHub push webhook commits for processing |\n| `npx @ayudb1304/sushi run-worker [--once]` | Process queued events and write outputs to `.bip/engine/outputs/` |\n| `npx @ayudb1304/sushi serve-webhooks [--port 8787] [--host 0.0.0.0]` | Run GitHub webhook receiver (`POST /webhooks/github`) with signature verification |\n| `npx @ayudb1304/sushi serve-dashboard [--port 8788] [--host 0.0.0.0]` | Run dashboard API + timeline UI |\n| `npx @ayudb1304/sushi run-weekly-summary [--once] [--interval-hours 168]` | Generate weekly summary markdown on schedule |\n\n## Advanced Setup\n\n## Phase 2 Engine setup\n\n### Required environment variables\n\nSet these before running live webhook + worker flows:\n\n```bash\n# Required for webhook signature verification\nexport GITHUB_WEBHOOK_SECRET=\"your-webhook-secret\"\n\n# Required for encrypted installation token storage (min 16 chars)\nexport BIP_TOKEN_MASTER_KEY=\"replace-with-strong-secret\"\n```\n\nOptional but useful:\n\n```bash\n# Fallback token used when webhook Authorization header is not provided\nexport GITHUB_INSTALLATION_TOKEN=\"ghp_xxx\"\n\n# Optional asset upload (if set, generated assets upload to S3)\nexport AWS_REGION=\"us-east-1\"\nexport BIP_ASSET_BUCKET=\"your-bucket-name\"\nexport BIP_ASSET_CDN_BASE_URL=\"https://cdn.example.com\" # optional\n```\n\n### End-to-end Phase 2 flow\n\n0. Build the modern dashboard frontend (one-time, or after UI changes):\n\n```bash\nnpm --prefix dashboard install\nnpm run dashboard:build\n```\n\n1. Start webhook receiver:\n\n```bash\nnpx @ayudb1304/sushi serve-webhooks --port 8787\n```\n\n2. Point GitHub webhook to:\n\n```text\nPOST http://<your-host>:8787/webhooks/github\n```\n\n3. Process queued events:\n\n```bash\nnpx @ayudb1304/sushi run-worker\n```\n\n4. Inspect timeline and assets:\n\n```bash\n# if you changed dashboard UI, rebuild before serving\nnpm run dashboard:build\nnpx @ayudb1304/sushi serve-dashboard --port 8788\n# open http://localhost:8788\n```\n\n5. Generate weekly summary:\n\n```bash\nnpx @ayudb1304/sushi run-weekly-summary --once\n```\n\n## PATH troubleshooting (global install users)\n\nIf `npm install -g @ayudb1304/sushi` succeeds but `sushi` shows `command not found`,\nyour npm global bin directory is not in your shell `PATH`.\n\n1. Find your npm global prefix:\n\n```bash\nnpm config get prefix\n```\n\n2. Add `<prefix>/bin` to your PATH (zsh):\n\n```bash\necho 'export PATH=\"$(npm config get prefix)/bin:$PATH\"' >> ~/.zshrc\nsource ~/.zshrc\nhash -r\n```\n\n3. Verify:\n\n```bash\nwhich sushi\nsushi --version\n```\n\nIf you want zero shell setup, use `npx @ayudb1304/sushi ...` instead of global install.\n\n## How it works\n\n```\ngit commit --> sushi extracts diff --> Gemini analyzes changes --> platform drafts\n```\n\n1. **Parses** the commit diff (files changed, additions, deletions, raw patches)\n2. **Sends** structured context to Gemini 2.5 Flash with anti-hallucination constraints\n3. **Generates** a problem/solution narrative grounded in the actual code changes\n4. **Renders** platform-specific drafts using your configured tone\n\nSushi never auto-posts. You review, edit, and post on your own terms.\n\n## Platform safety and policy\n\n- Sushi is draft-first and human-in-the-loop: it does not auto-post by default.\n- You remain responsible for platform policies for X, LinkedIn, Reddit, and any other channel.\n- Recommended flow: generate drafts in Sushi, review/edit, then post manually or via approved publishing tools.\n\n## Requirements\n\n- Node.js >= 18\n- Git\n- A [Gemini API key](https://aistudio.google.com/apikey) (free tier works fine)\n\n## Contributing\n\n```bash\ngit clone https://github.com/ayudb1304-wq/bip-cli.git\ncd bip-cli\nnpm install\nnpm test\nnpm run dev -- generate --commit HEAD\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}