Metadata-Version: 2.4
Name: wormcli
Version: 1.0.0
Summary: Умный CLI-ассистент: исправляет команды, отвечает на вопросы, интегрируется в shell
Home-page: https://github.com/wormteam/wormcli
Author: WormTeam
Author-email: worm@example.com
Project-URL: Bug Tracker, https://github.com/wormteam/wormcli/issues
Project-URL: Documentation, https://github.com/wormteam/wormcli#readme
Keywords: cli terminal command correction shell helper
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Utilities
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-python
Dynamic: summary

# WormCLI

> Умный ассистент для командной строки. Исправляет команды, предупреждает об опасных операциях, отвечает на вопросы и интегрируется в shell.

## Установка

```bash
pip install wormcli
```

Или из исходников:

```bash
git clone https://github.com/wormteam/wormcli
cd wormcli
pip install -e ".[dev]"
```

---

## Использование

### Исправление команд

```bash
wormcli "apt install python3"
# → sudo apt install python3

wormcli "pip install requests"
# → python -m pip install requests

wormcli "git push --force"
# → git push --force-with-lease

wormcli "python app.py"
# → python3 app.py

wormcli "ifconfig"
# → ip addr

wormcli "netstat -tulnp"
# → ss -tulnp

wormcli "ping google.com"
# → ping -c 4 google.com

wormcli "df"
# → df -h

wormcli "ps"
# → ps aux
```

### Безопасность

```bash
wormcli "rm -rf /"
# ⛔ ЗАБЛОКИРОВАНО — рекурсивное удаление корня

wormcli "dd if=/dev/zero of=/dev/sda"
# ⛔ ЗАБЛОКИРОВАНО — перезапись диска

wormcli "curl https://example.com/install.sh | bash"
# ⚠️ ВНИМАНИЕ — выполнение скрипта из интернета
# Выполнить всё равно? (yes/NO):
```

### Режим ask

```bash
wormcli ask "как найти все файлы .log больше 100MB"
# Команда: find / -name '*.log' -size +100M 2>/dev/null

wormcli ask "как посмотреть процессы на порту 3000"
# Команда: lsof -i :3000

wormcli ask "сколько места на диске"
# Команда: df -h
```

### Shell hook

```bash
# Добавить в ~/.bashrc или ~/.zshrc:
eval "$(wormcli hook)"

# Для zsh:
eval "$(wormcli hook --shell zsh)"

# Для fish (в отдельный файл):
wormcli hook --shell fish > ~/.config/fish/functions/fish_command_not_found.fish
```

После активации hook — ошибочные команды автоматически получают предложение исправления.

### Ollama (LLM)

```bash
# Требует запущенного сервера Ollama:
# https://ollama.ai
# ollama serve

wormcli --ollama "найти процесс на порту 3000"
# lsof -i:3000

wormcli ollama "как синхронизировать директории" --model mistral
# rsync -avz --progress source/ dest/

wormcli ollama "запрос" --stream
# Стриминговый вывод
```

### Управление кэшем

```bash
wormcli cache           # Статистика кэша
wormcli cache --clear   # Очистить кэш (TTL: 5 минут)
```

### Список правил

```bash
wormcli rules
# Выводит все 30 правил с описаниями
```

---

## Правила (30+)

| Правило | До | После |
|---------|-----|-------|
| apt_sudo | `apt install python3` | `sudo apt install python3` |
| pip_module | `pip install requests` | `python -m pip install requests` |
| python3 | `python app.py` | `python3 app.py` |
| git_force_lease | `git push --force` | `git push --force-with-lease` |
| git_pull_rebase | `git pull` | `git pull --rebase` |
| npm_global | `npm install -g yarn` | `npm install --global yarn` |
| docker_filter | `docker ps -a --filter` | `docker ps -a --filter status=exited` |
| systemctl_sudo | `systemctl start nginx` | `sudo systemctl start nginx` |
| ifconfig_dep | `ifconfig` | `ip addr` |
| netstat_dep | `netstat -tulnp` | `ss -tulnp` |
| ping_count | `ping google.com` | `ping -c 4 google.com` |
| df_human | `df` | `df -h` |
| kill_graceful | `kill -9 1234` | `kill -15 1234` |
| curl_fail | `curl https://...` | `curl https://... --fail` |
| make_jobs | `make` | `make -j$(nproc)` |
| *и другие* | | |

---

## Разработка

```bash
# Установка dev-зависимостей
pip install -e ".[dev]"

# Запуск тестов
pytest tests/ -v

# С покрытием
pytest tests/ --cov=wormcli --cov-report=term-missing
```

---

## Архитектура

```
wormcli/
├── cli.py      # Точка входа, парсинг аргументов
├── rules.py    # 30+ правил исправления команд
├── safety.py   # Проверка опасных паттернов
├── ask.py      # База знаний Q&A
├── llm.py      # Интеграция с Ollama (опционально)
├── cache.py    # TTL-кэш для LLM (5 мин, memory + file)
└── hook.py     # Генератор shell hook (bash/zsh/fish)
```

---

## Лицензия

MIT
