# Добавление содержимого на Canvas

Справочный PDF, снимок экрана с проблемой, ссылка на приложение и заметка об исследовании могут участвовать в одной
задаче. Необязательно создавать каждый Node вручную: перетащите файлы из системы или вставьте содержимое прямо на Canvas.

Результат зависит от содержимого и места вставки. На Canvas вставка создаёт или находит Nodes. В редакторе, Terminal,
CodingAgent или на странице WebBrowser она остаётся обычной вставкой в соответствующей среде.

## Перетаскивайте файлы из системы

1. Откройте целевой Workspace.
2. Перетащите один или несколько файлов из Finder, Explorer или другого файлового менеджера в область Canvas.
3. Отпустите их там, где должна появиться группа. Несколько файлов располагаются сеткой и выделяются вместе.
4. Проверьте сводку: добавленные Nodes, уже представленные источники и пропущенные элементы.

Файлы **остаются на своих местах**. Kavor не импортирует, не копирует и не перемещает их. Для каждого источника в
Workspace может быть не более одного Node: повторное действие выделяет и показывает существующий Node, не создавая
дубликат и не меняя его положение.

Тип определяется источником:

- Specification, принадлежащая этому Workspace, появляется как Specification;
- файл формата диаграмм появляется как [Diagram](./diagrams.md), за исключением SVG;
- остальные появляются как [File](./file.md). Обычный `.svg` остаётся File; явно запросите Diagram, если хотите
  работать с ним именно так.

Папки не добавляются. Если перетащить папку вместе с файлами, Kavor сообщает о пропущенном элементе и всё равно
добавляет допустимые файлы. Нечитаемый файл также появляется в сводке с указанием причины.

Перетаскивание на поле ввода Terminal или CodingAgent вставляет путь в эту сессию, а не создаёт Node на Canvas.
Панели Files и Specs сохраняют собственные правила перетаскивания.

### Файлы вне Workspace

Можно сослаться на файл, не помещая его в папку проекта. Node показывает абсолютный путь и метку
`Outside this Workspace`. Для файлов внутри Workspace путь отображается относительно его корня.

Изменения внешнего файла сразу отражаются в его представлении; если источник удалён, Node показывает его
недоступность. Использовать Reload после каждого изменения не нужно. При несохранённой локальной правке перед
заменой содержимого необходимо разобраться с конфликтами.

Внешняя ссылка не делает файл частью репозитория. Если передаёте проект или переходите на другой компьютер,
проверьте, сохранится ли источник по ожидаемому пути.

## Вставляйте файлы, изображения, ссылки и текст

Когда фокус на Canvas, используйте `⌘V` в macOS или `Ctrl+V` в Windows/Linux. В контекстном меню также есть Paste:
вставка происходит в точке открытия меню. При вставке с клавиатуры используется положение указателя внутри Canvas
или центр видимой области; повторные вставки немного смещаются.

Если в буфере обмена есть несколько представлений, Kavor выбирает первое подходящее в таком порядке:

| Скопированное содержимое | Результат на Canvas |
| --- | --- |
| Граф Nodes, скопированный или вырезанный в Kavor | Вставка выделенного набора по правилам ниже. |
| Файлы, скопированные в файловом менеджере | Ссылки на файлы, как при перетаскивании. |
| Данные изображения, например снимок экрана без исходного файла | Сохранение PNG в Workspace и создание его File Node. |
| Отдельная URL | Создание WebBrowser с открытым адресом. |
| Текст | Создание Sticky Note с буквальным текстом, без интерпретации Markdown. |

