{
  "format": "screph-action-graph",
  "version": 1,
  "description": "Каждое действие представлено одним узлом. Стрелки показывают возможные переходы, включая возвраты между модулями. Маршруты сохраняют порядок действий и условия; не все соседние переходы можно произвольно объединять.",
  "statistics": {
    "nodes": 75,
    "edges": 111,
    "modules": 11,
    "routes": 41,
    "longestRoute": 32
  },
  "modules": [
    {
      "id": "capture",
      "name": "Capture",
      "description": "Источники и последовательности",
      "optional": false
    },
    {
      "id": "selector",
      "name": "Canvas / Selector",
      "description": "Объекты, области, описания",
      "optional": false
    },
    {
      "id": "processing",
      "name": "Обработка",
      "description": "Операции, схемы, результаты",
      "optional": false
    },
    {
      "id": "project",
      "name": "Проект",
      "description": "Сохранение и передача",
      "optional": false
    },
    {
      "id": "dataset",
      "name": "Датасеты",
      "description": "Образцы, разметка, версии",
      "optional": false
    },
    {
      "id": "agent",
      "name": "AI Agent",
      "description": "Действия в рабочих областях",
      "optional": true
    },
    {
      "id": "code",
      "name": "Code",
      "description": "Проект, Python и модели",
      "optional": true
    },
    {
      "id": "learning",
      "name": "Обучение",
      "description": "Эксперименты и кандидаты",
      "optional": false
    },
    {
      "id": "models",
      "name": "Модели",
      "description": "Разметка и конечная программа",
      "optional": false
    },
    {
      "id": "environment",
      "name": "Рабочая среда",
      "description": "Режимы, голос, подключения",
      "optional": false
    },
    {
      "id": "runtime",
      "name": "Запуск и проверка",
      "description": "Программы и модели",
      "optional": false
    }
  ],
  "groups": [
    {
      "id": "image-project",
      "name": "Изображение и проект"
    },
    {
      "id": "processing-flow",
      "name": "Обработка и результаты"
    },
    {
      "id": "learning-flow",
      "name": "Датасет, обучение и модель"
    },
    {
      "id": "agent-flow",
      "name": "Задачи AI Agent"
    },
    {
      "id": "code-flow",
      "name": "Продолжение работы в Code"
    },
    {
      "id": "environment-flow",
      "name": "Условия работы и помощь"
    }
  ],
  "nodes": [
    {
      "id": "media",
      "name": "Открыть изображение или видео",
      "module": "capture",
      "description": "Откройте медиафайл и выберите кадр для дальнейшей работы.",
      "optional": false
    },
    {
      "id": "screen",
      "name": "Записать экран или окно",
      "module": "capture",
      "description": "Выберите источник захвата, запишите нужный фрагмент и остановитесь на интересующем кадре.",
      "optional": false
    },
    {
      "id": "camera",
      "name": "Подключить камеру или поток",
      "module": "capture",
      "description": "Capture получает кадры с камеры или из потока. Подключение и доступность источника проверяются в программе.",
      "optional": false
    },
    {
      "id": "frame",
      "name": "Выбрать кадр на таймлайне",
      "module": "capture",
      "description": "Просматривайте запись, меняйте положение на таймлайне и передавайте выбранный кадр на Canvas.",
      "optional": false
    },
    {
      "id": "element",
      "name": "Выделить объект или область",
      "module": "selector",
      "description": "На Canvas выберите форму и назначение разметки. Элемент, признак, контейнер и область датасета решают разные задачи.",
      "optional": false
    },
    {
      "id": "feature",
      "name": "Добавить отличительный признак",
      "module": "selector",
      "description": "Выделите характерную часть объекта и проверьте её владельца и свойства.",
      "optional": false
    },
    {
      "id": "search-area",
      "name": "Ограничить область поиска",
      "module": "selector",
      "description": "Обозначьте область изображения, внутри которой нужно искать объект. Её назначение отличается от области захвата и области обработки.",
      "optional": false
    },
    {
      "id": "dataset-model",
      "name": "Связать объект с датасетом и моделью",
      "module": "selector",
      "description": "В диалоге связи выберите «Датасет → модель». Объект связывается с задачей датасета и её основной моделью; связь можно подготовить до окончания обучения. Включение модели в конечную программу задаётся отдельно в её профиле.",
      "optional": false
    },
    {
      "id": "describe",
      "name": "Назвать и описать объект",
      "module": "selector",
      "description": "Дополните геометрию понятным названием и описанием задачи. Описание можно подготовить голосом.",
      "optional": false
    },
    {
      "id": "relations",
      "name": "Связать объекты",
      "module": "selector",
      "description": "Проверьте состав групп, отношения и свойства через дерево и граф проекта.",
      "optional": false
    },
    {
      "id": "history",
      "name": "Проверить историю изменений",
      "module": "selector",
      "description": "Просматривайте изменения разметки и используйте доступные действия отмены и повтора.",
      "optional": false
    },
    {
      "id": "operation",
      "name": "Настроить одну операцию",
      "module": "processing",
      "description": "Выберите исходное изображение или область, операцию и параметры. Сравните результат с исходником.",
      "optional": false
    },
    {
      "id": "chain",
      "name": "Собрать цепочку шагов",
      "module": "processing",
      "description": "Соедините несколько операций последовательно и проверьте промежуточные результаты.",
      "optional": false
    },
    {
      "id": "graph",
      "name": "Разветвить схему обработки",
      "module": "processing",
      "description": "Используйте граф, когда для обработки нужны связанные узлы и несколько ветвей.",
      "optional": false
    },
    {
      "id": "review",
      "name": "Запустить и сохранить результат",
      "module": "processing",
      "description": "Нажмите «Запустить и сохранить», затем проверьте полученный результат. Найденные объекты ещё не становятся разметкой проекта.",
      "optional": false
    },
    {
      "id": "apply-result",
      "name": "Добавить результат как элементы",
      "module": "processing",
      "description": "Проверьте найденные объекты и нажмите «Добавить как элементы» для подходящих результатов. Вычисление и принятие разметки — отдельные действия.",
      "optional": false
    },
    {
      "id": "cv-python",
      "name": "Открыть Python-код обработки",
      "module": "processing",
      "description": "В панели обработки нажмите «Открыть код». Программа создаст снимок текущей операции, цепочки или графа и покажет сгенерированный Python-пакет. Выбор «Параметры / Код» для документации проекта настраивается отдельно.",
      "optional": true
    },
    {
      "id": "cv-working-copy",
      "name": "Открыть рабочую копию в Screph Code",
      "module": "code",
      "description": "В окне кода обработки нажмите «Открыть в Screph Code». Программа подготовит редактируемую рабочую копию Python-пакета. Сгенерированный снимок останется отдельно; открытие редактора само по себе не запускает код или агента.",
      "optional": true
    },
    {
      "id": "cv-verify",
      "name": "Проверить эквивалентность кода",
      "module": "processing",
      "description": "В окне кода обработки выберите сгенерированный снимок или подготовленную рабочую копию и нажмите «Проверить эквивалентность». Нужна настроенная среда Final Code или явно выбранный Python.",
      "optional": true
    },
    {
      "id": "code-operation",
      "name": "Добавить операцию обработки с кодом",
      "module": "processing",
      "description": "Добавьте собственный Python-код как операцию в обработке. Это вход в схему обработки: он дополняет готовые операции и отличается от экспорта сгенерированного пакета.",
      "optional": true
    },
    {
      "id": "sequence",
      "name": "Обработать последовательность кадров",
      "module": "processing",
      "description": "Выберите подготовленную последовательность, настройте анализ и просмотрите результаты, связанные с кадрами.",
      "optional": false
    },
    {
      "id": "industrial",
      "name": "Исследовать промышленную задачу",
      "module": "processing",
      "description": "В промышленном режиме есть предметные настройки и работа с кандидатами. Полный производственный процесс ещё не готов.",
      "optional": false
    },
    {
      "id": "uav",
      "name": "Исследовать данные БПЛА",
      "module": "processing",
      "description": "Рабочая область БПЛА связывает источники, подготовку и результаты анализа. Полный предметный процесс ещё не готов; это не управление полётом.",
      "optional": false
    },
    {
      "id": "dataset-edit",
      "name": "Редактировать образец на Canvas",
      "module": "dataset",
      "description": "Откройте образец датасета на общем Canvas и измените его разметку. В этой рабочей области изменения относятся к датасету; разметка проекта Selector сохраняет собственную историю.",
      "optional": false
    },
    {
      "id": "dataset",
      "name": "Собрать образцы и классы",
      "module": "dataset",
      "description": "Перенесите нужные области в датасет, задайте классы и проверьте примеры для выбранной задачи.",
      "optional": false
    },
    {
      "id": "dataset-version",
      "name": "Подготовить версию данных",
      "module": "dataset",
      "description": "Проверьте разметку и состав данных перед обучением. Зафиксированная версия позволяет связать эксперимент с его входными данными.",
      "optional": false
    },
    {
      "id": "training-corrections",
      "name": "Вернуть ошибки в датасет исправлений",
      "module": "learning",
      "description": "После оценки модели выберите ошибки и создайте датасет исправлений. Он становится новым черновиком для уточнения разметки и следующего обучения; исходная версия данных сохраняется.",
      "optional": false
    },
    {
      "id": "training",
      "name": "Настроить эксперимент обучения",
      "module": "learning",
      "description": "Выберите данные, модель и параметры. Подготовьте версию данных и подтвердите запуск. После успешного обучения кандидат можно проверить, выпустить как модель и использовать в конечной программе.",
      "optional": false
    },
    {
      "id": "model-check",
      "name": "Проверить модель в Runtime",
      "module": "runtime",
      "description": "Откройте кандидат или выпущенную модель в Runtime Workbench. Выберите источник и просмотрите результаты распознавания; их можно показать на Canvas. Проверка сама по себе не включает модель в конечную программу.",
      "optional": false
    },
    {
      "id": "model-promote",
      "name": "Выпустить кандидата модели",
      "module": "models",
      "description": "После успешного обучения нажмите «Выпустить кандидата…», задайте имя модели и при необходимости выберите «Сделать основной». Модель сохраняет связь со своей версией данных и результатами обучения.",
      "optional": false
    },
    {
      "id": "model-profile",
      "name": "Описать вход и результат модели",
      "module": "models",
      "description": "В «Описание и роль модели…» включите «Включать основную модель в конечную программу». Укажите источник входных данных и использование результата. При передаче сохранённого проекта в Code модель и необходимые материалы включаются в контекст программы.",
      "optional": false
    },
    {
      "id": "model-code",
      "name": "Передать модель вместе с проектом в Code",
      "module": "models",
      "description": "Передайте сохранённый проект в Code. Основные модели, для которых включено использование в конечной программе, передаются с описанием входов, результатов и необходимыми ресурсами. В Code можно вернуться к модели или версии датасета.",
      "optional": true
    },
    {
      "id": "model-assist",
      "name": "Размечать данные своей моделью",
      "module": "models",
      "description": "Используйте основную модель сегментации для предложений разметки в Learning. Просмотрите результат и примите подходящие маски; проверка разметки остаётся отдельным действием.",
      "optional": false
    },
    {
      "id": "model-canvas",
      "name": "Показать распознавание на Canvas",
      "module": "models",
      "description": "Выберите изображения для проверки выпущенной модели и просмотрите распознавание на Canvas. Предсказания отображаются поверх изображения; они не становятся подтверждённой разметкой автоматически.",
      "optional": false
    },
    {
      "id": "agent-context",
      "name": "Передать агенту контекст проекта",
      "module": "agent",
      "description": "Подготовьте изображения, объекты и описание задачи. Для общения с агентом требуется настроенное подключение к модели.",
      "optional": true
    },
    {
      "id": "agent-actions",
      "name": "Управлять участием агента",
      "module": "agent",
      "description": "Выберите способ участия агента и разрешения. Агент использует инструменты Canvas, обработки и датасетов; применение проходит проверки соответствующего модуля. Ручной, адаптивный и делегированный режимы определяют участие пользователя.",
      "optional": true
    },
    {
      "id": "agent-canvas",
      "name": "Создавать и изменять разметку с агентом",
      "module": "agent",
      "description": "Передайте изображение и задачу. Агент может подготовить и применить действия над объектами Canvas в пределах выбранных разрешений. Изменения и их результаты остаются в проекте.",
      "optional": true
    },
    {
      "id": "agent-processing",
      "name": "Составлять и проверять обработку с агентом",
      "module": "agent",
      "description": "Агент может настраивать схему обработки, подготавливать Python-операции, запускать доступные проверки и анализировать результат. Код и результаты проходят проверки владельца обработки и выбранных разрешений.",
      "optional": true
    },
    {
      "id": "agent-dataset",
      "name": "Готовить датасет с агентом",
      "module": "agent",
      "description": "Агент помогает создать датасет и подготовить предложения разметки или новые изображения. Результаты проверяются перед импортом; принятая разметка затем проходит контроль качества.",
      "optional": true
    },
    {
      "id": "learning-agent",
      "name": "Обсудить обучение с помощником",
      "module": "agent",
      "description": "Помощник обучения объясняет текущие данные, рецепт и готовность по текстовому контексту. Этот чат не запускает обучение и не изменяет параметры: решение и действия остаются у пользователя.",
      "optional": true
    },
    {
      "id": "agent-save",
      "name": "Сохранить подготовленный агентом проект",
      "module": "agent",
      "description": "Агент использует штатное сохранение проекта. Сохранённая редакция связывает изображение, разметку и обработку; дальнейшая передача в Code относится к этой редакции.",
      "optional": true
    },
    {
      "id": "agent-handoff",
      "name": "Передать задачу из агента в Code",
      "module": "agent",
      "description": "После сохранения агент может передать задачу и материалы проекта в кодовую рабочую область. Подготовка кода, его проверка и запуск имеют отдельные результаты; состояние передачи возвращается в задачу агента.",
      "optional": true
    },
    {
      "id": "code-objects",
      "name": "Вернуться из Code к объекту проекта",
      "module": "code",
      "description": "Во вкладке «Объекты» выберите объект, признак, связь или сохранённый результат обработки и покажите его в Selector. Программа открывает соответствующий объект текущего проекта.",
      "optional": true
    },
    {
      "id": "code",
      "name": "Передать проект в Code",
      "module": "code",
      "description": "Откройте сохранённый проект в Селекторе. Кнопка «Передать в Code» сохраняет его и передаёт выбранному в профиле инструменту кода: Screph Code или внешнему редактору. Запуск агента задаётся отдельно.",
      "optional": true
    },
    {
      "id": "code-agent",
      "name": "Обсудить код с агентом",
      "module": "code",
      "description": "Передайте задачу и вложения агенту в Screph Code, затем просмотрите предложенные изменения.",
      "optional": true
    },
    {
      "id": "model-return",
      "name": "Вернуться из Code к модели и данным",
      "module": "code",
      "description": "Из контекста модели в Code откройте выпущенную модель или связанную версию датасета в Learning. Это позволяет проверить происхождение модели и продолжить подготовку данных.",
      "optional": true
    },
    {
      "id": "run",
      "name": "Запустить и наблюдать выполнение",
      "module": "runtime",
      "description": "Проверьте готовность проекта и среды, запустите программу и следите за состоянием и журналами. Действия ввода используют настройки программы.",
      "optional": true
    },
    {
      "id": "ros",
      "name": "Подключить ROS 2",
      "module": "code",
      "description": "Опциональный мост связывает код и обмен данными с внешней средой ROS 2. Для него нужна отдельно настроенная среда.",
      "optional": true
    },
    {
      "id": "save",
      "name": "Сохранить проект",
      "module": "project",
      "description": "Сохраните разметку, описания, связи и относящиеся к проекту данные, чтобы вернуться к работе позже.",
      "optional": false
    },
    {
      "id": "open-project",
      "name": "Открыть существующий проект",
      "module": "project",
      "description": "Выберите сохранённый проект и продолжите работу с его данными и структурой.",
      "optional": false
    },
    {
      "id": "export",
      "name": "Экспортировать подготовленные данные",
      "module": "project",
      "description": "Выберите доступный экспорт в модуле, где получен результат: кадры, результаты обработки или данные датасета.",
      "optional": false
    },
    {
      "id": "modes",
      "name": "Выбрать режим программы",
      "module": "environment",
      "description": "Режим задаёт предметную область и доступность инструментов. Общий режим и автоматизация GUI доступны; промышленный режим и БПЛА развиваются, наземная робототехника пока недоступна.",
      "optional": false
    },
    {
      "id": "interaction",
      "name": "Настроить взаимодействие",
      "module": "environment",
      "description": "Выберите настройки интерфейса и подходящий профиль взаимодействия с Canvas.",
      "optional": false
    },
    {
      "id": "dependencies",
      "name": "Проверить зависимости и готовность",
      "module": "environment",
      "description": "Проверьте компоненты, нужные для выбранной возможности. Готовность зависит от установленной среды и конкретной операции.",
      "optional": false
    },
    {
      "id": "connections",
      "name": "Подключить модели и провайдеров",
      "module": "environment",
      "description": "Настройте подключения и выберите модели для нужных задач. Доступность определяется выбранным провайдером и его настройками.",
      "optional": false
    },
    {
      "id": "voice",
      "name": "Подготовить описание голосом",
      "module": "environment",
      "description": "В программе запишите речь, проверьте распознанный текст и используйте его как описание. Режим и провайдер распознавания задаются в настройках.",
      "optional": false
    },
    {
      "id": "feedback",
      "name": "Отправить контекст в поддержку",
      "module": "environment",
      "description": "Выберите относящиеся к вопросу объекты и снимки, проверьте состав обращения и подготовьте его к отправке.",
      "optional": false
    },
    {
      "id": "help",
      "name": "Открыть справку и демонстрации",
      "module": "environment",
      "description": "Справка объясняет действия и ограничения, а демонстрации показывают последовательность работы с интерфейсом.",
      "optional": false
    },
    {
      "id": "confirm-training",
      "name": "Проверить входы и подтвердить обучение",
      "module": "learning",
      "description": "Проверить входы и подтвердить обучение",
      "optional": false
    },
    {
      "id": "training-results",
      "name": "Открыть метрики завершённого обучения",
      "module": "learning",
      "description": "Открыть метрики завершённого обучения",
      "optional": false
    },
    {
      "id": "select-training-errors",
      "name": "Выбрать ошибки в результатах обучения",
      "module": "learning",
      "description": "Выбрать ошибки в результатах обучения",
      "optional": false
    },
    {
      "id": "activate-model",
      "name": "Сделать выпущенную модель основной",
      "module": "models",
      "description": "Сделать выпущенную модель основной",
      "optional": false
    },
    {
      "id": "model-opt-in",
      "name": "Включить модель в программу и сохранить профиль",
      "module": "models",
      "description": "Включить модель в программу и сохранить профиль",
      "optional": false
    },
    {
      "id": "review-labels",
      "name": "Проверить и подтвердить разметку образцов",
      "module": "dataset",
      "description": "Проверить и подтвердить разметку образцов",
      "optional": false
    },
    {
      "id": "review-masks",
      "name": "Выбрать подходящие предложения масок",
      "module": "dataset",
      "description": "Выбрать подходящие предложения масок",
      "optional": false
    },
    {
      "id": "accept-masks",
      "name": "Принять выбранные маски",
      "module": "dataset",
      "description": "Принять выбранные маски",
      "optional": false
    },
    {
      "id": "review-agent-canvas",
      "name": "Проверить предложения и их применение",
      "module": "selector",
      "description": "Проверка и применение проходят через владельца Canvas с учётом выбранного режима участия и разрешений.",
      "optional": false
    },
    {
      "id": "review-agent-dataset",
      "name": "Просмотреть предложенные образцы и разметку",
      "module": "dataset",
      "description": "Просмотреть предложенные образцы и разметку",
      "optional": false
    },
    {
      "id": "import-agent-dataset",
      "name": "Выбрать и импортировать предложения",
      "module": "dataset",
      "description": "Выбрать и импортировать предложения",
      "optional": false
    },
    {
      "id": "review-code",
      "name": "Просмотреть изменения кода",
      "module": "code",
      "description": "Просмотреть изменения кода",
      "optional": false
    },
    {
      "id": "choose-run-file",
      "name": "Создать или выбрать запускаемый файл",
      "module": "code",
      "description": "Рабочая копия обработки предоставляет функции Python. Для самостоятельного запуска нужен файл, который вызывает нужную функцию.",
      "optional": false
    },
    {
      "id": "program-output",
      "name": "Проверить вывод и журнал программы",
      "module": "runtime",
      "description": "Проверить вывод и журнал программы",
      "optional": false
    },
    {
      "id": "model-provenance",
      "name": "Проверить модель и её исходную версию данных",
      "module": "models",
      "description": "Проверить модель и её исходную версию данных",
      "optional": false
    },
    {
      "id": "select-dataset-draft",
      "name": "Открыть редактируемый черновик датасета",
      "module": "dataset",
      "description": "Зафиксированная версия остаётся доступной только для чтения. Изменения вносятся в отдельный черновик.",
      "optional": false
    },
    {
      "id": "sequence-observations",
      "name": "Просмотреть наблюдения по кадрам",
      "module": "processing",
      "description": "Просмотреть наблюдения по кадрам",
      "optional": false
    }
  ],
  "edges": [
    {
      "id": "media>element",
      "source": "media",
      "target": "element",
      "routes": [
        "image-save",
        "image-program",
        "voice-project",
        "existing-model",
        "operation-project",
        "operation-program",
        "chain-program",
        "graph-program",
        "custom-operation",
        "result-export",
        "cv-copy-verify",
        "cv-copy-program",
        "cv-copy-fix",
        "cv-snapshot-verify",
        "cv-refine",
        "model-program",
        "model-canvas",
        "model-corrections",
        "model-assisted-labels",
        "environment-project",
        "help-project"
      ],
      "transfer": {
        "kind": "image",
        "icon": "transfer-image"
      }
    },
    {
      "id": "element>describe",
      "source": "element",
      "target": "describe",
      "routes": [
        "image-save",
        "image-program",
        "video-program",
        "screen-program",
        "camera-project",
        "environment-project",
        "help-project"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "describe>relations",
      "source": "describe",
      "target": "relations",
      "routes": [
        "image-save",
        "image-program",
        "voice-project",
        "operation-project",
        "operation-program",
        "chain-program",
        "graph-program",
        "custom-operation",
        "cv-refine",
        "agent-markup-code",
        "code-return-object",
        "code-return-processing",
        "environment-project"
      ],
      "transfer": {
        "kind": "text",
        "icon": "transfer-text"
      }
    },
    {
      "id": "relations>save",
      "source": "relations",
      "target": "save",
      "routes": [
        "image-save",
        "image-program",
        "voice-project",
        "operation-project",
        "operation-program",
        "chain-program",
        "graph-program",
        "custom-operation",
        "cv-refine",
        "code-return-processing",
        "environment-project"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "save>code",
      "source": "save",
      "target": "code",
      "routes": [
        "image-program",
        "video-program",
        "screen-program",
        "voice-project",
        "operation-program",
        "chain-program",
        "graph-program",
        "custom-operation",
        "cv-refine",
        "code-return-object",
        "code-return-processing"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "code>code-agent",
      "source": "code",
      "target": "code-agent",
      "routes": [
        "image-program",
        "video-program",
        "screen-program",
        "voice-project",
        "operation-program",
        "chain-program",
        "graph-program",
        "custom-operation",
        "cv-refine",
        "existing-project-code",
        "code-revise-run",
        "code-return-object",
        "code-return-processing"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "code-agent>review-code",
      "source": "code-agent",
      "target": "review-code",
      "routes": [
        "image-program",
        "video-program",
        "screen-program",
        "voice-project",
        "existing-model",
        "operation-program",
        "chain-program",
        "graph-program",
        "custom-operation",
        "cv-copy-verify",
        "cv-copy-program",
        "cv-copy-fix",
        "cv-refine",
        "model-program",
        "model-corrections",
        "model-assisted-labels",
        "agent-markup-code",
        "agent-cv-code",
        "agent-python",
        "agent-data-model",
        "existing-project-code",
        "code-revise-run",
        "code-return-object",
        "code-return-processing",
        "code-return-model",
        "ros-exchange",
        "connected-agent"
      ],
      "transfer": {
        "kind": "code",
        "icon": "transfer-code"
      }
    },
    {
      "id": "review-code>choose-run-file",
      "source": "review-code",
      "target": "choose-run-file",
      "routes": [
        "image-program",
        "video-program",
        "screen-program",
        "voice-project",
        "existing-model",
        "operation-program",
        "chain-program",
        "graph-program",
        "custom-operation",
        "cv-refine",
        "model-program",
        "model-corrections",
        "model-assisted-labels",
        "agent-markup-code",
        "agent-cv-code",
        "agent-data-model",
        "existing-project-code",
        "code-revise-run",
        "code-return-object",
        "code-return-processing",
        "code-return-model",
        "ros-exchange",
        "connected-agent"
      ],
      "transfer": {
        "kind": "code",
        "icon": "transfer-code"
      }
    },
    {
      "id": "choose-run-file>run",
      "source": "choose-run-file",
      "target": "run",
      "routes": [
        "image-program",
        "video-program",
        "screen-program",
        "voice-project",
        "existing-model",
        "operation-program",
        "chain-program",
        "graph-program",
        "custom-operation",
        "cv-copy-program",
        "cv-refine",
        "model-program",
        "model-corrections",
        "model-assisted-labels",
        "agent-markup-code",
        "agent-cv-code",
        "agent-data-model",
        "existing-project-code",
        "code-revise-run",
        "code-return-object",
        "code-return-processing",
        "code-return-model",
        "ros-exchange",
        "connected-agent"
      ],
      "transfer": {
        "kind": "code",
        "icon": "transfer-code"
      }
    },
    {
      "id": "run>program-output",
      "source": "run",
      "target": "program-output",
      "routes": [
        "image-program",
        "video-program",
        "screen-program",
        "voice-project",
        "existing-model",
        "operation-program",
        "chain-program",
        "graph-program",
        "custom-operation",
        "cv-copy-program",
        "cv-refine",
        "model-program",
        "model-corrections",
        "model-assisted-labels",
        "agent-markup-code",
        "agent-cv-code",
        "agent-data-model",
        "existing-project-code",
        "code-revise-run",
        "code-return-object",
        "code-return-processing",
        "code-return-model",
        "ros-exchange",
        "connected-agent"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "media>frame",
      "source": "media",
      "target": "frame",
      "routes": [
        "video-program"
      ],
      "transfer": {
        "kind": "image",
        "icon": "transfer-image"
      }
    },
    {
      "id": "frame>element",
      "source": "frame",
      "target": "element",
      "routes": [
        "video-program",
        "screen-program",
        "camera-project"
      ],
      "transfer": {
        "kind": "image",
        "icon": "transfer-image"
      }
    },
    {
      "id": "describe>feature",
      "source": "describe",
      "target": "feature",
      "routes": [
        "video-program",
        "screen-program",
        "camera-project"
      ],
      "transfer": {
        "kind": "text",
        "icon": "transfer-text"
      }
    },
    {
      "id": "feature>search-area",
      "source": "feature",
      "target": "search-area",
      "routes": [
        "video-program",
        "screen-program",
        "camera-project"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "search-area>relations",
      "source": "search-area",
      "target": "relations",
      "routes": [
        "video-program",
        "screen-program",
        "camera-project"
      ],
      "transfer": {
        "kind": "image",
        "icon": "transfer-image"
      }
    },
    {
      "id": "relations>history",
      "source": "relations",
      "target": "history",
      "routes": [
        "video-program",
        "screen-program",
        "camera-project",
        "code-return-object"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "history>save",
      "source": "history",
      "target": "save",
      "routes": [
        "video-program",
        "screen-program",
        "camera-project",
        "code-return-object"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "screen>frame",
      "source": "screen",
      "target": "frame",
      "routes": [
        "screen-program",
        "frame-export",
        "temporal-observations"
      ],
      "transfer": {
        "kind": "image",
        "icon": "transfer-image"
      }
    },
    {
      "id": "camera>frame",
      "source": "camera",
      "target": "frame",
      "routes": [
        "camera-project"
      ],
      "transfer": {
        "kind": "image",
        "icon": "transfer-image"
      }
    },
    {
      "id": "element>voice",
      "source": "element",
      "target": "voice",
      "routes": [
        "voice-project"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "voice>describe",
      "source": "voice",
      "target": "describe",
      "routes": [
        "voice-project"
      ],
      "transfer": {
        "kind": "text",
        "icon": "transfer-text"
      }
    },
    {
      "id": "element>dataset-model",
      "source": "element",
      "target": "dataset-model",
      "routes": [
        "existing-model"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "dataset-model>model-profile",
      "source": "dataset-model",
      "target": "model-profile",
      "routes": [
        "existing-model"
      ],
      "transfer": {
        "kind": "model",
        "icon": "transfer-model"
      }
    },
    {
      "id": "model-profile>model-opt-in",
      "source": "model-profile",
      "target": "model-opt-in",
      "routes": [
        "existing-model",
        "model-program",
        "model-corrections",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "model-opt-in>save",
      "source": "model-opt-in",
      "target": "save",
      "routes": [
        "existing-model",
        "model-program",
        "model-corrections",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "model",
        "icon": "transfer-model"
      }
    },
    {
      "id": "save>model-code",
      "source": "save",
      "target": "model-code",
      "routes": [
        "existing-model",
        "model-program",
        "model-corrections",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "model-code>code-agent",
      "source": "model-code",
      "target": "code-agent",
      "routes": [
        "existing-model",
        "model-program",
        "model-corrections",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "model",
        "icon": "transfer-model"
      }
    },
    {
      "id": "frame>export",
      "source": "frame",
      "target": "export",
      "routes": [
        "frame-export"
      ],
      "transfer": {
        "kind": "image",
        "icon": "transfer-image"
      }
    },
    {
      "id": "element>operation",
      "source": "element",
      "target": "operation",
      "routes": [
        "operation-project",
        "operation-program",
        "cv-refine"
      ],
      "transfer": {
        "kind": "image",
        "icon": "transfer-image"
      }
    },
    {
      "id": "operation>review",
      "source": "operation",
      "target": "review",
      "routes": [
        "operation-project",
        "operation-program",
        "cv-refine",
        "code-return-processing"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "review>apply-result",
      "source": "review",
      "target": "apply-result",
      "routes": [
        "operation-project",
        "operation-program",
        "chain-program",
        "graph-program",
        "custom-operation",
        "cv-refine",
        "agent-cv-code",
        "code-return-processing"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "apply-result>describe",
      "source": "apply-result",
      "target": "describe",
      "routes": [
        "operation-project",
        "operation-program",
        "chain-program",
        "graph-program",
        "custom-operation",
        "cv-refine",
        "agent-cv-code",
        "code-return-processing"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "element>chain",
      "source": "element",
      "target": "chain",
      "routes": [
        "chain-program",
        "result-export"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "chain>review",
      "source": "chain",
      "target": "review",
      "routes": [
        "chain-program",
        "custom-operation",
        "result-export",
        "cv-refine",
        "agent-cv-code",
        "agent-python"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "element>graph",
      "source": "element",
      "target": "graph",
      "routes": [
        "graph-program",
        "cv-copy-verify",
        "cv-copy-program",
        "cv-copy-fix",
        "cv-snapshot-verify"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "graph>review",
      "source": "graph",
      "target": "review",
      "routes": [
        "graph-program",
        "cv-copy-verify",
        "cv-copy-program",
        "cv-copy-fix",
        "cv-snapshot-verify"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "element>code-operation",
      "source": "element",
      "target": "code-operation",
      "routes": [
        "custom-operation"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "code-operation>chain",
      "source": "code-operation",
      "target": "chain",
      "routes": [
        "custom-operation"
      ],
      "transfer": {
        "kind": "code",
        "icon": "transfer-code"
      }
    },
    {
      "id": "review>export",
      "source": "review",
      "target": "export",
      "routes": [
        "result-export"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "review>cv-python",
      "source": "review",
      "target": "cv-python",
      "routes": [
        "cv-copy-verify",
        "cv-copy-program",
        "cv-copy-fix",
        "cv-snapshot-verify",
        "agent-python"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "cv-python>cv-working-copy",
      "source": "cv-python",
      "target": "cv-working-copy",
      "routes": [
        "cv-copy-verify",
        "cv-copy-program",
        "cv-copy-fix",
        "agent-python"
      ],
      "transfer": {
        "kind": "code",
        "icon": "transfer-code"
      }
    },
    {
      "id": "cv-working-copy>code-agent",
      "source": "cv-working-copy",
      "target": "code-agent",
      "routes": [
        "cv-copy-verify",
        "cv-copy-program",
        "cv-copy-fix",
        "agent-python"
      ],
      "transfer": {
        "kind": "code",
        "icon": "transfer-code"
      }
    },
    {
      "id": "review-code>cv-verify",
      "source": "review-code",
      "target": "cv-verify",
      "routes": [
        "cv-copy-verify",
        "cv-copy-program",
        "cv-copy-fix",
        "agent-python"
      ],
      "transfer": {
        "kind": "code",
        "icon": "transfer-code"
      }
    },
    {
      "id": "cv-verify>choose-run-file",
      "source": "cv-verify",
      "target": "choose-run-file",
      "routes": [
        "cv-copy-program"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "cv-verify>code-agent",
      "source": "cv-verify",
      "target": "code-agent",
      "routes": [
        "cv-copy-fix"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "cv-python>cv-verify",
      "source": "cv-python",
      "target": "cv-verify",
      "routes": [
        "cv-snapshot-verify"
      ],
      "transfer": {
        "kind": "code",
        "icon": "transfer-code"
      }
    },
    {
      "id": "review>chain",
      "source": "review",
      "target": "chain",
      "routes": [
        "cv-refine"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "frame>sequence",
      "source": "frame",
      "target": "sequence",
      "routes": [
        "temporal-observations"
      ],
      "transfer": {
        "kind": "image",
        "icon": "transfer-image"
      }
    },
    {
      "id": "sequence>sequence-observations",
      "source": "sequence",
      "target": "sequence-observations",
      "routes": [
        "temporal-observations"
      ],
      "transfer": {
        "kind": "image",
        "icon": "transfer-image"
      }
    },
    {
      "id": "element>dataset",
      "source": "element",
      "target": "dataset",
      "routes": [
        "model-program",
        "model-canvas",
        "model-corrections",
        "model-assisted-labels"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "dataset>dataset-edit",
      "source": "dataset",
      "target": "dataset-edit",
      "routes": [
        "model-program",
        "model-canvas",
        "model-corrections",
        "data-export",
        "model-assisted-labels"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "dataset-edit>review-labels",
      "source": "dataset-edit",
      "target": "review-labels",
      "routes": [
        "model-program",
        "model-canvas",
        "model-corrections",
        "data-export",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "review-labels>dataset-version",
      "source": "review-labels",
      "target": "dataset-version",
      "routes": [
        "model-program",
        "model-canvas",
        "model-corrections",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "dataset-version>training",
      "source": "dataset-version",
      "target": "training",
      "routes": [
        "model-program",
        "model-canvas",
        "model-corrections",
        "model-assisted-labels",
        "code-return-model"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "training>confirm-training",
      "source": "training",
      "target": "confirm-training",
      "routes": [
        "model-program",
        "model-canvas",
        "model-corrections",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "model",
        "icon": "transfer-model"
      }
    },
    {
      "id": "confirm-training>training-results",
      "source": "confirm-training",
      "target": "training-results",
      "routes": [
        "model-program",
        "model-canvas",
        "model-corrections",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "training-results>model-check",
      "source": "training-results",
      "target": "model-check",
      "routes": [
        "model-program",
        "model-canvas",
        "model-corrections",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "model-check>model-promote",
      "source": "model-check",
      "target": "model-promote",
      "routes": [
        "model-program",
        "model-canvas",
        "model-corrections",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "model-promote>activate-model",
      "source": "model-promote",
      "target": "activate-model",
      "routes": [
        "model-program",
        "model-corrections",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "model",
        "icon": "transfer-model"
      }
    },
    {
      "id": "activate-model>model-profile",
      "source": "activate-model",
      "target": "model-profile",
      "routes": [
        "model-program",
        "model-corrections",
        "model-assisted-labels",
        "agent-data-model",
        "code-return-model"
      ],
      "transfer": {
        "kind": "model",
        "icon": "transfer-model"
      }
    },
    {
      "id": "model-promote>model-canvas",
      "source": "model-promote",
      "target": "model-canvas",
      "routes": [
        "model-canvas"
      ],
      "transfer": {
        "kind": "model",
        "icon": "transfer-model"
      }
    },
    {
      "id": "training-results>select-training-errors",
      "source": "training-results",
      "target": "select-training-errors",
      "routes": [
        "model-corrections"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "select-training-errors>training-corrections",
      "source": "select-training-errors",
      "target": "training-corrections",
      "routes": [
        "model-corrections"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "training-corrections>dataset-edit",
      "source": "training-corrections",
      "target": "dataset-edit",
      "routes": [
        "model-corrections"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "review-labels>export",
      "source": "review-labels",
      "target": "export",
      "routes": [
        "data-export"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "training-results>model-promote",
      "source": "training-results",
      "target": "model-promote",
      "routes": [
        "model-assisted-labels"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "activate-model>model-assist",
      "source": "activate-model",
      "target": "model-assist",
      "routes": [
        "model-assisted-labels"
      ],
      "transfer": {
        "kind": "model",
        "icon": "transfer-model"
      }
    },
    {
      "id": "model-assist>review-masks",
      "source": "model-assist",
      "target": "review-masks",
      "routes": [
        "model-assisted-labels"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "review-masks>accept-masks",
      "source": "review-masks",
      "target": "accept-masks",
      "routes": [
        "model-assisted-labels"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "accept-masks>dataset-edit",
      "source": "accept-masks",
      "target": "dataset-edit",
      "routes": [
        "model-assisted-labels"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "media>agent-context",
      "source": "media",
      "target": "agent-context",
      "routes": [
        "agent-markup-code",
        "agent-cv-code",
        "agent-python",
        "agent-data-model"
      ],
      "transfer": {
        "kind": "image",
        "icon": "transfer-image"
      }
    },
    {
      "id": "agent-context>agent-actions",
      "source": "agent-context",
      "target": "agent-actions",
      "routes": [
        "agent-markup-code",
        "agent-cv-code",
        "agent-python",
        "agent-data-model",
        "connected-agent"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "agent-actions>agent-canvas",
      "source": "agent-actions",
      "target": "agent-canvas",
      "routes": [
        "agent-markup-code",
        "connected-agent"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "agent-canvas>review-agent-canvas",
      "source": "agent-canvas",
      "target": "review-agent-canvas",
      "routes": [
        "agent-markup-code",
        "connected-agent"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "review-agent-canvas>describe",
      "source": "review-agent-canvas",
      "target": "describe",
      "routes": [
        "agent-markup-code"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "relations>agent-save",
      "source": "relations",
      "target": "agent-save",
      "routes": [
        "agent-markup-code"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "agent-save>agent-handoff",
      "source": "agent-save",
      "target": "agent-handoff",
      "routes": [
        "agent-markup-code",
        "agent-cv-code",
        "connected-agent"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "agent-handoff>code-agent",
      "source": "agent-handoff",
      "target": "code-agent",
      "routes": [
        "agent-markup-code",
        "agent-cv-code",
        "connected-agent"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "agent-actions>agent-processing",
      "source": "agent-actions",
      "target": "agent-processing",
      "routes": [
        "agent-cv-code",
        "agent-python"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "agent-processing>chain",
      "source": "agent-processing",
      "target": "chain",
      "routes": [
        "agent-cv-code",
        "agent-python"
      ],
      "transfer": {
        "kind": "code",
        "icon": "transfer-code"
      }
    },
    {
      "id": "describe>history",
      "source": "describe",
      "target": "history",
      "routes": [
        "agent-cv-code"
      ],
      "transfer": {
        "kind": "text",
        "icon": "transfer-text"
      }
    },
    {
      "id": "history>agent-save",
      "source": "history",
      "target": "agent-save",
      "routes": [
        "agent-cv-code"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "agent-actions>agent-dataset",
      "source": "agent-actions",
      "target": "agent-dataset",
      "routes": [
        "agent-data-model"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "agent-dataset>review-agent-dataset",
      "source": "agent-dataset",
      "target": "review-agent-dataset",
      "routes": [
        "agent-data-model"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "review-agent-dataset>import-agent-dataset",
      "source": "review-agent-dataset",
      "target": "import-agent-dataset",
      "routes": [
        "agent-data-model"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "import-agent-dataset>dataset-edit",
      "source": "import-agent-dataset",
      "target": "dataset-edit",
      "routes": [
        "agent-data-model"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "dataset-version>learning-agent",
      "source": "dataset-version",
      "target": "learning-agent",
      "routes": [
        "agent-data-model"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "learning-agent>training",
      "source": "learning-agent",
      "target": "training",
      "routes": [
        "agent-data-model"
      ],
      "transfer": {
        "kind": "text",
        "icon": "transfer-text"
      }
    },
    {
      "id": "open-project>code",
      "source": "open-project",
      "target": "code",
      "routes": [
        "existing-project-code",
        "code-revise-run",
        "code-return-object",
        "code-return-processing",
        "code-return-model",
        "ros-exchange"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "program-output>code-agent",
      "source": "program-output",
      "target": "code-agent",
      "routes": [
        "code-revise-run"
      ],
      "transfer": {
        "kind": "result",
        "icon": "transfer-result"
      }
    },
    {
      "id": "code>code-objects",
      "source": "code",
      "target": "code-objects",
      "routes": [
        "code-return-object",
        "code-return-processing"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "code-objects>describe",
      "source": "code-objects",
      "target": "describe",
      "routes": [
        "code-return-object"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "code-objects>operation",
      "source": "code-objects",
      "target": "operation",
      "routes": [
        "code-return-processing"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "code>model-return",
      "source": "code",
      "target": "model-return",
      "routes": [
        "code-return-model"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "model-return>model-provenance",
      "source": "model-return",
      "target": "model-provenance",
      "routes": [
        "code-return-model"
      ],
      "transfer": {
        "kind": "model",
        "icon": "transfer-model"
      }
    },
    {
      "id": "model-provenance>select-dataset-draft",
      "source": "model-provenance",
      "target": "select-dataset-draft",
      "routes": [
        "code-return-model"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "select-dataset-draft>dataset-edit",
      "source": "select-dataset-draft",
      "target": "dataset-edit",
      "routes": [
        "code-return-model"
      ],
      "transfer": {
        "kind": "dataset",
        "icon": "transfer-dataset"
      }
    },
    {
      "id": "dependencies>open-project",
      "source": "dependencies",
      "target": "open-project",
      "routes": [
        "ros-exchange"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "code>ros",
      "source": "code",
      "target": "ros",
      "routes": [
        "ros-exchange"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "ros>code-agent",
      "source": "ros",
      "target": "code-agent",
      "routes": [
        "ros-exchange"
      ],
      "transfer": {
        "kind": "action",
        "icon": "transfer-action"
      }
    },
    {
      "id": "modes>interaction",
      "source": "modes",
      "target": "interaction",
      "routes": [
        "environment-project"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "interaction>media",
      "source": "interaction",
      "target": "media",
      "routes": [
        "environment-project"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "dependencies>connections",
      "source": "dependencies",
      "target": "connections",
      "routes": [
        "connected-agent"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "connections>open-project",
      "source": "connections",
      "target": "open-project",
      "routes": [
        "connected-agent"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "open-project>agent-context",
      "source": "open-project",
      "target": "agent-context",
      "routes": [
        "connected-agent"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "review-agent-canvas>agent-save",
      "source": "review-agent-canvas",
      "target": "agent-save",
      "routes": [
        "connected-agent"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    },
    {
      "id": "modes>industrial",
      "source": "modes",
      "target": "industrial",
      "routes": [
        "industrial-status"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "modes>uav",
      "source": "modes",
      "target": "uav",
      "routes": [
        "uav-status"
      ],
      "transfer": {
        "kind": "settings",
        "icon": "transfer-settings"
      }
    },
    {
      "id": "help>media",
      "source": "help",
      "target": "media",
      "routes": [
        "help-project"
      ],
      "transfer": {
        "kind": "action",
        "icon": "transfer-action"
      }
    },
    {
      "id": "describe>save",
      "source": "describe",
      "target": "save",
      "routes": [
        "help-project"
      ],
      "transfer": {
        "kind": "text",
        "icon": "transfer-text"
      }
    },
    {
      "id": "open-project>feedback",
      "source": "open-project",
      "target": "feedback",
      "routes": [
        "support-context"
      ],
      "transfer": {
        "kind": "project",
        "icon": "transfer-project"
      }
    }
  ],
  "routes": [
    {
      "id": "image-save",
      "group": "image-project",
      "actions": [
        "media",
        "element",
        "describe",
        "relations",
        "save"
      ],
      "result": "Сохранённый проект",
      "condition": ""
    },
    {
      "id": "image-program",
      "group": "image-project",
      "actions": [
        "media",
        "element",
        "describe",
        "relations",
        "save",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа и результаты запуска",
      "condition": ""
    },
    {
      "id": "video-program",
      "group": "image-project",
      "actions": [
        "media",
        "frame",
        "element",
        "describe",
        "feature",
        "search-area",
        "relations",
        "history",
        "save",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа по выбранному кадру",
      "condition": "Для видео; признаки и область поиска добавляются по задаче."
    },
    {
      "id": "screen-program",
      "group": "image-project",
      "actions": [
        "screen",
        "frame",
        "element",
        "describe",
        "feature",
        "search-area",
        "relations",
        "history",
        "save",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа по объектам интерфейса",
      "condition": "Кадр выбирается после остановки записи."
    },
    {
      "id": "camera-project",
      "group": "image-project",
      "actions": [
        "camera",
        "frame",
        "element",
        "describe",
        "feature",
        "search-area",
        "relations",
        "history",
        "save"
      ],
      "result": "Сохранённый проект с кадром источника",
      "condition": ""
    },
    {
      "id": "voice-project",
      "group": "image-project",
      "actions": [
        "media",
        "element",
        "voice",
        "describe",
        "relations",
        "save",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа с описанием задачи",
      "condition": ""
    },
    {
      "id": "existing-model",
      "group": "image-project",
      "actions": [
        "media",
        "element",
        "dataset-model",
        "model-profile",
        "model-opt-in",
        "save",
        "model-code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа с выбранной моделью",
      "condition": "Для уже подготовленной основной модели задачи."
    },
    {
      "id": "frame-export",
      "group": "image-project",
      "actions": [
        "screen",
        "frame",
        "export"
      ],
      "result": "Экспортированный кадр",
      "condition": ""
    },
    {
      "id": "operation-project",
      "group": "processing-flow",
      "actions": [
        "media",
        "element",
        "operation",
        "review",
        "apply-result",
        "describe",
        "relations",
        "save"
      ],
      "result": "Проект с принятой разметкой",
      "condition": ""
    },
    {
      "id": "operation-program",
      "group": "processing-flow",
      "actions": [
        "media",
        "element",
        "operation",
        "review",
        "apply-result",
        "describe",
        "relations",
        "save",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа по результатам обработки",
      "condition": ""
    },
    {
      "id": "chain-program",
      "group": "processing-flow",
      "actions": [
        "media",
        "element",
        "chain",
        "review",
        "apply-result",
        "describe",
        "relations",
        "save",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа по результатам цепочки",
      "condition": ""
    },
    {
      "id": "graph-program",
      "group": "processing-flow",
      "actions": [
        "media",
        "element",
        "graph",
        "review",
        "apply-result",
        "describe",
        "relations",
        "save",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа по результатам графа",
      "condition": ""
    },
    {
      "id": "custom-operation",
      "group": "processing-flow",
      "actions": [
        "media",
        "element",
        "code-operation",
        "chain",
        "review",
        "apply-result",
        "describe",
        "relations",
        "save",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Проверенная пользовательская обработка",
      "condition": ""
    },
    {
      "id": "result-export",
      "group": "processing-flow",
      "actions": [
        "media",
        "element",
        "chain",
        "review",
        "export"
      ],
      "result": "Экспортированный результат обработки",
      "condition": ""
    },
    {
      "id": "cv-copy-verify",
      "group": "processing-flow",
      "actions": [
        "media",
        "element",
        "graph",
        "review",
        "cv-python",
        "cv-working-copy",
        "code-agent",
        "review-code",
        "cv-verify"
      ],
      "result": "Отчёт эквивалентности рабочей копии",
      "condition": ""
    },
    {
      "id": "cv-copy-program",
      "group": "processing-flow",
      "actions": [
        "media",
        "element",
        "graph",
        "review",
        "cv-python",
        "cv-working-copy",
        "code-agent",
        "review-code",
        "cv-verify",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Проверенный запуск Python-пакета",
      "condition": "Запускаемый файл должен вызвать функцию обработки; открытие pipeline.py ничего не запускает."
    },
    {
      "id": "cv-copy-fix",
      "group": "processing-flow",
      "actions": [
        "media",
        "element",
        "graph",
        "review",
        "cv-python",
        "cv-working-copy",
        "code-agent",
        "review-code",
        "cv-verify",
        "code-agent",
        "review-code",
        "cv-verify"
      ],
      "result": "Повторный отчёт после изменения кода",
      "condition": ""
    },
    {
      "id": "cv-snapshot-verify",
      "group": "processing-flow",
      "actions": [
        "media",
        "element",
        "graph",
        "review",
        "cv-python",
        "cv-verify"
      ],
      "result": "Отчёт проверки сгенерированного снимка",
      "condition": ""
    },
    {
      "id": "cv-refine",
      "group": "processing-flow",
      "actions": [
        "media",
        "element",
        "operation",
        "review",
        "chain",
        "review",
        "apply-result",
        "describe",
        "relations",
        "save",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа после уточнения обработки",
      "condition": ""
    },
    {
      "id": "temporal-observations",
      "group": "processing-flow",
      "actions": [
        "screen",
        "frame",
        "sequence",
        "sequence-observations"
      ],
      "result": "Наблюдения последовательности кадров",
      "condition": "Результаты последовательности имеют собственные типы и не применяются как обычный CV-результат."
    },
    {
      "id": "model-program",
      "group": "learning-flow",
      "actions": [
        "media",
        "element",
        "dataset",
        "dataset-edit",
        "review-labels",
        "dataset-version",
        "training",
        "confirm-training",
        "training-results",
        "model-check",
        "model-promote",
        "activate-model",
        "model-profile",
        "model-opt-in",
        "save",
        "model-code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа с обученной моделью",
      "condition": ""
    },
    {
      "id": "model-canvas",
      "group": "learning-flow",
      "actions": [
        "media",
        "element",
        "dataset",
        "dataset-edit",
        "review-labels",
        "dataset-version",
        "training",
        "confirm-training",
        "training-results",
        "model-check",
        "model-promote",
        "model-canvas"
      ],
      "result": "Распознавание на Canvas",
      "condition": "Просмотр выпущенной модели. Предсказания показаны поверх изображения; это ещё не подтверждённая разметка."
    },
    {
      "id": "model-corrections",
      "group": "learning-flow",
      "actions": [
        "media",
        "element",
        "dataset",
        "dataset-edit",
        "review-labels",
        "dataset-version",
        "training",
        "confirm-training",
        "training-results",
        "select-training-errors",
        "training-corrections",
        "dataset-edit",
        "review-labels",
        "dataset-version",
        "training",
        "confirm-training",
        "training-results",
        "model-check",
        "model-promote",
        "activate-model",
        "model-profile",
        "model-opt-in",
        "save",
        "model-code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа с моделью после исправлений",
      "condition": "Ошибки выбираются из результатов обучения, а не автоматически из Runtime inference."
    },
    {
      "id": "data-export",
      "group": "learning-flow",
      "actions": [
        "dataset",
        "dataset-edit",
        "review-labels",
        "export"
      ],
      "result": "Экспортированная разметка датасета",
      "condition": "Для поддерживаемых задач детекции и сегментации; экспорт читает текущую разметку черновика."
    },
    {
      "id": "model-assisted-labels",
      "group": "learning-flow",
      "actions": [
        "media",
        "element",
        "dataset",
        "dataset-edit",
        "review-labels",
        "dataset-version",
        "training",
        "confirm-training",
        "training-results",
        "model-promote",
        "activate-model",
        "model-assist",
        "review-masks",
        "accept-masks",
        "dataset-edit",
        "review-labels",
        "dataset-version",
        "training",
        "confirm-training",
        "training-results",
        "model-check",
        "model-promote",
        "activate-model",
        "model-profile",
        "model-opt-in",
        "save",
        "model-code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Модель после уточнения разметки",
      "condition": "Предложения масок доступны для подходящей основной модели сегментации; принятие не заменяет контроль качества."
    },
    {
      "id": "agent-markup-code",
      "group": "agent-flow",
      "actions": [
        "media",
        "agent-context",
        "agent-actions",
        "agent-canvas",
        "review-agent-canvas",
        "describe",
        "relations",
        "agent-save",
        "agent-handoff",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа по подготовленной агентом задаче",
      "condition": ""
    },
    {
      "id": "agent-cv-code",
      "group": "agent-flow",
      "actions": [
        "media",
        "agent-context",
        "agent-actions",
        "agent-processing",
        "chain",
        "review",
        "apply-result",
        "describe",
        "history",
        "agent-save",
        "agent-handoff",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа по проверенной обработке агента",
      "condition": ""
    },
    {
      "id": "agent-python",
      "group": "agent-flow",
      "actions": [
        "media",
        "agent-context",
        "agent-actions",
        "agent-processing",
        "chain",
        "review",
        "cv-python",
        "cv-working-copy",
        "code-agent",
        "review-code",
        "cv-verify"
      ],
      "result": "Проверенная рабочая копия обработки",
      "condition": "Для операций, поддержанных экспортом Python; пользовательский Python не входит в этот перенос."
    },
    {
      "id": "agent-data-model",
      "group": "agent-flow",
      "actions": [
        "media",
        "agent-context",
        "agent-actions",
        "agent-dataset",
        "review-agent-dataset",
        "import-agent-dataset",
        "dataset-edit",
        "review-labels",
        "dataset-version",
        "learning-agent",
        "training",
        "confirm-training",
        "training-results",
        "model-check",
        "model-promote",
        "activate-model",
        "model-profile",
        "model-opt-in",
        "save",
        "model-code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа с моделью из проверенных данных",
      "condition": "Помощник обучения даёт рекомендации; обучение запускает пользователь через Learning."
    },
    {
      "id": "existing-project-code",
      "group": "code-flow",
      "actions": [
        "open-project",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Запуск программы из сохранённого проекта",
      "condition": ""
    },
    {
      "id": "code-revise-run",
      "group": "code-flow",
      "actions": [
        "open-project",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Повторный запуск после правок",
      "condition": ""
    },
    {
      "id": "code-return-object",
      "group": "code-flow",
      "actions": [
        "open-project",
        "code",
        "code-objects",
        "describe",
        "relations",
        "history",
        "save",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа после уточнения объектов проекта",
      "condition": ""
    },
    {
      "id": "code-return-processing",
      "group": "code-flow",
      "actions": [
        "open-project",
        "code",
        "code-objects",
        "operation",
        "review",
        "apply-result",
        "describe",
        "relations",
        "save",
        "code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа после уточнения обработки",
      "condition": ""
    },
    {
      "id": "code-return-model",
      "group": "code-flow",
      "actions": [
        "open-project",
        "code",
        "model-return",
        "model-provenance",
        "select-dataset-draft",
        "dataset-edit",
        "review-labels",
        "dataset-version",
        "training",
        "confirm-training",
        "training-results",
        "model-check",
        "model-promote",
        "activate-model",
        "model-profile",
        "model-opt-in",
        "save",
        "model-code",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Программа с новой версией модели",
      "condition": ""
    },
    {
      "id": "ros-exchange",
      "group": "code-flow",
      "actions": [
        "dependencies",
        "open-project",
        "code",
        "ros",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Результаты программы с ROS 2",
      "condition": "Для настроенной внешней среды ROS 2; интеграция опциональна."
    },
    {
      "id": "environment-project",
      "group": "environment-flow",
      "actions": [
        "modes",
        "interaction",
        "media",
        "element",
        "describe",
        "relations",
        "save"
      ],
      "result": "Проект в выбранной рабочей среде",
      "condition": ""
    },
    {
      "id": "connected-agent",
      "group": "environment-flow",
      "actions": [
        "dependencies",
        "connections",
        "open-project",
        "agent-context",
        "agent-actions",
        "agent-canvas",
        "review-agent-canvas",
        "agent-save",
        "agent-handoff",
        "code-agent",
        "review-code",
        "choose-run-file",
        "run",
        "program-output"
      ],
      "result": "Задача с настроенным подключением агента",
      "condition": ""
    },
    {
      "id": "industrial-status",
      "group": "environment-flow",
      "actions": [
        "modes",
        "industrial"
      ],
      "result": "Экспериментальная рабочая область",
      "condition": "Полный промышленный процесс ещё не готов."
    },
    {
      "id": "uav-status",
      "group": "environment-flow",
      "actions": [
        "modes",
        "uav"
      ],
      "result": "Экспериментальная рабочая область",
      "condition": "Полный процесс БПЛА ещё не готов; это не управление полётом."
    },
    {
      "id": "help-project",
      "group": "environment-flow",
      "actions": [
        "help",
        "media",
        "element",
        "describe",
        "save"
      ],
      "result": "Сохранённая работа после ознакомления",
      "condition": ""
    },
    {
      "id": "support-context",
      "group": "environment-flow",
      "actions": [
        "open-project",
        "feedback"
      ],
      "result": "Обращение с проверенным контекстом",
      "condition": ""
    }
  ],
  "activity": {
    "media": {
      "type": "create",
      "actor": "capture",
      "duration": 1.25,
      "intensity": 0.7
    },
    "screen": {
      "type": "create",
      "actor": "capture",
      "duration": 1.07,
      "intensity": 0.7
    },
    "camera": {
      "type": "create",
      "actor": "capture",
      "duration": 1.25,
      "intensity": 0.7
    },
    "frame": {
      "type": "transfer",
      "actor": "capture",
      "duration": 1.04,
      "intensity": 0.9
    },
    "element": {
      "type": "create",
      "actor": "selector",
      "duration": 1.16,
      "intensity": 0.7
    },
    "feature": {
      "type": "create",
      "actor": "selector",
      "duration": 1.34,
      "intensity": 0.7
    },
    "search-area": {
      "type": "create",
      "actor": "selector",
      "duration": 1.43,
      "intensity": 0.7
    },
    "dataset-model": {
      "type": "transfer",
      "actor": "selector",
      "duration": 0.86,
      "intensity": 0.9
    },
    "describe": {
      "type": "edit",
      "actor": "selector",
      "duration": 1.94,
      "intensity": 0.6
    },
    "relations": {
      "type": "edit",
      "actor": "selector",
      "duration": 1.85,
      "intensity": 0.6
    },
    "history": {
      "type": "review",
      "actor": "selector",
      "duration": 3.01,
      "intensity": 0.45
    },
    "operation": {
      "type": "run",
      "actor": "processing",
      "duration": 2.65,
      "intensity": 1
    },
    "chain": {
      "type": "edit",
      "actor": "processing",
      "duration": 1.67,
      "intensity": 0.6
    },
    "graph": {
      "type": "edit",
      "actor": "processing",
      "duration": 1.67,
      "intensity": 0.6
    },
    "review": {
      "type": "review",
      "actor": "processing",
      "duration": 3.19,
      "intensity": 0.45
    },
    "apply-result": {
      "type": "save",
      "actor": "processing",
      "duration": 1.36,
      "intensity": 0.75
    },
    "cv-python": {
      "type": "transfer",
      "actor": "processing",
      "duration": 0.86,
      "intensity": 0.9
    },
    "cv-working-copy": {
      "type": "transfer",
      "actor": "code",
      "duration": 1.13,
      "intensity": 0.9
    },
    "cv-verify": {
      "type": "run",
      "actor": "processing",
      "duration": 2.74,
      "intensity": 1
    },
    "code-operation": {
      "type": "create",
      "actor": "processing",
      "duration": 1.34,
      "intensity": 0.7
    },
    "sequence": {
      "type": "run",
      "actor": "processing",
      "duration": 2.65,
      "intensity": 1
    },
    "industrial": {
      "type": "review",
      "actor": "processing",
      "duration": 3.1,
      "intensity": 0.45
    },
    "uav": {
      "type": "review",
      "actor": "processing",
      "duration": 3.1,
      "intensity": 0.45
    },
    "dataset-edit": {
      "type": "edit",
      "actor": "dataset",
      "duration": 2.03,
      "intensity": 0.6
    },
    "dataset": {
      "type": "create",
      "actor": "dataset",
      "duration": 1.25,
      "intensity": 0.7
    },
    "dataset-version": {
      "type": "save",
      "actor": "dataset",
      "duration": 1.36,
      "intensity": 0.75
    },
    "training-corrections": {
      "type": "create",
      "actor": "learning",
      "duration": 1.07,
      "intensity": 0.7
    },
    "training": {
      "type": "edit",
      "actor": "learning",
      "duration": 1.67,
      "intensity": 0.6
    },
    "model-check": {
      "type": "run",
      "actor": "runtime",
      "duration": 2.83,
      "intensity": 1
    },
    "model-promote": {
      "type": "save",
      "actor": "models",
      "duration": 1.54,
      "intensity": 0.75
    },
    "model-profile": {
      "type": "edit",
      "actor": "models",
      "duration": 1.85,
      "intensity": 0.6
    },
    "model-code": {
      "type": "transfer",
      "actor": "models",
      "duration": 0.77,
      "intensity": 0.9
    },
    "model-assist": {
      "type": "run",
      "actor": "models",
      "duration": 2.65,
      "intensity": 1
    },
    "model-canvas": {
      "type": "transfer",
      "actor": "models",
      "duration": 0.77,
      "intensity": 0.9
    },
    "agent-context": {
      "type": "edit",
      "actor": "agent",
      "duration": 1.67,
      "intensity": 0.6
    },
    "agent-actions": {
      "type": "edit",
      "actor": "agent",
      "duration": 1.67,
      "intensity": 0.6
    },
    "agent-canvas": {
      "type": "transfer",
      "actor": "agent",
      "duration": 1.04,
      "intensity": 0.9
    },
    "agent-processing": {
      "type": "edit",
      "actor": "agent",
      "duration": 1.85,
      "intensity": 0.6
    },
    "agent-dataset": {
      "type": "edit",
      "actor": "agent",
      "duration": 2.03,
      "intensity": 0.6
    },
    "learning-agent": {
      "type": "review",
      "actor": "agent",
      "duration": 2.92,
      "intensity": 0.45
    },
    "agent-save": {
      "type": "save",
      "actor": "agent",
      "duration": 1.54,
      "intensity": 0.75
    },
    "agent-handoff": {
      "type": "transfer",
      "actor": "agent",
      "duration": 1.04,
      "intensity": 0.9
    },
    "code-objects": {
      "type": "transfer",
      "actor": "code",
      "duration": 0.95,
      "intensity": 0.9
    },
    "code": {
      "type": "transfer",
      "actor": "code",
      "duration": 0.86,
      "intensity": 0.9
    },
    "code-agent": {
      "type": "edit",
      "actor": "code",
      "duration": 1.94,
      "intensity": 0.6
    },
    "model-return": {
      "type": "transfer",
      "actor": "code",
      "duration": 0.86,
      "intensity": 0.9
    },
    "run": {
      "type": "run",
      "actor": "runtime",
      "duration": 2.56,
      "intensity": 1
    },
    "ros": {
      "type": "edit",
      "actor": "code",
      "duration": 1.67,
      "intensity": 0.6
    },
    "save": {
      "type": "save",
      "actor": "project",
      "duration": 1.36,
      "intensity": 0.75
    },
    "open-project": {
      "type": "transfer",
      "actor": "project",
      "duration": 1.04,
      "intensity": 0.9
    },
    "export": {
      "type": "save",
      "actor": "project",
      "duration": 1.63,
      "intensity": 0.75
    },
    "modes": {
      "type": "edit",
      "actor": "environment",
      "duration": 1.76,
      "intensity": 0.6
    },
    "interaction": {
      "type": "edit",
      "actor": "environment",
      "duration": 2.03,
      "intensity": 0.6
    },
    "dependencies": {
      "type": "review",
      "actor": "environment",
      "duration": 2.92,
      "intensity": 0.45
    },
    "connections": {
      "type": "edit",
      "actor": "environment",
      "duration": 1.85,
      "intensity": 0.6
    },
    "voice": {
      "type": "edit",
      "actor": "environment",
      "duration": 2.03,
      "intensity": 0.6
    },
    "feedback": {
      "type": "review",
      "actor": "environment",
      "duration": 2.92,
      "intensity": 0.45
    },
    "help": {
      "type": "review",
      "actor": "environment",
      "duration": 2.92,
      "intensity": 0.45
    },
    "confirm-training": {
      "type": "run",
      "actor": "learning",
      "duration": 2.47,
      "intensity": 1
    },
    "training-results": {
      "type": "review",
      "actor": "learning",
      "duration": 3.01,
      "intensity": 0.45
    },
    "select-training-errors": {
      "type": "review",
      "actor": "learning",
      "duration": 3.28,
      "intensity": 0.45
    },
    "activate-model": {
      "type": "save",
      "actor": "models",
      "duration": 1.54,
      "intensity": 0.75
    },
    "model-opt-in": {
      "type": "save",
      "actor": "models",
      "duration": 1.54,
      "intensity": 0.75
    },
    "review-labels": {
      "type": "review",
      "actor": "dataset",
      "duration": 2.92,
      "intensity": 0.45
    },
    "review-masks": {
      "type": "review",
      "actor": "dataset",
      "duration": 3.01,
      "intensity": 0.45
    },
    "accept-masks": {
      "type": "save",
      "actor": "dataset",
      "duration": 1.45,
      "intensity": 0.75
    },
    "review-agent-canvas": {
      "type": "review",
      "actor": "selector",
      "duration": 3.01,
      "intensity": 0.45
    },
    "review-agent-dataset": {
      "type": "review",
      "actor": "dataset",
      "duration": 3.1,
      "intensity": 0.45
    },
    "import-agent-dataset": {
      "type": "transfer",
      "actor": "dataset",
      "duration": 0.86,
      "intensity": 0.9
    },
    "review-code": {
      "type": "review",
      "actor": "code",
      "duration": 3.28,
      "intensity": 0.45
    },
    "choose-run-file": {
      "type": "review",
      "actor": "code",
      "duration": 3.19,
      "intensity": 0.45
    },
    "program-output": {
      "type": "review",
      "actor": "runtime",
      "duration": 3.28,
      "intensity": 0.45
    },
    "model-provenance": {
      "type": "review",
      "actor": "models",
      "duration": 3.1,
      "intensity": 0.45
    },
    "select-dataset-draft": {
      "type": "transfer",
      "actor": "dataset",
      "duration": 0.86,
      "intensity": 0.9
    },
    "sequence-observations": {
      "type": "review",
      "actor": "processing",
      "duration": 3.19,
      "intensity": 0.45
    }
  },
  "activityTiming": "demonstration",
  "nativePaths": {
    "media": "/Screph/Capture/Открыть файл",
    "screen": "/Screph/Capture/Записать экран",
    "camera": "/Screph/Capture/Камера и поток",
    "frame": "/Screph/Capture/Выбрать кадр",
    "element": "/Screph/Canvas  ·  Selector/Выделить объект",
    "feature": "/Screph/Canvas  ·  Selector/Добавить признак",
    "search-area": "/Screph/Canvas  ·  Selector/Область поиска",
    "dataset-model": "/Screph/Canvas  ·  Selector/Связать с моделью",
    "describe": "/Screph/Canvas  ·  Selector/Описать объект",
    "relations": "/Screph/Canvas  ·  Selector/Связать объекты",
    "history": "/Screph/Canvas  ·  Selector/История",
    "operation": "/Screph/Обработка/Операция",
    "chain": "/Screph/Обработка/Цепочка шагов",
    "graph": "/Screph/Обработка/Граф обработки",
    "review": "/Screph/Обработка/Запустить обработку",
    "apply-result": "/Screph/Обработка/Принять элементы",
    "cv-python": "/Screph/Обработка/Python обработки",
    "cv-working-copy": "/Screph/Code/Рабочая копия",
    "cv-verify": "/Screph/Обработка/Эквивалентность",
    "code-operation": "/Screph/Обработка/Своя операция",
    "sequence": "/Screph/Обработка/Последовательность",
    "industrial": "/Screph/Обработка/Промышленная задача",
    "uav": "/Screph/Обработка/Данные БПЛА",
    "dataset-edit": "/Screph/Датасеты/Изменить образец",
    "dataset": "/Screph/Датасеты/Образцы и классы",
    "dataset-version": "/Screph/Датасеты/Версия данных",
    "training-corrections": "/Screph/Обучение/Данные исправлений",
    "training": "/Screph/Обучение/Эксперимент",
    "model-check": "/Screph/Запуск и проверка/Проверить модель",
    "model-promote": "/Screph/Модели/Выпустить модель",
    "model-profile": "/Screph/Модели/Вход и результат",
    "model-code": "/Screph/Модели/Модель → Code",
    "model-assist": "/Screph/Модели/Разметка моделью",
    "model-canvas": "/Screph/Модели/Распознавание на Canvas",
    "agent-context": "/Screph/AI Agent/Контекст задачи",
    "agent-actions": "/Screph/AI Agent/Участие агента",
    "agent-canvas": "/Screph/AI Agent/Разметка с агентом",
    "agent-processing": "/Screph/AI Agent/Обработка с агентом",
    "agent-dataset": "/Screph/AI Agent/Датасет с агентом",
    "learning-agent": "/Screph/AI Agent/Обсудить обучение",
    "agent-save": "/Screph/AI Agent/Сохранить результат",
    "agent-handoff": "/Screph/AI Agent/Задача → Code",
    "code-objects": "/Screph/Code/К объекту проекта",
    "code": "/Screph/Code/Проект → Code",
    "code-agent": "/Screph/Code/Обсудить код",
    "model-return": "/Screph/Code/К модели и данным",
    "run": "/Screph/Запуск и проверка/Запустить программу",
    "ros": "/Screph/Code/Подключить ROS 2",
    "save": "/Screph/Проект/Сохранить проект",
    "open-project": "/Screph/Проект/Открыть проект",
    "export": "/Screph/Проект/Экспортировать",
    "modes": "/Screph/Рабочая среда/Режим программы",
    "interaction": "/Screph/Рабочая среда/Взаимодействие",
    "dependencies": "/Screph/Рабочая среда/Проверить готовность",
    "connections": "/Screph/Рабочая среда/Подключения",
    "voice": "/Screph/Рабочая среда/Голосовое описание",
    "feedback": "/Screph/Рабочая среда/Контекст для поддержки",
    "help": "/Screph/Рабочая среда/Справка",
    "confirm-training": "/Screph/Обучение/Подтвердить обучение",
    "training-results": "/Screph/Обучение/Метрики обучения",
    "select-training-errors": "/Screph/Обучение/Выбрать ошибки",
    "activate-model": "/Screph/Модели/Основная модель",
    "model-opt-in": "/Screph/Модели/Включить в программу",
    "review-labels": "/Screph/Датасеты/Проверить разметку",
    "review-masks": "/Screph/Датасеты/Выбрать маски",
    "accept-masks": "/Screph/Датасеты/Принять маски",
    "review-agent-canvas": "/Screph/Canvas  ·  Selector/Проверить предложения",
    "review-agent-dataset": "/Screph/Датасеты/Проверить предложения данных",
    "import-agent-dataset": "/Screph/Датасеты/Импортировать предложения",
    "review-code": "/Screph/Code/Проверить изменения",
    "choose-run-file": "/Screph/Code/Файл для запуска",
    "program-output": "/Screph/Запуск и проверка/Вывод программы",
    "model-provenance": "/Screph/Модели/Модель и версия данных",
    "select-dataset-draft": "/Screph/Датасеты/Открыть черновик",
    "sequence-observations": "/Screph/Обработка/Наблюдения по кадрам"
  },
  "workspaces": {
    "authoring": [
      "selector",
      "processing",
      "project",
      "agent"
    ],
    "learning": [
      "processing",
      "dataset",
      "learning",
      "models"
    ],
    "auxiliary": [
      "environment",
      "runtime"
    ]
  },
  "spine": [
    "capture",
    "selector",
    "processing",
    "code"
  ],
  "icons": {
    "media": "action-media",
    "screen": "action-screen",
    "camera": "action-camera",
    "frame": "action-frame",
    "element": "action-element",
    "feature": "action-feature",
    "search-area": "action-search-area",
    "dataset-model": "action-dataset-model",
    "describe": "action-describe",
    "relations": "action-relations",
    "history": "action-history",
    "operation": "action-operation",
    "chain": "action-chain",
    "graph": "action-graph",
    "review": "action-review",
    "apply-result": "action-apply-result",
    "cv-python": "action-cv-python",
    "cv-working-copy": "action-cv-working-copy",
    "cv-verify": "action-cv-verify",
    "code-operation": "action-code-operation",
    "sequence": "action-sequence",
    "industrial": "action-industrial",
    "uav": "action-uav",
    "dataset-edit": "action-dataset-edit",
    "dataset": "action-dataset",
    "dataset-version": "action-dataset-version",
    "training-corrections": "action-training-corrections",
    "training": "action-training",
    "model-check": "action-model-check",
    "model-promote": "action-model-promote",
    "model-profile": "action-model-profile",
    "model-code": "action-model-code",
    "model-assist": "action-model-assist",
    "model-canvas": "action-model-canvas",
    "agent-context": "action-agent-context",
    "agent-actions": "action-agent-actions",
    "agent-canvas": "action-agent-canvas",
    "agent-processing": "action-agent-processing",
    "agent-dataset": "action-agent-dataset",
    "learning-agent": "action-learning-agent",
    "agent-save": "action-agent-save",
    "agent-handoff": "action-agent-handoff",
    "code-objects": "action-code-objects",
    "code": "action-code",
    "code-agent": "action-code-agent",
    "model-return": "action-model-return",
    "run": "action-run",
    "ros": "action-ros",
    "save": "action-save",
    "open-project": "action-open-project",
    "export": "action-export",
    "modes": "action-modes",
    "interaction": "action-interaction",
    "dependencies": "action-dependencies",
    "connections": "action-connections",
    "voice": "action-voice",
    "feedback": "action-feedback",
    "help": "action-help",
    "confirm-training": "action-confirm-training",
    "training-results": "action-training-results",
    "select-training-errors": "action-select-training-errors",
    "activate-model": "action-activate-model",
    "model-opt-in": "action-model-opt-in",
    "review-labels": "action-review-labels",
    "review-masks": "action-review-masks",
    "accept-masks": "action-accept-masks",
    "review-agent-canvas": "action-review-agent-canvas",
    "review-agent-dataset": "action-review-agent-dataset",
    "import-agent-dataset": "action-import-agent-dataset",
    "review-code": "action-review-code",
    "choose-run-file": "action-choose-run-file",
    "program-output": "action-program-output",
    "model-provenance": "action-model-provenance",
    "select-dataset-draft": "action-select-dataset-draft",
    "sequence-observations": "action-sequence-observations"
  }
}
