Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ok ai tool

NotificationsYou must be signed in to change notification settings

ServiceStack/okai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI-powered code generation tool for ServiceStack Apps. Generate TypeScript data models, C# APIs, migrations, and UI components from natural language prompts using LLMs.

Features

  • 🤖AI-Powered Generation - Generate complete CRUD APIs from natural language prompts
  • 📝TypeScript Data Models - Define your data models in TypeScript with type safety
  • 🔄Auto-Generate C# Code - Automatically generate C# APIs, DTOs, and migrations
  • 🗄️Database Migrations - Create OrmLite migrations for your data models
  • 🎨UI Components - Generate Vue.js admin UI components
  • 👀Watch Mode - Auto-regenerate C# files when TypeScript models change
  • 🔌Multiple LLM Support - Use up to 5 different LLM models simultaneously
  • 🔄Schema Conversion - Convert existing database schemas to TypeScript models

Installation

npm install -g okai

Requirements

  • Node.js >= 24.0.0
  • A ServiceStack application with a.sln or.slnx file
  • ServiceStack project structure with ServiceModel directory

Quick Start

1. Navigate to your ServiceStack project

cd /path/to/app

2. Generate APIs from a prompt

okai"Create a blog system with posts, comments, and tags"

This will:

  1. Generate TypeScript data models (.d.ts file)
  2. Create C# API DTOs and AutoQuery services
  3. Generate database migrations
  4. Create Vue.js admin UI components
  5. Show an interactive preview where you can review and accept the changes

3. Regenerate C# files from TypeScript models

okai Blog.d.ts

4. Watch mode for continuous regeneration

okai Blog.d.ts --watch

Usage

Generate from Natural Language Prompt

okai<prompt>

Options:

  • -m, --models <model,model,...> - Specify up to 5 LLM models to use
  • -l, --license <LC-xxx> - Provide ServiceStack license for premium models
  • -v, --verbose - Display verbose logging

Example:

okai"Create a job board with companies, jobs, and applicants"
okai"Create an e-commerce system" --models gpt-4,claude-3-opus

Regenerate C# Files

Regenerate C# APIs, migrations, and UI from an existing TypeScript definition file:

okai<models>.d.ts

Options:

  • -w, --watch - Watch for changes and auto-regenerate

Example:

okai Blog.d.tsokai Blog.d.ts --watch

Remove Generated Files

Remove a TypeScript model file and all its generated C# files:

okai rm<models>.d.ts

Example:

okai rm Blog.d.ts

List Available Models

Display available premium LLM models:

okai ls models

Initialize Configuration

Create anokai.json configuration file with your project structure:

okai init

This auto-detects your ServiceStack project structure and creates a config file you can customize.

Create Empty Model File

Create an empty TypeScript definition file for a specific model:

okai init<model>

Example:

okai init Blog

Convert Database Schema

Convert .NET RDBMS table definitions to TypeScript data models:

okai convert<schema.json>

Display Project Info

Show detected project information:

okai info

Chat with OpenAI

Submit a chat request to OpenAI:

okai chat<prompt>

Options:

  • --system <prompt> - Specify a system prompt

Example:

okai chat"Explain AutoQuery" --system"You are a ServiceStack expert"

Environment Variables

