import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/scripts/Classes/LibraryAiPrompt - Консолидатор промптов ИИ'/>

# Класс LibraryAiPrompt

Класс `LibraryAiPrompt` представляет собой служебную утилиту для рекурсивного сканирования директорий проекта, сбора файлов спецификаций, описаний, типов TypeScript и скриншотов с последующим их объединением в единый структурированный файл контекстного промпта для больших языковых моделей (LLM).

## Ключевые особенности

- **Автоматическая консолидация** — собирает воедино глобальные правила разработки, Vue-стандарты и инструкции по модулям в один файл.
- **Рекурсивный обход директорий** — сканирует рабочие пространства и каталоги компонентов для поиска и обработки файлов контекста.
- **Строгое форматирование вывода** — оформляет разделы с четкими разделителями и иерархией заголовков, разделяя логику, типы и архитектуру.
- **Интеграция высокоприоритетных правил** — считывает переопределяющие инструкции самого высокого приоритета и встраивает их в конец файла.
- **Работа с файловой системой** — использует класс `PropertiesFile` для безопасного считывания ресурсов и выгрузки готового промпта по пути назначения.

## Инициализация

`LibraryAiPrompt` может быть инициализирован с необязательным массивом дополнительных путей для сканирования.

**Параметры конструктора:**
- `dirs: string[]` — (Опционально) Дополнительные директории для обхода.

```typescript
import { LibraryAiPrompt } from '@dxtmisha/scripts'

const consolidator = new LibraryAiPrompt(['custom/path/to/modules'])
```

---

## Методы

### Выполнение

#### `make`
Основной управляющий метод: запускает сканирование папок, собирает правила и промпты модулей, добавляет приоритетные инструкции и записывает объединенный файл.

```typescript
consolidator.make()
```

---

### Защищенный API сканирования

#### `getList`
Рекурсивно обходит каталоги до определенного лимита глубины, игнорируя скрытые папки, и возвращает собранные экземпляры `LibraryAiPromptItem`.

**Параметры:**
- `dirs: string[]` — (По умолчанию: внутренний список `dirs`) Целевые директории для сканирования.
- `path: string[]` — Текущие накопленные сегменты пути.
- `limit: number` — (По умолчанию: `4`) Лимит глубины для избежания бесконечного зацикливания при наличии ссылок.

**Возвращает:** `LibraryAiPromptItem[]`

---

### Защищенные вспомогательные методы
- `isFileOnDirs(dirs: string[]): boolean` — Проверяет, является ли хотя бы один элемент в каталоге файлом.
- `getInstruction(): string | undefined` — Считывает и форматирует высокоприоритетные инструкции при наличии файла.
- `getVuePrompt(): string` — Загружает стандартные правила реализации Vue SFC-компонентов.
- `getGlobalPrompt(): string` — Загружает глобальные принципы чистого кода проекта.
- `write(prompts: string[]): this` — Сохраняет сгенерированный массив строк в результирующий файл.
