---
docgen:
  source: npm/.pi-template/extensions/n-cursor-adr/index.ts
  crc: 3233716f
---

# index.ts

## Огляд

Огляд

Файл слугує механізмом для підготовки даних сесії та ініціації виконання зовнішніх рішень. Він серіалізує поточний стан сесії для формування вхідного JSON і запускає відповідні скрипти для прийняття рішень.

## Поведінка

1. Запуск відбувається при події agent_end.
2. Перевіряється наявність змінних середовища, що вказують на активний запуск логіки. Якщо перевірка позитивна, виконання зупиняється.
3. Зчитуються записи сесії з `sessionManager`.
4. Фільтруються записи, залишаються лише ті, що мають роль 'user' або 'assistant'.
5. Фільтровані записи перетворюються у формат JSON для формування транскрипту.
6. Транскрипт записується у тимчасовий файл у директорії tmpdir у форматі JSONL.
7. Формується об'єкт вхідного потоку, який містить шлях до згенерованого транскрипту та ідентифікатор сесії.
8. Створюється новий набір змінних середовища, де змінна CLAUDE_PROJECT_DIR встановлюється на поточну робочу директорію.
9. Паралельно виконуються два окремі скрипти bash: capture-decisions.sh та normalize-decisions.sh.
10. Обидва скрипти отримують вхідний JSON-пакет і виконуються через адаптер pi.exec.
11. Виконування здійснюється асинхронно. Якщо скрипти відсутні, це може призвести до помилки, яка буде зареєстрована у результаті виконання.
12. Помилки виконання ловляться, щоб забезпечити стабільність системи.

## Гарантії поведінки

- Доступ до файлу дозволений
- Операція запису та модифікації даних дозволена
- При виникненні помилок система перехоплює їх
- Система не генерує винятків назовні
- Система не використовує кешування
- Система не виконує операцій з мережею
- Логіка пропуску та обмеження швидкості залишається у бах (bash)
- Логіка вибору LLM-CLI залишається у бах (bash)
- Перевірка рекурсії здійснюється через змінні середовища встановлені бах перед запуском LLM CLI