Configure okai behavior using environment variables:

  • OKAI_URL - Base URL for the okai service (default:https://okai.servicestack.com)
  • OKAI_MODELS - Default LLM models to use (comma-separated)
  • SERVICESTACK_LICENSE - Your ServiceStack license key for premium models

Example:

export OKAI_MODELS="gpt-4,claude-3-opus"export SERVICESTACK_LICENSE="..."okai"Create a booking system"

Configuration File

Theokai.json file allows you to customize project paths:

{"projectName":"MyApp","slnDir":"/path/to/solution","hostDir":"/path/to/MyApp","migrationsDir":"/path/to/MyApp/Migrations","serviceModelDir":"/path/to/MyApp.ServiceModel","serviceInterfaceDir":"/path/to/MyApp.ServiceInterfaces","uiMjsDir":"/path/to/MyApp/wwwroot/admin/sections","userType":"ApplicationUser","userIdType":"string","userLabel":"DisplayName"}

Generate this file automatically with:

okai init

TypeScript Data Model Format

Define your data models in TypeScript with special annotations:

/*prompt: Create a blog systemapi:       ~/MyApp.ServiceModel/Blog.csmigration: ~/MyApp/Migrations/Migration1001.csui:        ~/MyApp/wwwroot/admin/sections/Blog.mjs*/exportenumPostStatus{Draft="Draft",Published="Published",Archived="Archived"}exportclassBlogPost{id:numbertitle:stringslug:stringcontent:stringstatus:PostStatusauthorId:stringpublishedAt?:DatecreatedAt:DateupdatedAt:Date}exportclassComment{id:numberpostId:numberauthorId:stringcontent:stringcreatedAt:Date}exportclassTag{id:numbername:stringslug:string}exportclassPostTag{id:numberpostId:numbertagId:number}

Header Comments

The header comment specifies where generated files should be saved:

  • prompt: - The original prompt used to generate the models
  • api: - Path to the generated C# API file
  • migration: - Path to the generated migration file
  • ui: - Path to the generated UI component file

Paths starting with~/ are relative to the detected project directories.

Generated Files

For each TypeScript model file, okai generates:

1. C# API DTOs and Services

AutoQuery CRUD APIs with proper attributes and validation:

[Tag("Blog")]publicclassQueryBlogPosts:QueryDb<BlogPost>{}[Tag("Blog")]publicclassCreateBlogPost:ICreateDb<BlogPost>,IReturn<IdResponse>{publicstringTitle{get;set;}publicstringContent{get;set;}// ...}

2. Database Migrations

OrmLite migrations for creating tables:

publicclassMigration1001:MigrationBase{publicoverridevoidUp(){Db.CreateTable<BlogPost>();Db.CreateTable<Comment>();// ...}publicoverridevoidDown(){Db.DropTable<PostTag>();Db.DropTable<Tag>();// ...}}

3. Vue.js Admin UI Components

AutoQueryGrid components for admin interface:

exportdefault{group:"Blog",items:{BlogPosts:{type:'BlogPost',component:{template:`                <AutoQueryGrid :type="type"                    selected-columns="id,title,status,authorId,publishedAt" />                `,},},// ...}}

Workflow

Typical Development Flow

  1. Generate from prompt:

    okai"Create a task management system with projects, tasks, and assignments"
  2. Review the generated TypeScript models in the interactive preview

  3. Accept the changes by pressinga in the preview

  4. Edit the TypeScript models if needed (add validations, change types, etc.)

  5. Regenerate C# files:

    okai tasks.d.ts
  6. Use watch mode during development:

    okai tasks.d.ts --watch
  7. Run migrations in your ServiceStack app to create the database tables

  8. Access the admin UI to manage your data

Iterative Refinement

You can edit the.d.ts file and regenerate as many times as needed:

# Edit tasks.d.ts to add new properties or modelsvim tasks.d.ts# Regenerate all C# filesokai tasks.d.ts

Examples

E-Commerce System

okai"Create an e-commerce system with products, categories, orders, and customers"

Booking System

okai"Create a booking system with services, time slots, bookings, and customers"

Job Board

okai"Create a job board with companies, job listings, applications, and interviews"

CRM System

okai"Create a CRM with contacts, companies, deals, and activities"

Inventory Management

okai"Create an inventory system with warehouses, products, stock levels, and transfers"

Tips

Use Specific Prompts

The more specific your prompt, the better the results:

Too vague:

okai"Create a blog"

Better:

okai"Create a blog system with posts, comments, tags, categories, and authors. Posts should have status (draft/published), featured images, and SEO metadata"

Leverage Multiple Models

Use multiple LLM models to get the best results:

okai"Create a social network" --models gpt-4,claude-3-opus,gemini-pro

The tool will use consensus from multiple models to generate better data structures.

Customize Generated Code

After generation, you can:

  • Edit the TypeScript models to add custom properties
  • Add TypeScript decorators for validation
  • Modify relationships between models
  • Then regenerate the C# code withokai <file>.d.ts

Watch Mode for Rapid Development

Use watch mode while developing:

okai Blog.d.ts --watch

Now every time you saveBlog.d.ts, the C# files are automatically regenerated.

Troubleshooting

"No .sln or .slnx file found"

Make sure you're running okai from within a ServiceStack project directory. Alternatively, create anokai.json config file:

okai init

"Could not find ServiceModel directory"

Ensure your ServiceStack project has aServiceModel project. You can override the path inokai.json:

{"serviceModelDir":"/custom/path/to/ServiceModel"}

SSL Errors

If you encounter SSL certificate errors:

okai"your prompt" --ignore-ssl-errors

Links

About

ok ai tool

Resources

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp