@happyvertical/smrt-cli

Developer CLI for introspection, code generation, database management, and auto-generated CRUD commands for SMRT objects.

v0.20.44CLIDeveloper Tools

Overview

smrt-cli provides a developer CLI with lazy-loaded commands, manifest discovery, and class introspection. It auto-generates CRUD commands for all SMRT objects decorated with @smrt({ cli: true }), plus exposes custom methods as CLI commands.

Installation

bash
pnpm add -D @happyvertical/smrt-cli

Commands

Introspection

bash
smrt introspect              # Discover SMRT objects in project
smrt introspect --verbose    # Include detailed field information
smrt objects                 # List all registered SMRT objects
smrt schema <object>         # Show detailed schema for an object
smrt status                  # Show system status (database, AI, registry)

Database

bash
smrt db:status               # Show pending schema changes
smrt db:migrate              # Apply pending migrations
smrt db:diff --generate      # Generate migration from schema changes
smrt db:rollback             # Rollback last migration
smrt db:history              # Show migration history

Code Generation

bash
smrt generate:mcp            # Generate MCP server from registered objects
smrt generate:types          # Generate TypeScript declarations from manifest

Documentation

bash
smrt docs:claude             # Generate .claude/smrt-framework.md for consumer projects

Configuration and Export

bash
smrt config:export           # Export agent config for SSG
smrt export                  # Export data in various formats
smrt init                    # Initialize a new SMRT project

Dispatch Management

bash
smrt dispatch:list           # List dispatch messages
smrt dispatch:process        # Process pending dispatches
smrt dispatch:retry          # Retry failed dispatches
smrt dispatch:cleanup        # Clean up old dispatch records

Git Integration

bash
smrt git:init                # Configure JSON-aware merge driver
smrt merge-json <base> <ours> <theirs>  # Manual JSON merge

Scaffolding

bash
smrt gnode create <name>     # Create new gnode from template
smrt gnode list-templates    # Show available templates

Auto-Generated Object Commands

For each registered SMRT object with cli: true, the CLI generates CRUD commands plus any custom methods:

bash
# Pattern: <object>:<operation>
smrt agent:list              # List agents with filtering
smrt agent:get <id>          # Get agent by ID or slug
smrt agent:create            # Create new agent (interactive)
smrt agent:update <id>       # Update existing agent
smrt agent:delete <id>       # Delete agent

# Custom methods (auto-discovered from manifests)
smrt agent:research abc123 --query "AI safety"

Configuration

typescript
// Enable CLI in decorator
@smrt({
  cli: true,  // Enable all operations
  // OR specify operations:
  cli: {
    include: ['list', 'get', 'create', 'incorporateFeedback', 'rollback']
  }
})
class Issue extends SmrtObject {
  // ...
}

CLI Configuration (smrt.config.js)

javascript
export default {
  packages: {
    cli: {
      entryPoint: './dist/index.js',  // default: auto-detect from package.json
      database: {
        type: 'sqlite',               // 'sqlite' | 'postgres'
        url: './data.db'              // default: ':memory:'
      },
      format: 'table',                // 'table' | 'json' | 'yaml' | 'plain'
    }
  }
};

Entry Point Discovery

  1. Explicit entryPoint in config
  2. package.json exports ['.'].import or ['.']
  3. package.json main field
  4. Fallback: ./dist/index.js

Related Modules