@plastichub/osr-ai-tools
Version:
CLI and library for LLM tools
120 lines (102 loc) • 3.5 kB
Markdown
# LLM Tools CLI
Command-line interface and library for LLM tools providing filesystem, npm, git, terminal, interactive user, and screen capture operations.
## Setup
1. Install dependencies:
```bash
pnpm install
```
2. Build the project:
```bash
pnpm run build
```
3. Configure environment:
Either set environment variable:
```bash
export OPENAI_API_KEY=your-key-here
```
Or create a configuration file (e.g. `.env.dev.json`):
```json
{
"openai": {
"key": "your-key-here"
}
}
```
Then use with --env_key parameter:
```bash
pnpm start invoke --env_key dev
```
## Available Commands
### Generate TypeScript Types
Generates TypeScript interfaces from Zod schemas:
```bash
pnpm run types
```
### List Available Tools
Show all available tools and their descriptions:
```bash
pnpm start list
# Write tools list to file
pnpm start list --output ./tools.json
```
### Invoke Tool Functions
Invoke specific tool functions:
```bash
pnpm start invoke \
--tools fs \
--function list_files \
--target ./src \
--params '{"directory":".","pattern":"**/*.ts"}'
```
## Available Tools
### Filesystem Tools (fs)
- `list_files`: List all files in a directory with optional glob pattern
- `remove_file`: Remove a file at given path
- `rename_file`: Rename or move a file or directory
- `modify_project_files`: Modify existing project files with given content
- `create_project_structure`: Create project structure with files and folders
- `create_file`: Creates a file with given path and content
- `read_file`: Read content of a file at given path
### NPM Tools (npm)
- `build_project`: Build project using pnpm build command
- `run_npm`: Run an npm/pnpm command with optional arguments
- `install_dependency`: Install project dependencies using pnpm
### Git Tools (git)
- `init_repository`: Initialize a new git repository if it doesn't exist
- `commit_files_git`: Commit and push files to git repository with specified message
### Terminal Tools (terminal)
- `execute_command`: Execute terminal commands with options:
- Run in background (non-blocking)
- Open in new window
- Run detached from parent process
- Specify working directory
### Interactive Tools (interact)
- `ask_question`: Ask user a simple question and get response
- `choose_option`: Ask user to choose from multiple options:
- Single selection mode
- Multiple selection mode (checkbox)
### User Tools (user)
- `capture_screen`: Capture a screenshot of the entire screen or a specific region
## Project Structure
```
src/
├── commands/ # Command implementations
│ ├── index.ts # Command registry
│ ├── invoke.ts # Invoke command
│ ├── list.ts # List command
│ └── types.ts # Types command
├── lib/ # Core functionality
│ └── tools/ # Tool implementations
│ ├── fs.ts # Filesystem tools
│ ├── git.ts # Git operations
│ ├── npm.ts # NPM commands
│ ├── interact.ts # Interactive tools
│ ├── user.ts # User tools (screenshots)
│ └── terminal.ts # Terminal operations
├── constants.ts # Logger name constant
├── index.ts # Logger setup
├── main.ts # CLI entry point
├── tools.ts # Tools registry
├── zod_schemas.ts # Zod schemas
└── zod_types.ts # Generated TypeScript interfaces
```