{"_id":"@hesxo/viro-cli","_rev":"2-27854387e1df5a22f411819f470d1358","name":"@hesxo/viro-cli","dist-tags":{"latest":"4.0.5"},"versions":{"4.0.4":{"name":"@hesxo/viro-cli","version":"4.0.4","keywords":["cli","git","ai","automation"],"author":{"name":"hesxo"},"license":"MIT","_id":"@hesxo/viro-cli@4.0.4","maintainers":[{"name":"hesxo","email":"hasaldharmagunawardana@gmail.com"}],"bin":{"otto-cli":"index.js","viro-cli":"index.js"},"dist":{"shasum":"a3a132b09c9e016dd58b328f493b7c0792e96d9a","tarball":"https://registry.npmjs.org/@hesxo/viro-cli/-/viro-cli-4.0.4.tgz","fileCount":23,"integrity":"sha512-eWcXnEusc1VaR85G2m3+a8OZrYQ1WxD3JHaDz1TO24BFquAhcmTFa+fAStU5MCkn6GEZwx8C7XzS93s8TGd4jQ==","signatures":[{"sig":"MEYCIQCiXQ01kHfQ8HS8/cO3yysZACLrpgnnFYPIsyzBxJSKpQIhAJoneSQpFJK5KunPdZP1phQRv0X1reuq7J1a58yc3gNH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73638},"main":"index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"ded6bf130b35945e3157d2b2ecef1dc5a90f6ae2","scripts":{"build":"node -e \"console.log('No build step required')\"","start":"node index.js"},"_npmUser":{"name":"hesxo","email":"hasaldharmagunawardana@gmail.com"},"_npmVersion":"11.11.0","description":"AI-powered Git Release & Automation Tool","directories":{},"_nodeVersion":"25.8.1","dependencies":{"dotenv":"^16.3.0","openai":"^4.0.0","commander":"^11.0.0","picocolors":"^1.0.0","@clack/prompts":"^0.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viro-cli_4.0.4_1774237610980_0.866582012923865","host":"s3://npm-registry-packages-npm-production"}},"4.0.5":{"name":"@hesxo/viro-cli","version":"4.0.5","description":"AI-powered Git Release & Automation Tool","main":"index.js","type":"module","bin":{"viro-cli":"index.js","otto-cli":"index.js"},"scripts":{"build":"node -e \"console.log('No build step required')\"","start":"node index.js"},"keywords":["cli","git","ai","automation"],"author":{"name":"hesxo"},"license":"MIT","dependencies":{"@clack/prompts":"^0.7.0","commander":"^11.0.0","dotenv":"^16.3.0","openai":"^4.0.0","picocolors":"^1.0.0"},"engines":{"node":">=18.0.0"},"gitHead":"ded6bf130b35945e3157d2b2ecef1dc5a90f6ae2","_id":"@hesxo/viro-cli@4.0.5","_nodeVersion":"25.8.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-V2RlnDrg8m6rr/sspMRSvu5ikIVnwJTSoWl7JVs1x8PJfg6iSdr462cJaURy2pLgFvBATbVLkR7wOV3B93Vzvw==","shasum":"c81fe90d91d0cf0c95d2c61182d293393570eb57","tarball":"https://registry.npmjs.org/@hesxo/viro-cli/-/viro-cli-4.0.5.tgz","fileCount":23,"unpackedSize":73638,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAcGY+W3tDqXydODqvMbonkucYnrgIN1aFXpziSeAsOUAiB1IQdLKlRX2fGGehb3obxl89DR0j8YFKEYp4Ro2kNp1g=="}]},"_npmUser":{"name":"hesxo","email":"hasaldharmagunawardana@gmail.com"},"directories":{},"maintainers":[{"name":"hesxo","email":"hasaldharmagunawardana@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/viro-cli_4.0.5_1774237739488_0.39849944007152516"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T03:46:50.844Z","modified":"2026-03-23T03:48:59.797Z","4.0.4":"2026-03-23T03:46:51.142Z","4.0.5":"2026-03-23T03:48:59.654Z"},"author":{"name":"hesxo"},"license":"MIT","keywords":["cli","git","ai","automation"],"description":"AI-powered Git Release & Automation Tool","maintainers":[{"name":"hesxo","email":"hasaldharmagunawardana@gmail.com"}],"readme":"# Otto - A Project by Sequence3\n\n> AI-Powered Git Automation & Release Tool\n\nOtto is a powerful CLI that automates your git workflow while keeping everything organized. It uses AI to write conventional commit messages, manages semantic versioning, simplifies branch management, and automatically logs every release to a Google Sheet.\n\n[![npm version](https://img.shields.io/npm/v/otto-cli.svg)](https://www.npmjs.com/package/otto-cli)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Table of Contents\n\n- [Quick Start](#quick-start)\n- [Configuration](#configuration)\n- [Key Features](#key-features)\n- [Usage & Commands](#usage--commands)\n- [Google Sheets Integration](#google-sheets-integration)\n- [Comparison](#why-otto)\n\n---\n\n## Quick Start\n\nYou can run Otto directly without installation:\n\n```bash\nnpx otto-cli\n```\n\nOr install it globally for daily use:\n\n```bash\nnpm install -g otto-cli\n# or\npnpm add -g otto-cli\n```\n\nOnce installed, simply run `otto-cli` or `otto` in any git repository to start the interactive menu.\n\n---\n\n## Configuration\n\nOtto is designed to be zero-friction. When you run it for the first time, it will interactively ask for the necessary credentials and save them securely to your global configuration (`~/.otto-cli/config.json`).\n\n**Required:**\n\n- **OpenAI API Key**: Used to analyze diffs and generate commit messages.\n\n**Optional:**\n\n- **Google Sheets Webhook URL**: Used to log release history automatically.\n\nYou can modify these settings at any time by running:\n\n```bash\notto-cli settings\n```\n\nOr selecting \"⚙️ Settings\" from the main menu.\n\n---\n\n## Key Features\n\n### 🤖 AI-Powered Commits\n\nStop writing \"fix bug\" or \"update\". Otto analyzes your staged changes using GPT-4o-mini and generates descriptive, conventional commit messages and technical descriptions automatically.\n\n### 🏷️ Semantic Versioning\n\n- Automatically suggests user-friendly version bumps (Patch, Minor, Major).\n- Supports snapshot/canary releases.\n- Creates annotated git tags.\n\n### 📊 Release Logging\n\nKeep a permanent record of every deployment. Otto sends a structured payload (User, Branch, Version, Commit Message, Technical Description) to your Google Sheet.\n\n### 🌿 Smart Branch Management\n\n- **Safe Switch**: Automatically stashes changes before switching branches and pops them after.\n- **Easy PRs**: Open a Pull Request for your current branch with one click.\n- **Cleanup**: Delete old local branches easily.\n\n### ⏪ Visual Undo & Rollback\n\nMistakes happen. Otto provides a clean, visual history of your recent commits and allows you to perform Soft, Mixed, or Hard resets safely with confirmation prompts.\n\n---\n\n## Usage & Commands\n\nYou can use Otto in **Interactive Mode** (recommended) or via **Direct Commands**.\n\n### Interactive Mode\n\nJust type `otto` or `otto-cli` to enter the interactive dashboard.\n\n### CLI Commands\n\n| Command         | Description                                                 |\n| :-------------- | :---------------------------------------------------------- |\n| `otto release`  | **The Core Flow**: Build -> AI Commit -> Tag -> Push -> Log |\n| `otto build`    | Run `install` and `build` scripts from package.json         |\n| `otto branch`   | Manage branches (Switch, Create, Delete, PR)                |\n| `otto stash`    | Interactive stash management (Save, Apply, Drop)            |\n| `otto undo`     | Visual commit history and rollback/reset tool               |\n| `otto sync`     | Fetch and Pull changes with one command                     |\n| `otto settings` | View or update API keys and configurations                  |\n\n---\n\n## Google Sheets Integration\n\nTo enable the automatic changelog/release logger, follow these steps to deploy a simple Webhook.\n\n### 1. Create the Sheet\n\nGo to [sheets.new](https://sheets.new) and create a blank spreadsheet.\n\n### 2. Add the Script\n\nClick **Extensions** > **Apps Script** in the top menu. Remove any existing code and paste this:\n\n```javascript\nfunction doPost(e) {\n  const sheet = SpreadsheetApp.getActiveSheet();\n  const data = JSON.parse(e.postData.contents);\n\n  // Appends: Timestamp | User | Branch | Type | Message | Description\n  sheet.appendRow([\n    new Date(),\n    data.user,\n    data.branch,\n    data.type,\n    data.message,\n    data.description,\n  ]);\n\n  return ContentService.createTextOutput(\n    JSON.stringify({ status: \"success\" }),\n  ).setMimeType(ContentService.MimeType.JSON);\n}\n```\n\n### 3. Deploy\n\n1. Click the blue **Deploy** button > **New deployment**.\n2. Click the gear icon next to \"Select type\" and choose **Web app**.\n3. Description: `Otto Logger`\n4. Execute as: **Me**\n5. Who has access: **Anyone** (Important! This allows the CLI to send data without OAuth complexity).\n6. Click **Deploy**.\n\n### 4. Configure Otto\n\nCopy the **Web app URL** (it starts with `https://script.google.com/...`).\nRun `otto settings` and paste the URL when prompted.\n\n---\n\n## Why Otto?\n\nMost release tools are just scripts. Otto is an **intelligent assistant**.\n\n- It doesn't just bump versions; it documents _why_ the version changed.\n- It doesn't just checkout branches; it protects your work-in-progress.\n- It doesn't just run builds; it ensures you're synced with remote first.\n\n### Requirements\n\n- Node.js 18.0.0 or higher\n- Git\n\n---\n\n**Otto** is a project by **Sequence3**.\n[GitHub](https://github.com/sq3ai/otto-cli) | [Issues](https://github.com/sq3ai/otto-cli/issues)\n","readmeFilename":"README.md"}