mirror of
https://github.com/samiyev/puaros.git
synced 2025-12-27 23:06:54 +05:00
- Project setup with tsup, vitest, ESM support - Domain entities: Session, Project - Value objects: FileData, FileAST, FileMeta, ChatMessage, ToolCall, ToolResult, UndoEntry - Service interfaces: IStorage, ILLMClient, ITool, IIndexer, IToolRegistry - Shared: Config (zod), IpuaroError, utils (hash, tokens), Result type - CLI with placeholder commands (start, init, index) - 91 unit tests with 100% coverage - Fix package scope @puaros -> @samiyev in CLAUDE.md
131 lines
3.0 KiB
Markdown
131 lines
3.0 KiB
Markdown
# @samiyev/ipuaro
|
|
|
|
Local AI agent for codebase operations with "infinite" context feeling through lazy loading.
|
|
|
|
## Features
|
|
|
|
- 18 LLM tools for code operations (read, edit, search, analysis, git, run)
|
|
- Redis persistence with AOF for durability
|
|
- tree-sitter AST parsing (TypeScript, JavaScript)
|
|
- Ollama LLM integration (local, private)
|
|
- File watching for live index updates
|
|
- Session and undo management
|
|
- Security (blacklist/whitelist for shell commands)
|
|
- Terminal UI with Ink/React
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
npm install @samiyev/ipuaro
|
|
# or
|
|
pnpm add @samiyev/ipuaro
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- Node.js >= 20.0.0
|
|
- Redis server (for persistence)
|
|
- Ollama (for LLM inference)
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# Start in current directory
|
|
ipuaro
|
|
|
|
# Start in specific directory
|
|
ipuaro /path/to/project
|
|
|
|
# With auto-apply mode
|
|
ipuaro --auto-apply
|
|
|
|
# With custom model
|
|
ipuaro --model qwen2.5-coder:32b-instruct
|
|
```
|
|
|
|
## Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `ipuaro [path]` | Start TUI in directory |
|
|
| `ipuaro init` | Create .ipuaro.json config |
|
|
| `ipuaro index` | Index project without TUI |
|
|
|
|
## Configuration
|
|
|
|
Create `.ipuaro.json` in your project root:
|
|
|
|
```json
|
|
{
|
|
"redis": {
|
|
"host": "localhost",
|
|
"port": 6379
|
|
},
|
|
"llm": {
|
|
"model": "qwen2.5-coder:7b-instruct",
|
|
"temperature": 0.1
|
|
},
|
|
"edit": {
|
|
"autoApply": false
|
|
}
|
|
}
|
|
```
|
|
|
|
## Architecture
|
|
|
|
Clean Architecture with clear separation:
|
|
|
|
```
|
|
src/
|
|
├── domain/ # Business logic (entities, value objects, interfaces)
|
|
├── application/ # Use cases, DTOs, orchestration
|
|
├── infrastructure/ # External implementations (Redis, Ollama, tools)
|
|
├── tui/ # Terminal UI (Ink/React components)
|
|
├── cli/ # CLI commands
|
|
└── shared/ # Cross-cutting concerns
|
|
```
|
|
|
|
## Tools (18 total)
|
|
|
|
| Category | Tool | Description |
|
|
|----------|------|-------------|
|
|
| **Read** | `get_lines` | Get file lines |
|
|
| | `get_function` | Get function by name |
|
|
| | `get_class` | Get class by name |
|
|
| | `get_structure` | Get project tree |
|
|
| **Edit** | `edit_lines` | Replace lines |
|
|
| | `create_file` | Create new file |
|
|
| | `delete_file` | Delete file |
|
|
| **Search** | `find_references` | Find symbol usages |
|
|
| | `find_definition` | Find symbol definition |
|
|
| **Analysis** | `get_dependencies` | File imports |
|
|
| | `get_dependents` | Files importing this |
|
|
| | `get_complexity` | Complexity metrics |
|
|
| | `get_todos` | Find TODO/FIXME |
|
|
| **Git** | `git_status` | Repository status |
|
|
| | `git_diff` | Uncommitted changes |
|
|
| | `git_commit` | Create commit |
|
|
| **Run** | `run_command` | Execute shell command |
|
|
| | `run_tests` | Run test suite |
|
|
|
|
## Development Status
|
|
|
|
Currently at version **0.1.0** (Foundation). See [ROADMAP.md](./ROADMAP.md) for full development plan.
|
|
|
|
### Completed
|
|
|
|
- [x] 0.1.1 Project Setup
|
|
- [x] 0.1.2 Domain Value Objects
|
|
- [x] 0.1.3 Domain Services Interfaces
|
|
- [x] 0.1.4 Shared Config
|
|
|
|
### Next
|
|
|
|
- [ ] 0.2.0 Redis Storage
|
|
- [ ] 0.3.0 Indexer
|
|
- [ ] 0.4.0 LLM Integration
|
|
|
|
## License
|
|
|
|
MIT
|