# NotebookEdit

Модифицирует одну ячейку в блокноте Jupyter (`.ipynb`). Поддерживает замену исходного текста ячейки, вставку новой ячейки или удаление существующей ячейки, сохраняя остальную структуру блокнота.

## Когда использовать

- Исправление или обновление кодовой ячейки в аналитическом блокноте без перезаписи всего файла
- Замена markdown-ячейки для улучшения повествования или добавления документации
- Вставка новой кодовой или markdown-ячейки в известной позиции существующего блокнота
- Удаление устаревшей или сломанной ячейки, чтобы последующие ячейки больше от неё не зависели
- Подготовка воспроизводимого блокнота путём итеративной правки ячеек по одной

## Параметры

- `notebook_path` (string, обязательный): абсолютный путь к файлу `.ipynb`. Относительные пути отклоняются.
- `new_source` (string, обязательный): новый исходный текст ячейки. Для `replace` и `insert` становится телом ячейки; для `delete` игнорируется, но всё равно обязателен по схеме.
- `cell_id` (string, необязательный): ID целевой ячейки. В режимах `replace` и `delete` инструмент действует на эту ячейку. В режиме `insert` новая ячейка вставляется сразу после ячейки с этим ID; опустите, чтобы вставить в начало блокнота.
- `cell_type` (enum, необязательный): либо `code`, либо `markdown`. Обязателен, когда `edit_mode` — `insert`. Если опущен при `replace`, сохраняется существующий тип ячейки.
- `edit_mode` (enum, необязательный): `replace` (по умолчанию), `insert` или `delete`.

## Примеры

### Пример 1: замена ошибочной кодовой ячейки
Вызовите `NotebookEdit` с `notebook_path`, установленным в абсолютный путь, `cell_id`, установленным в ID целевой ячейки, и `new_source`, содержащим исправленный код Python. Оставьте `edit_mode` по умолчанию — `replace`.

### Пример 2: вставка markdown-пояснения
Чтобы добавить markdown-ячейку сразу после существующей ячейки `setup`, задайте `edit_mode: "insert"`, `cell_type: "markdown"`, `cell_id` — ID ячейки setup, а повествование положите в `new_source`.

### Пример 3: удаление устаревшей ячейки
Задайте `edit_mode: "delete"` и укажите `cell_id` ячейки, которую нужно удалить. Передайте любую строку в `new_source`; она не применяется.

## Примечания

- Всегда передавайте абсолютный путь. `NotebookEdit` не разрешает относительные пути относительно рабочего каталога.
- Инструмент переписывает только целевую ячейку; счётчики выполнения, выводы и метаданные несвязанных ячеек остаются нетронутыми.
- Вставка без `cell_id` помещает новую ячейку в самое начало блокнота.
- `cell_type` обязателен для вставок. Для замен опускайте, если только вы явно не хотите превратить кодовую ячейку в markdown или наоборот.
- Чтобы осмотреть ячейки и захватить их ID, сначала используйте инструмент `Read` на блокноте; он возвращает ячейки с их содержимым и выводами.
- Для обычных исходных файлов используйте обычный `Edit`; `NotebookEdit` специфичен для JSON `.ipynb` и понимает его структуру ячеек.
