npm package: @infracodebase/cli
Description: Infracodebase CLI - Terminal interface for the Infracodebase agent
Author: Onward Platforms
Latest version: 0.1.9

# Infracodebase CLI

Terminal interface for the Infracodebase agent. Work with the same governance, connectivity, and credit systems available in the web product—but operating on local code.

## Installation

```bash
npm install -g @infracodebase/cli
```

## Usage

```bash
# Launch interactive session
icb

# Show help
icb --help
```

## Development

### Quick Start

```bash
# Install dependencies
make install

# Run in development mode (watch)
make dev

# Build for production
make build

# Test the production build
make test-build
```

### Local Development Environment

By default, the CLI connects to `https://infracodebase.com` (production). To test against a local or dev backend, use the `ICB_URL` environment variable:

```bash
# Connect to local backend
ICB_URL=http://localhost:3000 icb

# Connect to dev backend
ICB_URL=https://dev.infracodebase.com icb
```

Or set it in your shell profile for persistent configuration:

```bash
# Add to ~/.bashrc or ~/.zshrc
export ICB_URL=http://localhost:3000
```

The `/status` command shows which environment you're connected to.

### Publishing

First, authenticate with npm (one-time setup):

```bash
# Login to npm
make npm-auth

# Verify you're logged in
make npm-whoami
```

Then publish new versions:

```bash
# Check current version
make current-version

# Publish patch version (0.1.3 → 0.1.4)
make publish

# Publish minor version (0.1.3 → 0.2.0)
make publish-minor

# Publish major version (0.1.3 → 1.0.0)
make publish-major

# See all available commands
make help
```

### Beta Testing Workflow

For testing changes against the dev backend before releasing to production:

```bash
# Check what version you'll be publishing
make publish-check

# Publish beta version (0.1.3 → 0.1.4-beta.0)
make publish-beta

# More beta iterations (0.1.4-beta.0 → 0.1.4-beta.1)
make publish-beta

# When ready, publish to production (fresh build)
make publish              # Creates 0.1.5 (new production release)
```

**Beta vs Production:**

- **Beta versions** (`0.1.4-beta.X`):
  - Published with `--tag beta` (not installed by default)
  - Install with: `npm install @infracodebase/cli@beta`
  - Test against dev with: `ICB_URL=https://dev.infracodebase.com icb`

- **Production versions** (`0.1.4`):
  - Published as `latest` (default install)
  - Install with: `npm install @infracodebase/cli`
  - Connects to `infracodebase.com` by default

**Note:** All publish commands automatically:
- Build with the correct environment (dev/prod)
- Check npm authentication
- Bump the version
- Publish to npm
- Create git tags

### Other Commands

```bash
# Type check
pnpm type-check

# Clean build artifacts
make clean
```

## Commands

| Command | Description |
|---------|-------------|
| `/help` | Show all commands |
| `/status` | Show current context |
| `/signin` | Authenticate with Infracodebase |
| `/signout` | Clear credentials |
| `/exit` | Exit the CLI |

See `/help` in the CLI for full command reference.

## Architecture

The CLI connects to the Infracodebase backend APIs. The agent runs server-side; the CLI acts as a bridge for local file operations.

```
┌─────────────────────────────────────────┐
│              BACKEND                     │
│  Agent: "Read main.tf"                  │
│           ↓                             │
│  Router: CLI workspace? → Send to CLI   │
└─────────────────────┬───────────────────┘
                      │ WebSocket
                      ↓
┌─────────────────────────────────────────┐
│               CLI                        │
│  Reads local file → Returns to backend  │
└─────────────────────────────────────────┘
```

## License

MIT