Вставляйте внутрь сессии, если хотите передать ей входные данные, а не создать Nodes. О файлах и изображениях в поле
ввода harness см. [вставку в Terminal](./terminal.md#вставляйте-файлы-и-изображения-во-ввод-сессии).

### Куда сохраняется вставленное изображение

Данные изображения — исключение из правила простого создания ссылки: у них ещё нет файла, на который мог бы ссылаться
Canvas. Kavor записывает PNG в папку `assets/` **первой Documentation root**. Например, при стандартном корне `docs/`:

```text
docs/assets/pasted-image-20261030-093000.png
```

Имя содержит дату и время; при совпадении добавляется числовой суффикс. Существующие файлы не перезаписываются.
Фактический путь сохранения показывается только после создания и файла, и Node.

Лимит данных изображения в буфере обмена — **20 MB**. Ошибка сохранения сообщается как ошибка изображения, а не
превращается незаметно в Sticky Note. Этот лимит не заменяет ограничения просмотра, описанные ниже.

## Копируйте, вырезайте и вставляйте Nodes

Так можно повторно использовать работающий цикл, например Specification, Builder, Reviewer и Sticky Note.

1. Выберите Nodes, которые должны переноситься вместе; фокус должен быть вне редакторов и сессий.
2. Используйте `⌘C` / `Ctrl+C` для копирования или `⌘X` / `Ctrl+X` для вырезания. Те же действия есть в контекстном меню.
3. Останьтесь на том же Canvas или откройте целевой Workspace, в том числе в другом окне Kavor.
4. Установите указатель и вставьте. Проверьте участников и Connections перед продолжением работы.

В захват входят только Connections, у которых **выбраны оба конечных Node**. Выбор отдельной Connection не захватывает
её Nodes; связи с участниками вне выделения не копируются.

Копирование создаёт новые идентичности и сохраняет относительное расположение. Одну копию можно вставлять многократно.
Вырезание на том же Canvas только перемещает группу, сохраняя идентичности и сессии. Между Workspaces оно переносит
Nodes и внутренние Connections, удаляя пограничные Connections в источнике; после успешной вставки вырезание
расходуется. До вставки `Esc` на исходном Canvas отменяет вырезание.

### Что переносится с каждым Node

| Node | Что сохраняется и что не клонируется |
| --- | --- |
| Sticky Note | Содержимое и цвет. |
| File и Diagram | Ссылка на тот же источник, а не копия байтов. Уже существующий Node источника используется повторно. |
| Specification | Повторно используется в Workspace-владельце; в другом Workspace появляется как File. Lifecycle остаётся у исходного владельца. |
| Terminal | Настройки shell и намерение открыть сессию, но не буфер и не история. При переносе между Workspaces исходная сессия закрывается. |
| CodingAgent | Настройки provider, модели и предпочтений, но не разговор, сообщения или изолированный worktree. При переносе исходная сессия закрывается; проверьте корень и настройки в месте назначения. |
| Trigger | Копия создаётся на паузе, без истории срабатываний. Вырезание сохраняет настройки, но не может перенести ещё не завершённое срабатывание. |
| WebBrowser | Вкладки, но не всплывающие окна, загрузки или наблюдения. Страницы создаются заново в месте назначения. |

Guardrails и параметры Connections переносятся по правилам пары. Когда Specification становится File в другом
Workspace, её ограничение чтения преобразуется в `file_read_only`; Diagram сохраняет `diagram_read_only`.
Проверьте ограничения в месте назначения перед началом новой задачи.

Буфер графов существует только в текущем запуске Kavor. Другая копия или перезапуск приложения делает захват
недействительным; это никогда не удаляет источник ожидающего вырезания. Это не резервная копия и не экспорт между
компьютерами.

Захват допускает до **512 Nodes, 2 048 Connections и 16 MiB**. Если вырезанное выделение изменится до вставки или
источник исчезнет, операция отклоняется без частичной вставки. Проверьте источник и захватите набор заново.

## Как устроен preview файла

Node продолжает представлять настоящий источник, даже если для него нет расширенного preview:

- **Текст UTF-8:** редактор, preview при наличии, сохранение и обработка конфликтов.
- **Изображения:** PNG, JPEG, GIF, WebP, BMP, ICO, AVIF и SVG. SVG в File отображается как изображение, а не как
  разметка интерфейса приложения.
- **PDF:** просмотр страниц на Canvas, без редактора форм или аннотаций и без выполнения JavaScript из PDF.
- **Диаграммы:** особые способы просмотра и редактирования в [руководстве по Diagram](./diagrams.md).
- **Другие форматы:** карточка с системным значком или доступной миниатюрой, именем, типом, размером, датой изменения
  и путём. Аудио и видео отображаются такой карточкой; встроенного воспроизведения нет.

Изображения и PDF ограничены **32 MiB на файл**; для изображений также действует лимит **16 мегапикселей**.
Неподдерживаемый формат, превышение лимита или ошибка preview не превращают существующий источник в отсутствующий
файл: карточка объясняет ситуацию и сохраняет доступные действия. `Retry` появляется, когда повторная попытка может
помочь, а не для обхода лимита размера или формата.

Используйте **Open**, чтобы открыть файл в приложении по умолчанию, **Reveal in Finder** или системный аналог, чтобы
найти источник, и **Copy path**, чтобы скопировать путь. Миниатюры зависят от системы: macOS и Windows могут их
предоставлять; при отсутствии миниатюры файл по-прежнему обозначен значком.

## Отменяйте действия, различая Nodes и файлы

Каждое добавление содержимого или вставка графа создаёт запись в истории Canvas. Undo отменяет Nodes, созданные этой
операцией, не удаляя источник, на который лишь сослались, или ранее существовавший Node. Redo восстанавливает результат.

Изображение, записанное самим Kavor при вставке данных, — другой случай: Undo удаляет и этот PNG, а Redo его
восстанавливает. Если затем изменить изображение или создать конфликтующую ссылку, Kavor может отказать в отмене,
чтобы не удалить последующую работу. Проверьте причину; Undo — не безусловное удаление файлов.

При вырезании между Workspaces Undo должен восстановить обе стороны. Последующее конфликтующее изменение также
может помешать операции: половина графа отдельно не восстанавливается.

## Используйте содержимое с CodingAgent

Перетаскивание, вставка и буфер графов — действия человека. CodingAgent добавляет источники по пути, а не управляет
вашим буфером обмена. После добавления материала соедините только то, что должно участвовать в работе.

Для первого ознакомления укажите CodingAgent, какие Nodes вы добавили, и сделайте их достижимыми. Не включайте
учётные данные и не разрешайте изменения неявно.

```prompt
Изучи Nodes, которые я указал в моём достижимом графе.
Раздели канонический источник, визуальную справку, живую страницу и рабочую заметку.
Объясни, как эти материалы помогают в описанной задаче, и укажи, что не удалось прочитать.
Не меняй файлы, не выполняй команды и не создавай Connections; сначала представь своё понимание.
```

**Ожидаемый результат:** краткая карта действительно изученного материала с явными пробелами. Preview не гарантирует,
что harness сможет интерпретировать любой формат, а добавление Node не разрешает доступ к содержимому вне графа.

## Что дальше

- Используйте [File как контекст и область работы](./file.md), не превращая ссылку в одноразовую копию.
- Создавайте и проверяйте [Diagram](./diagrams.md) с CodingAgent.
- Обратитесь к [матрице Connections](./connections.md) перед подключением ресурсов.
- Узнайте, [что агенты видят на Canvas](./coding-agents-and-canvas.md).
