Главная/Документация/Справочник агента/Конфигурация статусов
Справочник агента

Конфигурация статусов

Статусы сессий представляют состояния рабочего процесса. Каждое рабочее пространство имеет собственную конфигурацию статусов.

Места хранения

  • Конфигурация: ~/.craft-agent/workspaces/{id}/statuses/config.json
  • Иконки: ~/.craft-agent/workspaces/{id}/statuses/icons/

Статусы по умолчанию

ID Название Цвет по умолчанию Категория Тип
backlog Backlog foreground/50 open По умолчанию
todo Todo foreground/50 open Фиксированный
needs-review Needs Review info open По умолчанию
done Done accent closed Фиксированный
cancelled Cancelled foreground/50 closed Фиксированный

Примечание: Цвет необязателен. Если он опущен, используется значение по умолчанию дизайн-системы.

Формат цвета

Цвета используют тип EntityColor — строка системного цвета или объект пользовательского цвета.

Системные цвета

Автоматически подстраиваются под светлую/тёмную тему через CSS-переменные. Значения в hex не нужны.

Название Вид Пример
"accent" Фиолетовый (фирменный) "accent"
"info" Янтарный "info"
"success" Зелёный "success"
"destructive" Красный "destructive"
"foreground" Цвет текста "foreground"

Добавьте /opacity (целое число 0–100) для прозрачности: "foreground/50", "info/80".

Пользовательские цвета

Объект с явными CSS-значениями цвета для светлой и тёмной темы:

terminaljson
{ "light": "#EF4444", "dark": "#F87171" }

Если dark опущен, он выводится автоматически из light (осветляется примерно на 30%).

Поддерживаемые форматы CSS-цветов для значений light/dark:

Формат Пример
Hex (3 цифры) "#F00"
Hex (6 цифр) "#EF4444"
Hex (8 цифр, с альфа-каналом) "#EF444480"
OKLCH "oklch(0.7 0.15 20)"
RGB "rgb(239, 68, 68)"
HSL "hsl(0, 84%, 60%)"

Типичные ошибки

  • Обычные названия цветов ("red", "blue") не поддерживаются — используйте hex или системные цвета
  • Классы Tailwind ("text-red-500") не являются допустимыми — используйте названия системных цветов напрямую
  • Hex без префикса # ("EF4444") недопустим — всегда включайте #
  • Прозрачность системного цвета должна быть целым числом 0–100 ("foreground/50", а не "foreground/0.5")

Типы статусов

  • Фиксированный (isFixed: true): нельзя удалить или переименовать. Обязательные статусы: todo, done, cancelled.
  • По умолчанию (isDefault: true): поставляется с приложением, можно изменять, но нельзя удалить.
  • Пользовательский (isFixed: false, isDefault: false): создан пользователем, полностью редактируется и удаляется.

Система категорий

  • open: сессия отображается во входящих/активном списке
  • closed: сессия отображается в архиве/списке завершённых

Схема config.json

terminaljson
{
  "version": 1,
  "statuses": [
    {
      "id": "todo",
      "label": "Todo",
      "category": "open",
      "isFixed": true,
      "isDefault": false,
      "order": 0
    }
  ],
  "defaultStatusId": "todo"
}

Примечание: Поле icon необязательно. Статусы по умолчанию используют автоматически обнаруженные SVG-файлы из statuses/icons/{id}.svg.

Свойства статуса

Свойство Тип Описание
id string Уникальный slug (строчные буквы, дефисы)
label string Отображаемое имя
color string? Необязательный цвет (hex или класс Tailwind). Если опущен, используется значение по умолчанию дизайн-системы.
icon string? Необязательный эмодзи (например, "🔥") или URL. Оставьте пустым, чтобы использовать автоматически обнаруженный файл.
category "open" | "closed" Входящие или архив
isFixed boolean Нельзя удалить/переименовать, если true
isDefault boolean Поставляется с приложением, нельзя удалить
order number Порядок отображения (меньше = раньше)

Настройка иконок

Приоритет выбора иконки:

  1. Локальный файл — автоматически обнаруживается из statuses/icons/{id}.svg (или .png, .jpg, .jpeg)
  2. Эмодзи — если поле icon содержит строку с эмодзи (например, "🔥")
  3. Запасной вариант — символ-маркер, если иконка не найдена

Иконки на основе файлов (рекомендуется для статусов по умолчанию):

  • Разместите SVG в statuses/icons/{status-id}.svg
  • Настройка не требуется — файл обнаруживается по ID статуса
  • Пример: statuses/icons/blocked.svg для ID статуса blocked

Иконки-эмодзи (быстро и просто):

terminalbash
"icon": "🔥"

Иконки по URL (автоматически скачиваются):

terminalbash
"icon": "https://example.com/icon.svg"

URL автоматически скачиваются в statuses/icons/{id}.{ext}.

⚠️ Правила получения иконок:

  • Создавайте собственные SVG-файлы в соответствии с рекомендациями ниже
  • Скачивайте иконки из сети (например, Heroicons, Feather, Simple Icons)
  • Используйте эмодзи для быстрых универсальных иконок

Добавление пользовательских статусов

Отредактируйте statuses/config.json рабочего пространства:

terminaljson
{
  "id": "blocked",
  "label": "Blocked",
  "color": "destructive",
  "icon": "🚫",
  "category": "open",
  "isFixed": false,
  "isDefault": false,
  "order": 3
}

Или с пользовательским hex-цветом:

terminaljson
{
  "id": "blocked",
  "label": "Blocked",
  "color": { "light": "#EF4444", "dark": "#F87171" },
  "icon": "🚫",
  "category": "open",
  "isFixed": false,
  "isDefault": false,
  "order": 3
}

При необходимости скорректируйте значения order для существующих статусов.

Рекомендации по SVG-иконкам

  • Размер: 24x24
  • Используйте currentColor для обводки/заполнения (поддержка тем)
  • stroke-width: 2
  • stroke-linecap: round
  • stroke-linejoin: round

Самовосстановление

  • Отсутствующие файлы иконок автоматически восстанавливаются из встроенных значений по умолчанию
  • Недействительные ID статусов в сессиях заменяются на todo
  • Повреждённые конфигурации сбрасываются к значениям по умолчанию

Проверка

ВАЖНО: Всегда выполняйте проверку после создания или редактирования статусов:

terminalbash
config_validate({ target: "statuses" })

Это проверяет:

  • Наличие обязательных фиксированных статусов (todo, done, cancelled)
  • Отсутствие дубликатов ID статусов
  • Поле defaultStatusId ссылается на существующий статус
  • Файлы иконок существуют, если на них есть ссылки
  • Наличие хотя бы одного статуса в каждой категории (open/closed)

Недействительные конфигурации во время выполнения откатываются к значениям по умолчанию, но проверка выявляет проблемы до того, как они вызовут сбои.

Нужен такой агент в вашей компании?

Устанавливаем под ключ: настройка на компьютерах сотрудников, единый аккаунт, интеграция с 1С и внутренними системами, обучение команды. Подробнее о внедрении →