open-index/open-npm huggingface dataset:
npm package: @kalloware/kallo-cli
Description: ## Общие - Приложение: интерактивный терминальный AI-чат `kaLLo CLI`. - Стек: Node.js ESM (`Node 18+`), TypeScript-quality подход к коду. - Запуск: через `node index.mjs` и npm-скрипты. - Брендинг интерфейса: `kaLLo CLI` во всех ключевых строках UI.
Latest version: 1.1.0

# kaLLo CLI — Требования

## Общие
- Приложение: интерактивный терминальный AI-чат `kaLLo CLI`.
- Стек: Node.js ESM (`Node 18+`), TypeScript-quality подход к коду.
- Запуск: через `node index.mjs` и npm-скрипты.
- Брендинг интерфейса: `kaLLo CLI` во всех ключевых строках UI.

## API и модель
- Провайдер: OpenRouter.
- Endpoint: `https://openrouter.ai/api/v1/chat/completions`.
- Обязательные заголовки:
  - `Authorization: Bearer <key>`
  - `Content-Type: application/json`
  - `HTTP-Referer: http://localhost`
  - `X-Title: kaLLo CLI`
- Модель по умолчанию: `arcee-ai/trinity-large-preview:free`.
- Ответы должны обрабатываться в стриминге (SSE).

## Конфигурация
- Конфиг должен храниться в JSON и содержать:
  - `apiKey: string`
  - `model: string`
  - `accessMode: "approve" | "full"`
- При отсутствии API-ключа требуется запрос с маскированным вводом.
- Должна быть команда для смены ключа (`/key`).

## Команды CLI
- Поддерживаемые команды:
  - `/help`
  - `/exit`
  - `/reset`
  - `/model <model-id>`
  - `/key`
  - `/save <name>`
  - `/load <name>`
  - `/access`
  - `/access approve`
  - `/access full`
  - `/shell <command>`

## Режимы доступа
- `approve`: каждое действие (файловое или shell-команда) требует подтверждения одной клавишей (`1` или `2`, без Enter).
- `full`: действия выполняются без подтверждения.

## Действия агента (kallo_actions)
- Ассистент может возвращать fenced-блок `kallo_actions` с JSON-массивом действий.
- Поддерживаемые типы:
  - `write_file`
  - `append_file`
  - `delete_file`
  - `mkdir`
  - `run_command`
- Для путей используется текущая директория проекта.
- Доступ за пределы проекта запрещен.
- `run_command` выполняется через системный shell из корня проекта.

## Поведение чата
- История чата хранится в памяти по ходу сессии.
- Сохранение/загрузка в `chats/<name>.json`.
- Пустой ввод игнорируется.
- `Ctrl+C` завершает приложение корректно.

## Интерфейс
- При старте терминал очищается.
- Заголовок при старте: ASCII-рамка с `KaLLoware CLI (vX.Y.Z)` и текущей моделью.
- Основной интерфейс монохромный; ошибки выделяются красным.
- Перед запросом: статус `kaLLo CLI | думает...`.
- Стрим вывода ассистента: префикс `kaLLo> `.

## Обработка ошибок
- При не-OK HTTP статусе выводятся код и текст ответа.
- Некорректные SSE-чанки не должны падать приложением.
- Ошибки по действиям выводятся помарочно (`OK/FAIL`) с сообщением.