Issue Mediator
Pulls tasks from your tracker (Yandex Tracker / GitHub / freeform / Jira / Linear / GitLab), normalises them into four levels of context (general → system → subsystem → ticket) and shows the harness which task it's actually working on.
Когда нужно#
Харнес видит больше, чем код в cwd — он смотрит AGENTS.md, скилы, агентский контекст. Issue Mediator добавляет к этой картине активную задачу: что именно мы делаем в этом cwd прямо сейчас. Сессии автоматически связываются по branch-regex ([A-Z]+-\d+), либо вручную через UI или CLI.
Источники#
| Источник | Статус (0.2.1) | Что нужно настроить |
|---|---|---|
| Yandex Tracker | ✅ работает | OAuth token (secret) + org_id + org_type (y360 / cloud) |
| GitHub | ✅ работает | $CONTROLUM_SECRET_GITHUB_TOKEN или gh auth login |
| Freeform | ✅ работает | .controlum-task в репо с заголовками # general/system/subsystem/ticket |
| Jira / Linear / GitLab | 🟡 stubs | Реальные fetcher'ы в 0.2.4 |
Sources и Tasks#
Source — это пара (kind + конфиг + ссылка на secret). У одного пользователя может быть несколько источников одного kind'а (например YT-prod и YT-staging). Source хранит только secret_id — сам токен лежит в /secrets, и удаление токенане сломает source молча (ON DELETE RESTRICT) — выскочит 409 в UI.
Task — конкретный тикет, который скилл уже подтянул. Идемпотентен по (source_id, external_id): пере-fetch обновляет в месте, новой строки не создаёт.
Категоризация (4 уровня)#
| Уровень | Yandex Tracker | GitHub |
|---|---|---|
general | org_id | org/user (owner) |
system | queue.display | repo |
subsystem | epic / project / parent | label area/* или milestone |
ticket | summary | issue title |
Endpoints#
GET /plugins/issue-mediator/sources— список источниковPOST /plugins/issue-mediator/sources— добавить источникPATCH /plugins/issue-mediator/sources/{id}— name / config / enabledDELETE /plugins/issue-mediator/sources/{id}— удалить (CASCADE на tasks)GET /plugins/issue-mediator/tasks— список задач (filter: source_id / status / assignee)POST /plugins/issue-mediator/tasks— UPSERT задачи от скиллаPOST /plugins/issue-mediator/sessions/{sid}/task— связать с сессиейGET /plugins/issue-mediator/sessions/{sid}/task— активная задача сессии (404 если нет)
Quick start#
- Получи OAuth token у Яндекса (scope
tracker:read) — см. oauth.yandex.ru - Сохрани в /secrets под именем
YANDEX_TRACKER_TOKEN - Открой /plugins, включи Issue Mediator, кликни Configure
- Add source → Yandex Tracker → выбери secret, заполни org_id + org_type
- Запусти claude в репо с веткой вида
feature/PROJ-123-thing— Active task появится автоматически